[Bf-blender-cvs] [7a4696197db] master: Cycles: Fix for a division by zero that could happen with solid angle triangle light sampling

Stefan Werner noreply at git.blender.org
Thu Aug 17 15:08:11 CEST 2017


Commit: 7a4696197dbb088a94d82edd78304e8fc32bd6e7
Author: Stefan Werner
Date:   Thu Aug 17 15:05:48 2017 +0200
Branches: master
https://developer.blender.org/rB7a4696197dbb088a94d82edd78304e8fc32bd6e7

Cycles: Fix for a division by zero that could happen with solid angle triangle light sampling

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

M	intern/cycles/kernel/kernel_light.h

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

diff --git a/intern/cycles/kernel/kernel_light.h b/intern/cycles/kernel/kernel_light.h
index d747c452de2..cd05e29ca54 100644
--- a/intern/cycles/kernel/kernel_light.h
+++ b/intern/cycles/kernel/kernel_light.h
@@ -954,7 +954,11 @@ ccl_device_forceinline void triangle_light_sample(KernelGlobals *kg, int prim, i
 
 		const float3 U = safe_normalize(C - dot(C, A) * A);
 
-		const float q = ((v * t - u * s) * cos_alpha - v) / ((v * s + u * t) * sin_alpha);
+		float q = 1.0f;
+		const float det = ((v * s + u * t) * sin_alpha);
+		if(det != 0.0f) {
+			q = ((v * t - u * s) * cos_alpha - v) / det;
+		}
 		const float temp = max(1.0f - q*q, 0.0f);
 
 		const float3 C_ = safe_normalize(q * A + sqrtf(temp) * U);




More information about the Bf-blender-cvs mailing list