Castor3D 0.12.0
Multiplatform 3D engine
Public Types | Public Member Functions | List of all members
castor3d::ObjectCacheT< Light, castor::String, LightCacheTraits > Class Reference

Light cache. More...

#include <LightCache.hpp>

Inheritance diagram for castor3d::ObjectCacheT< Light, castor::String, LightCacheTraits >:
Inheritance graph
[legend]
Collaboration diagram for castor3d::ObjectCacheT< Light, castor::String, LightCacheTraits >:
Collaboration graph
[legend]

Public Types

using ElementT = Light
 
using ElementKeyT = castor::String
 
using ElementCacheTraitsT = LightCacheTraits
 
using ElementObjectCacheT = ObjectCacheBaseT< ElementT, ElementKeyT, ElementCacheTraitsT >
 
using ElementPtrT = typename ElementObjectCacheT::ElementPtrT
 
using ElementContT = typename ElementObjectCacheT::ElementContT
 
using ElementInitialiserT = typename ElementObjectCacheT::ElementInitialiserT
 
using ElementCleanerT = typename ElementObjectCacheT::ElementCleanerT
 
using ElementMergerT = typename ElementObjectCacheT::ElementMergerT
 
using ElementAttacherT = typename ElementObjectCacheT::ElementAttacherT
 
using ElementDetacherT = typename ElementObjectCacheT::ElementDetacherT
 
- Public Types inherited from castor3d::ObjectCacheBaseT< Light, castor::String, LightCacheTraits >
using OnChangedFunction = std::function< void() >
 
using OnChanged = castor::SignalT< OnChangedFunction >
 

Public Member Functions

C3D_API ObjectCacheT (Scene &scene, SceneNodeSPtr rootNode, SceneNodeSPtr rootCameraNode, SceneNodeSPtr rootObjectNode)
 Constructor. More...
 
C3D_API ~ObjectCacheT ()=default
 Destructor. More...
 
C3D_API void initialise (castor3d::RenderDevice const &device)
 Intialises GPU buffer. More...
 
C3D_API void cleanup ()
 Sets all the elements to be cleaned up. More...
 
C3D_API void update (CpuUpdater &updater)
 Updates the render pass, CPU wise. More...
 
C3D_API void update (GpuUpdater &updater)
 Updates the render pass, GPU wise. More...
 
C3D_API void upload (ashes::CommandBuffer const &cb) const
 Uploads all GPU buffers to VRAM. More...
 
C3D_API LightsArray getLights (LightType type) const
 Retrieves the lights of given type. More...
 
C3D_API void createPassBinding (crg::FramePass &pass, uint32_t binding) const
 Creates a frame pass binding. More...
 
C3D_API VkDescriptorSetLayoutBinding createLayoutBinding (uint32_t index=0u) const
 Creates the descriptor set layout binding at given point. More...
 
C3D_API ashes::WriteDescriptorSet getBinding (uint32_t binding) const
 Creates the descriptor write for the lights buffer. More...
 
C3D_API ashes::WriteDescriptorSet getBinding (uint32_t binding, VkDeviceSize offset, VkDeviceSize size) const
 Creates the descriptor write for the lights buffer. More...
 
uint32_t getLightsCount (LightType type) const
 Retrieves the count of the lights of given type. More...
 
- Public Member Functions inherited from castor3d::ObjectCacheBaseT< Light, castor::String, LightCacheTraits >
void mergeInto (ElementObjectCacheT &destination)
 Merges this cache's elements to the one given. More...
 
EnginegetEngine () const
 
castor::String const & getObjectTypeName () const
 

Additional Inherited Members

- Public Attributes inherited from castor3d::ObjectCacheBaseT< Light, castor::String, LightCacheTraits >
OnChanged onChanged
 
- Protected Types inherited from castor3d::ObjectCacheBaseT< Light, castor::String, LightCacheTraits >
using ElementT = Light
 
using ElementKeyT = castor::String
 
using ElementCacheTraitsT = LightCacheTraits
 
using ElementCacheT = castor::ResourceCacheBaseT< ElementT, ElementKeyT, ElementCacheTraitsT >
 
using ElementCacheBaseT = ElementCacheT
 
using ElementObjectCacheT = ObjectCacheBaseT< ElementT, ElementKeyT, ElementCacheTraitsT >
 
using ElementPtrT = ObjectPtrT< ElementT, ElementKeyT >
 
using ElementObsT = ObjectObsT< ElementT, ElementKeyT >
 
using ElementContT = ObjectContT< ElementT, ElementKeyT >
 
using ElementInitialiserT = ObjectInitialiserT< ElementT, ElementKeyT >
 
using ElementCleanerT = ObjectCleanerT< ElementT, ElementKeyT >
 
using ElementMergerT = ObjectMergerT< ElementT, ElementKeyT >
 
using ElementAttacherT = ObjectAttacherT< ElementT, ElementKeyT >
 
using ElementDetacherT = ObjectDetacherT< ElementT, ElementKeyT >
 
- Protected Member Functions inherited from castor3d::ObjectCacheBaseT< Light, castor::String, LightCacheTraits >
 ObjectCacheBaseT (Scene &scene, SceneNodeSPtr rootNode, SceneNodeSPtr rootCameraNode, SceneNodeSPtr rootObjectNode, ElementInitialiserT initialise=ElementInitialiserT{}, ElementCleanerT clean=ElementCleanerT{}, ElementMergerT merge=ElementMergerT{}, ElementAttacherT attach=ElementAttacherT{}, ElementDetacherT detach=ElementDetacherT{})
 Constructor. More...
 
 ~ObjectCacheBaseT ()
 Destructor. More...
 
