blender/intern/cycles/kernel
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
..
closure Cleanup: Remove SD_BSDF_GLOSSY flag, unused. 2014-11-20 07:53:22 +01:00
geom Cycles: Implement QBVH tree traversal 2014-12-25 02:50:49 +05:00
osl Cycles: Synchronize SCons with CMake in regard of logging 2014-12-03 23:04:57 +05:00
shaders Fix T42888: Separate and Combine HSV distorts the hue value 2014-12-16 20:06:25 +05:00
svm Cycles: Optimize vector math node without links to single values. 2014-12-24 22:45:08 +01:00
CMakeLists.txt Cycles: Implement QBVH tree traversal 2014-12-25 02:50:49 +05:00
kernel_accumulate.h Cycles: Workaround cuda 6.5 compiler bug with sm_50 2014-09-06 15:10:17 +06:00
kernel_avx2.cpp Fix T41471 Cycles Bake: Setting small tile size results in wrong bake with stripes rather than the expected noise pattern 2014-08-19 11:40:33 +02:00
kernel_avx.cpp Fix T41471 Cycles Bake: Setting small tile size results in wrong bake with stripes rather than the expected noise pattern 2014-08-19 11:40:33 +02:00
kernel_bake.h Fix T41783: Cycles baking ignores displacement 2014-11-11 18:21:56 -02:00
kernel_camera.h Cycles Aperture Ratio - option to produce anamorphic bokeh 2014-08-27 10:51:50 +02:00
kernel_compat_cpu.h Cycles: Implement QBVH tree traversal 2014-12-25 02:50:49 +05:00
kernel_compat_cuda.h Cycles: correct math wrappers 2014-10-08 00:13:26 +02:00
kernel_compat_opencl.h Cycles: correct math wrappers 2014-10-08 00:13:26 +02:00
kernel_debug.h Cycles: Fix for viewport rendering with debug enabled 2014-10-06 12:36:46 +02:00
kernel_differential.h Cycles: change __device and similar qualifiers to ccl_device in kernel code. 2013-11-18 08:48:15 +01:00
kernel_emission.h Cycles: Initial support for volume ray visibility. 2014-09-05 16:17:39 +02:00
kernel_film.h Cycles: fix crash in SSE hair and half-floats on x86+vc2008 2014-02-27 15:01:20 +04:00
kernel_globals.h Fix T37264: cycles CPU render had limited number of float images, bumped to 1024. 2013-12-14 15:07:46 +01:00
kernel_jitter.h Fix T41601: Correlated multi-jitter with high samples "hangs" 2014-08-28 15:15:59 +06:00
kernel_light.h Cycles: Prevent NaN and inf in area lamp sampling caused by precision issues 2014-11-12 21:23:33 +05:00
kernel_math.h Cycles: relicense GNU GPL source code to Apache version 2.0. 2013-08-18 14:16:15 +00:00
kernel_montecarlo.h Cycles code refactor: minor refactoring and comments for volume code. 2014-03-29 13:03:49 +01:00
kernel_passes.h Style cleanup: indentation, braces 2014-05-05 02:19:08 +10:00
kernel_path_state.h Cycles: Add support for cameras inside volume 2014-09-25 23:28:01 +06:00
kernel_path_surface.h Cycles: Add "Max Bounce" control for lamps 2014-11-05 22:49:09 +01:00
kernel_path_volume.h Cycles: Add "Max Bounce" control for lamps 2014-11-05 22:49:09 +01:00
kernel_path.h Cleanup: warnings 2014-10-06 23:19:07 +02:00
kernel_projection.h Fix cycles using acosf in panorama render when it should use safe_acosf. 2014-04-18 13:51:29 +02:00
kernel_random.h Cycles: volume light sampling 2014-06-14 13:49:56 +02:00
kernel_shader.h Fix T42818: Cycles SSS passes are incorrect for SSS size of 0 2014-12-10 17:28:44 +05:00
kernel_shadow.h Cycles: Keep STACK_MAX_HITS private in kernel_shadow 2014-09-26 14:23:48 +06:00
kernel_sse2.cpp Fix T41471 Cycles Bake: Setting small tile size results in wrong bake with stripes rather than the expected noise pattern 2014-08-19 11:40:33 +02:00
kernel_sse3.cpp Fix T41471 Cycles Bake: Setting small tile size results in wrong bake with stripes rather than the expected noise pattern 2014-08-19 11:40:33 +02:00
kernel_sse41.cpp Fix T41471 Cycles Bake: Setting small tile size results in wrong bake with stripes rather than the expected noise pattern 2014-08-19 11:40:33 +02:00
kernel_subsurface.h Code cleanup: white space and cmake was broken on all platforms 2014-02-03 13:56:34 +11:00
kernel_textures.h make "tri_shader" an int instead of a float 2014-09-24 13:34:28 +02:00
kernel_types.h Cycles: Implement QBVH tree traversal 2014-12-25 02:50:49 +05:00
kernel_volume.h Cycles: Update some comments in volume code. 2014-11-13 11:30:18 +01:00
kernel.cl Fix T41471 Cycles Bake: Setting small tile size results in wrong bake with stripes rather than the expected noise pattern 2014-08-19 11:40:33 +02:00
kernel.cpp Fix T41471 Cycles Bake: Setting small tile size results in wrong bake with stripes rather than the expected noise pattern 2014-08-19 11:40:33 +02:00
kernel.cu Fix embarrassing typo... 2014-10-13 15:26:00 +02:00
kernel.h Fix T41471 Cycles Bake: Setting small tile size results in wrong bake with stripes rather than the expected noise pattern 2014-08-19 11:40:33 +02:00
SConscript Cycles: __KERNEL_DEBUG__ wasn't set for compile-time kernels 2014-10-05 21:42:53 +06:00