Castor3D 0.16.0
Multiplatform 3D engine
Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
castor3d::RenderNodesPass Class Referenceabstract

#include <RenderNodesPass.hpp>

Inheritance diagram for castor3d::RenderNodesPass:
Inheritance graph
[legend]
Collaboration diagram for castor3d::RenderNodesPass:
Collaboration graph
[legend]

Public Member Functions

C3D_API ~RenderNodesPass () noexcept override
 Destructor.
 
virtual C3D_API void update (CpuUpdater &updater)
 Updates the render pass, CPU wise.
 
C3D_API void getSubmeshShaderSource (PipelineFlags const &flags, ast::ShaderBuilder &builder) const
 Retrieves the geometry shader source matching the given flags.
 
C3D_API void getPixelShaderSource (PipelineFlags const &flags, ast::ShaderBuilder &builder) const
 Retrieves the pixel shader source matching the given flags.
 
C3D_API void forceAdjustFlags (PipelineFlags &flags) const
 Adjusts given flags to match the render pass requirements.
 
C3D_API SubmeshComponentCombine adjustFlags (SubmeshComponentCombine const &submeshCombine) const
 Adjusts given flags to match the render pass requirements.
 
C3D_API PassComponentCombine adjustFlags (PassComponentCombine const &passCombine) const
 Adjusts given flags to match the render pass requirements.
 
C3D_API ProgramFlags adjustFlags (ProgramFlags flags) const
 Adjusts given flags to match the render pass requirements.
 
C3D_API SceneFlags adjustFlags (SceneFlags flags) const
 Adjusts given flags to match the render pass requirements.
 
C3D_API TextureCombine adjustFlags (TextureCombine const &textureCombine) const
 Filters the given textures flags using this pass needed textures.
 
C3D_API PipelineFlags createPipelineFlags (PassComponentCombine const &passComponents, SubmeshComponentCombine const &submeshComponents, BlendMode colourBlendMode, BlendMode alphaBlendMode, RenderPassTypeID renderPassTypeId, LightingModelID lightingModelId, BackgroundModelID backgroundModelId, VkCompareOp alphaFunc, VkCompareOp blendAlphaFunc, TextureCombine const &textures, ProgramFlags const &programFlags, SceneFlags const &sceneFlags, VkPrimitiveTopology topology, bool isFrontCulled, uint32_t passLayerIndex, GpuBufferOffsetT< castor::Point4f > const &morphTargets, SubmeshRenderData const *submeshData) const noexcept
 Creates the pipeline flags for given configuration.
 
C3D_API PipelineFlags createPipelineFlags (Pass const &pass, TextureCombine const &textures, SubmeshComponentCombine const &submeshComponents, ProgramFlags const &programFlags, SceneFlags const &sceneFlags, VkPrimitiveTopology topology, bool isFrontCulled, GpuBufferOffsetT< castor::Point4f > const &morphTargets, SubmeshRenderData const *submeshData) const noexcept
 Creates the pipeline flags for given configuration.
 
C3D_API PipelineAndID prepareBackPipeline (PipelineFlags const &pipelineFlags, ashes::PipelineVertexInputStateCreateInfoCRefArray const &vertexLayouts, ashes::DescriptorSetLayout const *meshletDescriptorLayout)
 Prepares the pipeline matching the given flags, for back face culling nodes.
 
C3D_API PipelineAndID prepareFrontPipeline (PipelineFlags const &pipelineFlags, ashes::PipelineVertexInputStateCreateInfoCRefArray const &vertexLayouts, ashes::DescriptorSetLayout const *meshletDescriptorLayout)
 Prepares the pipeline matching the given flags, for front face culling nodes.
 
C3D_API void cleanupPipelines ()
 Cleans up all pipelines from the lists.
 
C3D_API void initialiseAdditionalDescriptor (RenderPipeline &pipeline, ShadowMapLightTypeArray const &shadowMaps, ShadowBuffer const *shadowBuffer)
 Initialises the additional descriptor set.
 
C3D_API void setIgnoredNode (SceneNode const &node)
 Sets the node ignored node.
 
C3D_API void countNodes (RenderInfo &info) const noexcept
 Registers nodes counts to given RenderInfo.
 
C3D_API bool areValidPassFlags (PassComponentCombine const &passFlags) const noexcept
 
virtual C3D_API bool isPassEnabled () const noexcept
 
virtual C3D_API ShaderFlags getShaderFlags () const noexcept
 
virtual C3D_API bool areDebugTargetsEnabled () const noexcept
 
C3D_API bool isValidPass (Pass const &pass) const noexcept
 
C3D_API bool isValidRenderable (RenderedObject const &object) const noexcept
 
C3D_API bool isValidNode (SceneNode const &node) const noexcept
 
C3D_API bool allowClusteredLighting (ClustersConfig const &config) const noexcept
 
C3D_API bool hasNodes () const noexcept
 
C3D_API ScenegetScene () const noexcept
 
C3D_API SceneNode const * getIgnoredNode () const noexcept
 
C3D_API bool isMeshShading () const noexcept
 
