15#include "HairStrandsDefinitions.h"
67 static const uint32 TilePerThread_GroupSize = 64;
70 bool bRectPrimitive =
false;
89 bool IsValid()
const {
return TileCount > 0 && TileDataBuffer[
uint32(ETileType::HairAll)] !=
nullptr; }
224 const bool IsValid()
const {
return UniformBuffer !=
nullptr && PageTexture !=
nullptr && NodeDescBuffer !=
nullptr; }
#define check(expr)
Definition AssertionMacros.h:314
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
void GetHairStrandsInstanceResources(FRDGBuilder &GraphBuilder, const FViewInfo &ViewInfo, const FHairGroupPublicData *HairGroupPublicData, bool bForceRegister, FHairStrandsInstanceResourceParameters &OutResources)
Definition HairStrandsVisibility.cpp:3211
TArray< FHairStrandsMacroGroupData, SceneRenderingAllocator > FHairStrandsMacroGroupDatas
Definition HairStrandsData.h:430
void GetHairStrandsInstanceCulling(FRDGBuilder &GraphBuilder, const FViewInfo &ViewInfo, const FHairGroupPublicData *HairGroupPublicData, bool bCullingEnable, FHairStrandsInstanceCullingParameters &OutCulling)
Definition HairStrandsVisibility.cpp:3240
TArray< FHairStrandsDeepShadowData, SceneRenderingAllocator > FHairStrandsDeepShadowDatas
Definition HairStrandsData.h:256
FHairStrandsInstanceParameters GetHairStrandsInstanceParameters(FRDGBuilder &GraphBuilder, const FViewInfo &ViewInfo, const FHairGroupPublicData *HairGroupPublicData, bool bCullingEnable, bool bForceRegister)
Definition HairStrandsVisibility.cpp:3256
void GetHairStrandsInstanceCommon(FRDGBuilder &GraphBuilder, const FViewInfo &ViewInfo, const FHairGroupPublicData *HairGroupPublicData, FHairStrandsInstanceCommonParameters &OutCommon)
Definition HairStrandsVisibility.cpp:3194
FORCEINLINE uint32 ToIndex(FHairStrandsTiles::ETileType Type)
Definition HairStrandsData.h:93
FInt32Point FIntPoint
Definition MathFwd.h:124
#define SHADER_PARAMETER_RDG_BUFFER_SRV(ShaderType, MemberName)
Definition ShaderParameterMacros.h:1800
#define SHADER_PARAMETER_RDG_TEXTURE(ShaderType, MemberName)
Definition ShaderParameterMacros.h:1752
#define END_GLOBAL_SHADER_PARAMETER_STRUCT
Definition ShaderParameterMacros.h:1669
#define SHADER_PARAMETER_SAMPLER(ShaderType, MemberName)
Definition ShaderParameterMacros.h:1740
#define SHADER_PARAMETER_RDG_BUFFER_UAV(ShaderType, MemberName)
Definition ShaderParameterMacros.h:1812
#define BEGIN_SHADER_PARAMETER_STRUCT(StructTypeName, DllStorage)
Definition ShaderParameterMacros.h:1482
#define BEGIN_GLOBAL_SHADER_PARAMETER_STRUCT
Definition ShaderParameterMacros.h:1663
#define SHADER_PARAMETER_STRUCT_INCLUDE(StructType, MemberName)
Definition ShaderParameterMacros.h:1895
#define END_SHADER_PARAMETER_STRUCT()
Definition ShaderParameterMacros.h:1485
#define SHADER_PARAMETER(MemberType, MemberName)
Definition ShaderParameterMacros.h:1684
Definition HairStrandsInterface.h:227
Definition InstanceCullingManager.h:45
Definition LightSceneInfo.h:208
Definition PrimitiveSceneProxy.h:296
Definition RenderGraphResources.h:1426
Definition RenderGraphResources.h:1321
Definition RenderGraphBuilder.h:49
Definition RenderGraphResources.h:571
Definition RHIGPUReadback.h:116
Definition ScenePrivate.h:2875
Definition SceneRendering.h:1132
Definition RefCounting.h:454
FString ToString(uint16 Value)
Definition PathFollowingComponent.cpp:82
Definition HairStrandsData.h:476
bool HasHairInstanceInScene(const FScene &Scene)
Definition HairStrandsRendering.cpp:367
bool IsHairVisible(const FMeshBatchAndRelevance &MeshBatch, bool bCheckLengthScale)
Definition HairStrandsInterface.cpp:595
bool IsHairCardsVF(const FMeshBatch *Mesh)
Definition HairStrandsInterface.cpp:579
FHairGroupPublicData * GetHairData(const FMeshBatch *In)
Definition HairStrandsInterface.cpp:610
TRDGUniformBufferRef< FVirtualVoxelParameters > BindHairStrandsVoxelUniformParameters(const FViewInfo &View)
Definition HairStrandsRendering.cpp:314
void DrawHitProxies(FRDGBuilder &GraphBuilder, const FScene &Scene, const FViewInfo &View, FInstanceCullingManager &InstanceCullingManager, FRDGTextureRef HitProxyTexture, FRDGTextureRef HitProxyDepthTexture)
Definition HairStrandsVisibility.cpp:4400
void DrawEditorSelection(FRDGBuilder &GraphBuilder, const FViewInfo &View, const FIntRect &ViewportRect, FRDGTextureRef SelectionDepthTexture)
Definition HairStrandsVisibility.cpp:4384
bool HasHairStrandsVisible(const TArray< FViewInfo > &Views)
Definition HairStrandsRendering.cpp:343
bool HasViewHairStrandsVoxelData(const FViewInfo &View)
Definition HairStrandsRendering.cpp:326
TRDGUniformBufferRef< FHairStrandsViewUniformParameters > CreateDefaultHairStrandsViewUniformBuffer(FRDGBuilder &GraphBuilder, FViewInfo &View)
Definition HairStrandsRendering.cpp:304
void AddVisibleShadowCastingLight(const FScene &Scene, TArray< FViewInfo > &Views, const FLightSceneInfo *LightSceneInfo)
Definition HairStrandsInterface.cpp:615
bool HasViewHairStrandsData(const FViewInfo &View)
Definition HairStrandsRendering.cpp:321
bool HasPositionsChanged(FRDGBuilder &GraphBuilder, const FScene &Scene, const FViewInfo &View)
Definition HairStrandsVisibility.cpp:4583
bool IsHairCompatible(const FMeshBatch *Mesh)
Definition HairStrandsInterface.cpp:590
TRDGUniformBufferRef< FHairStrandsViewUniformParameters > BindHairStrandsViewUniformParameters(const FViewInfo &View)
Definition HairStrandsRendering.cpp:309
void PostRender(FScene &Scene)
Definition HairStrandsRendering.cpp:372
bool HasHairCardsVisible(const TArray< FViewInfo > &Views)
Definition HairStrandsRendering.cpp:355
bool IsHairStrandsVF(const FMeshBatch *Mesh)
Definition HairStrandsInterface.cpp:568
U16 Index
Definition radfft.cpp:71
Definition ConvexVolume.h:44
Definition HairStrandsData.h:424
FRDGTextureRef SceneDepthTextureBeforeCompsition
Definition HairStrandsData.h:425
Definition HairStrandsData.h:401
FVector3f Max
Definition HairStrandsData.h:403
FVector3f Min
Definition HairStrandsData.h:402
Definition HairStrandsData.h:407
FMatrix WorldToLight
Definition HairStrandsData.h:408
FMatrix LightToWorld
Definition HairStrandsData.h:409
TArray< uint32 > InstanceIntersection
Definition HairStrandsData.h:415
TArray< FBound > InstanceBoundInLightSpace
Definition HairStrandsData.h:413
FVector3f Center
Definition HairStrandsData.h:410
FVector3f Extent
Definition HairStrandsData.h:411
FConvexVolume ViewFrustumInLightSpace
Definition HairStrandsData.h:412
TArray< FBound > InstanceBoundInWorldSpace
Definition HairStrandsData.h:414
Definition HairStrandsData.h:399
FConvexVolume ViewFrustum
Definition HairStrandsData.h:420
TArray< FLight > DirectionalLights
Definition HairStrandsData.h:419
bool bIsValid
Definition HairStrandsData.h:418
Definition HairStrandsData.h:386
FRDGTextureRef NodeCounterTexture
Definition HairStrandsData.h:387
FRDGTextureRef NodeIndexTexture
Definition HairStrandsData.h:388
FRDGBufferRef NodeDataBuffer
Definition HairStrandsData.h:389
Definition HairStrandsData.h:368
FRDGBufferRef SampleCounter
Definition HairStrandsData.h:372
FRDGBufferRef ShadingPointCounter
Definition HairStrandsData.h:370
FRDGBufferRef ShadingPointBuffer
Definition HairStrandsData.h:369
FRDGBufferRef SampleBuffer
Definition HairStrandsData.h:371
Definition HairStrandsData.h:358
FVector3f Direction
Definition HairStrandsData.h:359
float Pdf
Definition HairStrandsData.h:360
float Pad
Definition HairStrandsData.h:362
FVector3f Weights
Definition HairStrandsData.h:361
Definition HairStrandsData.h:348
FVector3f BaseColor
Definition HairStrandsData.h:349
float Roughness
Definition HairStrandsData.h:350
uint32 SampleCount
Definition HairStrandsData.h:352
float SampleOffset
Definition HairStrandsData.h:354
FVector3f T
Definition HairStrandsData.h:351
FVector3f V
Definition HairStrandsData.h:353
Definition HairStrandsData.h:327
static const uint32 MaxSampleCount
Definition HairStrandsData.h:365
bool IsPlotDataValid() const
Definition HairStrandsData.h:375
static const uint32 MaxShadingPointCount
Definition HairStrandsData.h:364
static FPlotData CreatePlotData(FRDGBuilder &GraphBuilder)
Definition HairStrandsDebug.cpp:67
struct FHairStrandsDebugData::FPPLLData PPLLData
bool IsPPLLDataValid() const
Definition HairStrandsData.h:392
struct FHairStrandsDebugData::FCullData CullData
static void SetParameters(FRDGBuilder &GraphBuilder, const FPlotData &In, FReadParameters &Out)
struct FHairStrandsDebugData::FPlotData PlotData
static void SetParameters(FRDGBuilder &GraphBuilder, const FPlotData &In, FWriteParameters &Out)
struct FHairStrandsDebugData::FCommon Common
Hold deep shadow information for a given light.
Definition HairStrandsData.h:240
FBoxSphereBounds Bounds
Definition HairStrandsData.h:253
uint32 MacroGroupId
Definition HairStrandsData.h:242
uint32 AtlasSlotIndex
Definition HairStrandsData.h:243
FLinearColor LightLuminance
Definition HairStrandsData.h:250
FMinHairRadiusAtDepth1 CPU_MinStrandRadiusAtDepth1
Definition HairStrandsData.h:241
bool bIsLightDirectional
Definition HairStrandsData.h:247
uint32 LightId
Definition HairStrandsData.h:246
FIntPoint AtlasResolution
Definition HairStrandsData.h:245
FVector3f TranslatedLightPosition
Definition HairStrandsData.h:249
float LayerDistribution
Definition HairStrandsData.h:251
FVector3f LightDirection
Definition HairStrandsData.h:248
Definition HairStrandsData.h:259
uint32 TotalAtlasSlotCount
Definition HairStrandsData.h:264
FRDGTextureRef LayersAtlasTexture
Definition HairStrandsData.h:268
FIntPoint AtlasSlotResolution
Definition HairStrandsData.h:265
static const uint32 MaxAtlasSlotCount
Definition HairStrandsData.h:262
FRDGTextureRef DepthAtlasTexture
Definition HairStrandsData.h:267
FRDGBufferRef DeepShadowViewInfoBuffer
Definition HairStrandsData.h:269
Definition HairStrandsData.h:301
uint32 ResourceId
Definition HairStrandsData.h:305
uint32 GroupIndex
Definition HairStrandsData.h:306
uint32 Flags
Definition HairStrandsData.h:307
bool IsCullingEnable() const
Definition HairStrandsMacroGroup.cpp:313
uint32 MaterialId
Definition HairStrandsData.h:304
const FPrimitiveSceneProxy * PrimitiveSceneProxy
Definition HairStrandsData.h:303
FHairGroupPublicData * PublicDataPtr
Definition HairStrandsData.h:308
const FMeshBatch * Mesh
Definition HairStrandsData.h:302
Hair macro group infos.
Definition HairStrandsData.h:296
FBoxSphereBounds Bounds
Definition HairStrandsData.h:315
uint32 MacroGroupId
Definition HairStrandsData.h:317
uint32 Flags
Definition HairStrandsData.h:318
TPrimitiveInfos PrimitivesInfos
Definition HairStrandsData.h:314
static const uint32 MaxMacroGroupCount
Definition HairStrandsData.h:297
FIntRect ScreenRect
Definition HairStrandsData.h:316
bool bSupportVoxelization
Definition HairStrandsData.h:320
FHairStrandsDeepShadowDatas DeepShadowDatas
Definition HairStrandsData.h:313
TArray< PrimitiveInfo, SceneRenderingAllocator > TPrimitiveInfos
Definition HairStrandsData.h:311
Definition HairStrandsData.h:285
FRDGBufferRef MacroGroupVoxelSizeBuffer
Definition HairStrandsData.h:289
uint32 MacroGroupCount
Definition HairStrandsData.h:286
FRDGBufferRef MacroGroupAABBsBuffer
Definition HairStrandsData.h:287
FRDGBufferRef MacroGroupVoxelAlignedAABBsBuffer
Definition HairStrandsData.h:288
Definition HairStrandsData.h:60
static FORCEINLINE uint32 GetIndirectRayDispatchArgOffset(ETileType Type)
Definition HairStrandsData.h:87
ETileType
Definition HairStrandsData.h:61
static FORCEINLINE uint32 GetIndirectDrawArgOffset(ETileType Type)
Definition HairStrandsData.h:85
FRDGBufferRef GetTileBuffer(ETileType Type) const
Definition HairStrandsData.h:90
bool IsValid() const
Definition HairStrandsData.h:89
static FORCEINLINE uint32 GetIndirectDispatchArgOffset(ETileType Type)
Definition HairStrandsData.h:86
FRDGBufferSRVRef GetTileBufferSRV(ETileType Type) const
Definition HairStrandsData.h:91
Definition HairStrandsData.h:449
const FLightSceneInfo * LightInfo
Definition HairStrandsData.h:449
FConvexVolume ViewFrustumInLightSpace
Definition HairStrandsData.h:449
Definition HairStrandsData.h:435
FHairStrandsMacroGroupDatas MacroGroupDatas
Definition HairStrandsData.h:441
FHairStrandsDebugData DebugData
Definition HairStrandsData.h:445
FHairStrandsVisibilityData VisibilityData
Definition HairStrandsData.h:440
bool bIsValid
Definition HairStrandsData.h:437
uint32 Flags
Definition HairStrandsData.h:446
TArray< FDirectionalLightCullData > VisibleShadowCastingDirectionalLights
Definition HairStrandsData.h:451
TRDGUniformBufferRef< FHairStrandsViewUniformParameters > UniformBuffer
Definition HairStrandsData.h:436
FHairStrandsDeepShadowResources DeepShadowResources
Definition HairStrandsData.h:442
FHairStrandsMacroGroupResources MacroGroupResources
Definition HairStrandsData.h:444
TArray< const FLightSceneInfo * > VisibleShadowCastingLights
Definition HairStrandsData.h:450
FHairStrandsVoxelResources VirtualVoxelResources
Definition HairStrandsData.h:443
Definition HairStrandsData.h:466
bool bHasPendingReadback
Definition HairStrandsData.h:468
FRHIGPUBufferReadback * ReadbackBuffer
Definition HairStrandsData.h:467
Definition HairStrandsData.h:456
bool IsInit() const
Definition HairStrandsData.h:457
TArray< FPositionChangedData > PositionsChangedDatas
Definition HairStrandsData.h:472
bool ReadPositionsChanged()
Definition HairStrandsRendering.cpp:286
void Init()
Definition HairStrandsRendering.cpp:244
TRefCountPtr< FRDGPooledBuffer > VoxelFeedbackBuffer
Definition HairStrandsData.h:462
void Release()
Definition HairStrandsRendering.cpp:258
void EnqueuePositionsChanged(FRDGBuilder &GraphBuilder, FRDGBufferRef InBuffer)
Definition HairStrandsRendering.cpp:273
Definition HairStrandsData.h:100
FVector4f HairOnlyDepthHZBParameters
Definition HairStrandsData.h:122
FRDGTextureRef CoverageTexture
Definition HairStrandsData.h:103
uint32 MaxControlPointCount
Definition HairStrandsData.h:125
FHairStrandsTiles TileData
Definition HairStrandsData.h:130
FRDGTextureRef VelocityTexture
Definition HairStrandsData.h:101
FRDGTextureRef ResolveMaskTexture
Definition HairStrandsData.h:102
FRDGTextureRef ViewHairCountUintTexture
Definition HairStrandsData.h:105
uint32 RasterizedInstanceCount
Definition HairStrandsData.h:124
FIntPoint SampleLightingViewportResolution
Definition HairStrandsData.h:138
uint32 MaxSampleCount
Definition HairStrandsData.h:113
static const EPixelFormat CoverageFormat
Definition HairStrandsData.h:133
FRDGBufferSRVRef ControlPointCount
Definition HairStrandsData.h:127
FRDGTextureRef HairOnlyDepthFurthestHZBTexture
Definition HairStrandsData.h:109
FRDGTextureRef NodeIndex
Definition HairStrandsData.h:116
FRDGTextureRef SampleLightingTexture
Definition HairStrandsData.h:139
FRDGBufferRef NodeCount
Definition HairStrandsData.h:115
uint32 NodeGroupSize
Definition HairStrandsData.h:121
FRDGTextureRef LightChannelMaskTexture
Definition HairStrandsData.h:111
FRDGBufferSRVRef ControlPointsSRV
Definition HairStrandsData.h:126
FRDGBufferRef NodeCoord
Definition HairStrandsData.h:119
FRDGBufferRef NodeData
Definition HairStrandsData.h:117
FRDGTextureRef ViewHairCountTexture
Definition HairStrandsData.h:104
FRDGBufferRef NodeIndirectArg
Definition HairStrandsData.h:120
FRDGTextureRef HairOnlyDepthTexture
Definition HairStrandsData.h:106
static const EPixelFormat NodeCoordFormat
Definition HairStrandsData.h:132
FRDGBufferRef NodeVisData
Definition HairStrandsData.h:118
FRDGTextureRef HairOnlyDepthClosestHZBTexture
Definition HairStrandsData.h:108
uint32 MaxNodeCount
Definition HairStrandsData.h:114
FRDGBufferSRVRef ControlPointVelocitySRV
Definition HairStrandsData.h:128
Definition HairStrandsData.h:214
const bool IsValid() const
Definition HairStrandsData.h:224
TRDGUniformBufferRef< FVirtualVoxelParameters > UniformBuffer
Definition HairStrandsData.h:216
FVirtualVoxelParameters Parameters
Definition HairStrandsData.h:215
Definition SceneManagement.h:1462
Definition MeshBatch.h:371
Definition HairStrandsData.h:232
float Stable
Definition HairStrandsData.h:235
float Velocity
Definition HairStrandsData.h:234
float Primary
Definition HairStrandsData.h:233
Definition HairStrandsData.h:146
FVector3f MaxAABB
Definition HairStrandsData.h:154
static const uint32 ComponentCount
Definition HairStrandsData.h:149
uint32 PageIndexOffset
Definition HairStrandsData.h:155
FVector3f MinAABB
Definition HairStrandsData.h:152
static const EPixelFormat Format
Definition HairStrandsData.h:148
uint32 PackedPageIndexResolution
Definition HairStrandsData.h:153
Definition BoxSphereBounds.h:25
static const TIntPoint ZeroValue
Definition IntPoint.h:45
static TVector4< float > Zero()
Definition Vector4.h:179