|
| | DECLARE_GPU_STAT (GlobalDistanceFieldUpdate) |
| |
| FAutoConsoleVariableRef | CVarAOGlobalDistanceField (TEXT("r.AOGlobalDistanceField"), GAOGlobalDistanceField, TEXT("The global distance field is created by compositing object distance fields into clipmaps as the viewer moves through the level."), ECVF_Scalability|ECVF_RenderThreadSafe) |
| |
| FAutoConsoleVariableRef | CVarAOGlobalDistanceFieldOccupancyRatio (TEXT("r.AOGlobalDistanceField.OccupancyRatio"), GGlobalDistanceFieldOccupancyRatio, TEXT("Expected sparse global distacne field occupancy for the page atlas allocation. 0.25 means 25% - filled and 75% - empty."), ECVF_Scalability|ECVF_RenderThreadSafe) |
| |
| FAutoConsoleVariableRef | CVarAOGlobalDistanceFieldNumClipmaps (TEXT("r.AOGlobalDistanceField.NumClipmaps"), GAOGlobalDistanceFieldNumClipmaps, TEXT("Num clipmaps in the global distance field. Setting this to anything other than 4 is currently only supported by Lumen."), ECVF_Scalability|ECVF_RenderThreadSafe) |
| |
| FAutoConsoleVariableRef | CVarAOGlobalDistanceFieldHeightfield (TEXT("r.AOGlobalDistanceField.Heightfield"), GAOGlobalDistanceFieldHeightfield, TEXT("Whether to voxelize Heightfield into the global distance field.\n"), ECVF_Scalability|ECVF_RenderThreadSafe) |
| |
| FAutoConsoleVariableRef | CVarAOUpdateGlobalDistanceField (TEXT("r.AOUpdateGlobalDistanceField"), GAOUpdateGlobalDistanceField, TEXT("Whether to update the global distance field, useful for debugging."), ECVF_Scalability|ECVF_RenderThreadSafe) |
| |
| FAutoConsoleVariableRef | CVarAOGlobalDistanceFieldCacheMostlyStaticSeparately (TEXT("r.AOGlobalDistanceFieldCacheMostlyStaticSeparately"), GAOGlobalDistanceFieldCacheMostlyStaticSeparately, TEXT("Whether to cache mostly static primitives separately from movable primitives, which reduces global DF update cost when a movable primitive is modified. Adds another 12Mb of volume textures."), ECVF_Scalability|ECVF_RenderThreadSafe) |
| |
| FAutoConsoleVariableRef | CVarAOGlobalDistanceFieldPartialUpdates (TEXT("r.AOGlobalDistanceFieldPartialUpdates"), GAOGlobalDistanceFieldPartialUpdates, TEXT("Whether to allow partial updates of the global distance field. When profiling it's useful to disable this and get the worst case composition time that happens on camera cuts."), ECVF_Scalability|ECVF_RenderThreadSafe) |
| |
| FAutoConsoleVariableRef | CVarAOGlobalDistanceFieldStaggeredUpdatess (TEXT("r.AOGlobalDistanceFieldStaggeredUpdates"), GAOGlobalDistanceFieldStaggeredUpdates, TEXT("Whether to allow the larger clipmaps to be updated less frequently."), ECVF_Scalability|ECVF_RenderThreadSafe) |
| |
| FAutoConsoleVariableRef | CVarAOGlobalDistanceFieldClipmapUpdatesPerFrame (TEXT("r.AOGlobalDistanceFieldClipmapUpdatesPerFrame"), GAOGlobalDistanceFieldClipmapUpdatesPerFrame, TEXT("How many clipmaps to update each frame. With values less than 2, the first clipmap is only updated every other frame, which can cause incorrect self occlusion during movement."), ECVF_Scalability|ECVF_RenderThreadSafe) |
| |
| FAutoConsoleVariableRef | CVarAOGlobalDistanceFieldForceFullUpdate (TEXT("r.AOGlobalDistanceFieldForceFullUpdate"), GAOGlobalDistanceFieldForceFullUpdate, TEXT("Whether to force full global distance field update every frame."), ECVF_Scalability|ECVF_RenderThreadSafe) |
| |
| FAutoConsoleVariableRef | CVarAOGlobalDistanceFieldForceUpdateOnce (TEXT("r.AOGlobalDistanceFieldForceUpdateOnce"), GAOGlobalDistanceFieldForceUpdateOnce, TEXT("Whether to force full global distance field once."), ECVF_Scalability|ECVF_RenderThreadSafe) |
| |
| FAutoConsoleVariableRef | CVarAOGlobalDFClipmapDistanceExponent (TEXT("r.AOGlobalDFClipmapDistanceExponent"), GAOGlobalDFClipmapDistanceExponent, TEXT("Exponent used to derive each clipmap's size, together with r.AOInnerGlobalDFClipmapDistance."), ECVF_Scalability|ECVF_RenderThreadSafe) |
| |
| FAutoConsoleVariableRef | CVarAOGlobalDFResolution (TEXT("r.AOGlobalDFResolution"), GAOGlobalDFResolution, TEXT("Resolution of the global distance field. Higher values increase fidelity but also increase memory and composition cost."), ECVF_Scalability|ECVF_RenderThreadSafe) |
| |
| FAutoConsoleVariableRef | CVarAOGlobalDFStartDistance (TEXT("r.AOGlobalDFStartDistance"), GAOGlobalDFStartDistance, TEXT("This has to be large enough to hide the low res nature of the global distance field, but smaller values result in faster cone tracing."), ECVF_Scalability|ECVF_RenderThreadSafe) |
| |
| FAutoConsoleVariableRef | CVarAOGlobalDistanceFieldRepresentHeightfields (TEXT("r.AOGlobalDistanceFieldRepresentHeightfields"), GAOGlobalDistanceFieldRepresentHeightfields, TEXT("Whether to put landscape in the global distance field. Changing this won't propagate until the global distance field gets recached (fly away and back)."), ECVF_Scalability|ECVF_RenderThreadSafe) |
| |
| FAutoConsoleVariableRef | CVarGlobalDistanceFieldHeightFieldThicknessScale (TEXT("r.GlobalDistanceFieldHeightFieldThicknessScale"), GGlobalDistanceFieldHeightFieldThicknessScale, TEXT("Thickness of the height field when it's entered into the global distance field, measured in distance field voxels. Defaults to 4 which means 4x the voxel size as thickness."), ECVF_Scalability|ECVF_RenderThreadSafe) |
| |
| FAutoConsoleVariableRef | CVarAOGlobalDistanceFieldMinMeshSDFRadiusInVoxels (TEXT("r.AOGlobalDistanceField.MinMeshSDFRadiusInVoxels"), GAOGlobalDistanceFieldMinMeshSDFRadiusInVoxels, TEXT("Meshes with a smaller radius than this number of voxels are culled from the global SDF."), ECVF_Scalability|ECVF_RenderThreadSafe) |
| |
| FAutoConsoleVariableRef | CVarAOGlobalDistanceFieldCameraPositionVelocityOffsetDecay (TEXT("r.AOGlobalDistanceField.CameraPositionVelocityOffsetDecay"), GAOGlobalDistanceFieldCameraPositionVelocityOffsetDecay, TEXT(""), ECVF_Scalability|ECVF_RenderThreadSafe) |
| |
| FAutoConsoleVariableRef | CVarAOGlobalDistanceFieldMipFactor (TEXT("r.AOGlobalDistanceField.MipFactor"), GAOGlobalDistanceFieldMipFactor, TEXT("Resolution divider for the mip map of a distance field clipmap."), ECVF_Scalability|ECVF_RenderThreadSafe) |
| |
| FAutoConsoleVariableRef | CVarAOGlobalDistanceFieldRecacheClipmapsWithPendingStreaming (TEXT("r.AOGlobalDistanceField.RecacheClipmapsWithPendingStreaming"), GAOGlobalDistanceFieldRecacheClipmapsWithPendingStreaming, TEXT("Whether to readback clipmaps cached with incomplete Mesh SDFs due to streaming and recache them on subsequent frames. Fixes innaccurate Global SDF around the camera after teleporting or loading a new level."), ECVF_Scalability|ECVF_RenderThreadSafe) |
| |
| FAutoConsoleVariableRef | CVarAOGlobalDistanceFieldForceRecacheForStreaming (TEXT("r.AOGlobalDistanceField.ForceRecacheForStreaming"), GAOGlobalDistanceFieldForceRecacheForStreaming, TEXT("Useful for debugging or profiling full clipmap updates that happen when a clipmap is detected to have pending streaming."), ECVF_Scalability|ECVF_RenderThreadSafe) |
| |
| FAutoConsoleVariableRef | CVarLumenSceneGlobalSDFCoveredExpandSurfaceScale (TEXT("r.LumenScene.GlobalSDF.CoveredExpandSurfaceScale"), GLumenSceneGlobalSDFCoveredExpandSurfaceScale, TEXT("Scales the half voxel SDF expand used by the Global SDF to reconstruct surfaces that are thinner than the distance between two voxels, erring on the side of over-occlusion."), ECVF_Scalability|ECVF_RenderThreadSafe) |
| |
| FAutoConsoleVariableRef | CVarLumenScenGlobalSDFNotCoveredExpandSurfaceScale (TEXT("r.LumenScene.GlobalSDF.NotCoveredExpandSurfaceScale"), GLumenSceneGlobalSDFNotCoveredExpandSurfaceScale, TEXT("Scales the half voxel SDF expand used by the Global SDF to reconstruct surfaces that are thinner than the distance between two voxels, for regions of space that only contain Two Sided Mesh SDFs."), ECVF_Scalability|ECVF_RenderThreadSafe) |
| |
| FAutoConsoleVariableRef | CVarLumenSceneGlobalSDFSimpleCoverageBasedExpand (TEXT("r.LumenScene.GlobalSDF.SimpleCoverageBasedExpand"), GLumenSceneGlobalSDFSimpleCoverageBasedExpand, TEXT("Whether to use simple coverage based surface expansion. Less accurate but does not sample the coverage texture."), ECVF_Scalability|ECVF_RenderThreadSafe) |
| |
| FAutoConsoleVariableRef | CVarLumenScenGlobalSDFNotCoveredMinStepScale (TEXT("r.LumenScene.GlobalSDF.NotCoveredMinStepScale"), GLumenSceneGlobalSDFNotCoveredMinStepScale, TEXT("Scales the min step size to improve performance, for regions of space that only contain Two Sided Mesh SDFs."), ECVF_Scalability|ECVF_RenderThreadSafe) |
| |
| FAutoConsoleVariableRef | CVarLumenSceneGlobalSDFDitheredTransparencyStepThreshold (TEXT("r.LumenScene.GlobalSDF.DitheredTransparencyStepThreshold"), GLumenSceneGlobalSDFDitheredTransparencyStepThreshold, TEXT("Per-step stochastic semi-transparency threshold, for tracing users that have dithered transparency enabled, for regions of space that only contain Two Sided Mesh SDFs."), ECVF_Scalability|ECVF_RenderThreadSafe) |
| |
| FAutoConsoleVariableRef | CVarLumenSceneGlobalSDFDitheredTransparencyTraceThreshold (TEXT("r.LumenScene.GlobalSDF.DitheredTransparencyTraceThreshold"), GLumenSceneGlobalSDFDitheredTransparencyTraceThreshold, TEXT("Per-trace stochastic semi-transparency threshold, for tracing users that have dithered transparency enabled, for regions of space that only contain Two Sided Mesh SDFs. Anything less than 1 causes leaking."), ECVF_Scalability|ECVF_RenderThreadSafe) |
| |
| FAutoConsoleVariableRef | CVarGlobalDistanceFieldDebugForceMovementUpdate (TEXT("r.GlobalDistanceField.Debug.ForceMovementUpdate"), GGlobalDistanceFieldDebugForceMovementUpdate, TEXT("Whether to force N texel border on X, Y and Z update each frame."), ECVF_Scalability|ECVF_RenderThreadSafe) |
| |
| FAutoConsoleVariableRef | CVarGlobalDistanceFieldDebugLogModifiedPrimitives (TEXT("r.GlobalDistanceField.Debug.LogModifiedPrimitives"), GGlobalDistanceFieldDebugLogModifiedPrimitives, TEXT("Pass 2 to log only non movable object updates."), ECVF_Scalability|ECVF_RenderThreadSafe) |
| |
| FAutoConsoleVariableRef | CVarGlobalDistanceFieldDebugDrawModifiedPrimitives (TEXT("r.GlobalDistanceField.Debug.DrawModifiedPrimitives"), GGlobalDistanceFieldDebugDrawModifiedPrimitives, TEXT("This can be useful for tracking down why updating the global distance field is always costing a lot, since it should be mostly cached."), ECVF_Scalability|ECVF_RenderThreadSafe) |
| |
| bool | UseGlobalDistanceField () |
| |
| bool | UseGlobalDistanceField (const FDistanceFieldAOParameters &Parameters) |
| |
| FGlobalDistanceFieldParameters2 | SetupGlobalDistanceFieldParameters (const FGlobalDistanceFieldParameterData &ParameterData) |
| |
| const TCHAR * | GetRecaptureReasonString (EGlobalSDFFullRecaptureReason Reason) |
| |
| float | GetMinMeshSDFRadius (float VoxelWorldSize) |
| |
| int32 | GetNumClipmapUpdatesPerFrame () |
| |
| void | RequestGlobalDistanceFieldReadback (FGlobalDistanceFieldReadback *Readback) |
| |
| void | RequestGlobalDistanceFieldReadback_GameThread (FGlobalDistanceFieldReadback *Readback) |
| |
| FVector | ClampCameraVelocityOffset (FVector CameraVelocityOffset, int32 ClipmapIndex, const FScene *Scene, bool bLumenEnabled) |
| |
| FVector | GetGlobalDistanceFieldViewOrigin (const FViewInfo &View, int32 ClipmapIndex, bool bLumenEnabled) |
| |
| void | ReadbackDistanceFieldClipmap (FRHICommandListImmediate &RHICmdList, FGlobalDistanceFieldInfo &GlobalDistanceFieldInfo) |
| |
| | IMPLEMENT_GLOBAL_SHADER (FCullObjectsToClipmapCS, "/Engine/Private/DistanceField/GlobalDistanceField.usf", "CullObjectsToClipmapCS", SF_Compute) |
| |
| | IMPLEMENT_GLOBAL_SHADER (FClearIndirectArgBufferCS, "/Engine/Private/DistanceField/GlobalDistanceField.usf", "ClearIndirectArgBufferCS", SF_Compute) |
| |
| | IMPLEMENT_GLOBAL_SHADER (FBuildGridTilesCS, "/Engine/Private/DistanceField/GlobalDistanceField.usf", "BuildGridTilesCS", SF_Compute) |
| |
| | IMPLEMENT_GLOBAL_SHADER (FCullObjectsToGridCS, "/Engine/Private/DistanceField/GlobalDistanceField.usf", "CullObjectsToGridCS", SF_Compute) |
| |
| | IMPLEMENT_GLOBAL_SHADER (FCompositeObjectsIntoObjectGridPagesCS, "/Engine/Private/DistanceField/GlobalDistanceFieldCompositeObjects.usf", "CompositeObjectsIntoObjectGridPagesCS", SF_Compute) |
| |
| | IMPLEMENT_GLOBAL_SHADER (FCompositeObjectsIntoPagesCS, "/Engine/Private/DistanceField/GlobalDistanceFieldCompositeObjects.usf", "CompositeObjectsIntoPagesCS", SF_Compute) |
| |
| | IMPLEMENT_GLOBAL_SHADER (FInitPageFreeListCS, "/Engine/Private/DistanceField/GlobalDistanceField.usf", "InitPageFreeListCS", SF_Compute) |
| |
| | IMPLEMENT_GLOBAL_SHADER (FAllocatePagesCS, "/Engine/Private/DistanceField/GlobalDistanceField.usf", "AllocatePagesCS", SF_Compute) |
| |
| | IMPLEMENT_GLOBAL_SHADER (FPageFreeListReturnIndirectArgBufferCS, "/Engine/Private/DistanceField/GlobalDistanceField.usf", "PageFreeListReturnIndirectArgBufferCS", SF_Compute) |
| |
| | IMPLEMENT_GLOBAL_SHADER (FPageFreeListReturnCS, "/Engine/Private/DistanceField/GlobalDistanceField.usf", "PageFreeListReturnCS", SF_Compute) |
| |
| | IMPLEMENT_GLOBAL_SHADER (FPropagateMipDistanceCS, "/Engine/Private/DistanceField/GlobalDistanceFieldMip.usf", "PropagateMipDistanceCS", SF_Compute) |
| |
| | IMPLEMENT_GLOBAL_SHADER (FGlobalDistanceFieldAccumulateUpdatedPagesCS, "/Engine/Private/DistanceField/GlobalDistanceFieldDebug.usf", "GlobalDistanceFieldAccumulateUpdatedPagesCS", SF_Compute) |
| |
| | IMPLEMENT_GLOBAL_SHADER (FGlobalDistanceFieldPageStatsCS, "/Engine/Private/DistanceField/GlobalDistanceFieldDebug.usf", "GlobalDistanceFieldPageStatsCS", SF_Compute) |
| |
| | IMPLEMENT_GLOBAL_SHADER (FGlobalDistanceFieldDebugCS, "/Engine/Private/DistanceField/GlobalDistanceFieldDebug.usf", "GlobalDistanceFieldDebugCS", SF_Compute) |
| |
| void | UpdateGlobalDistanceFieldCache (FRDGBuilder &GraphBuilder, FViewInfo &View, FScene *Scene, int32 CacheType, TArray< FGlobalDistanceFieldClipmap > &Clipmaps, FRDGBufferRef PageStatsBuffer, FRDGBufferRef PageObjectGridBuffer, FRDGTextureRef PageTableLayerTexture, FRDGTextureRef ParentPageTableLayerTexture, FRDGTextureRef PageTableCombinedTexture, FRDGTextureRef PageAtlasTexture, FRDGTextureRef CoverageAtlasTexture, FRDGTextureRef MipTexture, FRDGBufferRef PageFreeListAllocatorBuffer, FRDGBufferRef PageFreeListBuffer, bool bLumenEnabled) |
| |
| void | UpdateGlobalDistanceFieldVolume (FRDGBuilder &GraphBuilder, FRDGExternalAccessQueue &ExternalAccessQueue, FViewInfo &View, FScene *Scene, float MaxOcclusionDistance, bool bLumenEnabled, FGlobalDistanceFieldInfo &GlobalDistanceFieldInfo) |
| |