[Bf-blender-cvs] [fe28e35] master: Fix T49179: Parts of mesh disappear with adaptive subdivision
Mai Lavelle
noreply at git.blender.org
Thu Sep 15 01:55:22 CEST 2016
Commit: fe28e350e96a8b137354e9038c6d25a9145d068d
Author: Mai Lavelle
Date: Wed Sep 14 19:34:43 2016 -0400
Branches: master
https://developer.blender.org/rBfe28e350e96a8b137354e9038c6d25a9145d068d
Fix T49179: Parts of mesh disappear with adaptive subdivision
Problem was zero length normal caused by a precision issue in patch evaluation.
This is somewhat of a quick fix, but is better than allowing possible NaNs to
occur and cause problems elsewhere.
===================================================================
M intern/cycles/render/mesh_subdivision.cpp
===================================================================
diff --git a/intern/cycles/render/mesh_subdivision.cpp b/intern/cycles/render/mesh_subdivision.cpp
index c8cc3ab..3b4841f 100644
--- a/intern/cycles/render/mesh_subdivision.cpp
+++ b/intern/cycles/render/mesh_subdivision.cpp
@@ -284,7 +284,12 @@ struct OsdPatch : Patch {
if(dPdu) *dPdu = du;
if(dPdv) *dPdv = dv;
- if(N) *N = normalize(cross(du, dv));
+ if(N) {
+ *N = cross(du, dv);
+
+ float t = len(*N);
+ *N = (t != 0.0f) ? *N/t : make_float3(0.0f, 0.0f, 1.0f);
+ }
}
BoundBox bound() { return BoundBox::empty; }
More information about the Bf-blender-cvs
mailing list