Castor3D 0.17.0
Multiplatform 3D engine
Public Member Functions | Static Public Member Functions | 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.
 
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 ProgramFlags adjustFlags (ProgramFlags flags) const
 Adjusts given flags to match the render pass requirements.
 
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, uint32_t vertexStride) 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, uint32_t vertexStride) const noexcept
 Creates the pipeline flags for given configuration.
 
C3D_API PipelineAndID prepareBackPipeline (PipelineFlags const &pipelineFlags, ashes::PipelineVertexInputStateCreateInfoCRefArray const &vertexLayouts, ashes::DescriptorSetLayout const *vertexPullingLayouts, 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 *vertexPullingLayouts, 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 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 TextureCombine adjustFlags (TextureCombine const &textureCombine) const
 Filters the given textures flags using this pass needed textures.
 
C3D_API SceneFlags adjustFlags (SceneFlags flags) const
 Adjusts given flags to match the render pass requirements.
 
C3D_API bool isPassEnabled () const noexcept override
 
virtual C3D_API ShaderFlags getShaderFlags () const noexcept
 
virtual C3D_API bool areDebugTargetsEnabled () 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 &posBuffer, ashes::BufferBase const *idxBuffer) const
 
C3D_API uint32_t getDrawCallsCount () const
 
C3D_API RenderCounts const & getVisibleCounts () const
 
bool isOrderIndependent () const noexcept
 
SceneCullergetCuller () const noexcept
 
CameraUbo const & getMatrixUbo () const noexcept
 
uint32_t getPipelinesCount () const noexcept
 
bool forceTwoSided () const noexcept
 
DeferredLightingFilter getDeferredLightingFilter () const noexcept
 
ParallaxOcclusionFilter getParallaxOcclusionFilter () const noexcept
 
- Public Member Functions inherited from castor3d::NodesPass
virtual ~NodesPass () noexcept=default
 
C3D_API void update (CpuUpdater &updater)
 Updates the render pass, CPU wise.
 
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 TextureCombine adjustFlags (TextureCombine const &textureCombine) const
 Filters the given textures flags using this pass needed textures.
 
C3D_API SceneFlags adjustFlags (SceneFlags flags) const
 Adjusts given flags to match the render pass requirements.
 
C3D_API bool areValidPassFlags (PassComponentCombine const &passFlags) 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
 
ComponentModeFlags getComponentsMask () const noexcept
 
bool isDirty () 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
 
- Public Member Functions inherited from castor::OwnedBy< Engine >
Engine * getOwner () const noexcept
 
void setOwner (Engine &owner) noexcept
 
- 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 Public Member Functions inherited from castor3d::NodesPass
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)
 

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.
 
C3D_API void doUpdate (CpuUpdater &updater) override
 Updates the render pass, CPU wise.
 
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 ProgramFlags doAdjustProgramFlags (ProgramFlags flags) const
 
C3D_API ShaderProgramRPtr doGetProgram (PipelineFlags const &flags)
 
C3D_API bool doIsValidPass (Pass const &pass) const noexcept override
 
C3D_API bool doIsValidRenderable (RenderedObject const &object) const noexcept override
 
C3D_API SubmeshComponentCombine doAdjustSubmeshComponents (SubmeshComponentCombine submeshCombine) const override
 
C3D_API SceneFlags doAdjustSceneFlags (SceneFlags flags) const override
 
C3D_API bool doAreValidPassFlags (PassComponentCombine const &passFlags) const noexcept override
 
C3D_API bool doIsValidNode (SceneNode const &node) const noexcept override
 
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 castor3d::NodesPass
C3D_API NodesPass (RenderDevice const &device, castor::String const &categoryName, castor::String const &typeName, castor::String const &fullName, crg::ImageViewIdArray targetImage, crg::ImageViewIdArray targetDepth, NodesPassDesc const &desc)
 Constructor.
 
- Protected Member Functions inherited from castor::OwnedBy< Engine >
 OwnedBy (Engine &owner) noexcept
 Constructor.
 

Protected Attributes

bool m_oit { false }
 
bool m_forceTwoSided { false }
 
bool m_meshShading {}
 
bool m_allowClusteredLighting {}
 
DeferredLightingFilter m_deferredLightingFilter {}
 
ParallaxOcclusionFilter m_parallaxOcclusionFilter {}
 
- Protected Attributes inherited from castor3d::NodesPass
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_safeBand { false }
 
bool m_isDirty { true }
 
SceneUbo const * m_sceneUbo {}
 
