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

Cuda BVH class. More...

#include <CudaBVH.hpp>

Inherits FW::CudaAS.

Inherited by FW::HLBVHBuilder.

Public Types

enum  { Align = 4096 }
 

Public Member Functions

 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...
 

Public Attributes

RayStatsm_stats
 

Detailed Description

Cuda BVH class.

Graphic card friendly version of the BVH acceleration structure.

Definition at line 93 of file CudaBVH.hpp.

Member Enumeration Documentation

anonymous enum
Enumerator
Align 

Definition at line 96 of file CudaBVH.hpp.

Constructor & Destructor Documentation

CudaBVH::CudaBVH ( const BVH bvh,
BVHLayout  layout 
)
explicit

Constructor.

Parameters
[in]bvhExisting BVH that will be converted.
[in]layoutLayout of buffers.

Definition at line 49 of file CudaBVH.cpp.

FW::CudaBVH::CudaBVH ( BVHLayout  layout)
inlineexplicit

Constructor.

Parameters
[in]layoutLayout of buffers.

Definition at line 113 of file CudaBVH.hpp.

FW::CudaBVH::CudaBVH ( CudaBVH other)
inline

Copy constructor.

Parameters
[in]otherExisting Cuda BVH to be copied.

Definition at line 119 of file CudaBVH.hpp.

CudaBVH::CudaBVH ( InputStream in)
explicit

Constructor. Reads Cuda BVH from a file.

Parameters
[in]inInput stream to read the Cuda BVH from.

Definition at line 74 of file CudaBVH.cpp.

CudaBVH::~CudaBVH ( void  )

Destructor.

Definition at line 81 of file CudaBVH.cpp.

Member Function Documentation

void CudaBVH::findVisibleTriangles ( RayBuffer rays,
S32 references,
S32  offset 
)

Definition at line 94 of file CudaBVH.cpp.

BVHLayout FW::CudaBVH::getLayout ( void  ) const
inlinevirtual
Returns
Layout of buffers.

Implements FW::CudaAS.

Definition at line 135 of file CudaBVH.hpp.

void CudaBVH::getNode ( S32  node,
SplitInfo splitInfo,
AABB child0,
AABB child1,
S32 child0Addr,
S32 child1Addr 
)

Definition at line 323 of file CudaBVH.cpp.

Buffer& FW::CudaBVH::getNodeBuffer ( void  )
inlinevirtual
Returns
Node buffer.

Implements FW::CudaAS.

Definition at line 140 of file CudaBVH.hpp.

Vec2i CudaBVH::getNodeSubArray ( int  idx) const

Returns node subarray.

AOS: idx ignored, returns entire buffer; SOA: 0 <= idx < 4, returns one subarray.

Returns
Node subarray.

Definition at line 380 of file CudaBVH.cpp.

Scene* FW::CudaBVH::getScene ( )
inline

Definition at line 189 of file CudaBVH.hpp.

void CudaBVH::getTriangleIndices ( S32  node,
Array< S32 > &  indices 
)

Definition at line 341 of file CudaBVH.cpp.

Buffer& FW::CudaBVH::getTriIndexBuffer ( void  )
inlinevirtual
Returns
Triangle index buffer.

Implements FW::CudaAS.

Definition at line 150 of file CudaBVH.hpp.

Buffer& FW::CudaBVH::getTriWoopBuffer ( void  )
inlinevirtual
Returns
Woop triangle buffer.

Implements FW::CudaAS.

Definition at line 145 of file CudaBVH.hpp.

Vec2i CudaBVH::getTriWoopSubArray ( int  idx) const

Returns woop triangle subarray.

AOS: idx ignored, returns entire buffer; SOA: 0 <= idx < 4, returns one subarray.

Returns
Woop triangle subarray.

Definition at line 392 of file CudaBVH.cpp.

bool FW::CudaBVH::isLeaf ( S32  node)
inline

Definition at line 185 of file CudaBVH.hpp.

CudaBVH & CudaBVH::operator= ( CudaBVH other)

Assignment operator.

Parameters
[in]otherCuda BVH to assign.
Returns
Result of the assignment.

Definition at line 404 of file CudaBVH.cpp.

void CudaBVH::serialize ( OutputStream out)
virtual

Writes Cuda BVH to the output stream.

Parameters
[in]Targetto write to.

Implements FW::CudaAS.

Definition at line 87 of file CudaBVH.cpp.

void FW::CudaBVH::setTraceParams ( Platform platform,
Scene scene 
)
inline

Definition at line 179 of file CudaBVH.hpp.

void CudaBVH::trace ( RayBuffer rays,
Buffer visibility,
bool  twoTrees,
RayStats stats = NULL 
)

Definition at line 178 of file CudaBVH.cpp.

void CudaBVH::trace ( RayBuffer rays,
Buffer visibility,
Array< AABB > &  emptyBVH,
RayStats stats = NULL 
)

Definition at line 273 of file CudaBVH.cpp.

Member Data Documentation

RayStats* FW::CudaBVH::m_stats

Definition at line 225 of file CudaBVH.hpp.


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