UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SparseVolumeTextureTileDataTexture.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"
6#include "RenderResource.h"
8
10class FRDGBuilder;
11enum EPixelFormat : uint8;
12
13namespace UE
14{
15namespace SVT
16{
17
18class FTileUploader;
19
20// Represents the physical tile data texture that serves as backing memory for the streamed in tiles. While this is treated as a single logical texture,
21// it currently supports up to two actual RHI textures.
23{
24public:
25 enum class EUploaderState
26 {
28 };
29
30 static bool ShouldUseReservedResources();
34
35 // Constructor. May change the requested ResolutionInTiles (and resulting PhysicalTilesCapacity) if it exceeds hardware limits.
36 explicit FTileDataTexture(const FIntVector3& ResolutionInTiles, EPixelFormat FormatA, EPixelFormat FormatB, const FVector4f& FallbackValueA, const FVector4f& FallbackValueB);
37
38 EUploaderState GetUploaderState() const { return UploaderState; }
39 int32 GetTileCapacity() const { return PhysicalTilesCapacity; }
40 FIntVector3 GetResolutionInTiles() const { return ResolutionInTiles; }
43
44 // Transitions from EUploaderState::Ready (or EUploaderState::Reserved) to EUploaderState::Reserving and allows callers to call ReserveUpload() afterwards. Resets number of reserved tiles/voxels.
45 void BeginReserveUpload();
46 // Reserves space in the upload buffer to hold the given number of tiles and voxels in addition to all tiles and voxels reserved with prior calls to this function. Must be in EUploaderState::Reserving.
47 void ReserveUpload(int32 NumTiles, int32 NumVoxelsA, int32 NumVoxelsB);
48 // Transitions from EUploaderState::Reserving to EUploaderState::Reserved.
49 void EndReserveUpload();
50 // Transitions from EUploaderState::Reserved to EUploaderState::Uploading and allows callers to call AddUpload() afterwards.
51 void BeginUpload(FRDGBuilder& GraphBuilder);
52 // Returns pointers/offsets into upload buffer memory for the caller to write data into. Must be in EUploaderState::Uploading.
54 // Actually uploads the data written to the upload buffer and transitions from EUploaderState::Uploading to EUploaderState::Ready.
55 void EndUpload(FRDGBuilder& GraphBuilder);
56
57 virtual void InitRHI(FRHICommandListBase& RHICmdList) override;
58 virtual void ReleaseRHI() override;
59
60private:
61 TUniquePtr<FTileUploader> TileUploader;
62 FIntVector3 ResolutionInTiles;
63 int32 PhysicalTilesCapacity;
64 EPixelFormat FormatA;
65 EPixelFormat FormatB;
66 FVector4f FallbackValueA;
67 FVector4f FallbackValueB;
68 TRefCountPtr<IPooledRenderTarget> TileDataTextureA;
69 TRefCountPtr<IPooledRenderTarget> TileDataTextureB;
71 int32 NumReservedUploadTiles = 0;
72 int32 NumReservedUploadVoxelsA = 0;
73 int32 NumReservedUploadVoxelsB = 0;
74};
75
76}
77}
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
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition RenderGraphBuilder.h:49
Definition RHICommandList.h:455
Definition RenderResource.h:37
Definition RefCounting.h:454
Definition UniquePtr.h:107
Definition SparseVolumeTextureTileDataTexture.h:23
TRefCountPtr< IPooledRenderTarget > GetTileDataTextureA()
Definition SparseVolumeTextureTileDataTexture.h:41
void ReserveUpload(int32 NumTiles, int32 NumVoxelsA, int32 NumVoxelsB)
Definition SparseVolumeTextureTileDataTexture.cpp:164
TRefCountPtr< IPooledRenderTarget > GetTileDataTextureB()
Definition SparseVolumeTextureTileDataTexture.h:42
EUploaderState GetUploaderState() const
Definition SparseVolumeTextureTileDataTexture.h:38
virtual void ReleaseRHI() override
Definition SparseVolumeTextureTileDataTexture.cpp:226
static FIntVector3 GetLargestPossibleVolumeResolutionInTiles(int32 InVoxelMemSize)
Definition SparseVolumeTextureTileDataTexture.cpp:84
FIntVector3 GetResolutionInTiles() const
Definition SparseVolumeTextureTileDataTexture.h:40
void BeginUpload(FRDGBuilder &GraphBuilder)
Definition SparseVolumeTextureTileDataTexture.cpp:181
EUploaderState
Definition SparseVolumeTextureTileDataTexture.h:26
void EndReserveUpload()
Definition SparseVolumeTextureTileDataTexture.cpp:175
virtual void InitRHI(FRHICommandListBase &RHICmdList) override
Definition SparseVolumeTextureTileDataTexture.cpp:201
void EndUpload(FRDGBuilder &GraphBuilder)
Definition SparseVolumeTextureTileDataTexture.cpp:194
static bool ShouldUseReservedResources()
Definition SparseVolumeTextureTileDataTexture.cpp:31
void BeginReserveUpload()
Definition SparseVolumeTextureTileDataTexture.cpp:155
static FIntVector3 GetVolumeResolutionInTiles(int32 InNumRequiredTiles)
Definition SparseVolumeTextureTileDataTexture.cpp:58
int32 GetTileCapacity() const
Definition SparseVolumeTextureTileDataTexture.h:39
static int64 GetMaxTileDataTextureResourceSize(int32 InVoxelMemSize)
Definition SparseVolumeTextureTileDataTexture.cpp:38
FTileUploader::FAddResult AddUpload(int32 NumTiles, int32 NumVoxelsA, int32 NumVoxelsB)
Definition SparseVolumeTextureTileDataTexture.cpp:188
Definition AdvancedWidgetsModule.cpp:13
Definition SparseVolumeTextureUpload.h:27