Fix compatibility flag for nodetree
authorDalai Felinto <dfelinto@gmail.com>
Mon, 16 Oct 2017 18:36:44 +0000 (16:36 -0200)
committerDalai Felinto <dfelinto@gmail.com>
Mon, 16 Oct 2017 18:36:45 +0000 (16:36 -0200)
NODE_NEWER_SHADING was introduced in e868b459bb8e however it should have been
added as a bitflag.

BKE_scene_uses_blender_eevee() was used in gpu_shader_output() as a workaround
for compatibility being poorly used.

Anyways this fixes this situation. This is necessary for an upcoming patch, even
though this is considered temporary - since the other NODE_*_SHADING values are
legacy from Blender Internal drawing.

source/blender/blenkernel/BKE_node.h
source/blender/gpu/intern/gpu_material.c
source/blender/nodes/shader/node_shader_tree.c
source/blender/nodes/shader/nodes/node_shader_output.c

index ea0b350b8af938cebf275999114dbc2b8ca61c9f..3bb8f6c9ed346344a1dc9ad0a1acb994ddbf96bb 100644 (file)
@@ -251,9 +251,9 @@ typedef struct bNodeType {
 #define NODE_CLASS_LAYOUT                      100
 
 /* nodetype->compatibility */
-#define NODE_OLD_SHADING       1
-#define NODE_NEW_SHADING       2
-#define NODE_NEWER_SHADING     3
+#define NODE_OLD_SHADING       (1 << 0)
+#define NODE_NEW_SHADING       (1 << 1)
+#define NODE_NEWER_SHADING     (1 << 2)
 
 /* node resize directions */
 #define NODE_RESIZE_TOP                1
index a08bef4472a5004f249be0a9877e825ccef490ff..ef37d6bd02a8d00c137b3f949ba839a1f2720f9e 100644 (file)
@@ -2154,7 +2154,7 @@ GPUMaterial *GPU_material_from_nodetree(
        mat->engine_type = engine_type;
        mat->options = options;
 
-       ntreeGPUMaterialNodes(ntree, mat, NODE_NEWER_SHADING);
+       ntreeGPUMaterialNodes(ntree, mat, NODE_NEW_SHADING | NODE_NEWER_SHADING);
 
        /* Let Draw manager finish the construction. */
        if (mat->outlink) {
index 35a8c712905539502d38331736e8332552337a31..08205d589bf0ea7eb4141f97a6bc19d4b4b231f8 100644 (file)
@@ -504,7 +504,7 @@ static bool ntree_tag_ssr_bsdf_cb(bNode *fromnode, bNode *UNUSED(tonode), void *
  */
 static void ntree_shader_tag_ssr_node(bNodeTree *ntree, short compatibility)
 {
-       if (compatibility != NODE_NEWER_SHADING) {
+       if (compatibility & NODE_NEWER_SHADING) {
                /* We can only deal with new shading system here. */
                return;
        }
index dcf6fec41a46f14cd4bc641e89413890e2b27fcd..52f659d832176a43df8f2fd8757c8f87be0df8a3 100644 (file)
@@ -76,10 +76,6 @@ static int gpu_shader_output(GPUMaterial *mat, bNode *node, bNodeExecData *UNUSE
                GPU_material_enable_alpha(mat);
 #endif
 
-       if (BKE_scene_uses_blender_eevee(GPU_material_scene(mat))) {
-               return false;
-       }
-
        GPU_stack_link(mat, node, "output_node", in, out, &outlink);
        GPU_material_output_link(mat, outlink);