Castor3D 0.13.0
Multiplatform 3D engine
Classes | Types publics | Fonctions membres publiques | Attributs publics | Attributs protégés | Liste de tous les membres
Référence de la classe castor3d::SceneCullerabstract

#include <SceneCuller.hpp>

Graphe d'héritage de castor3d::SceneCuller:
Inheritance graph
[légende]
Graphe de collaboration de castor3d::SceneCuller:
Collaboration graph
[légende]

Classes

struct  CulledNodeT
 
struct  RenderPassBuffers
 

Types publics

template<typename NodeT >
using NodeArrayT = std::vector< CulledNodeT< NodeT > >
 
template<typename NodeT >
using SidedNodeT = std::pair< CulledNodeT< NodeT >, bool >
 
template<typename NodeT >
using SidedNodeArrayT = std::vector< SidedNodeT< NodeT > >
 
template<typename NodeT >
using SidedNodeBufferMapT = std::map< ashes::BufferBase const *, SidedNodeArrayT< NodeT > >
 
template<typename NodeT >
using SidedNodePipelineMapT = std::map< PipelineBaseHash, SidedNodeBufferMapT< NodeT > >
 
template<typename NodeT >
using SidedObjectNodeMapT = std::map< NodeObjectT< NodeT > const *, SidedNodeArrayT< NodeT > >
 
template<typename NodeT >
using SidedObjectNodePassMapT = std::map< Pass const *, SidedObjectNodeMapT< NodeT > >
 
template<typename NodeT >
using SidedObjectNodeBufferMapT = std::map< ashes::BufferBase const *, SidedObjectNodePassMapT< NodeT > >
 
template<typename NodeT >
using SidedObjectNodePipelineMapT = std::map< PipelineBaseHash, SidedObjectNodeBufferMapT< NodeT > >
 
using IndexedDrawCommandsBuffer = ashes::BufferPtr< VkDrawIndexedIndirectCommand >
 
using DrawCommandsBuffer = ashes::BufferPtr< VkDrawIndirectCommand >
 
using PipelineNodesBuffer = ashes::BufferPtr< PipelineNodes >
 
using PipelineBufferArray = std::vector< PipelineBuffer >
 

Fonctions membres publiques

C3D_API SceneCuller (Scene &scene, Camera *camera)
 
virtual C3D_API ~SceneCuller ()
 
C3D_API void registerRenderPass (RenderNodesPass const &renderPass)
 
C3D_API void unregisterRenderPass (RenderNodesPass const &renderPass)
 
C3D_API void update (CpuUpdater &updater)
 
C3D_API uint32_t getPipelineNodesIndex (RenderNodesPass const &renderPass, Submesh const &submesh, Pass const &pass, ashes::BufferBase const &buffer, bool isFrontCulled) const
 
C3D_API uint32_t getPipelineNodesIndex (RenderNodesPass const &renderPass, BillboardBase const &billboard, Pass const &pass, ashes::BufferBase const &buffer, bool isFrontCulled) const
 
C3D_API void removeCulled (SubmeshRenderNode const &node)
 
C3D_API void removeCulled (BillboardRenderNode const &node)
 
ScenegetScene () const
 
bool hasCamera () const
 
Camera const & getCamera () const
 
CameragetCamera ()
 
bool areAnyChanged () const
 
bool areCulledChanged () const
 
bool hasCulledNodes (RenderNodesPass const &renderPass) const
 
ashes::Buffer< VkDrawIndexedIndirectCommand > const & getSubmeshIdxCommands (RenderNodesPass const &renderPass) const
 
ashes::Buffer< VkDrawIndirectCommand > const & getSubmeshNIdxCommands (RenderNodesPass const &renderPass) const
 
ashes::Buffer< VkDrawIndirectCommand > const & getBillboardCommands (RenderNodesPass const &renderPass) const
 
ashes::Buffer< PipelineNodes > const & getNodesIds (RenderNodesPass const &renderPass) const
 
SidedNodePipelineMapT< SubmeshRenderNode > const & getSubmeshNodes (RenderNodesPass const &renderPass) const
 
SidedObjectNodePipelineMapT< SubmeshRenderNode > const & getInstancedSubmeshNodes (RenderNodesPass const &renderPass) const
 
SidedNodePipelineMapT< BillboardRenderNode > const & getBillboardNodes (RenderNodesPass const &renderPass) const
 

Attributs publics

