diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2019-08-12 02:47:30 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2019-08-14 14:36:56 +0300 |
commit | d5002f007e8d770dea15f0881cd9d0a4f3aaf824 (patch) | |
tree | fabe9add7890d37884e2a9bf3c6e48c01bd7ff8a /source/blender/nodes | |
parent | 8a338950c6ddde37ddefadd75c39d4d2efc7aee3 (diff) |
Eevee: Improve Transparent BSDF behavior
Alpha blended Transparency is now using dual source blending making it
fully compatible with cycles Transparent BSDF.
Multiply and additive blend mode can be achieved using some nodes and are
going to be removed.
Diffstat (limited to 'source/blender/nodes')
-rw-r--r-- | source/blender/nodes/shader/nodes/node_shader_bsdf_principled.c | 12 | ||||
-rw-r--r-- | source/blender/nodes/shader/nodes/node_shader_subsurface_scattering.c | 2 |
2 files changed, 7 insertions, 7 deletions
diff --git a/source/blender/nodes/shader/nodes/node_shader_bsdf_principled.c b/source/blender/nodes/shader/nodes/node_shader_bsdf_principled.c index 741e792da87..595ddf27d0a 100644 --- a/source/blender/nodes/shader/nodes/node_shader_bsdf_principled.c +++ b/source/blender/nodes/shader/nodes/node_shader_bsdf_principled.c @@ -132,8 +132,13 @@ static int node_shader_gpu_bsdf_principled(GPUMaterial *mat, &in[21].link); } + bool use_diffuse = socket_not_one(4) && socket_not_one(15); + bool use_subsurf = socket_not_zero(1) && use_diffuse && node->sss_id > 0; + bool use_refract = socket_not_one(4) && socket_not_zero(15); + bool use_clear = socket_not_zero(12); + /* SSS Profile */ - if (node->sss_id == 1) { + if (use_subsurf) { static short profile = SHD_SUBSURFACE_BURLEY; bNodeSocket *socket = BLI_findlink(&node->original->inputs, 2); bNodeSocketValueRGBA *socket_data = socket->default_value; @@ -148,11 +153,6 @@ static int node_shader_gpu_bsdf_principled(GPUMaterial *mat, GPU_link(mat, "set_rgb_one", &sss_scale); } - bool use_diffuse = socket_not_one(4) && socket_not_one(15); - bool use_subsurf = socket_not_zero(1) && use_diffuse && node->sss_id == 1; - bool use_refract = socket_not_one(4) && socket_not_zero(15); - bool use_clear = socket_not_zero(12); - /* Due to the manual effort done per config, we only optimize the most common permutations. */ char *node_name; uint flag = 0; 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 21e07ece7b9..9a0a132b311 100644 --- a/source/blender/nodes/shader/nodes/node_shader_subsurface_scattering.c +++ b/source/blender/nodes/shader/nodes/node_shader_subsurface_scattering.c @@ -63,7 +63,7 @@ static int node_shader_gpu_subsurface_scattering(GPUMaterial *mat, GPU_material_flag_set(mat, GPU_MATFLAG_DIFFUSE | GPU_MATFLAG_SSS); - if (node->sss_id == 1) { + if (node->sss_id > 0) { bNodeSocket *socket = BLI_findlink(&node->original->inputs, 2); bNodeSocketValueRGBA *socket_data = socket->default_value; bNodeSocket *socket_sharp = BLI_findlink(&node->original->inputs, 3); |