VisuTwin Canvas
C++ 3D Engine — Metal Backend
Loading...
Searching...
No Matches
shadowRenderer.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 "../camera.h"
9#include "../light.h"
10
11namespace visutwin::canvas
12{
14 class Renderer;
15
17 {
18 public:
19 ShadowRenderer(Renderer* renderer, LightTextureAtlas* lightTextureAtlas) : _renderer(renderer), _lightTextureAtlas(lightTextureAtlas) {}
20
21 bool needsShadowRendering(Light* light);
22
23 Camera* prepareFace(Light* light, Camera* camera, int face);
24
25 LightRenderData* getLightRenderData(Light* light, Camera* camera, int face);
26
27 void setupRenderPass(RenderPass* renderPass, Camera* shadowCamera, bool clearRenderTarget);
28
29 // Creates a shadow camera for a light and sets up its constant properties
30 static Camera* createShadowCamera(ShadowType shadowType, LightType type, int face);
31
32 private:
33 Renderer* _renderer;
34 LightTextureAtlas* _lightTextureAtlas;
35 };
36}
Perspective or orthographic camera with projection matrix, jitter (TAA), and render target binding.
Definition camera.h:40
Directional, point, spot, or area light with shadow mapping and cookie projection.
Definition light.h:54
Per-face shadow rendering data: shadow camera, viewport, and scissor.
Definition light.h:25
void setupRenderPass(RenderPass *renderPass, Camera *shadowCamera, bool clearRenderTarget)
static Camera * createShadowCamera(ShadowType shadowType, LightType type, int face)
LightRenderData * getLightRenderData(Light *light, Camera *camera, int face)
bool needsShadowRendering(Light *light)
Camera * prepareFace(Light *light, Camera *camera, int face)
ShadowRenderer(Renderer *renderer, LightTextureAtlas *lightTextureAtlas)