Castor3D 0.16.0
Multiplatform 3D engine
Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
castor3d::FrustumClusters Class Reference

#include <FrustumClusters.hpp>

Collaboration diagram for castor3d::FrustumClusters:
Collaboration graph
[legend]

Public Member Functions

C3D_API FrustumClusters (FrustumClusters const &)=delete
 
C3D_API FrustumClusters (FrustumClusters &&) noexcept=delete
 
C3D_API FrustumClustersoperator= (FrustumClusters const &)=delete
 
C3D_API FrustumClustersoperator= (FrustumClusters &&) noexcept=delete
 
C3D_API ~FrustumClusters () noexcept=default
 
C3D_API FrustumClusters (RenderDevice const &device, Camera const &camera, ClustersConfig const &config)
 
C3D_API void update (CpuUpdater &updater)
 CPU side update.
 
C3D_API crg::FramePass const & createFramePasses (crg::FramePassGroup &graph, crg::FramePass const *previousPass, RenderTechnique &technique, CameraUbo const &cameraUbo, RenderNodesPass *&nodesPass)
 Registers the clusters related frame passes.
 
castor::Point3ui const & getDimensions () const noexcept
 
bool const & needsClustersUpdate () const noexcept
 
bool const & needsLightsUpdate () const noexcept
 
auto & getClustersUbo () const noexcept
 
auto & getClustersAABBBuffer () const noexcept
 
auto & getPointLightClusterGridBuffer () const noexcept
 
auto & getSpotLightClusterGridBuffer () const noexcept
 
auto & getPointLightClusterIndexBuffer () const noexcept
 
auto & getSpotLightClusterIndexBuffer () const noexcept
 
auto & getAllLightsAABBBuffer () const noexcept
 
auto & getReducedLightsAABBBuffer () const noexcept
 
auto & getPointLightBVHBuffer () const noexcept
 
auto & getSpotLightBVHBuffer () const noexcept
 
ashes::BufferBase & getPointLightIndicesBuffer (uint32_t index) const noexcept
 
ashes::BufferBase & getSpotLightIndicesBuffer (uint32_t index) const noexcept
 
ashes::BufferBase & getPointLightMortonCodesBuffer (uint32_t index) const noexcept
 
ashes::BufferBase & getSpotLightMortonCodesBuffer (uint32_t index) const noexcept
 
ashes::BufferBase & getInputPointLightIndicesBuffer () const noexcept
 
ashes::BufferBase & getInputSpotLightIndicesBuffer () const noexcept
 
castor::Vector< ashes::BufferBase const * > getOutputPointLightIndicesBuffers () const noexcept
 
castor::Vector< ashes::BufferBase const * > getOutputSpotLightIndicesBuffers () const noexcept
 
castor::Vector< ashes::BufferBase const * > getInputPointLightIndicesBuffers () const noexcept
 
castor::Vector< ashes::BufferBase const * > getInputSpotLightIndicesBuffers () const noexcept
 
ashes::BufferBase & getOutputPointLightIndicesBuffer () const noexcept
 
ashes::BufferBase & getOutputSpotLightIndicesBuffer () const noexcept
 
ashes::BufferBase & getInputPointLightMortonCodesBuffer () const noexcept
 
ashes::BufferBase & getInputSpotLightMortonCodesBuffer () const noexcept
 
castor::Vector< ashes::BufferBase const * > getOutputPointLightMortonCodesBuffers () const noexcept
 
castor::Vector< ashes::BufferBase const * > getOutputSpotLightMortonCodesBuffers () const noexcept
 
castor::Vector< ashes::BufferBase const * > getInputPointLightMortonCodesBuffers () const noexcept
 
castor::Vector< ashes::BufferBase const * > getInputSpotLightMortonCodesBuffers () const noexcept
 
ashes::BufferBase & getOutputPointLightMortonCodesBuffer () const noexcept
 
ashes::BufferBase & getOutputSpotLightMortonCodesBuffer () const noexcept
 
ashes::BufferBase & getMergePathPartitionsBuffer () const noexcept
 
ashes::BufferBase & getClusterFlagsBuffer () const noexcept
 
ashes::BufferBase & getUniqueClustersBuffer () const noexcept
 
ashes::BufferBase & getClustersIndirectBuffer () const noexcept
 
auto & getCamera () const noexcept
 
auto & getConfig () const noexcept
 

Static Public Member Functions

static C3D_API uint32_t getNumLevelNodes (uint32_t level)
 
static C3D_API uint32_t getNumLevels (uint32_t numLeaves)
 
static C3D_API uint32_t getNumNodes (uint32_t numLeaves)
 

Public Attributes

OnClustersBuffersChanged onClusterBuffersChanged
 

Constructor & Destructor Documentation

◆ FrustumClusters() [1/3]

C3D_API castor3d::FrustumClusters::FrustumClusters ( FrustumClusters const & )
delete

◆ FrustumClusters() [2/3]

C3D_API castor3d::FrustumClusters::FrustumClusters ( FrustumClusters && )
deletenoexcept

◆ ~FrustumClusters()

C3D_API castor3d::FrustumClusters::~FrustumClusters ( )
defaultnoexcept

