UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FTextureMipDataProvider Class Referenceabstract

#include <TextureMipDataProvider.h>

+ Inheritance diagram for FTextureMipDataProvider:

Public Types

enum class  ETickState : uint32 {
  Init , GetMips , PollMips , PostprocessGPUMipData ,
  CleanUp , Done
}
 
enum class  ETickThread : uint32 { Async , Render , None }
 

Public Member Functions

ENGINE_API FTextureMipDataProvider (const UTexture *Texture, ETickState InTickState, ETickThread InTickThread)
 
virtual ~FTextureMipDataProvider ()
 
ETickState GetNextTickState () const
 
ETickThread GetNextTickThread () const
 
virtual void Init (const FTextureUpdateContext &Context, const FTextureUpdateSyncOptions &SyncOptions)=0
 
virtual int32 GetMips (const FTextureUpdateContext &Context, int32 StartingMipIndex, const FTextureMipInfoArray &MipInfos, const FTextureUpdateSyncOptions &SyncOptions)=0
 
virtual bool PollMips (const FTextureUpdateSyncOptions &SyncOptions)=0
 
virtual bool PostprocessGPUMipData (const FTextureUpdateContext &Context, const FTextureRHIRef &NewTextureRHI, const FTextureUpdateSyncOptions &SyncOptions)
 
virtual ENGINE_API bool PostprocessGPUMipData (const FTextureUpdateContext &Context, const FTextureRHIRef &TextureRHI, int32 FirstMip, int32 NumMips, const FTextureUpdateSyncOptions &SyncOptions)
 
virtual void AbortPollMips ()
 
virtual void AbortPostprocessGPUMipData ()
 
virtual void CleanUp (const FTextureUpdateSyncOptions &SyncOptions)=0
 
virtual void Cancel (const FTextureUpdateSyncOptions &SyncOptions)=0
 
virtual ETickThread GetCancelThread () const =0
 

Protected Member Functions

void AdvanceTo (ETickState InState, ETickThread InThread)
 

Protected Attributes

const FStreamableRenderResourceState ResourceState
 
const int32 CurrentFirstLODIdx = INDEX_NONE
 
const int32 PendingFirstLODIdx = INDEX_NONE
 

Detailed Description

FTextureMipDataProvider defines the update steps and interface to implement the mip data strategy used in FTextureStreamIn. It allows to decouples where the texture mip data source from the texture update. Typical implementations are using DDC, disk files, internet server or dynamically generated.

Member Enumeration Documentation

◆ ETickState

Enumerator
Init 
GetMips 
PollMips 
PostprocessGPUMipData 
CleanUp 
Done 

◆ ETickThread

Enumerator
Async 
Render 
None 

Constructor & Destructor Documentation

◆ FTextureMipDataProvider()

FTextureMipDataProvider::FTextureMipDataProvider ( const UTexture Texture,
ETickState  InTickState,
ETickThread  InTickThread 
)

◆ ~FTextureMipDataProvider()

virtual FTextureMipDataProvider::~FTextureMipDataProvider ( )
inlinevirtual

Member Function Documentation

◆ AbortPollMips()

virtual void FTextureMipDataProvider::AbortPollMips ( )
inlinevirtual

Abort anything that could be stalling the update in PollMips(). Called from an async task. Expected behavior is to cancel any pending IO operations. Called when the FTextureStreamIn update is canceled and the current step is to be waiting on upon PollMips(). This is because Cancel() can only be executed when any pending operations are completed (see FTextureUpdateSyncOptions). Will be used if executing PollMips

Reimplemented in FTexture2DMipDataProvider_IO, and FLandscapeTextureStorageMipProvider.

◆ AbortPostprocessGPUMipData()

virtual void FTextureMipDataProvider::AbortPostprocessGPUMipData ( )
inlinevirtual

Abort anything that could be stalling the update in PostprocessGPUMipData(). Called from an async task. Expected behavior is to cancel any pending IO operations. Called when the FTextureStreamIn update is canceled and the current step is to be waiting on upon AbortPostprocessGPUMipData(). This is because Cancel() can only be executed when any pending operations are completed (see FTextureUpdateSyncOptions). Will be used if executing PostprocessGPUMipData

◆ AdvanceTo()

void FTextureMipDataProvider::AdvanceTo ( ETickState  InState,
ETickThread  InThread 
)
inlineprotected

◆ Cancel()

virtual void FTextureMipDataProvider::Cancel ( const FTextureUpdateSyncOptions SyncOptions)
pure virtual

Cancel the progression and release any temporary resources. Called within the FTextureStreamIn update when the stream in request is aborted or cannot complete correctly The Cancel() function is called on the thread returned by GetCancelThread().

Parameters
SyncOptions- Different sync options to control when the next tick of FTextureStreamIn can be scheduled.

Implemented in FTexture2DMipDataProvider_IO, FLandscapeTextureStorageMipProvider, and FLandscapeTextureMipEdgeOverrideProvider.

