7#include "VirtualShadowMapDefinitions.h"
40 class FPackedViewArray;
41 struct FRasterResults;
42 struct FExplicitChunkDrawInfo;
88 static_assert(
MaxMipLevels <= 8,
">8 mips requires more PageFlags bits. See VSM_PAGE_FLAGS_BITS_PER_HMIP in PageAccessCommon.ush");
253 FoundProxy =
nullptr;
260 bool IsValid()
const {
return FoundProxy !=
nullptr; }
264 const FString GetLightName()
const;
273 uint32 bPartialNameMatch : 1;
274 uint32 bExactNameMatch : 1;
324 return FullId >= 0 &&
FullId < NumDirectionalShadowMaps;
329 return NumShadowMapSlots;
339 return NumSinglePageShadowMaps;
431 if (CachedUniformBuffers.IsEmpty())
437 return CachedUniformBuffers[FMath::Min(ViewIndex, CachedUniformBuffers.Num() - 1)];
450 float LODScaleFactor,
549 void UpdateVisualizeLight(
555 void AddRenderViewsLocal(
558 float LODScaleFactor,
563 void AddRenderViewsClipmap(
566 float LODScaleFactor,
573 void UpdateCachedUniformBuffers(
FRDGBuilder& GraphBuilder);
587 int32 NumDirectionalShadowMaps = 0;
588 int32 NumLocalShadowMaps = 0;
589 int32 NumUnreferencedShadowMaps = 0;
591 int32 NumSinglePageShadowMaps = 0;
592 int32 NumShadowMapSlots = 0;
599 bool bUseHzbOcclusion =
true;
601 bool bInitialized =
false;
604 bool bEnabled =
false;
607 bool bCullBackfacingPixels =
false;
@ INDEX_NONE
Definition CoreMiscDefines.h:150
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
FInt32Point FIntPoint
Definition MathFwd.h:124
@ 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
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 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 NaniteShared.h:99
Definition ArrayView.h:139
Definition ConcurrentLinearAllocator.h:624
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