[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