[Bf-blender-cvs] [3b39db8beb7] principled-v2: Add transmission component

Lukas Stockner noreply at git.blender.org
Mon Jul 4 23:56:16 CEST 2022


Commit: 3b39db8beb72444f78a648a99211bc67b28a65ed
Author: Lukas Stockner
Date:   Mon Jul 4 23:31:48 2022 +0200
Branches: principled-v2
https://developer.blender.org/rB3b39db8beb72444f78a648a99211bc67b28a65ed

Add transmission component

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

M	intern/cycles/kernel/svm/closure_principled.h

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

diff --git a/intern/cycles/kernel/svm/closure_principled.h b/intern/cycles/kernel/svm/closure_principled.h
index 4767c2932ca..1966b06fe0c 100644
--- a/intern/cycles/kernel/svm/closure_principled.h
+++ b/intern/cycles/kernel/svm/closure_principled.h
@@ -621,6 +621,29 @@ ccl_device_inline float principled_v2_specular(ccl_private ShaderData *sd,
   return microfacet_ggx_dielectric_E(dot(sd->I, N), roughness, ior);
 }
 
+ccl_device_inline void principled_v2_glass(ccl_private ShaderData *sd,
+                                           float3 weight,
+                                           float transmission,
+                                           float roughness,
+                                           float ior,
+                                           float3 N)
+{
+  ccl_private MicrofacetBsdf *bsdf = (ccl_private MicrofacetBsdf *)bsdf_alloc(
+      sd, sizeof(MicrofacetBsdf), transmission * weight);
+  if (bsdf == NULL) {
+    return;
+  }
+
+  bsdf->N = N;
+  bsdf->T = make_float3(0.0f, 0.0f, 0.0f);
+
+  bsdf->alpha_x = bsdf->alpha_y = sqr(roughness);
+  bsdf->ior = (sd->flag & SD_BACKFACING) ? 1.0f / ior : ior;
+
+  /* setup bsdf */
+  sd->flag |= bsdf_microfacet_multi_ggx_glass_setup(bsdf, sd, one_float3());
+}
+
 ccl_device void svm_node_closure_principled_v2(KernelGlobals kg,
                                                ccl_private ShaderData *sd,
                                                ccl_private float *stack,
@@ -664,7 +687,7 @@ ccl_device void svm_node_closure_principled_v2(KernelGlobals kg,
                                                    node_2.y);
   weight *= 1.0f - metallic;
 
-  // TODO Glass
+  principled_v2_glass(sd, weight, transmission, roughness, ior, N);
 
   weight *= (1.0f - transmission) * (1.0f - dielectric_albedo);



More information about the Bf-blender-cvs mailing list