blender/intern
Sergey Sharybin 03f28553ff Cycles: Implement QBVH tree traversal
This commit implements traversal for QBVH tree, which is based on the old loop
code for traversal itself and Embree for node intersection.

This commit also does some changes to the loop inspired by Embree:

- Visibility flags are only checked for primitives.

  Doing visibility check for every node cost quite reasonable amount of time
  and in most cases those checks are true-positive.

  Other idea here would be to do visibility checks for leaf nodes only, but
  this would need to be investigated further.

- For minimum hair width we extend all the nodes' bounding boxes.

  Again doing curve visibility check is quite costly for each of the nodes and
  those checks returns truth for most of the hierarchy anyway.

There are number of possible optimization still, but current state is good
enough in terms it makes rendering faster a little bit after recent watertight
commit.

Currently QBVH is only implemented for CPU with SSE2 support at least. All
other devices would need to be supported later (if that'd make sense from
performance point of view).

The code is enabled for compilation in kernel. but blender wouldn't use it
still.
2014-12-25 02:50:49 +05:00
..
atomic Fixes for atomic operations when building with MSVC 2014-12-02 16:38:09 +05:00
audaspace Audaspace: File handle management for audio sequencing 2014-11-25 10:48:23 +13:00
container Rework carve integration into boolean modifier 2014-02-13 17:16:53 +06:00
cycles Cycles: Implement QBVH tree traversal 2014-12-25 02:50:49 +05:00
dualcon quiet double-promotion warnings, change octree.cpp to use a float (vector accumulated into a float anyway) 2013-08-06 06:38:52 +00:00
elbeem CMake: correct include dirs 2014-07-01 09:36:28 +10:00
ffmpeg Fix video FFmpeg nt being able to produce video files due to usage of deprecated settings 2014-04-15 00:15:09 +06:00
ghost Correction for non-Windows SCons compiling fix after IME Merge 2014-12-11 00:22:17 +01:00
glew-mx Compilation error fix for buildbot 2014-11-03 15:24:53 +05:00
guardedalloc Fix inconsistent types in guardealloc 2014-10-14 16:11:20 +02:00
iksolver Code cleanup: white space and cmake was broken on all platforms 2014-02-03 13:56:34 +11:00
itasc Code cleanup: warnings 2014-07-20 00:38:52 +10:00
locale Cleanup: cmake 2014-11-13 15:30:32 +01:00
memutil Cleanup: warnings, typos 2014-10-29 14:15:21 +01:00
mikktspace Style Cleanup: remove preprocessor indentation (updated wiki style guide too) 2013-12-22 14:12:19 +11:00
moto BGE: TrackTo actuator: increasing up & track axis options 2014-07-14 18:30:27 -07:00
opencolorio Fix OpenGL error on cycles rendered viewport. 2014-10-08 12:19:06 +02:00
opennl Ensure no integer overflow happens in SuperLU solver on memory allocation 2014-12-20 00:23:42 +05:00
raskter code cleanup: use NULL rather then 0 for pointers, and make vars static where possible. 2013-03-22 05:34:10 +00:00
rigidbody Code cleanup 2014-07-18 11:55:59 +10:00
smoke Cleanup: Remove special code for Visual Studio 2008. 2014-08-07 13:52:15 +02:00
string fix for buffer out-of-bounds reading for STR_String comparisons with char arrays. 2013-03-22 21:26:59 +00:00
utfconv Warning cleanup: 2014-03-22 14:41:38 +02:00
CMakeLists.txt Ghost Context Refactor 2014-10-07 15:47:32 -05:00
SConscript Ghost Context Refactor 2014-10-07 15:47:32 -05:00