UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MaterialCacheTagProvider.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
7
9namespace UE::HLSL { struct FMaterialCacheTagEntry; }
10
12{
13public:
16
19
21 void SetTagEntry(uint32 TagOffset, const FGuid& TagGuid, const UE::HLSL::FMaterialCacheTagEntry& Entry);
22
24 void Update(FRDGBuilder& GraphBuilder);
25
28
29public:
32 virtual void Register(FSceneInterface* Scene, FPrimitiveComponentId PrimitiveComponentId, const FMaterialCacheTagLayout& TagLayout, IAllocatedVirtualTexture* VirtualTexture) override;
33 virtual void Unregister(FSceneInterface* Scene, FPrimitiveComponentId PrimitiveComponentId, const FGuid& TagGuid, IAllocatedVirtualTexture* VirtualTexture) override;
34 virtual void Flush(FSceneInterface* Scene, FPrimitiveComponentId PrimitiveComponentId, const FGuid& TagGuid) override;
35 virtual IVirtualTexture* CreateProducer(FSceneInterface* Scene, FPrimitiveComponentId PrimitiveComponentId, const FMaterialCacheTagLayout& TagLayout, const FVTProducerDescription& ProducerDesc) override;
36 virtual void AddTagSceneInvalidationCallback(const FGuid& TagGuid, FMaterialCacheTagProviderSceneInvalidationDelegate Delegate, void* Baton) override;
37 virtual void RemoveTagSceneInvalidationCallbacks(void* Baton) override;
38
39public:
41 static void Initialize();
42
44 static void Shutdown();
45
48
49private:
51 void CreateDeviceBuffersOrResize(struct FMaterialCacheTagBucket& Bucket);
52
54 void NotifyTagSceneInvalidation(const FGuid& TagGuid);
55
56private:
57 FCriticalSection Mutex;
58
61
63 TSet<FGuid> PendingTagSceneInvalidations;
64
67
69 TArray<uint32> FreeTagIndices;
70
72 uint32 TagOffsetAllocator = 0;
73
74private:
75 struct FTagSceneListener
76 {
78 void* Baton = nullptr;
79 };
80
81 struct FTagBatonEntry
82 {
83 int32 CallbackIndex = UINT32_MAX;
84 FGuid TagGuid;
85 };
86
88 TArray<FTagSceneListener> TagSceneInvalidationListeners;
89
91 TArray<int32> FreeTagSceneInvalidationCallbackIndices;
92
94 TMultiMap<FGuid, int32> TagCallbackIndices;
95 TMultiMap<void*, FTagBatonEntry> BatonCallbackIndices;
96};
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
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
void(*)(void *Baton) FMaterialCacheTagProviderSceneInvalidationDelegate
Definition IMaterialCacheTagProvider.h:14
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition MaterialCacheTagProvider.h:12
virtual void AddTagSceneInvalidationCallback(const FGuid &TagGuid, FMaterialCacheTagProviderSceneInvalidationDelegate Delegate, void *Baton) override
Definition MaterialCacheTagProvider.cpp:366
virtual FMaterialCacheTagUniformData GetUniformData(const FGuid &Guid) override
Definition MaterialCacheTagProvider.cpp:246
virtual IVirtualTexture * CreateProducer(FSceneInterface *Scene, FPrimitiveComponentId PrimitiveComponentId, const FMaterialCacheTagLayout &TagLayout, const FVTProducerDescription &ProducerDesc) override
Definition MaterialCacheTagProvider.cpp:352
virtual void Unregister(FSceneInterface *Scene, FPrimitiveComponentId PrimitiveComponentId, const FGuid &TagGuid, IAllocatedVirtualTexture *VirtualTexture) override
Definition MaterialCacheTagProvider.cpp:312
virtual void RemoveTagSceneInvalidationCallbacks(void *Baton) override
Definition MaterialCacheTagProvider.cpp:401
static void Initialize()
Definition MaterialCacheTagProvider.cpp:39
void SetTagEntry(uint32 TagOffset, const FGuid &TagGuid, const UE::HLSL::FMaterialCacheTagEntry &Entry)
Definition MaterialCacheTagProvider.cpp:179
void CallPendingCallbacks()
Definition MaterialCacheTagProvider.cpp:134
uint32 AllocatePrimitiveTagOffset()
Definition MaterialCacheTagProvider.cpp:165
virtual FMaterialCacheTagBindingData GetBindingData(const FGuid &Guid) override
Definition MaterialCacheTagProvider.cpp:215
static void Shutdown()
Definition MaterialCacheTagProvider.cpp:47
void FreePrimitiveTagOffset(uint32 TagOffset)
Definition MaterialCacheTagProvider.cpp:206
static FMaterialCacheTagProvider & Get()
Definition MaterialCacheTagProvider.cpp:56
Definition PrimitiveComponentId.h:12
Definition RenderGraphBuilder.h:49
Definition SceneInterface.h:106
Definition VirtualTexturing.h:374
Definition IMaterialCacheTagProvider.h:18
Definition VirtualTexturing.h:289
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition MaterialCacheTagProvider.h:9
Definition VirtualTextureRecreate.cpp:16
Definition Guid.h:109
Definition MaterialCacheTagSceneData.h:9
Definition MaterialCacheTagProvider.cpp:16
Definition MaterialCacheAttribute.h:118
Definition MaterialCacheTagSceneData.h:21
Definition VirtualTexturing.h:148