![]() |
Castor3D 0.12.0
Multiplatform 3D engine
|
#include <SceneCuller.hpp>


Classes | |
| struct | RenderPassBuffers |
Public Types | |
| template<typename NodeT > | |
| using | NodeArrayT = std::vector< NodeT const * > |
| template<typename NodeT > | |
| using | SidedNodeArrayT = std::vector< std::pair< NodeT const *, bool > > |
| template<typename NodeT > | |
| using | SidedNodeBufferMapT = std::map< ashes::BufferBase const *, SidedNodeArrayT< NodeT > > |
| template<typename NodeT > | |
| using | SidedNodePipelineMapT = std::map< uint64_t, 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< uint64_t, SidedObjectNodeBufferMapT< NodeT > > |
| using | IndexedDrawCommandsBuffer = ashes::BufferPtr< VkDrawIndexedIndirectCommand > |
| using | DrawCommandsBuffer = ashes::BufferPtr< VkDrawIndirectCommand > |
| using | PipelineNodesBuffer = ashes::BufferPtr< PipelineNodes > |
| using | PipelineBufferArray = std::vector< PipelineBuffer > |
Public Member Functions | |
| C3D_API | SceneCuller (Scene &scene, Camera *camera) |
| virtual C3D_API | ~SceneCuller ()=default |
| C3D_API void | registerRenderPass (RenderNodesPass const &renderPass) |
| C3D_API void | unregisterRenderPass (RenderNodesPass const &renderPass) |
| C3D_API void | compute () |
| 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 |
| float | getMinCastersZ () |
| Scene & | getScene () const |
| bool | hasCamera () const |
| Camera const & | getCamera () const |
| Camera & | getCamera () |
| bool | areAllChanged () 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 |
Public Attributes | |
| SceneCullerSignal | onCompute |
Protected Attributes | |
| Camera * | m_camera |
| uint32_t | m_index |
| bool | m_allChanged { true } |
| bool | m_culledChanged { true } |
| bool | m_sceneDirty { true } |
| bool | m_cameraDirty { true } |
| float | m_minCullersZ { 0.0f } |
| NodeArrayT< SubmeshRenderNode > | m_culledSubmeshes |
| NodeArrayT< BillboardRenderNode > | m_culledBillboards |
| std::map< RenderNodesPass const *, RenderPassBuffers > | m_renderPasses |
| OnSceneChangedConnection | m_sceneChanged |
| OnCameraChangedConnection | m_cameraChanged |
| using castor3d::SceneCuller::DrawCommandsBuffer = ashes::BufferPtr< VkDrawIndirectCommand > |
| using castor3d::SceneCuller::IndexedDrawCommandsBuffer = ashes::BufferPtr< VkDrawIndexedIndirectCommand > |
| using castor3d::SceneCuller::NodeArrayT = std::vector< NodeT const * > |
| using castor3d::SceneCuller::PipelineBufferArray = std::vector< PipelineBuffer > |
| using castor3d::SceneCuller::PipelineNodesBuffer = ashes::BufferPtr< PipelineNodes > |
| using castor3d::SceneCuller::SidedNodeArrayT = std::vector< std::pair< NodeT const *, bool > > |
| using castor3d::SceneCuller::SidedNodeBufferMapT = std::map< ashes::BufferBase const *, SidedNodeArrayT< NodeT > > |
| using castor3d::SceneCuller::SidedNodePipelineMapT = std::map< uint64_t, SidedNodeBufferMapT< NodeT > > |
| 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< uint64_t, SidedObjectNodeBufferMapT< NodeT > > |
|
virtualdefault |
|
inline |
References m_allChanged.
|
inline |
References m_culledChanged.
| C3D_API void castor3d::SceneCuller::compute | ( | ) |
|
inline |
References m_renderPasses.
|
inline |
References m_renderPasses.
|
inline |
|
inline |
|
inline |
References m_renderPasses.
|
inline |
References m_minCullersZ.
|
inline |
References m_renderPasses.
| 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, |
| Submesh const & | submesh, | ||
| Pass const & | pass, | ||
| ashes::BufferBase const & | buffer, | ||
| bool | isFrontCulled | ||
| ) | const |
|
inline |
|
inline |
References m_renderPasses.
|
inline |
References m_renderPasses.
|
inline |
References m_renderPasses.
|
inline |
|
inline |
References m_renderPasses.
| C3D_API void castor3d::SceneCuller::registerRenderPass | ( | RenderNodesPass const & | renderPass | ) |
| C3D_API void castor3d::SceneCuller::unregisterRenderPass | ( | RenderNodesPass const & | renderPass | ) |
|
protected |
Referenced by areAllChanged().
|
protected |
Referenced by getCamera(), and hasCamera().
|
protected |
|
protected |
|
protected |
|
protected |
Referenced by areCulledChanged().
|
protected |
|
protected |
|
protected |
Referenced by getMinCastersZ().
|
protected |
|
protected |
|
protected |
|
mutable |