UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FSkeletalMeshObjectGPUSkin Class Referencefinal

#include <SkeletalRenderGPUSkin.h>

+ Inheritance diagram for FSkeletalMeshObjectGPUSkin:

Classes

struct  FVertexFactoryBuffers
 

Public Member Functions

 FSkeletalMeshObjectGPUSkin (const USkinnedMeshComponent *InMeshComponent, FSkeletalMeshRenderData *InSkelMeshRenderData, ERHIFeatureLevel::Type InFeatureLevel)
 
 FSkeletalMeshObjectGPUSkin (const FSkinnedMeshSceneProxyDesc &InMeshDesc, FSkeletalMeshRenderData *InSkelMeshRenderData, ERHIFeatureLevel::Type InFeatureLevel)
 
virtual ~FSkeletalMeshObjectGPUSkin ()
 
virtual void InitResources (const FSkinnedMeshSceneProxyDesc &InMeshDesc) override
 
virtual void ReleaseResources () override
 
virtual void Update (int32 LODIndex, const FSkinnedMeshSceneProxyDynamicData &InSkeletalMeshDynamicData, const FPrimitiveSceneProxy *InSceneProxy, const USkinnedAsset *InSkinnedAsset, const FMorphTargetWeightMap &InActiveMorphTargets, const TArray< float > &InMorphTargetWeights, EPreviousBoneTransformUpdateMode PreviousBoneTransformUpdateMode, const FExternalMorphWeightData &InExternalMorphWeightData) override
 
void UpdateDynamicData_RenderThread (FRHICommandList &RHICmdList, FDynamicSkelMeshObjectDataGPUSkin *InDynamicData)
 
virtual const FVertexFactoryGetSkinVertexFactory (const FSceneView *View, int32 LODIndex, int32 ChunkIdx, ESkinVertexFactoryMode VFMode=ESkinVertexFactoryMode::Default) const override
 
virtual const FVertexFactoryGetStaticSkinVertexFactory (int32 LODIndex, int32 ChunkIdx, ESkinVertexFactoryMode VFMode) const override
 
virtual TArray< FTransform > * GetComponentSpaceTransforms () const override
 
virtual TConstArrayView< FMatrix44fGetReferenceToLocalMatrices () const override
 
virtual TConstArrayView< FMatrix44fGetPrevReferenceToLocalMatrices () const override
 
virtual bool GetCachedGeometry (FRDGBuilder &GraphBuilder, FCachedGeometry &OutCachedGeometry) const override
 
FMeshDeformerGeometryGetDeformerGeometry (int32 LODIndex)
 
virtual bool IsGPUSkinMesh () const override
 
virtual int32 GetDynamicBoundsStartOffset (int32 LODIndex) const override
 
virtual int32 GetLOD () const override
 
virtual bool HaveValidDynamicData () const override
 
virtual void GetResourceSizeEx (FResourceSizeEx &CumulativeResourceSize) override
 
bool IsExternalMorphSetActive (int32 MorphSetID, const FExternalMorphSet &MorphSet) const
 
const FSkinWeightVertexBufferGetSkinWeightVertexBuffer (int32 LODIndex) const
 
FGPUBaseSkinVertexFactory const * GetBaseSkinVertexFactory (int32 LODIndex, int32 ChunkIdx) const
 
FMatrix GetTransform () const
 
virtual void SetTransform (const FMatrix &InNewLocalToWorld, uint32 FrameNumber) override
 
virtual void RefreshClothingTransforms (const FMatrix &InNewLocalToWorld, uint32 FrameNumber) override
 
virtual void UpdateSkinWeightBuffer (const TArrayView< const FSkelMeshComponentLODInfo > InLODInfo) override
 
ESkeletalMeshGPUSkinTechnique GetGPUSkinTechnique (int32 LODIndex)
 
- Public Member Functions inherited from FSkeletalMeshObject
ENGINE_API FSkeletalMeshObject (const USkinnedMeshComponent *InMeshComponent, FSkeletalMeshRenderData *InSkelMeshRenderData, ERHIFeatureLevel::Type FeatureLevel)
 
ENGINE_API FSkeletalMeshObject (const FSkinnedMeshSceneProxyDesc &InMeshDesc, FSkeletalMeshRenderData *InSkelMeshRenderData, ERHIFeatureLevel::Type FeatureLevel)
 
virtual ENGINE_API ~FSkeletalMeshObject ()
 
ENGINE_API void Update (int32 LODIndex, const USkinnedMeshComponent *InMeshComponent, const FMorphTargetWeightMap &InActiveMorphTargets, const TArray< float > &MorphTargetWeights, EPreviousBoneTransformUpdateMode PreviousBoneTransformUpdateMode, const FExternalMorphWeightData &InExternalMorphWeightData)
 
