4 TEXT(
"r.LumenScene.DirectLighting.Stochastic"),
6 TEXT(
"Whether to enable stochastic lighting for Lumen scene (experimental)."),
10 TEXT(
"r.LumenScene.DirectLighting.Stochastic.Temporal"),
12 TEXT(
"Enable temporal filtering."),
17 TEXT(
"r.LumenScene.DirectLighting.Stochastic.Temporal.MaxFramesAccumulated"),
19 TEXT(
"Max history length when accumulating frames. Lower values have less ghosting, but more noise."),
24 TEXT(
"r.LumenScene.DirectLighting.Stochastic.Temporal.NeighborhoodClampScale"),
26 TEXT(
"Scales how permissive is neighborhood clamp. Higher values cause more ghosting, but allow smoother temporal accumulation."),
31 TEXT(
"r.LumenScene.DirectLighting.Stochastic.Debug"),
33 TEXT(
"Enable debug print for Lumen stochastic pipeline."),
38 TEXT(
"r.LumenScene.DirectLighting.Stochastic.SamplePerTexel"),
40 TEXT(
"Number of light sample per texel for Lumen direct lighting with stochastic selection."),
45 TEXT(
"r.LumenScene.DirectLighting.Stochastic.MinWeight"),
47 TEXT(
"Determines minimal sample influence on final texels. Used to skip samples which would have minimal impact to the final image even if light is fully visible."),
51static uint32 GetLumenStochasticNumSamplesPerTexel()
54 return NumSamples > 2 ? 4 : NumSamples;
80 static int32 GetGroupSize()
120 static int32 GetGroupSize()
151 Bindings.BindForLegacyShaderParameters(
155 *FParameters::FTypeInfo::GetStructMetadata(),
417 static int32 GetGroupSize()
425 static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters)
505static void CompactLumenSceneLightsTraces(
513 FLumenSceneCompactLightSampleTracesCS::FParameters*
PassParameters = GraphBuilder.
AllocParameters<FLumenSceneCompactLightSampleTracesCS::FParameters>();
542static void ComputeStochasticLighting(
550 const LumenSceneDirectLighting::FLightDataParameters&
LumenLightData)
572 CommonParameters.SamplingMinWeight = FMath::Max(CVarLumenDirectLightingStochasticMinWeight.
GetValueOnRenderThread(), 0.0f);
573 CommonParameters.TemporalMaxFramesAccumulated = FMath::Max(CVarLumenDirectLightingStochasticTemporalMaxFramesAccumulated.
GetValueOnRenderThread(), 0.0f);
574 CommonParameters.TemporalNeighborhoodClampScale = CVarLumenDirectLightingStochasticTemporalNeighborhoodClampScale.
GetValueOnRenderThread();
577 CommonParameters.DummyZeroForFixingShaderCompilerBug = 0;
579 CommonParameters.NumStandaloneLights =
LightingTaskData->StandaloneLightIndices.Num();
582 if (bUseLightFunctionAtlas)
634 PassParameters->NumSamplesPerPixel1d = CommonParameters.NumSamplesPerPixel1d;
672 TEXT(
"LumenScene.DirectLighting.LightSamples"));
676 TEXT(
"LumenScene.DirectLighting.SampleLuminanceSum"));
680 TEXT(
"LumenScene.DirectLighting.SceneAlbedo"));
685 TEXT(
"LumenScene.DirectLighting.UniqueLightIndices"));
690 TEXT(
"LumenScene.DirectLighting.UniqueLightCount"));
694 TEXT(
"LumenScene.DirectLighting.SampleDiffuseLighting"));
706 TEXT(
"LumenScene.DirectLighting.SceneData"));
735 FLumenSceneGenerateLightSamplesCS::FParameters*
PassParameters = GraphBuilder.
AllocParameters<FLumenSceneGenerateLightSamplesCS::FParameters>();
755 PermutationVector.Set<FLumenSceneGenerateLightSamplesCS::FLightFunctionAtlas>(bUseLightFunctionAtlas);
756 PermutationVector.Set<FLumenSceneGenerateLightSamplesCS::FNumSamplesPerPixel1d>(CommonParameters.NumSamplesPerPixel1d);
761 RDG_EVENT_NAME(
"GenerateSamples(SamplesPerTexel:%d)", CommonParameters.NumSamplesPerPixel1d),
838 FLumenSceneEvaluateStandaloneLightMaterialCS::FParameters*
PassParameters = GraphBuilder.
AllocParameters<FLumenSceneEvaluateStandaloneLightMaterialCS::FParameters>();
871 const FMaterial&
Material = LightFunctionMaterialProxy->GetMaterialWithFallback(
Scene->GetFeatureLevel(), LightFunctionMaterialProxy);
884 CardTilePerLightArgs->MarkResourceAsUsed();
885 FComputeShaderUtils::ValidateIndirectArgsBuffer(CardTilePerLightArgs, DispatchIndirectArgOffset);
886 FRHIComputeShader* ShaderRHI = ComputeShader.GetComputeShader();
887 SetComputePipelineState(RHICmdList, ShaderRHI);
888 SetShaderParameters(RHICmdList, ComputeShader, ShaderRHI, *PassParameters);
889 ComputeShader->SetParameters(RHICmdList, ShaderRHI, LightFunctionMaterialProxy, Material, View);
890 RHICmdList.DispatchIndirectComputeShader(CardTilePerLightArgs->GetIndirectRHICallBuffer(), DispatchIndirectArgOffset);
891 UnsetShaderUAVs(RHICmdList, ComputeShader, ShaderRHI);
896 FLumenSceneEvaluateStandaloneLightCS::FParameters*
PassParameters = GraphBuilder.
AllocParameters<FLumenSceneEvaluateStandaloneLightCS::FParameters>();
944 CompactLumenSceneLightsTraces(
948 CompactedLightSampleData,
949 CompactedLightSampleAllocator);
962 StochasticData.CompactedLightSampleAllocator = CompactedLightSampleAllocator;
995 PassParameters->NumSamplesPerPixel1d = CommonParameters.NumSamplesPerPixel1d;
1034 TEXT(
"Lumen.SceneLighting.DiffuseLightingAndSecondMoment"));
1038 TEXT(
"Lumen.SceneLighting.NumFramesAccumulated"));
1095 AddLumenSceneDirectLightingStatsPass(
1103 CompactedLightSampleAllocator,
#define check(expr)
Definition AssertionMacros.h:314
FBlueNoise GetBlueNoiseGlobalParameters()
Definition BlueNoise.cpp:58
@ INDEX_NONE
Definition CoreMiscDefines.h:150
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_GLOBAL_SHADER(ShaderClass)
Definition GlobalShader.h:408
#define IMPLEMENT_GLOBAL_SHADER(ShaderClass, SourceFilename, FunctionName, Frequency)
Definition GlobalShader.h:410
@ ECVF_Scalability
Definition IConsoleManager.h:93
@ ECVF_RenderThreadSafe
Definition IConsoleManager.h:88
void TraceLumenHardwareRayTracedDirectLightingShadows(FRDGBuilder &GraphBuilder, const FScene *Scene, const FViewInfo &View, int32 ViewIndex, const FLumenSceneFrameTemporaries &FrameTemporaries, const FLumenDirectLightingStochasticData &StochasticData, const LumenSceneDirectLighting::FLightDataParameters &LumenLightData, FRDGBufferRef ShadowTraceIndirectArgs, FRDGBufferRef ShadowTraceAllocator, FRDGBufferRef ShadowTraces, FRDGBufferRef LightTileAllocator, FRDGBufferRef LightTiles, FRDGBufferUAVRef ShadowMaskTilesUAV, ERDGPassFlags ComputePassFlags)
Definition LumenSceneDirectLightingHardwareRayTracing.cpp:361
void SetupLightFunctionParameters(const FViewInfo &View, const FLightSceneInfo *LightSceneInfo, float ShadowFadeFraction, FLightFunctionParameters &OutParameters)
Definition LumenSceneDirectLighting.cpp:933
uint32 GetLumenLightingStatMode()
Definition LumenSceneLighting.cpp:70
int32 GLumenDirectLightingCloudTransmittance
Definition LumenSceneDirectLighting.cpp:56
#define IMPLEMENT_MATERIAL_SHADER_TYPE(TemplatePrefix, ShaderClass, SourceFilename, FunctionName, Frequency)
Definition MaterialShaderType.h:13
UE::Math::TVector2< float > FVector2f
Definition MathFwd.h:74
FInt32Vector3 FIntVector
Definition MathFwd.h:115
FInt32Point FIntPoint
Definition MathFwd.h:124
const bool
Definition NetworkReplayStreaming.h:178
@ SF_Compute
Definition RHIDefinitions.h:208
@ UniformBuffer_SingleDraw
Definition RHIDefinitions.h:538
#define TexCreate_UAV
Definition RHIDefinitions.h:1209
#define TexCreate_ShaderResource
Definition RHIDefinitions.h:1195
#define GRHIMinimumWaveSize
Definition RHIGlobals.h:868
#define GRHIMaximumWaveSize
Definition RHIGlobals.h:869
ERDGPassFlags
Definition RenderGraphDefinitions.h:128
#define RDG_EVENT_SCOPE(...)
Definition RenderGraphEvent.h:531
#define RDG_EVENT_NAME(...)
Definition RenderGraphEvent.h:529
void AddClearUAVPass(FRDGBuilder &GraphBuilder, FRDGBufferUAVRef BufferUAV, uint32 Value, ERDGPassFlags ComputePassFlags)
Definition RenderGraphUtils.cpp:402
void ClearUnusedGraphResources(const TShaderRef< TShaderClass > &Shader, const FShaderParametersMetadata *ParametersMetadata, typename TShaderClass::FParameters *InoutParameters, std::initializer_list< FRDGResourceRef > ExcludeList={})
Definition RenderGraphUtils.h:195
bool DoesPlatformSupportLumenGI(EShaderPlatform Platform, bool bSkipProjectCheck)
Definition RenderUtils.cpp:2358
#define SHADER_PARAMETER_RDG_BUFFER_SRV(ShaderType, MemberName)
Definition ShaderParameterMacros.h:1800
#define SHADER_PARAMETER_RDG_TEXTURE(ShaderType, MemberName)
Definition ShaderParameterMacros.h:1752
#define SHADER_PARAMETER_ARRAY(MemberType, MemberName, ArrayDecl)
Definition ShaderParameterMacros.h:1696
#define SHADER_PARAMETER_SAMPLER(ShaderType, MemberName)
Definition ShaderParameterMacros.h:1740
#define RDG_BUFFER_ACCESS(MemberName, Access)
Definition ShaderParameterMacros.h:1923
#define SHADER_PARAMETER_RDG_BUFFER_UAV(ShaderType, MemberName)
Definition ShaderParameterMacros.h:1812
#define BEGIN_SHADER_PARAMETER_STRUCT(StructTypeName, DllStorage)
Definition ShaderParameterMacros.h:1482
#define SHADER_PARAMETER_STRUCT_REF(StructType, MemberName)
Definition ShaderParameterMacros.h:1909
#define SHADER_PARAMETER_RDG_TEXTURE_UAV(ShaderType, MemberName)
Definition ShaderParameterMacros.h:1788
#define SHADER_PARAMETER_STRUCT_INCLUDE(StructType, MemberName)
Definition ShaderParameterMacros.h:1895
#define SHADER_PARAMETER_RDG_UNIFORM_BUFFER(StructType, MemberName)
Definition ShaderParameterMacros.h:1823
#define END_SHADER_PARAMETER_STRUCT()
Definition ShaderParameterMacros.h:1485
#define SHADER_PARAMETER(MemberType, MemberName)
Definition ShaderParameterMacros.h:1684
#define SHADER_USE_PARAMETER_STRUCT(ShaderClass, ShaderParentClass)
Definition ShaderParameterStruct.h:62
#define SHADER_PERMUTATION_BOOL(InDefineName)
Definition ShaderPermutation.h:482
#define SHADER_PERMUTATION_SPARSE_INT(InDefineName,...)
Definition ShaderPermutation.h:506
#define DECLARE_SHADER_TYPE(ShaderClass, ShaderMetaTypeShortcut,...)
Definition Shader.h:1688
EShaderPermutationPrecacheRequest
Definition Shader.h:807
bool SetupLightCloudTransmittanceParameters(FRDGBuilder &GraphBuilder, const FScene *Scene, const FViewInfo &View, const FLightSceneInfo *LightSceneInfo, FLightCloudTransmittanceParameters &OutParameters)
Definition VolumetricCloudRendering.cpp:3173
Definition GlobalShader.h:173
RENDERCORE_API TShaderRef< FShader > GetShader(FShaderType *ShaderType, int32 PermutationId=0) const
Definition GlobalShader.cpp:608
Definition GlobalShader.h:269
static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters &Parameters, FShaderCompilerEnvironment &Environment)
Definition GlobalShader.h:289
Definition LumenSceneLighting.h:26
Definition LumenSceneDirectLighting.cpp:143
bool bMayCastCloudTransmittance
Definition LumenSceneDirectLighting.cpp:224
Definition LumenSceneDirectLightingStochastic.inl:105
Definition LumenSceneDirectLightingStochastic.inl:65
Definition LumenSceneDirectLightingStochastic.inl:404
Definition LumenSceneData.h:1002
FIntPoint GetRadiosityAtlasSize() const
Definition LumenRadiosity.cpp:268
Definition LumenSceneDirectLightingStochastic.inl:449
Definition LumenSceneDirectLightingStochastic.inl:214
Definition LumenSceneDirectLightingStochastic.inl:145
Definition LumenSceneDirectLightingStochastic.inl:294
Definition LumenSceneDirectLightingStochastic.inl:352
Definition MaterialRenderProxy.h:102
Definition MaterialShared.h:1518
TShaderRef< FShader > GetShader(FShaderType *ShaderType, int32 PermutationId=0) const
Definition MaterialShared.h:1568
Definition MaterialShader.h:56
RENDERER_API FMaterialShader()
Definition MaterialShared.h:2058
Definition RenderGraphResources.h:1452
Definition RenderGraphResources.h:1321
Definition RenderGraphBuilder.h:49
FRDGTextureUAVRef CreateUAV(const FRDGTextureUAVDesc &Desc, ERDGUnorderedAccessViewFlags Flags=ERDGUnorderedAccessViewFlags::None)
Definition RenderGraphBuilder.inl:118
FRDGBufferRef CreateBuffer(const FRDGBufferDesc &Desc, const TCHAR *Name, ERDGBufferFlags Flags=ERDGBufferFlags::None)
Definition RenderGraphBuilder.inl:65
FRDGTextureRef CreateTexture(const FRDGTextureDesc &Desc, const TCHAR *Name, ERDGTextureFlags Flags=ERDGTextureFlags::None)
Definition RenderGraphBuilder.inl:41
ParameterStructType * AllocParameters()
Definition RenderGraphBuilder.inl:170
FRDGPassRef AddPass(FRDGEventName &&Name, const ParameterStructType *ParameterStruct, ERDGPassFlags Flags, ExecuteLambdaType &&ExecuteLambda)
FRDGTextureSRVRef CreateSRV(const FRDGTextureSRVDesc &Desc)
Definition RenderGraphBuilder.inl:102
Definition RenderGraphResources.h:905
Definition RenderGraphResources.h:571
const FRDGTextureDesc Desc
Definition RenderGraphResources.h:575
Definition RHICommandList.h:2735
Definition SceneView.h:2212
uint32 GetFrameIndex(uint32 Pow2Modulus) const
Definition ScenePrivate.h:1161
TUniformBufferRef< FViewUniformShaderParameters > ViewUniformBuffer
Definition SceneView.h:1432
FFinalPostProcessSettings FinalPostProcessSettings
Definition SceneView.h:1772
ENGINE_API EShaderPlatform GetShaderPlatform() const
Definition SceneView.cpp:2489
Definition ScenePrivate.h:2875
static void ModifyCompilationEnvironment(const FShaderPermutationParameters &, FShaderCompilerEnvironment &)
Definition Shader.h:854
Definition SceneRendering.h:1132
FPreviousViewInfo & PrevViewInfo
Definition SceneRendering.h:1407
FGlobalShaderMap * ShaderMap
Definition SceneRendering.h:1474
FShaderPrintData ShaderPrintData
Definition SceneRendering.h:1499
FIntRect ViewRect
Definition SceneRendering.h:1137
uint32 bStatePrevViewInfoIsReadOnly
Definition SceneRendering.h:1351
FSceneViewState * ViewState
Definition SceneRendering.h:1143
float PreExposure
Definition SceneRendering.h:1413
Definition IConsoleManager.h:1792
T GetValueOnRenderThread() const
Definition IConsoleManager.h:1849
static RHIParamRefType GetRHI()
Definition RHIStaticStates.h:57
FRDGPassRef AddPass(FRDGBuilder &GraphBuilder, FRDGEventName &&PassName, ERDGPassFlags PassFlags, const TShaderRef< TShaderClass > &ComputeShader, const FShaderParametersMetadata *ParametersMetadata, typename TShaderClass::FParameters *Parameters, FIntVector GroupCount)
Definition RenderGraphUtils.h:550
FIntVector GetGroupCount(const int32 ThreadCount, const int32 GroupSize)
Definition RenderGraphUtils.h:349
Definition LightFunctionAtlas.cpp:122
bool IsEnabled(const FViewInfo &InView, ELightFunctionAtlasSystem In)
Definition LightFunctionAtlas.cpp:975
TRDGUniformBufferRef< FLightFunctionAtlasGlobalParameters > BindGlobalParameters(FRDGBuilder &GraphBuilder, const FViewInfo &InView)
Definition LightFunctionAtlas.cpp:990
bool UseStochasticLighting(const FSceneViewFamily &ViewFamily)
Definition LumenSceneDirectLightingStochastic.inl:57
constexpr uint32 CardTileSize
Definition Lumen.h:45
bool UseHardwareRayTracedDirectLighting(const FSceneViewFamily &ViewFamily)
Definition LumenSceneDirectLightingHardwareRayTracing.cpp:63
void SpliceCardPagesIntoTiles(FRDGBuilder &GraphBuilder, const FGlobalShaderMap *GloablShaderMap, const FLumenCardUpdateContext &CardUpdateContext, const TRDGUniformBufferRef< FLumenCardScene > &LumenCardSceneUniformBuffer, FLumenCardTileUpdateContext &OutCardTileUpdateContext, ERDGPassFlags ComputePassFlags)
Definition LumenSceneDirectLighting.cpp:306
bool UseWaveOps(EShaderPlatform ShaderPlatform)
Definition Lumen.cpp:94
Definition ShaderPrint.cpp:22
void SetEnabled(bool bInEnabled)
Definition ShaderPrint.cpp:317
void SetParameters(FRDGBuilder &GraphBuilder, const FShaderPrintData &InData, FShaderParameters &OutParameters)
Definition ShaderPrint.cpp:265
void RequestSpaceForLines(uint32 InCount)
Definition ShaderPrint.cpp:348
static RHI_API const FClearValueBinding Black
Definition RHIResources.h:359
FVector3f Low
Definition DoubleFloat.h:113
FVector3f High
Definition DoubleFloat.h:112
Definition GlobalShader.h:73
Definition LumenSceneLighting.h:175
Definition LumenSceneLighting.h:158
FRDGBufferRef CompactedLightSampleData
Definition LumenSceneLighting.h:161
Definition LumenSceneDirectLighting.cpp:1889
Definition LumenSceneData.h:895
FRDGTextureRef DiffuseLightingAndSecondMomentHistoryAtlas
Definition LumenSceneData.h:912
Definition LumenSceneData.h:833
FDFVector3 PreViewTranslationDF
Definition LumenSceneData.h:845
float LastEyeAdaptationExposure
Definition LumenSceneData.h:853
FMatrix44f FrustumTranslatedWorldToClip
Definition LumenSceneData.h:849
EMaterialDomain MaterialDomain
Definition MaterialShared.h:1064
Definition MaterialShader.h:45
FMaterialShaderParameters MaterialParameters
Definition MaterialShader.h:46
Definition MaterialShaderType.h:98
static constexpr UE_FORCEINLINE_HINT T DivideAndRoundUp(T Dividend, T Divisor)
Definition UnrealMathUtility.h:694
static constexpr UE_FORCEINLINE_HINT T Clamp(const T X, const T MinValue, const T MaxValue)
Definition UnrealMathUtility.h:592
float LumenDiffuseColorBoost
Definition Scene.h:1750
float SceneColorPreExposure
Definition SceneRendering.h:983
Definition RenderGraphDefinitions.h:103
static FRDGBufferDesc CreateStructuredDesc(uint32 BytesPerElement, uint32 NumElements)
Definition RenderGraphResources.h:993
static FRDGTextureDesc Create2DArray(FIntPoint Size, EPixelFormat Format, FClearValueBinding ClearValue, ETextureCreateFlags Flags, uint16 ArraySize, uint8 NumMips=1, uint8 NumSamples=1, uint32 ExtData=0)
Definition RenderGraphDefinitions.h:643
static FRDGTextureDesc Create2D(FIntPoint Size, EPixelFormat Format, FClearValueBinding ClearValue, ETextureCreateFlags Flags, uint8 NumMips=1, uint8 NumSamples=1, uint32 ExtData=0)
Definition RenderGraphDefinitions.h:628
uint16 ArraySize
Definition RHIResources.h:1862
FIntPoint Extent
Definition RHIResources.h:1856
Definition ShaderCore.h:544
const int32 PermutationId
Definition ShaderPermutation.h:32
const EShaderPlatform Platform
Definition ShaderPermutation.h:29
Definition ShaderPermutation.h:229
void Set(typename DimensionToSet::Type)
Definition ShaderPermutation.h:252
IntType Y
Definition IntPoint.h:37
IntType X
Definition IntPoint.h:34
IntPointType Size() const
Definition IntRect.h:449