UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SkeletalRenderGPUSkin.cpp File Reference
#include "SkeletalRenderGPUSkin.h"
#include "Animation/MeshDeformerInstance.h"
#include "Components/SkeletalMeshComponent.h"
#include "Components/InstancedSkinnedMeshComponent.h"
#include "RenderUtils.h"
#include "SkeletalRender.h"
#include "GPUSkinCache.h"
#include "Rendering/RenderCommandPipes.h"
#include "ShaderParameterUtils.h"
#include "SceneInterface.h"
#include "SkeletalMeshSceneProxy.h"
#include "RenderGraphUtils.h"
#include "RenderCore.h"
#include "SkinnedMeshSceneProxyDesc.h"
#include "RHIResourceUtils.h"
#include "SkinningDefinitions.h"
#include <algorithm>

Classes

class  FSkeletalMeshUpdatePacketGPUSkin
 
class  FDynamicUpdateVertexFactoryData
 

Macros

#define UPDATE_PER_BONE_DATA_ONLY_FOR_OBJECT_BEEN_VISIBLE   1
 

Functions

 DEFINE_LOG_CATEGORY_STATIC (LogSkeletalGPUSkinMesh, Warning, All)
 
 DECLARE_CYCLE_STAT (TEXT("Morph Vertex Buffer Update"), STAT_MorphVertexBuffer_Update, STATGROUP_MorphTarget)
 
 DECLARE_CYCLE_STAT (TEXT("Morph Vertex Buffer Init"), STAT_MorphVertexBuffer_Init, STATGROUP_MorphTarget)
 
 DECLARE_CYCLE_STAT (TEXT("Morph Vertex Buffer Apply Delta"), STAT_MorphVertexBuffer_ApplyDelta, STATGROUP_MorphTarget)
 
 DECLARE_CYCLE_STAT (TEXT("Morph Vertex Buffer Alloc"), STAT_MorphVertexBuffer_Alloc, STATGROUP_MorphTarget)
 
 DECLARE_CYCLE_STAT (TEXT("Morph Vertex Buffer RHI Lock and copy"), STAT_MorphVertexBuffer_RhiLockAndCopy, STATGROUP_MorphTarget)
 
 DECLARE_CYCLE_STAT (TEXT("Morph Vertex Buffer RHI Unlock"), STAT_MorphVertexBuffer_RhiUnlock, STATGROUP_MorphTarget)
 
 DECLARE_GPU_STAT_NAMED (MorphTargets, TEXT("Morph Target Compute"))
 
ESkeletalMeshGPUSkinTechnique GetGPUSkinTechnique (USkinnedMeshComponent *MeshComponent, FSkeletalMeshRenderData *RenderData, int32 LODIndex, ERHIFeatureLevel::Type FeatureLevel)
 
ESkeletalMeshGPUSkinTechnique GetGPUSkinTechnique (const FSkinnedMeshSceneProxyDesc &InMeshDesc, FSkeletalMeshRenderData *RenderData, int32 LODIndex, ERHIFeatureLevel::Type FeatureLevel)
 
 REGISTER_SKELETAL_MESH_UPDATE_BACKEND (FSkeletalMeshUpdatePacketGPUSkin)
 
 IMPLEMENT_SHADER_TYPE (, FGPUMorphUpdateCS, TEXT("/Engine/Private/MorphTargets.usf"), TEXT("GPUMorphUpdateCS"), SF_Compute)
 
 IMPLEMENT_SHADER_TYPE (, FGPUMorphNormalizeCS, TEXT("/Engine/Private/MorphTargets.usf"), TEXT("GPUMorphNormalizeCS"), SF_Compute)
 
void InitGPUSkinVertexFactoryComponents (FGPUSkinDataType *VertexFactoryData, const FSkeletalMeshObjectGPUSkin::FVertexFactoryBuffers &VertexBuffers, FGPUBaseSkinVertexFactory *VertexFactory)
 
void InitAPEXClothVertexFactoryComponents (FGPUSkinAPEXClothDataType *VertexFactoryData, const FSkeletalMeshObjectGPUSkin::FVertexFactoryBuffers &VertexBuffers)
 
void UpdateVertexFactory (TArray< TUniquePtr< FGPUBaseSkinVertexFactory > > &VertexFactories, const FSkeletalMeshObjectGPUSkin::FVertexFactoryBuffers &InVertexBuffers)
 

Macro Definition Documentation

◆ UPDATE_PER_BONE_DATA_ONLY_FOR_OBJECT_BEEN_VISIBLE

#define UPDATE_PER_BONE_DATA_ONLY_FOR_OBJECT_BEEN_VISIBLE   1

