UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
VirtualTextureCollection.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "IndirectVirtualTextureDefinitions.h"
6#include "Engine/DataAsset.h"
7#include "RenderResource.h"
8#include "IndirectVirtualTextureDefinitions.h"
10#include "Texture2D.h"
11#include "TextureCollection.h"
12#include "VirtualTexturing.h"
14#include "VirtualTextureCollection.generated.h"
15
18class UTexture;
21
23{
25 virtual ~FVirtualTextureCollectionResource() override = default;
26
27public:
28 virtual void InitRHI(FRHICommandListBase& RHICmdList) final;
29 virtual void ReleaseRHI() override;
30
32 {
33 // Optional, the virtual producer
35
36 // Optional, physical texture
37 // Keep the GT object around since RT resources may be released
39
40 // If true, this entry will be converted internally to the physical format
41 // This also includes compression
42 bool bRequiresAdapter = false;
43
44 // The format of this texture, before adaptation
46
47 // Number of blocks in this entry
49 };
50
51 UE::HLSL::FIndirectVirtualTextureUniform GetVirtualPackedUniform() const;
52
54 {
55 check(VirtualCollectionRHISRV);
56 return VirtualCollectionRHISRV;
57 }
58
60 {
61 return PageTable;
62 }
63
65 {
66 return PhysicalTextureSRV;
67 }
68
70 {
71 return ProducerHandle;
72 }
73
74private:
76 void FindFirstFormat();
77
79 void FindConservativeFormat();
80
82 void ComputeLayout(FTextureCollectionProducerData& Data);
83
85 void CreateIndexTable(FTextureCollectionProducerData& Data);
86
88 void FormatCollectionError(const TCHAR* Reason, uint32 TextureIndex);
89
90private:
91 TArray<UTexture*> Textures;
92
95
97 FBufferRHIRef VirtualCollectionRHI;
98 FRHIShaderResourceViewRef VirtualCollectionRHISRV;
99
101 FRHITexture* PageTable = nullptr;
102 FRHIShaderResourceView* PhysicalTextureSRV = nullptr;
103
105 IAllocatedVirtualTexture* AllocatedVT = nullptr;
106 FVirtualTextureProducerHandle ProducerHandle;
107
109
110 EPixelFormat Format = PF_Unknown;
111 bool bIsSRGB = false;
112 bool bAllowFormatConversion = false;
113};
114
115UCLASS(MinimalAPI, Experimental)
117{
119
120public:
125 UPROPERTY(EditAnywhere, Category=VirtualTextureCollection)
126 bool bAllowFormatConversion = true;
127
132 UPROPERTY(EditAnywhere, Category=VirtualTextureCollection, meta = (editcondition = "bAllowFormatConversion"))
133 bool bIsSRGB = true;
134
138 UPROPERTY(VisibleAnywhere, Category=VirtualTextureCollection, AdvancedDisplay)
139 TEnumAsByte<EPixelFormat> RuntimePixelFormat = PF_Unknown;
140
141public:
142#if WITH_EDITOR
143 virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
144#endif // WITH_EDITOR
145 virtual void BeginDestroy() override;
146
148 virtual FTextureCollectionResource* CreateResource() override;
149 virtual bool IsVirtualCollection() const override { return true; }
150
151protected:
153
154#if WITH_EDITOR
156 void FormatCollectionError(const TCHAR* Reason, uint32 TextureIndex);
157#endif // WITH_EDITOR
158};
#define check(expr)
Definition AssertionMacros.h:314
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
return true
Definition ExternalRpcRegistry.cpp:601
const bool
Definition NetworkReplayStreaming.h:178
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UCLASS(...)
Definition ObjectMacros.h:776
EPixelFormat
Definition PixelFormat.h:16
@ PF_Unknown
Definition PixelFormat.h:17
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition RHICommandList.h:455
Definition RHIResources.h:3304
Definition RHIResources.h:2153
Definition TextureResource.h:103
Definition VirtualTexturing.h:374
Definition Array.h:670
Definition EnumAsByte.h:22
Definition DynamicRHIResourceArray.h:31
Definition TextureCollection.h:47
Definition Texture.h:1219
Definition VirtualTextureAdapter.h:16
Definition VirtualTextureCollection.h:117
virtual bool IsVirtualCollection() const override
Definition VirtualTextureCollection.h:149
Definition BuildSettings.cpp:6
Definition RobinHoodHashTable.h:18
Definition UnrealType.h:6865
Definition VirtualTextureCollection.cpp:33
Definition TextureCollection.h:14
Definition VirtualTextureBuildSettings.h:11
Definition VirtualTextureCollection.h:32
FVirtualTextureProducerHandle VirtualProducerHandle
Definition VirtualTextureCollection.h:34
UTexture * PhysicalTexture
Definition VirtualTextureCollection.h:38
EPixelFormat Format
Definition VirtualTextureCollection.h:45
FUintVector2 BlockCount
Definition VirtualTextureCollection.h:48
bool bRequiresAdapter
Definition VirtualTextureCollection.h:42
Definition VirtualTextureCollection.h:23
FVirtualTextureProducerHandle GetProducerHandle() const
Definition VirtualTextureCollection.h:69
virtual void InitRHI(FRHICommandListBase &RHICmdList) final
Definition VirtualTextureCollection.cpp:621
UE::HLSL::FIndirectVirtualTextureUniform GetVirtualPackedUniform() const
Definition VirtualTextureCollection.cpp:1005
FRHITexture * GetVirtualPageTable() const
Definition VirtualTextureCollection.h:59
virtual void ReleaseRHI() override
Definition VirtualTextureCollection.cpp:801
virtual ~FVirtualTextureCollectionResource() override=default
FRHIShaderResourceView * GetVirtualCollectionRHI() const
Definition VirtualTextureCollection.h:53
FRHIShaderResourceView * GetVirtualPhysicalTextureSRV() const
Definition VirtualTextureCollection.h:64
Definition VirtualTexturing.h:33