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
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2013-04-10 00:48:53 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2013-04-10 00:48:53 +0400
commit34707c19f27043d534f1b2359b4f660d513f3cb6 (patch)
treee61675e02c7f9a62dec7efab5d79970f5688527c /intern/cycles/render/mesh.cpp
parent84ba3f65210d535859357b23126c293c3987868f (diff)
Fix 34764: cycles issue rendering instanced mesh with NaN coordinates.
Diffstat (limited to 'intern/cycles/render/mesh.cpp')
-rw-r--r--intern/cycles/render/mesh.cpp26
1 files changed, 20 insertions, 6 deletions
diff --git a/intern/cycles/render/mesh.cpp b/intern/cycles/render/mesh.cpp
index 8d12ace4252..ddb4a1ee2cf 100644
--- a/intern/cycles/render/mesh.cpp
+++ b/intern/cycles/render/mesh.cpp
@@ -135,15 +135,29 @@ void Mesh::compute_bounds()
size_t verts_size = verts.size();
size_t curve_keys_size = curve_keys.size();
- for(size_t i = 0; i < verts_size; i++)
- bnds.grow(verts[i]);
+ if(verts_size + curve_keys_size > 0) {
+ for(size_t i = 0; i < verts_size; i++)
+ bnds.grow(verts[i]);
- for(size_t i = 0; i < curve_keys_size; i++)
- bnds.grow(curve_keys[i].co, curve_keys[i].radius);
+ for(size_t i = 0; i < curve_keys_size; i++)
+ bnds.grow(curve_keys[i].co, curve_keys[i].radius);
- /* happens mostly on empty meshes */
- if(!bnds.valid())
+ if(!bnds.valid()) {
+ bnds = BoundBox::empty;
+
+ /* skip nan or inf coordinates */
+ for(size_t i = 0; i < verts_size; i++)
+ bnds.grow_safe(verts[i]);
+
+ for(size_t i = 0; i < curve_keys_size; i++)
+ bnds.grow_safe(curve_keys[i].co, curve_keys[i].radius);
+ }
+ }
+
+ if(!bnds.valid()) {
+ /* empty mesh */
bnds.grow(make_float3(0.0f, 0.0f, 0.0f));
+ }
bounds = bnds;
}