diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-10-03 12:52:04 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-10-03 12:52:04 +0400 |
commit | a65451235637514abaaf2b04c5a89f14a6edd96f (patch) | |
tree | 434aa96d50837b2a08992230ddb46f9ab1995be4 /intern/cycles/render/object.cpp | |
parent | b86f199a98fe77b634ea7f686d3d664d9791562b (diff) |
Cycles: Implement preliminary test for volume stack update from SSS
This adds an AABB collision check for objects with volumes and if there's a
collision detected then the object will have SD_OBJECT_INTERSECTS_VOLUME flag.
This solves a speed regression introduced by the fix for T39823 by skipping
volume stack update in cases no volumes intersects the current SSS object.
Diffstat (limited to 'intern/cycles/render/object.cpp')
-rw-r--r-- | intern/cycles/render/object.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/intern/cycles/render/object.cpp b/intern/cycles/render/object.cpp index 634d0401aa9..986a36ba120 100644 --- a/intern/cycles/render/object.cpp +++ b/intern/cycles/render/object.cpp @@ -75,8 +75,14 @@ void Object::compute_bounds(bool motion_blur) bounds.grow(mbounds.transformed(&ttfm)); } } - else - bounds = mbounds.transformed(&tfm); + else { + if(mesh->transform_applied) { + bounds = mbounds; + } + else { + bounds = mbounds.transformed(&tfm); + } + } } void Object::apply_transform(bool apply_to_motion) @@ -410,9 +416,6 @@ void ObjectManager::device_update(Device *device, DeviceScene *dscene, Scene *sc progress.set_status("Updating Objects", "Applying Static Transformations"); apply_static_transforms(dscene, scene, object_flag, progress); } - - /* allocate object flag */ - device->tex_alloc("__object_flag", dscene->object_flag); } void ObjectManager::device_free(Device *device, DeviceScene *dscene) |