diff options
author | Campbell Barton <ideasman42@gmail.com> | 2015-05-06 16:50:54 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2015-05-06 16:53:51 +0300 |
commit | 1d88bfce4017875490113a81dccd45df3f13a7c6 (patch) | |
tree | f911fdbe4e078cfc6830a6c39818e553c26327b4 /source/blender | |
parent | 5ffd10a6da956210062f5cd18c61de348f379849 (diff) |
Shader node: support native render capabilities
D1188 by @a.romanov
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/blenkernel/BKE_scene.h | 1 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/scene.c | 6 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_render.c | 6 | ||||
-rw-r--r-- | source/blender/nodes/shader/node_shader_tree.c | 3 | ||||
-rw-r--r-- | source/blender/render/extern/include/RE_engine.h | 1 |
5 files changed, 16 insertions, 1 deletions
diff --git a/source/blender/blenkernel/BKE_scene.h b/source/blender/blenkernel/BKE_scene.h index 75a5e919bad..442a43871c1 100644 --- a/source/blender/blenkernel/BKE_scene.h +++ b/source/blender/blenkernel/BKE_scene.h @@ -133,6 +133,7 @@ int get_render_shadow_samples(const struct RenderData *r, int samples); float get_render_aosss_error(const struct RenderData *r, float error); bool BKE_scene_use_new_shading_nodes(const struct Scene *scene); +bool BKE_scene_use_shading_nodes_custom(struct Scene *scene); bool BKE_scene_uses_blender_internal(const struct Scene *scene); bool BKE_scene_uses_blender_game(const struct Scene *scene); diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index 575a42ed690..f810630c83b 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -2011,6 +2011,12 @@ bool BKE_scene_use_new_shading_nodes(const Scene *scene) return (type && type->flag & RE_USE_SHADING_NODES); } +bool BKE_scene_use_shading_nodes_custom(Scene *scene) +{ + RenderEngineType *type = RE_engines_find(scene->r.engine); + return (type && type->flag & RE_USE_SHADING_NODES_CUSTOM); +} + bool BKE_scene_uses_blender_internal(const Scene *scene) { return STREQ(scene->r.engine, RE_engine_id_BLENDER_RENDER); diff --git a/source/blender/makesrna/intern/rna_render.c b/source/blender/makesrna/intern/rna_render.c index dbb572b7333..ee51dcf2acf 100644 --- a/source/blender/makesrna/intern/rna_render.c +++ b/source/blender/makesrna/intern/rna_render.c @@ -257,6 +257,7 @@ static StructRNA *rna_RenderEngine_register(Main *bmain, ReportList *reports, vo /* setup dummy engine & engine type to store static properties in */ dummyengine.type = &dummyet; + dummyet.flag |= RE_USE_SHADING_NODES_CUSTOM; RNA_pointer_create(NULL, &RNA_RenderEngine, &dummyengine, &dummyptr); /* validate the python class */ @@ -628,6 +629,11 @@ static void rna_def_render_engine(BlenderRNA *brna) RNA_def_property_boolean_sdna(prop, NULL, "type->flag", RE_USE_SHADING_NODES); RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL); + prop = RNA_def_property(srna, "bl_use_shading_nodes_custom", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "type->flag", RE_USE_SHADING_NODES_CUSTOM); + RNA_def_property_boolean_default(prop, true); + RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL); + prop = RNA_def_property(srna, "bl_use_exclude_layers", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "type->flag", RE_USE_EXCLUDE_LAYERS); RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL); diff --git a/source/blender/nodes/shader/node_shader_tree.c b/source/blender/nodes/shader/node_shader_tree.c index 57cc1eab929..a49d6ea76da 100644 --- a/source/blender/nodes/shader/node_shader_tree.c +++ b/source/blender/nodes/shader/node_shader_tree.c @@ -69,7 +69,8 @@ static int shader_tree_poll(const bContext *C, bNodeTreeType *UNUSED(treetype)) return (scene->r.engine[0] == '\0' || STREQ(scene->r.engine, RE_engine_id_BLENDER_RENDER) || STREQ(scene->r.engine, RE_engine_id_BLENDER_GAME) || - STREQ(scene->r.engine, RE_engine_id_CYCLES)); + STREQ(scene->r.engine, RE_engine_id_CYCLES) || + !BKE_scene_use_shading_nodes_custom(scene)); } static void shader_get_from_context(const bContext *C, bNodeTreeType *UNUSED(treetype), bNodeTree **r_ntree, ID **r_id, ID **r_from) diff --git a/source/blender/render/extern/include/RE_engine.h b/source/blender/render/extern/include/RE_engine.h index 9d3c74163d5..4e48060c54f 100644 --- a/source/blender/render/extern/include/RE_engine.h +++ b/source/blender/render/extern/include/RE_engine.h @@ -61,6 +61,7 @@ struct BakePixel; #define RE_USE_EXCLUDE_LAYERS 32 #define RE_USE_SAVE_BUFFERS 64 #define RE_USE_TEXTURE_PREVIEW 128 +#define RE_USE_SHADING_NODES_CUSTOM 256 /* RenderEngine.flag */ #define RE_ENGINE_ANIMATION 1 |