Merge branch 'blender-v4.0-release' into main

This commit is contained in:
Brecht Van Lommel
2023-10-03 20:31:04 +02:00
3 changed files with 16 additions and 8 deletions

View File

@@ -91,7 +91,7 @@ ccl_device int bsdf_sheen_sample(ccl_private const ShaderClosure *sc,
float2 disk = sample_uniform_disk(rand);
float diskZ = safe_sqrtf(1.0f - dot(disk, disk));
float3 localO = normalize(make_float3((disk.x - diskZ * b) / a, disk.y / a, diskZ));
float3 localO = normalize(make_float3((disk.x - diskZ * b), disk.y, diskZ * a));
*wo = localO.x * T + localO.y * B + localO.z * N;

View File

@@ -638,10 +638,14 @@ ccl_device void osl_closure_sheen_setup(KernelGlobals kg,
bsdf->N = maybe_ensure_valid_specular_reflection(sd, closure->N);
bsdf->roughness = closure->roughness;
sd->flag |= bsdf_sheen_setup(kg, sd, bsdf);
const int sheen_flag = bsdf_sheen_setup(kg, sd, bsdf);
if (layer_albedo != NULL) {
*layer_albedo = bsdf->weight;
if (sheen_flag) {
sd->flag |= sheen_flag;
if (layer_albedo != NULL) {
*layer_albedo = bsdf->weight;
}
}
}

View File

@@ -194,11 +194,15 @@ ccl_device
bsdf->roughness = sheen_roughness;
/* setup bsdf */
sd->flag |= bsdf_sheen_setup(kg, sd, bsdf);
const int sheen_flag = bsdf_sheen_setup(kg, sd, bsdf);
/* Attenuate lower layers */
Spectrum albedo = bsdf_albedo(kg, sd, (ccl_private ShaderClosure *)bsdf, true, false);
weight *= 1.0f - reduce_max(safe_divide_color(albedo, weight));
if (sheen_flag) {
sd->flag |= sheen_flag;
/* Attenuate lower layers */
Spectrum albedo = bsdf_albedo(kg, sd, (ccl_private ShaderClosure *)bsdf, true, false);
weight *= 1.0f - reduce_max(safe_divide_color(albedo, weight));
}
}
}