[Bf-blender-cvs] [cd118c5581f] master: Fix T90423: black pixels after shadow terminator geometry offset

Mikhail Matrosov noreply at git.blender.org
Mon Aug 23 15:55:55 CEST 2021


Commit: cd118c5581f482afc8554ff88b5b6f3b552b1682
Author: Mikhail Matrosov
Date:   Mon Aug 23 15:13:35 2021 +0200
Branches: master
https://developer.blender.org/rBcd118c5581f482afc8554ff88b5b6f3b552b1682

Fix T90423: black pixels after shadow terminator geometry offset

Solves an error in the principled diffuse BSDF, where it was not correctly
rejecting directions outside the hemisphere.

Differential Revision: https://developer.blender.org/D12283

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

M	intern/cycles/kernel/closure/bsdf_principled_diffuse.h

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

diff --git a/intern/cycles/kernel/closure/bsdf_principled_diffuse.h b/intern/cycles/kernel/closure/bsdf_principled_diffuse.h
index 43646aaeb5b..d5d012068ff 100644
--- a/intern/cycles/kernel/closure/bsdf_principled_diffuse.h
+++ b/intern/cycles/kernel/closure/bsdf_principled_diffuse.h
@@ -36,10 +36,10 @@ static_assert(sizeof(ShaderClosure) >= sizeof(PrincipledDiffuseBsdf),
 ccl_device float3 calculate_principled_diffuse_brdf(
     const PrincipledDiffuseBsdf *bsdf, float3 N, float3 V, float3 L, float3 H, float *pdf)
 {
-  float NdotL = max(dot(N, L), 0.0f);
-  float NdotV = max(dot(N, V), 0.0f);
+  float NdotL = dot(N, L);
+  float NdotV = dot(N, V);
 
-  if (NdotL < 0 || NdotV < 0) {
+  if (NdotL <= 0 || NdotV <= 0) {
     *pdf = 0.0f;
     return make_float3(0.0f, 0.0f, 0.0f);
   }



More information about the Bf-blender-cvs mailing list