UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
VirtualShadowMapClipmap.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4VirtualShadowMapClipmap.h
5=============================================================================*/
6
7#pragma once
8
9#include "CoreMinimal.h"
10#include "ConvexVolume.h"
14
15struct FViewMatrices;
20
22
40
42{
43public:
45 FVirtualShadowMapArray& VirtualShadowMapArray,
52 );
53
55
57 {
58 check(ClipmapIndex >= 0 && ClipmapIndex < LevelData.Num());
59 return LevelData[ClipmapIndex].DynamicDepthCullRange;
60 }
61
63 {
64 return PerLightCacheEntry->GetVirtualShadowMapId();
65 }
66
68 {
69 return LevelData.Num();
70 }
71
72 // Get absolute clipmap level from index (0..GetLevelCount())
74 {
75 return FirstLevel + ClipmapIndex;
76 }
77
79 {
80 return -LevelData[ClipmapIndex].WorldCenter;
81 }
82
84 {
85 return LevelData[ClipmapIndex].ViewToClip;
86 }
87
89 {
90 return WorldToLightViewRotationMatrix;
91 }
92
94 {
95 return LightSceneInfo;
96 }
97
99
101 {
102 return WorldOrigin;
103 }
104
105 static float GetLevelRadius(float AbsoluteLevel);
106
107 // Returns the max radius the clipmap is guaranteed to cover (i.e. the radius of the last clipmap level)
108 // Note that this is not a conservative radius of the level projection, which is snapped
109 float GetMaxRadius() const;
110 FSphere GetBoundingSphere() const { return BoundingSphere; }
111 FConvexVolume GetViewFrustumBounds() const { return ViewFrustumBounds; }
112
113 const FViewInfo* GetDependentView() const { return DependentView; }
114
118 void OnPrimitiveRendered(const FPrimitiveSceneInfo* PrimitiveSceneInfo);
119
124
126
130 bool IsFirstPersonShadow() const { return Config.bIsFirstPersonShadow; }
131
132private:
133 FVirtualShadowMapProjectionShaderData ComputeProjectionShaderData(int32 ClipmapIndex) const;
134 void ComputeBoundingVolumes(const FVector CameraOrigin);
135
137
138 const FLightSceneInfo& LightSceneInfo;
139
144 const FViewInfo* DependentView;
145
150 FVector WorldOrigin;
151 FVector CameraToViewTarget;
152
153 FVector LightDirection;
154
156 FMatrix WorldToLightViewRotationMatrix;
157
158 int32 FirstLevel;
159 float ResolutionLodBias;
160
161 struct FLevelData
162 {
163 FMatrix ViewToClip;
164 FVector WorldCenter;
165 //Offset from (0,0) to clipmap corner, in level radii
166 FInt64Point CornerOffset;
167 //Offset from LastLevel-snapped WorldCenter to clipmap corner, in level radii
168 FIntPoint RelativeCornerOffset;
169 double WPODistanceDisableThresholdSquared;
170 FVector2f DynamicDepthCullRange;
171 };
173
174 FSphere BoundingSphere;
175 FConvexVolume ViewFrustumBounds;
176
178
179 // Rendered primitives are marked during culling (through OnPrimitiveRendered being called).
180 TBitArray<> RenderedPrimitives;
181};
#define check(expr)
Definition AssertionMacros.h:314
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
bool IsVirtualShadowMapDirectionalReceiverMaskEnabled()
Definition VirtualShadowMapClipmap.cpp:152
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition LightSceneInfo.h:208
Definition PrimitiveSceneInfo.h:266
Definition RefCounting.h:252
Definition SceneRendering.h:1132
Definition VirtualShadowMapArray.h:291
Definition VirtualShadowMapClipmap.h:24
int32 LastLevel
Definition VirtualShadowMapClipmap.h:29
bool bUseReceiverMask
Definition VirtualShadowMapClipmap.h:38
float ResolutionLodBias
Definition VirtualShadowMapClipmap.h:33
static FVirtualShadowMapClipmapConfig GetGlobal()
Definition VirtualShadowMapClipmap.cpp:167
int32 FirstCoarseLevel
Definition VirtualShadowMapClipmap.h:30
bool bIsFirstPersonShadow
Definition VirtualShadowMapClipmap.h:36
float ResolutionLodBiasMoving
Definition VirtualShadowMapClipmap.h:34
uint32 ShadowTypeId
Definition VirtualShadowMapClipmap.h:32
int32 LastCoarseLevel
Definition VirtualShadowMapClipmap.h:31
bool bCullDynamicTightly
Definition VirtualShadowMapClipmap.h:37
bool bForceInvalidate
Definition VirtualShadowMapClipmap.h:35
int32 FirstLevel
Definition VirtualShadowMapClipmap.h:28
Definition VirtualShadowMapClipmap.h:42
const FLightSceneInfo & GetLightSceneInfo() const
Definition VirtualShadowMapClipmap.h:93
float GetMaxRadius() const
Definition VirtualShadowMapClipmap.cpp:480
FSphere GetBoundingSphere() const
Definition VirtualShadowMapClipmap.h:110
void UpdateCachedFrameData()
Definition VirtualShadowMapClipmap.cpp:597
FViewMatrices GetViewMatrices(int32 ClipmapIndex) const
Definition VirtualShadowMapClipmap.cpp:485
int32 GetVirtualShadowMapId() const
Definition VirtualShadowMapClipmap.h:62
const FViewInfo * GetDependentView() const
Definition VirtualShadowMapClipmap.h:113
FMatrix GetViewToClipMatrix(int32 ClipmapIndex) const
Definition VirtualShadowMapClipmap.h:83
int32 GetLevelCount() const
Definition VirtualShadowMapClipmap.h:67
FVector2f GetDynamicDepthCullRange(int32 ClipmapIndex) const
Definition VirtualShadowMapClipmap.h:56
const FVirtualShadowMapProjectionShaderData & GetProjectionShaderData(int32 ClipmapIndex) const
Definition VirtualShadowMapClipmap.cpp:461
int32 GetClipmapLevel(int32 ClipmapIndex) const
Definition VirtualShadowMapClipmap.h:73
static float GetLevelRadius(float AbsoluteLevel)
Definition VirtualShadowMapClipmap.cpp:160
TSharedPtr< FVirtualShadowMapPerLightCacheEntry > & GetCacheEntry()
Definition VirtualShadowMapClipmap.h:125
FConvexVolume GetViewFrustumBounds() const
Definition VirtualShadowMapClipmap.h:111
FVector GetWorldOrigin() const
Definition VirtualShadowMapClipmap.h:100
bool IsFirstPersonShadow() const
Definition VirtualShadowMapClipmap.h:130
FVector GetPreViewTranslation(int32 ClipmapIndex) const
Definition VirtualShadowMapClipmap.h:78
void OnPrimitiveRendered(const FPrimitiveSceneInfo *PrimitiveSceneInfo)
Definition VirtualShadowMapClipmap.cpp:577
FMatrix GetWorldToLightViewRotationMatrix() const
Definition VirtualShadowMapClipmap.h:88
int32 GetVirtualShadowMapId() const
Definition VirtualShadowMapCacheManager.h:124
Definition VirtualShadowMapArray.h:67
Definition Array.h:670
Definition SharedPointer.h:692
Definition ConvexVolume.h:44
Definition SceneView.h:317
Definition VirtualShadowMapArray.h:100
Definition IntPoint.h:25