From d5002f007e8d770dea15f0881cd9d0a4f3aaf824 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Mon, 12 Aug 2019 01:47:30 +0200 Subject: 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. --- .../blender/nodes/shader/nodes/node_shader_bsdf_principled.c | 12 ++++++------ .../nodes/shader/nodes/node_shader_subsurface_scattering.c | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) (limited to 'source/blender/nodes') 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); -- cgit v1.2.3