From 8d9c48415257eca370dad5c163f0fec06e31dd6b Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Fri, 5 May 2017 16:27:31 +0200 Subject: Implement overridable scene render settings This add a new set of (possible) render settings that can be defined at the scene level and overridable at the scene layer level. Once we get workspaces we can either add workspace inbetween scene and scene layer evaluation. Or to replace layer settings, to avoid extra confusion to users. An example of this setting is "samples", as implemented now for the clay engine. --- source/blender/render/extern/include/RE_engine.h | 1 + source/blender/render/intern/source/external_engine.c | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) (limited to 'source/blender/render') diff --git a/source/blender/render/extern/include/RE_engine.h b/source/blender/render/extern/include/RE_engine.h index 13848093899..8091d4005fd 100644 --- a/source/blender/render/extern/include/RE_engine.h +++ b/source/blender/render/extern/include/RE_engine.h @@ -105,6 +105,7 @@ typedef struct RenderEngineType { void (*update_render_passes)(struct RenderEngine *engine, struct Scene *scene, struct SceneRenderLayer *srl); void (*collection_settings_create)(struct RenderEngine *engine, struct IDProperty *props); + void (*render_settings_create)(struct RenderEngine *engine, struct IDProperty *props); struct DrawEngineType *draw_engine; diff --git a/source/blender/render/intern/source/external_engine.c b/source/blender/render/intern/source/external_engine.c index 8b9e4a3eff5..b34391d7d2d 100644 --- a/source/blender/render/intern/source/external_engine.c +++ b/source/blender/render/intern/source/external_engine.c @@ -74,7 +74,7 @@ static RenderEngineType internal_render_type = { NULL, NULL, "BLENDER_RENDER", N_("Blender Render"), RE_INTERNAL | RE_USE_LEGACY_PIPELINE, - NULL, NULL, NULL, NULL, NULL, NULL, render_internal_update_passes, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, render_internal_update_passes, NULL, NULL, NULL, {NULL, NULL, NULL} }; @@ -83,7 +83,7 @@ static RenderEngineType internal_render_type = { static RenderEngineType internal_game_type = { NULL, NULL, "BLENDER_GAME", N_("Blender Game"), RE_INTERNAL | RE_GAME | RE_USE_LEGACY_PIPELINE, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, {NULL, NULL, NULL} }; @@ -107,6 +107,7 @@ void RE_engines_exit(void) DRW_engines_free(); BKE_layer_collection_engine_settings_callback_free(); + BKE_scene_layer_engine_settings_callback_free(); for (type = R_engines.first; type; type = next) { next = type->next; @@ -131,6 +132,10 @@ void RE_engines_register(Main *bmain, RenderEngineType *render_type) BKE_layer_collection_engine_settings_callback_register( bmain, render_type->idname, render_type->collection_settings_create); } + if (render_type->render_settings_create) { + BKE_scene_layer_engine_settings_callback_register( + bmain, render_type->idname, render_type->render_settings_create); + } BLI_addtail(&R_engines, render_type); } -- cgit v1.2.3