Blender Git Commit Log

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)

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)
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021