VisuTwin Canvas
C++ 3D Engine — Metal Backend
Loading...
Searching...
No Matches
shadowRendererLocal.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
8
#include <
scene/frameGraph.h
>
9
10
#include "
shadowRenderer.h
"
11
#include "
shadowMap.h
"
12
#include "
scene/camera.h
"
13
#include "
scene/light.h
"
14
15
namespace
visutwin::canvas
16
{
17
class
ShadowRendererLocal
18
{
19
public
:
20
ShadowRendererLocal
(
Renderer
* renderer,
ShadowRenderer
* shadowRenderer) : _renderer(renderer), _shadowRenderer(shadowRenderer) {}
21
22
Camera
*
prepareLights
(std::vector<Light*>&
shadowLights
,
const
std::vector<Light*>& lights);
23
24
std::vector<Light*>&
shadowLights
() {
return
_shadowLights; }
25
26
// Prepare render passes for rendering of shadows for local non-clustered lights.
27
// Each shadow face is a separate render pass as it renders to a separate render target.
28
void
buildNonClusteredRenderPasses
(
FrameGraph
* frameGraph,
const
std::vector<Light*>& localLights);
29
30
// Position shadow cameras for local (spot/point) lights and allocate shadow maps.
31
// Mirrors Renderer::cullShadowmaps() but for local lights.
32
void
cullLocalLights
(
const
std::vector<Light*>& localLights,
33
const
std::shared_ptr<GraphicsDevice>& device,
34
std::vector<std::unique_ptr<ShadowMap>>& ownedShadowMaps);
35
36
private
:
37
Renderer
* _renderer;
38
ShadowRenderer
* _shadowRenderer;
39
40
std::shared_ptr<GraphicsDevice> _device;
41
42
// Temporary list to collect lights to render shadows for
43
std::vector<Light*> _shadowLights;
44
};
45
}
camera.h
visutwin::canvas::Camera
Perspective or orthographic camera with projection matrix, jitter (TAA), and render target binding.
Definition
camera.h:40
visutwin::canvas::FrameGraph
Definition
frameGraph.h:19
visutwin::canvas::Renderer
Definition
renderer.h:29
visutwin::canvas::ShadowRenderer
Definition
shadowRenderer.h:17
visutwin::canvas::ShadowRendererLocal::buildNonClusteredRenderPasses
void buildNonClusteredRenderPasses(FrameGraph *frameGraph, const std::vector< Light * > &localLights)
Definition
shadowRendererLocal.cpp:34
visutwin::canvas::ShadowRendererLocal::ShadowRendererLocal
ShadowRendererLocal(Renderer *renderer, ShadowRenderer *shadowRenderer)
Definition
shadowRendererLocal.h:20
visutwin::canvas::ShadowRendererLocal::prepareLights
Camera * prepareLights(std::vector< Light * > &shadowLights, const std::vector< Light * > &lights)
Definition
shadowRendererLocal.cpp:18
visutwin::canvas::ShadowRendererLocal::cullLocalLights
void cullLocalLights(const std::vector< Light * > &localLights, const std::shared_ptr< GraphicsDevice > &device, std::vector< std::unique_ptr< ShadowMap > > &ownedShadowMaps)
Definition
shadowRendererLocal.cpp:55
visutwin::canvas::ShadowRendererLocal::shadowLights
std::vector< Light * > & shadowLights()
Definition
shadowRendererLocal.h:24
frameGraph.h
light.h
visutwin::canvas
Definition
eventHandler.cpp:9
shadowMap.h
shadowRenderer.h
scene
renderer
shadowRendererLocal.h
Generated by
1.16.1