21namespace Nanite {
struct FPackedViewParams; }
40#define VSM_LOG_INVALIDATIONS 0
130 bool bForceInvalidate,
138 bool bForceInvalidate,
144 return (LightRadius <= 0.0f) ||
177 struct FLocalLightCacheKey
182 FLocalLightCacheKey LocalCacheKey;
184 struct FClipmapCacheKey
190 FClipmapCacheKey ClipmapCacheKey;
194 float LightRadius = -1.0f;
213 static const int32 MaxBuffers = 3;
214 int32 WriteIndex = 0;
215 int32 NumPending = 0;
368 AddInvalidation(PrimitiveSceneInfo, EInvalidationCause::Removed);
375 AddInvalidation(PrimitiveSceneInfo, EInvalidationCause::Updated);
380 AddInvalidation(PrimitiveSceneInfo, EInvalidationCause::Added);
391 enum class EInvalidationCause
400 void AddInvalidation(
402 int32 InstanceSceneDataOffset,
403 int32 NumInstanceSceneDataEntries,
423#if !UE_BUILD_SHIPPING
431 return CacheEntries.CreateIterator();
436 return CacheEntries.CreateConstIterator();
469 struct FInvalidationPassCommon
479 void SetInvalidateInstancePagesParameters(
492 void TrimLoggingInfo();
504 uint32 MaxPhysicalPages = 0;
517 bool bAccumulatingStats =
false;
523 float GlobalResolutionLodBias = 0.0f;
524 uint32 LastFrameOverPageAllocationBudget = 0;
527#if !UE_BUILD_SHIPPING
529 uint32 LoggedOverflowFlags = 0;
541 struct FLargePageAreaItem
553 FShadowInvalidatingInstancesImplementation ShadowInvalidatingInstancesImplementation;
564 static constexpr int32 NumBitsPerInstance = 2;
574 int32 InstanceStateMaskWordStride = 0;
@ INDEX_NONE
Definition CoreMiscDefines.h:150
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define FVector
Definition IOSSystemIncludes.h:8
FBoxSphereBounds3d FBoxSphereBounds
Definition MathFwd.h:142
UE::Math::TIntPoint< int64 > FInt64Point
Definition MathFwd.h:120
#define TexCreate_None
Definition RHIDefinitions.h:1191
ETextureCreateFlags
Definition RHIDefinitions.h:1091
#define DECLARE_SCENE_EXTENSION_UPDATER(ClassName, SceneExtensionClassName)
Definition SceneExtensions.h:390
#define DECLARE_SCENE_EXTENSION(ModuleExport, ClassName)
Definition SceneExtensions.h:384
constexpr uint32 HashCombineFast(uint32 A, uint32 B)
Definition TypeHash.h:74
EVSMVisualizationPostPass
Definition VirtualShadowMapArray.h:285
uint32 GetTypeHash(FVirtualShadowMapCacheKey Key)
Definition VirtualShadowMapCacheManager.h:253
Definition IDelegateInstance.h:14
Definition GPUScene.h:217
Definition PrimitiveSceneInfo.h:266
Definition SceneManagement.h:1005
Definition RenderGraphResources.h:1321
Definition RenderGraphBuilder.h:49
Definition RHIGPUReadback.h:116
Definition ScenePrimitiveUpdates.h:129
Definition ScenePrimitiveUpdates.h:116
Definition SceneRendering.h:2023
Definition SceneRendering.h:2080
Definition ScenePrivate.h:2875
Definition SceneRendering.h:1132
Definition VirtualShadowMapCacheManager.h:358
FInstanceGPULoadBalancer Instances
Definition VirtualShadowMapCacheManager.h:383
TArray< const FVirtualShadowMapPerLightCacheEntry *, SceneRenderingAllocator > CacheEntriesForInvalidation
Definition VirtualShadowMapCacheManager.h:388
void Removed(FPrimitiveSceneInfo *PrimitiveSceneInfo)
Definition VirtualShadowMapCacheManager.h:366
void AddPrimitivesToInvalidate()
Definition VirtualShadowMapCacheManager.cpp:477
void UpdatedTransform(FPrimitiveSceneInfo *PrimitiveSceneInfo)
Definition VirtualShadowMapCacheManager.h:373
TBitArray< SceneRenderingAllocator > RemovedPrimitives
Definition VirtualShadowMapCacheManager.h:385
void Added(FPrimitiveSceneInfo *PrimitiveSceneInfo)
Definition VirtualShadowMapCacheManager.h:378
TBitArray< SceneRenderingAllocator > InvalidatedPrimitives
Definition VirtualShadowMapCacheManager.h:384
Definition VirtualShadowMapCacheManager.h:259
void UpdateCacheValidGPUMask(FRHIGPUMask GPUMask, bool bMergeMask)
Definition VirtualShadowMapCacheManager.h:331
float GetGlobalResolutionLodBias() const
Definition VirtualShadowMapCacheManager.h:427
virtual ISceneExtensionRenderer * CreateRenderer(FSceneRendererBase &InSceneRenderer, const FEngineShowFlags &EngineShowFlags) override
Definition VirtualShadowMapCacheManager.cpp:2397
FRHIGPUMask GetCacheValidGPUMask() const
Definition VirtualShadowMapCacheManager.h:322
void ExtractFrameData(FRDGBuilder &GraphBuilder, FVirtualShadowMapArray &VirtualShadowMapArray, const FSceneRenderer &SceneRenderer, bool bAllowPersistentData)
Definition VirtualShadowMapCacheManager.cpp:1456
void ReallocatePersistentPrimitiveIndices()
Definition VirtualShadowMapCacheManager.cpp:1682
FEntryMap::TConstIterator CreateConstEntryIterator() const
Definition VirtualShadowMapCacheManager.h:434
TInstanceCullingLoadBalancer< SceneRenderingAllocator > FInstanceGPULoadBalancer
Definition VirtualShadowMapCacheManager.h:352
void FreePhysicalPool(FRDGBuilder &GraphBuilder)
Definition VirtualShadowMapCacheManager.cpp:1192
virtual ~FVirtualShadowMapArrayCacheManager()
Definition VirtualShadowMapCacheManager.cpp:1027
static constexpr uint32 MaxStatFrames
Definition VirtualShadowMapCacheManager.h:267
FEntryMap::TIterator CreateEntryIterator()
Definition VirtualShadowMapCacheManager.h:429
TRefCountPtr< FRDGPooledBuffer > GetPhysicalPageMetaData() const
Definition VirtualShadowMapCacheManager.h:283
void ProcessInvalidations(FRDGBuilder &GraphBuilder, FSceneUniformBuffer &SceneUniformBuffer, FInvalidatingPrimitiveCollector &InvalidatingPrimitiveCollector)
Definition VirtualShadowMapCacheManager.cpp:1883
bool IsAccumulatingStats()
Definition VirtualShadowMapCacheManager.cpp:1672
bool IsHZBDataAvailable()
Definition VirtualShadowMapCacheManager.cpp:1275
virtual void InitExtension(FScene &InScene) override
Definition VirtualShadowMapCacheManager.cpp:724
TRefCountPtr< IPooledRenderTarget > GetPhysicalPagePool() const
Definition VirtualShadowMapCacheManager.h:282
void FreeHZBPhysicalPool(FRDGBuilder &GraphBuilder)
Definition VirtualShadowMapCacheManager.cpp:1229
uint32 GetPhysicalMaxWidth()
Definition VirtualShadowMapCacheManager.cpp:1707
TRefCountPtr< IPooledRenderTarget > SetHZBPhysicalPoolSize(FRDGBuilder &GraphBuilder, FIntPoint RequestedSize, int32 RequestedArraySize, const EPixelFormat Format)
Definition VirtualShadowMapCacheManager.cpp:1202
uint64 GetGPUSizeBytes(bool bLogSizes) const
Definition SceneViewState.cpp:417
virtual ISceneExtensionUpdater * CreateUpdater() override
Definition VirtualShadowMapCacheManager.cpp:703
uint32 GetStatsFeedbackMessageId() const
Definition VirtualShadowMapCacheManager.h:424
FRDGBufferRef UploadCachePrimitiveAsDynamic(FRDGBuilder &GraphBuilder) const
Definition VirtualShadowMapCacheManager.cpp:1281
TSharedPtr< FVirtualShadowMapPerLightCacheEntry > FindCreateLightCacheEntry(int32 LightSceneId, uint32 ViewUniqueID, uint32 NumShadowMaps, uint32 TypeIdTag=0u)
Definition VirtualShadowMapCacheManager.cpp:1298
FScreenPassTexture AddVisualizePass(FRDGBuilder &GraphBuilder, const FViewInfo &View, int32 ViewIndex, EVSMVisualizationPostPass Pass, FScreenPassTexture &SceneColor, FScreenPassRenderTarget &Output)
Definition VirtualShadowMapCacheManager.cpp:1043
uint32 GetStatusFeedbackMessageId() const
Definition VirtualShadowMapCacheManager.h:421
static bool ShouldCreateExtension(FScene &InScene)
Definition VirtualShadowMapCacheManager.cpp:698
void SetPhysicalPoolSize(FRDGBuilder &GraphBuilder, FIntPoint RequestedSize, int RequestedArraySize, uint32 MaxPhysicalPages)
Definition VirtualShadowMapCacheManager.cpp:1137
const FVirtualShadowMapArrayFrameData & GetPrevBuffers() const
Definition VirtualShadowMapCacheManager.h:419
bool IsCacheEnabled()
Definition VirtualShadowMapCacheManager.cpp:1256
bool IsCacheDataAvailable()
Definition VirtualShadowMapCacheManager.cpp:1261
UE::Renderer::Private::IShadowInvalidatingInstances * GetInvalidatingInstancesInterface()
Definition VirtualShadowMapCacheManager.h:439
bool IsVisualizePassEnabled(const FViewInfo &View, int32 ViewIndex, EVSMVisualizationPostPass Pass) const
Definition VirtualShadowMapCacheManager.cpp:1034
TMap< FVirtualShadowMapCacheKey, TSharedPtr< FVirtualShadowMapPerLightCacheEntry > > FEntryMap
Definition VirtualShadowMapCacheManager.h:264
void UpdateUnreferencedCacheEntries(FVirtualShadowMapArray &VirtualShadowMapArray)
Definition VirtualShadowMapCacheManager.cpp:1366
Definition VirtualShadowMapArray.h:291
Definition VirtualShadowMapCacheManager.h:43
void UpdateClipmapLevel(const FVirtualShadowMapPerLightCacheEntry &PerLightEntry, FInt64Point PageSpaceLocation, double LevelRadius, double ViewCenterZ, double ViewRadiusZ, double WPODistanceDisabledThreshold)
Definition VirtualShadowMapCacheManager.cpp:202
FVirtualShadowMapHZBMetadata PrevHZBMetadata
Definition VirtualShadowMapCacheManager.h:71
void UpdatePrevHZBMetadata()
Definition VirtualShadowMapCacheManager.h:61
FNextVirtualShadowMapData NextData
Definition VirtualShadowMapCacheManager.h:75
FVirtualShadowMapHZBMetadata CurrentHZBMetadata
Definition VirtualShadowMapCacheManager.h:72
void UpdateHZBMetadata(const FViewMatrices &ViewMatrices, const FIntRect &ViewRect, uint32 TargetLayerIndex)
Definition VirtualShadowMapCacheManager.cpp:286
void SetHZBViewParams(Nanite::FPackedViewParams &OutParams)
Definition VirtualShadowMapCacheManager.cpp:279
FClipmapInfo Clipmap
Definition VirtualShadowMapCacheManager.h:89
FVirtualShadowMapProjectionShaderData ProjectionData
Definition VirtualShadowMapCacheManager.h:79
Definition VirtualShadowMapCacheManager.h:198
void SubmitFeedbackBuffer(FRDGBuilder &GraphBuilder, FRDGBufferRef FeedbackBuffer)
Definition VirtualShadowMapCacheManager.cpp:648
FVirtualShadowMapFeedback()
Definition VirtualShadowMapCacheManager.cpp:629
~FVirtualShadowMapFeedback()
Definition VirtualShadowMapCacheManager.cpp:638
FReadbackInfo GetLatestReadbackBuffer()
Definition VirtualShadowMapCacheManager.cpp:673
Definition VirtualShadowMapCacheManager.cpp:2274
Definition VirtualShadowMapCacheManager.h:583
virtual void PreLightsUpdate(FRDGBuilder &GraphBuilder, const FLightSceneChangeSet &LightSceneChangeSet)
Definition VirtualShadowMapCacheManager.cpp:2047
virtual void PostSceneUpdate(FRDGBuilder &GraphBuilder, const FScenePostUpdateChangeSet &ChangeSet) override
Definition VirtualShadowMapCacheManager.cpp:2142
virtual void PreSceneUpdate(FRDGBuilder &GraphBuilder, const FScenePreUpdateChangeSet &ChangeSet, FSceneUniformBuffer &SceneUniforms) override
Definition VirtualShadowMapCacheManager.cpp:2055
virtual void PostGPUSceneUpdate(FRDGBuilder &GraphBuilder, FSceneUniformBuffer &SceneUniforms) override
Definition VirtualShadowMapCacheManager.cpp:2160
Definition VirtualShadowMapCacheManager.h:93
TArray< FVirtualShadowMapInstanceRange > PrimitiveInstancesToInvalidate
Definition VirtualShadowMapCacheManager.h:174
bool IsInvalidated() const
Definition VirtualShadowMapCacheManager.h:118
FVirtualShadowMapPerLightCacheEntry(int32 MaxPersistentScenePrimitiveIndex, uint32 NumShadowMaps)
Definition VirtualShadowMapCacheManager.h:95
int32 PrevVirtualShadowMapId
Definition VirtualShadowMapCacheManager.h:152
bool IsFullyCached() const
Definition VirtualShadowMapCacheManager.h:107
int32 ScheduledFrameNumber
Definition VirtualShadowMapCacheManager.h:150
void OnPrimitiveRendered(const FPrimitiveSceneInfo *PrimitiveSceneInfo, bool bPrimitiveRevealed)
Definition VirtualShadowMapCacheManager.cpp:1333
void MarkRendered(int32 FrameIndex)
Definition VirtualShadowMapCacheManager.h:116
TArray< FVirtualShadowMapCacheEntry > ShadowMapEntries
Definition VirtualShadowMapCacheManager.h:172
bool IsUncached() const
Definition VirtualShadowMapCacheManager.h:112
int32 RenderedFrameNumber
Definition VirtualShadowMapCacheManager.h:149
bool bReferencedThisRender
Definition VirtualShadowMapCacheManager.h:162
bool bIsDistantLight
Definition VirtualShadowMapCacheManager.h:156
TBitArray RenderedPrimitives
Definition VirtualShadowMapCacheManager.h:169
void UpdateLocal(const FProjectedShadowInitializer &InCacheKey, const FVector &NewLightOrigin, const float NewLightRadius, bool bNewIsDistantLight, bool bForceInvalidate, bool bAllowInvalidation, bool bInUseReceiverMask)
Definition VirtualShadowMapCacheManager.cpp:353
void UpdateClipmap(const FVector &LightDirection, int FirstLevel, bool bForceInvalidate, bool bInUseReceiverMask)
Definition VirtualShadowMapCacheManager.cpp:304
bool bUseReceiverMask
Definition VirtualShadowMapCacheManager.h:157
void MarkScheduled(int32 FrameIndex)
Definition VirtualShadowMapCacheManager.h:120
int32 GetVirtualShadowMapId() const
Definition VirtualShadowMapCacheManager.h:124
void Invalidate()
Definition VirtualShadowMapCacheManager.h:117
void UpdateVirtualShadowMapId(int32 NextVirtualShadowMapId)
Definition VirtualShadowMapCacheManager.cpp:410
uint32 LastReferencedFrameNumber
Definition VirtualShadowMapCacheManager.h:165
bool bIsUncached
Definition VirtualShadowMapCacheManager.h:155
bool ShouldUseReceiverMask() const
Definition VirtualShadowMapCacheManager.h:114
int32 GetLastScheduledFrameNumber() const
Definition VirtualShadowMapCacheManager.h:121
bool AffectsBounds(const FBoxSphereBounds &Bounds) const
Definition VirtualShadowMapCacheManager.h:142
int32 GetPrevVirtualShadowMapId() const
Definition VirtualShadowMapCacheManager.h:125
int32 VirtualShadowMapId
Definition VirtualShadowMapCacheManager.h:153
Definition GPUMessaging.h:40
const FMessageId GetMessageId() const
Definition GPUMessaging.h:62
Definition SceneExtensions.h:69
Definition SceneExtensions.h:45
Definition SceneExtensions.h:24
void SetNum(SizeType NewNum, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2308
bool IsValid() const
Definition RenderGraphDefinitions.h:361
IndexType GetIndex() const
Definition RenderGraphDefinitions.h:358
Definition RefCounting.h:454
Definition SharedPointer.h:692
Definition SparseArray.h:524
Definition RendererPrivateUtils.h:191
Definition SceneRendererInterface.h:24
Definition SkinnedMeshComponent.h:50
@ false
Definition radaudio_common.h:23
Definition ShowFlags.h:56
Definition ScenePrivate.h:2850
static constexpr UE_FORCEINLINE_HINT T Square(const T A)
Definition UnrealMathUtility.h:578
Definition MeshPassProcessor.h:1559
Definition VirtualShadowMapCacheManager.h:236
uint32 Flags
Definition VirtualShadowMapCacheManager.h:237
uint32 MipLevel
Definition VirtualShadowMapCacheManager.h:240
uint32 VirtualShadowMapId
Definition VirtualShadowMapCacheManager.h:239
FUintPoint PageAddress
Definition VirtualShadowMapCacheManager.h:241
uint32 LastRequestedSceneFrameNumber
Definition VirtualShadowMapCacheManager.h:238
static GPUMASK_CONSTEXPR FRHIGPUMask GPU0()
Definition MultiGPU.h:186
Definition ScreenPass.h:83
Definition ScreenPass.h:41
Definition SceneView.h:317
Definition VirtualShadowMapCacheManager.h:221
TRefCountPtr< FRDGPooledBuffer > UncachedPageRectBounds
Definition VirtualShadowMapCacheManager.h:225
uint64 GetGPUSizeBytes(bool bLogSizes) const
Definition SceneViewState.cpp:407
TRefCountPtr< IPooledRenderTarget > PageRequestFlags
Definition VirtualShadowMapCacheManager.h:229
TRefCountPtr< FRDGPooledBuffer > ThrottleBuffer
Definition VirtualShadowMapCacheManager.h:231
TRefCountPtr< IPooledRenderTarget > PageTable
Definition VirtualShadowMapCacheManager.h:222
TRefCountPtr< FRDGPooledBuffer > AllocatedPageRectBounds
Definition VirtualShadowMapCacheManager.h:226
TRefCountPtr< FRDGPooledBuffer > ProjectionData
Definition VirtualShadowMapCacheManager.h:227
TRefCountPtr< FRDGPooledBuffer > PhysicalPageLists
Definition VirtualShadowMapCacheManager.h:228
TRefCountPtr< IPooledRenderTarget > PageFlags
Definition VirtualShadowMapCacheManager.h:223
TRefCountPtr< FRDGPooledBuffer > NanitePerformanceFeedback
Definition VirtualShadowMapCacheManager.h:230
Definition VirtualShadowMapCacheManager.h:83
double WPODistanceDisableThresholdSquared
Definition VirtualShadowMapCacheManager.h:87
double ViewCenterZ
Definition VirtualShadowMapCacheManager.h:85
FInt64Point PageSpaceLocation
Definition VirtualShadowMapCacheManager.h:84
double ViewRadiusZ
Definition VirtualShadowMapCacheManager.h:86
Definition VirtualShadowMapCacheManager.h:245
uint32 ShadowTypeId
Definition VirtualShadowMapCacheManager.h:248
bool operator==(const FVirtualShadowMapCacheKey &Other) const
Definition VirtualShadowMapCacheManager.h:250
uint32 LightSceneId
Definition VirtualShadowMapCacheManager.h:247
uint32 ViewUniqueID
Definition VirtualShadowMapCacheManager.h:246
Definition VirtualShadowMapCacheManager.h:204
uint32 Size
Definition VirtualShadowMapCacheManager.h:206
FRHIGPUBufferReadback * Buffer
Definition VirtualShadowMapCacheManager.h:205
Definition VirtualShadowMapCacheManager.h:24
FPersistentPrimitiveIndex PersistentPrimitiveIndex
Definition VirtualShadowMapCacheManager.h:25
int32 InstanceSceneDataOffset
Definition VirtualShadowMapCacheManager.h:26
bool bMarkAsDynamic
Definition VirtualShadowMapCacheManager.h:28
int32 NumInstanceSceneDataEntries
Definition VirtualShadowMapCacheManager.h:27
Definition VirtualShadowMapArray.h:100
Definition NaniteShared.h:143
Definition BoxSphereBounds.h:25
TExtent SphereRadius
Definition BoxSphereBounds.h:35
TVector< T > Origin
Definition BoxSphereBounds.h:29