uint32_t m_index { 0u }
 
std::optional< bool > m_handleStatic { std::nullopt }
 
ComponentModeFlags m_componentsMask {}
 
- Protected Attributes inherited from castor::NamedBaseT< T >
m_name
 

Additional Inherited Members

- Public Attributes inherited from castor3d::NodesPass
NodesPassChangeSignal onSortNodes
 

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

◆ adjustFlags() [1/5]

C3D_API PassComponentCombine castor3d::NodesPass::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::NodesPass::adjustFlags ( SceneFlags flags) const

Adjusts given flags to match the render pass requirements.

Parameters
[in]flagsThe flags.

◆ adjustFlags() [4/5]

C3D_API SubmeshComponentCombine castor3d::NodesPass::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::NodesPass::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

◆ 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,
uint32_t vertexStride ) 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.
[in]vertexStrideThe number of byytes between two position attributes inside the vertex buffer.

◆ 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,
uint32_t vertexStride ) 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.
[in]vertexStrideThe number of byytes between two position attributes inside the vertex buffer.

◆ 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()

C3D_API SceneFlags castor3d::RenderNodesPass::doAdjustSceneFlags ( SceneFlags flags) const
overrideprotectedvirtual

Reimplemented from castor3d::NodesPass.

Reimplemented in castor3d::RenderTechniqueNodesPass.

◆ doAdjustSubmeshComponents()

C3D_API SubmeshComponentCombine castor3d::RenderNodesPass::doAdjustSubmeshComponents ( SubmeshComponentCombine submeshCombine) const
overrideprotectedvirtual

Reimplemented from castor3d::NodesPass.

◆ doAreValidPassFlags()

C3D_API bool castor3d::RenderNodesPass::doAreValidPassFlags ( PassComponentCombine const & passFlags) const
overrideprotectedvirtualnoexcept

Implements castor3d::NodesPass.

◆ 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

◆ doIsValidNode()

C3D_API bool castor3d::RenderNodesPass::doIsValidNode ( SceneNode const & node) const
overrideprotectedvirtualnoexcept

Implements castor3d::NodesPass.

◆ doIsValidPass()

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

Reimplemented from castor3d::NodesPass.

◆ doIsValidRenderable()

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

Reimplemented from castor3d::NodesPass.

◆ doUpdate()

C3D_API void castor3d::RenderNodesPass::doUpdate ( CpuUpdater & updater)
overrideprotectedvirtual

Updates the render pass, CPU wise.

Parameters
[in,out]updaterThe update data.

Implements castor3d::NodesPass.

◆ 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.

◆ 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

◆ 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

◆ 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 & posBuffer,
ashes::BufferBase const * idxBuffer ) 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.

◆ 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.

◆ getVisibleCounts()

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

◆ 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.

◆ isMeshShading()

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

◆ isOrderIndependent()

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

References m_oit.

◆ isPassEnabled()

C3D_API bool castor3d::RenderNodesPass::isPassEnabled ( ) const
overridevirtualnoexcept

name Getters.

Reimplemented from castor3d::NodesPass.

Reimplemented in castor3d::VoxelizePass, castor3d::RenderTechniqueNodesPass, and castor3d::ShadowMapPass.

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

Here is the caller graph for this function:

◆ prepareBackPipeline()

C3D_API PipelineAndID castor3d::RenderNodesPass::prepareBackPipeline ( PipelineFlags const & pipelineFlags,
ashes::PipelineVertexInputStateCreateInfoCRefArray const & vertexLayouts,
ashes::DescriptorSetLayout const * vertexPullingLayouts,
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]vertexPullingLayoutsThe vertex buffers descriptor layouts.
[in]meshletDescriptorLayoutThe optional meshlets descriptor layout.

◆ prepareFrontPipeline()

C3D_API PipelineAndID castor3d::RenderNodesPass::prepareFrontPipeline ( PipelineFlags const & pipelineFlags,
ashes::PipelineVertexInputStateCreateInfoCRefArray const & vertexLayouts,
ashes::DescriptorSetLayout const * vertexPullingLayouts,
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]vertexPullingLayoutsThe vertex buffers descriptor 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.

Member Data Documentation

◆ m_allowClusteredLighting

bool castor3d::RenderNodesPass::m_allowClusteredLighting {}
protected

◆ m_deferredLightingFilter

DeferredLightingFilter castor3d::RenderNodesPass::m_deferredLightingFilter {}
protected

◆ m_forceTwoSided

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

Referenced by forceTwoSided().

◆ 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

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