blender/intern/cycles/kernel/geom
Thomas Dinges b3def11f5b Cycles: Record all possible volume intersections for SSS and camera checks
This replaces sequential ray moving followed with scene intersection with
single BVH traversal, which gives us all possible intersections.

Only implemented for CPU, due to qsort and a bigger memory usage on GPU
which we rather avoid. GPU still uses the regular bvh volume intersection code, while CPU now uses the new code.

This improves render performance for scenes with:
a) Camera inside volume mesh
b) SSS mesh intersecting a volume mesh/domain

In simple volume files (not much geometry) performance is roughly the same
(slightly faster). In files with a lot of geometry, the performance
increase is larger. bmps.blend with a volume shader and camera inside the
mesh, it renders ~10% faster here.

Patch by Sergey and myself.

Differential Revision: https://developer.blender.org/D1264
2015-04-29 23:31:06 +02:00
..
geom_attribute.h Fix T43496: Infinite loop in kernel when using surface attribute for volume 2015-01-31 14:39:19 +05:00
geom_bvh_shadow.h Cycles: Split BVH nodes storage into inner and leaf nodes 2015-04-20 17:29:51 +05:00
geom_bvh_subsurface.h Cycles: Split BVH nodes storage into inner and leaf nodes 2015-04-20 17:29:51 +05:00
geom_bvh_traversal.h Cycles: Split BVH nodes storage into inner and leaf nodes 2015-04-20 17:29:51 +05:00
geom_bvh_volume_all.h Cycles: Record all possible volume intersections for SSS and camera checks 2015-04-29 23:31:06 +02:00
geom_bvh_volume.h Cycles: Split BVH nodes storage into inner and leaf nodes 2015-04-20 17:29:51 +05:00
geom_bvh.h Cycles: Record all possible volume intersections for SSS and camera checks 2015-04-29 23:31:06 +02:00
geom_curve.h Cycles: Use native saturate function for CUDA 2015-04-28 00:38:32 +05:00
geom_motion_curve.h Cycles: Cleanup and optimization comment update 2015-01-17 00:15:47 +05:00
geom_motion_triangle.h Cycles: Cleanup, spaces around assignment operator 2015-04-07 00:25:54 +05:00
geom_object.h Cycles: Avoid float/int conversion in few places 2015-03-31 19:52:14 +05:00
geom_primitive.h Cycles: Code cleanup, spaces around keywords 2015-03-28 00:15:15 +05:00
geom_qbvh_shadow.h Cycles: Split BVH nodes storage into inner and leaf nodes 2015-04-20 17:29:51 +05:00
geom_qbvh_subsurface.h Cycles: Split BVH nodes storage into inner and leaf nodes 2015-04-20 17:29:51 +05:00
geom_qbvh_traversal.h Cycles: Split BVH nodes storage into inner and leaf nodes 2015-04-20 17:29:51 +05:00
geom_qbvh_volume_all.h Cycles: Record all possible volume intersections for SSS and camera checks 2015-04-29 23:31:06 +02:00
geom_qbvh_volume.h Cycles: Split BVH nodes storage into inner and leaf nodes 2015-04-20 17:29:51 +05:00
geom_qbvh.h Fix T43027: OpenCL kernel compilation broken after QBVH 2015-01-02 14:58:01 +05:00
geom_triangle_intersect.h Fix T44046: Cycles speed regression in 2.74 (CPU only) 2015-04-08 18:47:25 +05:00
geom_triangle.h Cycles: Implement watertight ray/triangle intersection 2014-12-25 02:50:49 +05:00
geom_volume.h Fix T44269: Typo in volume_attribute_float:geom_volume.h 2015-04-05 19:07:45 +05:00
geom.h Cycles: Split BVH nodes storage into inner and leaf nodes 2015-04-20 17:29:51 +05:00