0027590: Visualization, Ray Tracing - port to quad BVH trees (QBVH)
authordbp <dbp@opencascade.com>
Mon, 20 Jun 2016 16:43:44 +0000 (19:43 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 23 Jun 2016 15:15:13 +0000 (18:15 +0300)
commitf2474958ef13011d06629ba30a808dd72697eab6
treef47a56a3e458bf9c02c83f75c2642579f793b8ab
parent9cc4e7e2db466607ce67db8b48c8b59e2924d552
0027590: Visualization, Ray Tracing - port to quad BVH trees (QBVH)

In frames of this issue binary BVH tree produced by building algorithms was collapsed into 4-ary BVH (QBVH).
The BVH traversal code in GLSL was modified to process such trees correctly.
This allows to implore thread coherence, decrease BVH memory consumption (~2 times), and use traversal stack of the half size.
As a result, ray tracing scalability is improved, as well as rendering performance. For various setups, speedup is 12-18%.
19 files changed:
src/BVH/BVH_BinaryTree.hxx [new file with mode: 0644]
src/BVH/BVH_BinaryTree.lxx [new file with mode: 0644]
src/BVH/BVH_Builder.hxx
src/BVH/BVH_DistanceField.lxx
src/BVH/BVH_QuadTree.hxx [new file with mode: 0644]
src/BVH/BVH_QuadTree.lxx [new file with mode: 0644]
src/BVH/BVH_QueueBuilder.lxx
src/BVH/BVH_Tree.hxx
src/BVH/BVH_Tree.lxx
src/BVH/FILES
src/OpenGl/OpenGl_Layer.cxx
src/OpenGl/OpenGl_SceneGeometry.cxx
src/OpenGl/OpenGl_SceneGeometry.hxx
src/OpenGl/OpenGl_View.hxx
src/OpenGl/OpenGl_View_Raytrace.cxx
src/Select3D/Select3D_SensitiveSet.cxx
src/SelectMgr/SelectMgr_ViewerSelector.cxx
src/Shaders/RaytraceBase.fs
src/Shaders/RaytraceRender.fs