LiteFX 0.4.1.2025
Computer Graphics Engine
Loading...
Searching...
No Matches
LiteFX::Rendering::RenderPass< TCommandQueue, TFrameBuffer > Class Template Referenceabstract

Represents a render pass. More...

#include <rendering.hpp>

Inherits LiteFX::Rendering::StateResource, and LiteFX::Rendering::IRenderPass.

Public Types

using command_queue_type = TCommandQueue
 
using command_buffer_type = TCommandQueue::command_buffer_type
 
using frame_buffer_type = TFrameBuffer
 

Public Member Functions

 ~RenderPass () noexcept override=default
 
virtual SharedPtr< const frame_buffer_typeactiveFrameBuffer () const noexcept=0
 
virtual Enumerable< SharedPtr< const command_buffer_type > > commandBuffers () const =0
 
virtual const command_queue_typecommandQueue () const noexcept=0
 
virtual SharedPtr< const command_buffer_typecommandBuffer (UInt32 index) const =0
 
virtual void begin (const frame_buffer_type &frameBuffer) const =0
 
- Public Member Functions inherited from LiteFX::Rendering::StateResource
 ~StateResource () noexcept override
 Releases the state resource instance.
 
const Stringname () const noexcept override
 Returns the name of the resource.
Returns
The name of the resource.

 
- Public Member Functions inherited from LiteFX::Rendering::IStateResource
virtual ~IStateResource () noexcept=default
 Releases the state resource instance.
 
- Public Member Functions inherited from LiteFX::Rendering::IRenderPass
 ~IRenderPass () noexcept override=default
 
SharedPtr< const IFrameBufferactiveFrameBuffer () const noexcept
 Returns the current frame buffer from of the render pass.
 
const ICommandQueuecommandQueue () const noexcept
 Returns the command queue, the render pass is executing on or nullptr, if the queue has already been released.
 
Enumerable< SharedPtr< const ICommandBuffer > > commandBuffers () const
 Returns all command buffers, that can be currently used for recording multi-threaded commands in the render pass.
 
SharedPtr< const ICommandBuffercommandBuffer (UInt32 index) const
 Returns a command buffer that can be currently used for recording multi-threaded commands in the render pass.
 
virtual UInt32 secondaryCommandBuffers () const noexcept=0
 Returns the number of secondary command buffers the render pass stores for multi-threaded command recording.
 
virtual const Array< RenderTarget > & renderTargets () const noexcept=0
 Returns the list of render targets, the render pass renders into.
 
virtual const RenderTargetrenderTarget (UInt32 location) const =0
 Returns the render target mapped to the location provided by location .
 
virtual bool hasPresentTarget () const noexcept=0
 Returns true, if one of the render targets is used for presentation on a swap chain.
 
virtual const Array< RenderPassDependency > & inputAttachments () const noexcept=0
 Returns the input attachment the render pass is consuming.
 
virtual const RenderPassDependencyinputAttachment (UInt32 location) const =0
 Returns the input attachment at a location .
 
virtual const Optional< DescriptorBindingPoint > & inputAttachmentSamplerBinding () const noexcept=0
 Returns the binding point for input attachment samplers.
 
void begin (const IFrameBuffer &frameBuffer) const
 Begins the render pass.
 
virtual UInt64 end () const =0
 Ends the render pass.
 
- Public Member Functions inherited from LiteFX::SharedObject
virtual ~SharedObject () noexcept=default
 Destroys the shared object.
 
template<typename TSelf >
auto shared_from_this (this TSelf &&self) noexcept
 Returns a shared pointer to the current object instance.
 
template<typename TSelf >
auto weak_from_this (this TSelf &&self) noexcept -> WeakPtr< std::remove_reference_t< TSelf > >
 Returns a weak pointer to the current object instance.
 

Protected Member Functions

 RenderPass () noexcept=default
 
 RenderPass (RenderPass &&) noexcept=default
 
 RenderPass (const RenderPass &)=default
 
RenderPassoperator= (RenderPass &&) noexcept=default
 
RenderPassoperator= (const RenderPass &)=default
 
- Protected Member Functions inherited from LiteFX::Rendering::StateResource
 StateResource ()
 Initializes a new state resource instance with a default name.
 
 StateResource (StringView name)
 Initializes a new state resource instance.
 
 StateResource (StateResource &&) noexcept
 
StateResourceoperator= (StateResource &&) noexcept
 
 StateResource (const StateResource &)=delete
 
StateResourceoperator= (const StateResource &)=delete
 
Stringname () noexcept
 
- 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
 
- Protected Member Functions inherited from LiteFX::Rendering::IRenderPass
 IRenderPass () noexcept=default
 
 IRenderPass (IRenderPass &&) noexcept=default
 
 IRenderPass (const IRenderPass &)=delete
 
IRenderPassoperator= (IRenderPass &&) noexcept=default
 
IRenderPassoperator= (const IRenderPass &)=delete
 
- Protected Member Functions inherited from LiteFX::SharedObject
 SharedObject () noexcept=default
 Initializes a new shared object.
 
 SharedObject (SharedObject &&) noexcept=default
 
 SharedObject (const SharedObject &)=default
 
SharedObjectoperator= (SharedObject &&) noexcept=default
 
