UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
NaniteOwnershipVisibilitySceneExtension.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#include "PrimitiveSceneInfo.h" // FPersistentPrimitiveIndex
7
8class FRDGBuffer;
9
10namespace Nanite
11{
12
13// This scene extension keeps track of nanite primitives that have bOwnerNoSee or bOnlyOwnerSee enabled on them.
14// It then creates a bitmask GPU buffer to efficiently hide such primitives in the relevant views.
16{
18public:
20
22
23 //~ Begin ISceneExtension Interface.
24 virtual ISceneExtensionUpdater* CreateUpdater() override;
26 //~ End ISceneExtension Interface.
27
30
31private:
32
33 // Private updater class for handling adding and removal of primitives.
34 class FUpdater : public ISceneExtensionUpdater
35 {
37 public:
39
40 //~ Begin ISceneExtensionUpdater Interface.
41 virtual void PreSceneUpdate(FRDGBuilder& GraphBuilder, const FScenePreUpdateChangeSet& ChangeSet, FSceneUniformBuffer& SceneUniforms) override;
42 virtual void PostSceneUpdate(FRDGBuilder& GraphBuilder, const FScenePostUpdateChangeSet& ChangeSet) override;
43 //~ End ISceneExtensionUpdater Interface.
44
45 private:
47 };
48
49 // Private "renderer" class, creating a bit array buffer with one bit per primitive per view.
50 class FRenderer : public ISceneExtensionRenderer
51 {
53 public:
56 }
57
58 //~ Begin ISceneExtensionRenderer Interface.
59 virtual void UpdateViewData(FRDGBuilder& GraphBuilder, const FRendererViewDataManager& ViewDataManager) override;
60 virtual void UpdateSceneUniformBuffer(FRDGBuilder& GraphBuilder, FSceneUniformBuffer& SceneUniforms) override;
61 //~ End ISceneExtensionRenderer Interface.
62
63 private:
65 FRDGBuffer* OwnershipHiddenPrimitivesBitArrayBuffer = nullptr;
66 };
67
68 TArray<FPersistentPrimitiveIndex> NanitePrimitivesWithOwnership;
69};
70
71} // namespace Nanite
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
#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
Definition RenderGraphResources.h:1321
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 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 NaniteOwnershipVisibilitySceneExtension.h:16
virtual ISceneExtensionRenderer * CreateRenderer(FSceneRendererBase &InSceneRenderer, const FEngineShowFlags &EngineShowFlags) override
Definition NaniteOwnershipVisibilitySceneExtension.cpp:44
virtual ISceneExtensionUpdater * CreateUpdater() override
Definition NaniteOwnershipVisibilitySceneExtension.cpp:39
static bool ShouldCreateExtension(FScene &Scene)
Definition NaniteOwnershipVisibilitySceneExtension.cpp:34
const TArray< FPersistentPrimitiveIndex > & GetPrimitivesWithOwnership() const
Definition NaniteOwnershipVisibilitySceneExtension.cpp:49
int32 GetMaxPersistentPrimitiveIndex() const
Definition NaniteOwnershipVisibilitySceneExtension.cpp:54
Definition Array.h:670
Definition SkinnedMeshComponent.h:50
Definition ShowFlags.h:56