[Bf-blender-cvs] [7a35a0f] master: Fixed a rare case of NaN in Cycles
Stefan Werner
noreply at git.blender.org
Mon May 23 13:34:01 CEST 2016
Commit: 7a35a0f4196bc2ece323c24cdecaba568555eb4d
Author: Stefan Werner
Date: Mon May 23 13:27:46 2016 +0200
Branches: master
https://developer.blender.org/rB7a35a0f4196bc2ece323c24cdecaba568555eb4d
Fixed a rare case of NaN in Cycles
This fixes a rare case where NaNs could exist inside Cycles.
When certain invalid meshes were passed in, Cycles would try too normalize
a zero length normal during its setup stage. While it does check against
division by zero, it still returns a zero length normal and passes it on to
the path tracing kernel. The kernel then operates under the assumption that
normals are valid, and in the case of such a zero length normal, would
eventually create NaNs that propagate through and result in black pixels.
Reviewers: #cycles
Subscribers: brecht, sergey
Projects: #cycles
Differential Revision: https://developer.blender.org/D2008
===================================================================
M intern/cycles/render/mesh.cpp
===================================================================
diff --git a/intern/cycles/render/mesh.cpp b/intern/cycles/render/mesh.cpp
index de1533c..d264040 100644
--- a/intern/cycles/render/mesh.cpp
+++ b/intern/cycles/render/mesh.cpp
@@ -285,7 +285,7 @@ static float3 compute_face_normal(const Mesh::Triangle& t, float3 *verts)
float normlen = len(norm);
if(normlen == 0.0f)
- return make_float3(0.0f, 0.0f, 0.0f);
+ return make_float3(1.0f, 0.0f, 0.0f);
return norm / normlen;
}
More information about the Bf-blender-cvs
mailing list