virtual void PreGDMECallback (FRHICommandList &RHICmdList, class FGPUSkinCache *GPUSkinCache, uint32 FrameNumber)
 
virtual const FSkinBatchVertexFactoryUserDataGetVertexFactoryUserData (const int32 LODIndex, int32 ChunkIdx, ESkinVertexFactoryMode VFMode) const
 
virtual bool IsCPUSkinned () const
 
virtual bool IsNaniteMesh () const
 
virtual const Nanite::FMaterialAuditGetNaniteMaterials () const
 
virtual const TArray< FMatrix3x4 > * GetCurrentBoneTransforms () const
 
virtual const TArray< FMatrix3x4 > * GetPreviousBoneTransforms () const
 
virtual FSkinningSceneExtensionProxyCreateSceneExtensionProxy (const USkinnedAsset *InSkinnedAsset, bool bAllowScaling)
 
bool GetCachedGeometry (FCachedGeometry &OutCachedGeometry) const
 
void UpdateSkinWeightBuffer (const USkinnedMeshComponent *InMeshComponent)
 
virtual void EnableOverlayRendering (bool bEnabled, const TArray< int32 > *InBonesOfInterest, const TArray< UMorphTarget * > *MorphTargetOfInterest)
 
virtual void DrawVertexElements (FPrimitiveDrawInterface *PDI, const FMatrix &ToWorldSpace, bool bDrawNormals, bool bDrawTangents, bool bDrawBinormals) const
 
void UpdateMinDesiredLODLevel (const FSceneView *View, const FBoxSphereBounds &Bounds)
 
bool ShouldUsePerBoneMotionBlur () const
 
ENGINE_API const TArray< FSkelMeshRenderSection > & GetRenderSections (int32 InLODIndex) const
 
void SetHiddenMaterials (int32 InLODIndex, const TArray< bool > &HiddenMaterials)
 
bool IsMaterialHidden (int32 InLODIndex, int32 MaterialIdx) const
 
void InitLODInfos (const TArrayView< const FSkelMeshComponentLODInfo > InComponentLODInfo, const USkinnedAsset *InSkinnedAsset)
 
uint32 GetComponentId () const
 
TStatId GetStatId () const
 
FSkeletalMeshRenderDataGetSkeletalMeshRenderData () const
 
FColor GetSkinCacheVisualizationDebugColor (const FName &GPUSkinCacheVisualizationMode, uint32 SectionIndex) const
 
FName GetAssetPathName (int32 LODIndex=-1) const
 
FName GetDebugName () const
 
ERHIFeatureLevel::Type GetFeatureLevel () const
 
bool SupportsStaticRelevance () const
 
float GetScreenSize (int32 LODIndex) const
 
- Public Member Functions inherited from FDeferredCleanupInterface
virtual ~FDeferredCleanupInterface ()
 

Static Public Member Functions

static void GetUsedVertexFactoryData (FSkeletalMeshRenderData *SkelMeshRenderData, int32 InLOD, USkinnedMeshComponent *SkinnedMeshComponent, FSkelMeshRenderSection &RenderSection, ERHIFeatureLevel::Type InFeatureLevel, FPSOPrecacheVertexFactoryDataList &VertexFactoryDataList)
 
- Static Public Member Functions inherited from FSkeletalMeshObject
static FSkinWeightVertexBufferGetSkinWeightVertexBuffer (FSkeletalMeshLODRenderData &LODData, const FSkelMeshComponentLODInfo *CompLODInfo)
 
static FColorVertexBufferGetColorVertexBuffer (FSkeletalMeshLODRenderData &LODData, const FSkelMeshComponentLODInfo *CompLODInfo)
 

Friends

class FSkeletalMeshDeformerHelpers
 
class FSkeletalMeshObjectNanite
 

Additional Inherited Members

- Public Attributes inherited from FSkeletalMeshObject
TArray< FSkelMeshObjectLODInfoLODInfo
 
TArray< FCapsuleShape3fShadowCapsuleShapes
 
int32 MinDesiredLODLevel
 
float MaxDistanceFactor
 
int32 WorkingMinDesiredLODLevel
 
float WorkingMaxDistanceFactor
 
bool bHasBeenUpdatedAtLeastOnce
 
FName DebugName
 
- Protected Attributes inherited from FSkeletalMeshObject
FSkeletalMeshRenderDataSkeletalMeshRenderData
 
FGPUSkinCacheEntrySkinCacheEntry
 
FGPUSkinCacheEntrySkinCacheEntryForRayTracing
 
uint32 LastFrameNumber
 
UE::FMutex DesiredLODLevelMutex
 
bool bUsePerBoneMotionBlur
 
bool bSupportsStaticRelevance = false
 
TStatId StatId
 
