UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SceneTextures.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "SceneView.h"
6#include "RenderGraphUtils.h"
9#include "GBufferInfo.h"
10#include "ScreenPass.h"
11
12struct FSceneTextures;
13class FViewInfo;
14class FViewFamilyInfo;
15
18
20{
23 uint16 AllocationOrder; // Order in which item of a given Name was allocated, mainly for differentiating items in texture visualizer
24 bool bUsed; // Tracks whether output was used as an input, for debugging
25 uint32 ViewMask; // Tracks which views this texture has been rendered in, so we can detect the first render in a given view
26};
27
28#if !(UE_BUILD_SHIPPING)
30{
32 CollidingInput, // Input matches the output, and has been unbound as a result
34 Output,
35 Pass, // Marker for the end of events for a given material pass with UserSceneTexture inputs or outputs
36 CustomRenderPass // Marker for a custom render pass that writes to a UserSceneTexture -- AllocationOrder contains ERenderOutput enum, MaterialInterface contains CustomRenderPassBase pointer
37};
38
40{
43 uint16 AllocationOrder; // ERenderOutput stored here for EUserSceneTextureEvent::CustomRenderPass
44 uint16 ViewIndex; // Necessary to differentiate events from multiple views in split screen
45 const UMaterialInterface* MaterialInterface; // FCustomRenderPassBase stored here for EUserSceneTextureEvent::CustomRenderPass
46 FIntPoint RectSize; // Only filled in for EUserSceneTextureEvent::Output
47};
48#endif
49
52{
53 // Initializes the minimal scene textures structure in the FViewFamilyInfo
54 static RENDERER_API void InitializeViewFamily(FRDGBuilder& GraphBuilder, FViewFamilyInfo& ViewFamily);
55
56 // Structure may be pointed to by multiple FViewFamilyInfo during scene rendering, through CustomRenderPasses. The Owner
57 // handles deleting the structure when the scene renderer is destroyed. TRefCountPtr doesn't work, because the structure
58 // is also copied by value, and the copy constructor is disabled for reference counted structures.
59 const FViewFamilyInfo* Owner = nullptr;
61
62 // Immutable copy of the config used to create scene textures.
64
65 // Uniform buffers for deferred or mobile.
68
69 // Setup modes used when creating uniform buffers. These are updated on demand.
72
73 // Texture containing scene color information with lighting but without post processing. Will be two textures if MSAA.
75
76 // Texture containing scene depth. Will be two textures if MSAA.
78
79 // Texture containing a stencil view of the resolved (if MSAA) scene depth.
81
82 // Textures containing primary depth buffer copied before other meshes are rendered in the secondary depth pass.
84
85 // Textures containing depth / stencil information from the custom depth pass.
87
88 // Dynamically allocated user scene textures, stored by name. An array of textures per name is used, as it's possible the
89 // same name is allocated with different resolution divisors. The most recently written texture resolution with a given name
90 // will be used as an input to other materials, by swapping to the front of the array.
92
93#if !(UE_BUILD_SHIPPING)
95#endif
96
98
99 FRDGTextureRef FindOrAddUserSceneTexture(FRDGBuilder& GraphBuilder, int32 ViewIndex, FName Name, FIntPoint ResolutionDivisor, bool& bOutFirstRender, const UMaterialInterface* MaterialInterface, const FIntRect& OutputRect) const;
100 FScreenPassTextureSlice GetUserSceneTexture(FRDGBuilder& GraphBuilder, const FViewInfo& View, int32 ViewIndex, FName Name, const UMaterialInterface* MaterialInterface) const;
102
103#if !(UE_BUILD_SHIPPING)
105#endif
106};
107
110{
111 // Initializes the scene textures structure in the FViewFamilyInfo
112 static RENDERER_API void InitializeViewFamily(FRDGBuilder& GraphBuilder, FViewFamilyInfo& ViewFamily, FIntPoint FamilySize);
114
115 // Configures an array of render targets for the GBuffer pass.
120 ERenderTargetLoadAction LoadAction,
121 FRenderTargetBindingSlots& RenderTargets,
123
124 // Returns list of valid textures in this structure
126
127 // (Deferred) Texture containing conservative downsampled depth for occlusion.
129
130 // (Deferred) Textures containing geometry information for deferred shading.
138
139 // Additional Buffer texture used by mobile
141
142 // Texture containing dynamic motion vectors. Can be bound by the base pass or its own velocity pass.
144
145 // (Mobile Local Light Prepass) Textures containing LocalLight Direction and Color
148
149 // Texture containing the screen space ambient occlusion result.
151
152 // Additional texture used by some debug view mode when enabled.
154
155 // (Mobile Stereo) Textures containing motion vectors and depth for OpenXR frame synthesis, using Vulkan-NDC format rather than UE's encoded velocity format.
156 // The size of both textures is determined independently of the view family size, via IStereoRenderTargetManager::GetRecommendedMotionVectorTextureSize.
159
160 // Textures used to composite editor primitives. Also used by the base pass when in wireframe mode.
161#if WITH_EDITOR
164#endif
165};
166
168void QueueSceneTextureExtractions(FRDGBuilder& GraphBuilder, const FSceneTextures& SceneTextures);
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
EGBufferLayout
Definition GBufferInfo.h:107
@ GBL_Default
Definition GBufferInfo.h:108
FInt32Point FIntPoint
Definition MathFwd.h:124
EPixelFormat
Definition PixelFormat.h:16
ETextureCreateFlags
Definition RHIDefinitions.h:1091
ERenderTargetLoadAction
Definition RHIDefinitions.h:1253
ESceneTextureSetupMode
Definition SceneRenderTargetParameters.h:31
EMobileSceneTextureSetupMode
Definition SceneRenderTargetParameters.h:72
EUserSceneTextureEvent
Definition SceneTextures.h:30
void QueueSceneTextureExtractions(FRDGBuilder &GraphBuilder, const FSceneTextures &SceneTextures)
Definition SceneTextures.cpp:1033
RENDERER_API void InitializeSceneTexturesConfig(FSceneTexturesConfig &Config, const FSceneViewFamily &ViewFamily, FIntPoint ExtentOverride=FIntPoint(0, 0))
Definition SceneTextures.cpp:402
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition NameTypes.h:617
Definition RenderGraphBuilder.h:49
Definition RenderGraphResources.h:839
Definition RenderGraphResources.h:571
Definition SceneView.h:2212
Definition SceneRendering.h:1970
Definition SceneRendering.h:1132
Definition ArrayView.h:139
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition RenderGraphResources.h:251
Definition MaterialInterface.h:296
Type
Definition RHIFeatureLevel.h:20
Definition CustomDepthRendering.h:23
Definition SceneTextures.h:52
static RENDERER_API void InitializeViewFamily(FRDGBuilder &GraphBuilder, FViewFamilyInfo &ViewFamily)
Definition SceneTextures.cpp:457
const FTransientUserSceneTexture * FindUserSceneTextureByEvent(const FUserSceneTextureEventData &Event) const
Definition SceneTextures.cpp:664
bool bIsSceneTexturesInitialized
Definition SceneTextures.h:60
ESceneTextureSetupMode SetupMode
Definition SceneTextures.h:70
FCustomDepthTextures CustomDepth
Definition SceneTextures.h:86
FRDGTextureSRVRef Stencil
Definition SceneTextures.h:80
EMobileSceneTextureSetupMode MobileSetupMode
Definition SceneTextures.h:71
TMap< FName, TArray< FTransientUserSceneTexture > > UserSceneTextures
Definition SceneTextures.h:91
FRDGTextureMSAA PartialDepth
Definition SceneTextures.h:83
FRDGTextureRef FindOrAddUserSceneTexture(FRDGBuilder &GraphBuilder, int32 ViewIndex, FName Name, FIntPoint ResolutionDivisor, bool &bOutFirstRender, const UMaterialInterface *MaterialInterface, const FIntRect &OutputRect) const
Definition SceneTextures.cpp:537
FRDGTextureMSAA Depth
Definition SceneTextures.h:77
FRDGTextureMSAA Color
Definition SceneTextures.h:74
RENDERER_API FSceneTextureShaderParameters GetSceneTextureShaderParameters(ERHIFeatureLevel::Type FeatureLevel) const
Definition SceneTextures.cpp:523
FScreenPassTextureSlice GetUserSceneTexture(FRDGBuilder &GraphBuilder, const FViewInfo &View, int32 ViewIndex, FName Name, const UMaterialInterface *MaterialInterface) const
Definition SceneTextures.cpp:624
TRDGUniformBufferRef< FSceneTextureUniformParameters > UniformBuffer
Definition SceneTextures.h:66
FSceneTexturesConfig Config
Definition SceneTextures.h:63
TRDGUniformBufferRef< FMobileSceneTextureUniformParameters > MobileUniformBuffer
Definition SceneTextures.h:67
TArray< FUserSceneTextureEventData > UserSceneTextureEvents
Definition SceneTextures.h:94
FIntPoint GetUserSceneTextureDivisor(FName Name) const
Definition SceneTextures.cpp:650
const FViewFamilyInfo * Owner
Definition SceneTextures.h:59
Definition RenderGraphUtils.h:288
Definition ShaderParameterMacros.h:770
Definition SceneTexturesConfig.h:114
Definition SceneTextures.h:110
FRDGTextureRef GBufferD
Definition SceneTextures.h:134
RENDERER_API TArray< FRDGTextureRef > EnumerateSceneTextures() const
Definition SceneTextures.cpp:936
FRDGTextureRef ScreenSpaceAO
Definition SceneTextures.h:150
FRDGTextureRef DebugAux
Definition SceneTextures.h:153
FRDGTextureRef MobileLocalLightTextureB
Definition SceneTextures.h:147
FRDGTextureRef Velocity
Definition SceneTextures.h:143
FRDGTextureRef GBufferF
Definition SceneTextures.h:136
FRDGTextureRef SmallDepth
Definition SceneTextures.h:128
static RENDERER_API EPixelFormat GetGBufferFFormatAndCreateFlags(ETextureCreateFlags &OutCreateFlags)
Definition SceneTextures.cpp:82
FRDGTextureRef StereoMotionVectors
Definition SceneTextures.h:157
FRDGTextureRef GBufferE
Definition SceneTextures.h:135
FRDGTextureRef StereoMotionVectorDepth
Definition SceneTextures.h:158
RENDERER_API uint32 GetGBufferRenderTargets(TArrayView< FTextureRenderTargetBinding > RenderTargets, EGBufferLayout Layout=GBL_Default) const
Definition SceneTextures.cpp:852
FRDGTextureRef GBufferB
Definition SceneTextures.h:132
FRDGTextureRef GBufferSGGX
Definition SceneTextures.h:137
FRDGTextureMSAA DepthAux
Definition SceneTextures.h:140
FRDGTextureRef GBufferC
Definition SceneTextures.h:133
FRDGTextureRef MobileLocalLightTextureA
Definition SceneTextures.h:146
static RENDERER_API void InitializeViewFamily(FRDGBuilder &GraphBuilder, FViewFamilyInfo &ViewFamily, FIntPoint FamilySize)
Definition SceneTextures.cpp:684
FRDGTextureRef GBufferA
Definition SceneTextures.h:131
Definition ScreenPass.h:65
Definition SceneTextures.h:20
uint16 AllocationOrder
Definition SceneTextures.h:23
FIntPoint ResolutionDivisor
Definition SceneTextures.h:22
FRDGTextureRef Texture
Definition SceneTextures.h:21
bool bUsed
Definition SceneTextures.h:24
uint32 ViewMask
Definition SceneTextures.h:25
Definition SceneTextures.h:40
uint16 AllocationOrder
Definition SceneTextures.h:43
uint16 ViewIndex
Definition SceneTextures.h:44
const UMaterialInterface * MaterialInterface
Definition SceneTextures.h:45
FName Name
Definition SceneTextures.h:42
EUserSceneTextureEvent Event
Definition SceneTextures.h:41
FIntPoint RectSize
Definition SceneTextures.h:46
Definition IntPoint.h:25