61 template <
typename FSetup,
typename FRecord>
161 return RHIDevicePipelineType::Graphics;
General Purpose Allocator (GPA) interface.
Definition Allocator.hpp:24
Definition Command.hpp:42
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:89
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:148
uintptr_t Handle
Definition Details.hpp:8
RHIDeviceQueueType
Definition Common.hpp:109
static constexpr Handle kInvalidHandle
Definition Details.hpp:9
Core functionalities for rendering, including the Frame Graph implementation.
Definition Bindless.cpp:2
Handle ResourceHandle
Definition RenderPass.hpp:11
Handle PassHandle
Definition RenderPass.hpp:10
Definition PipelineState.hpp:79
Definition PipelineState.hpp:55
Definition Resource.hpp:141
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:97
int priority
Definition RenderPass.hpp:80
RHIPipelineState::PipelineStateDesc::DepthStencil psoDepthStencil
Definition RenderPass.hpp:144
ResourceHandle dsv
Definition RenderPass.hpp:128
Vector< RHIPipelineState::PipelineStateDesc::VertexInput::Binding > vertexInputBindings
Definition RenderPass.hpp:130
Vector< RHIDeviceDescriptorSetLayout * > pDescriptorLayouts
Definition RenderPass.hpp:148
RHIPipelineStageBits piplineStages
Definition RenderPass.hpp:139
Vector< Tuple< ResourceHandle, RHIResourceAccess, RHIPipelineStage, RHITextureSubresourceRange, RHITextureLayout > > textureUsages
Definition RenderPass.hpp:102
UniquePtr< RenderPass > pass
Definition RenderPass.hpp:133
Vector< RHIDeviceDescriptorSet * > pDescriptorSets
Definition RenderPass.hpp:152
RHIDeviceQueueType queue
Definition RenderPass.hpp:82
RHIPipelineState::PipelineStateDesc::Rasterizer psoRasterizer
Definition RenderPass.hpp:143
int groupIndex
Definition RenderPass.hpp:137
size_t ord
Definition RenderPass.hpp:96
Vector< Tuple< ResourceHandle, RHIDescriptorType, String > > textureBindings
Definition RenderPass.hpp:115
Vector< Pair< ResourceHandle, String > > samplers
Definition RenderPass.hpp:120
RHIDeviceScopedHandle< RHIPipelineState > pso
Definition RenderPass.hpp:141
Vector< RHIDeviceScopedHandle< RHIDeviceDescriptorSetLayout > > descriptorLayouts
Definition RenderPass.hpp:146
bool isRayTracingPass
Definition RenderPass.hpp:92
Vector< RHIPipelineState::PipelineStateDesc::PushConstant > pushConstants
Definition RenderPass.hpp:122
Vector< Tuple< ResourceHandle, RHIResourceAccess, RHIPipelineStage > > asUsages
Definition RenderPass.hpp:106
Optional< RHIPipelineState::PipelineStateDesc::Attachment::Blending > backbufferRTV
Definition RenderPass.hpp:85
bool used
Definition RenderPass.hpp:83
Vector< RHIVertexAttribute > vertexInputAttributes
Definition RenderPass.hpp:131
Vector< Tuple< ResourceHandle, RHIDescriptorType, String > > bufferBindings
Definition RenderPass.hpp:115
Vector< Tuple< size_t, RHIDeviceDescriptorSetLayout * > > pExternalDescriptorSets
Definition RenderPass.hpp:154
Vector< Tuple< RHIShaderStage, size_t, Vector< char > > > specializationConstants
Definition RenderPass.hpp:124
Vector< RHIDeviceDescriptorPoolScopedHandle< RHIDeviceDescriptorSet > > descriptorSets
Definition RenderPass.hpp:150
Vector< Tuple< ResourceHandle, RHIDescriptorType, String > > asBindings
Definition RenderPass.hpp:115
PassHandle handle
Definition RenderPass.hpp:79
Tuple< uint32_t, uint32_t, uint32_t > groupLocalSize
Definition RenderPass.hpp:94
Vector< Tuple< String, String, RHIShaderStage, Vector< char >, uint32_t > > shaders
Definition RenderPass.hpp:113
Vector< ResourceHandle > texviews
Definition RenderPass.hpp:110
Vector< Tuple< ResourceHandle, RHIResourceAccess, RHIPipelineStage > > bufferUsages
Definition RenderPass.hpp:104
Optional< int > backbufferUAV
Definition RenderPass.hpp:86
size_t depth
Definition RenderPass.hpp:95
Vector< PassHandle > bindPasses
Definition RenderPass.hpp:99
Vector< Pair< ResourceHandle, RHIPipelineState::PipelineStateDesc::Attachment::Blending > > rtvs
Definition RenderPass.hpp:126
bool isComputePass
Definition RenderPass.hpp:89
Vector< ResourceHandle > resources
Definition RenderPass.hpp:108
String name
Definition RenderPass.hpp:78
Vector< Tuple< String, RHIDeviceDescriptorSetLayout *, int > > externalBindings
Definition RenderPass.hpp:118
void ResetPipeline()
Definition RenderPass.cpp:11
RHIDevicePipelineType GetPipelineType() const
Definition RenderPass.hpp:157