VisuTwin Canvas
C++ 3D Engine — Metal Backend
Loading...
Searching...
No Matches
renderPassUpdateClustered.h
Go to the documentation of this file.
1// SPDX-License-Identifier: Apache-2.0
2// Copyright 2025-2026 Arnis Lektauers
3//
4// Created by Arnis Lektauers on 11.09.2025.
5//
6#pragma once
7
10#include "shadowRenderer.h"
11#include "shadowRendererLocal.h"
14#include "scene/frameGraph.h"
15#include "scene/light.h"
16
17namespace visutwin::canvas {
18 /*
19 * A render pass used to update clustered lighting data - shadows, cookies, world clusters
20 */
22 {
23 public:
24 RenderPassUpdateClustered(const std::shared_ptr<GraphicsDevice>& device, Renderer* renderer, ShadowRenderer* shadowRenderer,
25 ShadowRendererLocal* shadowRendererLocal, LightTextureAtlas* lightTextureAtlas);
26
27 // Updates the render pass with current lighting data
28 void update(FrameGraph* frameGraph, bool shadowsEnabled, bool cookiesEnabled,
29 const std::vector<Light*>& lights, const std::vector<Light*>& localLights);
30
31 private:
32 FrameGraph* _frameGraph;
33
34 // Render cookies for all local visible lights
35 std::shared_ptr<RenderPassCookieRenderer> _cookiesRenderPass;
36
37 // Local shadows - these are shared by all cameras
38 std::shared_ptr<RenderPassShadowLocalClustered> _shadowRenderPass;
39 };
40}
std::shared_ptr< GraphicsDevice > device() const
Definition renderPass.h:124
RenderPass(const std::shared_ptr< GraphicsDevice > &device)
Definition renderPass.h:66
RenderPassUpdateClustered(const std::shared_ptr< GraphicsDevice > &device, Renderer *renderer, ShadowRenderer *shadowRenderer, ShadowRendererLocal *shadowRendererLocal, LightTextureAtlas *lightTextureAtlas)
void update(FrameGraph *frameGraph, bool shadowsEnabled, bool cookiesEnabled, const std::vector< Light * > &lights, const std::vector< Light * > &localLights)