SceneCullerSignal onCompute
 

Attributs protégés

Cameram_camera
 
uint32_t m_index
 
bool m_first { true }
 
bool m_anyChanged { true }
 
bool m_culledChanged { true }
 
FramePassTimerUPtr m_timer
 
FramePassTimerUPtr m_timerDirty
 
FramePassTimerUPtr m_timerCompute
 
FramePassTimerUPtr m_timerIndirect
 
NodeArrayT< SubmeshRenderNodem_culledSubmeshes
 
NodeArrayT< BillboardRenderNodem_culledBillboards
 
std::map< RenderNodesPass const *, RenderPassBuffersm_renderPasses
 

Documentation des définitions de type membres

◆ DrawCommandsBuffer

using castor3d::SceneCuller::DrawCommandsBuffer = ashes::BufferPtr< VkDrawIndirectCommand >

◆ IndexedDrawCommandsBuffer

using castor3d::SceneCuller::IndexedDrawCommandsBuffer = ashes::BufferPtr< VkDrawIndexedIndirectCommand >

◆ NodeArrayT

template<typename NodeT >
using castor3d::SceneCuller::NodeArrayT = std::vector< CulledNodeT< NodeT > >

◆ PipelineBufferArray

◆ PipelineNodesBuffer

◆ SidedNodeArrayT

template<typename NodeT >
using castor3d::SceneCuller::SidedNodeArrayT = std::vector< SidedNodeT< NodeT > >

◆ SidedNodeBufferMapT

template<typename NodeT >
using castor3d::SceneCuller::SidedNodeBufferMapT = std::map< ashes::BufferBase const *, SidedNodeArrayT< NodeT > >

◆ SidedNodePipelineMapT

template<typename NodeT >
using castor3d::SceneCuller::SidedNodePipelineMapT = std::map< PipelineBaseHash, SidedNodeBufferMapT< NodeT > >

◆ SidedNodeT

template<typename NodeT >
using castor3d::SceneCuller::SidedNodeT = std::pair< CulledNodeT< NodeT >, bool >

◆ SidedObjectNodeBufferMapT

template<typename NodeT >
using castor3d::SceneCuller::SidedObjectNodeBufferMapT = std::map< ashes::BufferBase const *, SidedObjectNodePassMapT< NodeT > >

◆ SidedObjectNodeMapT

template<typename NodeT >
using castor3d::SceneCuller::SidedObjectNodeMapT = std::map< NodeObjectT< NodeT > const *, SidedNodeArrayT< NodeT > >

◆ SidedObjectNodePassMapT

template<typename NodeT >
using castor3d::SceneCuller::SidedObjectNodePassMapT = std::map< Pass const *, SidedObjectNodeMapT< NodeT > >

◆ SidedObjectNodePipelineMapT

Documentation des constructeurs et destructeur

◆ SceneCuller()

C3D_API castor3d::SceneCuller::SceneCuller ( Scene scene,
Camera camera 
)

◆ ~SceneCuller()

virtual C3D_API castor3d::SceneCuller::~SceneCuller ( )
virtual

Documentation des fonctions membres

◆ areAnyChanged()

bool castor3d::SceneCuller::areAnyChanged ( ) const
inline

Références m_anyChanged.

◆ areCulledChanged()

bool castor3d::SceneCuller::areCulledChanged ( ) const
inline

Références m_culledChanged.

◆ getBillboardCommands()

ashes::Buffer< VkDrawIndirectCommand > const & castor3d::SceneCuller::getBillboardCommands ( RenderNodesPass const &  renderPass) const
inline

Références m_renderPasses.

◆ getBillboardNodes()

SidedNodePipelineMapT< BillboardRenderNode > const & castor3d::SceneCuller::getBillboardNodes ( RenderNodesPass const &  renderPass) const
inline

Références m_renderPasses.

◆ getCamera() [1/2]

Camera & castor3d::SceneCuller::getCamera ( )
inline

Références hasCamera(), et m_camera.

Voici le graphe d'appel pour cette fonction :

◆ getCamera() [2/2]

Camera const & castor3d::SceneCuller::getCamera ( ) const
inline

Références hasCamera(), et m_camera.

Voici le graphe d'appel pour cette fonction :

◆ getInstancedSubmeshNodes()

SidedObjectNodePipelineMapT< SubmeshRenderNode > const & castor3d::SceneCuller::getInstancedSubmeshNodes ( RenderNodesPass const &  renderPass) const
inline

