Jolt Physics
A multi core friendly Game Physics Engine
Loading...
Searching...
No Matches
TriangleSplitterBinning Class Reference

Binning splitter approach taken from: Realtime Ray Tracing on GPU with BVH-based Packet Traversal by Johannes Gunther et al. More...

#include <TriangleSplitterBinning.h>

Inheritance diagram for TriangleSplitterBinning:
TriangleSplitter NonCopyable

Public Member Functions

 TriangleSplitterBinning (const VertexList &inVertices, const IndexedTriangleList &inTriangles, uint inMinNumBins=8, uint inMaxNumBins=128, uint inNumTrianglesPerBin=6)
 Constructor. More...
 
virtual void GetStats (Stats &outStats) const override
 Get stats of splitter. More...
 
virtual bool Split (const Range &inTriangles, Range &outLeft, Range &outRight) override
 
- Public Member Functions inherited from TriangleSplitter
 TriangleSplitter (const VertexList &inVertices, const IndexedTriangleList &inTriangles)
 Constructor. More...
 
virtual ~TriangleSplitter ()=default
 Virtual destructor. More...
 
virtual void GetStats (Stats &outStats) const =0
 Get stats of splitter. More...
 
Range GetInitialRange () const
 Range of triangles to start with. More...
 
virtual bool Split (const Range &inTriangles, Range &outLeft, Range &outRight)=0
 
const VertexListGetVertices () const
 Get the list of vertices. More...
 
const IndexedTriangleGetTriangle (uint inIdx) const
 Get triangle by index. More...
 
- Public Member Functions inherited from NonCopyable
 NonCopyable ()=default
 
 NonCopyable (const NonCopyable &)=delete
 
void operator= (const NonCopyable &)=delete
 

Additional Inherited Members

- Protected Member Functions inherited from TriangleSplitter
bool SplitInternal (const Range &inTriangles, uint inDimension, float inSplit, Range &outLeft, Range &outRight)
 Helper function to split triangles based on dimension and split value. More...
 
- Protected Attributes inherited from TriangleSplitter
const VertexListmVertices
 Vertices of the indexed triangles. More...
 
const IndexedTriangleListmTriangles
 Unsorted triangles. More...
 
Array< Float3mCentroids
 Unsorted centroids of triangles. More...
 
Array< uintmSortedTriangleIdx
 Indices to sort triangles. More...
 

Detailed Description

Binning splitter approach taken from: Realtime Ray Tracing on GPU with BVH-based Packet Traversal by Johannes Gunther et al.

Constructor & Destructor Documentation

◆ TriangleSplitterBinning()

JPH_NAMESPACE_BEGIN TriangleSplitterBinning::TriangleSplitterBinning ( const VertexList inVertices,
const IndexedTriangleList inTriangles,
uint  inMinNumBins = 8,
uint  inMaxNumBins = 128,
uint  inNumTrianglesPerBin = 6 
)

Constructor.

Member Function Documentation

◆ GetStats()

virtual void TriangleSplitterBinning::GetStats ( Stats outStats) const
inlineoverridevirtual

Get stats of splitter.

Implements TriangleSplitter.

◆ Split()

bool TriangleSplitterBinning::Split ( const Range inTriangles,
Range outLeft,
Range outRight 
)
overridevirtual

Split triangles into two groups left and right, returns false if no split could be made

Parameters
inTrianglesThe range of triangles (in mSortedTriangleIdx) to process
outLeftOn return this will contain the ranges for the left subpart. mSortedTriangleIdx may have been shuffled.
outRightOn return this will contain the ranges for the right subpart. mSortedTriangleIdx may have been shuffled.
Returns
Returns true when a split was found

Implements TriangleSplitter.


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