NTrace
GPU ray tracing framework
|
#include <OcclusionBVHBuilder.hpp>
Inherits FW::SplitBVHBuilder.
Classes | |
struct | NodeSpecOcl |
struct | ObjectSplitOcl |
struct | SpatialBinOcl |
struct | SpatialSplitOcl |
Public Member Functions | |
OcclusionBVHBuilder (BVH &bvh, const BVH::BuildParams ¶ms, const Vec3f &cameraPosition) | |
virtual | ~OcclusionBVHBuilder (void) |
virtual BVHNode * | run (void) |
![]() | |
SplitBVHBuilder (BVH &bvh, const BVH::BuildParams ¶ms) | |
Constructor. More... | |
~SplitBVHBuilder (void) | |
Destructor. More... | |
BVHNode * | run (void) |
Performs the actual build. More... | |
void | splitReference (Reference &left, Reference &right, const Reference &ref, int dim, F32 pos) |
Splits the triangle's bounding box. More... | |
Static Public Member Functions | |
static bool | sortCompare (void *data, int idxA, int idxB) |
![]() | |
static bool | sortCompare (void *data, int idxA, int idxB) |
Sort comparator. Sorts references according to their position in descending order. For details see framework/base.Sort.hpp. More... | |
static void | sortSwap (void *data, int idxA, int idxB) |
Sort swap function. Swaps two references placed in the reference stack. For details see framework/base.Sort.hpp. More... | |
Protected Types | |
enum | { MaxVisibleDepth = 48 } |
![]() | |
enum | { MaxDepth = 64, MaxSpatialDepth = 48, NumSpatialBins = 128 } |
Several tree build constrains. More... | |
Protected Member Functions | |
BVHNode * | buildNode (const NodeSpecOcl &spec, int start, int end, int level, F32 progressStart, F32 progressEnd) |
ObjectSplitOcl | findObjectSplit (const NodeSpecOcl &spec, int start, int end, F32 nodeSAH) |
ObjectSplitOcl | findObjectOccludeSplit (const NodeSpecOcl &spec, int start, int end, F32 nodeSAH) |
void | performObjectSplit (NodeSpecOcl &left, NodeSpecOcl &right, const NodeSpecOcl &spec, int start, int end, const ObjectSplitOcl &split) |
SpatialSplitOcl | findSpatialSplit (const NodeSpecOcl &spec, int start, int end, F32 nodeSAH) |
SpatialSplitOcl | findSpatialOccludeSplit (const NodeSpecOcl &spec, int start, int end, F32 nodeSAH) |
void | performSpatialOccludeSplit (NodeSpecOcl &left, NodeSpecOcl &right, int &start, int &end, const SpatialSplitOcl &split) |
![]() | |
BVHNode * | buildNode (NodeSpec spec, int level, F32 progressStart, F32 progressEnd) |
Builds a BVH node. The built node may be an inner node as well as a leaf node. More... | |
BVHNode * | createLeaf (const NodeSpec &spec) |
Builds a leaf node. More... | |
ObjectSplit | findObjectSplit (const NodeSpec &spec, F32 nodeSAH) |
Finds best object split of the node. More... | |
void | performObjectSplit (NodeSpec &left, NodeSpec &right, const NodeSpec &spec, const ObjectSplit &split) |
Performs the object split operation. More... | |
SpatialSplit | findSpatialSplit (const NodeSpec &spec, F32 nodeSAH) |
Finds the best spatial split of the node. More... | |
void | performSpatialSplit (NodeSpec &left, NodeSpec &right, const NodeSpec &spec, const SpatialSplit &split) |
Performs the spatial split operation. More... | |
Static Protected Member Functions | |
static void | sortSwap (void *data, int idxA, int idxB) |
Protected Attributes | |
SpatialBinOcl | m_bins [3][NumSpatialBins] |
Vec3f | m_cameraPos |
Array< S32 > | m_visibility |
S32 | m_MaxVisibleDepth |
![]() | |
BVH & | m_bvh |
BVH being built. More... | |
const Platform & | m_platform |
Platform settings. More... | |
const BVH::BuildParams & | m_params |
Build parameters. More... | |
Array< Reference > | m_refStack |
Reference stack. More... | |
F32 | m_minOverlap |
Minimum overlap of the left and right AABB of the object split needed to make spatial split worth finding. More... | |
Array< AABB > | m_rightBounds |
Bounding boxes of all the possible right children. More... | |
S32 | m_sortDim |
Sort dimension. Used by sort method. More... | |
SpatialBin | m_bins [3][NumSpatialBins] |
Spatial bins. More... | |
Timer | m_progressTimer |
Progress timer. More... | |
S32 | m_numDuplicates |
Number of duplicated references. More... | |
Definition at line 24 of file OcclusionBVHBuilder.hpp.
|
protected |
Enumerator | |
---|---|
MaxVisibleDepth |
Definition at line 27 of file OcclusionBVHBuilder.hpp.
OcclusionBVHBuilder::OcclusionBVHBuilder | ( | BVH & | bvh, |
const BVH::BuildParams & | params, | ||
const Vec3f & | cameraPosition | ||
) |
Definition at line 37 of file OcclusionBVHBuilder.cpp.
|
virtual |
Definition at line 77 of file OcclusionBVHBuilder.cpp.
|
protected |
Definition at line 271 of file OcclusionBVHBuilder.cpp.
|
protected |
Definition at line 491 of file OcclusionBVHBuilder.cpp.
|
protected |
Definition at line 386 of file OcclusionBVHBuilder.cpp.
|
protected |
Definition at line 765 of file OcclusionBVHBuilder.cpp.
|
protected |
Definition at line 656 of file OcclusionBVHBuilder.cpp.
|
protected |
Definition at line 639 of file OcclusionBVHBuilder.cpp.
|
protected |
Definition at line 1136 of file OcclusionBVHBuilder.cpp.
Definition at line 83 of file OcclusionBVHBuilder.cpp.
|
static |
Definition at line 1289 of file OcclusionBVHBuilder.cpp.
Definition at line 262 of file OcclusionBVHBuilder.cpp.
|
protected |
Definition at line 99 of file OcclusionBVHBuilder.hpp.
|
protected |
Definition at line 100 of file OcclusionBVHBuilder.hpp.
|
protected |
Definition at line 102 of file OcclusionBVHBuilder.hpp.
Definition at line 101 of file OcclusionBVHBuilder.hpp.