SharedObjectoperator= (const SharedObject &)=default
 

Additional Inherited Members

- Public Attributes inherited from LiteFX::Rendering::IRenderPass
Event< BeginEventArgsbeginning
 Invoked, when the render pass is beginning.
 
Event< EventArgsending
 Invoked, when the render pass is ending.
 
- Static Protected Member Functions inherited from LiteFX::SharedObject
template<typename T , typename... TArgs>
static auto create (TArgs &&... args) -> SharedPtr< T >
 Generic factory method used to create instances of the shared object.
 

Detailed Description

template<typename TCommandQueue, typename TFrameBuffer>
requires meta::implements<TCommandQueue, CommandQueue<typename TCommandQueue::command_buffer_type>> && meta::implements<TFrameBuffer, FrameBuffer<typename TFrameBuffer::image_type>>
class LiteFX::Rendering::RenderPass< TCommandQueue, TFrameBuffer >

Represents a render pass.

A render pass is a conceptual layer, that may not have any logical representation within the actual implementation. It is a high-level view on a specific workload on the GPU, that processes data using different RenderPipelines and stores the outputs in the IRenderTargets of a FrameBuffer.

Template Parameters
TRenderPipelineThe type of the render pipeline. Must implement RenderPipeline.
TCommandQueueThe type of the command queue. Must implement CommandQueue.
TFrameBufferThe type of the frame buffer. Must implement FrameBuffer.

Member Typedef Documentation

◆ command_buffer_type

template<typename TCommandQueue , typename TFrameBuffer >
using LiteFX::Rendering::RenderPass< TCommandQueue, TFrameBuffer >::command_buffer_type = TCommandQueue::command_buffer_type

◆ command_queue_type

template<typename TCommandQueue , typename TFrameBuffer >
using LiteFX::Rendering::RenderPass< TCommandQueue, TFrameBuffer >::command_queue_type = TCommandQueue

◆ frame_buffer_type

template<typename TCommandQueue , typename TFrameBuffer >
using LiteFX::Rendering::RenderPass< TCommandQueue, TFrameBuffer >::frame_buffer_type = TFrameBuffer

Constructor & Destructor Documentation

◆ RenderPass() [1/3]

template<typename TCommandQueue , typename TFrameBuffer >
LiteFX::Rendering::RenderPass< TCommandQueue, TFrameBuffer >::RenderPass ( )
protecteddefaultnoexcept

◆ RenderPass() [2/3]

template<typename TCommandQueue , typename TFrameBuffer >
LiteFX::Rendering::RenderPass< TCommandQueue, TFrameBuffer >::RenderPass ( RenderPass< TCommandQueue, TFrameBuffer > && )
protecteddefaultnoexcept

◆ RenderPass() [3/3]

template<typename TCommandQueue , typename TFrameBuffer >
LiteFX::Rendering::RenderPass< TCommandQueue, TFrameBuffer >::RenderPass ( const RenderPass< TCommandQueue, TFrameBuffer > & )
protecteddefault

◆ ~RenderPass()

template<typename TCommandQueue , typename TFrameBuffer >
LiteFX::Rendering::RenderPass< TCommandQueue, TFrameBuffer >::~RenderPass ( )
overridedefaultnoexcept

Member Function Documentation

◆ activeFrameBuffer()

template<typename TCommandQueue , typename TFrameBuffer >
virtual SharedPtr< const frame_buffer_type > LiteFX::Rendering::RenderPass< TCommandQueue, TFrameBuffer >::activeFrameBuffer ( ) const
pure virtualnoexcept

◆ begin()

template<typename TCommandQueue , typename TFrameBuffer >
virtual void LiteFX::Rendering::RenderPass< TCommandQueue, TFrameBuffer >::begin ( const frame_buffer_type & frameBuffer) const
pure virtual

◆ commandBuffer()

template<typename TCommandQueue , typename TFrameBuffer >
virtual SharedPtr< const command_buffer_type > LiteFX::Rendering::RenderPass< TCommandQueue, TFrameBuffer >::commandBuffer ( UInt32 index) const
pure virtual

◆ commandBuffers()

template<typename TCommandQueue , typename TFrameBuffer >
virtual Enumerable< SharedPtr< const command_buffer_type > > LiteFX::Rendering::RenderPass< TCommandQueue, TFrameBuffer >::commandBuffers ( ) const
pure virtual

◆ commandQueue()

template<typename TCommandQueue , typename TFrameBuffer >
virtual const command_queue_type & LiteFX::Rendering::RenderPass< TCommandQueue, TFrameBuffer >::commandQueue ( ) const
pure virtualnoexcept

◆ operator=() [1/2]

template<typename TCommandQueue , typename TFrameBuffer >
RenderPass & LiteFX::Rendering::RenderPass< TCommandQueue, TFrameBuffer >::operator= ( const RenderPass< TCommandQueue, TFrameBuffer > & )
protecteddefault

◆ operator=() [2/2]

template<typename TCommandQueue , typename TFrameBuffer >
RenderPass & LiteFX::Rendering::RenderPass< TCommandQueue, TFrameBuffer >::operator= ( RenderPass< TCommandQueue, TFrameBuffer > && )
protecteddefaultnoexcept