UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
VolumetricCloudRendering.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 VolumetricCloudRendering.h
5=============================================================================*/
6
7#pragma once
8
9#include "CoreMinimal.h"
10#include "EngineDefines.h"
11#include "RendererInterface.h"
12#include "RenderResource.h"
13#include "VolumeLighting.h"
14
15
16class FScene;
17class FViewInfo;
18class FLightSceneInfo;
22
23struct FEngineShowFlags;
24
25
26
28 SHADER_PARAMETER(FLinearColor, GroundAlbedo)
30 SHADER_PARAMETER(float, PlanetRadiusKm)
31 SHADER_PARAMETER(float, BottomRadiusKm)
32 SHADER_PARAMETER(float, TopRadiusKm)
33 SHADER_PARAMETER(float, TracingStartDistanceFromCamera)
34 SHADER_PARAMETER(float, TracingStartMaxDistance)
35 SHADER_PARAMETER(int32, TracingMaxDistanceMode)
36 SHADER_PARAMETER(float, TracingMaxDistance)
43 SHADER_PARAMETER(float, StopTracingTransmittanceThreshold)
46 SHADER_PARAMETER_ARRAY(FVector4f, CloudShadowmapFarDepthKm, [2]) // SHADER_PARAMETER_ARRAY of float is always a vector behind the scene and we must comply with SPIRV-Cross alignment requirement so using an array Float4 for now for easy indexing from code.
57 SHADER_PARAMETER_ARRAY(FVector4f, CloudShadowmapLightAnchorPos, [2]) // Snapped position on the planet the shadow map rotate around
66
70
78
80
81bool LightMayCastCloudShadow(const FScene* Scene, const FViewInfo& View, const FLightSceneInfo* LightSceneInfo);
82
85{
86public:
87
89 explicit FVolumetricCloudRenderSceneInfo(FVolumetricCloudSceneProxy& VolumetricCloudSceneProxy);
91
92 FVolumetricCloudSceneProxy& GetVolumetricCloudSceneProxy() const { return VolumetricCloudSceneProxy; }
93
94 FVolumetricCloudCommonShaderParameters& GetVolumetricCloudCommonShaderParameters() { return VolumetricCloudCommonShaderParameters; }
95 const FVolumetricCloudCommonShaderParameters& GetVolumetricCloudCommonShaderParameters() const { return VolumetricCloudCommonShaderParameters; }
96
99
100private:
101
102 FVolumetricCloudSceneProxy& VolumetricCloudSceneProxy;
103
104 FVolumetricCloudCommonShaderParameters VolumetricCloudCommonShaderParameters;
105 TUniformBufferRef<FVolumetricCloudCommonGlobalShaderParameters> VolumetricCloudCommonShaderParametersUB;
106};
107
108
109bool ShouldRenderVolumetricCloud(const FScene* Scene, const FEngineShowFlags& EngineShowFlags);
111
112bool ShouldViewVisualizeVolumetricCloudConservativeDensity(const FViewInfo& ViewInfo, const FEngineShowFlags& EngineShowFlags);
113bool VolumetricCloudWantsToSampleLocalLights(const FScene* Scene, const FEngineShowFlags& EngineShowFlags);
118
120
121// Structure with data necessary to specify a cloud render.
123{
125 // Per scene parameters
126
129
132
134 // Per view parameters
135
139
142
147 bool bIsReflectionRendering; // Reflection capture and real time sky capture
148 bool bIsSkyRealTimeReflectionRendering; // Real time sky capture only
151
155
159
162
164
175
177
179
180 void CreateDefaultTexturesIfNeeded(FRDGBuilder& GraphBuilder);
181
182private:
183};
184
190
192
200
201void GetCloudShadowAOData(const FVolumetricCloudRenderSceneInfo* CloudInfo, const FViewInfo& View, FRDGBuilder& GraphBuilder, FCloudShadowAOData& OutData);
202
203
@ INDEX_NONE
Definition CoreMiscDefines.h:150
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define SHADER_PARAMETER_RDG_TEXTURE(ShaderType, MemberName)
Definition ShaderParameterMacros.h:1752
#define END_GLOBAL_SHADER_PARAMETER_STRUCT
Definition ShaderParameterMacros.h:1669
#define SHADER_PARAMETER_ARRAY(MemberType, MemberName, ArrayDecl)
Definition ShaderParameterMacros.h:1696
#define SHADER_PARAMETER_SAMPLER(ShaderType, MemberName)
Definition ShaderParameterMacros.h:1740
#define BEGIN_SHADER_PARAMETER_STRUCT(StructTypeName, DllStorage)
Definition ShaderParameterMacros.h:1482
#define BEGIN_GLOBAL_SHADER_PARAMETER_STRUCT
Definition ShaderParameterMacros.h:1663
#define SHADER_PARAMETER_STRUCT_INCLUDE(StructType, MemberName)
Definition ShaderParameterMacros.h:1895
#define END_SHADER_PARAMETER_STRUCT()
Definition ShaderParameterMacros.h:1485
#define SHADER_PARAMETER(MemberType, MemberName)
Definition ShaderParameterMacros.h:1684
bool ShouldVolumetricCloudsApplyFogDuringReconstruction(const FViewInfo &ViewInfo)
Definition VolumetricCloudRendering.cpp:379
bool SetupLightCloudTransmittanceParameters(FRDGBuilder &GraphBuilder, const FScene *Scene, const FViewInfo &View, const FLightSceneInfo *LightSceneInfo, FLightCloudTransmittanceParameters &OutParameters)
Definition VolumetricCloudRendering.cpp:3173
void GetCloudShadowAOData(const FVolumetricCloudRenderSceneInfo *CloudInfo, const FViewInfo &View, FRDGBuilder &GraphBuilder, FCloudShadowAOData &OutData)
Definition VolumetricCloudRendering.cpp:533
bool LightMayCastCloudShadow(const FScene *Scene, const FViewInfo &View, const FLightSceneInfo *LightSceneInfo)
Definition VolumetricCloudRendering.cpp:3221
bool VolumetricCloudWantsToSampleLocalLights(const FScene *Scene, const FEngineShowFlags &EngineShowFlags)
Definition VolumetricCloudRendering.cpp:336
bool ShouldVolumetricCloudTraceWithMinMaxDepth(const FViewInfo &ViewInfo)
Definition VolumetricCloudRendering.cpp:346
bool ShouldViewVisualizeVolumetricCloudConservativeDensity(const FViewInfo &ViewInfo, const FEngineShowFlags &EngineShowFlags)
Definition VolumetricCloudRendering.cpp:328
bool ShouldRenderVolumetricCloud(const FScene *Scene, const FEngineShowFlags &EngineShowFlags)
Definition VolumetricCloudRendering.cpp:299
bool ShouldRenderVolumetricCloudWithBlueNoise_GameThread(const FScene *Scene, const FSceneView &View)
Definition VolumetricCloudRendering.cpp:321
FVolumetricCloudShadowAOParameters GetCloudShadowAOParameters(FRDGBuilder &GraphBuilder, const FViewInfo &View, const FVolumetricCloudRenderSceneInfo *CloudInfo)
Definition VolumetricCloudRendering.cpp:513
bool VolumetricCloudWantsSeparatedAtmosphereMieRayLeigh(const FScene *Scene)
Definition VolumetricCloudRendering.cpp:368
uint32 GetVolumetricCloudDebugViewMode(const FEngineShowFlags &ShowFlags)
Definition VolumetricCloudRendering.cpp:689
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition LightSceneInfo.h:208
Definition LightSceneProxy.h:43
Definition MaterialRenderProxy.h:102
Definition RenderGraphBuilder.h:49
Definition RenderGraphResources.h:905
Definition RenderGraphResources.h:571
Definition SceneView.h:1425
Definition ScenePrivate.h:2875
Definition SceneRendering.h:1132
Definition VolumetricCloudRendering.h:85
const FVolumetricCloudCommonShaderParameters & GetVolumetricCloudCommonShaderParameters() const
Definition VolumetricCloudRendering.h:95
TUniformBufferRef< FVolumetricCloudCommonGlobalShaderParameters > & GetVolumetricCloudCommonShaderParametersUB()
Definition VolumetricCloudRendering.h:97
FVolumetricCloudCommonShaderParameters & GetVolumetricCloudCommonShaderParameters()
Definition VolumetricCloudRendering.h:94
FVolumetricCloudSceneProxy & GetVolumetricCloudSceneProxy() const
Definition VolumetricCloudRendering.h:92
const TUniformBufferRef< FVolumetricCloudCommonGlobalShaderParameters > & GetVolumetricCloudCommonShaderParametersUB() const
Definition VolumetricCloudRendering.h:98
Definition VolumetricCloudProxy.h:21
Definition Array.h:670
Definition ShaderParameterMacros.h:136
Definition VolumetricCloudRendering.h:123
FRDGTextureRef DefaultCloudDepthTexture
Definition VolumetricCloudRendering.h:168
FRDGTextureRef SecondaryCloudTracingDataTexture
Definition VolumetricCloudRendering.h:140
bool bIsSkyRealTimeReflectionRendering
Definition VolumetricCloudRendering.h:148
FMaterialRenderProxy * CloudVolumeMaterialProxy
Definition VolumetricCloudRendering.h:128
FCloudRenderContext()
Definition VolumetricCloudRendering.cpp:2230
FRDGTextureUAVRef DefaultCloudColorCubeTextureUAV
Definition VolumetricCloudRendering.h:170
FRDGTextureRef SceneDepthZ
Definition VolumetricCloudRendering.h:130
bool bCloudDebugViewModeEnabled
Definition VolumetricCloudRendering.h:153
bool bSkipAerialPerspective
Definition VolumetricCloudRendering.h:145
bool bIsReflectionRendering
Definition VolumetricCloudRendering.h:147
FRDGTextureRef DefaultCloudAlphaHoldout
Definition VolumetricCloudRendering.h:169
FRenderTargetBindingSlots RenderTargets
Definition VolumetricCloudRendering.h:138
bool bSecondAtmosphereLightEnabled
Definition VolumetricCloudRendering.h:150
bool bDisableCloudBlending
Definition VolumetricCloudRendering.h:143
FRDGTextureRef SceneDepthMinAndMax
Definition VolumetricCloudRendering.h:131
bool bSkipHeightFog
Definition VolumetricCloudRendering.h:146
FRDGTextureRef DefaultCloudColorCubeTexture
Definition VolumetricCloudRendering.h:165
int VirtualShadowMapId0
Definition VolumetricCloudRendering.h:163
bool bSkipAtmosphericLightShadowmap
Definition VolumetricCloudRendering.h:149
FRDGTextureUAVRef DefaultCloudColor02DTextureUAV
Definition VolumetricCloudRendering.h:171
FRDGTextureRef DefaultCloudColor12DTexture
Definition VolumetricCloudRendering.h:167
FUintVector4 TracingCoordToFullResPixelCoordScaleBias
Definition VolumetricCloudRendering.h:157
FRDGTextureUAVRef DefaultCloudColor12DTextureUAV
Definition VolumetricCloudRendering.h:172
uint32 NoiseFrameIndexModPattern
Definition VolumetricCloudRendering.h:158
FRDGTextureUAVRef DefaultCloudAlphaHoldoutUAV
Definition VolumetricCloudRendering.h:174
void CreateDefaultTexturesIfNeeded(FRDGBuilder &GraphBuilder)
Definition VolumetricCloudRendering.cpp:2255
FRDGTextureUAVRef ComputeOverlapCloudColorCubeTextureUAVWithoutBarrier
Definition VolumetricCloudRendering.h:176
FRDGTextureRef DefaultCloudColor02DTexture
Definition VolumetricCloudRendering.h:166
FRDGTextureUAVRef DefaultCloudDepthTextureUAV
Definition VolumetricCloudRendering.h:173
FViewInfo * MainView
Definition VolumetricCloudRendering.h:136
FVolumetricCloudRenderSceneInfo * CloudInfo
Definition VolumetricCloudRendering.h:127
FVolumeShadowingShaderParametersGlobal0 LightShadowShaderParams0
Definition VolumetricCloudRendering.h:160
bool bAccumulateAlphaHoldOut
Definition VolumetricCloudRendering.h:154
FUintVector4 TracingCoordToZbufferCoordScaleBias
Definition VolumetricCloudRendering.h:156
bool bShouldViewRenderVolumetricRenderTarget
Definition VolumetricCloudRendering.h:144
TUniformBufferRef< FViewUniformShaderParameters > ViewUniformBuffer
Definition VolumetricCloudRendering.h:137
FRDGTextureRef CloudAlphaHoldoutTexture
Definition VolumetricCloudRendering.h:141
bool bAsyncCompute
Definition VolumetricCloudRendering.h:152
FRDGTextureRef VolumetricCloudShadowTexture[2]
Definition VolumetricCloudRendering.h:161
Definition VolumetricCloudRendering.h:194
bool bShouldSampleCloudSkyAO
Definition VolumetricCloudRendering.h:196
bool bShouldSampleCloudShadow
Definition VolumetricCloudRendering.h:195
FRDGTextureRef VolumetricCloudSkyAO
Definition VolumetricCloudRendering.h:198
Definition ShowFlags.h:56
Definition Color.h:48
Definition ShaderParameterMacros.h:770