UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
HairStrandsInterface.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 HairStrandsInterface.h: public interface for hair strands rendering.
5=============================================================================*/
6
7#pragma once
8
9#include "CoreMinimal.h"
10#include "RendererInterface.h"
11#include "Containers/Array.h"
12#include "Containers/BitArray.h"
13#include "Engine/EngineTypes.h"
14#include "Shader.h"
15#include "RenderResource.h"
19#include "HairStrandsDefinitions.h"
20#include "CachedGeometry.h"
22
23class UTexture2D;
24class FSceneInterface;
26
28// Shader parameters
29
30// Instance attribute parameters
41
42// Instance common parameters
45 SHADER_PARAMETER(float, Radius)
49 SHADER_PARAMETER(float, LengthScale)
51 SHADER_PARAMETER(uint32, RegisteredIndex)
52 SHADER_PARAMETER(uint32, GroupIndex)
54 SHADER_PARAMETER(uint32, PointCount)
63 SHADER_PARAMETER(uint32, SourceCurveCount)
70
71// Instance resources (RDG)
82
83// Instance prev. resources (RDG)
86 SHADER_PARAMETER_RDG_BUFFER_SRV(StructuredBuffer, PrevPositionOffsetBuffer)
88
89// Instance culling resources (RDG)
96
97// Instance interpolation resources (RDG)
102
103// Instance resources (Raw)
106 SHADER_PARAMETER_SRV(StructuredBuffer<float4>, PositionOffsetBuffer)
108 SHADER_PARAMETER_SRV(ByteAddressBuffer, PointToCurveBuffer)
109 SHADER_PARAMETER_SRV(Buffer<float4>, TangentBuffer)
110 SHADER_PARAMETER_SRV(ByteAddressBuffer, CurveAttributeBuffer)
111 SHADER_PARAMETER_SRV(ByteAddressBuffer, PointAttributeBuffer)
113
114// Instance prev. resources (Raw)
116 SHADER_PARAMETER_SRV(ByteAddressBuffer, PreviousPositionBuffer)
119
120// Instance culling resources (Raw)
123// SHADER_PARAMETER_SRV(Buffer<uint>, CullingIndirectBuffer)
126
127// Intermediate struct which can be referenced by FHairStrandsInstanceParameters for getting
128// the HairStrandsVF_ decoration in shader
134
138
140// Utils buffers for importing/exporting hair resources
141
143{
144 None = 0,
145 CreateSRV = 0x1,
146 CreateUAV = 0x2,
148};
150
159
166
170
172 FRDGBuilder& GraphBuilder,
173 FGlobalShaderMap* ShaderMap,
175 const TArray<FRDGBufferSRVRef>& Transitions);
176
178// Misc/Helpers
179
182struct FRWBuffer;
183class FRDGPooledBuffer;
187class FSceneView;
188
196
203
205{
206 NoneSkinning, // Use no skinning data (i.e. with no binding)
207 RigidSkinning, // Use skinning data & apply a rigid triangle deformation
208 OffsetSkinning, // Use skinning data & apply a offset deformation
209 SmoothSkinning, // Use skinning data & apply a smooth (rotation) offset
210};
211
213// Public group data
214
216{
217 virtual ~FHairStrandsInstance() = default;
219 virtual const FBoxSphereBounds& GetBounds() const = 0;
220 virtual const FBoxSphereBounds& GetLocalBounds() const = 0;
221 virtual const FHairGroupPublicData* GetHairData() const { return nullptr; }
223};
225
227{
228public:
230
231 uint32 GetGroupIndex() const { return GroupIndex; }
232
236
239
242
245
248
251
254
259
264
269
274
279
282
284 float GetLODBias() const { return LODBias; }
285
287 float GetLODIndex() const { return LODIndex; }
288 int32 GetIntLODIndex() const { return FMath::Max(0, FMath::FloorToInt(LODIndex)); }
289
291 float GetMeshLODIndex() const { return MeshLODIndex; }
292
293 void SetLODVisibility(bool bVisible) { bLODVisibility = bVisible; }
294 bool GetLODVisibility() const { return bLODVisibility; }
295
296 // Return the number of active point/curve for strand geometry
297 RENDERER_API uint32 GetActiveStrandsPointCount(bool bPrevious=false) const;
298 RENDERER_API uint32 GetActiveStrandsCurveCount(bool bPrevious=false) const;
301
303 {
304 struct FStrands
305 {
317
329
341
344
345 struct FCards
346 {
347
349
350 struct FMeshes
351 {
352
354
355 bool bHasLODSwitch = false;
360 };
361
362 struct FCulling
363 {
364 /* Indirect draw buffer to draw everything or the result of the culling per pass */
367
368 /* Culling & LODing results for a hair group */ // Better to be transient?
372 };
373
374 // Current hook for retriving instance data.
375 // This needs to be refactor to merge FHairGroupPublicData & HairStrandsInstance
377 FCulling* Culling = nullptr;
378
380 uint32 ClusterDataIndex = ~0; // #hair_todo: move this into instance data, or remove FHairStrandClusterData
381
386 float ClusterScale = 0;
387
389
390 /* CPU LOD selection. Hair LOD selection can be done by CPU or GPU. If bUseCPULODSelection is true,
391 CPU LOD selection is enabled otherwise the GPU selection is used. CPU LOD selection use the CPU
392 bounding box, which might not be as accurate as the GPU ones*/
400
402
403 // The minimum mesh LOD that this data can support
405
406 // Data change every frame by the groom proxy based on views data
407 float MeshLODIndex = -1;
408 float LODIndex = -1; // Current LOD used for all views
409 float LODBias = 0; // Current LOD bias
410 bool bLODVisibility = true; // Enable/disable hair rendering for this component
411 bool bAutoLOD = false;
412 float AutoLODBias = 0;
413
414 // Active/used point/curved based on select continuous LOD
423 FBoxSphereBounds ContinuousLODBounds; //used by Continuous LOD
424
425 // Debug
426 bool bDebugDrawLODInfo = false; // Enable/disable hair LOD info
427 float DebugScreenSize = 0.f;
429};
430
432// Transient resources
433// Resources are indexed by hair instance's registered index
435{
439
440 // Group AABB
444 FVector3d TranslatedWorldOffsetView0 = FVector3d::ZeroVector; // View[0]'s Translated World Offset, as all ClusterAABB & GroupAABB are expressed relative to this
446
447 // Cluster AABB
451
452 // Indirect dispatch args
455
456 // Mesh data
460};
461
463// FHairInstanceCullingResults
464
474
476{
477 // List of instances visible in any views.
478 // This is used to know what instance needs to run interpolation
482
483 // Visibility per instance per view
484 // Store up to 8 view culling result per uint
486
487 void InitVisibility(uint32 InstanceCount);
490 bool Is(const FViewInfo& View, const FHairStrandsInstance& Instance, EHairInstanceVisibilityType Flag) const;
493};
494
496// Helpers
509
510// Compute the dispatch information for pass dispatching work per curve
512
514// API for enabling/disabling the various geometry representation
516{
517 Strands,
518 Cards,
519 Meshes,
520 Tool,
521 All
522};
523
526
528
529// Return true if hair simulation is enabled.
531
532// Return true if hair binding is enabled (i.e., hair can be attached to skeletal mesh)
534
535// Return true if strand reordering for compute raster continuous LOD is enabled
537
538// Return true if continuous LOD is enabled - implies computer raster and continuous decimation reordering is true
540
542
545
548
551
552
554// HairStrands Bookmark API
568
589
592
594// Render Curve (Experimental)
595
597{
604
609
611 {
612 Ar << Header.Id;
613 Ar << Header.ClusterCount;
615 Data.BulkData.Serialize(Ar, Owner, 0/*ChunkIndex*/, false /*bAttemptFileMapping*/);
616 }
617};
618
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define check(expr)
Definition AssertionMacros.h:314
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
RENDERER_API FRDGBufferUAVRef RegisterAsUAV(FRDGBuilder &GraphBuilder, const FRDGExternalBuffer &In, ERDGUnorderedAccessViewFlags Flags=ERDGUnorderedAccessViewFlags::None)
Definition HairStrandsInterface.cpp:136
RENDERER_API bool IsHairStrandsEnabled(EHairStrandsShaderType Type, EShaderPlatform Platform=EShaderPlatform::SP_NumPlatforms)
Definition HairStrandsInterface.cpp:185
RENDERER_API FPointPerCurveDispatchInfo GetPointPerCurveDispatchInfo(uint32 InAssetMaxPointPerCurve, uint32 InAssetCurveCount, uint32 InGroupSize)
Definition HairStrandsUtils.cpp:543
RENDERER_API FRDGBufferSRVRef RegisterAsSRV(FRDGBuilder &GraphBuilder, const FRDGExternalBuffer &In)
Definition HairStrandsInterface.cpp:116
EHairGeometryType
Definition HairStrandsInterface.h:190
@ Strands
Definition HairStrandsInterface.h:191
@ NoneGeometry
Definition HairStrandsInterface.h:194
@ Meshes
Definition HairStrandsInterface.h:193
@ Cards
Definition HairStrandsInterface.h:192
RENDERER_API bool IsHairStrandContinuousDecimationReorderingEnabled()
Definition HairStrandsInterface.cpp:369
RENDERER_API void TransitBufferToReadable(FRDGBuilder &GraphBuilder, FBufferTransitionQueue &BuffersToTransit)
RENDERER_API float GetHairCoverage(uint32 HairCount, float AverageHairRadius)
Return the hair coverage for a certain hair count and normalized avg hair radius (i....
Definition HairStrandsLUT.cpp:205
ERDGImportedBufferFlags
Definition HairStrandsInterface.h:143
RENDERER_API float GetHairAvgRadius(uint32 InCount, float InCoverage)
Return the average hair normalized radius for a given hair count and a given coverage value.
Definition HairStrandsLUT.cpp:222
RENDERER_API bool IsHairStrandsBindingEnable()
Definition HairStrandsInterface.cpp:208
RENDERER_API bool IsRenderCurveEnabled()
Definition RenderCurveRaster.cpp:67
RENDERER_API bool IsHairVisibilityComputeRasterContinuousLODEnabled()
Definition HairStrandsInterface.cpp:385
RENDERER_API bool IsHairStrandsSupported(EHairStrandsShaderType Type, EShaderPlatform Platform)
Definition HairStrandsInterface.cpp:168
RENDERER_API bool IsHairStrandsSimulationEnable()
Definition HairStrandsInterface.cpp:213
TArray< FHairStrandsInstance * > FHairStrandsInstances
Definition HairStrandsInterface.h:224
RENDERER_API bool IsHairRayTracingEnabled()
Definition HairStrandsInterface.cpp:156
EHairBindingType
Definition HairStrandsInterface.h:198
@ NoneBinding
Definition HairStrandsInterface.h:199
@ Rigid
Definition HairStrandsInterface.h:200
@ Skinning
Definition HairStrandsInterface.h:201
RENDERER_API void RegisterBookmarkFunction(THairStrandsBookmarkFunction Bookmark)
Definition HairStrandsInterface.cpp:413
EHairStrandsShaderType
Definition HairStrandsInterface.h:516
EHairInterpolationType
Definition HairStrandsInterface.h:205
@ SmoothSkinning
Definition HairStrandsInterface.h:209
@ NoneSkinning
Definition HairStrandsInterface.h:206
@ OffsetSkinning
Definition HairStrandsInterface.h:208
@ RigidSkinning
Definition HairStrandsInterface.h:207
TArray< FRHIUnorderedAccessView * > FBufferTransitionQueue
Definition HairStrandsInterface.h:543
RENDERER_API void AddTransitionPass(FRDGBuilder &GraphBuilder, FGlobalShaderMap *ShaderMap, EShaderPlatform InPlatform, const TArray< FRDGBufferSRVRef > &Transitions)
Definition HairStrandsUtils.cpp:442
EHairStrandsBookmark
Definition HairStrandsInterface.h:556
@ ProcessCardsAndMeshesInterpolation_ShadowView
@ ProcessCardsAndMeshesInterpolation_PrimaryView
void(* THairStrandsBookmarkFunction)(FRDGBuilder *GraphBuilder, EHairStrandsBookmark Bookmark, FHairStrandsBookmarkParameters &Parameters)
Definition HairStrandsInterface.h:590
EHairInstanceVisibilityType
Definition HairStrandsInterface.h:466
UE::Math::TVector2< float > FVector2f
Definition MathFwd.h:74
EPixelFormat
Definition PixelFormat.h:16
@ PF_Unknown
Definition PixelFormat.h:17
ERHIAccess
Definition RHIAccess.h:11
EShaderPlatform
Definition RHIShaderPlatform.h:11
@ SP_NumPlatforms
Definition RHIShaderPlatform.h:55
ERDGUnorderedAccessViewFlags
Definition RenderGraphDefinitions.h:221
#define SHADER_PARAMETER_RDG_BUFFER_SRV(ShaderType, MemberName)
Definition ShaderParameterMacros.h:1800
#define SHADER_PARAMETER_ARRAY(MemberType, MemberName, ArrayDecl)
Definition ShaderParameterMacros.h:1696
#define SHADER_PARAMETER_SRV(ShaderType, MemberName)
Definition ShaderParameterMacros.h:1720
#define RDG_BUFFER_ACCESS(MemberName, Access)
Definition ShaderParameterMacros.h:1923
#define BEGIN_SHADER_PARAMETER_STRUCT(StructTypeName, DllStorage)
Definition ShaderParameterMacros.h:1482
#define SHADER_PARAMETER_STRUCT_INCLUDE(StructType, MemberName)
Definition ShaderParameterMacros.h:1895
#define END_SHADER_PARAMETER_STRUCT()
Definition ShaderParameterMacros.h:1485
#define SHADER_PARAMETER_STRUCT(StructType, MemberName)
Definition ShaderParameterMacros.h:1847
#define SHADER_PARAMETER(MemberType, MemberName)
Definition ShaderParameterMacros.h:1684
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Archive.h:1208
Definition GlobalShader.h:173
Definition HairStrandsInterface.h:227
uint32 ContinuousLODPreviousCurveCount
Definition HairStrandsInterface.h:418
FCulling * Culling
Definition HairStrandsInterface.h:377
TArray< EHairGeometryType > LODGeometryTypes
Definition HairStrandsInterface.h:397
EHairGeometryType GetGeometryType(int32 InLODIndex) const
Definition HairStrandsInterface.h:260
void SetLODGeometryTypes(const TArray< EHairGeometryType > &InTypes)
Definition HairStrandsInterface.h:249
void SetLODVisibilities(const TArray< bool > &InLODVisibility)
Definition HairStrandsInterface.h:252
bool IsVisible(int32 InLODIndex) const
Definition HairStrandsInterface.h:255
uint32 ContinuousLODCurveCount
Definition HairStrandsInterface.h:416
void SetLODIndex(float InLODIndex)
Definition HairStrandsInterface.h:286
float ClusterScale
Definition HairStrandsInterface.h:386
bool bDebugDrawLODInfo
Definition HairStrandsInterface.h:426
const FRDGExternalBuffer & GetCulledCurveBuffer() const
Definition HairStrandsInterface.h:237
RENDERER_API float GetActiveStrandsCoverageScale() const
Definition HairStrandsInterface.cpp:400
TArray< bool > LODVisibilities
Definition HairStrandsInterface.h:393
RENDERER_API float GetActiveStrandsRadiusScale() const
Definition HairStrandsInterface.cpp:405
bool GetLODVisibility() const
Definition HairStrandsInterface.h:294
RENDERER_API uint32 GetActiveStrandsPointCount(bool bPrevious=false) const
Definition HairStrandsInterface.cpp:390
void SetMeshLODIndex(float InMeshLODIndex)
Definition HairStrandsInterface.h:290
bool IsGlobalInterpolationEnable(int32 InLODIndex) const
Definition HairStrandsInterface.h:275
void SetLODVisibility(bool bVisible)
Definition HairStrandsInterface.h:293
FLinearColor DebugGroupColor
Definition HairStrandsInterface.h:428
const TArray< float > & GetLODScreenSizes() const
Definition HairStrandsInterface.h:281
void SetLODBias(float InLODBias)
Definition HairStrandsInterface.h:283
FVector2f ContinuousLODScreenPos
Definition HairStrandsInterface.h:422
uint32 ClusterCount
Definition HairStrandsInterface.h:385
float ContinuousLODCoverageScale
Definition HairStrandsInterface.h:420
float ContinuousLODScreenSize
Definition HairStrandsInterface.h:419
uint32 GroupIndex
Definition HairStrandsInterface.h:382
TArray< bool > LODGlobalInterpolations
Definition HairStrandsInterface.h:396
void SupportVoxelization(bool InVoxelize)
Definition HairStrandsInterface.h:246
bool bIsSimulationCacheEnable
Definition HairStrandsInterface.h:399
void SetCullingResultAvailable(bool b)
Definition HairStrandsInterface.h:244
bool DoesSupportVoxelization() const
Definition HairStrandsInterface.h:247
bool GetCullingResultAvailable() const
Definition HairStrandsInterface.h:243
const FRDGExternalBuffer & GetCulledVertexIdBuffer() const
Definition HairStrandsInterface.h:238
const FRDGExternalBuffer & GetDrawIndirectRasterComputeBuffer() const
Definition HairStrandsInterface.h:234
FHairStrandsInstance * Instance
Definition HairStrandsInterface.h:376
uint32 ContinuousLODPointCount
Definition HairStrandsInterface.h:415
FVertexFactoryInput VFInput
Definition HairStrandsInterface.h:379
bool bLODVisibility
Definition HairStrandsInterface.h:410
FRDGExternalBuffer & GetDrawIndirectRasterComputeBuffer()
Definition HairStrandsInterface.h:233
const TArray< EHairGeometryType > & GetLODGeometryTypes() const
Definition HairStrandsInterface.h:250
void SetLODScreenSizes(const TArray< float > &ScreenSizes)
Definition HairStrandsInterface.h:280
float MeshLODIndex
Definition HairStrandsInterface.h:407
float GetLODBias() const
Definition HairStrandsInterface.h:284
int32 GetIntLODIndex() const
Definition HairStrandsInterface.h:288
TArray< bool > LODSimulations
Definition HairStrandsInterface.h:395
bool bIsDeformationEnable
Definition HairStrandsInterface.h:398
float GetMeshLODIndex() const
Definition HairStrandsInterface.h:291
uint32 RestPointCount
Definition HairStrandsInterface.h:383
EHairBindingType GetBindingType(int32 InLODIndex) const
Definition HairStrandsInterface.h:265
uint32 GetGroupIndex() const
Definition HairStrandsInterface.h:231
bool bAutoLOD
Definition HairStrandsInterface.h:411
RENDERER_API uint32 GetActiveStrandsCurveCount(bool bPrevious=false) const
Definition HairStrandsInterface.cpp:395
float LODBias
Definition HairStrandsInterface.h:409
float ContinuousLODRadiusScale
Definition HairStrandsInterface.h:421
uint32 ContinuousLODPreviousPointCount
Definition HairStrandsInterface.h:417
float LODIndex
Definition HairStrandsInterface.h:408
bool bSupportVoxelization
Definition HairStrandsInterface.h:388
FRDGExternalBuffer & GetCulledVertexIdBuffer()
Definition HairStrandsInterface.h:241
const TArray< bool > & GetLODVisibilities() const
Definition HairStrandsInterface.h:253
FRDGExternalBuffer & GetDrawIndirectBuffer()
Definition HairStrandsInterface.h:235
float AutoLODBias
Definition HairStrandsInterface.h:412
FRDGExternalBuffer & GetCulledCurveBuffer()
Definition HairStrandsInterface.h:240
uint32 ClusterDataIndex
Definition HairStrandsInterface.h:380
FBoxSphereBounds ContinuousLODBounds
Definition HairStrandsInterface.h:423
TArray< EHairBindingType > BindingTypes
Definition HairStrandsInterface.h:401
int32 BindingMinMeshLOD
Definition HairStrandsInterface.h:404
bool IsSimulationEnable(int32 InLODIndex) const
Definition HairStrandsInterface.h:270
float GetLODIndex() const
Definition HairStrandsInterface.h:287
float DebugScreenSize
Definition HairStrandsInterface.h:427
uint32 RestCurveCount
Definition HairStrandsInterface.h:384
TArray< float > LODScreenSizes
Definition HairStrandsInterface.h:394
Definition NameTypes.h:617
Definition RenderGraphResources.h:1426
Definition RenderGraphResources.h:1452
Definition RenderGraphResources.h:1321
Definition RenderGraphBuilder.h:49
Definition RenderGraphResources.h:1196
Definition RenderGraphResources.h:698
Definition RenderGraphResources.h:571
Definition RefCounting.h:213
Definition ResourceArray.h:77
Definition SceneInterface.h:106
Definition SceneView.h:1425
Definition SceneRendering.h:1132
Definition Array.h:670
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_NODEBUG UE_FORCEINLINE_HINT bool IsValidIndex(SizeType Index) const
Definition Array.h:1122
void Serialize(FArchive &Ar, UObject *Owner, int32 Idx=INDEX_NONE, bool bAttemptFileMapping=false, EFileRegionType FileRegionType=EFileRegionType::None)
Definition BulkData.h:1103
Definition RefCounting.h:454
Definition Object.h:95
Definition Texture2D.h:26
Definition CachedGeometry.h:16
Definition Guid.h:109
Definition HairStrandsInterface.h:363
FRDGExternalBuffer CulledCurveBuffer
Definition HairStrandsInterface.h:369
bool bCullingResultAvailable
Definition HairStrandsInterface.h:371
FRDGExternalBuffer DrawIndirectBuffer
Definition HairStrandsInterface.h:365
FRDGExternalBuffer DrawIndirectRasterComputeBuffer
Definition HairStrandsInterface.h:366
FRDGExternalBuffer CulledVertexIdBuffer
Definition HairStrandsInterface.h:370
Definition HairStrandsInterface.h:346
Definition HairStrandsInterface.h:351
Definition HairStrandsInterface.h:305
FRDGExternalBuffer PointAttributeBufferExternal
Definition HairStrandsInterface.h:322
FRDGExternalBuffer PointMappingBufferExternal
Definition HairStrandsInterface.h:328
FHairStrandsInstanceCommonParameters Common
Definition HairStrandsInterface.h:342
FRDGExternalBuffer TangentBufferExternal
Definition HairStrandsInterface.h:320
FRDGExternalBuffer PositionBufferExternal
Definition HairStrandsInterface.h:318
FRDGImportedBuffer PointToCurveBuffer
Definition HairStrandsInterface.h:311
FShaderResourceViewRHIRef PrevPositionOffsetBufferRHISRV
Definition HairStrandsInterface.h:337
FRDGExternalBuffer PrevPositionOffsetBufferExternal
Definition HairStrandsInterface.h:325
FShaderResourceViewRHIRef PositionOffsetBufferRHISRV
Definition HairStrandsInterface.h:336
FRDGImportedBuffer TangentBuffer
Definition HairStrandsInterface.h:308
FRDGImportedBuffer CurveAttributeBuffer
Definition HairStrandsInterface.h:309
FRDGExternalBuffer CurveBufferExternal
Definition HairStrandsInterface.h:326
FShaderResourceViewRHIRef PointToCurveBufferRHISRV
Definition HairStrandsInterface.h:335
FRDGExternalBuffer CurveAttributeBufferExternal
Definition HairStrandsInterface.h:321
FShaderResourceViewRHIRef PositionBufferRHISRV
Definition HairStrandsInterface.h:330
FShaderResourceViewRHIRef PointMappingBufferRHISRV
Definition HairStrandsInterface.h:340
FShaderResourceViewRHIRef TangentBufferRHISRV
Definition HairStrandsInterface.h:332
FShaderResourceViewRHIRef CurveMappingBufferRHISRV
Definition HairStrandsInterface.h:339
FRDGImportedBuffer PointAttributeBuffer
Definition HairStrandsInterface.h:310
FRDGImportedBuffer CurveBuffer
Definition HairStrandsInterface.h:314
FRDGImportedBuffer PositionBuffer
Definition HairStrandsInterface.h:306
FRDGExternalBuffer PointToCurveBufferExternal
Definition HairStrandsInterface.h:323
FShaderResourceViewRHIRef CurveAttributeBufferRHISRV
Definition HairStrandsInterface.h:333
FShaderResourceViewRHIRef PointAttributeBufferRHISRV
Definition HairStrandsInterface.h:334
FRDGExternalBuffer PrevPositionBufferExternal
Definition HairStrandsInterface.h:319
FRDGImportedBuffer PrevPositionOffsetBuffer
Definition HairStrandsInterface.h:313
FRDGImportedBuffer PrevPositionBuffer
Definition HairStrandsInterface.h:307
FRDGExternalBuffer CurveMappingBufferExternal
Definition HairStrandsInterface.h:327
FRDGImportedBuffer CurveMappingBuffer
Definition HairStrandsInterface.h:315
FRDGImportedBuffer PositionOffsetBuffer
Definition HairStrandsInterface.h:312
FRDGExternalBuffer PositionOffsetBufferExternal
Definition HairStrandsInterface.h:324
FShaderResourceViewRHIRef CurveBufferRHISRV
Definition HairStrandsInterface.h:338
FShaderResourceViewRHIRef PrevPositionBufferRHISRV
Definition HairStrandsInterface.h:331
FRDGImportedBuffer PointMappingBuffer
Definition HairStrandsInterface.h:316
Definition HairStrandsInterface.h:303
EHairGeometryType GeometryType
Definition HairStrandsInterface.h:357
struct FHairGroupPublicData::FVertexFactoryInput::FStrands Strands
bool bHasLODSwitch
Definition HairStrandsInterface.h:355
bool bHasLODSwitchBindingType
Definition HairStrandsInterface.h:356
struct FHairGroupPublicData::FVertexFactoryInput::FMeshes Meshes
EHairBindingType BindingType
Definition HairStrandsInterface.h:358
FTransform LocalToWorldTransform
Definition HairStrandsInterface.h:359
struct FHairGroupPublicData::FVertexFactoryInput::FCards Cards
Definition HairStrandsInterface.h:476
bool Is(const FViewInfo &View, const FHairStrandsInstance &Instance, EHairInstanceVisibilityType Flag) const
Definition HairStrandsInterface.cpp:264
void InitVisibility(uint32 InstanceCount)
Definition HairStrandsInterface.cpp:229
TArray< uint32 > InstancesVisibilityType
Definition HairStrandsInterface.h:485
FHairStrandsInstances VisibleInAnyViews_CardsOrMeshes_Primary
Definition HairStrandsInterface.h:480
FHairStrandsInstances VisibleInAnyViews_CardsOrMeshes_Shadow
Definition HairStrandsInterface.h:481
FHairStrandsInstances VisibleInAnyViews_Strands
Definition HairStrandsInterface.h:479
bool IsVisibleInAnyViews(const FHairStrandsInstance &Instance) const
Definition HairStrandsInterface.cpp:269
Definition HairStrandsInterface.h:570
const FSceneView * View
Definition HairStrandsInterface.h:581
bool HasInstances() const
Definition HairStrandsInterface.h:587
FShaderPrintData * ShaderPrintData
Definition HairStrandsInterface.h:571
uint32 ViewUniqueID
Definition HairStrandsInterface.h:574
class FGlobalShaderMap * ShaderMap
Definition HairStrandsInterface.h:572
FRDGTextureRef SceneDepthTexture
Definition HairStrandsInterface.h:585
FHairInstanceCullingResults CullingResults
Definition HairStrandsInterface.h:577
TArray< const FSceneView * > AllViews
Definition HairStrandsInterface.h:583
FHairStrandsInstances * Instances
Definition HairStrandsInterface.h:580
FSceneInterface * Scene
Definition HairStrandsInterface.h:582
FRDGTextureRef SceneColorTexture
Definition HairStrandsInterface.h:584
FHairTransientResources * TransientResources
Definition HairStrandsInterface.h:578
FIntRect ViewRect
Definition HairStrandsInterface.h:575
Definition HairStrandsInterface.h:216
virtual const EHairGeometryType GetHairGeometry() const
Definition HairStrandsInterface.h:222
int32 RegisteredIndex
Definition HairStrandsInterface.h:218
virtual const FBoxSphereBounds & GetLocalBounds() const =0
virtual const FBoxSphereBounds & GetBounds() const =0
virtual ~FHairStrandsInstance()=default
virtual const FHairGroupPublicData * GetHairData() const
Definition HairStrandsInterface.h:221
Definition HairStrandsInterface.h:435
FRDGBufferRef ClusterAABBBuffer
Definition HairStrandsInterface.h:449
const FCachedGeometry & GetMeshLODData(uint32 InRegisteredIndex, bool bSim) const
Definition HairStrandsInterface.h:459
uint32 GetClusterCount(uint32 InRegisterIndex) const
Definition HairStrandsInterface.h:437
FRDGBufferRef GroupAABBBuffer
Definition HairStrandsInterface.h:442
TBitArray bIsGroupAABBValid
Definition HairStrandsInterface.h:441
FRDGBufferSRVRef GroupAABBSRV
Definition HairStrandsInterface.h:443
FRDGBufferRef IndirectDispatchArgsBuffer
Definition HairStrandsInterface.h:453
uint32 GetClusterOffset(uint32 InRegisterIndex) const
Definition HairStrandsInterface.h:436
TArray< FCachedGeometry > SimMeshDatas
Definition HairStrandsInterface.h:457
FVector3f GetTranslatedWorldOffsetCorrection(const FViewInfo &View) const
Definition HairStrandsInterface.cpp:221
TArray< FCachedGeometry > RenMeshDatas
Definition HairStrandsInterface.h:458
FRDGBufferSRVRef IndirectDispatchArgsSRV
Definition HairStrandsInterface.h:454
FRDGBufferSRVRef ClusterAABBSRV
Definition HairStrandsInterface.h:450
bool IsClusterAABBValid(uint32 InRegisterIndex) const
Definition HairStrandsInterface.h:438
TArray< FUintVector2 > ClusterAABBOffetAndCounts
Definition HairStrandsInterface.h:448
FVector3d TranslatedWorldOffsetView0
Definition HairStrandsInterface.h:444
Definition Color.h:48
Definition HairStrandsInterface.h:498
uint32 CurvePerGroup
Definition HairStrandsInterface.h:504
uint32 PointPerCurve
Definition HairStrandsInterface.h:505
uint32 SourceCurveCount
Definition HairStrandsInterface.h:500
uint32 SourcePoinPerCurve
Definition HairStrandsInterface.h:501
FIntVector DispatchCount
Definition HairStrandsInterface.h:507
uint32 GroupSize
Definition HairStrandsInterface.h:506
Definition HairStrandsInterface.h:152
TRefCountPtr< FRDGPooledBuffer > Buffer
Definition HairStrandsInterface.h:153
RENDERER_API void Release()
Definition HairStrandsInterface.cpp:87
FShaderResourceViewRHIRef SRV
Definition HairStrandsInterface.h:154
FUnorderedAccessViewRHIRef UAV
Definition HairStrandsInterface.h:155
EPixelFormat Format
Definition HairStrandsInterface.h:156
Definition HairStrandsInterface.h:161
FRDGBufferSRVRef SRV
Definition HairStrandsInterface.h:163
FRDGBufferRef Buffer
Definition HairStrandsInterface.h:162
FRDGBufferUAVRef UAV
Definition HairStrandsInterface.h:164
Definition RHIUtilities.h:181
Definition HairStrandsInterface.h:606
FByteBulkData BulkData
Definition HairStrandsInterface.h:607
Definition HairStrandsInterface.h:599
uint32 ClusterCount
Definition HairStrandsInterface.h:601
FGuid Id
Definition HairStrandsInterface.h:600
uint32 MaxClusterStrideInBytes
Definition HairStrandsInterface.h:602
Definition HairStrandsInterface.h:597
struct FRenderCurveResourceData::FHeader Header
void Serialize(FArchive &Ar, UObject *Owner)
Definition HairStrandsInterface.h:610
struct FRenderCurveResourceData::FData Data
Definition ShaderPrintParameters.h:218
Definition RendererInterface.h:494
Definition BoxSphereBounds.h:25
static const TIntVector3 ZeroValue
Definition IntVector.h:45
static CORE_API const TVector< double > ZeroVector
Definition Vector.h:79