UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
RuntimeVirtualTexture.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#include "VirtualTexturing.h"
10#include "RuntimeVirtualTexture.generated.h"
11
13namespace UE { namespace Shader { enum class EValueType : uint8; } }
14
16UCLASS(ClassGroup = Rendering, BlueprintType, MinimalAPI)
18{
21
22 friend class FRuntimeVirtualTextureDetailsCustomization;
23
24protected:
29 UPROPERTY(EditAnywhere, BluePrintGetter = GetTileCount, Category = Size, meta = (UIMin = "0", UIMax = "12", DisplayName = "Size of the virtual texture in tiles"))
30 int32 TileCount = 8; // 256
31
33 UPROPERTY(EditAnywhere, BluePrintGetter = GetTileSize, Category = Size, meta = (UIMin = "0", UIMax = "4", DisplayName = "Size of each virtual texture tile"))
34 int32 TileSize = 2; // 256
35
37 UPROPERTY(EditAnywhere, BluePrintGetter = GetTileBorderSize, Category = Size, meta = (UIMin = "0", UIMax = "4", DisplayName = "Border padding for each virtual texture tile"))
38 int32 TileBorderSize = 2; // 4
39
41 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Layout, meta = (DisplayName = "Virtual texture content"), AssetRegistrySearchable)
43
45 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Layout, meta = (DisplayName = "Enable texture compression"))
46 bool bCompressTextures = true;
47
51 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Performance, meta = (DisplayName = "Use Low Quality Compression", editcondition = "MaterialType == ERuntimeVirtualTextureMaterialType::BaseColor_Normal_Roughness && bCompressTextures == true"))
52 bool bUseLowQualityCompression = false;
53
55 UPROPERTY(EditAnywhere, AdvancedDisplay, Category = Performance, meta = (EditCondition = bUseCustomPriority))
56 EVTProducerPriority CustomPriority;
57
58 UPROPERTY(EditAnywhere, AdvancedDisplay, Category = Performance, meta = (InlineEditConditionToggle))
59 bool bUseCustomPriority = false;
60
62 UPROPERTY(EditAnywhere, AdvancedDisplay, Category = Layout, meta = (DisplayName = "Enable clear before render"))
63 bool bClearTextures = true;
64
66 UPROPERTY(EditAnywhere, AdvancedDisplay, Category = Layout, meta = (DisplayName = "Enable packed page table"))
67 bool bSinglePhysicalSpace = true;
68
70 UPROPERTY(EditAnywhere, AdvancedDisplay, Category = Layout, meta = (DisplayName = "Enable private page table"))
71 bool bPrivateSpace = true;
72
74 UPROPERTY(EditAnywhere, Category = Layout, meta = (DisplayName = "Enable adaptive page table"))
75 bool bAdaptive = false;
76
78 UPROPERTY(EditAnywhere, AdvancedDisplay, Category = Layout, meta = (DisplayName = "Enable continuous page updates"))
79 bool bContinuousUpdate = false;
80
82 UPROPERTY(EditAnywhere, AdvancedDisplay, Category = Layout, meta = (UIMin = "0", UIMax = "5", DisplayName = "Number of low mips to remove from the virtual texture"))
83 int32 RemoveLowMips = 0;
84
86 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Settings)
87 FVector4f CustomMaterialData;
88
90 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Settings, meta = (DisplayName = "Texture Group"), AssetRegistrySearchable)
92
94 UPROPERTY()
95 int32 Size_DEPRECATED = -1;
96
98 UPROPERTY()
99 TObjectPtr<class URuntimeVirtualTextureStreamingProxy> StreamingTexture_DEPRECATED = nullptr;
100
101public:
103 ERuntimeVirtualTextureMaterialType GetMaterialType() const { return MaterialType; }
104
106 UFUNCTION(BlueprintGetter)
107 int32 GetTileCount() const { return GetClampedTileCount(TileCount, bAdaptive); }
108 static int32 GetClampedTileCount(int32 InTileCount, bool InAdaptive) { return 1 << FMath::Clamp(InTileCount, 0, GetMaxTileCountLog2(InAdaptive)); }
109 static ENGINE_API int32 GetMaxTileCountLog2(bool InAdaptive);
111 UFUNCTION(BlueprintGetter)
112 int32 GetTileSize() const { return GetClampedTileSize(TileSize); }
113 static int32 GetClampedTileSize(int32 InTileSize) { return 1 << FMath::Clamp(InTileSize + 6, 6, 10); }
115 UFUNCTION(BlueprintGetter)
116 int32 GetTileBorderSize() const { return 2 * FMath::Clamp(TileBorderSize, 0, 4); }
117
119 UFUNCTION(BlueprintPure, Category = Size)
120 int32 GetSize() const { return GetTileCount() * GetTileSize(); }
122 UFUNCTION(BlueprintPure, Category = Size)
123 ENGINE_API int32 GetPageTableSize() const;
124
126 bool GetCompressTextures() const { return bCompressTextures; }
128 bool GetClearTextures() const { return bClearTextures; }
130 bool GetSinglePhysicalSpace() const { return bSinglePhysicalSpace; }
132 bool GetPrivateSpace() const { return bPrivateSpace; }
134 bool GetAdaptivePageTable() const { return bAdaptive; }
136 bool GetContinuousUpdate() const { return bContinuousUpdate; }
138 int32 GetRemoveLowMips() const { return FMath::Clamp(RemoveLowMips, 0, 5); }
140 bool GetLQCompression() const { return bUseLowQualityCompression; }
142 FVector4f GetCustomMaterialData() const { return CustomMaterialData; }
144 TEnumAsByte<enum TextureGroup> GetLODGroup() const { return LODGroup; }
145
148 {
150 int32 TileCountBias = 0;
151 };
152
154 ENGINE_API void GetProducerDescription(FVTProducerDescription& OutDesc, FInitSettings const& InitSettings, FTransform const& VolumeToWorld) const;
155
157 ENGINE_API int32 GetLayerCount() const;
161 ENGINE_API EPixelFormat GetLayerFormat(int32 LayerIndex) const;
163 ENGINE_API bool IsLayerSRGB(int32 LayerIndex) const;
165 ENGINE_API bool IsLayerYCoCg(int32 LayerIndex) const;
166
173
176 UE_DEPRECATED(5.6, "Use the version that takes a FOnReInitDelegate instead.")
178
180 ENGINE_API void Release();
181
183 ENGINE_API FVirtualTextureProducerHandle GetProducerHandle() const;
185 ENGINE_API IAllocatedVirtualTexture* GetAllocatedVirtualTexture() const;
186
188 ENGINE_API FVector4 GetUniformParameter(int32 Index) const;
190 static ENGINE_API UE::Shader::EValueType GetUniformParameterType(int32 Index);
191
192 ENGINE_API EVTProducerPriority GetPriority() const;
193 ENGINE_API EVTProducerPriority GetDefaultPriority() const;
194 bool GetUseCustomPriority() const
195 {
196 return bUseCustomPriority;
197 }
198
199protected:
203 ENGINE_API void InitNullResource();
204
205 //~ Begin UObject Interface.
206 ENGINE_API virtual void GetAssetRegistryTags(FAssetRegistryTagsContext Context) const override;
207 UE_DEPRECATED(5.4, "Implement the version that takes FAssetRegistryTagsContext instead.")
208 ENGINE_API virtual void GetAssetRegistryTags(TArray<FAssetRegistryTag>& OutTags) const override;
210#if WITH_EDITOR
211 ENGINE_API virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
212#endif
213 //~ End UObject Interface.
214
215private:
218
220 FVector4 WorldToUVTransformParameters[3];
222 FVector4 WorldHeightUnpackParameter;
223
225 FOnReInitDelegate OnReInitDelegate;
226};
227
229
GLenum GLuint texture
Definition AndroidOpenGLFunctions.h:46
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
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
return true
Definition ExternalRpcRegistry.cpp:601
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define UFUNCTION(...)
Definition ObjectMacros.h:745
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
EPixelFormat
Definition PixelFormat.h:16
EShaderPlatform
Definition RHIShaderPlatform.h:11
ERuntimeVirtualTextureMaterialType
Definition RuntimeVirtualTextureEnum.h:38
TextureGroup
Definition TextureDefines.h:29
EVTProducerPriority
Definition VirtualTextureEnum.h:11
uint32 Size
Definition VulkanMemory.cpp:4034
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
Definition AssetRegistryTagsContext.h:98
Definition RuntimeVirtualTexture.cpp:125
Definition VirtualTexturing.h:374
Definition VirtualTexturing.h:289
Definition Array.h:670
Definition EnumAsByte.h:22
Definition Object.h:95
Definition VirtualTexture.h:28
Definition RuntimeVirtualTexture.h:18
bool GetPrivateSpace() const
Definition RuntimeVirtualTexture.h:132
bool GetContinuousUpdate() const
Definition RuntimeVirtualTexture.h:136
FVector4f GetCustomMaterialData() const
Definition RuntimeVirtualTexture.h:142
DECLARE_DELEGATE(FOnReInitDelegate)
static int32 GetClampedTileSize(int32 InTileSize)
Definition RuntimeVirtualTexture.h:113
TEnumAsByte< enum TextureGroup > GetLODGroup() const
Definition RuntimeVirtualTexture.h:144
int32 GetRemoveLowMips() const
Definition RuntimeVirtualTexture.h:138
static int32 GetClampedTileCount(int32 InTileCount, bool InAdaptive)
Definition RuntimeVirtualTexture.h:108
bool GetCompressTextures() const
Definition RuntimeVirtualTexture.h:126
bool GetSinglePhysicalSpace() const
Definition RuntimeVirtualTexture.h:130
bool GetClearTextures() const
Definition RuntimeVirtualTexture.h:128
bool GetLQCompression() const
Definition RuntimeVirtualTexture.h:140
bool GetAdaptivePageTable() const
Definition RuntimeVirtualTexture.h:134
Definition VirtualTexture.h:39
Definition RuntimeVirtualTexture.h:231
ENGINE_API IVirtualTexture * BindStreamingTextureProducer(IVirtualTexture *InProducer, IVirtualTexture *InStreamingProducer, int32 InTransitionLevel)
Definition RuntimeVirtualTexture.cpp:760
ENGINE_API bool IsMaterialTypeSupported(ERuntimeVirtualTextureMaterialType MaterialType)
Definition RuntimeVirtualTexture.cpp:800
ENGINE_API IVirtualTexture * CreateStreamingTextureProducer(UVirtualTexture2D *InStreamingTexture, FVTProducerDescription const &InOwnerProducerDesc, FVTProducerDescription &OutStreamingProducerDesc)
Definition RuntimeVirtualTexture.cpp:713
EValueType
Definition ShaderTypes.h:94
Definition AdvancedWidgetsModule.cpp:13
@ false
Definition radaudio_common.h:23
U16 Index
Definition radfft.cpp:71
static constexpr UE_FORCEINLINE_HINT T Clamp(const T X, const T MinValue, const T MaxValue)
Definition UnrealMathUtility.h:592
Definition UnrealType.h:6865
Definition VirtualTexturing.h:148
Definition ObjectPtr.h:488
Definition RuntimeVirtualTexture.h:148
Definition VirtualTexturing.h:33