C3D_API PipelinesNodesT< SubmeshRenderNode > const & getSubmeshNodes () const
 
C3D_API InstantiatedPipelinesNodesT< SubmeshRenderNode > const & getInstancedSubmeshNodes () const
 
C3D_API PipelinesNodesT< BillboardRenderNode > const & getBillboardNodes () const
 
C3D_API uint32_t getMaxPipelineId () const
 
C3D_API PipelineBufferArray const & getPassPipelineNodes () const
 
C3D_API uint32_t getPipelineNodesIndex (PipelineBaseHash const &hash, ashes::BufferBase const &buffer) const
 
C3D_API uint32_t getDrawCallsCount () const
 
C3D_API RenderCounts const & getVisibleCounts () const
 
ComponentModeFlags getComponentsMask () const noexcept
 
bool isOrderIndependent () const noexcept
 
SceneCullergetCuller () const noexcept
 
CameraUbo const & getMatrixUbo () const noexcept
 
uint32_t getPipelinesCount () const noexcept
 
bool isDirty () const noexcept
 
bool forceTwoSided () const noexcept
 
RenderFilters getRenderFilters () const noexcept
 
castor::String const & getTypeName () const noexcept
 
RenderPassTypeID getTypeID () const noexcept
 
bool filtersStatic () const noexcept
 
bool filtersNonStatic () const noexcept
 
bool handleStatic () const noexcept
 
DeferredLightingFilter getDeferredLightingFilter () const noexcept
 
ParallaxOcclusionFilter getParallaxOcclusionFilter () const noexcept
 
- Public Member Functions inherited from castor::OwnedBy< Engine >
Engine * getOwner () const
 
- Public Member Functions inherited from castor::NamedBaseT< T >
 NamedBaseT (T name) noexcept
 Constructor.
 
T const & getName () const noexcept
 Retrieves the name.
 
void rename (T name) noexcept
 

Static Public Member Functions

static C3D_API ashes::PipelineColorBlendStateCreateInfo createBlendState (BlendMode colourBlendMode, BlendMode alphaBlendMode, uint32_t attachesCount)
 
static C3D_API void addShadowBindings (SceneFlags const &sceneFlags, ashes::VkDescriptorSetLayoutBindingArray &bindings, VkShaderStageFlags shaderStages, uint32_t &index)
 Adds shadow maps descriptor layout bindings to given list.
 
static C3D_API void addShadowBindings (ashes::VkDescriptorSetLayoutBindingArray &bindings, VkShaderStageFlags shaderStages, uint32_t &index)
 Adds shadow maps descriptor layout bindings to given list.
 
static C3D_API void addBackgroundBindings (SceneBackground const &background, ashes::VkDescriptorSetLayoutBindingArray &bindings, VkShaderStageFlags shaderStages, uint32_t &index)
 Adds background descriptor layout bindings to given list.
 
static C3D_API void addGIBindings (SceneFlags flags, IndirectLightingData const &indirectLighting, ashes::VkDescriptorSetLayoutBindingArray &bindings, VkShaderStageFlags shaderStages, uint32_t &index)
 Adds indirect lighting descriptor layout bindings to given list.
 
static C3D_API void addClusteredLightingBindings (FrustumClusters const &frustumClusters, ashes::VkDescriptorSetLayoutBindingArray &bindings, VkShaderStageFlags shaderStages, uint32_t &index)
 Adds clusters descriptor layout bindings to given list.
 
static C3D_API void addShadowDescriptor (RenderSystem const &renderSystem, crg::RunnableGraph &graph, ashes::WriteDescriptorSetArray &descriptorWrites, ShadowMapLightTypeArray const &shadowMaps, ShadowBuffer const &shadowBuffer, uint32_t &index)
 
static C3D_API void addShadowDescriptor (RenderSystem const &renderSystem, crg::RunnableGraph &graph, SceneFlags const &sceneFlags, ashes::WriteDescriptorSetArray &descriptorWrites, ShadowMapLightTypeArray const &shadowMaps, ShadowBuffer const &shadowBuffer, uint32_t &index)
 
static C3D_API void addBackgroundDescriptor (SceneBackground const &background, ashes::WriteDescriptorSetArray &descriptorWrites, crg::ImageViewIdArray const &targetImage, uint32_t &index)
 
static C3D_API void addGIDescriptor (SceneFlags sceneFlags, IndirectLightingData const &indirectLighting, ashes::WriteDescriptorSetArray &descriptorWrites, uint32_t &index)
 
static C3D_API void addClusteredLightingDescriptor (FrustumClusters const &frustumClusters, ashes::WriteDescriptorSetArray &descriptorWrites, uint32_t &index)
 

Public Attributes

RenderNodesPassChangeSignal onSortNodes
 

Protected Member Functions

C3D_API RenderNodesPass (crg::FramePass const &pass, crg::GraphContext &context, crg::RunnableGraph &graph, RenderDevice const &device, castor::String const &typeName, crg::ImageViewIdArray targetImage, crg::ImageViewIdArray targetDepth, RenderNodesPassDesc const &desc)
 Constructor.
 
