Changeset View
Changeset View
Standalone View
Standalone View
source/blender/render/intern/source/render_result.c
| Show First 20 Lines • Show All 453 Lines • ▼ Show 20 Lines | if (STRPREFIX(str, "SubsurfaceCol")) | ||||
| return SCE_PASS_SUBSURFACE_COLOR; | return SCE_PASS_SUBSURFACE_COLOR; | ||||
| return 0; | return 0; | ||||
| } | } | ||||
| static void set_pass_name(char *passname, int passtype, int channel, const char *view) | static void set_pass_name(char *passname, int passtype, int channel, const char *view) | ||||
| { | { | ||||
| const char *end; | const char delims[] = {'.', '\0'}; | ||||
| const char *token; | char *sep; | ||||
| int len; | char *token; | ||||
| size_t len; | |||||
| const char *passtype_name = name_from_passtype(passtype, channel); | const char *passtype_name = name_from_passtype(passtype, channel); | ||||
| if (view == NULL || view[0] == '\0') { | if (view == NULL || view[0] == '\0') { | ||||
| BLI_strncpy(passname, passtype_name, EXR_PASS_MAXNAME); | BLI_strncpy(passname, passtype_name, EXR_PASS_MAXNAME); | ||||
| return; | return; | ||||
| } | } | ||||
| end = passtype_name + strlen(passtype_name); | len = BLI_str_rpartition(passtype_name, delims, &sep, &token); | ||||
| len = IMB_exr_split_token(passtype_name, end, &token); | |||||
| if (len == strlen(passtype_name)) | if (sep) { | ||||
| sprintf(passname, "%s.%s", passtype_name, view); | BLI_snprintf(passname, EXR_PASS_MAXNAME, "%.*s.%s.%s", (int)len, passtype_name, view, token); | ||||
| else | } | ||||
| sprintf(passname, "%.*s%s.%s", (int)(end-passtype_name) - len, passtype_name, view, token); | else { | ||||
| BLI_snprintf(passname, EXR_PASS_MAXNAME, "%s.%s", passtype_name, view); | |||||
| } | |||||
| } | } | ||||
| /********************************** New **************************************/ | /********************************** New **************************************/ | ||||
| static RenderPass *render_layer_add_pass(RenderResult *rr, RenderLayer *rl, int channels, int passtype, const char *viewname) | static RenderPass *render_layer_add_pass(RenderResult *rr, RenderLayer *rl, int channels, int passtype, const char *viewname) | ||||
| { | { | ||||
| const size_t view_id = BLI_findstringindex(&rr->views, viewname, offsetof(RenderView, name)); | const size_t view_id = BLI_findstringindex(&rr->views, viewname, offsetof(RenderView, name)); | ||||
| const char *typestr = name_from_passtype(passtype, -1); | const char *typestr = name_from_passtype(passtype, -1); | ||||
| ▲ Show 20 Lines • Show All 747 Lines • ▼ Show 20 Lines | for (rlp = rrpart->layers.first; rlp; rlp = rlp->next) { | ||||
| } | } | ||||
| IMB_exrtile_write_channels(rl->exrhandle, partx, party, 0, viewname); | IMB_exrtile_write_channels(rl->exrhandle, partx, party, 0, viewname); | ||||
| } | } | ||||
| BLI_unlock_thread(LOCK_IMAGE); | BLI_unlock_thread(LOCK_IMAGE); | ||||
| } | } | ||||
| static void save_empty_result_tiles(Render *re) | void render_result_save_empty_result_tiles(Render *re) | ||||
| { | { | ||||
| RenderPart *pa; | RenderPart *pa; | ||||
| RenderResult *rr; | RenderResult *rr; | ||||
| RenderLayer *rl; | RenderLayer *rl; | ||||
| for (rr = re->result; rr; rr = rr->next) { | for (rr = re->result; rr; rr = rr->next) { | ||||
| for (rl = rr->layers.first; rl; rl = rl->next) { | for (rl = rr->layers.first; rl; rl = rl->next) { | ||||
| IMB_exr_clear_channels(rl->exrhandle); | IMB_exr_clear_channels(rl->exrhandle); | ||||
| Show All 26 Lines | |||||
| } | } | ||||
| /* end write of exr tile file, read back first sample */ | /* end write of exr tile file, read back first sample */ | ||||
| void render_result_exr_file_end(Render *re) | void render_result_exr_file_end(Render *re) | ||||
| { | { | ||||
| RenderResult *rr; | RenderResult *rr; | ||||
| RenderLayer *rl; | RenderLayer *rl; | ||||
| save_empty_result_tiles(re); | |||||
| for (rr = re->result; rr; rr = rr->next) { | for (rr = re->result; rr; rr = rr->next) { | ||||
| for (rl = rr->layers.first; rl; rl = rl->next) { | for (rl = rr->layers.first; rl; rl = rl->next) { | ||||
| IMB_exr_close(rl->exrhandle); | IMB_exr_close(rl->exrhandle); | ||||
| rl->exrhandle = NULL; | rl->exrhandle = NULL; | ||||
| } | } | ||||
| rr->do_exr_tile = false; | rr->do_exr_tile = false; | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 305 Lines • Show Last 20 Lines | |||||