diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2017-02-06 19:23:02 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2017-10-31 17:05:53 +0300 |
commit | 022fd3212658daff11b8f9105db715b617e3419d (patch) | |
tree | a3a75fbb58f612beeb58fc7ad745f271bf45fc9f /source/blender | |
parent | 040ea955177bd5b1d8767e247aa0a3d68815c50b (diff) |
Add ability for render engines to report extra meta data to pipeline
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/makesrna/intern/rna_render.c | 18 | ||||
-rw-r--r-- | source/blender/render/extern/include/RE_engine.h | 1 | ||||
-rw-r--r-- | source/blender/render/intern/source/external_engine.c | 5 |
3 files changed, 24 insertions, 0 deletions
diff --git a/source/blender/makesrna/intern/rna_render.c b/source/blender/makesrna/intern/rna_render.c index cb86dd17d63..d3b3ed51981 100644 --- a/source/blender/makesrna/intern/rna_render.c +++ b/source/blender/makesrna/intern/rna_render.c @@ -34,6 +34,7 @@ #include "BLI_path_util.h" #include "BKE_scene.h" +#include "BKE_image.h" #include "RNA_define.h" #include "RNA_enum_types.h" @@ -401,6 +402,12 @@ static void rna_RenderResult_layers_begin(CollectionPropertyIterator *iter, Poin rna_iterator_listbase_begin(iter, &rr->layers, NULL); } +static void rna_RenderResult_stamp_data_add_field(RenderResult *rr, const char *field, const char *value) +{ + BKE_render_result_stamp_data(rr, field, value); +} + + static void rna_RenderLayer_passes_begin(CollectionPropertyIterator *iter, PointerRNA *ptr) { RenderLayer *rl = (RenderLayer *)ptr->data; @@ -574,6 +581,10 @@ static void rna_def_render_engine(BlenderRNA *brna) RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); RNA_def_string(func, "layer", NULL, 0, "Layer", "Single layer to add render pass to"); /* NULL ok here */ + func = RNA_def_function(srna, "get_result", "RE_engine_get_result"); + RNA_def_function_ui_description(func, "Get final result for non-pixel operations"); + parm = RNA_def_pointer(func, "result", "RenderResult", "Result", ""); + RNA_def_function_return(func, parm); func = RNA_def_function(srna, "test_break", "RE_engine_test_break"); RNA_def_function_ui_description(func, "Test if the render operation should been canceled, this is a fast call that should be used regularly for responsiveness"); @@ -784,6 +795,13 @@ static void rna_def_render_result(BlenderRNA *brna) "the render result"); RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); + func = RNA_def_function(srna, "stamp_data_add_field", "rna_RenderResult_stamp_data_add_field"); + RNA_def_function_ui_description(func, "Add engine-specific stamp data to the result"); + parm = RNA_def_string(func, "field", NULL, 1024, "Field", "Name of the stamp field to add"); + RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); + parm = RNA_def_string(func, "value", NULL, 1024, "Value", "Value of the stamp data"); + RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); + RNA_define_verify_sdna(0); prop = RNA_def_property(srna, "resolution_x", PROP_INT, PROP_PIXEL); diff --git a/source/blender/render/extern/include/RE_engine.h b/source/blender/render/extern/include/RE_engine.h index 52491673612..321eda0175f 100644 --- a/source/blender/render/extern/include/RE_engine.h +++ b/source/blender/render/extern/include/RE_engine.h @@ -142,6 +142,7 @@ struct RenderResult *RE_engine_begin_result(RenderEngine *engine, int x, int y, void RE_engine_update_result(RenderEngine *engine, struct RenderResult *result); void RE_engine_add_pass(RenderEngine *engine, const char *name, int channels, const char *chan_id, const char *layername); void RE_engine_end_result(RenderEngine *engine, struct RenderResult *result, int cancel, int highlight, int merge_results); +struct RenderResult *RE_engine_get_result(struct RenderEngine *engine); const char *RE_engine_active_view_get(RenderEngine *engine); void RE_engine_active_view_set(RenderEngine *engine, const char *viewname); diff --git a/source/blender/render/intern/source/external_engine.c b/source/blender/render/intern/source/external_engine.c index 55a6cbec549..3358d7a855b 100644 --- a/source/blender/render/intern/source/external_engine.c +++ b/source/blender/render/intern/source/external_engine.c @@ -303,6 +303,11 @@ void RE_engine_end_result(RenderEngine *engine, RenderResult *result, int cancel render_result_free(result); } +RenderResult *RE_engine_get_result(RenderEngine *engine) +{ + return engine->re->result; +} + /* Cancel */ int RE_engine_test_break(RenderEngine *engine) |