61 template <
typename FSetup,
typename FRecord>
General Purpose Allocator (GPA) interface.
Definition Allocator.hpp:24
Definition Command.hpp:35
Base class for all RHI objects.
Definition Details.hpp:16
Scoped move-only RAII handle wrapper for RHI Objects.
Definition Details.hpp:86
Interface for a render pass.
Definition RenderPass.hpp:16
virtual void Setup(PassHandle self, Renderer *r)=0
Perform any setup required for this pass. This may include creating resources, declaring resource acc...
RenderPass()=default
Constructor. You may also create resources here for early setup. However, access declaration must be ...
virtual void Record(PassHandle self, Renderer *r, RHICommandList *cmd)=0
Record the commands of this pass into the given command list.
Renderer implementing a Frame Graph system with automatic resource tracking and synchronization.
Definition Renderer.hpp:78
std::vector< T, StlAllocator< T > > Vector
std::vector with explicit Foundation::Core::StlAllocator constructor
Definition Container.hpp:130
std::basic_string< char > String
Alias for std::basic_string<char>, without an explicit allocator constructor.
Definition Container.hpp:112
std::tuple< Args... > Tuple
Alias for std::tuple
Definition Container.hpp:38
std::basic_string_view< char > StringView
Alias for std::basic_string_view<char>
Definition Container.hpp:55
std::unique_ptr< T, Deleter > UniquePtr
std::unique_ptr with custom deleter that uses a Foundation::Core::Allocator to deallocate memory.
Definition Allocator.hpp:166
T * Construct(Allocator *resource, Args &&...args)
Convenience placement new with object of type T using a Foundation::Core::Allocator.
Definition Allocator.hpp:149
std::optional< T > Optional
Alias for std::optional
Definition Container.hpp:26
RHITextureLayout
Definition Common.hpp:144
RHIDeviceQueueType
Definition Common.hpp:107
static constexpr Handle kInvalidHandle
Definition Details.hpp:9
Core functionalities for rendering, including the Frame Graph implementation.
Definition Bindless.cpp:2
size_t ResourceHandle
Definition RenderPass.hpp:11
size_t PassHandle
Definition RenderPass.hpp:10
Definition PipelineState.hpp:79
Definition PipelineState.hpp:55
Definition Resource.hpp:124
Default "no-op" functor for Record()
Definition RenderPass.hpp:53
void operator()(PassHandle, Renderer *, RHICommandList *) const
Definition RenderPass.hpp:54
Default "no-op" functor for Setup()
Definition RenderPass.hpp:46
void operator()(PassHandle, Renderer *) const
Definition RenderPass.hpp:47
Functional wrapper for a render pass.
Definition RenderPass.hpp:63
LambdaPass(FSetup &&setup, FRecord &&record)
Definition RenderPass.hpp:66
void Record(PassHandle self, Renderer *r, RHICommandList *cmd) override
Record the commands of this pass into the given command list.
Definition RenderPass.hpp:71
FRecord mRecord
Definition RenderPass.hpp:65
void Setup(PassHandle self, Renderer *r) override
Perform any setup required for this pass. This may include creating resources, declaring resource acc...
Definition RenderPass.hpp:70
FSetup mSetup
Definition RenderPass.hpp:64
Internal tracking information for a render pass in the frame graph.
Definition RenderPass.hpp:77
size_t frameExec
Definition RenderPass.hpp:94
int priority
Definition RenderPass.hpp:80
RHIPipelineState::PipelineStateDesc::DepthStencil psoDepthStencil
Definition RenderPass.hpp:139
ResourceHandle dsv
Definition RenderPass.hpp:123
Vector< RHIPipelineState::PipelineStateDesc::VertexInput::Binding > vertexInputBindings
Definition RenderPass.hpp:125
Vector< RHIDeviceDescriptorSetLayout * > pDescriptorLayouts
Definition RenderPass.hpp:143
RHIPipelineStageBits piplineStages
Definition RenderPass.hpp:134
Vector< Tuple< ResourceHandle, RHIResourceAccess, RHIPipelineStage, RHITextureSubresourceRange, RHITextureLayout > > textureUsages
Definition RenderPass.hpp:99
UniquePtr< RenderPass > pass
Definition RenderPass.hpp:128
Vector< RHIDeviceDescriptorSet * > pDescriptorSets
Definition RenderPass.hpp:147
RHIDeviceQueueType queue
Definition RenderPass.hpp:82
RHIPipelineState::PipelineStateDesc::Rasterizer psoRasterizer
Definition RenderPass.hpp:138
int groupIndex
Definition RenderPass.hpp:132
size_t ord
Definition RenderPass.hpp:93
Vector< Tuple< String, String, RHIShaderStage, Vector< char > > > shaders
Definition RenderPass.hpp:108
Vector< Tuple< ResourceHandle, RHIDescriptorType, String > > textureBindings
Definition RenderPass.hpp:110
Vector< Pair< ResourceHandle, String > > samplers
Definition RenderPass.hpp:115
RHIDeviceScopedHandle< RHIPipelineState > pso
Definition RenderPass.hpp:136
Vector< RHIDeviceScopedHandle< RHIDeviceDescriptorSetLayout > > descriptorLayouts
Definition RenderPass.hpp:141
Vector< RHIPipelineState::PipelineStateDesc::PushConstant > pushConstants
Definition RenderPass.hpp:117
Optional< RHIPipelineState::PipelineStateDesc::Attachment::Blending > backbufferRTV
Definition RenderPass.hpp:85
bool used
Definition RenderPass.hpp:83
Vector< RHIVertexAttribute > vertexInputAttributes
Definition RenderPass.hpp:126
Vector< Tuple< ResourceHandle, RHIDescriptorType, String > > bufferBindings
Definition RenderPass.hpp:110
Vector< Tuple< size_t, RHIDeviceDescriptorSetLayout * > > pExternalDescriptorSets
Definition RenderPass.hpp:149
Vector< Tuple< RHIShaderStage, size_t, Vector< char > > > specializationConstants
Definition RenderPass.hpp:119
Vector< RHIDeviceDescriptorPoolScopedHandle< RHIDeviceDescriptorSet > > descriptorSets
Definition RenderPass.hpp:145
PassHandle handle
Definition RenderPass.hpp:79
Tuple< uint32_t, uint32_t, uint32_t > groupLocalSize
Definition RenderPass.hpp:91
Vector< ResourceHandle > texviews
Definition RenderPass.hpp:105
Vector< Tuple< ResourceHandle, RHIResourceAccess, RHIPipelineStage > > bufferUsages
Definition RenderPass.hpp:101
Optional< int > backbufferUAV
Definition RenderPass.hpp:86
size_t depth
Definition RenderPass.hpp:92
Vector< PassHandle > bindPasses
Definition RenderPass.hpp:96
Vector< Pair< ResourceHandle, RHIPipelineState::PipelineStateDesc::Attachment::Blending > > rtvs
Definition RenderPass.hpp:121
bool isComputePass
Definition RenderPass.hpp:89
Vector< ResourceHandle > resources
Definition RenderPass.hpp:103
String name
Definition RenderPass.hpp:78
Vector< Tuple< String, RHIDeviceDescriptorSetLayout *, int > > externalBindings
Definition RenderPass.hpp:113
void ResetPipeline()
Definition RenderPass.cpp:11