UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SceneRenderBuilderInterface.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"
7#include "RenderingThread.h"
8
10class FRDGBuilder;
11class FSceneRenderer;
12class FSceneInterface;
15
16struct FEngineShowFlags;
18
20{
21 None = 0,
22
23 // This group of renderers will perform a GPU capture.
24 GpuCapture = 1 << 1,
25
26 // This group of renderers will perform a GPU dump.
27 GpuDump = 1 << 2
28};
30
31// A setup of inputs passed into a scene render callback function.
46
47// The user must return whether FSceneRenderer::Render was called inside of the function.
49
50// A game side builder interface that collects scene renderers to process as one workload.
52{
53public:
54 virtual ~ISceneRenderBuilder() = default;
55
56 // Creates an instance of a scene render builder using a specified scene. The scene must be
57 // valid and all scene renderers must reference the same scene instance.
59
62
66 FHitProxyConsumer* HitProxyConsumer) = 0;
67
72 virtual void AddCommand(TUniqueFunction<void()>&& Function) = 0;
73
74 // Utility method that enqueues a render command that is interleaved with scene render commands.
82
83 // Adds a command to render a scene renderer on the render thread using RDG.
85
90
94 virtual bool IsCompatible(const FEngineShowFlags& EngineShowFlags) const = 0;
95
97
98 // Call to execute all enqueued commands on the render thread. Resets the builder back to empty.
99 virtual void Execute() = 0;
100
101 // Returns a linear allocator for allocating objects that can be used safely in command functions.
103
104private:
106 virtual void BeginGroup(FString&& Name, ESceneRenderGroupFlags Flags) = 0;
107 virtual void EndGroup() = 0;
108};
109
110// A scope class used to construct a scene render group.
112{
113 ISceneRenderBuilder& SceneRenderBuilder;
114
115public:
117 : SceneRenderBuilder(InSceneRenderBuilder)
118 {
119 SceneRenderBuilder.BeginGroup(Forward<FString&&>(Name), Flags);
120 }
121
123 {
124 SceneRenderBuilder.EndGroup();
125 }
126};
127
128// A scope macro used to construct a scene render group scope.
129#define SCENE_RENDER_GROUP_SCOPE(SceneRenderBuilder, Name, Flags) \
130 FSceneRenderGroupScope PREPROCESSOR_JOIN(__SceneRenderGroup_ScopeRef_,__LINE__)( \
131 (SceneRenderBuilder) \
132 , Forward<FString&&>(Name) \
133 , Flags \
134 )
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
const bool
Definition NetworkReplayStreaming.h:178
#define ENQUEUE_RENDER_COMMAND(Type)
Definition RenderingThread.h:1167
ESceneRenderGroupFlags
Definition SceneRenderBuilderInterface.h:20
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition HitProxies.h:218
Definition RenderGraphBuilder.h:49
Definition RHICommandList.h:4626
Definition SceneInterface.h:106
Definition SceneRenderBuilderInterface.h:112
~FSceneRenderGroupScope()
Definition SceneRenderBuilderInterface.h:122
FSceneRenderGroupScope(ISceneRenderBuilder &InSceneRenderBuilder, FString &&Name, ESceneRenderGroupFlags Flags)
Definition SceneRenderBuilderInterface.h:116
Definition SceneRendering.h:2080
Definition SceneView.h:2212
Definition SceneRenderBuilderInterface.h:52
virtual bool IsCompatible(const FEngineShowFlags &EngineShowFlags) const =0
virtual FConcurrentLinearBulkObjectAllocator & GetAllocator()=0
virtual void AddRenderer(FSceneRenderer *Renderer, FString &&Name, FSceneRenderFunction &&Function)=0
virtual ~ISceneRenderBuilder()=default
virtual FSceneRenderer * CreateSceneRenderer(FSceneViewFamily *ViewFamily)=0
virtual TArray< FSceneRenderer *, FConcurrentLinearArrayAllocator > CreateLinkedSceneRenderers(TConstArrayView< FSceneViewFamily * > ViewFamilies, FHitProxyConsumer *HitProxyConsumer)=0
virtual void AddCommand(TUniqueFunction< void()> &&Function)=0
void AddRenderCommand(TUniqueFunction< void(FRHICommandListImmediate &)> &&Function)
Definition SceneRenderBuilderInterface.h:75
virtual void Execute()=0
void AddRenderer(FSceneRenderer *Renderer, FSceneRenderFunction &&Function)
Definition SceneRenderBuilderInterface.h:86
Definition Renderer.Build.cs:6
Definition Array.h:670
Definition UniquePtr.h:107
Definition ShowFlags.h:56
Definition SceneRenderBuilderInterface.h:33
FSceneRenderFunctionInputs(FSceneRenderer *InRenderer, FSceneRenderUpdateInputs *InSceneUpdateInputs, const TCHAR *InName, const TCHAR *InFullPath)
Definition SceneRenderBuilderInterface.h:34
FSceneRenderUpdateInputs * SceneUpdateInputs
Definition SceneRenderBuilderInterface.h:42
const TCHAR * FullPath
Definition SceneRenderBuilderInterface.h:44
FSceneRenderer * Renderer
Definition SceneRenderBuilderInterface.h:41
const TCHAR * Name
Definition SceneRenderBuilderInterface.h:43
Definition SceneRendering.h:2692