[Bf-blender-cvs] [6ff8b06fe77] cycles-x: Cycles X: change subsurface anisotropy range to 0..1

Brecht Van Lommel noreply at git.blender.org
Mon Aug 23 17:27:28 CEST 2021


Commit: 6ff8b06fe770b9ad3e2b95a3d48d074f6708e729
Author: Brecht Van Lommel
Date:   Mon Aug 23 15:57:52 2021 +0200
Branches: cycles-x
https://developer.blender.org/rB6ff8b06fe770b9ad3e2b95a3d48d074f6708e729

Cycles X: change subsurface anisotropy range to 0..1

Negative values don't work well, don't support them for now.

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

M	intern/cycles/kernel/osl/osl_bssrdf.cpp
M	intern/cycles/kernel/svm/svm_closure.h
M	source/blender/nodes/shader/nodes/node_shader_bsdf_principled.c
M	source/blender/nodes/shader/nodes/node_shader_subsurface_scattering.c

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

diff --git a/intern/cycles/kernel/osl/osl_bssrdf.cpp b/intern/cycles/kernel/osl/osl_bssrdf.cpp
index 9f4dc180305..e346dd67d5e 100644
--- a/intern/cycles/kernel/osl/osl_bssrdf.cpp
+++ b/intern/cycles/kernel/osl/osl_bssrdf.cpp
@@ -92,8 +92,8 @@ class CBSSRDFClosure : public CClosurePrimitive {
       bssrdf->radius = params.radius;
       bssrdf->albedo = params.albedo;
       bssrdf->N = params.N;
-      bssrdf->roughness = params.roughness;
-      bssrdf->anisotropy = params.anisotropy;
+      bssrdf->roughness = clamp(params.roughness, 1.01f, 3.8f);
+      bssrdf->anisotropy = clamp(params.anisotropy, 0.0f, 0.9f);
       sd->flag |= bssrdf_setup(sd, bssrdf, (ClosureType)type, ior);
     }
   }
diff --git a/intern/cycles/kernel/svm/svm_closure.h b/intern/cycles/kernel/svm/svm_closure.h
index 4cc4de4144f..e2f6dde4ace 100644
--- a/intern/cycles/kernel/svm/svm_closure.h
+++ b/intern/cycles/kernel/svm/svm_closure.h
@@ -229,7 +229,7 @@ ccl_device_noinline int svm_node_closure_bsdf(
 
             /* Clamps protecting against bad/extreme and non physical values. */
             subsurface_ior = clamp(subsurface_ior, 1.01f, 3.8f);
-            bssrdf->anisotropy = clamp(subsurface_anisotropy, -0.9f, 0.9f);
+            bssrdf->anisotropy = clamp(subsurface_anisotropy, 0.0f, 0.9f);
 
             /* setup bsdf */
             sd->flag |= bssrdf_setup(sd, bssrdf, subsurface_method, subsurface_ior);
@@ -898,7 +898,7 @@ ccl_device_noinline int svm_node_closure_bsdf(
 
         const float subsurface_ior = clamp(param2, 1.01f, 3.8f);
         const float subsurface_anisotropy = stack_load_float(stack, data_node.w);
-        bssrdf->anisotropy = clamp(subsurface_anisotropy, -0.9f, 0.9f);
+        bssrdf->anisotropy = clamp(subsurface_anisotropy, 0.0f, 0.9f);
 
         sd->flag |= bssrdf_setup(sd, bssrdf, (ClosureType)type, subsurface_ior);
       }
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 bfd98629053..06f4d1f1b79 100644
--- a/source/blender/nodes/shader/nodes/node_shader_bsdf_principled.c
+++ b/source/blender/nodes/shader/nodes/node_shader_bsdf_principled.c
@@ -36,7 +36,7 @@ static bNodeSocketTemplate sh_node_bsdf_principled_in[] = {
      SOCK_COMPACT},
     {SOCK_RGBA, N_("Subsurface Color"), 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f},
     {SOCK_FLOAT, N_("Subsurface IOR"), 1.4f, 0.0f, 0.0f, 0.0f, 1.01f, 3.8f, PROP_FACTOR},
-    {SOCK_FLOAT, N_("Subsurface Anisotropy"), 0.0f, 0.0f, 0.0f, 0.0f, -1.0f, 1.0f, PROP_FACTOR},
+    {SOCK_FLOAT, N_("Subsurface Anisotropy"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_FACTOR},
     {SOCK_FLOAT, N_("Metallic"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_FACTOR},
     {SOCK_FLOAT, N_("Specular"), 0.5f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_FACTOR},
     {SOCK_FLOAT, N_("Specular Tint"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_FACTOR},
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 ceb201a1790..e917858e0f2 100644
--- a/source/blender/nodes/shader/nodes/node_shader_subsurface_scattering.c
+++ b/source/blender/nodes/shader/nodes/node_shader_subsurface_scattering.c
@@ -26,7 +26,7 @@ static bNodeSocketTemplate sh_node_subsurface_scattering_in[] = {
     {SOCK_FLOAT, N_("Scale"), 1.0, 0.0f, 0.0f, 0.0f, 0.0f, 1000.0f},
     {SOCK_VECTOR, N_("Radius"), 1.0f, 0.2f, 0.1f, 0.0f, 0.0f, 100.0f, PROP_NONE, SOCK_COMPACT},
     {SOCK_FLOAT, N_("IOR"), 1.4f, 0.0f, 0.0f, 0.0f, 1.01f, 3.8f, PROP_FACTOR},
-    {SOCK_FLOAT, N_("Anisotropy"), 0.0f, 0.0f, 0.0f, 0.0f, -1.0f, 1.0f, PROP_FACTOR},
+    {SOCK_FLOAT, N_("Anisotropy"), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, PROP_FACTOR},
     {SOCK_VECTOR, N_("Normal"), 0.0f, 0.0f, 0.0f, 1.0f, -1.0f, 1.0f, PROP_NONE, SOCK_HIDE_VALUE},
     {-1, ""},
 };



More information about the Bf-blender-cvs mailing list