UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SkinningTransformProvider.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "SpanAllocator.h"
7#include "Containers/Map.h"
8#include "SceneExtensions.h"
10#include "Matrix3x4.h"
12#include "Delegates/Delegate.h"
13#include "GameTime.h"
14
15#define ENABLE_SKELETON_DEBUG_NAME (UE_BUILD_DEBUG | UE_BUILD_DEVELOPMENT)
16
18{
19#if ENABLE_SKELETON_DEBUG_NAME
20 FName SkeletonName = TEXT("Invalid");
21#endif
25};
26
28{
29#if ENABLE_SKELETON_DEBUG_NAME
30 FName SkeletonName = TEXT("Invalid");
31#endif
34
36 {
37 return SkeletonGuid == InOther.SkeletonGuid && TransformProviderId == InOther.TransformProviderId;
38 }
39
41 {
42 return !(*this == InOther);
43 }
44
46 {
47 return HashCombine(GetTypeHash(InKey.SkeletonGuid), GetTypeHash(InKey.TransformProviderId));
48 }
49};
50
52
54{
56
57public:
59
66
79
114
116
117public:
119
121
122 RENDERER_API void RegisterProvider(const FProviderId& Id, const FOnProvideTransforms& Delegate, bool bUsesSkeletonBatches);
124
126
127 inline bool HasProviders() const
128 {
129 return !Providers.IsEmpty();
130 }
131
133 {
135 Ids.Reserve(Providers.Num());
136 for (const FTransformProvider& Provider : Providers)
137 {
138 Ids.Add(Provider.Id);
139 }
140 return Ids;
141 }
142
144 {
146 Ids.Reserve(Providers.Num());
147 for (const FTransformProvider& Provider : Providers)
148 {
149 if (!Provider.bUsesSkeletonBatches)
150 {
151 Ids.Add(Provider.Id);
152 }
153 }
154 return Ids;
155 }
156
158 {
160 Ids.Reserve(Providers.Num());
161 for (const FTransformProvider& Provider : Providers)
162 {
163 if (Provider.bUsesSkeletonBatches)
164 {
165 Ids.Add(Provider.Id);
166 }
167 }
168 return Ids;
169 }
170
171private:
172 struct FTransformProvider
173 {
174 FProviderId Id;
175 FOnProvideTransforms Delegate;
176 uint8 bUsesSkeletonBatches : 1 = false;
177 };
178
180};
181
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::SIZE_T SIZE_T
An unsigned integer the same size as a pointer, the same as UPTRINT.
Definition Platform.h:1150
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_SCENE_EXTENSION(ModuleExport, ClassName)
Definition SceneExtensions.h:384
RENDERER_API const FSkinningTransformProvider::FProviderId & GetRefPoseProviderId()
Definition SkinningTransformProvider.cpp:72
RENDERER_API const FSkinningTransformProvider::FProviderId & GetAnimRuntimeProviderId()
Definition SkinningTransformProvider.cpp:78
constexpr uint32 HashCombine(uint32 A, uint32 C)
Definition TypeHash.h:36
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition NameTypes.h:617
Definition RenderGraphResources.h:1426
Definition RenderGraphResources.h:1321
Definition RenderGraphBuilder.h:49
Definition ScenePrivate.h:2875
Definition SkinningSceneExtensionProxy.h:17
Definition SkinningTransformProvider.h:54
TArray< FProviderId > GetSkeletonProviderIds() const
Definition SkinningTransformProvider.h:157
RENDERER_API void UnregisterProvider(const FProviderId &Id)
Definition SkinningTransformProvider.cpp:36
bool HasProviders() const
Definition SkinningTransformProvider.h:127
RENDERER_API void RegisterProvider(const FProviderId &Id, const FOnProvideTransforms &Delegate, bool bUsesSkeletonBatches)
Definition SkinningTransformProvider.cpp:20
static bool ShouldCreateExtension(FScene &InScene)
Definition SkinningTransformProvider.cpp:11
DECLARE_DELEGATE_OneParam(FOnProvideTransforms, FProviderContext &)
TArray< FProviderId > GetProviderIds() const
Definition SkinningTransformProvider.h:132
FGuid FProviderId
Definition SkinningTransformProvider.h:58
TArray< FProviderId > GetPrimitiveProviderIds() const
Definition SkinningTransformProvider.h:143
void Broadcast(const TConstArrayView< FProviderRange > Ranges, FProviderContext &Context)
Definition SkinningTransformProvider.cpp:51
Definition SceneExtensions.h:24
ISceneExtension(FScene &InScene)
Definition SceneExtensions.h:29
Definition Array.h:670
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_REWRITE bool IsEmpty() const
Definition Array.h:1133
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
UE_FORCEINLINE_HINT void Reserve(SizeType Number)
Definition Array.h:3016
U16 Index
Definition radfft.cpp:71
Definition Guid.h:109
Definition SkinningTransformProvider.h:28
FGuid SkeletonGuid
Definition SkinningTransformProvider.h:32
bool operator==(const FSkeletonBatchKey &InOther) const
Definition SkinningTransformProvider.h:35
friend SIZE_T GetTypeHash(const FSkeletonBatchKey &InKey)
Definition SkinningTransformProvider.h:45
FGuid TransformProviderId
Definition SkinningTransformProvider.h:33
bool operator!=(const FSkeletonBatchKey &InOther) const
Definition SkinningTransformProvider.h:40
Definition SkinningTransformProvider.h:18
FGuid SkeletonGuid
Definition SkinningTransformProvider.h:22
uint32 UniqueAnimationCount
Definition SkinningTransformProvider.h:24
uint32 MaxBoneTransforms
Definition SkinningTransformProvider.h:23
Definition SkinningTransformProvider.h:81
float DeltaTime
Definition SkinningTransformProvider.h:112
TConstArrayView< FProviderIndirection > Indirections
Definition SkinningTransformProvider.h:105
FRDGBufferRef TransformBuffer
Definition SkinningTransformProvider.h:109
TConstArrayView< FPrimitiveSceneInfo * > Primitives
Definition SkinningTransformProvider.h:103
TConstArrayView< FSkinningSceneExtensionProxy * > Proxies
Definition SkinningTransformProvider.h:104
FRDGBuilder & GraphBuilder
Definition SkinningTransformProvider.h:108
TConstArrayView< FSkeletonBatch > SkeletonBatches
Definition SkinningTransformProvider.h:106
FRDGBufferSRVRef HierarchyBufferSRV
Definition SkinningTransformProvider.h:110
FProviderContext(const TConstArrayView< FPrimitiveSceneInfo * > InPrimitives, const TConstArrayView< FSkinningSceneExtensionProxy * > InProxies, const TConstArrayView< FProviderIndirection > InIndirections, const TConstArrayView< FSkeletonBatch > InSkeletonBatches, float InDeltaTime, FRDGBuilder &InGraphBuilder, FRDGBufferRef InTransformBuffer, FRDGBufferSRVRef InHierarchyBufferSRV)
Definition SkinningTransformProvider.h:82
Definition SkinningTransformProvider.h:68
uint32 TransformOffset
Definition SkinningTransformProvider.h:76
uint32 HierarchyOffset
Definition SkinningTransformProvider.h:77
FProviderIndirection(uint32 InIndex, uint32 InTransformOffset, uint32 InHierarchyOffset)
Definition SkinningTransformProvider.h:69
Definition SkinningTransformProvider.h:61
FProviderId Id
Definition SkinningTransformProvider.h:62
uint32 Count
Definition SkinningTransformProvider.h:63
uint32 Offset
Definition SkinningTransformProvider.h:64