Références m_renderPasses.

◆ getNodesIds()

ashes::Buffer< PipelineNodes > const & castor3d::SceneCuller::getNodesIds ( RenderNodesPass const &  renderPass) const
inline

Références m_renderPasses.

◆ getPipelineNodesIndex() [1/2]

C3D_API uint32_t castor3d::SceneCuller::getPipelineNodesIndex ( RenderNodesPass const &  renderPass,
BillboardBase const &  billboard,
Pass const &  pass,
ashes::BufferBase const &  buffer,
bool  isFrontCulled 
) const

◆ getPipelineNodesIndex() [2/2]

C3D_API uint32_t castor3d::SceneCuller::getPipelineNodesIndex ( RenderNodesPass const &  renderPass,
Submesh const &  submesh,
Pass const &  pass,
ashes::BufferBase const &  buffer,
bool  isFrontCulled 
) const

◆ getScene()

Scene & castor3d::SceneCuller::getScene ( ) const
inline

name Accesseurs.

◆ getSubmeshIdxCommands()

ashes::Buffer< VkDrawIndexedIndirectCommand > const & castor3d::SceneCuller::getSubmeshIdxCommands ( RenderNodesPass const &  renderPass) const
inline

Références m_renderPasses.

◆ getSubmeshNIdxCommands()

ashes::Buffer< VkDrawIndirectCommand > const & castor3d::SceneCuller::getSubmeshNIdxCommands ( RenderNodesPass const &  renderPass) const
inline

Références m_renderPasses.

◆ getSubmeshNodes()

SidedNodePipelineMapT< SubmeshRenderNode > const & castor3d::SceneCuller::getSubmeshNodes ( RenderNodesPass const &  renderPass) const
inline

Références m_renderPasses.

◆ hasCamera()

bool castor3d::SceneCuller::hasCamera ( ) const
inline

Références m_camera.

Référencé par getCamera().

Voici le graphe des appelants de cette fonction :

◆ hasCulledNodes()

bool castor3d::SceneCuller::hasCulledNodes ( RenderNodesPass const &  renderPass) const
inline

Références m_renderPasses.

◆ registerRenderPass()

C3D_API void castor3d::SceneCuller::registerRenderPass ( RenderNodesPass const &  renderPass)

◆ removeCulled() [1/2]

C3D_API void castor3d::SceneCuller::removeCulled ( BillboardRenderNode const &  node)

◆ removeCulled() [2/2]

C3D_API void castor3d::SceneCuller::removeCulled ( SubmeshRenderNode const &  node)

◆ unregisterRenderPass()

C3D_API void castor3d::SceneCuller::unregisterRenderPass ( RenderNodesPass const &  renderPass)

◆ update()

C3D_API void castor3d::SceneCuller::update ( CpuUpdater updater)

Documentation des données membres

◆ m_anyChanged

bool castor3d::SceneCuller::m_anyChanged { true }
protected

Référencé par areAnyChanged().

◆ m_camera

Camera* castor3d::SceneCuller::m_camera
protected

Référencé par getCamera(), et hasCamera().

◆ m_culledBillboards

NodeArrayT< BillboardRenderNode > castor3d::SceneCuller::m_culledBillboards
protected

◆ m_culledChanged

bool castor3d::SceneCuller::m_culledChanged { true }
protected

Référencé par areCulledChanged().

◆ m_culledSubmeshes

NodeArrayT< SubmeshRenderNode > castor3d::SceneCuller::m_culledSubmeshes
protected

◆ m_first

bool castor3d::SceneCuller::m_first { true }
protected

◆ m_index

uint32_t castor3d::SceneCuller::m_index
protected

◆ m_renderPasses

std::map< RenderNodesPass const *, RenderPassBuffers > castor3d::SceneCuller::m_renderPasses
protected

◆ m_timer

FramePassTimerUPtr castor3d::SceneCuller::m_timer
protected

◆ m_timerCompute

FramePassTimerUPtr castor3d::SceneCuller::m_timerCompute
protected

◆ m_timerDirty

FramePassTimerUPtr castor3d::SceneCuller::m_timerDirty
protected

◆ m_timerIndirect

FramePassTimerUPtr castor3d::SceneCuller::m_timerIndirect
protected

◆ onCompute

SceneCullerSignal castor3d::SceneCuller::onCompute
mutable

La documentation de cette classe a été générée à partir du fichier suivant :