UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
LightMapDensityRendering.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 LightMapDensityRendering.h: Definitions for rendering lightmap density.
5=============================================================================*/
6
7#pragma once
8
9#include "CoreMinimal.h"
10#include "EngineGlobals.h"
11#include "RHI.h"
13#include "HitProxies.h"
14#include "ShaderParameters.h"
15#include "RHIStaticStates.h"
16#include "Shader.h"
17#include "UnrealEngine.h"
19#include "MeshMaterialShader.h"
20#include "ShaderBaseClasses.h"
21#include "SceneRendering.h"
23
24template<typename LightMapPolicyType>
38
42template<typename LightMapPolicyType>
43class TLightMapDensityVS : public FMeshMaterialShader, public LightMapPolicyType::VertexParametersType
44{
45 DECLARE_SHADER_TYPE_EXPLICIT_BASES(TLightMapDensityVS,MeshMaterial, FMeshMaterialShader, typename LightMapPolicyType::VertexParametersType);
46
47public:
48
50 {
51 return AllowDebugViewmodes(Parameters.Platform)
54 && LightMapPolicyType::ShouldCompilePermutation(Parameters)
56 }
57
59 {
61 LightMapPolicyType::ModifyCompilationEnvironment(Parameters, OutEnvironment);
62 }
63
67 {
68 LightMapPolicyType::VertexParametersType::Bind(Initializer.ParameterMap);
69 }
71
73 const FScene* Scene,
74 ERHIFeatureLevel::Type FeatureLevel,
75 const FPrimitiveSceneProxy* PrimitiveSceneProxy,
76 const FMaterialRenderProxy& MaterialRenderProxy,
77 const FMaterial& Material,
79 FMeshDrawSingleShaderBindings& ShaderBindings) const
80 {
81 FMeshMaterialShader::GetShaderBindings(Scene, FeatureLevel, PrimitiveSceneProxy, MaterialRenderProxy, Material, ShaderElementData, ShaderBindings);
82
83 LightMapPolicyType::GetVertexShaderBindings(
84 PrimitiveSceneProxy,
85 ShaderElementData.LightMapPolicyElementData,
86 this,
87 ShaderBindings);
88 }
89};
90
95template<typename LightMapPolicyType>
96class TLightMapDensityPS : public FMeshMaterialShader, public LightMapPolicyType::PixelParametersType
97{
98 DECLARE_SHADER_TYPE_EXPLICIT_BASES(TLightMapDensityPS,MeshMaterial, FMeshMaterialShader, typename LightMapPolicyType::PixelParametersType);
99
100public:
102 {
103 return AllowDebugViewmodes(Parameters.Platform)
106 && LightMapPolicyType::ShouldCompilePermutation(Parameters)
108 }
109
111 {
113 LightMapPolicyType::ModifyCompilationEnvironment(Parameters, OutEnvironment);
114 }
115
119 {
120 LightMapPolicyType::PixelParametersType::Bind(Initializer.ParameterMap);
121 BuiltLightingAndSelectedFlags.Bind(Initializer.ParameterMap,TEXT("BuiltLightingAndSelectedFlags"));
122 LightMapResolutionScale.Bind(Initializer.ParameterMap,TEXT("LightMapResolutionScale"));
123 LightMapDensityDisplayOptions.Bind(Initializer.ParameterMap,TEXT("LightMapDensityDisplayOptions"));
124 }
126
128 const FScene* Scene,
129 ERHIFeatureLevel::Type FeatureLevel,
130 const FPrimitiveSceneProxy* PrimitiveSceneProxy,
131 const FMaterialRenderProxy& MaterialRenderProxy,
132 const FMaterial& Material,
134 FMeshDrawSingleShaderBindings& ShaderBindings) const
135 {
136 FMeshMaterialShader::GetShaderBindings(Scene, FeatureLevel, PrimitiveSceneProxy, MaterialRenderProxy, Material, ShaderElementData, ShaderBindings);
137
138 LightMapPolicyType::GetPixelShaderBindings(
139 PrimitiveSceneProxy,
140 ShaderElementData.LightMapPolicyElementData,
141 this,
142 ShaderBindings);
143
144 ShaderBindings.Add(BuiltLightingAndSelectedFlags, ShaderElementData.BuiltLightingAndSelectedFlags);
145 ShaderBindings.Add(LightMapResolutionScale, ShaderElementData.LightMapResolutionScale);
146
150 (ShaderElementData.bTextureMapped == true) ? 1.0f : 0.0f,
151 (ShaderElementData.bTextureMapped == false) ? 1.0f : 0.0f
152 );
154 }
155
156private:
157 LAYOUT_FIELD(FShaderParameter, BuiltLightingAndSelectedFlags);
158 LAYOUT_FIELD(FShaderParameter, LightMapResolutionScale);
160};
161
162
163class FLightmapDensityMeshProcessor : public FSceneRenderingAllocatorObject<FLightmapDensityMeshProcessor>, public FMeshPassProcessor
164{
165public:
166
168
169 virtual void AddMeshBatch(const FMeshBatch& RESTRICT MeshBatch, uint64 BatchElementMask, const FPrimitiveSceneProxy* RESTRICT PrimitiveSceneProxy, int32 StaticMeshId = -1) override final;
170
171
172private:
173
174 bool TryAddMeshBatch(
177 const FPrimitiveSceneProxy* RESTRICT PrimitiveSceneProxy,
179 const FMaterialRenderProxy& MaterialRenderProxy,
180 const FMaterial& Material);
181
182 template<typename LightMapPolicyType>
183 bool Process(
184 const FMeshBatch& MeshBatch,
186 const FPrimitiveSceneProxy* RESTRICT PrimitiveSceneProxy,
188 const FMaterialRenderProxy& RESTRICT MaterialRenderProxy,
189 const FMaterial& RESTRICT MaterialResource,
190 const LightMapPolicyType& RESTRICT LightMapPolicy,
191 const typename LightMapPolicyType::ElementDataType& RESTRICT LightMapElementData,
192 ERasterizerFillMode MeshFillMode,
193 ERasterizerCullMode MeshCullMode);
194
195 FMeshPassProcessorRenderState PassDrawRenderState;
196};
197
199 FRDGBuilder& GraphBuilder,
201 const FRenderTargetBindingSlots& RenderTargets);
ENGINE_API class UEngine * GEngine
Definition UnrealEngine.cpp:427
#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 IsFeatureLevelSupported(const FStaticShaderPlatform InShaderPlatform, ERHIFeatureLevel::Type InFeatureLevel)
Definition DataDrivenShaderPlatformInfo.h:1047
void RenderLightMapDensities(FRDGBuilder &GraphBuilder, TArrayView< const FViewInfo > Views, const FRenderTargetBindingSlots &RenderTargets)
Definition LightMapDensityRendering.cpp:81
#define LAYOUT_FIELD(T, Name,...)
Definition MemoryLayout.h:471
ERasterizerCullMode
Definition RHIDefinitions.h:369
ERasterizerFillMode
Definition RHIDefinitions.h:358
bool IsStaticLightingAllowed()
Definition RenderUtils.h:602
bool AllowDebugViewmodes()
Definition ShaderCore.cpp:578
#define DECLARE_SHADER_TYPE_EXPLICIT_BASES(ShaderClass, ShaderMetaTypeShortcut,...)
Definition Shader.h:1691
Definition LightMapDensityRendering.h:164
virtual void AddMeshBatch(const FMeshBatch &RESTRICT MeshBatch, uint64 BatchElementMask, const FPrimitiveSceneProxy *RESTRICT PrimitiveSceneProxy, int32 StaticMeshId=-1) override final
Definition LightMapDensityRendering.cpp:371
Definition MaterialRenderProxy.h:102
Definition MaterialShared.h:2058
Definition MeshDrawShaderBindings.h:104
void Add(const TShaderUniformBufferParameter< UniformBufferStructType > &Parameter, const TUniformBufferRef< UniformBufferStructType > &Value)
Definition MeshDrawShaderBindings.h:114
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
const FScene *RESTRICT Scene
Definition MeshPassProcessor.h:2203
ERHIFeatureLevel::Type FeatureLevel
Definition MeshPassProcessor.h:2204
Definition PrimitiveSceneProxy.h:296
Definition RenderGraphBuilder.h:49
Definition SceneView.h:1425
Definition ScenePrivate.h:2875
Definition ShaderParameters.h:56
static void ModifyCompilationEnvironment(const FShaderPermutationParameters &, FShaderCompilerEnvironment &)
Definition Shader.h:854
Definition ArrayView.h:139
Definition ConcurrentLinearAllocator.h:571
Definition LightMapDensityRendering.h:26
LightMapPolicyType::ElementDataType LightMapPolicyElementData
Definition LightMapDensityRendering.h:32
TLightMapDensityElementData(const typename LightMapPolicyType::ElementDataType &InLightMapPolicyElementData)
Definition LightMapDensityRendering.h:28
FVector2f LightMapResolutionScale
Definition LightMapDensityRendering.h:35
bool bTextureMapped
Definition LightMapDensityRendering.h:36
FVector3f BuiltLightingAndSelectedFlags
Definition LightMapDensityRendering.h:34
Definition LightMapDensityRendering.h:97
static void ModifyCompilationEnvironment(const FMaterialShaderPermutationParameters &Parameters, FShaderCompilerEnvironment &OutEnvironment)
Definition LightMapDensityRendering.h:110
TLightMapDensityPS(const FMeshMaterialShaderType::CompiledShaderInitializerType &Initializer)
Definition LightMapDensityRendering.h:117
void GetShaderBindings(const FScene *Scene, ERHIFeatureLevel::Type FeatureLevel, const FPrimitiveSceneProxy *PrimitiveSceneProxy, const FMaterialRenderProxy &MaterialRenderProxy, const FMaterial &Material, const TLightMapDensityElementData< LightMapPolicyType > &ShaderElementData, FMeshDrawSingleShaderBindings &ShaderBindings) const
Definition LightMapDensityRendering.h:127
static bool ShouldCompilePermutation(const FMeshMaterialShaderPermutationParameters &Parameters)
Definition LightMapDensityRendering.h:101
TLightMapDensityPS()
Definition LightMapDensityRendering.h:125
Definition LightMapDensityRendering.h:44
TLightMapDensityVS()
Definition LightMapDensityRendering.h:70
static bool ShouldCompilePermutation(const FMeshMaterialShaderPermutationParameters &Parameters)
Definition LightMapDensityRendering.h:49
void GetShaderBindings(const FScene *Scene, ERHIFeatureLevel::Type FeatureLevel, const FPrimitiveSceneProxy *PrimitiveSceneProxy, const FMaterialRenderProxy &MaterialRenderProxy, const FMaterial &Material, const TLightMapDensityElementData< LightMapPolicyType > &ShaderElementData, FMeshDrawSingleShaderBindings &ShaderBindings) const
Definition LightMapDensityRendering.h:72
TLightMapDensityVS(const FMeshMaterialShaderType::CompiledShaderInitializerType &Initializer)
Definition LightMapDensityRendering.h:65
static void ModifyCompilationEnvironment(const FMaterialShaderPermutationParameters &Parameters, FShaderCompilerEnvironment &OutEnvironment)
Definition LightMapDensityRendering.h:58
uint32 bRenderLightMapDensityGrayscale
Definition Engine.h:1337
float RenderLightMapDensityColorScale
Definition Engine.h:1345
float RenderLightMapDensityGrayscaleScale
Definition Engine.h:1341
Type
Definition RHIFeatureLevel.h:20
@ SM5
Definition RHIFeatureLevel.h:42
uint64 bIsMasked
Definition MaterialShared.h:1096
uint64 bIsSpecialEngineMaterial
Definition MaterialShared.h:1095
uint64 bMaterialMayModifyMeshPosition
Definition MaterialShared.h:1118
Definition MaterialShader.h:45
FMaterialShaderParameters MaterialParameters
Definition MaterialShader.h:46
Definition MeshBatch.h:371
Definition MeshMaterialShader.h:33
Definition MeshMaterialShaderType.h:29
Definition MeshPassProcessor.h:2118
Definition ShaderParameterMacros.h:770
Definition ShaderCore.h:544
const EShaderPlatform Platform
Definition ShaderPermutation.h:29