UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
HierarchicalStaticMeshSceneProxy.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"
10#include "StaticMeshResources.h"
12#include "Async/Mutex.h"
13
14struct FClusterNode;
18
34
36{
38 const TArray<FClusterNode>& ClusterTree;
39
40 TArray<FBox> UnbuiltBounds;
41 int32 FirstUnbuiltIndex;
42 int32 InstanceCountToRender;
43
44 int32 FirstOcclusionNode;
45 int32 LastOcclusionNode;
46 TArray<FBoxSphereBounds> OcclusionBounds;
48 UE::FMutex OcclusionResultsMutex;
49 EHISMViewRelevanceType ViewRelevance;
50 bool bDitheredLODTransitions;
51 uint32 SceneProxyCreatedFrameNumberRenderThread;
52
53#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
54 mutable TArray<uint32> SingleDebugRuns[MAX_STATIC_MESH_LODS];
55 mutable int32 SingleDebugTotalInstances[MAX_STATIC_MESH_LODS];
56 mutable TArray<uint32> MultipleDebugRuns[MAX_STATIC_MESH_LODS];
57 mutable int32 MultipleDebugTotalInstances[MAX_STATIC_MESH_LODS];
58 mutable int32 CaptureTag;
59#endif
60
61public:
62 ENGINE_API SIZE_T GetTypeHash() const override;
63
65
67
68 // FPrimitiveSceneProxy interface.
69
70 ENGINE_API virtual void CreateRenderThreadResources(FRHICommandListBase& RHICmdList) override;
71
72 ENGINE_API virtual FPrimitiveViewRelevance GetViewRelevance(const FSceneView* View) const override;
73
74 ENGINE_API virtual void GetDynamicMeshElements(const TArray<const FSceneView*>& Views, const FSceneViewFamily& ViewFamily, uint32 VisibilityMap, FMeshElementCollector& Collector) const override;
75
76 ENGINE_API virtual const TArray<FBoxSphereBounds>* GetOcclusionQueries(const FSceneView* View) const override;
77
78 ENGINE_API virtual void AcceptOcclusionResults(const FSceneView* View, TArray<bool>* Results, int32 ResultsStart, int32 NumResults) override;
79
80 virtual bool AllowInstanceCullingOcclusionQueries() const override { return false; }
81
82 virtual bool HasSubprimitiveOcclusionQueries() const override
83 {
84 return FirstOcclusionNode > 0;
85 }
86
87 virtual bool GetInstanceDrawDistanceMinMax(FVector2f& OutDistanceMinMax) const override;
88
90
91 ENGINE_API virtual void ApplyWorldOffset(FRHICommandListBase& RHICmdList, FVector InOffset) override;
92
93 ENGINE_API void FillDynamicMeshElements(const FSceneView* View, FMeshElementCollector& Collector, const FFoliageElementParams& ElementParams, const FFoliageRenderInstanceParams& Instances) const;
94
95 template<bool TUseVector, bool THasWPODisplacement>
96 void Traverse(const FFoliageCullInstanceParams& Params, int32 Index, int32 MinLOD, int32 MaxLOD, bool bFullyContained = false) const;
97};
uint32 GFrameNumberRenderThread
Definition CoreGlobals.cpp:427
FPlatformTypes::SIZE_T SIZE_T
An unsigned integer the same size as a pointer, the same as UPTRINT.
Definition Platform.h:1150
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
EHISMViewRelevanceType
Definition HierarchicalInstancedStaticMeshComponent.h:19
#define MAX_STATIC_MESH_LODS
Definition StaticMeshResources.h:59
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition HierarchicalStaticMeshSceneProxy.h:36
virtual ENGINE_API FPrimitiveViewRelevance GetViewRelevance(const FSceneView *View) const override
Definition HierarchicalInstancedStaticMesh.cpp:884
virtual ENGINE_API void CreateRenderThreadResources(FRHICommandListBase &RHICmdList) override
Definition HierarchicalInstancedStaticMesh.cpp:878
virtual bool HasSubprimitiveOcclusionQueries() const override
Definition HierarchicalStaticMeshSceneProxy.h:82
virtual ENGINE_API void ApplyWorldOffset(FRHICommandListBase &RHICmdList, FVector InOffset) override
Definition HierarchicalInstancedStaticMesh.cpp:927
ENGINE_API SIZE_T GetTypeHash() const override
Definition HierarchicalInstancedStaticMesh.cpp:784
virtual ENGINE_API void GetDynamicMeshElements(const TArray< const FSceneView * > &Views, const FSceneViewFamily &ViewFamily, uint32 VisibilityMap, FMeshElementCollector &Collector) const override
Definition HierarchicalInstancedStaticMesh.cpp:1499
ENGINE_API void FillDynamicMeshElements(const FSceneView *View, FMeshElementCollector &Collector, const FFoliageElementParams &ElementParams, const FFoliageRenderInstanceParams &Instances) const
Definition HierarchicalInstancedStaticMesh.cpp:1230
virtual bool AllowInstanceCullingOcclusionQueries() const override
Definition HierarchicalStaticMeshSceneProxy.h:80
virtual bool GetInstanceDrawDistanceMinMax(FVector2f &OutDistanceMinMax) const override
Definition HierarchicalInstancedStaticMesh.cpp:2015
ENGINE_API void SetupOcclusion(UHierarchicalInstancedStaticMeshComponent *InComponent)
Definition HierarchicalInstancedStaticMesh.cpp:827
virtual ENGINE_API void DrawStaticElements(FStaticPrimitiveDrawInterface *PDI) override
Definition HierarchicalInstancedStaticMesh.cpp:917
virtual ENGINE_API const TArray< FBoxSphereBounds > * GetOcclusionQueries(const FSceneView *View) const override
Definition HierarchicalInstancedStaticMesh.cpp:2010
virtual ENGINE_API void AcceptOcclusionResults(const FSceneView *View, TArray< bool > *Results, int32 ResultsStart, int32 NumResults) override
Definition HierarchicalInstancedStaticMesh.cpp:1976
void Traverse(const FFoliageCullInstanceParams &Params, int32 Index, int32 MinLOD, int32 MaxLOD, bool bFullyContained=false) const
Definition HierarchicalInstancedStaticMesh.cpp:1153
Definition InstancedStaticMesh.h:442
Definition MeshElementCollector.h:26
Definition RHICommandList.h:455
Definition SceneView.h:2212
Definition SceneView.h:1425
Definition SceneManagement.h:1293
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition SharedPointer.h:153
Definition Mutex.h:18
Definition HierarchicalInstancedStaticMeshComponent.h:136
Type
Definition RHIFeatureLevel.h:20
U16 Index
Definition radfft.cpp:71
Definition HierarchicalInstancedStaticMeshComponent.h:72
Definition HierarchicalInstancedStaticMesh.cpp:1002
Definition HierarchicalInstancedStaticMesh.cpp:1214
Definition HierarchicalStaticMeshSceneProxy.h:20
int32 ResultsStart
Definition HierarchicalStaticMeshSceneProxy.h:22
uint32 FrameNumberRenderThread
Definition HierarchicalStaticMeshSceneProxy.h:24
TArray< bool > Results
Definition HierarchicalStaticMeshSceneProxy.h:21
int32 NumResults
Definition HierarchicalStaticMeshSceneProxy.h:23
FFoliageOcclusionResults(TArray< bool > *InResults, int32 InResultsStart, int32 InNumResults)
Definition HierarchicalStaticMeshSceneProxy.h:26
Definition HierarchicalInstancedStaticMesh.cpp:938
Definition PrimitiveViewRelevance.h:14