[Bf-blender-cvs] [1d88bfc] master: Shader node: support native render capabilities

Campbell Barton noreply at git.blender.org
Wed May 6 15:54:40 CEST 2015


Commit: 1d88bfce4017875490113a81dccd45df3f13a7c6
Author: Campbell Barton
Date:   Wed May 6 23:50:54 2015 +1000
Branches: master
https://developer.blender.org/rB1d88bfce4017875490113a81dccd45df3f13a7c6

Shader node: support native render capabilities

D1188 by @a.romanov

===================================================================

M	source/blender/blenkernel/BKE_scene.h
M	source/blender/blenkernel/intern/scene.c
M	source/blender/makesrna/intern/rna_render.c
M	source/blender/nodes/shader/node_shader_tree.c
M	source/blender/render/extern/include/RE_engine.h

===================================================================

diff --git a/source/blender/blenkernel/BKE_scene.h b/source/blender/blenkernel/BKE_scene.h
index 75a5e91..442a438 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 575a42e..f810630 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 dbb572b..ee51dcf 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 57cc1ea..a49d6ea 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 9d3c741..4e48060 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




More information about the Bf-blender-cvs mailing list