UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
VirtualShadowMapArray.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "SceneManagement.h"
6#include "SceneView.h"
7#include "VirtualShadowMapDefinitions.h"
8#include "ScreenPass.h"
9
13class FViewInfo;
23class FSceneRenderer;
31
32namespace Froxel
33{
34 class FRenderer;
35}
36
37namespace Nanite
38{
39 struct FPackedView;
40 class FPackedViewArray;
41 struct FRasterResults;
42 struct FExplicitChunkDrawInfo;
43}
44
45
46// Generally only one pass, but we collect this to handle exceptional cases
56
57inline bool IsSinglePageVirtualShadowMap(int32 VirtualShadowMapId)
58{
59 return VirtualShadowMapId < int32(VSM_MAX_SINGLE_PAGE_SHADOW_MAPS);
60}
61
62bool DoesVSMWantFroxels(EShaderPlatform ShaderPlatform);
63
65
67{
68public:
69 // PageSize * Level0DimPagesXY defines the virtual address space, e.g., 128x128 = 16k
70
71 // 128x128 = 16k
72 static constexpr uint32 PageSize = VSM_PAGE_SIZE;
80
81 static constexpr uint32 PhysicalPageAddressBits = 16U;
84
85 static constexpr uint32 NumHZBLevels = Log2PageSize;
86
87
88 static_assert(MaxMipLevels <= 8, ">8 mips requires more PageFlags bits. See VSM_PAGE_FLAGS_BITS_PER_HMIP in PageAccessCommon.ush");
89
90 static EVSMStatSection::Type GetEnabledStatSections();
91
92 // TODO: Currently only used for these constants... probably rename the cache structure to virtual shadow map now instead
93private:
95};
96
97// Useful data for both the page mapping shader and the projection shader
98// as well as cached shadow maps
100{
104
107
110
112 // Slightly different meaning for clipmaps (includes camera pixel size scaling stuff) and local lights (raw bias)
113 float ResolutionLodBias = 0.0f;
114
115 // TODO: There are more local lights than directional
116 // We should move the directional-specific stuff out to its own structure.
117 FVector3f NegativeClipmapWorldOriginLWCOffset; // Shares the LWCTile with PreViewTranslation
119
121
122 // Packed ClipmapLevel and ClipmapLevelCountRemaining, -1 if not a clipmap
123 // "Absolute" level, can be negative. Max_int32 if not a clipmap.
124 // Remaining levels, relative to this one. Negative if not a clipmap.
126
127 // See PackCullingViewId for details
129
131 // This clipmap level should allow WPO if this value is less than InstanceWPODisableDistanceSquared
134
136
138
139 // Note: Seems the FMatrix forces 16-byte alignment so pad as needed.
141
142 static uint32 PackCullingViewId(int32 SceneRendererPrimaryViewId, const FPersistentViewId& PersistentViewId);
143};
144static_assert(sizeof(FVirtualShadowMapProjectionShaderData) == VSM_PSD_STRIDE, "FVirtualShadowMapProjectionShaderData does not match size in shader. See VirtualShadowMapProjectionStructs.ush.");
145
147 // Pruned light grid with only the lights that have VSMs present
148 // Still references the original indices from the global light grid
152 // Directional lights associated with this view
156
159 SHADER_PARAMETER(uint32, NumSinglePageShadowMaps)
160 SHADER_PARAMETER(uint32, MaxPhysicalPages)
161 SHADER_PARAMETER(uint32, NumShadowMapSlots)
162 // Set to 0 if separate static caching is disabled
164 // Set to 0 if separate static caching is disabled OR separate dynamic HZB is disabled
166
167 // use to map linear index to x,y page coord
174 // TODO: verify whether this turns into 2 loads or one
177 // xy == PageTableTextureSize, zw == 1.0f/PageTableTextureSize
180
181 // Set to 1 if r.Shadow.Virtual.NonNanite.IncludeInCoarsePages is set to 0 in order to signal that we want to use the legacy path for just excluding non-nanite
186
187 // For shadow page age calculations
188 SHADER_PARAMETER(uint32, SceneFrameNumber)
189
190 SHADER_PARAMETER(float, GlobalResolutionLodBias)
192
193 // SMRT parameters that are sometimes used globally
203
209
211
213
221
222 SHADER_PARAMETER_RDG_BUFFER_SRV(StructuredBuffer<uint>, CachePrimitiveAsDynamic)
223
226
228 // NOTE: These parameters must only be uniform buffers/references! Loose parameters do not get bound
229 // in some of the forward passes that use this structure.
232
238
241
243{
244public:
249
250 void Reset()
251 {
252 FoundKey.Packed = 0;
253 FoundProxy = nullptr;
254 FoundVirtualShadowMapId = INDEX_NONE;
255 }
256
257 void CheckLight(const FLightSceneProxy* CheckProxy, int CheckVirtualShadowMapId);
258 void ChooseLight();
259
260 bool IsValid() const { return FoundProxy != nullptr; }
261
262 int GetVirtualShadowMapId() const { return FoundVirtualShadowMapId; }
263 const FLightSceneProxy* GetProxy() const { return FoundProxy; }
264 const FString GetLightName() const;
265
266private:
267 union SortKey
268 {
269 struct
270 {
271 // NOTE: Lowest to highest priority
272 uint32 bSelected : 1; // In editor
273 uint32 bPartialNameMatch : 1;
274 uint32 bExactNameMatch : 1;
275 } Fields;
276 uint32 Packed;
277 };
278
279 SortKey FoundKey;
280 const FLightSceneProxy* FoundProxy = nullptr;
281 int FoundVirtualShadowMapId = INDEX_NONE;
282};
283
289
291{
292public:
295
296 void Initialize(
297 FRDGBuilder& GraphBuilder,
299 bool bInEnabled,
300 const FEngineShowFlags& EngineShowFlags);
301
302 // Returns true if virtual shadow maps are enabled
303 bool IsEnabled() const
304 {
305 return bEnabled;
306 }
307
308 // NOTE: All directional lights must be allocated before all local lights
309 // due to receiver mask allocation logic. Unreferenced lights must be allocated last.
313
314 void UpdateNextData(int32 PrevVirtualShadowMapId, const FNextVirtualShadowMapData& Data);
315
316 static bool IsSinglePage(int32 VirtualShadowMapId)
317 {
318 return (VirtualShadowMapId < VSM_MAX_SINGLE_PAGE_SHADOW_MAPS);
319 }
320
321 bool IsDirectional(int32 VirtualShadowMapId)
322 {
323 int32 FullId = VirtualShadowMapId - int32(VSM_MAX_SINGLE_PAGE_SHADOW_MAPS);
324 return FullId >= 0 && FullId < NumDirectionalShadowMaps;
325 }
326
328 {
329 return NumShadowMapSlots;
330 }
331
333 {
335 }
336
338 {
339 return NumSinglePageShadowMaps;
340 }
341
346 {
347 // If not initialized ShadowMaps is empty, but we want it to return at most 0 anyway
349 }
350
351 // Raw size of the physical pool, including both static and dynamic pages (if enabled)
353 // Size of HZB (level 0)
355
356 // Maximum number of physical pages to allocate. This value is NOT doubled when static caching is
357 // enabled as we always allocate both as pairs (offset in the page pool).
358 uint32 GetMaxPhysicalPages() const { return UniformParameters.MaxPhysicalPages; }
359 // Total physical page count that includes separate static pages
361
363
365
366 void UpdatePhysicalPageAddresses(FRDGBuilder& GraphBuilder);
367
368 void BeginMarkPages(
369 FRDGBuilder& GraphBuilder,
370 const FSceneRenderer& SceneRenderer,
375
377 FRDGBuilder& GraphBuilder,
378 const FMinimalSceneTextures& SceneTextures,
379 const TConstArrayView<FViewInfo> &Views);
380
381 bool IsAllocated() const
382 {
383 return PhysicalPagePoolRDG != nullptr && PageTableRDG != nullptr;
384 }
385
387 {
388 return UniformParameters.StaticCachedArrayIndex > 0;
389 }
390
392 {
393 return UniformParameters.StaticHZBArrayIndex > 0;
394 }
395
397
402 FRDGBuilder& GraphBuilder,
403 FSceneRenderer& SceneRenderer,
405 const FNaniteVisibilityQuery* VisibilityQuery,
407
412
413 void PostRender(FRDGBuilder& GraphBuilder);
414
415 void RenderDebugInfo(FRDGBuilder& GraphBuilder, TArrayView<FViewInfo> Views);
416
417 bool ShouldGenerateStats() const;
418 bool IsCsvLogEnabled() const;
419
420 void LogStats(FRDGBuilder& GraphBuilder, const FViewInfo& View);
421
422 // Get shader parameters necessary to sample virtual shadow maps
423 // It is safe to bind this buffer even if VSMs are disabled, but the sampling should be branched around in the shader.
424 // This data becomes valid after the shadow depths pass if VSMs are enabled
426
428
430 {
431 if (CachedUniformBuffers.IsEmpty())
432 {
434 }
435
436 // If the view index is out of range, then it means VSM has not been set up yet, this is not a great time to access the UB but is actully done in skyatmosphere rendering so we need to return a safe default.
437 return CachedUniformBuffers[FMath::Min(ViewIndex, CachedUniformBuffers.Num() - 1)];
438 }
439
440 bool HasAnyShadowData() const { return PhysicalPagePoolRDG != nullptr; }
441
442 bool ShouldCullBackfacingPixels() const { return bCullBackfacingPixels; }
443
444 void UpdateHZB(FRDGBuilder& GraphBuilder);
445
446 // Add render views, and mark shadow maps as rendered for a given clipmap or set of VSMs
447 void AddRenderViews(
448 const FProjectedShadowInfo* ProjectedShadowInfo,
450 float LODScaleFactor,
451 bool bSetHzbParams,
454
455 // Add visualization composite pass, if enabled
456 bool IsVisualizePassEnabled(const FViewInfo& View, int32 ViewIndex, EVSMVisualizationPostPass Pass) const;
458 FRDGBuilder& GraphBuilder,
459 const FViewInfo& View,
460 int32 ViewIndex,
462 FSceneUniformBuffer& SceneUniformBuffer,
466
467 void RenderShadowCasterBounds(FRDGBuilder& GraphBuilder, const FViewInfo& View, int32 ViewIndex, FSceneUniformBuffer& SceneUniformBuffer, const FIntRect& ViewRect, FRDGTextureRef OutputColor, FRDGTextureRef OutputDepth, FRDGTextureRef SceneDepth);
468
469 //
470 bool UseHzbOcclusion() const { return bUseHzbOcclusion; }
471
477
482
483 // We keep a reference to the cache manager that was used to initialize this frame as it owns some of the buffers
485
488
489 // Physical page pool shadow data and associated HZB and metadata
490 // NOTE: The underlying textures are owned by FVirtualShadowMapCacheManager.
491 // We just import and maintain a copy of the RDG reference for this frame here.
496
497 // Buffer that serves as the page table for all virtual shadow maps
499 // Buffer that holds page requests during marking/page management
500 // Later it gets potentially reused to mark invalidations (see VirtualShadowMapArrayCacheManager)
502 // Buffer that stores flags (uints) marking each page that needs to be rendered and cache status, for all virtual shadow maps.
503 // Flag values defined in PageAccessCommon.ush
505
506 // Per-page receiver mask 8x8 bits (stored as 2x2 x 4x4 bits - in 32-bits for now because of atomics, later in true 16-bit words hopefully)
508
509 // Buffer that receives stats from Nanite about the geometry that was rendered into each VSM
511
512 // Buffer that stores data related to past and current VSM load and performance
514 bool bThrottlingEnabled = false;
515
516 // List(s) of physical pages used during allocation/updates
517 // These can be saved frame to frame to allow keeping an LRU-sorted order for cached pages
519
520 // Allocation info for each page.
522
523 // uint4 buffer with one rect for each mip level in all SMs, calculated to bound committed pages
524 // Used to clip the rect size of clusters during culling.
525 FRDGBufferRef UncachedPageRectBoundsRDG = nullptr; // For rendering; only includes uncached pages
526 FRDGBufferRef AllocatedPageRectBoundsRDG = nullptr; // For invalidation; includes all mapped/cached pages
528
529 FRDGBufferRef DirtyPageFlagsRDG = nullptr; // Dirty flags that are cleared after render passes
530 bool bHZBBuiltThisFrame = false;
531
532 static constexpr uint32 MaxPageAreaDiagnosticSlots = 32;
535
539
540 // Debug visualization
545
546private:
547 int32 AllocateShadowMapSlots(bool bSinglePageShadowMap, int32 Count);
548
549 void UpdateVisualizeLight(
550 const TConstArrayView<FViewInfo> &Views,
551 const TConstArrayView<FVisibleLightInfo>& VisibleLightInfos);
552
553 void AppendPhysicalPageList(FRDGBuilder& GraphBuilder, bool bEmptyToAvailable);
554
555 void AddRenderViewsLocal(
556 const FProjectedShadowInfo* ProjectedShadowInfo,
558 float LODScaleFactor,
559 bool bSetHzbParams,
562
563 void AddRenderViewsClipmap(
565 const FViewInfo* CullingView,
566 float LODScaleFactor,
567 bool bSetHzbParams,
571
572 TRDGUniformBufferRef<FVirtualShadowMapUniformParameters> GetUncachedUniformBuffer(FRDGBuilder& GraphBuilder) const;
573 void UpdateCachedUniformBuffers(FRDGBuilder& GraphBuilder);
574
575 // Track mapping of previous VSM data -> current frame VSM data
576 // This is primarily an indirection that allows us to reallocate/repack VirtualShadowMapIds each frame
578
579 FVirtualShadowMapSetupContext* VirtualShadowMapSetupContext = nullptr;
580
581 // Allocation/page table order is:
582 // - Single page local light shadow maps (fixed number of slots)
583 // - Directional light shadow maps (always full)
584 // - Full local light shadow maps
585 // - Any unreferenced lights of any type (see FVirtualShadowMapCacheManager::UpdateUnreferencedCacheEntries)
586
587 int32 NumDirectionalShadowMaps = 0;
588 int32 NumLocalShadowMaps = 0; // Includes both single page and full
589 int32 NumUnreferencedShadowMaps = 0; // Includes both single page and full
590
591 int32 NumSinglePageShadowMaps = 0; // Single page slot allocation counter
592 int32 NumShadowMapSlots = 0; // Total/full allocation counter
593
594 // Gets created in dummy form at initialization time, then updated after VSM data is computed
596
597 FScene &Scene;
598 //
599 bool bUseHzbOcclusion = true;
600
601 bool bInitialized = false;
602
603 // Are virtual shadow maps enabled? We store this at the start of the frame to centralize the logic.
604 bool bEnabled = false;
605
606 // Is backface culling of pixels enabled? We store this here to keep it consistent between projection and generation
607 bool bCullBackfacingPixels = false;
608
609 FRDGTextureRef PageTableDummyRDG = nullptr;
610
611 FRDGBufferRef PrevProjectionData = nullptr;
612};
@ INDEX_NONE
Definition CoreMiscDefines.h:150
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
FInt32Point FIntPoint
Definition MathFwd.h:124
EPixelFormat
Definition PixelFormat.h:16
EShaderPlatform
Definition RHIShaderPlatform.h:11
@ LightType_Directional
Definition SceneTypes.h:97
#define SHADER_PARAMETER_RDG_BUFFER_SRV(ShaderType, MemberName)
Definition ShaderParameterMacros.h:1800
#define SHADER_PARAMETER_RDG_TEXTURE(ShaderType, MemberName)
Definition ShaderParameterMacros.h:1752
#define END_GLOBAL_SHADER_PARAMETER_STRUCT
Definition ShaderParameterMacros.h:1669
#define SHADER_PARAMETER_SAMPLER(ShaderType, MemberName)
Definition ShaderParameterMacros.h:1740
#define BEGIN_SHADER_PARAMETER_STRUCT(StructTypeName, DllStorage)
Definition ShaderParameterMacros.h:1482
#define SHADER_PARAMETER_RDG_TEXTURE_UAV(ShaderType, MemberName)
Definition ShaderParameterMacros.h:1788
#define BEGIN_GLOBAL_SHADER_PARAMETER_STRUCT
Definition ShaderParameterMacros.h:1663
#define SHADER_PARAMETER_STRUCT_INCLUDE(StructType, MemberName)
Definition ShaderParameterMacros.h:1895
#define SHADER_PARAMETER_RDG_UNIFORM_BUFFER(StructType, MemberName)
Definition ShaderParameterMacros.h:1823
#define END_SHADER_PARAMETER_STRUCT()
Definition ShaderParameterMacros.h:1485
#define SHADER_PARAMETER(MemberType, MemberName)
Definition ShaderParameterMacros.h:1684
bool DoesVSMWantFroxels(EShaderPlatform ShaderPlatform)
Definition VirtualShadowMapArray.cpp:748
bool IsVirtualShadowMapLocalReceiverMaskEnabled()
Definition VirtualShadowMapArray.cpp:734
FMatrix CalcTranslatedWorldToShadowUVMatrix(const FMatrix &TranslatedWorldToShadowView, const FMatrix &ViewToClip)
Definition VirtualShadowMapArray.cpp:756
EVSMVisualizationPostPass
Definition VirtualShadowMapArray.h:285
FMatrix CalcTranslatedWorldToShadowUVNormalMatrix(const FMatrix &TranslatedWorldToShadowView, const FMatrix &ViewToClip)
Definition VirtualShadowMapArray.cpp:766
bool IsSinglePageVirtualShadowMap(int32 VirtualShadowMapId)
Definition VirtualShadowMapArray.h:57
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition InstanceCullingManager.h:45
Definition LightSceneProxy.h:43
Definition NaniteVisibility.h:11
Definition ShadowRendering.h:279
Definition RenderGraphResources.h:1452
Definition RenderGraphResources.h:1321
Definition RenderGraphBuilder.h:49
Definition RenderGraphResources.h:571
Definition SceneCullingRenderer.h:80
Definition SceneRendering.h:2080
Definition SceneUniformBuffer.h:137
Definition ScenePrivate.h:2875
Definition SceneRendering.h:1132
Definition VirtualShadowMapCacheManager.h:259
Definition VirtualShadowMapArray.h:291
void RenderShadowCasterBounds(FRDGBuilder &GraphBuilder, const FViewInfo &View, int32 ViewIndex, FSceneUniformBuffer &SceneUniformBuffer, const FIntRect &ViewRect, FRDGTextureRef OutputColor, FRDGTextureRef OutputDepth, FRDGTextureRef SceneDepth)
Definition VirtualShadowMapArray.cpp:4949
bool bEnableVisualization
Definition VirtualShadowMapArray.h:543
bool IsEnabled() const
Definition VirtualShadowMapArray.h:303
int32 AllocateDirectional(int32 Count)
Definition VirtualShadowMapArray.cpp:1007
bool bHZBBuiltThisFrame
Definition VirtualShadowMapArray.h:530
FRDGBufferRef PhysicalPageListsRDG
Definition VirtualShadowMapArray.h:518
FRDGTextureRef PageReceiverMasksRDG
Definition VirtualShadowMapArray.h:507
bool ShouldCullBackfacingPixels() const
Definition VirtualShadowMapArray.h:442
bool ShouldGenerateStats() const
Definition VirtualShadowMapArray.cpp:2078
FVirtualShadowMapMarkingParameters GetMarkingParameters(FRDGBuilder &GraphBuilder, int32 ViewIndex) const
Definition VirtualShadowMapArray.cpp:1131
FRDGBufferRef AllocatedPageRectBoundsRDG
Definition VirtualShadowMapArray.h:526
static float InterpolateResolutionBias(float BiasNonMoving, float BiasMoving, float LightMobilityFactor)
Definition VirtualShadowMapArray.cpp:5267
FVirtualShadowMapArrayCacheManager * CacheManager
Definition VirtualShadowMapArray.h:484
FRDGTextureRef PageTableRDG
Definition VirtualShadowMapArray.h:498
void CreateMipViews(TArray< Nanite::FPackedView, SceneRenderingAllocator > &Views) const
Definition VirtualShadowMapArray.cpp:4690
static void SetShaderDefines(FShaderCompilerEnvironment &OutEnvironment)
Definition VirtualShadowMapArray.cpp:1107
static constexpr uint32 MaxPageAreaDiagnosticSlots
Definition VirtualShadowMapArray.h:532
FRDGBufferRef StatsNaniteBufferRDG
Definition VirtualShadowMapArray.h:538
TArray< FRDGTextureRef > DebugVisualizationOutput
Definition VirtualShadowMapArray.h:541
void UpdateHZB(FRDGBuilder &GraphBuilder)
Definition VirtualShadowMapArray.cpp:4395
void BuildPageAllocations(FRDGBuilder &GraphBuilder, const FMinimalSceneTextures &SceneTextures, const TConstArrayView< FViewInfo > &Views)
Definition VirtualShadowMapArray.cpp:2818
static bool IsSinglePage(int32 VirtualShadowMapId)
Definition VirtualShadowMapArray.h:316
void LogStats(FRDGBuilder &GraphBuilder, const FViewInfo &View)
Definition VirtualShadowMapArray.cpp:3216
int32 AllocateUnreferenced(bool bSinglePageShadowMap, int32 Count)
Definition VirtualShadowMapArray.cpp:1024
int32 GetNumFullShadowMaps() const
Definition VirtualShadowMapArray.h:332
int32 GetNumShadowMapSlots() const
Definition VirtualShadowMapArray.h:327
bool HasSeparateDynamicHZB() const
Definition VirtualShadowMapArray.h:391
uint32 GetTotalAllocatedPhysicalPages() const
Definition VirtualShadowMapArray.cpp:1070
FRDGTextureRef PageRequestFlagsRDG
Definition VirtualShadowMapArray.h:501
bool bThrottlingEnabled
Definition VirtualShadowMapArray.h:514
int32 GetNumSinglePageShadowMaps() const
Definition VirtualShadowMapArray.h:337
~FVirtualShadowMapArray()
Definition VirtualShadowMapArray.cpp:1031
int32 GetNumShadowMaps() const
Definition VirtualShadowMapArray.h:345
bool HasAnyShadowData() const
Definition VirtualShadowMapArray.h:440
FRDGTextureRef PageFlagsRDG
Definition VirtualShadowMapArray.h:504
FRDGBufferRef DirtyPageFlagsRDG
Definition VirtualShadowMapArray.h:529
void RenderVirtualShadowMapsNanite(FRDGBuilder &GraphBuilder, FSceneRenderer &SceneRenderer, bool bUpdateNaniteStreaming, const FNaniteVisibilityQuery *VisibilityQuery, TConstArrayView< FNaniteVirtualShadowMapRenderPass > VirtualShadowMapPasses)
Definition VirtualShadowMapArray.cpp:3789
void RenderVirtualShadowMapsNonNanite(FRDGBuilder &GraphBuilder, FSceneUniformBuffer &SceneUniformBuffer, const TArray< FProjectedShadowInfo *, SceneRenderingAllocator > &VirtualSmMeshCommandPasses, TArrayView< FViewInfo > Views)
Definition VirtualShadowMapArray.cpp:3956
TRefCountPtr< IPooledRenderTarget > HZBPhysicalArray
Definition VirtualShadowMapArray.h:493
FVirtualShadowMapSamplingParameters GetSamplingParameters(FRDGBuilder &GraphBuilder, int32 ViewIndex) const
Definition VirtualShadowMapArray.cpp:1117
int32 AllocateLocal(bool bSinglePageShadowMap, int32 Count)
Definition VirtualShadowMapArray.cpp:1016
static FVirtualShadowMapSamplingParameters CreateDummySamplingParameters(FRDGBuilder &GraphBuilder)
Definition VirtualShadowMapArray.cpp:5272
uint32 GetMaxPhysicalPages() const
Definition VirtualShadowMapArray.h:358
static constexpr uint32 MaxNPFDiagnosticSlotsMultiPage
Definition VirtualShadowMapArray.h:534
bool ShouldCacheStaticSeparately() const
Definition VirtualShadowMapArray.h:386
FRDGBufferRef UncachedPageRectBoundsRDG
Definition VirtualShadowMapArray.h:525
FRDGBufferRef ThrottleBufferRDG
Definition VirtualShadowMapArray.h:513
void PostRender(FRDGBuilder &GraphBuilder)
Definition VirtualShadowMapArray.cpp:1729
FRDGTextureRef PhysicalPagePoolRDG
Definition VirtualShadowMapArray.h:492
bool IsVisualizePassEnabled(const FViewInfo &View, int32 ViewIndex, EVSMVisualizationPostPass Pass) const
Definition VirtualShadowMapArray.cpp:5016
bool IsCsvLogEnabled() const
Definition VirtualShadowMapArray.cpp:2090
FIntPoint GetHZBPhysicalPoolSize() const
Definition VirtualShadowMapArray.cpp:1061
FRDGBufferRef NanitePerformanceFeedbackRDG
Definition VirtualShadowMapArray.h:510
void AddRenderViews(const FProjectedShadowInfo *ProjectedShadowInfo, TConstArrayView< FViewInfo > Views, float LODScaleFactor, bool bSetHzbParams, bool bUpdateHZBMetaData, TArray< Nanite::FPackedView, SceneRenderingAllocator > &OutVirtualShadowViews) const
Definition VirtualShadowMapArray.cpp:4669
void RenderDebugInfo(FRDGBuilder &GraphBuilder, TArrayView< FViewInfo > Views)
Definition VirtualShadowMapArray.cpp:3124
FIntPoint GetPhysicalPoolSize() const
Definition VirtualShadowMapArray.cpp:1055
bool IsAllocated() const
Definition VirtualShadowMapArray.h:381
FRDGBufferRef PhysicalPageMetaDataRDG
Definition VirtualShadowMapArray.h:495
void BeginMarkPages(FRDGBuilder &GraphBuilder, const FSceneRenderer &SceneRenderer, const FSingleLayerWaterPrePassResult *SingleLayerWaterPrePassResult, const FFrontLayerTranslucencyData &FrontLayerTranslucencyData, const Froxel::FRenderer &FroxelRenderer, bool bAnyLocalLightsWithVSMs)
Definition VirtualShadowMapArray.cpp:2106
bool IsDirectional(int32 VirtualShadowMapId)
Definition VirtualShadowMapArray.h:321
bool bEnableNaniteVisualization
Definition VirtualShadowMapArray.h:544
FRDGBufferRef CachedPageInfosRDG
Definition VirtualShadowMapArray.h:521
EPixelFormat GetPackedShadowMaskFormat() const
Definition VirtualShadowMapArray.cpp:1035
bool UseHzbOcclusion() const
Definition VirtualShadowMapArray.h:470
void UpdatePhysicalPageAddresses(FRDGBuilder &GraphBuilder)
Definition VirtualShadowMapArray.cpp:2036
FVirtualShadowMapUniformParameters UniformParameters
Definition VirtualShadowMapArray.h:486
FRDGTextureRef HZBPhysicalArrayRDG
Definition VirtualShadowMapArray.h:494
void UpdateNextData(int32 PrevVirtualShadowMapId, const FNextVirtualShadowMapData &Data)
Definition VirtualShadowMapArray.cpp:792
FScreenPassTexture AddVisualizePass(FRDGBuilder &GraphBuilder, const FViewInfo &View, int32 ViewIndex, EVSMVisualizationPostPass Pass, FSceneUniformBuffer &SceneUniformBuffer, FScreenPassTexture &SceneColor, const FScreenPassTexture &SceneDepth, FScreenPassRenderTarget &Output)
Definition VirtualShadowMapArray.cpp:5033
static constexpr uint32 MaxNPFDiagnosticSlotsSinglePage
Definition VirtualShadowMapArray.h:533
TArray< FVirtualShadowMapVisualizeLightSearch > VisualizeLight
Definition VirtualShadowMapArray.h:542
FRDGBufferRef ProjectionDataRDG
Definition VirtualShadowMapArray.h:527
FRDGBufferUAVRef StatsBufferUAV
Definition VirtualShadowMapArray.h:537
TArray< FVirtualShadowMapPerViewParameters > PerViewParameters
Definition VirtualShadowMapArray.h:487
TRDGUniformBufferRef< FVirtualShadowMapUniformParameters > GetUniformBuffer(int32 ViewIndex) const
Definition VirtualShadowMapArray.h:429
FRDGBufferRef StatsBufferRDG
Definition VirtualShadowMapArray.h:536
Definition VirtualShadowMapCacheManager.h:43
Definition VirtualShadowMapClipmap.h:42
Definition VirtualShadowMapArray.cpp:2100
Definition VirtualShadowMapArray.h:67
static constexpr uint32 Log2Level0DimPagesXY
Definition VirtualShadowMapArray.h:76
static constexpr uint32 RasterWindowPages
Definition VirtualShadowMapArray.h:79
static constexpr uint32 MaxMipLevels
Definition VirtualShadowMapArray.h:77
static constexpr uint32 MaxPhysicalTextureDimPages
Definition VirtualShadowMapArray.h:82
static constexpr uint32 PageSizeMask
Definition VirtualShadowMapArray.h:73
static constexpr uint32 Level0DimPagesXY
Definition VirtualShadowMapArray.h:75
static constexpr uint32 Log2PageSize
Definition VirtualShadowMapArray.h:74
static constexpr uint32 PhysicalPageAddressBits
Definition VirtualShadowMapArray.h:81
static constexpr uint32 VirtualMaxResolutionXY
Definition VirtualShadowMapArray.h:78
static constexpr uint32 NumHZBLevels
Definition VirtualShadowMapArray.h:85
static EVSMStatSection::Type GetEnabledStatSections()
Definition VirtualShadowMapArray.cpp:125
static constexpr uint32 PageSize
Definition VirtualShadowMapArray.h:72
static constexpr uint32 MaxPhysicalTextureDimTexels
Definition VirtualShadowMapArray.h:83
Definition SceneRendering.h:211
Definition Froxel.h:69
Definition NaniteShared.h:99
Definition ArrayView.h:139
Definition Array.h:670
Definition ConcurrentLinearAllocator.h:624
Definition RenderGraphResources.h:251
Definition RefCounting.h:454
Definition SharedPointer.h:692
Definition DeferredShadingRenderer.h:73
Definition SkinnedMeshComponent.h:50
Definition ShowFlags.h:56
Definition LumenFrontLayerTranslucency.h:22
Definition SceneTextures.h:52
Definition VirtualShadowMapArray.h:48
TArray< FProjectedShadowInfo *, SceneRenderingAllocator > Shadows
Definition VirtualShadowMapArray.h:50
uint32 MaxCullingViews
Definition VirtualShadowMapArray.h:52
Nanite::FExplicitChunkDrawInfo * ExplicitChunkDrawInfo
Definition VirtualShadowMapArray.h:54
Nanite::FPackedViewArray * VirtualShadowMapViews
Definition VirtualShadowMapArray.h:53
FSceneInstanceCullingQuery * SceneInstanceCullingQuery
Definition VirtualShadowMapArray.h:49
uint32 TotalPrimaryViews
Definition VirtualShadowMapArray.h:51
Definition NaniteVisibility.cpp:54
Definition SceneRendering.h:109
Definition ScreenPass.h:83
Definition ScreenPass.h:41
Definition ShaderCore.h:544
Definition SingleLayerWaterRendering.h:22
Definition LightSceneInfo.h:146
Definition VirtualShadowMapArray.h:100
FVector3f NegativeClipmapWorldOriginLWCOffset
Definition VirtualShadowMapArray.h:117
FMatrix44f TranslatedWorldToShadowUVNormalMatrix
Definition VirtualShadowMapArray.h:103
float ClipmapLevelWPODistanceDisableThresholdSquared
Definition VirtualShadowMapArray.h:132
float LightRadius
Definition VirtualShadowMapArray.h:109
float ResolutionLodBias
Definition VirtualShadowMapArray.h:113
float LightSourceRadius
Definition VirtualShadowMapArray.h:118
float TexelDitherScale
Definition VirtualShadowMapArray.h:133
FVector3f PreViewTranslationLow
Definition VirtualShadowMapArray.h:111
uint32 Padding[3]
Definition VirtualShadowMapArray.h:140
int32 ClipmapLevel_ClipmapLevelCountRemaining
Definition VirtualShadowMapArray.h:125
FVector3f PreViewTranslationHigh
Definition VirtualShadowMapArray.h:108
uint32 Flags
Definition VirtualShadowMapArray.h:130
int32 LightId
Definition VirtualShadowMapArray.h:137
uint32 MinMipLevel
Definition VirtualShadowMapArray.h:135
int32 PackedCullingViewId
Definition VirtualShadowMapArray.h:128
FMatrix44f TranslatedWorldToShadowUVMatrix
Definition VirtualShadowMapArray.h:102
uint32 LightType
Definition VirtualShadowMapArray.h:106
static uint32 PackCullingViewId(int32 SceneRendererPrimaryViewId, const FPersistentViewId &PersistentViewId)
Definition VirtualShadowMapArray.cpp:778
FVector3f LightDirection
Definition VirtualShadowMapArray.h:105
FIntPoint ClipmapCornerRelativeOffset
Definition VirtualShadowMapArray.h:120
FMatrix44f ShadowViewToClipMatrix
Definition VirtualShadowMapArray.h:101
Definition VirtualShadowMapArray.h:243
FVirtualShadowMapVisualizeLightSearch()
Definition VirtualShadowMapArray.h:245
bool IsValid() const
Definition VirtualShadowMapArray.h:260
void Reset()
Definition VirtualShadowMapArray.h:250
int GetVirtualShadowMapId() const
Definition VirtualShadowMapArray.h:262
const FLightSceneProxy * GetProxy() const
Definition VirtualShadowMapArray.h:263
Definition NaniteCullRaster.h:172
Definition NaniteShared.h:35
Definition IntPoint.h:25