UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SparseVolumeTextureUtility.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 // We are using this instead of GMaxVolumeTextureDimensions to be independent of the platform that
13 // the asset is imported on. 2048 should be a safe value that should be supported by all our platforms.
14 static constexpr int32 MaxVolumeTextureDim = 2048;
15 static constexpr int64 MaxResourceSize = 2048LL * 1024LL * 1024LL;
16 static constexpr int32 NumVoxelsPerTile = SPARSE_VOLUME_TILE_RES * SPARSE_VOLUME_TILE_RES * SPARSE_VOLUME_TILE_RES;
18 static constexpr int32 NumOccupancyWordsPerPaddedTile = (NumVoxelsPerPaddedTile + 31) / 32;
19 static constexpr int32 OccupancyBitsSizePerPaddedTile = NumOccupancyWordsPerPaddedTile * sizeof(uint32);
20
27 // Returns true if Point >= Min && Point < Max for all components
28 bool IsInBounds(const FIntVector3& Point, const FIntVector3& Min, const FIntVector3& Max);
29 // Computes Max(Value >> ShiftBy, MinValue)
30 FIntVector3 ShiftRightAndMax(const FIntVector3& Value, uint32 ShiftBy, int32 MinValue);
31
32namespace Private
33{
34 // SVT_TODO: This really should be a shared function.
35 template <typename Y, typename T>
36 void SerializeEnumAs(FArchive& Ar, T& Target)
37 {
38 Y Buffer = static_cast<Y>(Target);
39 Ar << Buffer;
40 if (Ar.IsLoading())
41 {
42 Target = static_cast<T>(Buffer);
43 }
44 }
45} // Private
46
47} // SVT
48} // UE
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
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
EPixelFormat
Definition PixelFormat.h:16
#define SPARSE_VOLUME_TILE_RES
Definition SparseVolumeTexture.h:23
#define SPARSE_VOLUME_TILE_RES_PADDED
Definition SparseVolumeTexture.h:25
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Archive.h:1208
UE_FORCEINLINE_HINT bool IsLoading() const
Definition Archive.h:236
Definition OverriddenPropertySet.cpp:45
void SerializeEnumAs(FArchive &Ar, T &Target)
Definition SparseVolumeTextureUtility.h:36
FVector4f ReadVoxel(int64 VoxelIndex, const uint8 *TileData, EPixelFormat Format)
Definition SparseVolumeTextureUtility.cpp:47
bool IsInBounds(const FIntVector3 &Point, const FIntVector3 &Min, const FIntVector3 &Max)
Definition SparseVolumeTextureUtility.cpp:202
FIntVector3 ShiftRightAndMax(const FIntVector3 &Value, uint32 ShiftBy, int32 MinValue)
Definition SparseVolumeTextureUtility.cpp:208
uint32 PackX11Y11Z10(const FIntVector3 &Value)
Definition SparseVolumeTextureUtility.cpp:27
uint32 PackPageTableEntry(const FIntVector3 &Coord)
Definition SparseVolumeTextureUtility.cpp:32
bool IsSupportedFormat(EPixelFormat Format)
Definition SparseVolumeTextureUtility.cpp:178
void WriteVoxel(int64 VoxelIndex, uint8 *TileData, EPixelFormat Format, const FVector4f &Value, int32 DstComponent=-1)
Definition SparseVolumeTextureUtility.cpp:101
FIntVector3 UnpackPageTableEntry(uint32 Packed)
Definition SparseVolumeTextureUtility.cpp:38
Definition AdvancedWidgetsModule.cpp:13