UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SceneOcclusion.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "Shader.h"
7#include "GlobalShader.h"
8#include "ShadowRendering.h"
9#include "Engine/Engine.h"
10
13class FRHIRenderQuery;
14
16
17/*=============================================================================
18 SceneOcclusion.h
19=============================================================================*/
20
39
41
43
48{
50public:
52 {
53 static auto* MobileUseHWsRGBEncodingCVAR = IConsoleManager::Get().FindTConsoleVariableDataInt(TEXT("r.Mobile.UseHWsRGBEncoding"));
54 const bool bMobileUseHWsRGBEncoding = (MobileUseHWsRGBEncodingCVAR && MobileUseHWsRGBEncodingCVAR->GetValueOnAnyThread() == 1);
55
57 OutEnvironment.SetDefine(TEXT("OUTPUT_GAMMA_SPACE"), IsMobileHDR() == false && !bMobileUseHWsRGBEncoding);
58 OutEnvironment.SetDefine(TEXT("OUTPUT_MOBILE_HDR"), IsMobileHDR() == true);
59 }
60
66
68
70 {
72 StencilingGeometry::GStencilSphereVertexBuffer.CalcTransform(StencilingSpherePosAndScale[0], BoundingSphere, View.ViewMatrices.GetPreViewTranslation());
74 {
75 if (const FViewInfo* InstancedView = View.GetInstancedView())
76 {
77 StencilingGeometry::GStencilSphereVertexBuffer.CalcTransform(StencilingSpherePosAndScale[1], BoundingSphere, InstancedView->ViewMatrices.GetPreViewTranslation());
78 }
79 else
80 {
82 }
83 }
84
85 SetParametersInternal(BatchedParameters, View, StencilingSpherePosAndScale);
86 }
87
89 {
90 // Don't transform if rendering frustum
91 FVector4f InstancedOffsetScale[2] = { FVector4f(0, 0, 0, 1), FVector4f(0, 0, 0, 1) };
93 {
94 // Occlusion queries are generated to be offset by the PreViewTranslation.
95 // However for multiview, we still need to apply that offset to the right eye.
96 // In that case we also need to undo the baked left eye translation.
97 if (const FViewInfo* InstancedView = View.GetInstancedView())
98 {
99 InstancedOffsetScale[1] = FVector4f(FVector3f(InstancedView->ViewMatrices.GetPreViewTranslation() - View.ViewMatrices.GetPreViewTranslation()), 1.0f);
100 }
101 }
102 SetParametersInternal(BatchedParameters, View, InstancedOffsetScale);
103 }
104
105private:
106 void SetParametersInternal(FRHIBatchedShaderParameters& BatchedParameters, const FViewInfo& View, const FVector4f StencilingSpherePosAndScale[2])
107 {
108 // Mobile renderer sets View UB through static binding
110 {
111 FGlobalShader::SetParameters<FViewUniformShaderParameters>(BatchedParameters, View.ViewUniformBuffer);
112 }
113
115 {
117 }
118 else
119 {
120 FGlobalShader::SetParameters<FInstancedViewUniformShaderParameters>(BatchedParameters, View.GetInstancedViewUniformBuffer());
122 }
123 }
124
125private:
127};
128
140
141// Returns whether occlusion queries should be downsampled.
#define TEXT(x)
Definition Platform.h:1272
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
UE::Math::TVector< float > FVector3f
Definition MathFwd.h:73
UE::Math::TVector4< float > FVector4f
Definition MathFwd.h:75
#define LAYOUT_FIELD(T, Name,...)
Definition MemoryLayout.h:471
#define DECLARE_GPU_STAT_NAMED_EXTERN(StatName, NameString)
Definition RealtimeGPUProfiler.h:260
bool IsMobileHDR()
Definition RenderUtils.h:265
void AllocateOcclusionTests(const FScene *Scene, FViewOcclusionQueriesPerView &QueriesPerView, TArrayView< class FViewInfo > Views, TArrayView< const class FVisibleLightInfo > VisibleLightInfos)
Definition SceneOcclusion.cpp:1072
RENDERER_API bool UseDownsampledOcclusionQueries()
Definition SceneOcclusion.cpp:96
void SetShaderValue(FRHIBatchedShaderParameters &BatchedParameters, const FShaderParameter &Parameter, const ParameterType &Value, uint32 ElementIndex=0)
Definition ShaderParameterUtils.h:24
void SetShaderValueArray(FRHIBatchedShaderParameters &BatchedParameters, const FShaderParameter &Parameter, const ParameterType *Values, uint32 NumElements, uint32 ElementIndex=0)
Definition ShaderParameterUtils.h:51
#define DECLARE_SHADER_TYPE(ShaderClass, ShaderMetaTypeShortcut,...)
Definition Shader.h:1688
Definition GlobalShader.h:269
static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters &Parameters, FShaderCompilerEnvironment &Environment)
Definition GlobalShader.h:289
Definition SceneOcclusion.h:133
FOcclusionQueryPS()
Definition SceneOcclusion.h:138
FOcclusionQueryPS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition SceneOcclusion.h:136
Definition SceneOcclusion.h:48
FOcclusionQueryVS(const ShaderMetaType::CompiledShaderInitializerType &Initializer)
Definition SceneOcclusion.h:61
void SetParameters(FRHIBatchedShaderParameters &BatchedParameters, const FViewInfo &View, const FSphere &BoundingSphere)
Definition SceneOcclusion.h:69
static void ModifyCompilationEnvironment(const FGlobalShaderPermutationParameters &Parameters, FShaderCompilerEnvironment &OutEnvironment)
Definition SceneOcclusion.h:51
FOcclusionQueryVS()
Definition SceneOcclusion.h:67
void SetParameters(FRHIBatchedShaderParameters &BatchedParameters, const FViewInfo &View)
Definition SceneOcclusion.h:88
Definition PlanarReflectionSceneProxy.h:88
Definition ShadowRendering.h:279
Definition RHIResources.h:2444
TUniformBufferRef< FViewUniformShaderParameters > ViewUniformBuffer
Definition SceneView.h:1432
bool bShouldBindInstancedViewUB
Definition SceneView.h:1680
FViewMatrices ViewMatrices
Definition SceneView.h:1464
const TUniformBufferRef< FInstancedViewUniformShaderParameters > & GetInstancedViewUniformBuffer() const
Definition SceneView.h:2073
ENGINE_API EShaderPlatform GetShaderPlatform() const
Definition SceneView.cpp:2489
Definition ScenePrivate.h:2875
Definition ShaderParameters.h:56
Definition SceneRendering.h:1132
const FViewInfo * GetInstancedView() const
Definition SceneRendering.h:1787
Definition ArrayView.h:139
Definition Array.h:670
Definition GlobalShader.h:73
Definition RHIShaderParameters.h:241
Definition Shader.h:1610
Definition ShaderCore.h:544
const FVector & GetPreViewTranslation() const
Definition SceneView.h:518
Definition SceneOcclusion.h:22
FRenderQueryArray LocalLightQueries
Definition SceneOcclusion.h:32
FProjectedShadowArray LocalLightQueryInfos
Definition SceneOcclusion.h:27
FPlanarReflectionArray ReflectionQueryInfos
Definition SceneOcclusion.h:30
bool bFlushQueries
Definition SceneOcclusion.h:37
FRenderQueryArray ReflectionQueries
Definition SceneOcclusion.h:35
FRenderQueryArray ShadowQueries
Definition SceneOcclusion.h:34
FProjectedShadowArray CSMQueryInfos
Definition SceneOcclusion.h:28
FRenderQueryArray CSMQueries
Definition SceneOcclusion.h:33
FProjectedShadowArray ShadowQueryInfos
Definition SceneOcclusion.h:29
TConsoleVariableData< int32 > * FindTConsoleVariableDataInt(const TCHAR *Name) const
Definition IConsoleManager.h:1203
static IConsoleManager & Get()
Definition IConsoleManager.h:1270