UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
VirtualTextureBuiltData.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4#include "CoreMinimal.h"
5#include "PixelFormat.h"
8#include "Engine/Texture.h"
10
11// This header contains the all the structs and classes pertaining to the
12// virtual texture on-disc file format.
13
15#define VIRTUALTEXTURE_DATA_MAXLAYERS 8u
16
18#define VIRTUALTEXTURE_DATA_MAXMIPS 16u
19
21{
22 Black, //Special case codec, always outputs black pixels 0,0,0,0
23 OpaqueBlack, //Special case codec, always outputs opaque black pixels 0,0,0,255
24 White, //Special case codec, always outputs white pixels 255,255,255,255
25 Flat, //Special case codec, always outputs 128,125,255,255 (flat normal map)
26 RawGPU, //Uncompressed data in an GPU-ready format (e.g R8G8B8A8, BC7, ASTC, ...)
27 ZippedGPU_DEPRECATED, //Same as RawGPU but with the data zipped
28 Crunch_DEPRECATED, //Use the Crunch library to compress data
29 Max, // Add new codecs before this entry
30};
31
33{
34 uint32 Unused; // Chunk header is currently not used, but keeping in place for future expansion
35};
36
38{
48
56
58 {
59 // Don't include editor-only data
60 static constexpr uint32 MemoryFootprint = uint32(sizeof(BulkData) + sizeof(SizeInBytes) + sizeof(CodecPayloadOffset) + sizeof(CodecPayloadSize) + sizeof(CodecType));
61 return MemoryFootprint;
62 }
63
64#if WITH_EDITORONLY_DATA
66 FString DerivedDataKey;
67
68 // Cached short key for VT DDC cache (not serialized)
69 FString ShortDerivedDataKey;
70 bool ShortenKey(const FString& CacheKey, FString& Result);
72 bool bCorruptDataLoadedFromDDC = false;
73 int64 StoreInDerivedDataCache(FStringView InKey, FStringView InName, bool bReplaceExisting);
74#endif // WITH_EDITORONLY_DATA
75};
76
77
90{
91#if WITH_EDITOR
92 /* Call at start of building the data before any calls to AddTile(). The entire area is initialized as empty. */
94 /* Call to mark a tile as non-empty. */
95 void AddTile(uint32 InAddress);
96 /* Call after all calls to AddTile() to build the final blocks and offsets. */
97 void Finalize();
98#endif // WITH_EDITOR
99
102
105 {
106 Ar << TileOffsetData.Width;
107 Ar << TileOffsetData.Height;
108 Ar << TileOffsetData.MaxAddress;
109 Ar << TileOffsetData.Addresses;
110 Ar << TileOffsetData.Offsets;
111 return Ar;
112 }
113
122
123#if WITH_EDITOR
126#endif
127};
128
129
131{
134 uint32 Width; // Width of the texture in pixels. Note the physical width may be larger due to tiling
135 uint32 Height; // Height of the texture in pixels. Note the physical height may be larger due to tiling
136 uint32 WidthInBlocks; // Number of UDIM blocks that make up the texture, used to compute UV scaling factor
138 uint32 TileSize; // Tile size excluding borders
139 uint32 TileBorderSize; // A BorderSize pixel border will be added around all tiles
140
146
152
158
165
168
171
174
177
180
189
191 : NumLayers(0u)
192 , NumMips(0u)
193 , Width(0u)
194 , Height(0u)
195 , WidthInBlocks(0u)
196 , HeightInBlocks(0u)
197 , TileSize(0u)
198 , TileBorderSize(0u)
199 {
202 }
203
204 inline bool IsInitialized() const { return TileSize != 0u; }
205 inline uint32 GetNumMips() const { return NumMips; }
206 inline uint32 GetNumLayers() const { return NumLayers; }
207 inline uint32 GetPhysicalTileSize() const { return TileSize + TileBorderSize * 2u; }
210
215
217
219 bool IsValidAddress(uint32 vLevel, uint32 vAddress);
220
222 int32 GetChunkIndex(uint8 vLevel) const;
223
225 uint32 GetTileOffset(uint32 vLevel, uint32 vAddress, uint32 LayerIndex) const;
226
232
233private:
234 bool IsLegacyData() const;
235 uint32 GetTileIndex_Legacy(uint8 vLevel, uint32 vAddress) const;
236 uint32 GetTileOffset_Legacy(uint32 ChunkIndex, uint32 TileIndex) const;
237};
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
void Init()
Definition LockFreeList.h:4
EVirtualTextureCodec
Definition VirtualTextureBuiltData.h:21
#define VIRTUALTEXTURE_DATA_MAXLAYERS
Definition VirtualTextureBuiltData.h:15
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Archive.h:1208
Definition SecureHash.h:226
Definition ThreadSafeBool.h:17
Definition Array.h:670
Definition EnumAsByte.h:22
Definition DerivedData.h:80
Definition Object.h:95
Definition Color.h:48
static constexpr UE_FORCEINLINE_HINT T DivideAndRoundUp(T Dividend, T Divisor)
Definition UnrealMathUtility.h:694
static UE_FORCEINLINE_HINT void * Memzero(void *Dest, SIZE_T Count)
Definition UnrealMemory.h:131
Definition VirtualTextureBuiltData.h:131
TArray< uint32 > ChunkIndexPerMip
Definition VirtualTextureBuiltData.h:167
uint32 GetHeightInTiles() const
Definition VirtualTextureBuiltData.h:209
int32 GetChunkIndex(uint8 vLevel) const
Definition VirtualTextureBuiltData.cpp:177
TEnumAsByte< EPixelFormat > LayerTypes[VIRTUALTEXTURE_DATA_MAXLAYERS]
Definition VirtualTextureBuiltData.h:145
uint32 HeightInBlocks
Definition VirtualTextureBuiltData.h:137
bool IsInitialized() const
Definition VirtualTextureBuiltData.h:204
uint32 GetWidthInTiles() const
Definition VirtualTextureBuiltData.h:208
uint32 NumLayers
Definition VirtualTextureBuiltData.h:132
uint32 TileBorderSize
Definition VirtualTextureBuiltData.h:139
uint32 NumMips
Definition VirtualTextureBuiltData.h:133
TArray< FVirtualTextureTileOffsetData > TileOffsetData
Definition VirtualTextureBuiltData.h:173
FVirtualTextureBuiltData()
Definition VirtualTextureBuiltData.h:190
bool IsValidAddress(uint32 vLevel, uint32 vAddress)
Definition VirtualTextureBuiltData.cpp:156
TArray< FVirtualTextureDataChunk > Chunks
Definition VirtualTextureBuiltData.h:157
uint32 GetTileMemoryFootprint() const
Definition VirtualTextureBuiltData.cpp:100
TArray< uint32 > TileIndexPerMip
Definition VirtualTextureBuiltData.h:179
uint32 GetNumTileHeaders() const
Definition VirtualTextureBuiltData.cpp:121
TArray< uint32 > BaseOffsetPerMip
Definition VirtualTextureBuiltData.h:170
uint32 GetPhysicalTileSize() const
Definition VirtualTextureBuiltData.h:207
uint64 GetDiskMemoryFootprint() const
Definition VirtualTextureBuiltData.cpp:75
uint32 GetTileOffset(uint32 vLevel, uint32 vAddress, uint32 LayerIndex) const
Definition VirtualTextureBuiltData.cpp:182
uint32 WidthInBlocks
Definition VirtualTextureBuiltData.h:136
TArray< uint32 > TileOffsetInChunk
Definition VirtualTextureBuiltData.h:188
TArray< uint32 > TileDataOffsetPerLayer
Definition VirtualTextureBuiltData.h:164
uint32 GetNumMips() const
Definition VirtualTextureBuiltData.h:205
uint32 TileSize
Definition VirtualTextureBuiltData.h:138
uint32 Height
Definition VirtualTextureBuiltData.h:135
TArray< uint32 > TileIndexPerChunk
Definition VirtualTextureBuiltData.h:176
bool ValidateData(FStringView const &InDDCDebugContext, bool bValidateCompression) const
Definition VirtualTextureBuiltData.cpp:417
uint32 GetMemoryFootprint() const
Definition VirtualTextureBuiltData.cpp:85
uint32 Width
Definition VirtualTextureBuiltData.h:134
uint32 GetNumLayers() const
Definition VirtualTextureBuiltData.h:206
FLinearColor LayerFallbackColors[VIRTUALTEXTURE_DATA_MAXLAYERS]
Definition VirtualTextureBuiltData.h:151
Definition VirtualTextureBuiltData.h:33
uint32 Unused
Definition VirtualTextureBuiltData.h:34
Definition VirtualTextureBuiltData.h:38
EVirtualTextureCodec CodecType[VIRTUALTEXTURE_DATA_MAXLAYERS]
Definition VirtualTextureBuiltData.h:47
uint32 CodecPayloadOffset[VIRTUALTEXTURE_DATA_MAXLAYERS]
Definition VirtualTextureBuiltData.h:46
uint32 SizeInBytes
Definition VirtualTextureBuiltData.h:44
uint32 GetMemoryFootprint() const
Definition VirtualTextureBuiltData.h:57
uint32 CodecPayloadSize
Definition VirtualTextureBuiltData.h:45
FVirtualTextureDataChunk()
Definition VirtualTextureBuiltData.h:49
UE::FDerivedData DerivedData
Definition VirtualTextureBuiltData.h:40
FByteBulkData BulkData
Definition VirtualTextureBuiltData.h:42
FSHAHash BulkDataHash
Definition VirtualTextureBuiltData.h:43
Definition VirtualTextureBuiltData.h:90
TArray< uint32 > Offsets
Definition VirtualTextureBuiltData.h:121
friend FArchive & operator<<(FArchive &Ar, FVirtualTextureTileOffsetData &TileOffsetData)
Definition VirtualTextureBuiltData.h:104
uint32 GetTileOffset(uint32 InAddress) const
Definition VirtualTextureBuiltData.cpp:61
uint32 MaxAddress
Definition VirtualTextureBuiltData.h:117
uint32 Width
Definition VirtualTextureBuiltData.h:114
uint32 Height
Definition VirtualTextureBuiltData.h:115
TArray< uint32 > Addresses
Definition VirtualTextureBuiltData.h:119