UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SplineMeshSceneResources.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 "SpanAllocator.h"
8#include "RHIShaderPlatform.h"
9#include "RendererInterface.h"
10#include "Containers/Map.h"
12#include "SceneExtensions.h"
13
15
32{
35
37
38public:
40
42
43 virtual ISceneExtensionUpdater* CreateUpdater() override;
45
46 uint32 NumRegisteredPrimitives() const { return RegisteredPrimitives.Num(); }
47
48private:
49 struct FPrimitiveSlot
50 {
51 uint32 FirstSplineIndex = INDEX_NONE;
52 uint32 NumSplines = 0;
53 };
55
56 FPrimitiveSlot& Register(const FPrimitiveSceneInfo& PrimitiveSceneInfo);
57 void Unregister(const FPrimitiveSceneInfo& PrimitiveSceneInfo);
58 void AllocTextureSpace(const FPrimitiveSceneInfo& PrimitiveSceneInfo, uint32 NumSplines, FPrimitiveSlot& OutSlot);
59 static uint32 GetNumSplines(const FPrimitiveSceneInfo& SceneInfo);
60 void AssignCoordinates(const FPrimitiveSceneInfo& SceneInfo, const FPrimitiveSlot& Slot);
61 template<typename TSplineMeshSceneProxy>
62 void AssignCoordinates(TSplineMeshSceneProxy* SceneProxy, const FPrimitiveSlot& Slot);
63 void DefragTexture();
64 FRDGBufferSRVRef GetInstanceIdLookupSRV(FRDGBuilder& GraphBuilder, bool bForceUpdate);
65 void ClearAllCache();
66
67private:
68 FPrimitiveSlotMap RegisteredPrimitives;
69 TArray<uint32> RegisteredInstanceIds;
70 FSpanAllocator SlotAllocator;
74 bool bInstanceLookupDirty = true;
75 bool bOverflowError = false;
76};
77
80{
82
83public:
85
86 virtual void PreSceneUpdate(FRDGBuilder& GraphBuilder, const FScenePreUpdateChangeSet& ChangeSet, FSceneUniformBuffer& SceneUniforms) override;
87 virtual void PostSceneUpdate(FRDGBuilder& GraphBuilder, const FScenePostUpdateChangeSet& ChangeSet) override;
88 virtual void PostGPUSceneUpdate(FRDGBuilder& GraphBuilder, FSceneUniformBuffer& SceneUniforms) override;
89
90private:
91 void AddUpdatePass(
92 FRDGBuilder& GraphBuilder,
93 FSceneUniformBuffer& SceneUniforms,
96 FVector2f Extent,
98 bool bFullUpdate,
99 bool bForceUpdate
100 );
101
102 FSplineMeshSceneExtension* SceneData = nullptr;
104};
105
@ INDEX_NONE
Definition CoreMiscDefines.h:150
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#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 PrimitiveSceneInfo.h:266
Definition RenderGraphResources.h:1426
Definition RenderGraphBuilder.h:49
Definition RenderGraphResources.h:571
Definition ScenePrimitiveUpdates.h:129
Definition ScenePrimitiveUpdates.h:116
Definition SceneRendering.h:2023
Definition SceneUniformBuffer.h:137
Definition ScenePrivate.h:2875
Definition SpanAllocator.h:15
Definition SplineMeshSceneResources.h:32
virtual ISceneExtensionUpdater * CreateUpdater() override
Definition SplineMeshSceneResources.cpp:140
uint32 NumRegisteredPrimitives() const
Definition SplineMeshSceneResources.h:46
virtual ISceneExtensionRenderer * CreateRenderer(FSceneRendererBase &InSceneRenderer, const FEngineShowFlags &EngineShowFlags) override
Definition SplineMeshSceneResources.cpp:145
static bool ShouldCreateExtension(FScene &InScene)
Definition SplineMeshSceneResources.cpp:135
Definition SplineMeshSceneResources.h:108
virtual void UpdateSceneUniformBuffer(FRDGBuilder &GraphBuilder, FSceneUniformBuffer &SceneUniforms) override
Definition SplineMeshSceneResources.cpp:562
FSplineMeshSceneRenderer(FSceneRendererBase &InSceneRenderer, FSplineMeshSceneExtension &InSceneData)
Definition SplineMeshSceneResources.h:112
Definition SplineMeshSceneResources.h:80
virtual void PreSceneUpdate(FRDGBuilder &GraphBuilder, const FScenePreUpdateChangeSet &ChangeSet, FSceneUniformBuffer &SceneUniforms) override
Definition SplineMeshSceneResources.cpp:314
FSplineMeshSceneUpdater(FSplineMeshSceneExtension &InSceneData)
Definition SplineMeshSceneResources.h:84
virtual void PostSceneUpdate(FRDGBuilder &GraphBuilder, const FScenePostUpdateChangeSet &ChangeSet) override
Definition SplineMeshSceneResources.cpp:330
virtual void PostGPUSceneUpdate(FRDGBuilder &GraphBuilder, FSceneUniformBuffer &SceneUniforms) override
Definition SplineMeshSceneResources.cpp:373
Definition SceneExtensions.h:69
Definition SceneExtensions.h:45
Definition SceneExtensions.h:24
ISceneExtension(FScene &InScene)
Definition SceneExtensions.h:29
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition RefCounting.h:454
Definition ShowFlags.h:56
Definition RendererInterface.h:494