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
 
BuffergetNodeBuffer (void)
 
BuffergetTriWoopBuffer (void)
 
BuffergetTriIndexBuffer (void)
 
Vec2i getNodeSubArray (int idx) const
 Returns node subarray. More...
 
Vec2i getTriWoopSubArray (int idx) const
 Returns woop triangle subarray. More...
 
CudaBVHoperator= (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)
 
ScenegetScene ()
 
- 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
RayStatsm_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: