Foray Library
rapid prototyping framework for crossplatform development of vulkan hardware ray tracing applications
|
Render stage base class giving a common interface for rendering processes. More...
#include <foray_renderstage.hpp>
Public Member Functions | |
RenderStage ()=default | |
virtual void | RecordFrame (VkCommandBuffer cmdBuffer, base::FrameRenderInfo &renderInfo) |
Records a frame to cmdBuffer. | |
virtual void | Destroy () |
Destroy the render stage. Finalizes all components. | |
virtual void | Resize (const VkExtent2D &extent) |
Default implementation accesses mImageOutputs and calls ManagedImage::Resize(extent) on any set image. | |
std::vector< core::ManagedImage * > | GetImageOutputs () |
Gets a vector to all color attachments that will be included in a texture array and can be referenced in the shader pass. | |
core::ManagedImage * | GetImageOutput (std::string_view name, bool noThrow=false) |
Gets an image output. | |
virtual void | OnShadersRecompiled (const std::unordered_set< uint64_t > &recompiled) |
Notifies the stage that the shader compiler instance has recompiled a shader. | |
virtual | ~RenderStage () |
Protected Member Functions | |
virtual void | ReloadShaders () |
Override this to reload all shaders and rebuild pipelines after a registered shader has been recompiled. | |
virtual void | DestroyOutputImages () |
Calls Destroy() on any image in mImageOutputs and clears mImageOutputs. | |
Protected Attributes | |
std::unordered_map< std::string, core::ManagedImage * > | mImageOutputs |
Inheriting types should emplace their images onto this collection to provide them in GetImageOutput interface. | |
std::vector< uint64_t > | mShaderKeys |
Inheriting types should emplace their shader keys onto this collection such that if a shader has been recompiled, ReloadShaders() will be called. | |
core::Context * | mContext = nullptr |
Context object the renderstage is built upon. | |
Render stage base class giving a common interface for rendering processes.
|
default |
|
inlinevirtual |
|
inlinevirtual |
Destroy the render stage. Finalizes all components.
Reimplemented in foray::stages::ComparerStage, foray::stages::ComputeStageBase, foray::stages::DefaultRaytracingStageBase, foray::stages::GBufferStage, foray::stages::ImguiStage, and foray::stages::MinimalRaytracingStageBase.
|
protectedvirtual |
Calls Destroy() on any image in mImageOutputs and clears mImageOutputs.
core::ManagedImage * foray::stages::RenderStage::GetImageOutput | ( | std::string_view | name, |
bool | noThrow = false |
||
) |
Gets an image output.
name | Identifier |
noThrow | If set, will return nullptr instead of throwing std::exception if no match is found |
std::vector< core::ManagedImage * > foray::stages::RenderStage::GetImageOutputs | ( | ) |
Gets a vector to all color attachments that will be included in a texture array and can be referenced in the shader pass.
|
virtual |
Notifies the stage that the shader compiler instance has recompiled a shader.
Implementation will check through shaders registered in 'mShaderKeys'. If any of them have been marked as recompiled, calls ReloadShaders()
|
inlinevirtual |
Records a frame to cmdBuffer.
cmdBuffer | Command buffer to record to |
renderInfo | Additional information about the current frame being rendered |
Reimplemented in foray::stages::BlitStage, foray::stages::ComparerStage, foray::stages::ComputeStageBase, foray::stages::DefaultRaytracingStageBase, foray::stages::GBufferStage, foray::stages::ImageToSwapchainStage, foray::stages::ImguiStage, and foray::stages::MinimalRaytracingStageBase.
|
inlineprotectedvirtual |
Override this to reload all shaders and rebuild pipelines after a registered shader has been recompiled.
Reimplemented in foray::stages::ComputeStageBase, foray::stages::DefaultRaytracingStageBase, and foray::stages::MinimalRaytracingStageBase.
|
virtual |
Default implementation accesses mImageOutputs and calls ManagedImage::Resize(extent) on any set image.
extent | New render size |
Reimplemented in foray::stages::ComparerStage, foray::stages::DefaultRaytracingStageBase, foray::stages::GBufferStage, foray::stages::ImguiStage, and foray::stages::MinimalRaytracingStageBase.
|
protected |
Context object the renderstage is built upon.
|
protected |
Inheriting types should emplace their images onto this collection to provide them in GetImageOutput interface.
|
protected |
Inheriting types should emplace their shader keys onto this collection such that if a shader has been recompiled, ReloadShaders() will be called.