UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
LocalFogVolumeRendering.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "EngineDefines.h"
6#include "RenderGraph.h"
7#include "RenderResource.h"
9#include "SceneView.h"
10#include "Containers/Array.h"
11
12class FScene;
13class FViewInfo;
15
16
17
18/*=============================================================================
19 Local height fog rendering GPU data
20=============================================================================*/
21
25 SHADER_PARAMETER(uint32, LocalFogVolumeInstanceCount)
31 SHADER_PARAMETER(FVector3f, DirectionalLightColor)
34
39
40/*=============================================================================
41 Local height fog rendering common data
42=============================================================================*/
43
45{
46public:
47
48 uint32 Data0[4];
49 uint32 Data1[4];
50 uint32 Data2[4];
51
53 {
54 union { uint32 U; float F; } FU = { Data0[3] };
55 return FU.F;
56 }
57};
58
60{
61public:
62 union
63 {
65
66 struct
67 {
68 uint64 Index : 16; // Index of the volume
69 uint64 Distance : 32; // then by distance
70 uint64 Priority : 16; // First order by priority
72 };
73
75 {
76 return PackedData != B.PackedData;
77 }
78
80 {
81 return PackedData > B.PackedData;
82 }
83};
84
85// This can be generated once for a scene and then shared between all the views to generate the GPU buffer data needed for rendering while accounting for sorting.
94
125
126
127/*=============================================================================
128 Local height fog rendering functions
129=============================================================================*/
130
134bool ShouldRenderLocalFogVolumeInVolumetricFog(const FScene* Scene, const FSceneViewFamily& SceneViewFamily, bool bShouldRenderVolumetricFog);
138
140
143void SetDummyLocalFogVolumeForView(FRDGBuilder& GraphBuilder, FViewInfo& View);
145
147 const FScene* Scene,
148 TArray<FViewInfo>& Views,
150 FRDGBuilder& GraphBuilder,
151 bool bShouldRenderVolumetricFog,
152 bool bUseHalfResLocalFogVolume);
153
155 const FScene* Scene,
156 TArray<FViewInfo>& Views,
158 FRDGBuilder& GraphBuilder,
159 const FMinimalSceneTextures& SceneTextures,
161 bool bVisualizationPass = false);
162
164 FRHICommandList& RHICmdList,
165 const FViewInfo& View);
167 FRDGBuilder& GraphBuilder,
168 const FViewInfo& View);
169
171 const FScene* Scene,
172 TArray<FViewInfo>& Views,
174 FRDGBuilder& GraphBuilder,
175 const FMinimalSceneTextures& SceneTextures);
176
#define FORCEINLINE
Definition AndroidPlatform.h:140
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
void SetDummyLocalFogVolumeUniformParametersStruct(FRDGBuilder &GraphBuilder, FLocalFogVolumeUniformParameters &UniformParametersStruct)
Definition LocalFogVolumeRendering.cpp:168
void RenderLocalFogVolumeVisualization(const FScene *Scene, TArray< FViewInfo > &Views, const FSceneViewFamily &SceneViewFamily, FRDGBuilder &GraphBuilder, const FMinimalSceneTextures &SceneTextures)
Definition LocalFogVolumeRendering.cpp:910
bool ProjectSupportsLocalFogVolumes()
Definition LocalFogVolumeRendering.cpp:110
bool ShouldRenderLocalFogVolumeDuringHeightFogPass(const FScene *Scene, const FSceneViewFamily &SceneViewFamily)
Definition LocalFogVolumeRendering.cpp:125
void SetDummyLocalFogVolumeForViews(FRDGBuilder &GraphBuilder, TArray< FViewInfo > &Views)
Definition LocalFogVolumeRendering.cpp:238
void InitLocalFogVolumesForViews(const FScene *Scene, TArray< FViewInfo > &Views, const FSceneViewFamily &SceneViewFamily, FRDGBuilder &GraphBuilder, bool bShouldRenderVolumetricFog, bool bUseHalfResLocalFogVolume)
Definition LocalFogVolumeRendering.cpp:663
bool ShouldRenderLocalFogVolume(const FScene *Scene, const FSceneViewFamily &SceneViewFamily)
Definition LocalFogVolumeRendering.cpp:115
bool ShouldRenderLocalFogVolumeVisualizationPass(const FScene *Scene, const FSceneViewFamily &SceneViewFamily)
Definition LocalFogVolumeRendering.cpp:143
bool ShouldRenderLocalFogVolumeInVolumetricFog(const FScene *Scene, const FSceneViewFamily &SceneViewFamily, bool bShouldRenderVolumetricFog)
Definition LocalFogVolumeRendering.cpp:134
void RenderLocalFogVolumeHalfResMobile(FRDGBuilder &GraphBuilder, const FViewInfo &View)
Definition LocalFogVolumeRendering.cpp:1101
void SetDummyLocalFogVolumeForView(FRDGBuilder &GraphBuilder, FViewInfo &View)
Definition LocalFogVolumeRendering.cpp:188
float GetLocalFogVolumeGlobalStartDistance()
Definition LocalFogVolumeRendering.cpp:153
bool IsLocalFogVolumeHalfResolution()
Definition LocalFogVolumeRendering.cpp:158
void RenderLocalFogVolumeMobile(FRHICommandList &RHICmdList, const FViewInfo &View)
Definition LocalFogVolumeRendering.cpp:1034
void RenderLocalFogVolume(const FScene *Scene, TArray< FViewInfo > &Views, const FSceneViewFamily &SceneViewFamily, FRDGBuilder &GraphBuilder, const FMinimalSceneTextures &SceneTextures, FRDGTextureRef LightShaftOcclusionTexture, bool bVisualizationPass=false)
Definition LocalFogVolumeRendering.cpp:816
void GetLocalFogVolumeViewSortingData(const FScene *Scene, const FViewInfo &View, FRDGBuilder &GraphBuilder, FLocalFogVolumeSortingData &Out)
Definition LocalFogVolumeRendering.cpp:400
#define SHADER_PARAMETER_RDG_BUFFER_SRV(ShaderType, MemberName)
Definition ShaderParameterMacros.h:1800
#define BEGIN_SHADER_PARAMETER_STRUCT(StructTypeName, DllStorage)
Definition ShaderParameterMacros.h:1482
#define SHADER_PARAMETER_STRUCT_INCLUDE(StructType, MemberName)
Definition ShaderParameterMacros.h:1895
#define END_SHADER_PARAMETER_STRUCT()
Definition ShaderParameterMacros.h:1485
#define SHADER_PARAMETER_RDG_TEXTURE_SRV(ShaderType, MemberName)
Definition ShaderParameterMacros.h:1764
#define SHADER_PARAMETER(MemberType, MemberName)
Definition ShaderParameterMacros.h:1684
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition LocalFogVolumeRendering.h:45
float GetUniformScale()
Definition LocalFogVolumeRendering.h:52
Definition LocalFogVolumeRendering.h:60
FORCEINLINE bool operator<(FLocalFogVolumeSortKey B) const
Definition LocalFogVolumeRendering.h:79
uint64 PackedData
Definition LocalFogVolumeRendering.h:64
uint64 Index
Definition LocalFogVolumeRendering.h:68
struct FLocalFogVolumeSortKey::@1758::@1760 FogVolume
FORCEINLINE bool operator!=(FLocalFogVolumeSortKey B) const
Definition LocalFogVolumeRendering.h:74
uint64 Priority
Definition LocalFogVolumeRendering.h:70
uint64 Distance
Definition LocalFogVolumeRendering.h:69
Definition RenderGraphResources.h:1426
Definition RenderGraphResources.h:1452
Definition RenderGraphResources.h:1321
Definition RenderGraphBuilder.h:49
Definition RenderGraphResources.h:839
Definition RenderGraphResources.h:905
Definition RenderGraphResources.h:571
Definition RHICommandList.h:3819
Definition SceneView.h:2212
Definition ScenePrivate.h:2875
Definition SceneRendering.h:1132
Definition Array.h:670
Definition RenderGraphResources.h:251
Definition LocalFogVolumeRendering.h:87
uint32 LocalFogVolumeInstanceCountFinal
Definition LocalFogVolumeRendering.h:89
uint32 LocalFogVolumeInstanceCount
Definition LocalFogVolumeRendering.h:88
FLocalFogVolumeGPUInstanceData * LocalFogVolumeGPUInstanceData
Definition LocalFogVolumeRendering.h:90
FVector * LocalFogVolumeCenterPos
Definition LocalFogVolumeRendering.h:91
TArray< FLocalFogVolumeSortKey > LocalFogVolumeSortKeys
Definition LocalFogVolumeRendering.h:92
Definition LocalFogVolumeRendering.h:96
uint32 GPUInstanceCount
Definition LocalFogVolumeRendering.h:97
FRDGBufferUAVRef GPUTileDataBufferUAV
Definition LocalFogVolumeRendering.h:106
FRDGTextureRef TileDataTextureArray
Definition LocalFogVolumeRendering.h:114
FRDGBufferUAVRef GPUTileDrawIndirectBufferUAV
Definition LocalFogVolumeRendering.h:108
FRDGTextureSRVRef TileDataTextureArraySRV
Definition LocalFogVolumeRendering.h:115
FIntPoint HalfResResolution
Definition LocalFogVolumeRendering.h:119
FRDGTextureRef HalfResLocalFogVolumeView
Definition LocalFogVolumeRendering.h:120
FRDGBufferRef GPUInstanceDataBuffer
Definition LocalFogVolumeRendering.h:98
bool bUseHalfResLocalFogVolume
Definition LocalFogVolumeRendering.h:118
FRDGBufferRef GPUInstanceCullingDataBuffer
Definition LocalFogVolumeRendering.h:101
FRDGTextureUAVRef TileDataTextureArrayUAV
Definition LocalFogVolumeRendering.h:116
FRDGTextureSRVRef HalfResLocalFogVolumeViewSRV
Definition LocalFogVolumeRendering.h:121
TRDGUniformBufferRef< FLocalFogVolumeUniformParameters > UniformBuffer
Definition LocalFogVolumeRendering.h:110
FRDGTextureRef HalfResLocalFogVolumeDepth
Definition LocalFogVolumeRendering.h:122
FRDGBufferRef GPUTileDataBuffer
Definition LocalFogVolumeRendering.h:104
FRDGBufferRef GPUTileDrawIndirectBuffer
Definition LocalFogVolumeRendering.h:107
FRDGTextureSRVRef HalfResLocalFogVolumeDepthSRV
Definition LocalFogVolumeRendering.h:123
FRDGBufferSRVRef GPUInstanceCullingDataBufferSRV
Definition LocalFogVolumeRendering.h:102
FLocalFogVolumeUniformParameters UniformParametersStruct
Definition LocalFogVolumeRendering.h:112
FRDGBufferSRVRef GPUTileDataBufferSRV
Definition LocalFogVolumeRendering.h:105
FRDGBufferSRVRef GPUInstanceDataBufferSRV
Definition LocalFogVolumeRendering.h:99
Definition SceneTextures.h:52
Definition IntPoint.h:25