[Bf-blender-cvs] [2fc2ab77578] principled-v2: Adding various notes

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


Commit: 2fc2ab77578e865712b25db5b2b0ed2e2fe824bf
Author: Lukas Stockner
Date:   Mon Jul 4 23:31:47 2022 +0200
Branches: principled-v2
https://developer.blender.org/rB2fc2ab77578e865712b25db5b2b0ed2e2fe824bf

Adding various notes

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

M	intern/cycles/kernel/closure/bsdf_microfacet_util.h
M	intern/cycles/kernel/integrator/mnee.h
M	intern/cycles/kernel/svm/closure.h

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

diff --git a/intern/cycles/kernel/closure/bsdf_microfacet_util.h b/intern/cycles/kernel/closure/bsdf_microfacet_util.h
index f660cdb6f04..b355c53aaee 100644
--- a/intern/cycles/kernel/closure/bsdf_microfacet_util.h
+++ b/intern/cycles/kernel/closure/bsdf_microfacet_util.h
@@ -139,7 +139,22 @@ ccl_device_forceinline float microfacet_ggx_E_avg(float rough)
 
 ccl_device_inline float3 schlick_fresnel_Fss(float3 F0)
 {
+  /* TODO validate using multiGGX code */
   return (one_float3() + 20.0f * saturate(F0)) * (1.0f / 21.0f);
 }
 
+/* TODO Imageworks source */
+ccl_device_inline float3 dielectic_fresnel_Fss(float eta)
+{
+  /* TODO validate using multiGGX code */
+  float f;
+  if (eta < 1.0f) {
+    f = 0.997118f + eta * (0.1014f - eta * (0.965241f + eta * 0.130607f));
+  }
+  else {
+    f = (eta - 1.0f) / (4.08567f + 1.00071f * eta);
+  }
+  return make_float3(f, f, f);
+}
+
 CCL_NAMESPACE_END
diff --git a/intern/cycles/kernel/integrator/mnee.h b/intern/cycles/kernel/integrator/mnee.h
index 67505b9b612..9082aee9a32 100644
--- a/intern/cycles/kernel/integrator/mnee.h
+++ b/intern/cycles/kernel/integrator/mnee.h
@@ -644,6 +644,7 @@ ccl_device_forceinline float3 mnee_eval_bsdf_contribution(ccl_private ShaderClos
   float cosThetaM = dot(bsdf->N, Ht);
 
   float G;
+  /* TODO: Use bsdf_microfacet_util.h */
   if (bsdf->type == CLOSURE_BSDF_MICROFACET_BECKMANN_REFRACTION_ID) {
     /* Eq. 26, 27: now calculate G1(i,m) and G1(o,m). */
     G = bsdf_beckmann_G1(bsdf->alpha_x, cosNO) * bsdf_beckmann_G1(bsdf->alpha_x, cosNI);
diff --git a/intern/cycles/kernel/svm/closure.h b/intern/cycles/kernel/svm/closure.h
index e24efd5abad..102b95c7972 100644
--- a/intern/cycles/kernel/svm/closure.h
+++ b/intern/cycles/kernel/svm/closure.h
@@ -670,7 +670,8 @@ ccl_device_noinline int svm_node_closure_bsdf(KernelGlobals kg,
       if (kernel_data.integrator.caustics_refractive || (path_flag & PATH_RAY_DIFFUSE) == 0)
 #endif
       {
-        /* This is to prevent MNEE from receiving a null BSDF. */
+        /* This is to prevent MNEE from receiving a null BSDF.
+         * TODO: Doesn't this always enable the closure? */
         float refraction_fresnel = fmaxf(0.0001f, 1.0f - fresnel);
         ccl_private MicrofacetBsdf *bsdf = (ccl_private MicrofacetBsdf *)bsdf_alloc(
             sd, sizeof(MicrofacetBsdf), weight * refraction_fresnel);



More information about the Bf-blender-cvs mailing list