[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