/* begin write of exr tile file */ void render_result_exr_file_begin(Render *re) { RenderResult *rr; RenderLayer *rl; char str[FILE_MAX]; for (rr = re->result; rr; rr = rr->next) { for (rl = rr->layers.first; rl; rl = rl->next) { render_result_exr_file_path(re->scene, rl->name, rr->sample_nr, str); printf("write exr tmp file, %dx%d, %s\n", rr->rectx, rr->recty, str); IMB_exrtile_begin_write(rl->exrhandle, str, 0, rr->rectx, rr->recty, re->partx, re->party); } } }
/* only for temp buffer, makes exact copy of render result */ int render_result_exr_file_read_sample(Render *re, int sample) { RenderLayer *rl; char str[FILE_MAXFILE + MAX_ID_NAME + MAX_ID_NAME + 100] = ""; bool success = true; RE_FreeRenderResult(re->result); re->result = render_result_new(re, &re->disprect, 0, RR_USE_MEM, RR_ALL_LAYERS, RR_ALL_VIEWS); for (rl = re->result->layers.first; rl; rl = rl->next) { render_result_exr_file_path(re->scene, rl->name, sample, str); printf("read exr tmp file: %s\n", str); if (!render_result_exr_file_read_path(re->result, rl, str)) { printf("cannot read: %s\n", str); success = false; } } return success; }
/* only for temp buffer files, makes exact copy of render result */ int render_result_exr_file_read(Render *re, int sample) { RenderLayer *rl; char str[FILE_MAX]; int success = TRUE; RE_FreeRenderResult(re->result); re->result = render_result_new(re, &re->disprect, 0, RR_USE_MEM, RR_ALL_LAYERS); for (rl = re->result->layers.first; rl; rl = rl->next) { render_result_exr_file_path(re->scene, rl->name, sample, str); printf("read exr tmp file: %s\n", str); if (!render_result_exr_file_read_path(re->result, rl, str)) { printf("cannot read: %s\n", str); success = FALSE; } } return success; }