UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SceneViewExtension.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 SceneViewExtension.h: Allow changing the view parameters on the render thread
5=============================================================================*/
6
7#pragma once
8
9#include "CoreMinimal.h"
11#include "RendererInterface.h"
13
79#include "SceneTexturesConfig.h"
80
83class FSceneView;
85struct FMinimalViewInfo;
87class FRDGBuilder;
92class FViewport;
93
94
96FUNC_DECLARE_DELEGATE(FPostProcessingPassDelegate, FScreenPassTexture /*ReturnSceneColor*/, FRDGBuilder& /*GraphBuilder*/, const FSceneView& /*View*/, const FPostProcessMaterialInputs& /*Inputs*/)
98
99// Soft deprecation of the previous after pass delegate names
102
105{
106 None = 0,
107
109};
111
113{
114public:
115
116 // Each post-processing pass immediately precedes a PPM blend location, if it exists. See comments below.
118 {
119 BeforeDOF, // BL_SceneColorBeforeDOF
120 AfterDOF, // BL_SceneColorAfterDOF
121 TranslucencyAfterDOF, // BL_TranslucencyAfterDOF
122 SSRInput, // BL_SSRInput
123
124 // The following post-processing passes may be last, and therefore receive a valid OverrideOutput render target.
125 ReplacingTonemapper, // BL_ReplacingTonemapper
126 MotionBlur, // BL_SceneColorBeforeBloom
127 Tonemap, // BL_SceneColorAfterTonemapping
128 FXAA,
129 SMAA,
131
132 MAX
133 };
134
135public:
136
141
146
151
156
161
166
171
176
180 virtual void PreInitViews_RenderThread(FRDGBuilder& GraphBuilder) {}
181
186
191
196
201
205 virtual void PrePostProcessPass_RenderThread(FRDGBuilder& GraphBuilder, const FSceneView& InView, const FPostProcessingInputs& Inputs) {};
206
211
218
223
228
232 virtual int32 GetPriority() const { return 0; }
233
238
243
246
247 UE_DEPRECATED(5.5, "SubscribeToPostProcessingPass now takes a SceneView")
249
251
252protected:
256 virtual bool IsActiveThisFrame_Internal(const FSceneViewExtensionContext& Context) const { return true; }
257};
258
259
260
266{
268 FAutoRegister(){}
269};
270
271
273class FSceneViewExtensionBase : public ISceneViewExtension, public TSharedFromThis<FSceneViewExtensionBase, ESPMode::ThreadSafe>
274{
275public:
278
279 // Array of Functors that can be used to activate an extension for the current frame and given context.
281
282 // Determines if the extension should be active for the current frame and given context.
283 ENGINE_API virtual bool IsActiveThisFrame(const FSceneViewExtensionContext& Context) const override final;
284};
285
288{
289public:
291protected:
293 UWorld* GetWorld() const { return World.Get(); }
294private:
297};
298
309
311
349
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
SharedPointerInternals::TRawPtrProxy< ObjectType > MakeShareable(ObjectType *InObject)
Definition SharedPointer.h:1947
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define FUNC_DECLARE_DELEGATE(DelegateName, ReturnType,...)
Definition Delegate.h:208
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
FPostProcessingPassDelegate FAfterPassCallbackDelegate
Definition SceneViewExtension.h:100
ESceneViewExtensionFlags
Definition SceneViewExtension.h:105
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition PlayerController.h:261
Definition SceneViewExtension.h:266
Definition SceneViewExtension.h:301
virtual ENGINE_API bool IsActiveThisFrame_Internal(const FSceneViewExtensionContext &Context) const override
Definition SceneViewExtension.cpp:59
FHMDSceneViewExtension(const FAutoRegister &AutoReg)
Definition SceneViewExtension.h:303
Definition RenderGraphBuilder.h:49
Definition RHICommandList.h:4626
Definition RHICommandList.h:3819
Definition SceneViewExtension.h:274
TArray< FSceneViewExtensionIsActiveFunctor > IsActiveThisFrameFunctions
Definition SceneViewExtension.h:280
virtual ENGINE_API ~FSceneViewExtensionBase()
Definition SceneViewExtension.cpp:15
virtual ENGINE_API bool IsActiveThisFrame(const FSceneViewExtensionContext &Context) const override final
Definition SceneViewExtension.cpp:21
Definition SceneViewExtension.h:316
static TSharedRef< ExtensionType, ESPMode::ThreadSafe > NewExtension(TArgs &&... Args)
Definition SceneViewExtension.h:324
ENGINE_API const TArray< FSceneViewExtensionRef > GatherActiveExtensions(const FSceneViewExtensionContext &InContext) const
Definition SceneViewExtension.cpp:106
static ENGINE_API void ForEachActiveViewExtension(const TArray< TWeakPtr< ISceneViewExtension, ESPMode::ThreadSafe > > &InExtensions, const FSceneViewExtensionContext &InContext, const TFunctionRef< void(const FSceneViewExtensionRef &)> &Func)
Definition SceneViewExtension.cpp:90
Definition SceneView.h:2212
Definition SceneView.h:1425
Definition UnrealClient.h:412
Definition SceneViewExtension.h:288
virtual ENGINE_API bool IsActiveThisFrame_Internal(const FSceneViewExtensionContext &Context) const override
Definition SceneViewExtension.cpp:50
UWorld * GetWorld() const
Definition SceneViewExtension.h:293
Definition SceneRendererInterface.h:47
Definition SceneViewExtension.h:113
virtual void PrePostProcessPass_RenderThread(FRDGBuilder &GraphBuilder, const FSceneView &InView, const FPostProcessingInputs &Inputs)
Definition SceneViewExtension.h:205
virtual bool IsActiveThisFrame(const FSceneViewExtensionContext &Context) const
Definition SceneViewExtension.h:237
virtual void PostCreateSceneRenderer(const FSceneViewFamily &InViewFamily, ISceneRenderer *Renderer)
Definition SceneViewExtension.h:165
virtual void SubscribeToPostProcessingPass(EPostProcessingPass Pass, const FSceneView &InView, FPostProcessingPassDelegateArray &InOutPassCallbacks, bool bIsPassEnabled)
Definition SceneViewExtension.h:217
virtual void PreRenderView_RenderThread(FRDGBuilder &GraphBuilder, FSceneView &InView)
Definition SceneViewExtension.h:175
virtual void PreRenderBasePass_RenderThread(FRDGBuilder &GraphBuilder, bool bDepthBufferIsPopulated)
Definition SceneViewExtension.h:185
virtual void PreInitViews_RenderThread(FRDGBuilder &GraphBuilder)
Definition SceneViewExtension.h:180
virtual void SetupViewFamily(FSceneViewFamily &InViewFamily)
Definition SceneViewExtension.h:140
virtual void PostRenderView_RenderThread(FRDGBuilder &GraphBuilder, FSceneView &InView)
Definition SceneViewExtension.h:227
virtual void PostRenderViewFamily_RenderThread(FRDGBuilder &GraphBuilder, FSceneViewFamily &InViewFamily)
Definition SceneViewExtension.h:222
virtual void PrePostProcessPassMobile_RenderThread(FRDGBuilder &GraphBuilder, const FSceneView &InView, const FMobilePostProcessingInputs &Inputs)
Definition SceneViewExtension.h:210
virtual ESceneViewExtensionFlags GetFlags() const
Definition SceneViewExtension.h:242
virtual void SetupViewProjectionMatrix(FSceneViewProjectionData &InOutProjectionData)
Definition SceneViewExtension.h:155
EPostProcessingPass
Definition SceneViewExtension.h:118
virtual int32 GetPriority() const
Definition SceneViewExtension.h:232
virtual void PostRenderBasePassMobile_RenderThread(FRHICommandList &RHICmdList, FSceneView &InView)
Definition SceneViewExtension.h:195
virtual void BeginRenderViewFamily(FSceneViewFamily &InViewFamily)
Definition SceneViewExtension.h:160
virtual void PostTLASBuild_RenderThread(FRDGBuilder &GraphBuilder, FSceneView &InView)
Definition SceneViewExtension.h:200
virtual void PostRenderBasePassDeferred_RenderThread(FRDGBuilder &GraphBuilder, FSceneView &InView, const FRenderTargetBindingSlots &RenderTargets, TRDGUniformBufferRef< FSceneTextureUniformParameters > SceneTextures)
Definition SceneViewExtension.h:190
virtual void PreRenderViewFamily_RenderThread(FRDGBuilder &GraphBuilder, FSceneViewFamily &InViewFamily)
Definition SceneViewExtension.h:170
virtual void SetupView(FSceneViewFamily &InViewFamily, FSceneView &InView)
Definition SceneViewExtension.h:145
virtual void SetupViewPoint(APlayerController *Player, FMinimalViewInfo &InViewInfo)
Definition SceneViewExtension.h:150
virtual bool IsActiveThisFrame_Internal(const FSceneViewExtensionContext &Context) const
Definition SceneViewExtension.h:256
Definition Renderer.Build.cs:6
Definition Array.h:670
Definition AssetRegistryState.h:50
Definition ConcurrentLinearAllocator.h:624
Definition RenderGraphResources.h:251
Definition SharedPointer.h:1640
Definition SharedPointer.h:153
Definition SharedPointer.h:1295
Definition World.h:918
Definition CameraTypes.h:37
Definition PostProcessing.h:61
Definition PostProcessMaterialInputs.h:45
Definition PostProcessInputs.h:9
Definition ShaderParameterMacros.h:770
Definition SceneViewExtensionContext.h:20
Definition SceneView.h:51
Definition ScreenPass.h:41
Definition WeakObjectPtrTemplates.h:25
FORCEINLINE T * Get(bool bEvenIfPendingKill) const
Definition WeakObjectPtrTemplates.h:132