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 RenderingConfiguration &config, const std::string &name)
 
void update (uint32 frameIndex) override
 
void updatePipelines (const std::unordered_map< pipeline_id, std::vector< std::shared_ptr< Material >>> &pipelineIds) override
 
void resize (const vireo::Extent &extent, const std::shared_ptr< vireo::CommandList > &commandList) override
 
std::shared_ptr< vireo::RenderTarget > getBloomColorAttachment (const uint32 frameIndex) const override
 
- Public Member Functions inherited from Renderer
 Renderer (const RenderingConfiguration &config, bool withStencil, const std::string &name)
 
std::shared_ptr< vireo::RenderTarget > getColorAttachment (uint32 frameIndex) const
 
auto getColorRenderTarget (const uint32 frameIndex) const
 
auto getDepthRenderTarget (const uint32 frameIndex) const
 
void updatePipelines (const Scene &scene)
 
void compute (vireo::CommandList &commandList, Scene &scene, uint32 frameIndex) const
 
void preRender (vireo::CommandList &commandList, const Scene &scene, uint32 frameIndex)
 
void render (vireo::CommandList &commandList, const Scene &scene, bool clearAttachment, uint32 frameIndex)
 
void postprocess (vireo::CommandList &commandList, const vireo::Viewport &viewport, const vireo::Rect &scissor, uint32 frameIndex)
 
void addPostprocessing (const std::string &fragShaderName, vireo::ImageFormat outputFormat, void *data=nullptr, uint32 dataSize=0)
 
void removePostprocessing (const std::string &fragShaderName)
 
virtual ~Renderer () = default
 
 Renderer (Renderer &) = delete
 
Renderer & operator= (Renderer &) = delete
 

Protected Member Functions

void colorPass (vireo::CommandList &commandList, const Scene &scene, const std::shared_ptr< vireo::RenderTarget > &colorAttachment, const std::shared_ptr< vireo::RenderTarget > &depthAttachment, bool clearAttachment, uint32 frameIndex) override
 
- Protected Member Functions inherited from Renderer
void updateBlurData (BlurData &blurData, const vireo::Extent &extent, float strength) const
 

Additional Inherited Members

- Protected Attributes inherited from Renderer
const RenderingConfigurationconfig
 
const std::string name
 
const bool withStencil
 

Constructor & Destructor Documentation

DeferredRenderer ( const RenderingConfiguration config,
const std::string &  name 
)

Constructs a deferred renderer instance.

Parameters
configRendering configuration (attachments, frames in flight).
nameHuman-readable name for debugging.

Member Function Documentation

void colorPass ( vireo::CommandList &  commandList,
const Scene scene,
const std::shared_ptr< vireo::RenderTarget > &  colorAttachment,
const std::shared_ptr< vireo::RenderTarget > &  depthAttachment,
bool  clearAttachment,
uint32  frameIndex 
)
overrideprotectedvirtual

Records G-Buffer population then lighting resolve into color attachment.

Implements lysa::Renderer::colorPass()

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

Returns the brightness buffer used for bloom extraction.

Implements lysa::Renderer::getBloomColorAttachment()

void resize ( const vireo::Extent &  extent,
const std::shared_ptr< vireo::CommandList > &  commandList 
)
overridevirtual

Recreates attachments/pipelines after a resize.

Reimplemented from lysa::Renderer::resize()

void update ( uint32  frameIndex)
overridevirtual

Performs per-frame housekeeping (e.g., SSAO/bloom data updates).

Reimplemented from lysa::Renderer::update()

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

Updates/creates pipelines following the materials mapping.

Reimplemented from lysa::Renderer::updatePipelines()