UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FGPUSkinCache Class Reference

#include <GPUSkinCache.h>

Classes

struct  FProcessEntryInputs
 
struct  FProcessEntrySection
 
struct  FRWBuffersAllocation
 
struct  FRWBuffersAllocationInitializer
 
struct  FRWBufferTracker
 
struct  FSkinCacheRWBuffer
 
struct  FTaskData
 

Public Types

enum  ESkinCacheInitSettings { MaxUniformBufferBones = 256 , RWTangentXOffsetInFloats = 0 , RWTangentZOffsetInFloats = 1 , IntermediateAccumBufferNumInts = 8 }
 

Public Member Functions

 FGPUSkinCache (ERHIFeatureLevel::Type InFeatureLevel, bool bInRequiresMemoryLimit, UWorld *InWorld)
 
ENGINE_API FGPUSkinCache (ERHIFeatureLevel::Type InFeatureLevel, UWorld *InWorld)
 
ENGINE_API ~FGPUSkinCache ()
 
void ProcessEntry (FRHICommandList &RHICmdList, const FProcessEntryInputs &Inputs, FGPUSkinCacheEntry *&InOutEntry)
 
ENGINE_API void DrawVisualizationInfoText (const FName &GPUSkinCacheVisualizationMode, FScreenMessageWriter &ScreenMessageWriter) const
 
ENGINE_API UE::Tasks::FTask Dispatch (FRDGBuilder &GraphBuilder, const UE::Tasks::FTask &PrerequisitesTask, ERHIPipeline Pipeline)
 
ERHIFeatureLevel::Type GetFeatureLevel () const
 
bool HasWork () const
 
void DoDispatch (FRHICommandList &RHICmdList)
 
uint64 GetExtraRequiredMemoryAndReset ()
 
bool ProcessEntry (EGPUSkinCacheEntryMode Mode, FRHICommandList &RHICmdList, FGPUBaseSkinVertexFactory *VertexFactory, FGPUSkinPassthroughVertexFactory *TargetVertexFactory, const FSkelMeshRenderSection &BatchElement, FSkeletalMeshObject *Skin, const FMorphVertexBuffer *MorphVertexBuffer, const FSkeletalMeshVertexClothBuffer *ClothVertexBuffer, const FClothSimulData *SimData, const FMatrix44f &ClothToLocal, float ClothBlendWeight, FVector3f ClothScale, uint32 RevisionNumber, int32 Section, int32 LOD, bool &bRecreating, FGPUSkinCacheEntry *&InOutEntry)
 
ENGINE_API int32 AllocateDynamicMeshBoundsSlot (int32 NumSlots)
 
ENGINE_API void ReleaseDynamicMeshBoundsSlot (int32 Offset, int32 NumSlots)
 

Static Public Member Functions

static void UpdateSkinWeightBuffer (FGPUSkinCacheEntry *Entry)
 
static void SetEntryGPUSkin (FGPUSkinCacheEntry *Entry, FSkeletalMeshObject *Skin)
 
static void Dequeue (FGPUSkinCacheEntry *SkinCacheEntry)
 
static void Release (FGPUSkinCacheEntry *&SkinCacheEntry)
 
static bool IsEntryValid (FGPUSkinCacheEntry *SkinCacheEntry, int32 Section)
 
static FColor GetVisualizationDebugColor (const FName &GPUSkinCacheVisualizationMode, FGPUSkinCacheEntry *Entry, FGPUSkinCacheEntry *RayTracingEntry, uint32 SectionIndex)
 
static bool IsGPUSkinCacheRayTracingSupported ()
 
static FRWBufferGetPositionBuffer (FRDGBuilder &GraphBuilder, FGPUSkinCacheEntry const *Entry, uint32 SectionIndex)
 
static FRWBufferGetPreviousPositionBuffer (FRDGBuilder &GraphBuilder, FGPUSkinCacheEntry const *Entry, uint32 SectionIndex)
 
static FRWBufferGetTangentBuffer (FRDGBuilder &GraphBuilder, FGPUSkinCacheEntry const *Entry, uint32 SectionIndex)
 
static ENGINE_API ERHIPipeline GetDispatchPipeline (FRDGBuilder &GraphBuilder)
 
static ENGINE_API void AddAsyncComputeSignal (FRDGBuilder &GraphBuilder)
 
static ENGINE_API void AddAsyncComputeWait (FRDGBuilder &GraphBuilder)
 
static uint32 GetUpdatedFrame (FGPUSkinCacheEntry const *, uint32)
 

Member Enumeration Documentation

◆ ESkinCacheInitSettings

Enumerator
MaxUniformBufferBones 
RWTangentXOffsetInFloats 
RWTangentZOffsetInFloats 
IntermediateAccumBufferNumInts 

Constructor & Destructor Documentation

◆ FGPUSkinCache() [1/2]

FGPUSkinCache::FGPUSkinCache ( ERHIFeatureLevel::Type  InFeatureLevel,
bool  bInRequiresMemoryLimit,
UWorld InWorld 
)
inline

◆ FGPUSkinCache() [2/2]

FGPUSkinCache::FGPUSkinCache ( ERHIFeatureLevel::Type  InFeatureLevel,
UWorld InWorld 
)

