From 247f37f7652c19e6cfbe0570fbefbed8115e173e Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 30 Nov 2021 22:05:42 +0100 Subject: Fix missing subsurface IOR/Anisotropy socket after refactor in c2ab47e --- .../blender/nodes/shader/nodes/node_shader_bsdf_principled.c | 9 ++++----- .../nodes/shader/nodes/node_shader_subsurface_scattering.c | 12 ++++++++++++ 2 files changed, 16 insertions(+), 5 deletions(-) (limited to 'source/blender') 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 89b7164693f..b9f4106c79a 100644 --- a/source/blender/nodes/shader/nodes/node_shader_bsdf_principled.c +++ b/source/blender/nodes/shader/nodes/node_shader_bsdf_principled.c @@ -169,17 +169,16 @@ static int node_shader_gpu_bsdf_principled(GPUMaterial *mat, static void node_shader_update_principled(bNodeTree *ntree, bNode *node) { - bNodeSocket *sock; - int distribution = node->custom1; - int sss_method = node->custom2; + const int distribution = node->custom1; + const int sss_method = node->custom2; - for (sock = node->inputs.first; sock; sock = sock->next) { + for (bNodeSocket *sock = node->inputs.first; sock; sock = sock->next) { if (STREQ(sock->name, "Transmission Roughness")) { nodeSetSocketAvailability(ntree, sock, distribution == SHD_GLOSSY_GGX); } if (STR_ELEM(sock->name, "Subsurface IOR", "Subsurface Anisotropy")) { - nodeSetSocketAvailability(ntree, sock, sss_method == SHD_SUBSURFACE_BURLEY); + nodeSetSocketAvailability(ntree, sock, sss_method != SHD_SUBSURFACE_BURLEY); } } } 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 e917858e0f2..85a4a6aa425 100644 --- a/source/blender/nodes/shader/nodes/node_shader_subsurface_scattering.c +++ b/source/blender/nodes/shader/nodes/node_shader_subsurface_scattering.c @@ -67,6 +67,17 @@ static int node_shader_gpu_subsurface_scattering(GPUMaterial *mat, mat, node, "node_subsurface_scattering", in, out, GPU_constant(&node->sss_id)); } +static void node_shader_update_subsurface_scattering(bNodeTree *ntree, bNode *node) +{ + const int sss_method = node->custom1; + + for (bNodeSocket *sock = node->inputs.first; sock; sock = sock->next) { + if (STR_ELEM(sock->name, "IOR", "Anisotropy")) { + nodeSetSocketAvailability(ntree, sock, sss_method != SHD_SUBSURFACE_BURLEY); + } + } +} + /* node type definition */ void register_node_type_sh_subsurface_scattering(void) { @@ -80,6 +91,7 @@ void register_node_type_sh_subsurface_scattering(void) node_type_init(&ntype, node_shader_init_subsurface_scattering); node_type_storage(&ntype, "", NULL, NULL); node_type_gpu(&ntype, node_shader_gpu_subsurface_scattering); + node_type_update(&ntype, node_shader_update_subsurface_scattering); nodeRegisterType(&ntype); } -- cgit v1.2.3