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

#include <HLBVHBuilder.hpp>

Inherits FW::CudaBVH.

Public Member Functions

 HLBVHBuilder (Scene *scene, const Platform &platform, HLBVHParams params)
 
virtual ~HLBVHBuilder (void)
 
float getCPUTime ()
 
float getGPUTime ()
 
void getStats (U32 &nodes, U32 &leaves, U32 &nodeTop)
 
void getSizes (F32 &task, F32 &split, F32 &ads, F32 &tri, F32 &triIdx)
 
- Public Member Functions inherited from FW::CudaBVH
 CudaBVH (const BVH &bvh, BVHLayout layout)
 Constructor. More...
 
 CudaBVH (BVHLayout layout)
 Constructor. More...
 
 CudaBVH (CudaBVH &other)
 Copy constructor. More...
 
 CudaBVH (InputStream &in)
 Constructor. Reads Cuda BVH from a file. More...
 
 ~CudaBVH (void)
 Destructor. More...
 
BVHLayout getLayout (void) const
 
Buffer & getNodeBuffer (void)
 
Buffer & getTriWoopBuffer (void)
 
Buffer & getTriIndexBuffer (void)
 
Vec2i getNodeSubArray (int idx) const
 Returns node subarray. More...
 
Vec2i getTriWoopSubArray (int idx) const
 Returns woop triangle subarray. More...
 
CudaBVH & operator= (CudaBVH &other)
 Assignment operator. More...
 
void serialize (OutputStream &out)
 Writes Cuda BVH to the output stream. More...
 
void setTraceParams (Platform *platform, Scene *scene)
 
void findVisibleTriangles (RayBuffer &rays, S32 *references, S32 offset)
 
void trace (RayBuffer &rays, Buffer &visibility, bool twoTrees, RayStats *stats=NULL)
 
void trace (RayBuffer &rays, Buffer &visibility, Array< AABB > &emptyBVH, RayStats *stats=NULL)
 
bool isLeaf (S32 node)
 
void getNode (S32 node, SplitInfo *splitInfo, AABB &child0, AABB &child1, S32 &child0Addr, S32 &child1Addr)
 
void getTriangleIndices (S32 node, Array< S32 > &indices)
 
Scene * getScene ()
 
- Public Member Functions inherited from FW::CudaAS
virtual ~CudaAS (void)
 Destructor. More...
 

Protected Member Functions

void build ()
 
void buildLBVH ()
 
void buildHLBVH ()
 
void calcMortonAndSort (Buffer &triMorton, Buffer &triIdx)
 
void createClustersC (Buffer &triMorton, S32 d, Buffer &clusters)
 
void calcAABB (U32 nodeWritten)
 
void buildTopLevel (Buffer *ooq, U32 &nodeWritten, U32 &nodeCreated, Buffer &clusters)
 
void buildBottomLevel (Buffer *q_in, Buffer *q_out, U32 &nodeWritten, U32 &nodeCreated, U32 bOfs, U32 n_bits)
 
F32 calcSAHGPU ()
 
F32 calcSAHCPU (S32 n)
 
S32 calcLeafs (S32 n)
 
void initMemory (Buffer &q_in, Buffer &q_out, int leafSize=1)
 

Protected Attributes

Timer m_progressTimer
 
HLBVHParams m_params
 

Additional Inherited Members

- Public Types inherited from FW::CudaBVH
enum  { Align = 4096 }
 
- Public Attributes inherited from FW::CudaBVH
RayStats * m_stats
 

Detailed Description

Definition at line 34 of file HLBVHBuilder.hpp.

Constructor & Destructor Documentation

HLBVHBuilder::HLBVHBuilder ( Scene *  scene,
const Platform &  platform,
HLBVHParams  params 
)

Definition at line 32 of file HLBVHBuilder.cpp.

HLBVHBuilder::~HLBVHBuilder ( void  )
virtual

Definition at line 52 of file HLBVHBuilder.cpp.

Member Function Documentation

void FW::HLBVHBuilder::build ( )
protected
void HLBVHBuilder::buildBottomLevel ( Buffer *  q_in,
Buffer *  q_out,
U32 &  nodeWritten,
U32 &  nodeCreated,
U32  bOfs,
U32  n_bits 
)
protected

Definition at line 319 of file HLBVHBuilder.cpp.

void HLBVHBuilder::buildHLBVH ( void  )
protected

Definition at line 590 of file HLBVHBuilder.cpp.

void HLBVHBuilder::buildLBVH ( void  )
protected

Definition at line 446 of file HLBVHBuilder.cpp.

void HLBVHBuilder::buildTopLevel ( Buffer *  ooq,
U32 &  nodeWritten,
U32 &  nodeCreated,
Buffer &  clusters 
)
protected

Definition at line 156 of file HLBVHBuilder.cpp.

void HLBVHBuilder::calcAABB ( U32  nodeWritten)
protected

Definition at line 403 of file HLBVHBuilder.cpp.

S32 FW::HLBVHBuilder::calcLeafs ( S32  n)
protected
void HLBVHBuilder::calcMortonAndSort ( Buffer &  triMorton,
Buffer &  triIdx 
)
protected

Definition at line 67 of file HLBVHBuilder.cpp.

F32 FW::HLBVHBuilder::calcSAHCPU ( S32  n)
protected
F32 HLBVHBuilder::calcSAHGPU ( )
protected

Definition at line 750 of file HLBVHBuilder.cpp.

void HLBVHBuilder::createClustersC ( Buffer &  triMorton,
S32  d,
Buffer &  clusters 
)
protected

Definition at line 98 of file HLBVHBuilder.cpp.

float FW::HLBVHBuilder::getCPUTime ( )
inline

Definition at line 40 of file HLBVHBuilder.hpp.

float FW::HLBVHBuilder::getGPUTime ( )
inline

Definition at line 41 of file HLBVHBuilder.hpp.

void HLBVHBuilder::getSizes ( F32 &  task,
F32 &  split,
F32 &  ads,
F32 &  tri,
F32 &  triIdx 
)

Definition at line 779 of file HLBVHBuilder.cpp.

void HLBVHBuilder::getStats ( U32 &  nodes,
U32 &  leaves,
U32 &  nodeTop 
)

Definition at line 58 of file HLBVHBuilder.cpp.

void HLBVHBuilder::initMemory ( Buffer &  q_in,
Buffer &  q_out,
int  leafSize = 1 
)
protected

Definition at line 770 of file HLBVHBuilder.cpp.

Member Data Documentation

HLBVHParams FW::HLBVHBuilder::m_params
protected

Definition at line 92 of file HLBVHBuilder.hpp.

Timer FW::HLBVHBuilder::m_progressTimer
protected

Definition at line 91 of file HLBVHBuilder.hpp.


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