[Bf-blender-cvs] [280fc52ba2f] cycles_texture_cache: Cycles: wider ray differential calculation for diffuse components of principled BSDF

Stefan Werner noreply at git.blender.org
Mon Nov 27 20:40:26 CET 2017


Commit: 280fc52ba2ff2468cd76f6dfa400aba8f266f846
Author: Stefan Werner
Date:   Fri May 12 16:51:11 2017 +0200
Branches: cycles_texture_cache
https://developer.blender.org/rB280fc52ba2ff2468cd76f6dfa400aba8f266f846

Cycles: wider ray differential calculation for diffuse components of principled BSDF

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

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

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

diff --git a/intern/cycles/kernel/closure/bsdf_principled_diffuse.h b/intern/cycles/kernel/closure/bsdf_principled_diffuse.h
index f8ca64293b0..39a976468bd 100644
--- a/intern/cycles/kernel/closure/bsdf_principled_diffuse.h
+++ b/intern/cycles/kernel/closure/bsdf_principled_diffuse.h
@@ -110,8 +110,10 @@ ccl_device int bsdf_principled_diffuse_sample(const ShaderClosure *sc,
 
 #ifdef __RAY_DIFFERENTIALS__
 		// TODO: find a better approximation for the diffuse bounce
-		*domega_in_dx = -((2 * dot(N, dIdx)) * N - dIdx);
-		*domega_in_dy = -((2 * dot(N, dIdy)) * N - dIdy);
+		*domega_in_dx = (2.0f * dot(N, dIdx)) * N - dIdx;
+		*domega_in_dy = (2.0f * dot(N, dIdy)) * N - dIdy;
+		*domega_in_dx *= 125.0f;
+		*domega_in_dy *= 125.0f;
 #endif
 	}
 	else {
diff --git a/intern/cycles/kernel/closure/bsdf_principled_sheen.h b/intern/cycles/kernel/closure/bsdf_principled_sheen.h
index f4476bfecd0..09f4279771c 100644
--- a/intern/cycles/kernel/closure/bsdf_principled_sheen.h
+++ b/intern/cycles/kernel/closure/bsdf_principled_sheen.h
@@ -96,8 +96,10 @@ ccl_device int bsdf_principled_sheen_sample(const ShaderClosure *sc,
 
 #ifdef __RAY_DIFFERENTIALS__
 		// TODO: find a better approximation for the diffuse bounce
-		*domega_in_dx = -((2 * dot(N, dIdx)) * N - dIdx);
-		*domega_in_dy = -((2 * dot(N, dIdy)) * N - dIdy);
+		*domega_in_dx = (2.0f * dot(N, dIdx)) * N - dIdx;
+		*domega_in_dy = (2.0f * dot(N, dIdy)) * N - dIdy;
+		*domega_in_dx *= 125.0f;
+		*domega_in_dy *= 125.0f;
 #endif
 	}
 	else {



More information about the Bf-blender-cvs mailing list