140template<
typename LightMapPolicyType>
158template<
typename LightMapPolicyType>
168 LightMapPolicyType::VertexParametersType::Bind(
Initializer.ParameterMap);
169 PassUniformBuffer.Bind(
Initializer.ParameterMap, FMobileBasePassUniformParameters::FTypeInfo::GetStructMetadata()->GetShaderVariableName());
192 LightMapPolicyType::GetVertexShaderBindings(
200template<
typename LightMapPolicyType>
219 LightMapPolicyType::ModifyCompilationEnvironment(Parameters,
OutEnvironment);
224template<
typename LightMapPolicyType >
254template<
typename LightMapPolicyType>
276 LightMapPolicyType::PixelParametersType::Bind(
Initializer.ParameterMap);
277 PassUniformBuffer.Bind(
Initializer.ParameterMap, FMobileBasePassUniformParameters::FTypeInfo::GetStructMetadata()->GetShaderVariableName());
280 ReflectionParameter.Bind(
Initializer.ParameterMap, FMobileReflectionCaptureShaderParameters::FTypeInfo::GetStructMetadata()->GetShaderVariableName());
306template<
typename LightMapPolicyType>
314 return LightMapPolicyType::ShouldCompilePermutation(Parameters)
320 LightMapPolicyType::ModifyCompilationEnvironment(Parameters,
OutEnvironment);
340 bool bIsTranslucent);
360template<
typename LightMapPolicyType, EMobileLocalLightSetting LocalLightSetting, EMobileTranslucentColorTransmittanceMode TranslucentColorTransmittanceFallback = EMobileTranslucentColorTransmittanceMode::DEFAULT>
430 OutEnvironment.SetDefine(
TEXT(
"ENABLE_CLUSTERED_REFLECTION"), bEnableClusteredReflections ? 1u : 0u);
515 const
bool bIsMasked,
516 const
bool bIsTranslucent,
519 const
bool bCanReceiveCSM,
524 const
bool bTranslucentBasePass;
526 const
bool bDeferredShading;
528 const
bool bPassUsesDeferredShading;
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
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
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
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
@ ForcePassDrawRenderState
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
static void ModifyCompilationEnvironment(const FShaderPermutationParameters &, FShaderCompilerEnvironment &)
Definition Shader.h:854
Definition SkyLightSceneProxy.h:17
Definition VertexFactory.h:314
Definition SceneRendering.h:1132
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
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