UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
LumenHardwareRayTracingCommon.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "RHIDefinitions.h"
6#include "GlobalShader.h"
10#include "RayTracingPayloadType.h"
12#include "Substrate/Substrate.h"
13
14enum class EReflectionsMethod;
15
16namespace RayTracing
17{
18 struct FSceneOptions;
19};
20
60
61#if RHI_RAYTRACING
62
63namespace Lumen
64{
65 // Struct definitions much match those in LumenHardwareRayTracingCommon.ush
67 {
69 };
70
72 {
73 RayGen = 0,
74 Inline = 1
75 };
76}
77
79{
80public:
82 // Scene includes
89
90 // Ray tracing feedback buffer
92
93 // Nanite Ray Tracing
95
96 // Lighting structures
100
101 // Lumen
107
108 // Inline data
112
114 FLumenHardwareRayTracingShaderBase(const ShaderMetaType::CompiledShaderInitializerType& Initializer);
115
120 using FPermutationDomain = TShaderPermutationDomain<FBasePermutationDomain>; // The default that is used if derived classes don't define their own
121
123
125
127
129
130 static bool UseThreadGroupSize64(EShaderPlatform ShaderPlatform);
131};
132
133
134#define DECLARE_LUMEN_RAYTRACING_SHADER(ShaderClass) \
135 public: \
136 ShaderClass() = default; \
137 ShaderClass(const ShaderMetaType::CompiledShaderInitializerType & Initializer)\
138 : FLumenHardwareRayTracingShaderBase(Initializer) {}\
139 using TComputeShaderType = class ShaderClass##CS; \
140 using TRayGenShaderType = class ShaderClass##RGS;
141
142#define DECLARE_STOCHASTIC_LIGHTING_COMPUTE_RAYTRACING_SHADER(ShaderClass) \
143 DECLARE_GLOBAL_SHADER(ShaderClass##CS) \
144 SHADER_USE_PARAMETER_STRUCT(ShaderClass##CS, ShaderClass) \
145 static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters) \
146 { \
147 FPermutationDomain PermutationVector(Parameters.PermutationId); \
148 if (PermutationVector.Get<FLumenHardwareRayTracingShaderBase::FBasePermutationDomain>().Get<FUseThreadGroupSize64>() && !RHISupportsWaveSize64(Parameters.Platform)) \
149 { \
150 return false; \
151 } \
152 return ShaderClass::ShouldCompilePermutation(Parameters, Lumen::ERayTracingShaderDispatchType::Inline); \
153 }\
154 static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment)\
155 { \
156 FPermutationDomain PermutationVector(Parameters.PermutationId); \
157 const bool UseThreadGroupSize64 = PermutationVector.Get<FLumenHardwareRayTracingShaderBase::FBasePermutationDomain>().Get<FUseThreadGroupSize64>() ; \
158 FIntPoint Size = GetThreadGroupSizeInternal(Lumen::ERayTracingShaderDispatchType::Inline, UseThreadGroupSize64); \
159 OutEnvironment.SetDefine(TEXT("INLINE_RAY_TRACING_THREAD_GROUP_SIZE_X"), Size.X); \
160 OutEnvironment.SetDefine(TEXT("INLINE_RAY_TRACING_THREAD_GROUP_SIZE_Y"), Size.Y); \
161 const bool bUseTracingFeedback = PermutationVector.Get<FLumenHardwareRayTracingShaderBase::FBasePermutationDomain>().Get<FUseTracingFeedback>(); \
162 OutEnvironment.SetDefine(TEXT("ENABLE_TRACING_FEEDBACK"), bUseTracingFeedback); \
163 ShaderClass::ModifyCompilationEnvironment(Parameters, Lumen::ERayTracingShaderDispatchType::Inline, OutEnvironment); \
164 ModifyCompilationEnvironmentInternal(Lumen::ERayTracingShaderDispatchType::Inline, UseThreadGroupSize64, OutEnvironment); \
165 }\
166 static FPermutationDomain MakePermutationVector(ShaderClass::FPermutationDomain PermutationVector, const FViewInfo& View) \
167 { \
168 FLumenHardwareRayTracingShaderBase::FBasePermutationDomain Base; \
169 Base.Set<FUseThreadGroupSize64>(UseThreadGroupSize64(View.GetShaderPlatform())); \
170 Base.Set<FUseTracingFeedback>(View.bRayTracingFeedbackEnabled); \
171 Base.Set<FNaniteRayTracing>(Nanite::GetRayTracingMode() != Nanite::ERayTracingMode::Fallback); \
172 PermutationVector.Set<FLumenHardwareRayTracingShaderBase::FBasePermutationDomain>(Base); \
173 return PermutationVector; \
174 } \
175 static FIntPoint GetThreadGroupSize(EShaderPlatform ShaderPlatform) { return GetThreadGroupSizeInternal(Lumen::ERayTracingShaderDispatchType::Inline, UseThreadGroupSize64(ShaderPlatform)); } \
176 static ERayTracingPayloadType GetRayTracingPayloadType(const int32 PermutationId) { return static_cast<ERayTracingPayloadType>(0); }
177
178#define IMPLEMENT_LUMEN_COMPUTE_RAYTRACING_SHADER(ShaderClass) \
179 class ShaderClass##CS : public ShaderClass \
180 { \
181 DECLARE_STOCHASTIC_LIGHTING_COMPUTE_RAYTRACING_SHADER(ShaderClass) \
182 static void AddLumenRayTracingDispatchIndirect(FRDGBuilder& GraphBuilder, FRDGEventName&& EventName, const FViewInfo& View, ShaderClass::FPermutationDomain PermutationVector, \
183 ShaderClass::FParameters* PassParameters, FRDGBufferRef IndirectArgsBuffer, uint32 IndirectArgsOffset, ERDGPassFlags ComputePassFlags) \
184 { \
185 TShaderRef<ShaderClass##CS> ComputeShader = View.ShaderMap->GetShader<ShaderClass##CS>(MakePermutationVector(PermutationVector, View)); \
186 FComputeShaderUtils::AddPass(GraphBuilder, std::move(EventName), ComputePassFlags, ComputeShader, PassParameters, IndirectArgsBuffer, IndirectArgsOffset); \
187 } \
188 static void AddLumenRayTracingDispatch(FRDGBuilder& GraphBuilder, FRDGEventName&& EventName, const FViewInfo& View, ShaderClass::FPermutationDomain PermutationVector, \
189 ShaderClass::FParameters* PassParameters, FIntVector GroupCount, ERDGPassFlags ComputePassFlags) \
190 { \
191 TShaderRef<ShaderClass##CS> ComputeShader = View.ShaderMap->GetShader<ShaderClass##CS>(MakePermutationVector(PermutationVector, View)); \
192 FComputeShaderUtils::AddPass(GraphBuilder, std::move(EventName), ComputePassFlags, ComputeShader, PassParameters, GroupCount); \
193 } \
194 };
195
196#define IMPLEMENT_MEGALIGHT_COMPUTE_RAYTRACING_SHADER(ShaderClass) \
197 class ShaderClass##CS : public ShaderClass \
198 { \
199 DECLARE_STOCHASTIC_LIGHTING_COMPUTE_RAYTRACING_SHADER(ShaderClass) \
200 static void AddMegaLightRayTracingDispatchIndirect(FRDGBuilder& GraphBuilder, FRDGEventName&& EventName, const FViewInfo& View, ShaderClass::FPermutationDomain PermutationVector, \
201 ShaderClass::FParameters* PassParameters, FRDGBufferRef IndirectArgsBuffer, uint32 IndirectArgsOffset, ERDGPassFlags ComputePassFlags) \
202 { \
203 TShaderRef<ShaderClass##CS> ComputeShader = View.ShaderMap->GetShader<ShaderClass##CS>(MakePermutationVector(PermutationVector, View)); \
204 FComputeShaderUtils::AddPass(GraphBuilder, std::move(EventName), ComputePassFlags, ComputeShader, PassParameters, IndirectArgsBuffer, IndirectArgsOffset); \
205 } \
206 static void AddMegaLightRayTracingDispatch(FRDGBuilder& GraphBuilder, FRDGEventName&& EventName, const FViewInfo& View, ShaderClass::FPermutationDomain PermutationVector, \
207 ShaderClass::FParameters* PassParameters, FIntVector GroupCount, ERDGPassFlags ComputePassFlags) \
208 { \
209 TShaderRef<ShaderClass##CS> ComputeShader = View.ShaderMap->GetShader<ShaderClass##CS>(MakePermutationVector(PermutationVector, View)); \
210 FComputeShaderUtils::AddPass(GraphBuilder, std::move(EventName), ComputePassFlags, ComputeShader, PassParameters, GroupCount); \
211 } \
212 };
213
214// Pass helpers
215template<typename TShaderClass>
217 FRDGBuilder& GraphBuilder,
218 FRDGEventName&& PassName,
220 typename TShaderClass::FParameters* Parameters,
223 FIntPoint Resolution,
224 const FViewInfo& View,
225 bool bUseMinimalPayload,
226 ERDGPassFlags ComputePassFlags)
227{
229
230 GraphBuilder.AddPass(
231 Forward<FRDGEventName>(PassName),
232 Parameters,
233 ComputePassFlags,
234 [Parameters, SceneUniformBuffer, NaniteRayTracingUniformBuffer, &View, RayGenerationShader, bUseMinimalPayload, Resolution](FRDGAsyncTask, FRHICommandList& RHICmdList)
235 {
238
239 TOptional<FScopedUniformBufferStaticBindings> StaticUniformBufferScope = RayTracing::BindStaticUniformBufferBindings(View, SceneUniformBuffer->GetRHI(), NaniteRayTracingUniformBuffer->GetRHI(), RHICmdList);
240
241 FRayTracingPipelineState* Pipeline = View.MaterialRayTracingData.PipelineState;
242 FRHIShaderBindingTable* SBT = View.MaterialRayTracingData.ShaderBindingTable;
243
245 {
246 Pipeline = View.LumenRayTracingData.PipelineState;
247 SBT = View.LumenRayTracingData.ShaderBindingTable;
248 }
249
250 RHICmdList.RayTraceDispatch(Pipeline, RayGenerationShader.GetRayTracingShader(), SBT, GlobalResources,
251 Resolution.X, Resolution.Y);
252 }
253 );
254}
255
256template<typename TShaderClass>
258 FRDGBuilder& GraphBuilder,
259 FRDGEventName&& PassName,
261 typename TShaderClass::FParameters* Parameters,
264 FRDGBufferRef IndirectArgsBuffer,
265 uint32 IndirectArgsOffset,
266 const FViewInfo& View,
268 ERDGPassFlags ComputePassFlags
269 )
270{
271 ClearUnusedGraphResources(RayGenerationShader, Parameters, { IndirectArgsBuffer });
272
273 GraphBuilder.AddPass(
274 Forward<FRDGEventName>(PassName),
275 Parameters,
276 ComputePassFlags,
277 [Parameters, SceneUniformBuffer, NaniteRayTracingUniformBuffer, &View, RayGenerationShader, bUseMinimalPayload, IndirectArgsBuffer, IndirectArgsOffset](FRDGAsyncTask, FRHICommandList& RHICmdList)
278 {
279 IndirectArgsBuffer->MarkResourceAsUsed();
280
283
284 TOptional<FScopedUniformBufferStaticBindings> StaticUniformBufferScope = RayTracing::BindStaticUniformBufferBindings(View, SceneUniformBuffer->GetRHI(), NaniteRayTracingUniformBuffer->GetRHI(), RHICmdList);
285
286 FRayTracingPipelineState* Pipeline = View.MaterialRayTracingData.PipelineState;
287 FRHIShaderBindingTable* SBT = View.MaterialRayTracingData.ShaderBindingTable;
288
290 {
291 Pipeline = View.LumenRayTracingData.PipelineState;
292 SBT = View.LumenRayTracingData.ShaderBindingTable;
293 }
294
295 RHICmdList.RayTraceDispatchIndirect(Pipeline, RayGenerationShader.GetRayTracingShader(), SBT, GlobalResources,
296 IndirectArgsBuffer->GetIndirectRHICallBuffer(), IndirectArgsOffset);
297 }
298 );
299}
300
301#define DECLARE_STOCHASTIC_LIGHTING_RAYGEN_RAYTRACING_SHADER(ShaderClass) \
302 DECLARE_GLOBAL_SHADER(ShaderClass##RGS) \
303 SHADER_USE_ROOT_PARAMETER_STRUCT(ShaderClass##RGS, ShaderClass) \
304 static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters) \
305 { \
306 FPermutationDomain PermutationVector(Parameters.PermutationId); \
307 if (PermutationVector.Get<FLumenHardwareRayTracingShaderBase::FBasePermutationDomain>().Get<FUseThreadGroupSize64>()) \
308 { \
309 return false; /* Wave 64 is only relevant for CS */ \
310 } \
311 return ShaderClass::ShouldCompilePermutation(Parameters, Lumen::ERayTracingShaderDispatchType::RayGen); \
312 } \
313 static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment) \
314 { \
315 ShaderClass::ModifyCompilationEnvironment(Parameters, Lumen::ERayTracingShaderDispatchType::RayGen, OutEnvironment); \
316 ModifyCompilationEnvironmentInternal(Lumen::ERayTracingShaderDispatchType::RayGen, false, OutEnvironment); \
317 } \
318 static FIntPoint GetThreadGroupSize() { return GetThreadGroupSizeInternal(Lumen::ERayTracingShaderDispatchType::RayGen, false); } \
319 static const FShaderBindingLayout* GetShaderBindingLayout(const FShaderPermutationParameters& Parameters) \
320 { \
321 return RayTracing::GetShaderBindingLayout(Parameters.Platform); \
322 }
323
324#define IMPLEMENT_LUMEN_RAYGEN_RAYTRACING_SHADER(ShaderClass) \
325 class ShaderClass##RGS : public ShaderClass \
326 { \
327 DECLARE_STOCHASTIC_LIGHTING_RAYGEN_RAYTRACING_SHADER(ShaderClass) \
328 static void AddLumenRayTracingDispatchIndirect(FRDGBuilder& GraphBuilder, FRDGEventName&& EventName, const FViewInfo& View, ShaderClass::FPermutationDomain PermutationVector, \
329 ShaderClass::FParameters* PassParameters, FRDGBufferRef IndirectArgsBuffer, uint32 IndirectArgsOffset, bool bUseMinimalPayload, ERDGPassFlags ComputePassFlags) \
330 { \
331 TShaderRef<ShaderClass##RGS> RayGenerationShader = View.ShaderMap->GetShader<ShaderClass##RGS>(PermutationVector); \
332 AddStochasticLightingRayTraceDispatchIndirectPass(GraphBuilder, std::move(EventName), RayGenerationShader, PassParameters, PassParameters->SharedParameters.TracingParameters.Scene, PassParameters->SharedParameters.NaniteRayTracing, IndirectArgsBuffer, IndirectArgsOffset, View, bUseMinimalPayload, ComputePassFlags); \
333 } \
334 static void AddLumenRayTracingDispatch(FRDGBuilder& GraphBuilder, FRDGEventName&& EventName, const FViewInfo& View, ShaderClass::FPermutationDomain PermutationVector, \
335 ShaderClass::FParameters* PassParameters, FIntPoint DispatchResolution, bool bUseMinimalPayload, ERDGPassFlags ComputePassFlags) \
336 { \
337 TShaderRef<ShaderClass##RGS> RayGenerationShader = View.ShaderMap->GetShader<ShaderClass##RGS>(PermutationVector); \
338 AddStochasticLightingRayTraceDispatchPass(GraphBuilder, std::move(EventName), RayGenerationShader, PassParameters, PassParameters->SharedParameters.TracingParameters.Scene, PassParameters->SharedParameters.NaniteRayTracing, DispatchResolution, View, bUseMinimalPayload, ComputePassFlags); \
339 } \
340 };
341
342#define IMPLEMENT_MEGALIGHT_RAYGEN_RAYTRACING_SHADER(ShaderClass) \
343 class ShaderClass##RGS : public ShaderClass \
344 { \
345 DECLARE_STOCHASTIC_LIGHTING_RAYGEN_RAYTRACING_SHADER(ShaderClass) \
346 static void AddMegaLightRayTracingDispatchIndirect(FRDGBuilder& GraphBuilder, FRDGEventName&& EventName, const FViewInfo& View, ShaderClass::FPermutationDomain PermutationVector, \
347 ShaderClass::FParameters* PassParameters, FRDGBufferRef IndirectArgsBuffer, uint32 IndirectArgsOffset, bool bUseMinimalPayload, ERDGPassFlags ComputePassFlags) \
348 { \
349 TShaderRef<ShaderClass##RGS> RayGenerationShader = View.ShaderMap->GetShader<ShaderClass##RGS>(PermutationVector); \
350 AddStochasticLightingRayTraceDispatchIndirectPass(GraphBuilder, std::move(EventName), RayGenerationShader, PassParameters, PassParameters->MegaLightsParameters.Scene, PassParameters->NaniteRayTracing, IndirectArgsBuffer, IndirectArgsOffset, View, bUseMinimalPayload, ComputePassFlags); \
351 } \
352 static void AddMegaLightRayTracingDispatch(FRDGBuilder& GraphBuilder, FRDGEventName&& EventName, const FViewInfo& View, ShaderClass::FPermutationDomain PermutationVector, \
353 ShaderClass::FParameters* PassParameters, FIntPoint DispatchResolution, bool bUseMinimalPayload, ERDGPassFlags ComputePassFlags) \
354 { \
355 TShaderRef<ShaderClass##RGS> RayGenerationShader = View.ShaderMap->GetShader<ShaderClass##RGS>(PermutationVector); \
356 AddStochasticLightingRayTraceDispatchPass(GraphBuilder, std::move(EventName), RayGenerationShader, PassParameters, PassParameters->MegaLightsParameters.Scene, PassParameters->NaniteRayTracing, DispatchResolution, View, bUseMinimalPayload, ComputePassFlags); \
357 } \
358 };
359
360#define IMPLEMENT_LUMEN_RAYGEN_AND_COMPUTE_RAYTRACING_SHADERS(ShaderClass) \
361 IMPLEMENT_LUMEN_COMPUTE_RAYTRACING_SHADER(ShaderClass) \
362 IMPLEMENT_LUMEN_RAYGEN_RAYTRACING_SHADER(ShaderClass)
363
364#define IMPLEMENT_MEGALIGHT_RAYGEN_AND_COMPUTE_RAYTRACING_SHADERS(ShaderClass) \
365 IMPLEMENT_MEGALIGHT_COMPUTE_RAYTRACING_SHADER(ShaderClass) \
366 IMPLEMENT_MEGALIGHT_RAYGEN_RAYTRACING_SHADER(ShaderClass)
367
369{
370public:
373 SHADER_PARAMETER(int, TileSize)
377
379 FLumenHardwareRayTracingDeferredMaterialRGS(const ShaderMetaType::CompiledShaderInitializerType & Initializer)
381 {}
382
384 {
385 FLumenHardwareRayTracingShaderBase::ModifyCompilationEnvironment(Parameters, ShaderDispatchType, SurfaceCacheSampling, OutEnvironment);
386 }
387
388 static bool ShouldCompilePermutation(const FGlobalShaderPermutationParameters& Parameters, Lumen::ERayTracingShaderDispatchType ShaderDispatchType)
389 {
390 return DoesPlatformSupportLumenGI(Parameters.Platform)
391 && FLumenHardwareRayTracingShaderBase::ShouldCompilePermutation(Parameters, ShaderDispatchType);
392 }
393};
394
396 FRDGBuilder& GraphBuilder,
397 const FSceneTextureParameters& SceneTextures,
398 const FViewInfo& View,
400 FLumenHardwareRayTracingShaderBase::FSharedParameters* SharedParameters);
401
402#endif // RHI_RAYTRACING
403
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
EReflectionsMethod
Definition DeferredShadingRenderer.h:307
EDiffuseIndirectMethod
Definition DeferredShadingRenderer.h:291
EShaderPlatform
Definition RHIShaderPlatform.h:11
ERDGPassFlags
Definition RenderGraphDefinitions.h:128
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_BUFFER_UAV(ShaderType, MemberName)
Definition ShaderParameterMacros.h:1812
#define BEGIN_UNIFORM_BUFFER_STRUCT(StructTypeName, DllStorage)
Definition ShaderParameterMacros.h:1512
#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_STRUCT_INCLUDE(StructType, MemberName)
Definition ShaderParameterMacros.h:1895
#define END_UNIFORM_BUFFER_STRUCT()
Definition ShaderParameterMacros.h:1520
#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
void SetShaderParameters(FRHIBatchedShaderParameters &BatchedParameters, const FShaderParameterBindings &Bindings, const FShaderParametersMetadata *ParametersMetadata, const void *InParametersData)
Definition ShaderParameterStruct.cpp:883
#define SHADER_PERMUTATION_BOOL(InDefineName)
Definition ShaderPermutation.h:482
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition GlobalShader.h:269
Definition RenderGraphResources.h:1321
FRHIBuffer * GetIndirectRHICallBuffer() const
Definition RenderGraphResources.h:1338
Definition RenderGraphBuilder.h:49
FRDGPassRef AddPass(FRDGEventName &&Name, const ParameterStructType *ParameterStruct, ERDGPassFlags Flags, ExecuteLambdaType &&ExecuteLambda)
Definition RenderGraphEvent.h:38
virtual RENDERCORE_API void MarkResourceAsUsed()
The following methods may only be called during pass execution.
FRHIBatchedShaderParameters & GetScratchShaderParameters()
Definition RHICommandList.h:1190
Definition RHICommandList.h:3819
void RayTraceDispatchIndirect(FRayTracingPipelineState *Pipeline, FRHIRayTracingShader *RayGenShader, FRHIShaderBindingTable *SBT, const FRayTracingShaderBindings &GlobalResourceBindings, FRHIBuffer *ArgumentBuffer, uint32 ArgumentOffset)
Definition RHICommandList.h:3687
void RayTraceDispatch(FRayTracingPipelineState *Pipeline, FRHIRayTracingShader *RayGenShader, FRHIShaderBindingTable *SBT, const FRayTracingShaderBindings &GlobalResourceBindings, uint32 Width, uint32 Height)
Definition RHICommandList.h:3668
Definition RHIResources.h:3863
Definition PipelineStateCache.cpp:1285
Definition SceneRendering.h:1132
Definition ShaderParameterMacros.h:321
Definition Shader.h:1021
void ModifyCompilationEnvironment(EShaderPlatform Platform, FDecalBlendDesc DecalBlendDesc, EDecalRenderStage DecalRenderStage, FShaderCompilerEnvironment &OutEnvironment)
Definition DecalRenderingCommon.cpp:959
bool ShouldCompilePermutation(ELightmapQuality LightmapQuality, const FMeshMaterialShaderPermutationParameters &Parameters)
Definition LightMapRendering.cpp:48
Definition LumenHardwareRayTracingCommon.h:22
uint32 GetHitLightingShadowTranslucencyMode()
Definition LumenHardwareRayTracingCommon.cpp:289
EHitLightingMode GetHitLightingMode(const FViewInfo &View, EDiffuseIndirectMethod DiffuseIndirectMethod)
Definition LumenHardwareRayTracingCommon.cpp:247
void SetRayTracingSceneOptions(const FViewInfo &View, EDiffuseIndirectMethod DiffuseIndirectMethod, EReflectionsMethod ReflectionsMethod, RayTracing::FSceneOptions &SceneOptions)
Definition LumenHardwareRayTracingCommon.cpp:232
bool UseHitLightingDirectLighting()
Definition LumenHardwareRayTracingCommon.cpp:299
uint32 GetHitLightingShadowMode()
Definition LumenHardwareRayTracingCommon.cpp:284
bool IsInlineSupported()
Definition LumenHardwareRayTracingCommon.cpp:187
EAvoidSelfIntersectionsMode GetAvoidSelfIntersectionsMode()
Definition LumenHardwareRayTracingCommon.cpp:198
bool IsRayGenSupported()
Definition LumenHardwareRayTracingCommon.cpp:192
bool UseHitLightingSkylight(EDiffuseIndirectMethod DiffuseIndirectMethod)
Definition LumenHardwareRayTracingCommon.cpp:304
bool UseSurfaceCacheAlphaMasking()
Definition LumenHardwareRayTracingCommon.cpp:212
bool UseReflectionCapturesForHitLighting()
Definition LumenHardwareRayTracingCommon.cpp:315
float GetFarFieldBias()
Definition LumenHardwareRayTracingCommon.cpp:342
bool UseHitLightingForceOpaque()
Definition LumenHardwareRayTracingCommon.cpp:294
bool UseShaderExecutionReordering()
Definition LumenHardwareRayTracingCommon.cpp:336
EAvoidSelfIntersectionsMode
Definition LumenHardwareRayTracingCommon.h:24
EHitLightingMode
Definition LumenHardwareRayTracingCommon.h:33
Definition DeferredShadingRenderer.cpp:316
ESurfaceCacheSampling
Definition Lumen.h:122
Definition SceneManagement.h:73
@ RayGen
Definition VulkanCommon.h:44
Definition RenderUtils.cpp:2080
Definition GlobalShader.h:73
Definition RenderGraphDefinitions.h:103
Definition RHIShaderParameters.h:241
Definition ShaderCore.h:544
const EShaderPlatform Platform
Definition ShaderPermutation.h:29
Definition RayTracing.h:27
Definition Optional.h:131
Definition ShaderPermutation.h:229
Definition IntPoint.h:25
IntType Y
Definition IntPoint.h:37
IntType X
Definition IntPoint.h:34