Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Stockner <lukas.stockner@freenet.de>2019-01-18 02:45:21 +0300
committerLukas Stockner <lukas.stockner@freenet.de>2019-01-18 02:58:28 +0300
commitc9eef24903479a70783efb2e00766d0eeec43823 (patch)
treee8b7434dd06068e2030146fcd1922d44e95b5dcc /source/blender/render/intern/include/render_result.h
parentaf316e8bc87b053e5b50453c8c5081546777d4a9 (diff)
Fix T56799: Custom render passes missing when using Save Buffers
The problem here was that when a render result is allocated, the standard render passes are added according to the pass bitfield. Then, when the render engine sets the result, it adds the additional passes which are then merged into the main render result. However, when using Save Buffers, the EXR is created before the actual render starts, so it's missing all those additional passes. To fix that, we need to query the render engine for a list of additional passes so they can be added before the EXR is created. Luckily, there already is a function to do that for the node editor. The same needs to be done when the EXR is loaded back. Due to how that is implemented though (Render API calls into engine, engine calls back for each pass), if we have multiple places that call this function there needs to be a way to tell which one the call came from in the pass registration callback. Therefore, the original caller now provides a callback that is called for each pass.
Diffstat (limited to 'source/blender/render/intern/include/render_result.h')
-rw-r--r--source/blender/render/intern/include/render_result.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/source/blender/render/intern/include/render_result.h b/source/blender/render/intern/include/render_result.h
index 7713c9c7fba..a164bc1f940 100644
--- a/source/blender/render/intern/include/render_result.h
+++ b/source/blender/render/intern/include/render_result.h
@@ -44,6 +44,7 @@ struct ImBuf;
struct ListBase;
struct Render;
struct RenderData;
+struct RenderEngine;
struct RenderLayer;
struct RenderResult;
struct Scene;
@@ -85,8 +86,8 @@ void render_result_single_layer_end(struct Render *re);
/* EXR Tile File Render */
void render_result_save_empty_result_tiles(struct Render *re);
-void render_result_exr_file_begin(struct Render *re);
-void render_result_exr_file_end(struct Render *re);
+void render_result_exr_file_begin(struct Render *re, struct RenderEngine *engine);
+void render_result_exr_file_end(struct Render *re, struct RenderEngine *engine);
/* render pass wrapper for gpencil */
struct RenderPass *gp_add_pass(struct RenderResult *rr, struct RenderLayer *rl, int channels, const char *name, const char *viewname);
@@ -94,7 +95,7 @@ struct RenderPass *gp_add_pass(struct RenderResult *rr, struct RenderLayer *rl,
void render_result_exr_file_merge(struct RenderResult *rr, struct RenderResult *rrpart, const char *viewname);
void render_result_exr_file_path(struct Scene *scene, const char *layname, int sample, char *filepath);
-int render_result_exr_file_read_sample(struct Render *re, int sample);
+int render_result_exr_file_read_sample(struct Render *re, int sample, struct RenderEngine *engine);
int render_result_exr_file_read_path(struct RenderResult *rr, struct RenderLayer *rl_single, const char *filepath);
/* EXR cache */