LiteFX 0.4.1.2025
Computer Graphics Engine
Loading...
Searching...
No Matches
LiteFX::Rendering::IRenderPipeline Class Referenceabstract

The interface for a render pipeline. More...

#include <rendering_api.hpp>

Inherits LiteFX::Rendering::IPipeline.

Inherited by LiteFX::Rendering::RenderPipeline< DirectX12PipelineLayout, DirectX12ShaderProgram, DirectX12InputAssembler, DirectX12Rasterizer >, LiteFX::Rendering::RenderPipeline< VulkanPipelineLayout, VulkanShaderProgram, VulkanInputAssembler, VulkanRasterizer >, and LiteFX::Rendering::RenderPipeline< TPipelineLayout, TShaderProgram, TInputAssembler, TRasterizer >.

Public Member Functions

 ~IRenderPipeline () noexcept override=default
 
SharedPtr< IInputAssemblerinputAssembler () const noexcept
 Returns the input assembler state used by the render pipeline.
 
SharedPtr< IRasterizerrasterizer () const noexcept
 Returns the rasterizer state used by the render pipeline.
 
virtual bool alphaToCoverage () const noexcept=0
 Returns true, if the pipeline uses Alpha-to-Coverage multi-sampling.
 
virtual MultiSamplingLevel samples () const noexcept=0
 Returns the multi-sampling level of the pipeline.
 
virtual void updateSamples (MultiSamplingLevel samples)=0
 Changes the multi-sampling level of the pipeline.
 
- Public Member Functions inherited from LiteFX::Rendering::IPipeline
 ~IPipeline () noexcept override=default
 
SharedPtr< const IShaderProgramprogram () const noexcept
 Returns the shader program used by the pipeline.
 
SharedPtr< const IPipelineLayoutlayout () const noexcept
 Returns the layout of the render pipeline.
 
- Public Member Functions inherited from LiteFX::Rendering::IStateResource
virtual ~IStateResource () noexcept=default
 Releases the state resource instance.
 
virtual const Stringname () const noexcept=0
 Returns the name of the resource.
 

Protected Member Functions

 IRenderPipeline () noexcept=default
 
 IRenderPipeline (IRenderPipeline &&) noexcept=default
 
 IRenderPipeline (const IRenderPipeline &)=delete
 
IRenderPipelineoperator= (IRenderPipeline &&) noexcept=default
 
IRenderPipelineoperator= (const IRenderPipeline &)=delete
 
- Protected Member Functions inherited from LiteFX::Rendering::IPipeline
 IPipeline () noexcept=default
 
 IPipeline (const IPipeline &)=delete
 
 IPipeline (IPipeline &&) noexcept=default
 
IPipelineoperator= (const IPipeline &)=delete
 
IPipelineoperator= (IPipeline &&) noexcept=default
 
- Protected Member Functions inherited from LiteFX::Rendering::IStateResource
 IStateResource () noexcept=default
 
 IStateResource (const IStateResource &)=delete
 
 IStateResource (IStateResource &&) noexcept=default
 
IStateResourceoperator= (const IStateResource &)=delete
 
IStateResourceoperator= (IStateResource &&) noexcept=default
 

Detailed Description

The interface for a render pipeline.

Constructor & Destructor Documentation

◆ IRenderPipeline() [1/3]

LiteFX::Rendering::IRenderPipeline::IRenderPipeline ( )
protecteddefaultnoexcept

◆ IRenderPipeline() [2/3]

LiteFX::Rendering::IRenderPipeline::IRenderPipeline ( IRenderPipeline && )
protecteddefaultnoexcept

◆ IRenderPipeline() [3/3]

LiteFX::Rendering::IRenderPipeline::IRenderPipeline ( const IRenderPipeline & )
protecteddelete

◆ ~IRenderPipeline()

LiteFX::Rendering::IRenderPipeline::~IRenderPipeline ( )
overridedefaultnoexcept

Member Function Documentation

◆ alphaToCoverage()

virtual bool LiteFX::Rendering::IRenderPipeline::alphaToCoverage ( ) const
pure virtualnoexcept

Returns true, if the pipeline uses Alpha-to-Coverage multi-sampling.

Alpha-to-Coverage is a multi-sampling technique used for partially transparent sprites or textures (such as foliage) to prevent visible flickering along edges. If enabled, the alpha-channel of the first (non-depth/stencil) render target is used to generate a temporary coverage mask that is combined with the fragment coverage mask using a logical AND.

Returns
true, if the pipeline uses Alpha-to-Coverage multi-sampling.

Implemented in LiteFX::Rendering::Backends::DirectX12RenderPipeline, and LiteFX::Rendering::Backends::VulkanRenderPipeline.

◆ inputAssembler()

SharedPtr< IInputAssembler > LiteFX::Rendering::IRenderPipeline::inputAssembler ( ) const
inlinenoexcept

Returns the input assembler state used by the render pipeline.

Returns
The input assembler state used by the render pipeline.

◆ operator=() [1/2]

IRenderPipeline & LiteFX::Rendering::IRenderPipeline::operator= ( const IRenderPipeline & )
protecteddelete

◆ operator=() [2/2]

IRenderPipeline & LiteFX::Rendering::IRenderPipeline::operator= ( IRenderPipeline && )
protecteddefaultnoexcept

◆ rasterizer()

SharedPtr< IRasterizer > LiteFX::Rendering::IRenderPipeline::rasterizer ( ) const
inlinenoexcept

Returns the rasterizer state used by the render pipeline.

Returns
The rasterizer state used by the render pipeline.

◆ samples()

virtual MultiSamplingLevel LiteFX::Rendering::IRenderPipeline::samples ( ) const
pure virtualnoexcept

Returns the multi-sampling level of the pipeline.

When using the pipeline, the multi-sampling level must match the level of the render target images.

Returns
The multi-sampling level of the pipeline.
See also
updateSamples

Implemented in LiteFX::Rendering::Backends::DirectX12RenderPipeline, and LiteFX::Rendering::Backends::VulkanRenderPipeline.

◆ updateSamples()

virtual void LiteFX::Rendering::IRenderPipeline::updateSamples ( MultiSamplingLevel samples)
pure virtual

Changes the multi-sampling level of the pipeline.

Changing the multi-sampling level of a pipeline causes it to be re-created, which is considered an expensive operation. Don't use this method to change samples frequently, for example when binding frame buffers with different sample levels. Instead, use multiple pipelines for this purpose.

Implemented in LiteFX::Rendering::Backends::DirectX12RenderPipeline, and LiteFX::Rendering::Backends::VulkanRenderPipeline.