UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
StreamableTextureResource.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5/*=============================================================================
6 StreamableTextureResource.h: Unreal texture related classes.
7=============================================================================*/
8
9#include "CoreMinimal.h"
10#include "TextureResource.h"
12#include "Engine/Texture.h"
13
15
20{
21public:
22
24
25 // Dynamic cast methods.
27 // Dynamic cast methods (const).
28 virtual const FStreamableTextureResource* GetStreamableTextureResource() const { return this; }
29
30 virtual uint32 GetSizeX() const final override { return SizeX; }
31 virtual uint32 GetSizeY() const final override { return SizeY; }
32 // Depth for 3D texture or ArraySize for texture 2d arrays
33 virtual uint32 GetSizeZ() const final override { return SizeZ; }
34 virtual void InitRHI(FRHICommandListBase& RHICmdList) override;
35 virtual void ReleaseRHI() final override;
36
37 // This is only coherent sync on the rendering thread. To get the gamethread coherent value, use UStreamableRenderResource.CacheStreamableResourceState
43
44 // Get the state it will be in after InitRHI() gets called. Used to synchronize UStreamableRenderResource.CacheStreamableResourceState in CreateResource().
50
52 UE_DEPRECATED(5.7, "A RHICmdList argument is now required.")
54
55 // Return the platform data mips, zero based on the resource mip count and not to the asset mip count.
57 const FTexture2DMipMap* GetPlatformMip(int32 MipIdx) const;
58
60
61 // Return the texture creation flags, does not include TexCreate_Virtual as it could change per mip. Use IsTextureRHIPartiallyResident() instead.
63
64 inline const FName& GetTextureName() const { return TextureName; }
65
66 inline TextureGroup GetLODGroup() const { return LODGroup; }
67
70
71 // Get the current first mip index, of this renderthread resource. Non streaming asset always return 0.
73 {
74 return State.IsValid() ? State.ResidentFirstLODIdx() : 0;
75 }
76
77 inline uint32 GetExtData() const { return PlatformData->GetExtData(); }
78
80 virtual uint64 GetPlatformMipsSize(uint32 NumMips) const = 0;
81
82protected:
83
84 virtual void CreateTexture(FRHICommandListBase& RHICmdList) = 0;
86
89
92
98 float MipBias = 0;
99
106
119
122
123#if STATS
124private:
126 void IncrementTextureStats() const;
127 void DecrementTextureStats() const;
128
130 FName LODGroupStatName;
132 uint64 TextureSize = 0;
134 bool bIsNeverStream = false;
135#endif
136};
137
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define checkSlow(expr)
Definition AssertionMacros.h:332
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
FPlatformTypes::int8 int8
An 8-bit signed integer.
Definition Platform.h:1121
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
EPixelFormat
Definition PixelFormat.h:16
@ PF_Unknown
Definition PixelFormat.h:17
@ AM_Wrap
Definition RHIDefinitions.h:340
#define TexCreate_None
Definition RHIDefinitions.h:1191
@ SF_Point
Definition RHIDefinitions.h:327
ETextureCreateFlags
Definition RHIDefinitions.h:1091
EMipFadeSettings
Definition RenderResource.h:260
@ MipFade_Normal
Definition RenderResource.h:261
bool CanCreateWithPartiallyResidentMips(ETextureCreateFlags TexCreateFlags)
Definition StreamableTextureResource.cpp:38
TextureGroup
Definition TextureDefines.h:29
CORE_API bool IsInGameThread()
Definition ThreadingBase.cpp:185
CORE_API bool IsInRenderingThread()
Definition ThreadingBase.cpp:273
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition NameTypes.h:617
Definition RHICommandList.h:455
Definition RHIResources.h:2153
bool IsInitialized() const
Definition RenderResource.h:114
Definition StreamableTextureResource.h:20
virtual uint32 GetSizeX() const final override
Definition StreamableTextureResource.h:30
FName TextureName
Definition StreamableTextureResource.h:108
const FTexturePlatformData * PlatformData
Definition StreamableTextureResource.h:88
TEnumAsByte< ESamplerAddressMode > AddressW
Definition StreamableTextureResource.h:97
virtual const FStreamableTextureResource * GetStreamableTextureResource() const
Definition StreamableTextureResource.h:28
EPixelFormat GetPixelFormat() const
Definition StreamableTextureResource.h:59
ETextureCreateFlags CreationFlags
Definition StreamableTextureResource.h:116
virtual FStreamableTextureResource * GetStreamableTextureResource()
Definition StreamableTextureResource.h:26
bool bUsePartiallyResidentMips
Definition StreamableTextureResource.h:118
void RefreshSamplerStates()
Definition StreamableTextureResource.cpp:280
TArrayView< const FTexture2DMipMap * > GetPlatformMipsView() const
Definition StreamableTextureResource.cpp:313
FStreamableRenderResourceState GetPostInitState() const
Definition StreamableTextureResource.h:45
TextureGroup GetLODGroup() const
Definition StreamableTextureResource.h:66
float MipBias
Definition StreamableTextureResource.h:98
FStreamableRenderResourceState GetState() const
Definition StreamableTextureResource.h:38
const FName & GetTextureName() const
Definition StreamableTextureResource.h:64
TEnumAsByte< ESamplerFilter > Filter
Definition StreamableTextureResource.h:94
uint32 SizeY
Definition StreamableTextureResource.h:103
EPixelFormat PixelFormat
Definition StreamableTextureResource.h:114
virtual void InitRHI(FRHICommandListBase &RHICmdList) override
Definition StreamableTextureResource.cpp:203
virtual uint32 GetSizeZ() const final override
Definition StreamableTextureResource.h:33
virtual uint32 GetSizeY() const final override
Definition StreamableTextureResource.h:31
virtual void ReleaseRHI() final override
Definition StreamableTextureResource.cpp:235
int32 GetCurrentFirstMip() const
Definition StreamableTextureResource.h:72
uint32 GetExtData() const
Definition StreamableTextureResource.h:77
virtual uint64 GetPlatformMipsSize(uint32 NumMips) const =0
const FTexture2DMipMap * GetPlatformMip(int32 MipIdx) const
Definition StreamableTextureResource.cpp:318
EMipFadeSettings MipFadeSetting
Definition StreamableTextureResource.h:110
FStreamableRenderResourceState State
Definition StreamableTextureResource.h:91
virtual void CreatePartiallyResidentTexture(FRHICommandListBase &RHICmdList)=0
void FinalizeStreaming(FRHICommandListBase &RHICmdList, FRHITexture *InTextureRHI)
Definition StreamableTextureResource.cpp:248
TEnumAsByte< ESamplerAddressMode > AddressV
Definition StreamableTextureResource.h:96
virtual void CreateTexture(FRHICommandListBase &RHICmdList)=0
TextureGroup LODGroup
Definition StreamableTextureResource.h:112
uint32 SizeX
Definition StreamableTextureResource.h:101
uint32 SizeZ
Definition StreamableTextureResource.h:105
TEnumAsByte< ESamplerAddressMode > AddressU
Definition StreamableTextureResource.h:95
ETextureCreateFlags GetCreationFlags() const
Definition StreamableTextureResource.h:62
int8 MaxAniso
Definition StreamableTextureResource.h:121
Definition TextureResource.h:103
Definition ArrayView.h:139
Definition EnumAsByte.h:22
Definition Texture.h:1219
Definition StreamableRenderResourceState.h:23
bool IsValid() const
Definition StreamableRenderResourceState.h:102
int32 ResidentFirstLODIdx() const
Definition StreamableRenderResourceState.h:90
Definition TextureResource.h:46
Definition Texture.h:839
int32 GetExtData() const
Definition Texture.h:1068