◆ CleanUp()

virtual void FTextureMipDataProvider::CleanUp ( const FTextureUpdateSyncOptions SyncOptions)
pure virtual

Release any temporary data and objects that where used for the update. Final step executed after the texture has been updated correctly.

Parameters
SyncOptions- Different sync options to control when the next tick of FTextureStreamIn can be scheduled.

Implemented in FTexture2DMipDataProvider_IO, FLandscapeTextureStorageMipProvider, and FLandscapeTextureMipEdgeOverrideProvider.

◆ GetCancelThread()

virtual ETickThread FTextureMipDataProvider::GetCancelThread ( ) const
pure virtual

◆ GetMips()

virtual int32 FTextureMipDataProvider::GetMips ( const FTextureUpdateContext Context,
int32  StartingMipIndex,
const FTextureMipInfoArray MipInfos,
const FTextureUpdateSyncOptions SyncOptions 
)
pure virtual

Acquire the mips this provider will handle. Non handled mips must be handled by the next mip data provider or the update will be cancelled altogether. GetMips() must typically advance to PollMips() if it wants to be able to notify FTextureStreamIn that something went wrong and that the update must be cancelled.

Parameters
Context- An update context constant throughout the FTextureStreamIn update. Gives things like which texture asset is updated and what mips are streamed in.
StartingMipIndex- The current starting mip index, somewhere between FTextureUpdateContext::PendingFirstMipIndex and FTextureUpdateContext::CurrentFirstMipIndex inclusively.
MipInfos- The array of FTextureMipInfo that hold the information relative to each mip for which data must be provided.
SyncOptions- Different sync options to control when the next tick of FTextureStreamIn can be scheduled.

Return the next value StartingMipIndex (for the next provider). Must be FTextureUpdateContext::CurrentFirstMipIndex to indicate that all mips have been handled.

Implemented in FTexture2DMipDataProvider_IO, FLandscapeTextureStorageMipProvider, and FLandscapeTextureMipEdgeOverrideProvider.

◆ GetNextTickState()

ETickState FTextureMipDataProvider::GetNextTickState ( ) const
inline

◆ GetNextTickThread()

ETickThread FTextureMipDataProvider::GetNextTickThread ( ) const
inline

◆ Init()

virtual void FTextureMipDataProvider::Init ( const FTextureUpdateContext Context,
const FTextureUpdateSyncOptions SyncOptions 
)
pure virtual

Initialize data prelimary to the GetMips() step. Can be called several time (it does not have to advance to GetMips immediately). Mostly useful to simplify the logic in GetMips(). This is because GetMips is a chained call between all mip data providers, each taking some mips to handle, and is not compatible with multi step process. This means that GetMips() must return immediately and can not postpone or delay return by not advancing to the next steps.

Parameters
Context- An update context constant throughout the FTextureStreamIn update. Gives things like which texture asset is updated and what mips are streamed in.
SyncOptions- Different sync options to control when the next tick of FTextureStreamIn can be scheduled.

Implemented in FTexture2DMipDataProvider_IO, FLandscapeTextureStorageMipProvider, and FLandscapeTextureMipEdgeOverrideProvider.

◆ PollMips()

virtual bool FTextureMipDataProvider::PollMips ( const FTextureUpdateSyncOptions SyncOptions)
pure virtual

Check if each mip handled by this mip data provider have been updated correctly. Must move to CleanUp() or Done() when done.

Parameters
SyncOptions- Different sync options to control when the next tick of FTextureStreamIn can be scheduled.

Return true unless the texture update needs to be aborted because the mip won't be updated correctly (for example IO error).

Implemented in FTexture2DMipDataProvider_IO, FLandscapeTextureStorageMipProvider, and FLandscapeTextureMipEdgeOverrideProvider.

◆ PostprocessGPUMipData() [1/2]

virtual bool FTextureMipDataProvider::PostprocessGPUMipData ( const FTextureUpdateContext Context,
const FTextureRHIRef NewTextureRHI,
const FTextureUpdateSyncOptions SyncOptions 
)
inlinevirtual

◆ PostprocessGPUMipData() [2/2]

bool FTextureMipDataProvider::PostprocessGPUMipData ( const FTextureUpdateContext Context,
const FTextureRHIRef TextureRHI,
int32  FirstMip,
int32  NumMips,
const FTextureUpdateSyncOptions SyncOptions 
)
virtual

Member Data Documentation

◆ CurrentFirstLODIdx

const int32 FTextureMipDataProvider::CurrentFirstLODIdx = INDEX_NONE
protected

◆ PendingFirstLODIdx

const int32 FTextureMipDataProvider::PendingFirstLODIdx = INDEX_NONE
protected

◆ ResourceState

const FStreamableRenderResourceState FTextureMipDataProvider::ResourceState
protected

The streamable state requested.


The documentation for this class was generated from the following files: