[Bf-blender-cvs] [a9156fef9a8] principled-v2: Move sheen to separate function
Lukas Stockner
noreply at git.blender.org
Mon Jul 4 23:56:13 CEST 2022
Commit: a9156fef9a863d70a3d0272e62e9da3394c60d23
Author: Lukas Stockner
Date: Mon Jul 4 23:31:47 2022 +0200
Branches: principled-v2
https://developer.blender.org/rBa9156fef9a863d70a3d0272e62e9da3394c60d23
Move sheen to separate function
===================================================================
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 0dbd1206778..f3c685586c5 100644
--- a/intern/cycles/kernel/svm/closure_principled.h
+++ b/intern/cycles/kernel/svm/closure_principled.h
@@ -5,6 +5,38 @@
CCL_NAMESPACE_BEGIN
+ccl_device_inline void principled_v1_sheen(KernelGlobals kg,
+ ccl_private ShaderData *sd,
+ float3 weight,
+ float3 base_color,
+ float3 N,
+ float sheen_weight,
+ float sheen_tint)
+{
+ if (sheen_weight <= CLOSURE_WEIGHT_CUTOFF) {
+ return;
+ }
+
+ // normalize lum. to isolate hue+sat
+ float m_cdlum = linear_rgb_to_gray(kg, base_color);
+ float3 m_ctint = m_cdlum > 0.0f ? base_color / m_cdlum : one_float3();
+
+ /* color of the sheen component */
+ float3 sheen_color = lerp(one_float3(), m_ctint, sheen_tint);
+
+ ccl_private PrincipledSheenBsdf *bsdf = (ccl_private PrincipledSheenBsdf *)bsdf_alloc(
+ sd, sizeof(PrincipledSheenBsdf), sheen_weight * sheen_color * weight);
+
+ if (bsdf == NULL) {
+ return;
+ }
+
+ bsdf->N = N;
+
+ /* setup bsdf */
+ sd->flag |= bsdf_principled_sheen_setup(sd, bsdf);
+}
+
ccl_device_inline void principled_v1_clearcoat(ccl_private ShaderData *sd,
float3 weight,
float clearcoat,
@@ -205,28 +237,7 @@ ccl_device void svm_node_closure_principled(KernelGlobals kg,
#endif
/* sheen */
- if (diffuse_weight > CLOSURE_WEIGHT_CUTOFF && sheen > CLOSURE_WEIGHT_CUTOFF) {
- float m_cdlum = linear_rgb_to_gray(kg, base_color);
- float3 m_ctint = m_cdlum > 0.0f ?
- base_color / m_cdlum :
- make_float3(1.0f, 1.0f, 1.0f); // normalize lum. to isolate hue+sat
-
- /* color of the sheen component */
- float3 sheen_color = make_float3(1.0f, 1.0f, 1.0f) * (1.0f - sheen_tint) +
- m_ctint * sheen_tint;
-
- float3 sheen_weight = weight * sheen * sheen_color * diffuse_weight;
-
- ccl_private PrincipledSheenBsdf *bsdf = (ccl_private PrincipledSheenBsdf *)bsdf_alloc(
- sd, sizeof(PrincipledSheenBsdf), sheen_weight);
-
- if (bsdf) {
- bsdf->N = N;
-
- /* setup bsdf */
- sd->flag |= bsdf_principled_sheen_setup(sd, bsdf);
- }
- }
+ principled_v1_sheen(kg, sd, weight, base_color, N, diffuse_weight * sheen, sheen_tint);
/* specular reflection */
#ifdef __CAUSTICS_TRICKS__
More information about the Bf-blender-cvs
mailing list