[Bf-blender-cvs] [a2cc855dbac] master: Fix T68736 EEVEE: Loose subsurface node breaks shader

Clément Foucault noreply at git.blender.org
Tue Sep 24 16:11:56 CEST 2019


Commit: a2cc855dbac955e8ec111a434c2d215eb161c064
Author: Clément Foucault
Date:   Tue Sep 24 16:11:43 2019 +0200
Branches: master
https://developer.blender.org/rBa2cc855dbac955e8ec111a434c2d215eb161c064

Fix T68736 EEVEE: Loose subsurface node breaks shader

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

M	source/blender/nodes/shader/nodes/node_shader_subsurface_scattering.c

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

diff --git a/source/blender/nodes/shader/nodes/node_shader_subsurface_scattering.c b/source/blender/nodes/shader/nodes/node_shader_subsurface_scattering.c
index 9a0a132b311..9f93dfd837b 100644
--- a/source/blender/nodes/shader/nodes/node_shader_subsurface_scattering.c
+++ b/source/blender/nodes/shader/nodes/node_shader_subsurface_scattering.c
@@ -61,8 +61,6 @@ static int node_shader_gpu_subsurface_scattering(GPUMaterial *mat,
     GPU_link(mat, "world_normals_get", &in[5].link);
   }
 
-  GPU_material_flag_set(mat, GPU_MATFLAG_DIFFUSE | GPU_MATFLAG_SSS);
-
   if (node->sss_id > 0) {
     bNodeSocket *socket = BLI_findlink(&node->original->inputs, 2);
     bNodeSocketValueRGBA *socket_data = socket->default_value;
@@ -71,6 +69,10 @@ static int node_shader_gpu_subsurface_scattering(GPUMaterial *mat,
     /* For some reason it seems that the socket value is in ARGB format. */
     GPU_material_sss_profile_create(
         mat, &socket_data->value[1], &node->original->custom1, &socket_data_sharp->value);
+
+    /* sss_id is 0 only the node is not connected to any output.
+     * In this case flagging the material would trigger a bug (see T68736). */
+    GPU_material_flag_set(mat, GPU_MATFLAG_DIFFUSE | GPU_MATFLAG_SSS);
   }
 
   return GPU_stack_link(



More information about the Bf-blender-cvs mailing list