NTrace
GPU ray tracing framework
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
FW::OcclusionBVHBuilder Class Reference

#include <OcclusionBVHBuilder.hpp>

Inherits FW::SplitBVHBuilder.

Classes

struct  NodeSpecOcl
 
struct  ObjectSplitOcl
 
struct  SpatialBinOcl
 
struct  SpatialSplitOcl
 

Public Member Functions

 OcclusionBVHBuilder (BVH &bvh, const BVH::BuildParams &params, const Vec3f &cameraPosition)
 
virtual ~OcclusionBVHBuilder (void)
 
virtual BVHNoderun (void)
 
- Public Member Functions inherited from FW::SplitBVHBuilder
 SplitBVHBuilder (BVH &bvh, const BVH::BuildParams &params)
 Constructor. More...
 
 ~SplitBVHBuilder (void)
 Destructor. More...
 
BVHNoderun (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 Public Member Functions inherited from FW::SplitBVHBuilder
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 }
 
- Protected Types inherited from FW::SplitBVHBuilder
enum  { MaxDepth = 64, MaxSpatialDepth = 48, NumSpatialBins = 128 }
 Several tree build constrains. More...
 

Protected Member Functions

BVHNodebuildNode (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)
 
- Protected Member Functions inherited from FW::SplitBVHBuilder
BVHNodebuildNode (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...
 
BVHNodecreateLeaf (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< S32m_visibility
 
S32 m_MaxVisibleDepth
 
- Protected Attributes inherited from FW::SplitBVHBuilder
BVHm_bvh
 BVH being built. More...
 
const Platformm_platform
 Platform settings. More...
 
const BVH::BuildParamsm_params
 Build parameters. More...
 
Array< Referencem_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< AABBm_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...
 

Detailed Description

Definition at line 24 of file OcclusionBVHBuilder.hpp.

Member Enumeration Documentation

anonymous enum
protected
Enumerator
MaxVisibleDepth 

Definition at line 27 of file OcclusionBVHBuilder.hpp.

Constructor & Destructor Documentation

OcclusionBVHBuilder::OcclusionBVHBuilder ( BVH bvh,
const BVH::BuildParams params,
const Vec3f cameraPosition 
)

Definition at line 37 of file OcclusionBVHBuilder.cpp.

OcclusionBVHBuilder::~OcclusionBVHBuilder ( void  )
virtual

Definition at line 77 of file OcclusionBVHBuilder.cpp.

Member Function Documentation

BVHNode * OcclusionBVHBuilder::buildNode ( const NodeSpecOcl spec,
int  start,
int  end,
int  level,
F32  progressStart,
F32  progressEnd 
)
protected

Definition at line 271 of file OcclusionBVHBuilder.cpp.

OcclusionBVHBuilder::ObjectSplitOcl OcclusionBVHBuilder::findObjectOccludeSplit ( const NodeSpecOcl spec,
int  start,
int  end,
F32  nodeSAH 
)
protected

Definition at line 491 of file OcclusionBVHBuilder.cpp.

OcclusionBVHBuilder::ObjectSplitOcl OcclusionBVHBuilder::findObjectSplit ( const NodeSpecOcl spec,
int  start,
int  end,
F32  nodeSAH 
)
protected

Definition at line 386 of file OcclusionBVHBuilder.cpp.

OcclusionBVHBuilder::SpatialSplitOcl OcclusionBVHBuilder::findSpatialOccludeSplit ( const NodeSpecOcl spec,
int  start,
int  end,
F32  nodeSAH 
)
protected

Definition at line 765 of file OcclusionBVHBuilder.cpp.

OcclusionBVHBuilder::SpatialSplitOcl OcclusionBVHBuilder::findSpatialSplit ( const NodeSpecOcl spec,
int  start,
int  end,
F32  nodeSAH 
)
protected

Definition at line 656 of file OcclusionBVHBuilder.cpp.

void OcclusionBVHBuilder::performObjectSplit ( NodeSpecOcl left,
NodeSpecOcl right,
const NodeSpecOcl spec,
int  start,
int  end,
const ObjectSplitOcl split 
)
protected

Definition at line 639 of file OcclusionBVHBuilder.cpp.

void OcclusionBVHBuilder::performSpatialOccludeSplit ( NodeSpecOcl left,
NodeSpecOcl right,
int &  start,
int &  end,
const SpatialSplitOcl split 
)
protected

Definition at line 1136 of file OcclusionBVHBuilder.cpp.

BVHNode * OcclusionBVHBuilder::run ( void  )
virtual

Definition at line 83 of file OcclusionBVHBuilder.cpp.

bool OcclusionBVHBuilder::sortCompare ( void data,
int  idxA,
int  idxB 
)
static

Definition at line 1289 of file OcclusionBVHBuilder.cpp.

void OcclusionBVHBuilder::sortSwap ( void data,
int  idxA,
int  idxB 
)
staticprotected

Definition at line 262 of file OcclusionBVHBuilder.cpp.

Member Data Documentation

SpatialBinOcl FW::OcclusionBVHBuilder::m_bins[3][NumSpatialBins]
protected

Definition at line 99 of file OcclusionBVHBuilder.hpp.

Vec3f FW::OcclusionBVHBuilder::m_cameraPos
protected

Definition at line 100 of file OcclusionBVHBuilder.hpp.

S32 FW::OcclusionBVHBuilder::m_MaxVisibleDepth
protected

Definition at line 102 of file OcclusionBVHBuilder.hpp.

Array<S32> FW::OcclusionBVHBuilder::m_visibility
protected

Definition at line 101 of file OcclusionBVHBuilder.hpp.


The documentation for this class was generated from the following files: