11#include "Containers/Array.h"
19#include "HairStrandsDefinitions.h"
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define check(expr)
Definition AssertionMacros.h:314
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
@ ProcessBindingSurfaceUpdate
@ ProcessGuideInterpolation
@ ProcessGuideDeformation
@ ProcessCardsAndMeshesInterpolation_ShadowView
@ ProcessCardsAndMeshesInterpolation_PrimaryView
@ ProcessStrandsInterpolation
void(* THairStrandsBookmarkFunction)(FRDGBuilder *GraphBuilder, EHairStrandsBookmark Bookmark, FHairStrandsBookmarkParameters &Parameters)
Definition HairStrandsInterface.h:590
EHairInstanceVisibilityType
Definition HairStrandsInterface.h:466
@ CardsOrMeshesShadowView
@ CardsOrMeshesPrimaryView
UE::Math::TVector2< float > FVector2f
Definition MathFwd.h:74
ERHIAccess
Definition RHIAccess.h:11
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
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
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 Texture2D.h:26
Definition CachedGeometry.h:16
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: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 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: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