virtual C3D_API void doUpdateUbos (CpuUpdater &updater)
 Updates the render pass, CPU wise.
 
virtual C3D_API void doFillAdditionalBindings (PipelineFlags const &flags, ashes::VkDescriptorSetLayoutBindingArray &bindings) const =0
 Fills the render pass specific descriptor layout bindings.
 
virtual C3D_API bool doIsValidPass (Pass const &pass) const noexcept
 
virtual C3D_API bool doIsValidRenderable (RenderedObject const &object) const noexcept
 
virtual C3D_API SubmeshComponentCombine doAdjustSubmeshComponents (SubmeshComponentCombine submeshCombine) const
 
virtual C3D_API ProgramFlags doAdjustProgramFlags (ProgramFlags flags) const
 
virtual C3D_API SceneFlags doAdjustSceneFlags (SceneFlags flags) const
 
C3D_API ShaderProgramRPtr doGetProgram (PipelineFlags const &flags)
 
C3D_API void doAccept (castor3d::RenderTechniqueVisitor &visitor)
 Visitor acceptance function.
 
C3D_API void doUpdateFlags (PipelineFlags &flags) const
 
C3D_API void doAddShadowBindings (Scene const &scene, ashes::VkDescriptorSetLayoutBindingArray &bindings, uint32_t &index) const
 
C3D_API void doAddBackgroundBindings (Scene const &scene, ashes::VkDescriptorSetLayoutBindingArray &bindings, uint32_t &index) const
 
C3D_API void doAddClusteredLightingBindings (RenderTarget const &target, ashes::VkDescriptorSetLayoutBindingArray &bindings, uint32_t &index) const
 
C3D_API void doAddShadowDescriptor (Scene const &scene, ashes::WriteDescriptorSetArray &descriptorWrites, ShadowMapLightTypeArray const &shadowMaps, ShadowBuffer const *shadowBuffer, uint32_t &index) const
 
C3D_API void doAddBackgroundDescriptor (Scene const &scene, ashes::WriteDescriptorSetArray &descriptorWrites, crg::ImageViewIdArray const &targetImage, uint32_t &index) const
 
C3D_API void doAddClusteredLightingDescriptor (RenderTarget const &target, ashes::WriteDescriptorSetArray &descriptorWrites, uint32_t &index) const
 
RenderQueuegetRenderQueue () const noexcept
 
- Protected Member Functions inherited from castor::OwnedBy< Engine >
 OwnedBy (Engine &owner)
 Constructor.
 

Protected Attributes

RenderDevice const & m_device
 
RenderSystemm_renderSystem
 
CameraUbo const & m_cameraUbo
 
crg::ImageViewIdArray m_targetImage
 
crg::ImageViewIdArray m_targetDepth
 
castor::String m_typeName
 
RenderPassTypeID m_typeID {}
 
RenderFilters m_filters { RenderFilter::eNone }
 
castor::String m_category
 
castor::Size m_size
 
bool m_oit { false }
 
bool m_forceTwoSided { false }
 
bool m_safeBand { false }
 
bool m_isDirty { true }
 
bool m_meshShading {}
 
SceneUbo const * m_sceneUbo {}
 
uint32_t m_index { 0u }
 
std::optional< bool > m_handleStatic { std::nullopt }
 
ComponentModeFlags m_componentsMask {}
 
bool m_allowClusteredLighting {}
 
DeferredLightingFilter m_deferredLightingFilter {}
 
ParallaxOcclusionFilter m_parallaxOcclusionFilter {}
 
- Protected Attributes inherited from castor::NamedBaseT< T >
m_name
 

Constructor & Destructor Documentation

◆ RenderNodesPass()

C3D_API castor3d::RenderNodesPass::RenderNodesPass ( crg::FramePass const & pass,
crg::GraphContext & context,
crg::RunnableGraph & graph,
RenderDevice const & device,
castor::String const & typeName,
crg::ImageViewIdArray targetImage,
crg::ImageViewIdArray targetDepth,
RenderNodesPassDesc const & desc )
protected

Constructor.

Parameters
[in]passThe parent frame pass.
[in]contextThe rendering context.
[in]graphThe runnable graph.
[in]deviceThe GPU device.
[in]typeNameThe pass type name.
[in]targetImageThe image this pass renders to.
[in]targetDepthThe depth image this pass renders to.
[in]descThe construction data.

◆ ~RenderNodesPass()

C3D_API castor3d::RenderNodesPass::~RenderNodesPass ( )
overridenoexcept

Destructor.

Member Function Documentation

◆ addBackgroundBindings()

static C3D_API void castor3d::RenderNodesPass::addBackgroundBindings ( SceneBackground const & background,
ashes::VkDescriptorSetLayoutBindingArray & bindings,
VkShaderStageFlags shaderStages,
uint32_t & index )
static

Adds background descriptor layout bindings to given list.

Parameters
[in]backgroundThe background.
[in,out]bindingsReceives the bindings.
[in]shaderStagesThe impacted shader stages.
[in,out]indexThe current binding index.

