UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MobileBasePassRendering.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 MobileBasePassRendering.h: base pass rendering definitions.
5=============================================================================*/
6
7#pragma once
8
9#include "CoreMinimal.h"
10#include "HAL/IConsoleManager.h"
11#include "RHI.h"
12#include "ShaderParameters.h"
13#include "Shader.h"
14#include "HitProxies.h"
15#include "RHIStaticStates.h"
16#include "SceneManagement.h"
17#include "PrimitiveSceneInfo.h"
19#include "LightMapRendering.h"
21#include "MeshMaterialShader.h"
22#include "FogRendering.h"
24#include "BasePassRendering.h"
26#include "RenderUtils.h"
29#include "DBufferTextures.h"
31#include "MobileSSR.h"
32
36
43
45 SHADER_PARAMETER(float, AmbientOcclusionStaticFraction)
50 SHADER_PARAMETER_STRUCT(FPlanarReflectionUniformParameters, PlanarReflection) // Single global planar reflection for the forward pass.
60 SHADER_PARAMETER_RDG_TEXTURE(Texture2D, AmbientOcclusionTexture)
62 SHADER_PARAMETER_RDG_TEXTURE(Texture2D, ScreenSpaceShadowMaskTexture)
76
83
85 FRDGBuilder& GraphBuilder,
86 const FViewInfo& View,
87 EMobileBasePass BasePass,
91 bool bForRealtimeSkyCapture = false,
92 bool bIsRenderingDeferredBasepass = false);
93
95 FRDGBuilder& GraphBuilder,
96 const FViewInfo& View,
97 EMobileBasePass BasePass,
100 bool bForRealtimeSkyCapture = false,
101 bool bIsRenderingDeferredBasepass = false);
102
104 const FScene& Scene,
105 const FViewInfo& View,
107 int32 ChannelIdx,
108 bool bDynamicShadows,
110
112 const FScene* Scene,
113 class FSkyLightSceneProxy* SkyLight,
115
116
117
119class FScene;
120
122
130
133bool MaterialRequiresColorTransmittanceBlending(const FMaterial& MaterialResource);
136
137// shared defines for mobile base pass VS and PS
139
140template<typename LightMapPolicyType>
142{
143public:
148
149 typename LightMapPolicyType::ElementDataType LightMapPolicyElementData;
150
151 const bool bCanReceiveCSM;
152};
153
158template<typename LightMapPolicyType>
159class TMobileBasePassVSPolicyParamType : public FMeshMaterialShader, public LightMapPolicyType::VertexParametersType
160{
161 DECLARE_INLINE_TYPE_LAYOUT_EXPLICIT_BASES(TMobileBasePassVSPolicyParamType, NonVirtual, FMeshMaterialShader, typename LightMapPolicyType::VertexParametersType);
162protected:
163
167 {
168 LightMapPolicyType::VertexParametersType::Bind(Initializer.ParameterMap);
169 PassUniformBuffer.Bind(Initializer.ParameterMap, FMobileBasePassUniformParameters::FTypeInfo::GetStructMetadata()->GetShaderVariableName());
170 }
171
172public:
173
174 // static bool ShouldCompilePermutation(EShaderPlatform Platform,const FMaterial* Material,const FVertexFactoryType* VertexFactoryType)
175
180
182 const FScene* Scene,
183 const FStaticFeatureLevel FeatureLevel,
184 const FPrimitiveSceneProxy* PrimitiveSceneProxy,
185 const FMaterialRenderProxy& MaterialRenderProxy,
186 const FMaterial& Material,
188 FMeshDrawSingleShaderBindings& ShaderBindings) const
189 {
190 FMeshMaterialShader::GetShaderBindings(Scene, FeatureLevel, PrimitiveSceneProxy, MaterialRenderProxy, Material, ShaderElementData, ShaderBindings);
191
192 LightMapPolicyType::GetVertexShaderBindings(
193 PrimitiveSceneProxy,
194 ShaderElementData.LightMapPolicyElementData,
195 this,
196 ShaderBindings);
197 }
198};
199
200template<typename LightMapPolicyType>
202{
205protected:
206
209
210public:
211
213 {
214 return IsMobilePlatform(Parameters.Platform) && LightMapPolicyType::ShouldCompilePermutation(Parameters);
215 }
216
218 {
219 LightMapPolicyType::ModifyCompilationEnvironment(Parameters, OutEnvironment);
221 }
222};
223
224template< typename LightMapPolicyType >
249
254template<typename LightMapPolicyType>
255class TMobileBasePassPSPolicyParamType : public FMeshMaterialShader, public LightMapPolicyType::PixelParametersType
256{
257 DECLARE_INLINE_TYPE_LAYOUT_EXPLICIT_BASES(TMobileBasePassPSPolicyParamType, NonVirtual, FMeshMaterialShader, typename LightMapPolicyType::PixelParametersType);
258public:
259
261 {
262 return IsMobilePlatform(Parameters.Platform);
263 }
264
266 {
268 // Modify compilation environment depending upon material shader quality level settings.
269 ModifyCompilationEnvironmentForQualityLevel(Parameters.Platform, Parameters.MaterialParameters.QualityLevel, OutEnvironment);
270 }
271
275 {
276 LightMapPolicyType::PixelParametersType::Bind(Initializer.ParameterMap);
277 PassUniformBuffer.Bind(Initializer.ParameterMap, FMobileBasePassUniformParameters::FTypeInfo::GetStructMetadata()->GetShaderVariableName());
278
279 MobileDirectionLightBufferParam.Bind(Initializer.ParameterMap, FMobileDirectionalLightShaderParameters::FTypeInfo::GetStructMetadata()->GetShaderVariableName());
280 ReflectionParameter.Bind(Initializer.ParameterMap, FMobileReflectionCaptureShaderParameters::FTypeInfo::GetStructMetadata()->GetShaderVariableName());
281
282 UseCSMParameter.Bind(Initializer.ParameterMap, TEXT("UseCSM"));
283 }
284
286
287private:
291
292public:
294 const FScene* Scene,
295 const FStaticFeatureLevel FeatureLevel,
296 const FPrimitiveSceneProxy* PrimitiveSceneProxy,
297 const FMaterialRenderProxy& MaterialRenderProxy,
298 const FMaterial& Material,
300 FMeshDrawSingleShaderBindings& ShaderBindings) const;
301
302private:
303 static bool ModifyCompilationEnvironmentForQualityLevel(EShaderPlatform Platform, EMaterialQualityLevel::Type QualityLevel, FShaderCompilerEnvironment& OutEnvironment);
304};
305
306template<typename LightMapPolicyType>
308{
311public:
313 {
314 return LightMapPolicyType::ShouldCompilePermutation(Parameters)
315 && Super::ShouldCompilePermutation(Parameters);
316 }
317
319 {
320 LightMapPolicyType::ModifyCompilationEnvironment(Parameters, OutEnvironment);
322 }
323
327};
328
330
332{
334 const FScene* Scene,
335 const FMeshBatch& MeshBatch,
336 const FPrimitiveSceneProxy* PrimitiveSceneProxy,
337 bool bPrimReceivesCSM,
339 bool bIsLitMaterial,
340 bool bIsTranslucent);
341
342 FMobileLightMapPolicyTypeList GetUniformLightMapPolicyTypeForPSOCollection(bool bLitMaterial, bool bTranslucent/*not used*/, bool bUsesDeferredShading, bool bCanReceiveCSM, bool bMovable);
343
344 bool GetShaders(
345 ELightMapPolicyType LightMapPolicyType,
347 const FMaterial& MaterialResource,
348 const FVertexFactoryType* VertexFactoryType,
351
352 const FLightSceneInfo* GetDirectionalLightInfo(const FScene* Scene, const FPrimitiveSceneProxy* PrimitiveSceneProxy);
353
354 bool StaticCanReceiveCSM(const FLightSceneInfo* LightSceneInfo, const FPrimitiveSceneProxy* PrimitiveSceneProxy);
355
356 void SetOpaqueRenderState(FMeshPassProcessorRenderState& DrawRenderState, const FPrimitiveSceneProxy* PrimitiveSceneProxy, const FMaterial& Material, FMaterialShadingModelField ShadingModels, bool bEnableReceiveDecalOutput, bool bUsesDeferredShading);
358};
359
360template< typename LightMapPolicyType, EMobileLocalLightSetting LocalLightSetting, EMobileTranslucentColorTransmittanceMode TranslucentColorTransmittanceFallback = EMobileTranslucentColorTransmittanceMode::DEFAULT>
361class TMobileBasePassPS : public TMobileBasePassPSBaseType<LightMapPolicyType>
362{
364public:
365
367 {
368 // We compile the point light shader combinations based on the project settings
369 const bool bIsLit = Parameters.MaterialParameters.ShadingModels.IsLit();
371 const bool bIsTranslucent = IsTranslucentBlendMode(Parameters.MaterialParameters);
373 const bool bMaterialUsesForwardShading = bIsLit && (bIsTranslucent || bIsSLW);
374 // Translucent materials always support clustered shading on mobile deferred
376
377 EMobileLocalLightSetting SupportedLocalLightsType = EMobileLocalLightSetting::LOCAL_LIGHTS_DISABLED;
378 if (bForwardShading && bIsLit)
379 {
381 }
382 // Deferred shading does not need SkyLight and LocalLight permutations
383 // TODO: skip skylight permutations for deferred
384 bool bEnableLocalLights = LocalLightSetting != EMobileLocalLightSetting::LOCAL_LIGHTS_DISABLED;
386
390 }
391
393 {
395
397 const bool bEnableClusteredReflections = MobileForwardEnableClusteredReflections(Parameters.Platform);
402 const bool bIsLit = Parameters.MaterialParameters.ShadingModels.IsLit();
404 // Translucent materials always support clustered shading on mobile deferred
406
408 // Only non-static skylights contribute into forward basepass
411 OutEnvironment.SetDefine(TEXT("ENABLE_AMBIENT_OCCLUSION"), bForwardShading && IsMobileAmbientOcclusionEnabled(Parameters.Platform) ? 1u : 0u);
412
414 OutEnvironment.SetDefine(TEXT("ENABLE_CLUSTERED_LIGHTS"), (LocalLightSetting == EMobileLocalLightSetting::LOCAL_LIGHTS_ENABLED) ? 1u : 0u);
415
416 // Translucent materials don't write to depth so cannot use prepass
418 if (LocalLightSetting == EMobileLocalLightSetting::LOCAL_LIGHTS_BUFFER)
419 {
421 {
423 }
425 {
427 }
428 }
429 OutEnvironment.SetDefine(TEXT("MERGED_LOCAL_LIGHTS_MOBILE"), MergedLocalLights);
430 OutEnvironment.SetDefine(TEXT("ENABLE_CLUSTERED_REFLECTION"), bEnableClusteredReflections ? 1u : 0u);
431 OutEnvironment.SetDefine(TEXT("ENABLE_SHADOWMASKTEXTURE"), bMobileUsesShadowMaskTexture && !bTranslucentOrSLWMaterial ? 1u : 0u);
432 OutEnvironment.SetDefine(TEXT("ENABLE_DBUFFER_TEXTURES"), Parameters.MaterialParameters.MaterialDomain == MD_Surface ? 1u : 0u);
435 {
437 }
438 OutEnvironment.SetDefine(TEXT("MOBILE_TRANSLUCENT_COLOR_TRANSMITTANCE_DUAL_SRC_BLENDING"), TranslucentColorTransmittanceMode == EMobileTranslucentColorTransmittanceMode::DUAL_SRC_BLENDING ? 1u : 0u);
439 OutEnvironment.SetDefine(TEXT("MOBILE_TRANSLUCENT_COLOR_TRANSMITTANCE_PROGRAMMABLE_BLENDING"), TranslucentColorTransmittanceMode == EMobileTranslucentColorTransmittanceMode::PROGRAMMABLE_BLENDING ? 1u : 0u);
440 OutEnvironment.SetDefine(TEXT("MOBILE_TRANSLUCENT_COLOR_TRANSMITTANCE_SINGLE_SRC_BLENDING"), TranslucentColorTransmittanceMode == EMobileTranslucentColorTransmittanceMode::SINGLE_SRC_BLENDING ? 1u : 0u);
441 OutEnvironment.SetDefine(TEXT("MOBILE_SSR_ENABLED"), ((!bDeferredShadingEnabled && AreMobileScreenSpaceReflectionsEnabled(Parameters.Platform)) || (bIsSLW && MobileSupportsSM5MaterialNodes(Parameters.Platform))) ? 1u : 0u);
442
444 OutEnvironment.SetDefine(TEXT("MOBILE_SHADING_PATH_SUPPORT_CAPSULE_LIGHT"), bSupportCapsule ? 1u : 0u);
445 }
446
451
454};
455
456class FMobileBasePassMeshProcessor : public FSceneRenderingAllocatorObject<FMobileBasePassMeshProcessor>, public FMeshPassProcessor
457{
458public:
459 enum class EFlags
460 {
461 None = 0,
462
463 // Informs the processor whether a depth-stencil target is bound when processed draw commands are issued.
464 CanUseDepthStencil = (1 << 0),
465
466 // Informs the processor whether primitives can receive shadows from cascade shadow maps.
467 CanReceiveCSM = (1 << 1),
468
469 // Informs the processor to use PassDrawRenderState for all mesh commands
470 ForcePassDrawRenderState = (1 << 2),
471
472 // Informs the processor to not cache any mesh commands
473 DoNotCache = (1 << 3)
474 };
475
478 const FScene* InScene,
482 EFlags Flags,
484
485 virtual void AddMeshBatch(const FMeshBatch& RESTRICT MeshBatch, uint64 BatchElementMask, const FPrimitiveSceneProxy* RESTRICT PrimitiveSceneProxy, int32 StaticMeshId = -1) override final;
486
489
491 const FPSOPrecacheVertexFactoryData& VertexFactoryData,
492 const FMeshPassProcessorRenderState& RESTRICT DrawRenderState,
494 const FMaterial& RESTRICT MaterialResource,
496 const ELightMapPolicyType LightMapPolicyType,
497 ERasterizerFillMode MeshFillMode,
498 ERasterizerCullMode MeshCullMode,
499 EPrimitiveType PrimitiveType,
501
502private:
503 FMaterialShadingModelField FilterShadingModelsMask(const FMaterialShadingModelField& ShadingModels) const;
504 bool ShouldDraw(const class FMaterial& Material) const;
505
506 bool TryAddMeshBatch(const FMeshBatch& RESTRICT MeshBatch, uint64 BatchElementMask, const FPrimitiveSceneProxy* RESTRICT PrimitiveSceneProxy, int32 StaticMeshId, const FMaterialRenderProxy& MaterialRenderProxy, const FMaterial& Material);
507
508 bool Process(
512 const FPrimitiveSceneProxy* RESTRICT PrimitiveSceneProxy,
513 const FMaterialRenderProxy& RESTRICT MaterialRenderProxy,
514 const FMaterial& RESTRICT MaterialResource,
515 const bool bIsMasked,
516 const bool bIsTranslucent,
517 FMaterialShadingModelField ShadingModels,
518 const ELightMapPolicyType LightMapPolicyType,
519 const bool bCanReceiveCSM,
520 const FUniformLightMapPolicy::ElementDataType& RESTRICT LightMapElementData);
521
522 const ETranslucencyPass::Type TranslucencyPassType;
523 const EFlags Flags;
524 const bool bTranslucentBasePass;
525 // Whether renderer uses deferred shading
526 const bool bDeferredShading;
527 // Whether this pass uses deferred shading
528 const bool bPassUsesDeferredShading;
529 EDepthDrawingMode EarlyZPassMode;
530};
531
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
#define RESTRICT
Definition Platform.h:706
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
bool IsMobilePlatform(const FStaticShaderPlatform Platform)
Definition DataDrivenShaderPlatformInfo.h:928
EDepthDrawingMode
Definition DepthRendering.h:21
EMobileLocalLightSetting
Definition EngineTypes.h:673
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
ELightMapPolicyType
Definition LightMapRendering.h:302
ENGINE_API bool IsTranslucentBlendMode(EBlendMode BlendMode)
#define LAYOUT_FIELD(T, Name,...)
Definition MemoryLayout.h:471
#define DECLARE_INLINE_TYPE_LAYOUT_EXPLICIT_BASES(T, Interface,...)
Definition MemoryLayout.h:562
#define DECLARE_INLINE_TYPE_LAYOUT(T, Interface)
Definition MemoryLayout.h:558
EMobileBasePass
Definition MobileBasePassRendering.h:78
TArray< ELightMapPolicyType, TInlineAllocator< 4 > > FMobileLightMapPolicyTypeList
Definition MobileBasePassRendering.h:329
bool ShouldCacheShaderForColorTransmittanceFallback(const FMaterialShaderPermutationParameters &Parameters, EMobileTranslucentColorTransmittanceMode TranslucentColorTransmittanceFallback)
Definition MobileBasePassRendering.cpp:190
EMobileTranslucentColorTransmittanceMode MobileActiveTranslucentColorTransmittanceMode(EShaderPlatform Platform, bool bExplicitDefaultMode)
Definition MobileBasePassRendering.cpp:123
EMobileLocalLightSetting GetMobileForwardLocalLightSetting(EShaderPlatform ShaderPlatform)
Definition MobileBasePass.cpp:50
void SetupMobileDirectionalLightUniformParameters(const FScene &Scene, const FViewInfo &View, const TArray< FVisibleLightInfo, SceneRenderingAllocator > &VisibleLightInfos, int32 ChannelIdx, bool bDynamicShadows, FMobileDirectionalLightShaderParameters &Parameters)
Definition MobileBasePassRendering.cpp:422
bool MaterialRequiresColorTransmittanceBlending(const FMaterial &MaterialResource)
Definition MobileBasePassRendering.cpp:180
void SetupMobileSkyReflectionUniformParameters(const FScene *Scene, class FSkyLightSceneProxy *SkyLight, FMobileReflectionCaptureShaderParameters &Parameters)
Definition MobileBasePassRendering.cpp:493
bool MobileLocalLightsBufferEnabled(const FStaticShaderPlatform Platform)
Definition MobileBasePass.cpp:22
TRDGUniformBufferRef< FMobileBasePassUniformParameters > CreateMobileBasePassUniformBuffer(FRDGBuilder &GraphBuilder, const FViewInfo &View, EMobileBasePass BasePass, EMobileSceneTextureSetupMode SetupMode, const FMobileBasePassTextures &MobileBasePassTextures={}, bool bForRealtimeSkyCapture=false, bool bIsRenderingDeferredBasepass=false)
Definition MobileBasePassRendering.cpp:407
EMobileTranslucentColorTransmittanceMode
Definition MobileBasePassRendering.h:124
EMobileTranslucentColorTransmittanceMode MobileDefaultTranslucentColorTransmittanceMode(EShaderPlatform Platform)
Definition MobileBasePassRendering.cpp:99
void SetupMobileBasePassUniformParameters(FRDGBuilder &GraphBuilder, const FViewInfo &View, EMobileBasePass BasePass, EMobileSceneTextureSetupMode SetupMode, FMobileBasePassUniformParameters &BasePassParameters, const FMobileBasePassTextures &MobileBasePassTextures={}, bool bForRealtimeSkyCapture=false, bool bIsRenderingDeferredBasepass=false)
Definition MobileBasePassRendering.cpp:263
void MobileBasePassModifyCompilationEnvironment(const FMaterialShaderPermutationParameters &Parameters, FShaderCompilerEnvironment &OutEnvironment)
Definition MobileBasePassRendering.cpp:206
bool MobileMergeLocalLightsInPrepassEnabled(const FStaticShaderPlatform Platform)
Definition MobileBasePass.cpp:27
bool MobileMergeLocalLightsInBasepassEnabled(const FStaticShaderPlatform Platform)
Definition MobileBasePass.cpp:32
ERasterizerCullMode
Definition RHIDefinitions.h:369
ERasterizerFillMode
Definition RHIDefinitions.h:358
EPrimitiveType
Definition RHIDefinitions.h:822
EShaderPlatform
Definition RHIShaderPlatform.h:11
RENDERCORE_API bool AreMobileScreenSpaceReflectionsEnabled(const FStaticShaderPlatform Platform)
Definition RenderUtils.cpp:552
RENDERCORE_API bool IsMobileAmbientOcclusionEnabled(const FStaticShaderPlatform Platform)
Definition RenderUtils.cpp:545
RENDERCORE_API bool MobileSupportsSM5MaterialNodes(const FStaticShaderPlatform Platform)
Definition RenderUtils.cpp:644
RENDERCORE_API bool MobileForwardEnableClusteredReflections(const FStaticShaderPlatform Platform)
Definition RenderUtils.cpp:580
RENDERCORE_API bool MobileUsesShadowMaskTexture(const FStaticShaderPlatform Platform)
Definition RenderUtils.cpp:586
bool IsMobileDeferredShadingEnabled(const FStaticShaderPlatform Platform)
Definition RenderUtils.h:275
bool IsStaticLightingAllowed()
Definition RenderUtils.h:602
EMobileSceneTextureSetupMode
Definition SceneRenderTargetParameters.h:72
#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_TEXTURE(ShaderType, MemberName)
Definition ShaderParameterMacros.h:1708
#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 SHADER_PARAMETER_RDG_TEXTURE_UAV(ShaderType, MemberName)
Definition ShaderParameterMacros.h:1788
#define BEGIN_GLOBAL_SHADER_PARAMETER_STRUCT
Definition ShaderParameterMacros.h:1663
#define SHADER_PARAMETER_STRUCT_INCLUDE(StructType, MemberName)
Definition ShaderParameterMacros.h:1895
#define SHADER_PARAMETER_STRUCT(StructType, MemberName)
Definition ShaderParameterMacros.h:1847
#define SHADER_PARAMETER(MemberType, MemberName)
Definition ShaderParameterMacros.h:1684
#define DECLARE_SHADER_TYPE(ShaderClass, ShaderMetaTypeShortcut,...)
Definition Shader.h:1688
uint32_t uint32
Definition binka_ue_file_header.h:6
static void ModifyCompilationEnvironment(EShaderPlatform Platform, FShaderCompilerEnvironment &OutEnvironment)
Definition BasePassRendering.h:184
Definition LightSceneInfo.h:208
Definition MaterialRenderProxy.h:102
Definition MaterialShared.h:2058
Definition MeshDrawShaderBindings.h:104
Definition MeshMaterialShader.h:22
Definition MeshMaterialShader.h:68
RENDERER_API void GetShaderBindings(const FScene *Scene, ERHIFeatureLevel::Type FeatureLevel, const FPrimitiveSceneProxy *PrimitiveSceneProxy, const FMaterialRenderProxy &MaterialRenderProxy, const FMaterial &Material, const FMeshMaterialShaderElementData &ShaderElementData, FMeshDrawSingleShaderBindings &ShaderBindings) const
Definition ShaderBaseClasses.cpp:457
Definition MeshPassProcessor.h:1670
Definition MeshPassProcessor.h:2199
Definition MobileBasePassRendering.h:457
virtual void AddMeshBatch(const FMeshBatch &RESTRICT MeshBatch, uint64 BatchElementMask, const FPrimitiveSceneProxy *RESTRICT PrimitiveSceneProxy, int32 StaticMeshId=-1) override final
Definition MobileBasePass.cpp:811
void CollectPSOInitializersForLMPolicy(const FPSOPrecacheVertexFactoryData &VertexFactoryData, const FMeshPassProcessorRenderState &RESTRICT DrawRenderState, const FGraphicsPipelineRenderTargetsInfo &RESTRICT RenderTargetsInfo, const FMaterial &RESTRICT MaterialResource, EMobileLocalLightSetting LocalLightSetting, const ELightMapPolicyType LightMapPolicyType, ERasterizerFillMode MeshFillMode, ERasterizerCullMode MeshCullMode, EPrimitiveType PrimitiveType, TArray< FPSOPrecacheData > &PSOInitializers)
Definition MobileBasePass.cpp:939
virtual void CollectPSOInitializers(const FSceneTexturesConfig &SceneTexturesConfig, const FMaterial &Material, const FPSOPrecacheVertexFactoryData &VertexFactoryData, const FPSOPrecacheParams &PreCacheParams, TArray< FPSOPrecacheData > &PSOInitializers) override
Definition MobileBasePass.cpp:1009
EFlags
Definition MobileBasePassRendering.h:460
FMeshPassProcessorRenderState PassDrawRenderState
Definition MobileBasePassRendering.h:487
Definition PlanarReflectionSceneProxy.h:88
Definition PrimitiveSceneProxy.h:296
Definition RenderGraphBuilder.h:49
Definition RenderGraphResources.h:571
Definition SceneView.h:1425
Definition ScenePrivate.h:2875
Definition ShaderParameters.h:56
Definition ShaderParameters.h:109
static void ModifyCompilationEnvironment(const FShaderPermutationParameters &, FShaderCompilerEnvironment &)
Definition Shader.h:854
Definition SkyLightSceneProxy.h:17
Definition LightMapRendering.h:346
Definition VertexFactory.h:314
Definition SceneRendering.h:1132
Definition Array.h:670
Definition ConcurrentLinearAllocator.h:571
Definition MobileBasePassRendering.h:308
TMobileBasePassPSBaseType(const FMeshMaterialShaderType::CompiledShaderInitializerType &Initializer)
Definition MobileBasePassRendering.h:325
static bool ShouldCompilePermutation(const FMeshMaterialShaderPermutationParameters &Parameters)
Definition MobileBasePassRendering.h:312
TMobileBasePassPSBaseType()
Definition MobileBasePassRendering.h:326
static void ModifyCompilationEnvironment(const FMaterialShaderPermutationParameters &Parameters, FShaderCompilerEnvironment &OutEnvironment)
Definition MobileBasePassRendering.h:318
Definition MobileBasePassRendering.h:256
TMobileBasePassPSPolicyParamType()
Definition MobileBasePassRendering.h:285
static bool ShouldCompilePermutation(const FMeshMaterialShaderPermutationParameters &Parameters)
Definition MobileBasePassRendering.h:260
void GetShaderBindings(const FScene *Scene, const FStaticFeatureLevel FeatureLevel, const FPrimitiveSceneProxy *PrimitiveSceneProxy, const FMaterialRenderProxy &MaterialRenderProxy, const FMaterial &Material, const TMobileBasePassShaderElementData< LightMapPolicyType > &ShaderElementData, FMeshDrawSingleShaderBindings &ShaderBindings) const
static void ModifyCompilationEnvironment(const FMaterialShaderPermutationParameters &Parameters, FShaderCompilerEnvironment &OutEnvironment)
Definition MobileBasePassRendering.h:265
TMobileBasePassPSPolicyParamType(const FMeshMaterialShaderType::CompiledShaderInitializerType &Initializer)
Definition MobileBasePassRendering.h:273
Definition MobileBasePassRendering.h:362
static bool ShouldCompilePermutation(const FMeshMaterialShaderPermutationParameters &Parameters)
Definition MobileBasePassRendering.h:366
TMobileBasePassPS()
Definition MobileBasePassRendering.h:453
static void ModifyCompilationEnvironment(const FMaterialShaderPermutationParameters &Parameters, FShaderCompilerEnvironment &OutEnvironment)
Definition MobileBasePassRendering.h:392
TMobileBasePassPS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition MobileBasePassRendering.h:448
Definition MobileBasePassRendering.h:142
const bool bCanReceiveCSM
Definition MobileBasePassRendering.h:151
LightMapPolicyType::ElementDataType LightMapPolicyElementData
Definition MobileBasePassRendering.h:149
TMobileBasePassShaderElementData(const typename LightMapPolicyType::ElementDataType &InLightMapPolicyElementData, bool bInCanReceiveCSM)
Definition MobileBasePassRendering.h:144
Definition MobileBasePassRendering.h:202
TMobileBasePassVSBaseType(const FMeshMaterialShaderType::CompiledShaderInitializerType &Initializer)
Definition MobileBasePassRendering.h:208
TMobileBasePassVSBaseType()
Definition MobileBasePassRendering.h:207
static bool ShouldCompilePermutation(const FMeshMaterialShaderPermutationParameters &Parameters)
Definition MobileBasePassRendering.h:212
static void ModifyCompilationEnvironment(const FMaterialShaderPermutationParameters &Parameters, FShaderCompilerEnvironment &OutEnvironment)
Definition MobileBasePassRendering.h:217
Definition MobileBasePassRendering.h:160
static void ModifyCompilationEnvironment(const FMaterialShaderPermutationParameters &Parameters, FShaderCompilerEnvironment &OutEnvironment)
Definition MobileBasePassRendering.h:176
TMobileBasePassVSPolicyParamType()
Definition MobileBasePassRendering.h:164
void GetShaderBindings(const FScene *Scene, const FStaticFeatureLevel FeatureLevel, const FPrimitiveSceneProxy *PrimitiveSceneProxy, const FMaterialRenderProxy &MaterialRenderProxy, const FMaterial &Material, const TMobileBasePassShaderElementData< LightMapPolicyType > &ShaderElementData, FMeshDrawSingleShaderBindings &ShaderBindings) const
Definition MobileBasePassRendering.h:181
TMobileBasePassVSPolicyParamType(const FMeshMaterialShaderType::CompiledShaderInitializerType &Initializer)
Definition MobileBasePassRendering.h:165
Definition MobileBasePassRendering.h:226
TMobileBasePassVS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition MobileBasePassRendering.h:242
static bool ShouldCompilePermutation(const FMeshMaterialShaderPermutationParameters &Parameters)
Definition MobileBasePassRendering.h:230
static void ModifyCompilationEnvironment(const FMaterialShaderPermutationParameters &Parameters, FShaderCompilerEnvironment &OutEnvironment)
Definition MobileBasePassRendering.h:235
TMobileBasePassVS()
Definition MobileBasePassRendering.h:247
Definition RenderGraphResources.h:251
Definition Shader.h:1021
Type
Definition SceneTypes.h:132
Type
Definition MeshPassProcessor.h:38
Definition TranslucentPassResource.h:11
Type
Definition TranslucentPassResource.h:13
@ TPT_MAX
Definition TranslucentPassResource.h:22
Definition MobileBasePassRendering.h:332
FMobileLightMapPolicyTypeList GetUniformLightMapPolicyTypeForPSOCollection(bool bLitMaterial, bool bTranslucent, bool bUsesDeferredShading, bool bCanReceiveCSM, bool bMovable)
Definition MobileBasePass.cpp:401
ELightMapPolicyType SelectMeshLightmapPolicy(const FScene *Scene, const FMeshBatch &MeshBatch, const FPrimitiveSceneProxy *PrimitiveSceneProxy, bool bPrimReceivesCSM, bool bUsedDeferredShading, bool bIsLitMaterial, bool bIsTranslucent)
Definition MobileBasePass.cpp:299
bool StaticCanReceiveCSM(const FLightSceneInfo *LightSceneInfo, const FPrimitiveSceneProxy *PrimitiveSceneProxy)
Definition MobileBasePass.cpp:286
void SetOpaqueRenderState(FMeshPassProcessorRenderState &DrawRenderState, const FPrimitiveSceneProxy *PrimitiveSceneProxy, const FMaterial &Material, FMaterialShadingModelField ShadingModels, bool bEnableReceiveDecalOutput, bool bUsesDeferredShading)
Definition MobileBasePass.cpp:472
bool GetShaders(ELightMapPolicyType LightMapPolicyType, EMobileLocalLightSetting LocalLightSetting, const FMaterial &MaterialResource, const FVertexFactoryType *VertexFactoryType, TShaderRef< TMobileBasePassVSPolicyParamType< FUniformLightMapPolicy > > &VertexShader, TShaderRef< TMobileBasePassPSPolicyParamType< FUniformLightMapPolicy > > &PixelShader)
Definition MobileBasePass.cpp:203
void SetTranslucentRenderState(FMeshPassProcessorRenderState &DrawRenderState, const FMaterial &Material, FMaterialShadingModelField ShadingModels)
Definition MobileBasePass.cpp:536
const FLightSceneInfo * GetDirectionalLightInfo(const FScene *Scene, const FPrimitiveSceneProxy *PrimitiveSceneProxy)
Definition MobileBasePass.cpp:275
Definition RenderUtils.cpp:2080
Definition DBufferTextures.h:35
Definition RHIResources.h:4547
EMaterialQualityLevel::Type QualityLevel
Definition MaterialShared.h:1082
EMaterialDomain MaterialDomain
Definition MaterialShared.h:1064
FMaterialShadingModelField ShadingModels
Definition MaterialShared.h:1065
Definition MaterialShared.h:1181
Definition MaterialShader.h:45
FMaterialShaderParameters MaterialParameters
Definition MaterialShader.h:46
Definition EngineTypes.h:732
bool HasShadingModel(EMaterialShadingModel InShadingModel) const
Definition EngineTypes.h:756
bool IsLit() const
Definition EngineTypes.h:759
Definition MeshBatch.h:371
Definition MeshMaterialShader.h:33
Definition MeshMaterialShaderType.h:29
Definition MeshPassProcessor.h:2118
Definition MobileBasePassRendering.h:38
FRDGTextureRef AmbientOcclusionTexture
Definition MobileBasePassRendering.h:41
FDBufferTextures DBufferTextures
Definition MobileBasePassRendering.h:39
FRDGTextureRef ScreenSpaceShadowMaskTexture
Definition MobileBasePassRendering.h:40
Definition PSOPrecache.h:226
Definition PSOPrecache.h:30
Definition PSOPrecache.h:150
static bool EnableStationarySkylight()
Definition ReadOnlyCVARCache.h:40
Definition SceneTexturesConfig.h:114
Definition ShaderCore.h:544
const EShaderPlatform Platform
Definition ShaderPermutation.h:29
Definition AndroidStaticFeatureLevel.inl:12
Definition AndroidStaticShaderPlatform.inl:18