Function Documentation

◆ DECLARE_CYCLE_STAT() [1/6]

DECLARE_CYCLE_STAT ( TEXT("Morph Vertex Buffer Alloc" ,
STAT_MorphVertexBuffer_Alloc  ,
STATGROUP_MorphTarget   
)

◆ DECLARE_CYCLE_STAT() [2/6]

DECLARE_CYCLE_STAT ( TEXT("Morph Vertex Buffer Apply Delta" ,
STAT_MorphVertexBuffer_ApplyDelta  ,
STATGROUP_MorphTarget   
)

◆ DECLARE_CYCLE_STAT() [3/6]

DECLARE_CYCLE_STAT ( TEXT("Morph Vertex Buffer Init" ,
STAT_MorphVertexBuffer_Init  ,
STATGROUP_MorphTarget   
)

◆ DECLARE_CYCLE_STAT() [4/6]

◆ DECLARE_CYCLE_STAT() [5/6]

◆ DECLARE_CYCLE_STAT() [6/6]

DECLARE_CYCLE_STAT ( TEXT("Morph Vertex Buffer Update" ,
STAT_MorphVertexBuffer_Update  ,
STATGROUP_MorphTarget   
)

◆ DECLARE_GPU_STAT_NAMED()

DECLARE_GPU_STAT_NAMED ( MorphTargets  ,
TEXT("Morph Target Compute"  
)

◆ DEFINE_LOG_CATEGORY_STATIC()

DEFINE_LOG_CATEGORY_STATIC ( LogSkeletalGPUSkinMesh  ,
Warning  ,
All   
)

◆ GetGPUSkinTechnique() [1/2]

ESkeletalMeshGPUSkinTechnique GetGPUSkinTechnique ( const FSkinnedMeshSceneProxyDesc InMeshDesc,
FSkeletalMeshRenderData RenderData,
int32  LODIndex,
ERHIFeatureLevel::Type  FeatureLevel 
)
inline

◆ GetGPUSkinTechnique() [2/2]

ESkeletalMeshGPUSkinTechnique GetGPUSkinTechnique ( USkinnedMeshComponent MeshComponent,
FSkeletalMeshRenderData RenderData,
int32  LODIndex,
ERHIFeatureLevel::Type  FeatureLevel 
)
inline

◆ IMPLEMENT_SHADER_TYPE() [1/2]

IMPLEMENT_SHADER_TYPE ( FGPUMorphNormalizeCS  ,
TEXT("/Engine/Private/MorphTargets.usf" ,
TEXT("GPUMorphNormalizeCS")  ,
SF_Compute   
)

◆ IMPLEMENT_SHADER_TYPE() [2/2]

IMPLEMENT_SHADER_TYPE ( FGPUMorphUpdateCS  ,
TEXT("/Engine/Private/MorphTargets.usf" ,
TEXT("GPUMorphUpdateCS")  ,
SF_Compute   
)

◆ InitAPEXClothVertexFactoryComponents()

void InitAPEXClothVertexFactoryComponents ( FGPUSkinAPEXClothDataType VertexFactoryData,
const FSkeletalMeshObjectGPUSkin::FVertexFactoryBuffers VertexBuffers 
)

Initialize the stream components common to all GPU skin vertex factory types

Parameters
VertexFactoryData- context for setting the vertex factory stream components. commited later
VertexBuffers- vertex buffers which contains the data and also stride info
bUseInstancedVertexWeights- use instanced influence weights instead of default weights

◆ InitGPUSkinVertexFactoryComponents()

void InitGPUSkinVertexFactoryComponents ( FGPUSkinDataType VertexFactoryData,
const FSkeletalMeshObjectGPUSkin::FVertexFactoryBuffers VertexBuffers,
FGPUBaseSkinVertexFactory VertexFactory 
)

Initialize the stream components common to all GPU skin vertex factory types

Parameters
VertexFactoryData- context for setting the vertex factory stream components. commited later
VertexBuffers- vertex buffers which contains the data and also stride info
bUseInstancedVertexWeights- use instanced influence weights instead of default weights

◆ REGISTER_SKELETAL_MESH_UPDATE_BACKEND()

REGISTER_SKELETAL_MESH_UPDATE_BACKEND ( FSkeletalMeshUpdatePacketGPUSkin  )

◆ UpdateVertexFactory()

void UpdateVertexFactory ( TArray< TUniquePtr< FGPUBaseSkinVertexFactory > > &  VertexFactories,
const FSkeletalMeshObjectGPUSkin::FVertexFactoryBuffers InVertexBuffers 
)