◆ FrustumClusters() [3/3]

C3D_API castor3d::FrustumClusters::FrustumClusters ( RenderDevice const & device,
Camera const & camera,
ClustersConfig const & config )

Member Function Documentation

◆ createFramePasses()

C3D_API crg::FramePass const & castor3d::FrustumClusters::createFramePasses ( crg::FramePassGroup & graph,
crg::FramePass const * previousPass,
RenderTechnique & technique,
CameraUbo const & cameraUbo,
RenderNodesPass *& nodesPass )

Registers the clusters related frame passes.

◆ getAllLightsAABBBuffer()

auto & castor3d::FrustumClusters::getAllLightsAABBBuffer ( ) const
inlinenoexcept

◆ getCamera()

auto & castor3d::FrustumClusters::getCamera ( ) const
inlinenoexcept

◆ getClusterFlagsBuffer()

ashes::BufferBase & castor3d::FrustumClusters::getClusterFlagsBuffer ( ) const
inlinenoexcept

◆ getClustersAABBBuffer()

auto & castor3d::FrustumClusters::getClustersAABBBuffer ( ) const
inlinenoexcept

References CU_Require.

◆ getClustersIndirectBuffer()

ashes::BufferBase & castor3d::FrustumClusters::getClustersIndirectBuffer ( ) const
inlinenoexcept

◆ getClustersUbo()

auto & castor3d::FrustumClusters::getClustersUbo ( ) const
inlinenoexcept

◆ getConfig()

auto & castor3d::FrustumClusters::getConfig ( ) const
inlinenoexcept

◆ getDimensions()

castor::Point3ui const & castor3d::FrustumClusters::getDimensions ( ) const
inlinenoexcept

◆ getInputPointLightIndicesBuffer()

ashes::BufferBase & castor3d::FrustumClusters::getInputPointLightIndicesBuffer ( ) const
inlinenoexcept

References getPointLightIndicesBuffer().

Here is the call graph for this function:

◆ getInputPointLightIndicesBuffers()

castor::Vector< ashes::BufferBase const * > castor3d::FrustumClusters::getInputPointLightIndicesBuffers ( ) const
inlinenoexcept

References getPointLightIndicesBuffer().

Here is the call graph for this function:

◆ getInputPointLightMortonCodesBuffer()

ashes::BufferBase & castor3d::FrustumClusters::getInputPointLightMortonCodesBuffer ( ) const
inlinenoexcept

References getPointLightMortonCodesBuffer().

Here is the call graph for this function:

◆ getInputPointLightMortonCodesBuffers()

castor::Vector< ashes::BufferBase const * > castor3d::FrustumClusters::getInputPointLightMortonCodesBuffers ( ) const
inlinenoexcept

References getPointLightMortonCodesBuffer().

Here is the call graph for this function:

◆ getInputSpotLightIndicesBuffer()

ashes::BufferBase & castor3d::FrustumClusters::getInputSpotLightIndicesBuffer ( ) const
inlinenoexcept

References getSpotLightIndicesBuffer().

Here is the call graph for this function:

◆ getInputSpotLightIndicesBuffers()

castor::Vector< ashes::BufferBase const * > castor3d::FrustumClusters::getInputSpotLightIndicesBuffers ( ) const
inlinenoexcept

References getSpotLightIndicesBuffer().

Here is the call graph for this function:

◆ getInputSpotLightMortonCodesBuffer()

ashes::BufferBase & castor3d::FrustumClusters::getInputSpotLightMortonCodesBuffer ( ) const
inlinenoexcept

References getSpotLightMortonCodesBuffer().

Here is the call graph for this function:

◆ getInputSpotLightMortonCodesBuffers()

castor::Vector< ashes::BufferBase const * > castor3d::FrustumClusters::getInputSpotLightMortonCodesBuffers ( ) const
inlinenoexcept

References getSpotLightMortonCodesBuffer().

Here is the call graph for this function:

◆ getMergePathPartitionsBuffer()

ashes::BufferBase & castor3d::FrustumClusters::getMergePathPartitionsBuffer ( ) const
inlinenoexcept

◆ getNumLevelNodes()

static C3D_API uint32_t castor3d::FrustumClusters::getNumLevelNodes ( uint32_t level)
static
Parameters
[in]levelThe BVH level.
Returns
The number of nodes for given BVH level.

◆ getNumLevels()

static C3D_API uint32_t castor3d::FrustumClusters::getNumLevels ( uint32_t numLeaves)
static
Parameters
[in]numLeavesThe number of leaf nodes.
Returns
The number of levels needed for a BVH that consists of a number of leaf nodes.

◆ getNumNodes()

static C3D_API uint32_t castor3d::FrustumClusters::getNumNodes ( uint32_t numLeaves)
static
Parameters
[in]numLeavesThe number of leaf nodes.
Returns
The number of (child) nodes needed to represent a BVH that consists of a number of leaf nodes.

◆ getOutputPointLightIndicesBuffer()

ashes::BufferBase & castor3d::FrustumClusters::getOutputPointLightIndicesBuffer ( ) const
inlinenoexcept