ERHIFeatureLevel::Type FeatureLevel
 
uint32 ComponentId
 
FVector WorldScale = FVector::OneVector
 

Detailed Description

Render data for a GPU skinned mesh

Constructor & Destructor Documentation

◆ FSkeletalMeshObjectGPUSkin() [1/2]

FSkeletalMeshObjectGPUSkin::FSkeletalMeshObjectGPUSkin ( const USkinnedMeshComponent InMeshComponent,
FSkeletalMeshRenderData InSkelMeshRenderData,
ERHIFeatureLevel::Type  InFeatureLevel 
)
Parameters
InSkeletalMeshComponent- skeletal mesh primitive we want to render

◆ FSkeletalMeshObjectGPUSkin() [2/2]

FSkeletalMeshObjectGPUSkin::FSkeletalMeshObjectGPUSkin ( const FSkinnedMeshSceneProxyDesc InMeshDesc,
FSkeletalMeshRenderData InSkelMeshRenderData,
ERHIFeatureLevel::Type  InFeatureLevel 
)

◆ ~FSkeletalMeshObjectGPUSkin()

FSkeletalMeshObjectGPUSkin::~FSkeletalMeshObjectGPUSkin ( )
virtual

Member Function Documentation

◆ GetBaseSkinVertexFactory()

FGPUBaseSkinVertexFactory const * FSkeletalMeshObjectGPUSkin::GetBaseSkinVertexFactory ( int32  LODIndex,
int32  ChunkIdx 
) const

Get the skin vertex factory for direct skinning. This is different from GetSkinVertexFactory because it ignores any passthrough vertex factories that may be in use.

◆ GetCachedGeometry()

bool FSkeletalMeshObjectGPUSkin::GetCachedGeometry ( FRDGBuilder GraphBuilder,
FCachedGeometry OutCachedGeometry 
) const
overridevirtual

If we are caching geometry deformation through skin-cache/mesh-deformers or other, then this returns the currently cached geoemtry.

Reimplemented from FSkeletalMeshObject.

◆ GetComponentSpaceTransforms()

TArray< FTransform > * FSkeletalMeshObjectGPUSkin::GetComponentSpaceTransforms ( ) const
overridevirtual

Get the array of component-space bone transforms. May include transforms that are inherited by follower components. Not safe to hold this point between frames, because it exists in dynamic data passed from main thread.

Implements FSkeletalMeshObject.

◆ GetDeformerGeometry()

FMeshDeformerGeometry & FSkeletalMeshObjectGPUSkin::GetDeformerGeometry ( int32  LODIndex)

◆ GetDynamicBoundsStartOffset()

int32 FSkeletalMeshObjectGPUSkin::GetDynamicBoundsStartOffset ( int32  LODIndex) const
overridevirtual

Get the offset in the dynamic mesh bounds buffer for the current LOD. Only needed for GPU skin cache.

Reimplemented from FSkeletalMeshObject.

◆ GetGPUSkinTechnique()

ESkeletalMeshGPUSkinTechnique FSkeletalMeshObjectGPUSkin::GetGPUSkinTechnique ( int32  LODIndex)
inline

◆ GetLOD()

virtual int32 FSkeletalMeshObjectGPUSkin::GetLOD ( ) const
inlineoverridevirtual

Get the LOD to render this mesh at.

Implements FSkeletalMeshObject.

◆ GetPrevReferenceToLocalMatrices()

TConstArrayView< FMatrix44f > FSkeletalMeshObjectGPUSkin::GetPrevReferenceToLocalMatrices ( ) const
overridevirtual

Get the array of previous refpose->local matrices Not safe to hold this reference between frames, because it exists in dynamic data passed from main thread.

Reimplemented from FSkeletalMeshObject.

◆ GetReferenceToLocalMatrices()

TConstArrayView< FMatrix44f > FSkeletalMeshObjectGPUSkin::GetReferenceToLocalMatrices ( ) const
overridevirtual

Get the array of refpose->local matrices Not safe to hold this reference between frames, because it exists in dynamic data passed from main thread.

Implements FSkeletalMeshObject.

◆ GetResourceSizeEx()

virtual void FSkeletalMeshObjectGPUSkin::GetResourceSizeEx ( FResourceSizeEx CumulativeResourceSize)
inlineoverridevirtual

Returns the size of memory allocated by render data

Implements FSkeletalMeshObject.

◆ GetSkinVertexFactory()

const FVertexFactory * FSkeletalMeshObjectGPUSkin::GetSkinVertexFactory ( const FSceneView View,
int32  LODIndex,
int32  ChunkIdx,
ESkinVertexFactoryMode  VFMode = ESkinVertexFactoryMode::Default 
) const
overridevirtual
Parameters
View- View, must not be 0, allows to cull depending on showflags (normally not needed/used in SHIPPING)
LODIndex- each LOD has its own vertex data
ChunkIdx- not used
Returns
vertex factory for rendering the LOD, 0 to suppress rendering