◆ addBackgroundDescriptor()

static C3D_API void castor3d::RenderNodesPass::addBackgroundDescriptor ( SceneBackground const & background,
ashes::WriteDescriptorSetArray & descriptorWrites,
crg::ImageViewIdArray const & targetImage,
uint32_t & index )
static

◆ addClusteredLightingBindings()

static C3D_API void castor3d::RenderNodesPass::addClusteredLightingBindings ( FrustumClusters const & frustumClusters,
ashes::VkDescriptorSetLayoutBindingArray & bindings,
VkShaderStageFlags shaderStages,
uint32_t & index )
static

Adds clusters descriptor layout bindings to given list.

Parameters
[in]frustumClustersThe clusters.
[in,out]bindingsReceives the bindings.
[in]shaderStagesThe impacted shader stages.
[in,out]indexThe current binding index.

◆ addClusteredLightingDescriptor()

static C3D_API void castor3d::RenderNodesPass::addClusteredLightingDescriptor ( FrustumClusters const & frustumClusters,
ashes::WriteDescriptorSetArray & descriptorWrites,
uint32_t & index )
static

◆ addGIBindings()

static C3D_API void castor3d::RenderNodesPass::addGIBindings ( SceneFlags flags,
IndirectLightingData const & indirectLighting,
ashes::VkDescriptorSetLayoutBindingArray & bindings,
VkShaderStageFlags shaderStages,
uint32_t & index )
static

Adds indirect lighting descriptor layout bindings to given list.

Parameters
[in]flagsThe scene flags.
[in]indirectLightingThe indirect lighting data.
[in,out]bindingsReceives the bindings.
[in]shaderStagesThe impacted shader stages.
[in,out]indexThe current binding index.

◆ addGIDescriptor()

static C3D_API void castor3d::RenderNodesPass::addGIDescriptor ( SceneFlags sceneFlags,
IndirectLightingData const & indirectLighting,
ashes::WriteDescriptorSetArray & descriptorWrites,
uint32_t & index )
static

◆ addShadowBindings() [1/2]

static C3D_API void castor3d::RenderNodesPass::addShadowBindings ( ashes::VkDescriptorSetLayoutBindingArray & bindings,
VkShaderStageFlags shaderStages,
uint32_t & index )
static

Adds shadow maps descriptor layout bindings to given list.

Parameters
[in,out]bindingsReceives the bindings.
[in]shaderStagesThe impacted shader stages.
[in,out]indexThe current binding index.

◆ addShadowBindings() [2/2]

static C3D_API void castor3d::RenderNodesPass::addShadowBindings ( SceneFlags const & sceneFlags,
ashes::VkDescriptorSetLayoutBindingArray & bindings,
VkShaderStageFlags shaderStages,
uint32_t & index )
static

Adds shadow maps descriptor layout bindings to given list.

Parameters
[in]sceneFlagsUsed to define what shadow maps need to be bound.
[in,out]bindingsReceives the bindings.
[in]shaderStagesThe impacted shader stages.
[in,out]indexThe current binding index.

◆ addShadowDescriptor() [1/2]

static C3D_API void castor3d::RenderNodesPass::addShadowDescriptor ( RenderSystem const & renderSystem,
crg::RunnableGraph & graph,
ashes::WriteDescriptorSetArray & descriptorWrites,
ShadowMapLightTypeArray const & shadowMaps,
ShadowBuffer const & shadowBuffer,
uint32_t & index )
static

◆ addShadowDescriptor() [2/2]

static C3D_API void castor3d::RenderNodesPass::addShadowDescriptor ( RenderSystem const & renderSystem,
crg::RunnableGraph & graph,
SceneFlags const & sceneFlags,
ashes::WriteDescriptorSetArray & descriptorWrites,
ShadowMapLightTypeArray const & shadowMaps,
ShadowBuffer const & shadowBuffer,
uint32_t & index )
static

◆ adjustFlags() [1/5]

C3D_API PassComponentCombine castor3d::RenderNodesPass::adjustFlags ( PassComponentCombine const & passCombine) const

Adjusts given flags to match the render pass requirements.

Parameters
[in]passCombineThe flags.

◆ adjustFlags() [2/5]

C3D_API ProgramFlags castor3d::RenderNodesPass::adjustFlags ( ProgramFlags flags) const

Adjusts given flags to match the render pass requirements.

Parameters
[in]flagsThe flags.

◆ adjustFlags() [3/5]

C3D_API SceneFlags castor3d::RenderNodesPass::adjustFlags ( SceneFlags flags) const

Adjusts given flags to match the render pass requirements.

Parameters
[in]flagsThe flags.

◆ adjustFlags() [4/5]

C3D_API SubmeshComponentCombine castor3d::RenderNodesPass::adjustFlags ( SubmeshComponentCombine const & submeshCombine) const

Adjusts given flags to match the render pass requirements.

Parameters
[in]submeshCombineThe flags.

◆ adjustFlags() [5/5]