References getPointLightIndicesBuffer().

Here is the call graph for this function:

◆ getOutputPointLightIndicesBuffers()

castor::Vector< ashes::BufferBase const * > castor3d::FrustumClusters::getOutputPointLightIndicesBuffers ( ) const
inlinenoexcept

References getPointLightIndicesBuffer().

Here is the call graph for this function:

◆ getOutputPointLightMortonCodesBuffer()

ashes::BufferBase & castor3d::FrustumClusters::getOutputPointLightMortonCodesBuffer ( ) const
inlinenoexcept

References getPointLightMortonCodesBuffer().

Here is the call graph for this function:

◆ getOutputPointLightMortonCodesBuffers()

castor::Vector< ashes::BufferBase const * > castor3d::FrustumClusters::getOutputPointLightMortonCodesBuffers ( ) const
inlinenoexcept

References getPointLightMortonCodesBuffer().

Here is the call graph for this function:

◆ getOutputSpotLightIndicesBuffer()

ashes::BufferBase & castor3d::FrustumClusters::getOutputSpotLightIndicesBuffer ( ) const
inlinenoexcept

References getSpotLightIndicesBuffer().

Here is the call graph for this function:

◆ getOutputSpotLightIndicesBuffers()

castor::Vector< ashes::BufferBase const * > castor3d::FrustumClusters::getOutputSpotLightIndicesBuffers ( ) const
inlinenoexcept

References getSpotLightIndicesBuffer().

Here is the call graph for this function:

◆ getOutputSpotLightMortonCodesBuffer()

ashes::BufferBase & castor3d::FrustumClusters::getOutputSpotLightMortonCodesBuffer ( ) const
inlinenoexcept

References getSpotLightMortonCodesBuffer().

Here is the call graph for this function:

◆ getOutputSpotLightMortonCodesBuffers()

castor::Vector< ashes::BufferBase const * > castor3d::FrustumClusters::getOutputSpotLightMortonCodesBuffers ( ) const
inlinenoexcept

References getSpotLightMortonCodesBuffer().

Here is the call graph for this function:

◆ getPointLightBVHBuffer()

auto & castor3d::FrustumClusters::getPointLightBVHBuffer ( ) const
inlinenoexcept

◆ getPointLightClusterGridBuffer()

auto & castor3d::FrustumClusters::getPointLightClusterGridBuffer ( ) const
inlinenoexcept

References CU_Require.

◆ getPointLightClusterIndexBuffer()

auto & castor3d::FrustumClusters::getPointLightClusterIndexBuffer ( ) const
inlinenoexcept

References CU_Require.

◆ getPointLightIndicesBuffer()

ashes::BufferBase & castor3d::FrustumClusters::getPointLightIndicesBuffer ( uint32_t index) const
inlinenoexcept

◆ getPointLightMortonCodesBuffer()

ashes::BufferBase & castor3d::FrustumClusters::getPointLightMortonCodesBuffer ( uint32_t index) const
inlinenoexcept

◆ getReducedLightsAABBBuffer()

auto & castor3d::FrustumClusters::getReducedLightsAABBBuffer ( ) const
inlinenoexcept

◆ getSpotLightBVHBuffer()

auto & castor3d::FrustumClusters::getSpotLightBVHBuffer ( ) const
inlinenoexcept

◆ getSpotLightClusterGridBuffer()

auto & castor3d::FrustumClusters::getSpotLightClusterGridBuffer ( ) const
inlinenoexcept

References CU_Require.

◆ getSpotLightClusterIndexBuffer()

auto & castor3d::FrustumClusters::getSpotLightClusterIndexBuffer ( ) const
inlinenoexcept

References CU_Require.

◆ getSpotLightIndicesBuffer()

ashes::BufferBase & castor3d::FrustumClusters::getSpotLightIndicesBuffer ( uint32_t index) const
inlinenoexcept

◆ getSpotLightMortonCodesBuffer()

ashes::BufferBase & castor3d::FrustumClusters::getSpotLightMortonCodesBuffer ( uint32_t index) const
inlinenoexcept

◆ getUniqueClustersBuffer()

ashes::BufferBase & castor3d::FrustumClusters::getUniqueClustersBuffer ( ) const
inlinenoexcept

◆ needsClustersUpdate()

bool const & castor3d::FrustumClusters::needsClustersUpdate ( ) const
inlinenoexcept

◆ needsLightsUpdate()

bool const & castor3d::FrustumClusters::needsLightsUpdate ( ) const
inlinenoexcept

◆ operator=() [1/2]

C3D_API FrustumClusters & castor3d::FrustumClusters::operator= ( FrustumClusters && )
deletenoexcept

◆ operator=() [2/2]

C3D_API FrustumClusters & castor3d::FrustumClusters::operator= ( FrustumClusters const & )
delete

◆ update()

C3D_API void castor3d::FrustumClusters::update ( CpuUpdater & updater)

CPU side update.

Parameters
[in,out]updaterThe update data.

Member Data Documentation

◆ onClusterBuffersChanged

OnClustersBuffersChanged castor3d::FrustumClusters::onClusterBuffersChanged

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