Lysa  0.0
Lysa 3D Engine
ForwardRenderer Class Reference

Detailed Description

Forward rendering path.

Renders opaque geometry directly to the color/depth attachments using a single forward pass, then handles transparency and optional bloom. Suitable for scenes with many materials requiring complex shading (PBR, alpha test, etc.) without a G-Buffer.

+ Inheritance diagram for ForwardRenderer:

Public Member Functions

 ForwardRenderer (const RendererConfiguration &config, vireo::ImageFormat outputFormat)
 
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
 
- Public Member Functions inherited from Renderer
virtual std::shared_ptr< vireo::RenderTarget > getColorAttachment (const uint32 frameIndex) const
 
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 update (uint32 frameIndex) override
 
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

ForwardRenderer ( const RendererConfiguration config,
vireo::ImageFormat  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 brightness buffer used for bloom extraction.

Implements lysa::Renderer::getBrightnessAttachment()

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)
overrideprotectedvirtual

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()