Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/intern
diff options
context:
space:
mode:
authorStefan Werner <swerner@smithmicro.com>2016-05-23 14:27:46 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2016-05-23 14:34:14 +0300
commit7a35a0f4196bc2ece323c24cdecaba568555eb4d (patch)
treec09d93dfb56a7bcaff8730b81a6fe11f610fed85 /intern
parentcdcb0826eebcd954306fdc6f1f601e183cc3c20b (diff)
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
Diffstat (limited to 'intern')
-rw-r--r--intern/cycles/render/mesh.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/intern/cycles/render/mesh.cpp b/intern/cycles/render/mesh.cpp
index de1533c26af..d26404035eb 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;
}