Changeset View
Changeset View
Standalone View
Standalone View
source/blender/render/intern/source/pipeline.c
| Show First 20 Lines • Show All 3,313 Lines • ▼ Show 20 Lines | bool RE_WriteRenderViewsImage(ReportList *reports, RenderResult *rr, Scene *scene, const bool stamp, char *name) | ||||
| if (!rr) | if (!rr) | ||||
| return false; | return false; | ||||
| is_mono = BLI_listbase_count_ex(&rr->views, 2) < 2; | is_mono = BLI_listbase_count_ex(&rr->views, 2) < 2; | ||||
| if (ELEM(rd->im_format.imtype, R_IMF_IMTYPE_OPENEXR, R_IMF_IMTYPE_MULTILAYER) && | if (ELEM(rd->im_format.imtype, R_IMF_IMTYPE_OPENEXR, R_IMF_IMTYPE_MULTILAYER) && | ||||
| rd->im_format.views_format == R_IMF_VIEWS_MULTIVIEW) | rd->im_format.views_format == R_IMF_VIEWS_MULTIVIEW) | ||||
| { | { | ||||
| ok = RE_WriteRenderResult(reports, rr, name, &rd->im_format, true, NULL); | ok = RE_WriteRenderResult(reports, rr, name, &rd->im_format, NULL, -1); | ||||
| render_print_save_message(reports, name, ok, errno); | render_print_save_message(reports, name, ok, errno); | ||||
| } | } | ||||
| /* mono, legacy code */ | /* mono, legacy code */ | ||||
| else if (is_mono || (rd->im_format.views_format == R_IMF_VIEWS_INDIVIDUAL)) | else if (is_mono || (rd->im_format.views_format == R_IMF_VIEWS_INDIVIDUAL)) | ||||
| { | { | ||||
| RenderView *rv; | RenderView *rv; | ||||
| int view_id; | int view_id; | ||||
| char filepath[FILE_MAX]; | char filepath[FILE_MAX]; | ||||
| BLI_strncpy(filepath, name, sizeof(filepath)); | BLI_strncpy(filepath, name, sizeof(filepath)); | ||||
| for (view_id = 0, rv = rr->views.first; rv; rv = rv->next, view_id++) { | for (view_id = 0, rv = rr->views.first; rv; rv = rv->next, view_id++) { | ||||
| if (!is_mono) { | if (!is_mono) { | ||||
| BKE_scene_multiview_view_filepath_get(&scene->r, filepath, rv->name, name); | BKE_scene_multiview_view_filepath_get(&scene->r, filepath, rv->name, name); | ||||
| } | } | ||||
| if (rd->im_format.imtype == R_IMF_IMTYPE_MULTILAYER) { | if (rd->im_format.imtype == R_IMF_IMTYPE_MULTILAYER) { | ||||
| ok = RE_WriteRenderResult(reports, rr, name, &rd->im_format, false, rv->name); | ok = RE_WriteRenderResult(reports, rr, name, &rd->im_format, rv->name, -1); | ||||
| render_print_save_message(reports, name, ok, errno); | render_print_save_message(reports, name, ok, errno); | ||||
| } | } | ||||
| else { | else { | ||||
| ImBuf *ibuf = render_result_rect_to_ibuf(rr, rd, view_id); | ImBuf *ibuf = render_result_rect_to_ibuf(rr, rd, view_id); | ||||
| IMB_colormanagement_imbuf_for_write(ibuf, true, false, &scene->view_settings, | IMB_colormanagement_imbuf_for_write(ibuf, true, false, &scene->view_settings, | ||||
| &scene->display_settings, &rd->im_format); | &scene->display_settings, &rd->im_format); | ||||
| ▲ Show 20 Lines • Show All 675 Lines • ▼ Show 20 Lines | if (ok) { | ||||
| return true; | return true; | ||||
| } | } | ||||
| else { | else { | ||||
| BKE_report(reports, RPT_ERROR, "Error writing environment map"); | BKE_report(reports, RPT_ERROR, "Error writing environment map"); | ||||
| return false; | return false; | ||||
| } | } | ||||
| } | } | ||||
| /* used in the interface to decide whether to show layers */ | /* Used in the interface to decide whether to show layers or passes. */ | ||||
| bool RE_layers_have_name(struct RenderResult *rr) | bool RE_layers_have_name(struct RenderResult *rr) | ||||
| { | { | ||||
| switch (BLI_listbase_count_ex(&rr->layers, 2)) { | switch (BLI_listbase_count_ex(&rr->layers, 2)) { | ||||
| case 0: | case 0: | ||||
| return false; | return false; | ||||
| case 1: | case 1: | ||||
| return (((RenderLayer *)rr->layers.first)->name[0] != '\0'); | return (((RenderLayer *)rr->layers.first)->name[0] != '\0'); | ||||
| default: | default: | ||||
| return true; | return true; | ||||
| } | } | ||||
| return false; | return false; | ||||
| } | } | ||||
| bool RE_passes_have_name(struct RenderLayer *rl) | |||||
| { | |||||
| for (RenderPass *rp = rl->passes.first; rp; rp = rp->next) { | |||||
| if(!STREQ(rp->name, "Combined")) { | |||||
| return true; | |||||
| } | |||||
| } | |||||
| return false; | |||||
| } | |||||
| RenderPass *RE_pass_find_by_name(volatile RenderLayer *rl, const char *name, const char *viewname) | RenderPass *RE_pass_find_by_name(volatile RenderLayer *rl, const char *name, const char *viewname) | ||||
| { | { | ||||
| RenderPass *rp = NULL; | RenderPass *rp = NULL; | ||||
| for (rp = rl->passes.last; rp; rp = rp->prev) { | for (rp = rl->passes.last; rp; rp = rp->prev) { | ||||
| if (STREQ(rp->name, name)) { | if (STREQ(rp->name, name)) { | ||||
| if (viewname == NULL || viewname[0] == '\0') | if (viewname == NULL || viewname[0] == '\0') | ||||
| break; | break; | ||||
| ▲ Show 20 Lines • Show All 78 Lines • Show Last 20 Lines | |||||