diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-08-18 16:59:44 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-08-18 16:59:44 +0400 |
commit | a6ae12aa6267ed95cea92f4722a7545cdc4f34bd (patch) | |
tree | 155096d41871f1a15822d335bc11ca82102a5e2d /intern/cycles/blender/blender_mesh.cpp | |
parent | de12cd706f1f9f12f675dfc118ae68b2c0701d82 (diff) |
Fix T41474: Second renderlayer doesnt render if first one has 'Use Surfaces' disabled
Diffstat (limited to 'intern/cycles/blender/blender_mesh.cpp')
-rw-r--r-- | intern/cycles/blender/blender_mesh.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/intern/cycles/blender/blender_mesh.cpp b/intern/cycles/blender/blender_mesh.cpp index c2254f84aa9..0f7d14ee411 100644 --- a/intern/cycles/blender/blender_mesh.cpp +++ b/intern/cycles/blender/blender_mesh.cpp @@ -525,15 +525,18 @@ Mesh *BlenderSync::sync_mesh(BL::Object b_ob, bool object_updated, bool hide_tri } /* test if we need to sync */ + bool use_mesh_geometry = render_layer.use_surfaces || render_layer.use_hair; Mesh *mesh; if(!mesh_map.sync(&mesh, key)) { + bool have_geometry = mesh->verts.size() != 0; /* if transform was applied to mesh, need full update */ if(object_updated && mesh->transform_applied); /* test if shaders changed, these can be object level so mesh * does not get tagged for recalc */ else if(mesh->used_shaders != used_shaders); + else if(use_mesh_geometry != have_geometry); else { /* even if not tagged for recalc, we may need to sync anyway * because the shader needs different mesh attributes */ @@ -567,7 +570,7 @@ Mesh *BlenderSync::sync_mesh(BL::Object b_ob, bool object_updated, bool hide_tri mesh->used_shaders = used_shaders; mesh->name = ustring(b_ob_data.name().c_str()); - if(render_layer.use_surfaces || render_layer.use_hair) { + if(use_mesh_geometry) { /* mesh objects does have special handle in the dependency graph, * they're ensured to have properly updated. * |