Blender Git Loki
Git Commits -> Revision c069f01
Revision c069f01 by Sergey Sharybin (cycles_hair_bvh) April 22, 2016, 15:06 (GMT) |
Cycles: Proof-of-concept unaligned BVH traversal code This a commit which breaks regular non-development work broken, this is due to accumulated TODOs in the code, solving which is not fully trivial and trying to stub them will lead to some nasty code. That being said, only final renders are working stable, perhaps only for hair tho (mixed hair and triangles could behave flackey). In any way, the code is mainly here to see how much traversal steps we can save using oriented bounding boxes in hair BVH, it is not optimized or vectorized. In fact, it does evaluation of particular things multiple times. This means only traversal steps pass could be used to quantify possible improvements. But that being said some quick tests seems promising. Here is a camera rays traversal heatmap for suzanne with 8000 hair: Master: http://www.pasteall.org/pic/show.php?id=102281 Branch: http://www.pasteall.org/pic/show.php?id=102282 Btw, only regular BVH was modified to support OBB. Now we need to work on vectorization and QBVH support to see if we can beat performance of AABB by a measurable matter. |
Commit Details:
Full Hash: c069f01c185ae7bb48c20348247e566a45bfb22c
Parent Commit: 086f115
Lines Changed: +303, -202
1 Added Path:
/intern/cycles/kernel/geom/geom_bvh_hair.h (+112, -0) (View)
8 Modified Paths:
/intern/cycles/bvh/bvh.cpp (+114, -16) (Diff)
/intern/cycles/bvh/bvh.h (+24, -3) (Diff)
/intern/cycles/bvh/bvh_build.cpp (+1, -1) (Diff)
/intern/cycles/bvh/bvh_node.h (+1, -0) (Diff)
/intern/cycles/kernel/geom/geom.h (+2, -0) (Diff)
/intern/cycles/kernel/geom/geom_bvh.h (+2, -0) (Diff)
/intern/cycles/kernel/geom/geom_bvh_traversal_hair.h (+37, -177) (Diff)
/intern/cycles/render/mesh.cpp (+10, -5) (Diff)
/intern/cycles/bvh/bvh.h (+24, -3) (Diff)
/intern/cycles/bvh/bvh_build.cpp (+1, -1) (Diff)
/intern/cycles/bvh/bvh_node.h (+1, -0) (Diff)
/intern/cycles/kernel/geom/geom.h (+2, -0) (Diff)
/intern/cycles/kernel/geom/geom_bvh.h (+2, -0) (Diff)
/intern/cycles/kernel/geom/geom_bvh_traversal_hair.h (+37, -177) (Diff)
/intern/cycles/render/mesh.cpp (+10, -5) (Diff)