◆ ~FGPUSkinCache()

FGPUSkinCache::~FGPUSkinCache ( )

Member Function Documentation

◆ AddAsyncComputeSignal()

void FGPUSkinCache::AddAsyncComputeSignal ( FRDGBuilder GraphBuilder)
static

◆ AddAsyncComputeWait()

void FGPUSkinCache::AddAsyncComputeWait ( FRDGBuilder GraphBuilder)
static

◆ AllocateDynamicMeshBoundsSlot()

int32 FGPUSkinCache::AllocateDynamicMeshBoundsSlot ( int32  NumSlots)

◆ Dequeue()

void FGPUSkinCache::Dequeue ( FGPUSkinCacheEntry SkinCacheEntry)
static

Dequeue a skin cache entry from the pending skin cache dispatches

◆ Dispatch()

UE::Tasks::FTask FGPUSkinCache::Dispatch ( FRDGBuilder GraphBuilder,
const UE::Tasks::FTask PrerequisitesTask,
ERHIPipeline  Pipeline 
)

◆ DoDispatch()

void FGPUSkinCache::DoDispatch ( FRHICommandList RHICmdList)
inline

◆ DrawVisualizationInfoText()

void FGPUSkinCache::DrawVisualizationInfoText ( const FName GPUSkinCacheVisualizationMode,
FScreenMessageWriter ScreenMessageWriter 
) const

◆ GetDispatchPipeline()

ERHIPipeline FGPUSkinCache::GetDispatchPipeline ( FRDGBuilder GraphBuilder)
static

◆ GetExtraRequiredMemoryAndReset()

uint64 FGPUSkinCache::GetExtraRequiredMemoryAndReset ( )
inline

◆ GetFeatureLevel()

ERHIFeatureLevel::Type FGPUSkinCache::GetFeatureLevel ( ) const
inline

◆ GetPositionBuffer()

FRWBuffer * FGPUSkinCache::GetPositionBuffer ( FRDGBuilder GraphBuilder,
FGPUSkinCacheEntry const *  Entry,
uint32  SectionIndex 
)
static

◆ GetPreviousPositionBuffer()

FRWBuffer * FGPUSkinCache::GetPreviousPositionBuffer ( FRDGBuilder GraphBuilder,
FGPUSkinCacheEntry const *  Entry,
uint32  SectionIndex 
)
static

◆ GetTangentBuffer()

FRWBuffer * FGPUSkinCache::GetTangentBuffer ( FRDGBuilder GraphBuilder,
FGPUSkinCacheEntry const *  Entry,
uint32  SectionIndex 
)
static

◆ GetUpdatedFrame()

static uint32 FGPUSkinCache::GetUpdatedFrame ( FGPUSkinCacheEntry const *  ,
uint32   
)
inlinestatic

◆ GetVisualizationDebugColor()

FColor FGPUSkinCache::GetVisualizationDebugColor ( const FName GPUSkinCacheVisualizationMode,
FGPUSkinCacheEntry Entry,
FGPUSkinCacheEntry RayTracingEntry,
uint32  SectionIndex 
)
static

◆ HasWork()

bool FGPUSkinCache::HasWork ( ) const
inline

◆ IsEntryValid()

bool FGPUSkinCache::IsEntryValid ( FGPUSkinCacheEntry SkinCacheEntry,
int32  Section 
)
static

◆ IsGPUSkinCacheRayTracingSupported()

bool FGPUSkinCache::IsGPUSkinCacheRayTracingSupported ( )
static

◆ ProcessEntry() [1/2]

bool FGPUSkinCache::ProcessEntry ( EGPUSkinCacheEntryMode  Mode,
FRHICommandList RHICmdList,
FGPUBaseSkinVertexFactory VertexFactory,
FGPUSkinPassthroughVertexFactory TargetVertexFactory,
const FSkelMeshRenderSection BatchElement,
FSkeletalMeshObject Skin,
const FMorphVertexBuffer MorphVertexBuffer,
const FSkeletalMeshVertexClothBuffer ClothVertexBuffer,
const FClothSimulData SimData,
const FMatrix44f ClothToLocal,
float  ClothBlendWeight,
FVector3f  ClothScale,
uint32  RevisionNumber,
int32  Section,
int32  LOD,
bool bRecreating,
FGPUSkinCacheEntry *&  InOutEntry 
)
inline

◆ ProcessEntry() [2/2]

void FGPUSkinCache::ProcessEntry ( FRHICommandList RHICmdList,
const FProcessEntryInputs Inputs,
FGPUSkinCacheEntry *&  InOutEntry 
)

◆ Release()

void FGPUSkinCache::Release ( FGPUSkinCacheEntry *&  SkinCacheEntry)
static

◆ ReleaseDynamicMeshBoundsSlot()

void FGPUSkinCache::ReleaseDynamicMeshBoundsSlot ( int32  Offset,
int32  NumSlots 
)

◆ SetEntryGPUSkin()

void FGPUSkinCache::SetEntryGPUSkin ( FGPUSkinCacheEntry Entry,
FSkeletalMeshObject Skin 
)
static

◆ UpdateSkinWeightBuffer()

void FGPUSkinCache::UpdateSkinWeightBuffer ( FGPUSkinCacheEntry Entry)
static

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