Castor3D 0.14.0
Multiplatform 3D engine
|
#include <SceneCuller.hpp>
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 std::pair< uint32_t, uint32_t > | fillPipelinesIds (RenderNodesPass const &renderPass, castor::ArrayView< uint32_t > nodesPipelinesIds) const |
C3D_API void | registerNodePipeline (RenderNodesPass const &renderPass, uint32_t nodeId, uint32_t pipelineId) |
C3D_API PipelineBufferArray const & | getPassPipelineNodes (RenderNodesPass const &renderPass) const |
C3D_API uint32_t | getPipelineNodesIndex (RenderNodesPass const &renderPass, PipelineBaseHash const &hash, ashes::BufferBase const &buffer) const |
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) |
Scene & | getScene () const |
bool | hasCamera () const |
Camera const & | getCamera () const |
Camera & | getCamera () |
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 | |
Camera * | m_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< SubmeshRenderNode > | m_culledSubmeshes |
NodeArrayT< BillboardRenderNode > | m_culledBillboards |
std::map< RenderNodesPass const *, RenderPassBuffers > | m_renderPasses |
using castor3d::SceneCuller::DrawCommandsBuffer = ashes::BufferPtr< VkDrawIndirectCommand > |
using castor3d::SceneCuller::IndexedDrawCommandsBuffer = ashes::BufferPtr< VkDrawIndexedIndirectCommand > |
using castor3d::SceneCuller::NodeArrayT = std::vector< CulledNodeT< NodeT > > |
using castor3d::SceneCuller::PipelineBufferArray = std::vector< PipelineBuffer > |
using castor3d::SceneCuller::PipelineNodesBuffer = ashes::BufferPtr< PipelineNodes > |
using castor3d::SceneCuller::SidedNodeArrayT = std::vector< SidedNodeT< NodeT > > |
using castor3d::SceneCuller::SidedNodeBufferMapT = std::map< ashes::BufferBase const *, SidedNodeArrayT< NodeT > > |
using castor3d::SceneCuller::SidedNodePipelineMapT = std::map< PipelineBaseHash, SidedNodeBufferMapT< NodeT > > |
using castor3d::SceneCuller::SidedNodeT = std::pair< CulledNodeT< NodeT >, bool > |
using castor3d::SceneCuller::SidedObjectNodeBufferMapT = std::map< ashes::BufferBase const *, SidedObjectNodePassMapT< NodeT > > |
using castor3d::SceneCuller::SidedObjectNodeMapT = std::map< NodeObjectT< NodeT > const *, SidedNodeArrayT< NodeT > > |
using castor3d::SceneCuller::SidedObjectNodePassMapT = std::map< Pass const *, SidedObjectNodeMapT< NodeT > > |
using castor3d::SceneCuller::SidedObjectNodePipelineMapT = std::map< PipelineBaseHash, SidedObjectNodeBufferMapT< NodeT > > |
|
virtual |
|
inline |
Références m_anyChanged.
|
inline |
Références m_culledChanged.
C3D_API std::pair< uint32_t, uint32_t > castor3d::SceneCuller::fillPipelinesIds | ( | RenderNodesPass const & | renderPass, |
castor::ArrayView< uint32_t > | nodesPipelinesIds | ||
) | const |
|
inline |
Références m_renderPasses.
|
inline |
Références m_renderPasses.
|
inline |
|
inline |
|
inline |
Références m_renderPasses.
|
inline |
Références m_renderPasses.
C3D_API PipelineBufferArray const & castor3d::SceneCuller::getPassPipelineNodes | ( | RenderNodesPass const & | renderPass | ) | const |
C3D_API uint32_t castor3d::SceneCuller::getPipelineNodesIndex | ( | RenderNodesPass const & | renderPass, |
BillboardBase const & | billboard, | ||
Pass const & | pass, | ||
ashes::BufferBase const & | buffer, | ||
bool | isFrontCulled | ||
) | const |
C3D_API uint32_t castor3d::SceneCuller::getPipelineNodesIndex | ( | RenderNodesPass const & | renderPass, |
PipelineBaseHash const & | hash, | ||
ashes::BufferBase const & | buffer | ||
) | const |
C3D_API uint32_t castor3d::SceneCuller::getPipelineNodesIndex | ( | RenderNodesPass const & | renderPass, |
Submesh const & | submesh, | ||
Pass const & | pass, | ||
ashes::BufferBase const & | buffer, | ||
bool | isFrontCulled | ||
) | const |
|
inline |
name Accesseurs.
|
inline |
Références m_renderPasses.
|
inline |
Références m_renderPasses.
|
inline |
Références m_renderPasses.
|
inline |
|
inline |
Références m_renderPasses.
C3D_API void castor3d::SceneCuller::registerNodePipeline | ( | RenderNodesPass const & | renderPass, |
uint32_t | nodeId, | ||
uint32_t | pipelineId | ||
) |
C3D_API void castor3d::SceneCuller::registerRenderPass | ( | RenderNodesPass const & | renderPass | ) |
C3D_API void castor3d::SceneCuller::removeCulled | ( | BillboardRenderNode const & | node | ) |
C3D_API void castor3d::SceneCuller::removeCulled | ( | SubmeshRenderNode const & | node | ) |
C3D_API void castor3d::SceneCuller::unregisterRenderPass | ( | RenderNodesPass const & | renderPass | ) |
C3D_API void castor3d::SceneCuller::update | ( | CpuUpdater & | updater | ) |
|
protected |
Référencé par areAnyChanged().
|
protected |
Référencé par getCamera(), et hasCamera().
|
protected |
|
protected |
Référencé par areCulledChanged().
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
mutable |