Blender Git Loki
Git Commits -> Revision bfe812e
Revision bfe812e by Sergey Sharybin (cycles_hair_bvh) April 13, 2016, 12:47 (GMT) |
Cycles: Use dedicated BVH for triangles and hair This is a required step forward OBB type of BVH which will be more optimal for hair but less optimal for triangles. Which means, we'll need to have dedicated hair BVH once we'll start working on OBB BVH. This commits does exactly that: there are now two separate BVH, one is fully dedicated to triangles and another one is fully dedicated to hair. They are built separately and also traversed separately. This allows: - Get rid of triangle storage for curve primitives, which solves memory usage issue without slowdown of triangles intersection test. - Perform test against triangles for shadow rays, which will often lead to som speed gain because ray often hits opaque triangle and in this case it's not needed to do any ray-to-curve intersections. Unfortunately, current implementation used 7 more textures, which is quite bad on lower end GPUs due to tight number of textures limit, which means less image textures can be used now. Here are some numbers: Master Patch Koro.blend Memory during render(Mb): 910 814 Peak memory(Mb): 984 963 Render time: 5m 51s 5m 21s Bunny.blend Memory during render(Mb): 8034 6375 Peak memory(Mb): 9058 7713 Render time: 9, 25s 7m 44s There are some render result difference with low number of samples, probably because of different order of geometry hits when there are multiple primitives at the same depth. But that's to be doublechecked. There should be no affect on scenes with just triangles. Since there are some interesting results already decided to put it online for some more tests. |
Commit Details:
Full Hash: bfe812e3c94af27fe468bd262e3590e940449e00
Parent Commit: bbcb9c6
Lines Changed: +2025, -419
4 Added Paths:
/intern/cycles/kernel/geom/geom_bvh_shadow_hair.h (+387, -0) (View)
/intern/cycles/kernel/geom/geom_bvh_traversal_hair.h (+394, -0) (View)
/intern/cycles/kernel/geom/geom_qbvh_shadow_hair.h (+378, -0) (View)
/intern/cycles/kernel/geom/geom_qbvh_traversal_hair.h (+380, -0) (View)
/intern/cycles/kernel/geom/geom_bvh_traversal_hair.h (+394, -0) (View)
/intern/cycles/kernel/geom/geom_qbvh_shadow_hair.h (+378, -0) (View)
/intern/cycles/kernel/geom/geom_qbvh_traversal_hair.h (+380, -0) (View)
22 Modified Paths:
/intern/cycles/bvh/bvh.cpp (+35, -15) (Diff)
/intern/cycles/bvh/bvh_build.cpp (+62, -50) (Diff)
/intern/cycles/bvh/bvh_params.h (+7, -0) (Diff)
/intern/cycles/kernel/CMakeLists.txt (+4, -0) (Diff)
/intern/cycles/kernel/geom/geom_bvh.h (+67, -40) (Diff)
/intern/cycles/kernel/geom/geom_bvh_shadow.h (+2, -26) (Diff)
/intern/cycles/kernel/geom/geom_bvh_traversal.h (+5, -94) (Diff)
/intern/cycles/kernel/geom/geom_bvh_volume.h (+1, -1) (Diff)
/intern/cycles/kernel/geom/geom_bvh_volume_all.h (+1, -1) (Diff)
/intern/cycles/kernel/geom/geom_curve.h (+9, -9) (Diff)
/intern/cycles/kernel/geom/geom_qbvh.h (+77, -27) (Diff)
/intern/cycles/kernel/geom/geom_qbvh_shadow.h (+2, -26) (Diff)
/intern/cycles/kernel/geom/geom_qbvh_traversal.h (+12, -70) (Diff)
/intern/cycles/kernel/geom/geom_qbvh_volume.h (+1, -1) (Diff)
/intern/cycles/kernel/geom/geom_qbvh_volume_all.h (+1, -1) (Diff)
/intern/cycles/kernel/kernel_shader.h (+26, -5) (Diff)
/intern/cycles/kernel/kernel_textures.h (+10, -0) (Diff)
/intern/cycles/kernel/kernel_types.h (+3, -2) (Diff)
/intern/cycles/kernel/svm/svm_image.h (+2, -2) (Diff)
/intern/cycles/render/mesh.cpp (+133, -46) (Diff)
/intern/cycles/render/mesh.h (+16, -3) (Diff)
/intern/cycles/render/scene.h (+10, -0) (Diff)
/intern/cycles/bvh/bvh_build.cpp (+62, -50) (Diff)
/intern/cycles/bvh/bvh_params.h (+7, -0) (Diff)
/intern/cycles/kernel/CMakeLists.txt (+4, -0) (Diff)
/intern/cycles/kernel/geom/geom_bvh.h (+67, -40) (Diff)
/intern/cycles/kernel/geom/geom_bvh_shadow.h (+2, -26) (Diff)
/intern/cycles/kernel/geom/geom_bvh_traversal.h (+5, -94) (Diff)
/intern/cycles/kernel/geom/geom_bvh_volume.h (+1, -1) (Diff)
/intern/cycles/kernel/geom/geom_bvh_volume_all.h (+1, -1) (Diff)
/intern/cycles/kernel/geom/geom_curve.h (+9, -9) (Diff)
/intern/cycles/kernel/geom/geom_qbvh.h (+77, -27) (Diff)
/intern/cycles/kernel/geom/geom_qbvh_shadow.h (+2, -26) (Diff)
/intern/cycles/kernel/geom/geom_qbvh_traversal.h (+12, -70) (Diff)
/intern/cycles/kernel/geom/geom_qbvh_volume.h (+1, -1) (Diff)
/intern/cycles/kernel/geom/geom_qbvh_volume_all.h (+1, -1) (Diff)
/intern/cycles/kernel/kernel_shader.h (+26, -5) (Diff)
/intern/cycles/kernel/kernel_textures.h (+10, -0) (Diff)
/intern/cycles/kernel/kernel_types.h (+3, -2) (Diff)
/intern/cycles/kernel/svm/svm_image.h (+2, -2) (Diff)
/intern/cycles/render/mesh.cpp (+133, -46) (Diff)
/intern/cycles/render/mesh.h (+16, -3) (Diff)
/intern/cycles/render/scene.h (+10, -0) (Diff)