C3D_API TextureCombine castor3d::RenderNodesPass::adjustFlags ( TextureCombine const & textureCombine) const

Filters the given textures flags using this pass needed textures.

Parameters
[in]textureCombineThe textures flags.
Returns
The filtered flags.

◆ allowClusteredLighting()

C3D_API bool castor3d::RenderNodesPass::allowClusteredLighting ( ClustersConfig const & config) const
noexcept

◆ areDebugTargetsEnabled()

virtual C3D_API bool castor3d::RenderNodesPass::areDebugTargetsEnabled ( ) const
virtualnoexcept

◆ areValidPassFlags()

C3D_API bool castor3d::RenderNodesPass::areValidPassFlags ( PassComponentCombine const & passFlags) const
noexcept

name Getters.

Referenced by castor3d::RenderTechniqueNodesPass::areValidPassFlags().

Here is the caller graph for this function:

◆ cleanupPipelines()

C3D_API void castor3d::RenderNodesPass::cleanupPipelines ( )

Cleans up all pipelines from the lists.

◆ countNodes()

C3D_API void castor3d::RenderNodesPass::countNodes ( RenderInfo & info) const
noexcept

Registers nodes counts to given RenderInfo.

Parameters
[in,out]infoReceives the counts.

Referenced by castor3d::RenderTechniqueNodesPass::countNodes().

Here is the caller graph for this function:

◆ createBlendState()

static C3D_API ashes::PipelineColorBlendStateCreateInfo castor3d::RenderNodesPass::createBlendState ( BlendMode colourBlendMode,
BlendMode alphaBlendMode,
uint32_t attachesCount )
static
Parameters
[in]colourBlendModeThe colour blend mode.
[in]alphaBlendModeThe alpha blend mode.
[in]attachesCountThe wanted blend attaches count.
Returns
A blend state matching given blend modes.

◆ createPipelineFlags() [1/2]

C3D_API PipelineFlags castor3d::RenderNodesPass::createPipelineFlags ( Pass const & pass,
TextureCombine const & textures,
SubmeshComponentCombine const & submeshComponents,
ProgramFlags const & programFlags,
SceneFlags const & sceneFlags,
VkPrimitiveTopology topology,
bool isFrontCulled,
GpuBufferOffsetT< castor::Point4f > const & morphTargets,
SubmeshRenderData const * submeshData ) const
noexcept

Creates the pipeline flags for given configuration.

Parameters
[in]passThe pass for which the pipeline is created.
[in]texturesThe textures configuration.
[in]submeshComponentsThe submesh components combination.
[in]programFlagsA combination of ProgramFlag.
[in]sceneFlagsScene related flags.
[in]topologyThe render topology.
[in]isFrontCulledtrue for front face culling, false for back face culling.
[in]morphTargetsThe morph targets buffer.
[in]submeshDataThe submesh render data, if any.

◆ createPipelineFlags() [2/2]

C3D_API PipelineFlags castor3d::RenderNodesPass::createPipelineFlags ( PassComponentCombine const & passComponents,
SubmeshComponentCombine const & submeshComponents,
BlendMode colourBlendMode,
BlendMode alphaBlendMode,
RenderPassTypeID renderPassTypeId,
LightingModelID lightingModelId,
BackgroundModelID backgroundModelId,
VkCompareOp alphaFunc,
VkCompareOp blendAlphaFunc,
TextureCombine const & textures,
ProgramFlags const & programFlags,
SceneFlags const & sceneFlags,
VkPrimitiveTopology topology,
bool isFrontCulled,
uint32_t passLayerIndex,
GpuBufferOffsetT< castor::Point4f > const & morphTargets,
SubmeshRenderData const * submeshData ) const
noexcept

Creates the pipeline flags for given configuration.

Parameters
[in]passComponentsThe pass components combination.
[in]submeshComponentsThe submesh components combination.
[in]colourBlendModeThe colour blending mode.
[in]alphaBlendModeThe alpha blending mode.
[in]renderPassTypeIdThe render pass type ID.
[in]lightingModelIdThe lighting model ID.
[in]backgroundModelIdThe background model ID.
[in]alphaFuncThe alpha comparison function (for opaque nodes).
[in]blendAlphaFuncThe alpha comparison function (for transparent nodes).
[in]texturesThe textures configuration.
[in]programFlagsA combination of ProgramFlag.
[in]sceneFlagsScene related flags.
[in]topologyThe render topology.
[in]isFrontCulledtrue for front face culling, false for back face culling.
[in]passLayerIndexThe material pass layer index.
[in]morphTargetsThe morph targets buffer.
[in]submeshDataThe submesh render data, if any.

◆ doAccept()

C3D_API void castor3d::RenderNodesPass::doAccept ( castor3d::RenderTechniqueVisitor & visitor)
protected

Visitor acceptance function.

Parameters
visitorThe ... visitor.

◆ doAddBackgroundBindings()

C3D_API void castor3d::RenderNodesPass::doAddBackgroundBindings ( Scene const & scene,
ashes::VkDescriptorSetLayoutBindingArray & bindings,
uint32_t & index ) const
protected