- Protected Attributes inherited from castor3d::ObjectCacheBaseT< Light, castor::String, LightCacheTraits >
Enginem_engine
 
SceneNodeWPtr m_rootNode
 
SceneNodeWPtr m_rootCameraNode
 
SceneNodeWPtr m_rootObjectNode
 
ElementMergerT m_merge
 
ElementAttacherT m_attach
 
ElementDetacherT m_detach
 

Detailed Description

Light cache.

Member Typedef Documentation

◆ ElementAttacherT

using castor3d::ObjectCacheT< Light, castor::String, LightCacheTraits >::ElementAttacherT = typename ElementObjectCacheT::ElementAttacherT

◆ ElementCacheTraitsT

using castor3d::ObjectCacheT< Light, castor::String, LightCacheTraits >::ElementCacheTraitsT = LightCacheTraits

◆ ElementCleanerT

using castor3d::ObjectCacheT< Light, castor::String, LightCacheTraits >::ElementCleanerT = typename ElementObjectCacheT::ElementCleanerT

◆ ElementContT

using castor3d::ObjectCacheT< Light, castor::String, LightCacheTraits >::ElementContT = typename ElementObjectCacheT::ElementContT

◆ ElementDetacherT

using castor3d::ObjectCacheT< Light, castor::String, LightCacheTraits >::ElementDetacherT = typename ElementObjectCacheT::ElementDetacherT

◆ ElementInitialiserT

using castor3d::ObjectCacheT< Light, castor::String, LightCacheTraits >::ElementInitialiserT = typename ElementObjectCacheT::ElementInitialiserT

◆ ElementKeyT

using castor3d::ObjectCacheT< Light, castor::String, LightCacheTraits >::ElementKeyT = castor::String

◆ ElementMergerT

using castor3d::ObjectCacheT< Light, castor::String, LightCacheTraits >::ElementMergerT = typename ElementObjectCacheT::ElementMergerT

◆ ElementObjectCacheT

◆ ElementPtrT

using castor3d::ObjectCacheT< Light, castor::String, LightCacheTraits >::ElementPtrT = typename ElementObjectCacheT::ElementPtrT

◆ ElementT

using castor3d::ObjectCacheT< Light, castor::String, LightCacheTraits >::ElementT = Light

Constructor & Destructor Documentation

◆ ObjectCacheT()

C3D_API castor3d::ObjectCacheT< Light, castor::String, LightCacheTraits >::ObjectCacheT ( Scene scene,
SceneNodeSPtr  rootNode,
SceneNodeSPtr  rootCameraNode,
SceneNodeSPtr  rootObjectNode 
)

Constructor.

Parameters
[in]sceneThe scene.
[in]rootNodeThe root node.
[in]rootCameraNodeThe cameras root node.
[in]rootObjectNodeThe objects root node.

◆ ~ObjectCacheT()

Destructor.

Member Function Documentation

◆ cleanup()

C3D_API void castor3d::ObjectCacheT< Light, castor::String, LightCacheTraits >::cleanup ( )

Sets all the elements to be cleaned up.

◆ createLayoutBinding()

C3D_API VkDescriptorSetLayoutBinding castor3d::ObjectCacheT< Light, castor::String, LightCacheTraits >::createLayoutBinding ( uint32_t  index = 0u) const

Creates the descriptor set layout binding at given point.

Parameters
[in]indexThe binding point index.

◆ createPassBinding()

C3D_API void castor3d::ObjectCacheT< Light, castor::String, LightCacheTraits >::createPassBinding ( crg::FramePass &  pass,
uint32_t  binding 
) const

Creates a frame pass binding.

◆ getBinding() [1/2]

C3D_API ashes::WriteDescriptorSet castor3d::ObjectCacheT< Light, castor::String, LightCacheTraits >::getBinding ( uint32_t  binding) const

Creates the descriptor write for the lights buffer.

◆ getBinding() [2/2]

C3D_API ashes::WriteDescriptorSet castor3d::ObjectCacheT< Light, castor::String, LightCacheTraits >::getBinding ( uint32_t  binding,
VkDeviceSize  offset,
VkDeviceSize  size 
) const

Creates the descriptor write for the lights buffer.

◆ getLights()

C3D_API LightsArray castor3d::ObjectCacheT< Light, castor::String, LightCacheTraits >::getLights ( LightType  type) const

Retrieves the lights of given type.

Parameters
[in]typeThe light type.
Returns
The lights.

◆ getLightsCount()

uint32_t castor3d::ObjectCacheT< Light, castor::String, LightCacheTraits >::getLightsCount ( LightType  type) const
inline

Retrieves the count of the lights of given type.

Parameters
[in]typeThe light type.
Returns
The count.

◆ initialise()

C3D_API void castor3d::ObjectCacheT< Light, castor::String, LightCacheTraits >::initialise ( castor3d::RenderDevice const &  device)

Intialises GPU buffer.

Parameters
[in]deviceThe GPU device.

◆ update() [1/2]

C3D_API void castor3d::ObjectCacheT< Light, castor::String, LightCacheTraits >::update ( CpuUpdater updater)

Updates the render pass, CPU wise.

Parameters
[in,out]updaterThe update data.

◆ update() [2/2]

C3D_API void castor3d::ObjectCacheT< Light, castor::String, LightCacheTraits >::update ( GpuUpdater updater)

Updates the render pass, GPU wise.

Parameters
[in,out]updaterThe update data.

◆ upload()

C3D_API void castor3d::ObjectCacheT< Light, castor::String, LightCacheTraits >::upload ( ashes::CommandBuffer const &  cb) const

Uploads all GPU buffers to VRAM.

Parameters
[in]cbThe command buffer on which transfer commands are recorded.

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