Implements FSkeletalMeshObject.

◆ GetSkinWeightVertexBuffer()

const FSkinWeightVertexBuffer * FSkeletalMeshObjectGPUSkin::GetSkinWeightVertexBuffer ( int32  LODIndex) const
virtual

Get the weight buffer for specific LOD index. Only needed for GPU skin cache

Reimplemented from FSkeletalMeshObject.

◆ GetStaticSkinVertexFactory()

const FVertexFactory * FSkeletalMeshObjectGPUSkin::GetStaticSkinVertexFactory ( int32  LODIndex,
int32  ChunkIdx,
ESkinVertexFactoryMode  VFMode 
) const
overridevirtual

Called by DrawStaticElements to cache mesh draw commands for skeletal meshes.

Implements FSkeletalMeshObject.

◆ GetTransform()

FMatrix FSkeletalMeshObjectGPUSkin::GetTransform ( ) const

◆ GetUsedVertexFactoryData()

void FSkeletalMeshObjectGPUSkin::GetUsedVertexFactoryData ( FSkeletalMeshRenderData SkelMeshRenderData,
int32  InLOD,
USkinnedMeshComponent SkinnedMeshComponent,
FSkelMeshRenderSection RenderSection,
ERHIFeatureLevel::Type  InFeatureLevel,
FPSOPrecacheVertexFactoryDataList VertexFactoryDataList 
)
static

◆ HaveValidDynamicData()

virtual bool FSkeletalMeshObjectGPUSkin::HaveValidDynamicData ( ) const
inlineoverridevirtual

Return true if this does have valid dynamic data to render

Implements FSkeletalMeshObject.

◆ InitResources()

void FSkeletalMeshObjectGPUSkin::InitResources ( const FSkinnedMeshSceneProxyDesc InMeshDesc)
overridevirtual

Initialize rendering resources for each LOD

Implements FSkeletalMeshObject.

◆ IsExternalMorphSetActive()

bool FSkeletalMeshObjectGPUSkin::IsExternalMorphSetActive ( int32  MorphSetID,
const FExternalMorphSet MorphSet 
) const

Check if a given morph set is active or not. If so, we will process it.

◆ IsGPUSkinMesh()

virtual bool FSkeletalMeshObjectGPUSkin::IsGPUSkinMesh ( ) const
inlineoverridevirtual

Returns true if this mesh is an FSkeletalMeshObjectGPUSkin

Reimplemented from FSkeletalMeshObject.

◆ RefreshClothingTransforms()

void FSkeletalMeshObjectGPUSkin::RefreshClothingTransforms ( const FMatrix InNewLocalToWorld,
uint32  FrameNumber 
)
overridevirtual

Called to notify clothing data that component transform has changed

Reimplemented from FSkeletalMeshObject.

◆ ReleaseResources()

void FSkeletalMeshObjectGPUSkin::ReleaseResources ( )
overridevirtual

Release rendering resources for each LOD

Implements FSkeletalMeshObject.

◆ SetTransform()

void FSkeletalMeshObjectGPUSkin::SetTransform ( const FMatrix InNewLocalToWorld,
uint32  FrameNumber 
)
overridevirtual

Called when that component transform has changed

Reimplemented from FSkeletalMeshObject.

◆ Update()

void FSkeletalMeshObjectGPUSkin::Update ( int32  LODIndex,
const FSkinnedMeshSceneProxyDynamicData InSkeletalMeshDynamicData,
const FPrimitiveSceneProxy InSceneProxy,
const USkinnedAsset InSkinnedAsset,
const FMorphTargetWeightMap InActiveMorphTargets,
const TArray< float > &  InMorphTargetWeights,
EPreviousBoneTransformUpdateMode  PreviousBoneTransformUpdateMode,
const FExternalMorphWeightData InExternalMorphWeightData 
)
overridevirtual

Implements FSkeletalMeshObject.

◆ UpdateDynamicData_RenderThread()

void FSkeletalMeshObjectGPUSkin::UpdateDynamicData_RenderThread ( FRHICommandList RHICmdList,
FDynamicSkelMeshObjectDataGPUSkin InDynamicData 
)

◆ UpdateSkinWeightBuffer()

void FSkeletalMeshObjectGPUSkin::UpdateSkinWeightBuffer ( const TArrayView< const FSkelMeshComponentLODInfo InLODInfo)
overridevirtual

Implements FSkeletalMeshObject.

Friends And Related Symbol Documentation

◆ FSkeletalMeshDeformerHelpers

◆ FSkeletalMeshObjectNanite


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