◆ doAddBackgroundDescriptor()

C3D_API void castor3d::RenderNodesPass::doAddBackgroundDescriptor ( Scene const & scene,
ashes::WriteDescriptorSetArray & descriptorWrites,
crg::ImageViewIdArray const & targetImage,
uint32_t & index ) const
protected

◆ doAddClusteredLightingBindings()

C3D_API void castor3d::RenderNodesPass::doAddClusteredLightingBindings ( RenderTarget const & target,
ashes::VkDescriptorSetLayoutBindingArray & bindings,
uint32_t & index ) const
protected

◆ doAddClusteredLightingDescriptor()

C3D_API void castor3d::RenderNodesPass::doAddClusteredLightingDescriptor ( RenderTarget const & target,
ashes::WriteDescriptorSetArray & descriptorWrites,
uint32_t & index ) const
protected

◆ doAddShadowBindings()

C3D_API void castor3d::RenderNodesPass::doAddShadowBindings ( Scene const & scene,
ashes::VkDescriptorSetLayoutBindingArray & bindings,
uint32_t & index ) const
protected

◆ doAddShadowDescriptor()

C3D_API void castor3d::RenderNodesPass::doAddShadowDescriptor ( Scene const & scene,
ashes::WriteDescriptorSetArray & descriptorWrites,
ShadowMapLightTypeArray const & shadowMaps,
ShadowBuffer const * shadowBuffer,
uint32_t & index ) const
protected

◆ doAdjustProgramFlags()

virtual C3D_API ProgramFlags castor3d::RenderNodesPass::doAdjustProgramFlags ( ProgramFlags flags) const
protectedvirtual

◆ doAdjustSceneFlags()

virtual C3D_API SceneFlags castor3d::RenderNodesPass::doAdjustSceneFlags ( SceneFlags flags) const
protectedvirtual

◆ doAdjustSubmeshComponents()

virtual C3D_API SubmeshComponentCombine castor3d::RenderNodesPass::doAdjustSubmeshComponents ( SubmeshComponentCombine submeshCombine) const
protectedvirtual

◆ doFillAdditionalBindings()

virtual C3D_API void castor3d::RenderNodesPass::doFillAdditionalBindings ( PipelineFlags const & flags,
ashes::VkDescriptorSetLayoutBindingArray & bindings ) const
protectedpure virtual

Fills the render pass specific descriptor layout bindings.

Parameters
[in]flagsThe pipeline flags.
[in,out]bindingsReceives the additional bindings.

◆ doGetProgram()

C3D_API ShaderProgramRPtr castor3d::RenderNodesPass::doGetProgram ( PipelineFlags const & flags)
protected

◆ doIsValidPass()

virtual C3D_API bool castor3d::RenderNodesPass::doIsValidPass ( Pass const & pass) const
protectedvirtualnoexcept
Parameters
[in]passThe material pass.
Returns
true if the pass is rendered through this nodes pass.

◆ doIsValidRenderable()

virtual C3D_API bool castor3d::RenderNodesPass::doIsValidRenderable ( RenderedObject const & object) const
protectedvirtualnoexcept
Parameters
[in]objectThe rendered object.
Returns
true if the object is rendered through this nodes pass.

◆ doUpdateFlags()

C3D_API void castor3d::RenderNodesPass::doUpdateFlags ( PipelineFlags & flags) const
protected

◆ doUpdateUbos()

virtual C3D_API void castor3d::RenderNodesPass::doUpdateUbos ( CpuUpdater & updater)
protectedvirtual

Updates the render pass, CPU wise.

Parameters
[in,out]updaterThe update data.

◆ filtersNonStatic()

bool castor3d::RenderNodesPass::filtersNonStatic ( ) const
inlinenoexcept

References handleStatic(), and m_handleStatic.

Here is the call graph for this function:

◆ filtersStatic()

bool castor3d::RenderNodesPass::filtersStatic ( ) const
inlinenoexcept

References handleStatic(), and m_handleStatic.

Here is the call graph for this function:

◆ forceAdjustFlags()

C3D_API void castor3d::RenderNodesPass::forceAdjustFlags ( PipelineFlags & flags) const

Adjusts given flags to match the render pass requirements.

Parameters
[in]flagsThe flags.

◆ forceTwoSided()

bool castor3d::RenderNodesPass::forceTwoSided ( ) const
inlinenoexcept

References m_forceTwoSided.

◆ getBillboardNodes()

C3D_API PipelinesNodesT< BillboardRenderNode > const & castor3d::RenderNodesPass::getBillboardNodes ( ) const

◆ getComponentsMask()

ComponentModeFlags castor3d::RenderNodesPass::getComponentsMask ( ) const
inlinenoexcept

References m_componentsMask.

◆ getCuller()

SceneCuller & castor3d::RenderNodesPass::getCuller ( ) const
inlinenoexcept

References castor::DataHolderT< Data, Index >::getData().

Here is the call graph for this function:

◆ getDeferredLightingFilter()

