UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FirstPersonSceneExtension.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "SceneExtensions.h"
6
8class FViewInfo;
9
10// Holds collective bounds of all FirstPerson/WorldSpaceRepresentation primitives for a given view. This assumes that these primitives are all very close together in world space,
11// allowing to do a single overlap/intersection test to cover all the primitives.
13{
14 // Collective bounds for all FirstPerson primitives visible in this view.
16
17 // Collective bounds for all FirstPersonWorldSpaceRepresentation primitives affecting this view.
19
20 // Whether the scene has at least one FirstPerson primitive visible in this view.
22
23 // Whether the scene has at least one FirstPersonWorldSpaceRepresentation primitive affecting this view.
25};
26
27// This scene extension maintains dense arrays of all FirstPerson and FirstPersonWorldSpaceRepresentation primitives in the scene.
28// Every frame, it then computes collective per-view for all the first person relevant primitives affecting each view.
29// Currently, these bounds are used for First Person Self-Shadow and Lumen HWRT reflections.
31{
33public:
35
37
38 //~ Begin ISceneExtension Interface.
39 virtual ISceneExtensionUpdater* CreateUpdater() override;
41 //~ End ISceneExtension Interface.
42
45
46private:
47
48 // Private updater class for handling adding and removal of primitives.
49 class FUpdater : public ISceneExtensionUpdater
50 {
52 public:
54
55 //~ Begin ISceneExtensionUpdater Interface.
56 virtual void PreSceneUpdate(FRDGBuilder& GraphBuilder, const FScenePreUpdateChangeSet& ChangeSet, FSceneUniformBuffer& SceneUniforms) override;
57 virtual void PostSceneUpdate(FRDGBuilder& GraphBuilder, const FScenePostUpdateChangeSet& ChangeSet) override;
58 //~ End ISceneExtensionUpdater Interface.
59
60 private:
61 FFirstPersonSceneExtension& SceneExtension;
62 };
63
64 TArray<FPrimitiveSceneInfo*> FirstPersonPrimitives;
65 TArray<FPrimitiveSceneInfo*> WorldSpaceRepresentationPrimitives;
66};
67
68// First person "renderer" class, calculating the per-view bounds when a frame is rendered.
70{
72public:
76
77 //~ Begin ISceneExtensionRenderer Interface.
78 virtual void UpdateViewData(FRDGBuilder& GraphBuilder, const FRendererViewDataManager& ViewDataManager) override;
79 //~ End ISceneExtensionRenderer Interface.
80
82
83private:
84 FFirstPersonSceneExtension& SceneExtension;
85 TArray<FFirstPersonViewBounds> ViewBoundsArray;
86};
@ ForceInit
Definition CoreMiscDefines.h:155
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
FBoxSphereBounds3d FBoxSphereBounds
Definition MathFwd.h:142
#define DECLARE_SCENE_EXTENSION_UPDATER(ClassName, SceneExtensionClassName)
Definition SceneExtensions.h:390
#define DECLARE_SCENE_EXTENSION_RENDERER(ClassName, SceneExtensionClassName)
Definition SceneExtensions.h:394
#define DECLARE_SCENE_EXTENSION(ModuleExport, ClassName)
Definition SceneExtensions.h:384
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition FirstPersonSceneExtension.h:70
FFirstPersonViewBounds GetFirstPersonViewBounds(const FViewInfo &ViewInfo) const
Definition FirstPersonSceneExtension.cpp:131
virtual void UpdateViewData(FRDGBuilder &GraphBuilder, const FRendererViewDataManager &ViewDataManager) override
Definition FirstPersonSceneExtension.cpp:70
FFirstPersonSceneExtensionRenderer(FSceneRendererBase &InSceneRenderer, FFirstPersonSceneExtension &InSceneExtension)
Definition FirstPersonSceneExtension.h:73
Definition FirstPersonSceneExtension.h:31
virtual ISceneExtensionUpdater * CreateUpdater() override
Definition FirstPersonSceneExtension.cpp:17
virtual ISceneExtensionRenderer * CreateRenderer(FSceneRendererBase &InSceneRenderer, const FEngineShowFlags &EngineShowFlags) override
Definition FirstPersonSceneExtension.cpp:22
const TArray< FPrimitiveSceneInfo * > & GetFirstPersonPrimitives() const
Definition FirstPersonSceneExtension.cpp:27
static bool ShouldCreateExtension(FScene &Scene)
Definition FirstPersonSceneExtension.cpp:10
const TArray< FPrimitiveSceneInfo * > & GetWorldSpaceRepresentationPrimitives() const
Definition FirstPersonSceneExtension.cpp:32
Definition PrimitiveSceneInfo.h:266
Definition RenderGraphBuilder.h:49
Definition ViewData.h:64
Definition ScenePrimitiveUpdates.h:129
Definition ScenePrimitiveUpdates.h:116
Definition SceneRendering.h:2023
Definition SceneUniformBuffer.h:137
Definition ScenePrivate.h:2875
Definition SceneRendering.h:1132
Definition SceneExtensions.h:69
Definition SceneExtensions.h:45
Definition SceneExtensions.h:24
ISceneExtension(FScene &InScene)
Definition SceneExtensions.h:29
FScene & Scene
Definition SceneExtensions.h:40
Definition Array.h:670
Definition ShowFlags.h:56
Definition FirstPersonSceneExtension.h:13
uint32 bHasFirstPersonWorldSpaceRepresentationPrimitives
Definition FirstPersonSceneExtension.h:24
FBoxSphereBounds WorldSpaceRepresentationBounds
Definition FirstPersonSceneExtension.h:18
FBoxSphereBounds FirstPersonBounds
Definition FirstPersonSceneExtension.h:15
uint32 bHasFirstPersonPrimitives
Definition FirstPersonSceneExtension.h:21
Definition BoxSphereBounds.h:25