UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SparseVolumeTextureData.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
7
8namespace UE
9{
10namespace SVT
11{
12
20
22{
23public:
26 virtual ~ITextureDataProvider() = default;
27};
28
36
37// Holds the data for a SparseVolumeTexture that is stored on disk. It only has a single mip after importing a source asset. The mip chain is built during cooking.
38// Tiles are addressed by a flat index; unlike the runtime representation, this one stores all tiles in a 1D array (per mip level) and doesn't have the concept of a 3D physical tile texture.
39// The page table itself is 3D though.
41{
49
53
59
60private:
61
62 bool GenerateMipMaps(const FTextureDataAddressingInfo& AddressingInfo, int32 NumMipLevels = -1);
63 bool GenerateBorderVoxels(const FTextureDataAddressingInfo& AddressingInfo, int32 MipLevel, const TArray<FIntVector3>& PageCoords);
64
65 uint32 ReadPageTable(const FIntVector3& PageTableCoord, int32 MipLevel) const;
66 FVector4f ReadTileDataVoxel(int32 TileIndex, const FIntVector3& TileDataCoord, int32 MipLevel, int32 AttributesIdx) const;
67 void WriteTileDataVoxel(int32 TileIndex, const FIntVector3& TileDataCoord, int32 MipLevel, int32 AttributesIdx, const FVector4f& Value, int32 DstComponent = -1);
68};
69
70// Represents mip mapped SparseVolumeTexture data ready for compression/serializing. The data is stored as a set of arrays for the page table and a set of arrays for the tile data.
71// The page table arrays are essentially struct-of-arrays and store only those elements of the dense page page table which actually point to a tile (non-zero). Each stored page
72// consists of a coordinate in the 3D page table, an index to the tile it points to and another index to the parent page, which is the corresponding page in the next higher mip level.
73// Deduplicated tiles (of voxels) for all mip levels are stored in a single set of arrays as raw bytes.
75{
76 // Pages are ordered by mip level. This struct represents the range of pages for a given mip level.
82
84 uint32 NumPhysicalTiles; // Number of tiles stored in PhysicalTileDataA/PhysicalTileDataB.
85 TArray<FMipPageRange> MipPageRanges; // Page range for each mip level. Indexed by mip level.
86 TArray<uint32> PageTableCoords; // 11|11|10 packed coords of the page within the logical dense 3D page table.
87 TArray<uint32> PageTableTileIndices; // Index of tile in PhysicalTileDataA/PhysicalTileDataB pointed to by this page.
88 TArray<uint32> PageTableParentIndices; // Index of parent page in the next higher mip level.
91
92 void Reset();
94};
95
96}
97}
98
@ InPlace
Definition CoreMiscDefines.h:162
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::Math::TIntVector3< int32 > FIntVector3
Definition MathFwd.h:92
UE::Math::TVector4< float > FVector4f
Definition MathFwd.h:75
@ PF_Unknown
Definition PixelFormat.h:17
FArchive & operator<<(FArchive &Ar, UE::SVT::FTextureData &TextureData)
Definition SparseVolumeTextureData.cpp:28
TextureAddress
Definition TextureDefines.h:496
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Archive.h:1208
Definition Array.h:670
Definition AssetRegistryState.h:50
Definition StaticArray.h:26
Definition SparseVolumeTextureData.h:22
virtual ~ITextureDataProvider()=default
virtual FTextureDataCreateInfo GetCreateInfo() const =0
virtual void IteratePhysicalSource(TFunctionRef< void(const FIntVector3 &Coord, int32 AttributesIdx, int32 ComponentIdx, float VoxelValue)> OnVisit) const =0
Definition AdvancedWidgetsModule.cpp:13
Definition SparseVolumeTextureData.h:78
uint32 PageOffset
Definition SparseVolumeTextureData.h:79
uint32 PageCount
Definition SparseVolumeTextureData.h:80
Definition SparseVolumeTextureData.h:75
TArray< FMipPageRange > MipPageRanges
Definition SparseVolumeTextureData.h:85
TArray64< uint8 > PhysicalTileDataA
Definition SparseVolumeTextureData.h:89
TArray< uint32 > PageTableCoords
Definition SparseVolumeTextureData.h:86
uint32 NumPhysicalTiles
Definition SparseVolumeTextureData.h:84
TArray< uint32 > PageTableTileIndices
Definition SparseVolumeTextureData.h:87
void Reset()
Definition SparseVolumeTextureData.cpp:706
TArray< uint32 > PageTableParentIndices
Definition SparseVolumeTextureData.h:88
TArray64< uint8 > PhysicalTileDataB
Definition SparseVolumeTextureData.h:90
FHeader Header
Definition SparseVolumeTextureData.h:83
Definition SparseVolumeTexture.h:36
Definition SparseVolumeTextureData.h:30
TextureAddress AddressZ
Definition SparseVolumeTextureData.h:34
TextureAddress AddressX
Definition SparseVolumeTextureData.h:32
FIntVector3 VolumeResolution
Definition SparseVolumeTextureData.h:31
TextureAddress AddressY
Definition SparseVolumeTextureData.h:33
Definition SparseVolumeTextureData.h:14
TStaticArray< EPixelFormat, 2 > AttributesFormats
Definition SparseVolumeTextureData.h:17
FIntVector3 VirtualVolumeAABBMin
Definition SparseVolumeTextureData.h:15
TStaticArray< FVector4f, 2 > FallbackValues
Definition SparseVolumeTextureData.h:18
FIntVector3 VirtualVolumeAABBMax
Definition SparseVolumeTextureData.h:16
Definition SparseVolumeTextureData.h:43
TArray64< uint8 > PhysicalTileDataB
Definition SparseVolumeTextureData.h:46
TArray64< uint8 > PhysicalTileDataA
Definition SparseVolumeTextureData.h:45
TArray< uint32 > PageTable
Definition SparseVolumeTextureData.h:44
int32 NumPhysicalTiles
Definition SparseVolumeTextureData.h:47
Definition SparseVolumeTextureData.h:41
ENGINE_API void CreateDefault()
Definition SparseVolumeTextureData.cpp:317
TArray< FMipMap > MipMaps
Definition SparseVolumeTextureData.h:52
ENGINE_API bool BuildDerivedData(const FTextureDataAddressingInfo &AddressingInfo, int32 NumMipLevelsGlobal, bool bMoveMip0FromThis, struct FDerivedTextureData &OutDerivedData)
Definition SparseVolumeTextureData.cpp:609
FHeader Header
Definition SparseVolumeTextureData.h:50
ENGINE_API bool CreateFromDense(const FTextureDataCreateInfo &CreateInfo, const TArrayView64< uint8 > &VoxelDataA, const TArrayView64< uint8 > &VoxelDataB)
Definition SparseVolumeTextureData.cpp:157
TStaticArray< FVector4f, 2 > FallbackValuesQuantized
Definition SparseVolumeTextureData.h:51