DeferredLightingFilter castor3d::RenderNodesPass::getDeferredLightingFilter ( ) const
inlinenoexcept

◆ getDrawCallsCount()

C3D_API uint32_t castor3d::RenderNodesPass::getDrawCallsCount ( ) const

◆ getIgnoredNode()

C3D_API SceneNode const * castor3d::RenderNodesPass::getIgnoredNode ( ) const
noexcept

◆ getInstancedSubmeshNodes()

C3D_API InstantiatedPipelinesNodesT< SubmeshRenderNode > const & castor3d::RenderNodesPass::getInstancedSubmeshNodes ( ) const

◆ getMatrixUbo()

CameraUbo const & castor3d::RenderNodesPass::getMatrixUbo ( ) const
inlinenoexcept

References m_cameraUbo.

◆ getMaxPipelineId()

C3D_API uint32_t castor3d::RenderNodesPass::getMaxPipelineId ( ) const

◆ getParallaxOcclusionFilter()

ParallaxOcclusionFilter castor3d::RenderNodesPass::getParallaxOcclusionFilter ( ) const
inlinenoexcept

◆ getPassPipelineNodes()

C3D_API PipelineBufferArray const & castor3d::RenderNodesPass::getPassPipelineNodes ( ) const

◆ getPipelineNodesIndex()

C3D_API uint32_t castor3d::RenderNodesPass::getPipelineNodesIndex ( PipelineBaseHash const & hash,
ashes::BufferBase const & buffer ) const

◆ getPipelinesCount()

uint32_t castor3d::RenderNodesPass::getPipelinesCount ( ) const
inlinenoexcept

◆ getPixelShaderSource()

C3D_API void castor3d::RenderNodesPass::getPixelShaderSource ( PipelineFlags const & flags,
ast::ShaderBuilder & builder ) const

Retrieves the pixel shader source matching the given flags.

Parameters
[in]flagsThe pipeline flags.
[in]builderReceives the source.

◆ getRenderFilters()

RenderFilters castor3d::RenderNodesPass::getRenderFilters ( ) const
inlinenoexcept

References m_filters.

◆ getRenderQueue()

RenderQueue & castor3d::RenderNodesPass::getRenderQueue ( ) const
inlineprotectednoexcept

References castor::DataHolderT< Data, Index >::getData().

Here is the call graph for this function:

◆ getScene()

C3D_API Scene & castor3d::RenderNodesPass::getScene ( ) const
noexcept

◆ getShaderFlags()

virtual C3D_API ShaderFlags castor3d::RenderNodesPass::getShaderFlags ( ) const
virtualnoexcept

◆ getSubmeshNodes()

C3D_API PipelinesNodesT< SubmeshRenderNode > const & castor3d::RenderNodesPass::getSubmeshNodes ( ) const

◆ getSubmeshShaderSource()

C3D_API void castor3d::RenderNodesPass::getSubmeshShaderSource ( PipelineFlags const & flags,
ast::ShaderBuilder & builder ) const

Retrieves the geometry shader source matching the given flags.

Parameters
[in]flagsThe pipeline flags.
[in]builderReceives the source.

◆ getTypeID()

RenderPassTypeID castor3d::RenderNodesPass::getTypeID ( ) const
inlinenoexcept

References m_typeID.

◆ getTypeName()

castor::String const & castor3d::RenderNodesPass::getTypeName ( ) const
inlinenoexcept

References m_typeName.

◆ getVisibleCounts()

C3D_API RenderCounts const & castor3d::RenderNodesPass::getVisibleCounts ( ) const

◆ handleStatic()

bool castor3d::RenderNodesPass::handleStatic ( ) const
inlinenoexcept

References m_handleStatic.

Referenced by filtersNonStatic(), and filtersStatic().

Here is the caller graph for this function:

◆ hasNodes()

C3D_API bool castor3d::RenderNodesPass::hasNodes ( ) const
noexcept

◆ initialiseAdditionalDescriptor()

C3D_API void castor3d::RenderNodesPass::initialiseAdditionalDescriptor ( RenderPipeline & pipeline,
ShadowMapLightTypeArray const & shadowMaps,
ShadowBuffer const * shadowBuffer )

Initialises the additional descriptor set.

Parameters
[in]pipelineThe render pipeline.
[in]shadowMapsThe shadow maps.
[in]shadowBufferThe buffer holding the shadow configuration data.

◆ isDirty()

bool castor3d::RenderNodesPass::isDirty ( ) const
inlinenoexcept

References m_isDirty.

◆ isMeshShading()

C3D_API bool castor3d::RenderNodesPass::isMeshShading ( ) const
noexcept

◆ isOrderIndependent()

bool castor3d::RenderNodesPass::isOrderIndependent ( ) const
inlinenoexcept

References m_oit.

◆ isPassEnabled()

virtual C3D_API bool castor3d::RenderNodesPass::isPassEnabled ( ) const
virtualnoexcept

◆ isValidNode()

C3D_API bool castor3d::RenderNodesPass::isValidNode ( SceneNode const & node) const
noexcept

