Blender Git Commit Log

Git Commits -> Revision 3ac8c45

Revision 3ac8c45 by Sergey Sharybin (cycles_bvh)
June 14, 2016, 21:08 (GMT)
Cycles: First proof of concept aligned and unaligned nodes living together

This commit was mainly focused on making it so QBVH builder delivers proper
packed array with interleaved aligned and unaligned nodes. It also contains
tweaks to traversal code to check it all works.

Packing seems to work fine for QBVH now (RegularBVH is simply untouched by
this commit, it'll come later).

Traversal of camera rays also works fine, but there are definitely some tricks
to be done in the traversal code:

- Need to avoid calculations of some variables which are only needed for
unaligned nodes (such as dir4 for example).

Should be easy task of ifdef-ing some values.

- Avoid some extra visibility flag checks, for example when deciding which
intersector to use and when fetching addresses of children.

Moving children info next to visibility flags will avoid this extra bit
check, but will cause different cache load. Would need to benchmark
what's better for us, or at least need to ifdef it for non-curve functions.

Curve intersectors would need to be renamed to unaligned btw.

NOTE: shadow, SSS, volume traversal codes are disabled currently, meaning
there's no way scene will be rendered correct.

Commit Details:

Full Hash: 3ac8c45bde4e407d541a6954e7a50fa4d2438a93
Parent Commit: f826686
Lines Changed: +299, -270

14 Modified Paths:

/intern/cycles/bvh/bvh.cpp (+86, -52) (Diff)
/intern/cycles/bvh/bvh_node.cpp (+36, -0) (Diff)
/intern/cycles/bvh/bvh_node.h (+2, -0) (Diff)
/intern/cycles/kernel/geom/geom_bvh.h (+1, -0) (Diff)
/intern/cycles/kernel/geom/geom_bvh_curve.h (+18, -18) (Diff)
/intern/cycles/kernel/geom/geom_qbvh.h (+8, -4) (Diff)
/intern/cycles/kernel/geom/geom_qbvh_curve.h (+34, -131) (Diff)
/intern/cycles/kernel/geom/geom_qbvh_shadow.h (+15, -10) (Diff)
/intern/cycles/kernel/geom/geom_qbvh_subsurface.h (+9, -5) (Diff)
/intern/cycles/kernel/geom/geom_qbvh_traversal.h (+53, -30) (Diff)
/intern/cycles/kernel/geom/geom_qbvh_volume.h (+12, -9) (Diff)
/intern/cycles/kernel/geom/geom_qbvh_volume_all.h (+12, -9) (Diff)
/intern/cycles/render/mesh.cpp (+8, -1) (Diff)
/intern/cycles/render/mesh.h (+5, -1) (Diff)
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021