Lysa  0.0
Lysa 3D Engine
DeferredRenderer Class Reference

Detailed Description

Deferred rendering path.

Renders geometry into a G-Buffer (position, normal, albedo, emissive), then performs lighting as a full-screen pass, followed by transparency and optional SSAO and bloom post-processing.

+ Inheritance diagram for DeferredRenderer:

Public Member Functions

 DeferredRenderer (const RendererConfiguration &config, vireo::ImageFormat outputFormat)
 
void update (uint32 frameIndex) override
 
void updatePipelines (const std::unordered_map< pipeline_id, std::vector< unique_id >> &pipelineIds) override
 
void resize (const vireo::Extent &extent, const std::shared_ptr< vireo::CommandList > &commandList) override
 
std::shared_ptr< vireo::RenderTarget > getBrightnessAttachment (const uint32 frameIndex) const override
 
std::shared_ptr< vireo::RenderTarget > getColorAttachment (const uint32 frameIndex) const override
 
GBufferPassgetGBufferPass ()
 
SSAOPassgetSSAOPass () const
 
SSRPassgetSSRPass () const
 
PostProcessinggetSSAOBlurPass () const
 
- Public Member Functions inherited from Renderer
auto getDepthAttachment (const uint32 frameIndex) const
 
std::shared_ptr< vireo::RenderTarget > getCurrentColorAttachment (uint32 frameIndex) const
 
void updatePipelines (const SceneFrameData &scene)
 
void prepare (vireo::CommandList &commandList, const SceneFrameData &scene, const vireo::Viewport &viewport, const vireo::Rect &scissors, uint32 frameIndex)
 
void render (vireo::CommandList &commandList, const SceneFrameData &scene, const vireo::Viewport &viewport, const vireo::Rect &scissors, bool clearAttachment, uint32 frameIndex)
 
void postprocess (vireo::CommandList &commandList, uint32 frameIndex)
 
void addPostprocessing (PostProcessing &postProcessingPass)
 
void removePostprocessing (const std::string &fragShaderName)
 
void removePostprocessing (const PostProcessing &postProcessingPass)
 
TransparencyPassgetTransparencyPass ()
 
SMAAPassgetSMAAPass () const
 
BloomPassgetBloomPass () const
 
const auto & getExtent () const
 
virtual ~Renderer () = default
 
 Renderer (Renderer &) = delete
 
Renderer & operator= (Renderer &) = delete
 

Protected Member Functions

void colorPass (vireo::CommandList &commandList, const SceneFrameData &scene, const vireo::Viewport &viewport, const vireo::Rect &scissors, bool clearAttachment, uint32 frameIndex) override
 
- Protected Member Functions inherited from Renderer
 Renderer (const RendererConfiguration &config, vireo::ImageFormat outputFormat)
 

Additional Inherited Members

- Static Public Member Functions inherited from Renderer
static std::unique_ptr< Renderer > create (const RendererConfiguration &config, vireo::ImageFormat outputFormat)
 
- Protected Attributes inherited from Renderer
const bool withStencil
 
const RendererConfiguration config
 
std::vector< FrameDataframesData
 
DepthPrepass depthPrePass
 

Constructor & Destructor Documentation

DeferredRenderer ( const RendererConfiguration config,
vireo::ImageFormat  outputFormat 
)

Constructs a deferred renderer instance.

Parameters
configRendering configuration (attachments, frames in flight).
outputFormat

Member Function Documentation

void colorPass ( vireo::CommandList &  commandList,
const SceneFrameData scene,
const vireo::Viewport &  viewport,
const vireo::Rect &  scissors,
bool  clearAttachment,
uint32  frameIndex 
)
overrideprotectedvirtual
std::shared_ptr<vireo::RenderTarget> getBrightnessAttachment ( const uint32  frameIndex) const
inlineoverridevirtual

Returns the color buffer used for bloom extraction for a frame.

Implements lysa::Renderer::getBrightnessAttachment()

std::shared_ptr<vireo::RenderTarget> getColorAttachment ( const uint32  frameIndex) const
inlineoverridevirtual

Accessor for the color render target of the current frame.

Reimplemented from lysa::Renderer::getColorAttachment()

GBufferPass& getGBufferPass ( )
inline
PostProcessing& getSSAOBlurPass ( ) const
inline
SSAOPass& getSSAOPass ( ) const
inline
SSRPass& getSSRPass ( ) const
inline
void resize ( const vireo::Extent &  extent,
const std::shared_ptr< vireo::CommandList > &  commandList 
)
overridevirtual

Recreates attachments/pipelines after a render target resize.

Parameters
extentNew swap chain extent.
commandListCommand list used for any required transitions/copies.

Reimplemented from lysa::Renderer::resize()

void update ( uint32  frameIndex)
overridevirtual

Performs per-frame housekeeping (e.g., pass-local data updates).

Reimplemented from lysa::Renderer::update()

void updatePipelines ( const std::unordered_map< pipeline_id, std::vector< unique_id >> &  pipelineIds)
overridevirtual

Updates graphics pipelines according to the provided materials mapping.

Parameters
pipelineIdsMap of pipeline family id to materials.

Reimplemented from lysa::Renderer::updatePipelines()