◆ isValidPass()

C3D_API bool castor3d::RenderNodesPass::isValidPass ( Pass const & pass) const
noexcept

◆ isValidRenderable()

C3D_API bool castor3d::RenderNodesPass::isValidRenderable ( RenderedObject const & object) const
noexcept

◆ prepareBackPipeline()

C3D_API PipelineAndID castor3d::RenderNodesPass::prepareBackPipeline ( PipelineFlags const & pipelineFlags,
ashes::PipelineVertexInputStateCreateInfoCRefArray const & vertexLayouts,
ashes::DescriptorSetLayout const * meshletDescriptorLayout )

Prepares the pipeline matching the given flags, for back face culling nodes.

Parameters
[in]pipelineFlagsThe pipeline flags.
[in]vertexLayoutsThe vertex buffers layouts.
[in]meshletDescriptorLayoutThe optional meshlets descriptor layout.

◆ prepareFrontPipeline()

C3D_API PipelineAndID castor3d::RenderNodesPass::prepareFrontPipeline ( PipelineFlags const & pipelineFlags,
ashes::PipelineVertexInputStateCreateInfoCRefArray const & vertexLayouts,
ashes::DescriptorSetLayout const * meshletDescriptorLayout )

Prepares the pipeline matching the given flags, for front face culling nodes.

Parameters
[in]pipelineFlagsThe pipeline flags.
[in]vertexLayoutsThe vertex buffers layouts.
[in]meshletDescriptorLayoutThe optional meshlets descriptor layout.

◆ setIgnoredNode()

C3D_API void castor3d::RenderNodesPass::setIgnoredNode ( SceneNode const & node)

Sets the node ignored node.

Remarks
All objects attached to this node will be ignored during rendering.
Parameters
[in]nodeThe node.

◆ update()

virtual C3D_API void castor3d::RenderNodesPass::update ( CpuUpdater & updater)
virtual

Updates the render pass, CPU wise.

Parameters
[in,out]updaterThe update data.

Reimplemented in castor3d::VoxelizePass, castor3d::RenderTechniqueNodesPass, castor3d::ShadowMapPassDirectional, castor3d::ShadowMapPassPoint, and castor3d::ShadowMapPassSpot.

Member Data Documentation

◆ m_allowClusteredLighting

bool castor3d::RenderNodesPass::m_allowClusteredLighting {}
protected

◆ m_cameraUbo

CameraUbo const& castor3d::RenderNodesPass::m_cameraUbo
protected

Referenced by getMatrixUbo().

◆ m_category

castor::String castor3d::RenderNodesPass::m_category
protected

◆ m_componentsMask

ComponentModeFlags castor3d::RenderNodesPass::m_componentsMask {}
protected

Referenced by getComponentsMask().

◆ m_deferredLightingFilter

DeferredLightingFilter castor3d::RenderNodesPass::m_deferredLightingFilter {}
protected

◆ m_device

RenderDevice const& castor3d::RenderNodesPass::m_device
protected

◆ m_filters

RenderFilters castor3d::RenderNodesPass::m_filters { RenderFilter::eNone }
protected

Referenced by getRenderFilters().

◆ m_forceTwoSided

bool castor3d::RenderNodesPass::m_forceTwoSided { false }
protected

Referenced by forceTwoSided().

◆ m_handleStatic

std::optional< bool > castor3d::RenderNodesPass::m_handleStatic { std::nullopt }
protected

◆ m_index

uint32_t castor3d::RenderNodesPass::m_index { 0u }
protected

◆ m_isDirty

bool castor3d::RenderNodesPass::m_isDirty { true }
protected

Referenced by isDirty().

◆ m_meshShading

bool castor3d::RenderNodesPass::m_meshShading {}
protected

◆ m_oit

bool castor3d::RenderNodesPass::m_oit { false }
protected

Referenced by isOrderIndependent().

◆ m_parallaxOcclusionFilter

ParallaxOcclusionFilter castor3d::RenderNodesPass::m_parallaxOcclusionFilter {}
protected

◆ m_renderSystem

RenderSystem& castor3d::RenderNodesPass::m_renderSystem
protected

◆ m_safeBand

bool castor3d::RenderNodesPass::m_safeBand { false }
protected

◆ m_sceneUbo

SceneUbo const* castor3d::RenderNodesPass::m_sceneUbo {}
protected

◆ m_size

castor::Size castor3d::RenderNodesPass::m_size
protected

◆ m_targetDepth

crg::ImageViewIdArray castor3d::RenderNodesPass::m_targetDepth
protected

◆ m_targetImage

crg::ImageViewIdArray castor3d::RenderNodesPass::m_targetImage
protected

◆ m_typeID

RenderPassTypeID castor3d::RenderNodesPass::m_typeID {}
protected

Referenced by getTypeID().

◆ m_typeName

castor::String castor3d::RenderNodesPass::m_typeName
protected

Referenced by getTypeName().

◆ onSortNodes

RenderNodesPassChangeSignal castor3d::RenderNodesPass::onSortNodes
mutable

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