diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2011-11-12 18:29:52 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2011-11-12 18:29:52 +0400 |
commit | fc42a6185ddeb6a24ec92287dfa7b89beb059716 (patch) | |
tree | cdd34b01d77f6c104ed38c30719426c11c01a96e /intern/cycles/render/object.cpp | |
parent | 817b6cb9a8990483a2bfce7a11e690c829e75ddc (diff) |
Cycles:
* Fix object scaling update issue with interactive rendering + static BVH.
* Fix negative scaling issue with static BVH.
* Fix #29217: excessive fireflies in first sample.
Diffstat (limited to 'intern/cycles/render/object.cpp')
-rw-r--r-- | intern/cycles/render/object.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/intern/cycles/render/object.cpp b/intern/cycles/render/object.cpp index b91531ac462..3a9f0add735 100644 --- a/intern/cycles/render/object.cpp +++ b/intern/cycles/render/object.cpp @@ -60,6 +60,11 @@ void Object::apply_transform() Transform ntfm = transform_transpose(transform_inverse(tfm)); + /* we keep normals pointing in same direction on negative scale, notify + mesh about this in it (re)calculates normals */ + if(transform_negative_scale(tfm)) + mesh->transform_negative_scaled = true; + if(attr_fN) { float3 *fN = attr_fN->data_float3(); @@ -232,8 +237,10 @@ void ObjectManager::apply_static_transforms(Scene *scene, Progress& progress) /* apply transforms for objects with single user meshes */ foreach(Object *object, scene->objects) { if(mesh_users[object->mesh] == 1) { - object->apply_transform(); - object->mesh->transform_applied = true; + if(!object->mesh->transform_applied) { + object->apply_transform(); + object->mesh->transform_applied = true; + } if(progress.get_cancel()) return; } |