UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
NaniteSceneProxy.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 "RayTracingGeometry.h"
11#include "LocalVertexFactory.h"
12#include "Matrix3x4.h"
14
16class UStaticMeshComponent;
20class USkinnedAsset;
25class UWorld;
27enum EMaterialDomain : int;
38
39namespace Nanite
40{
41
64
66{
67 FString AssetName;
74
82
83 inline bool IsValid(bool bAllowMasked) const
84 {
85 return !bHasAnyError && !bHasSky && (bAllowMasked || !bHasMasked);
86 }
87
88 inline UMaterialInterface* GetMaterial(int32 MaterialIndex) const
89 {
90 if (Entries.IsValidIndex(MaterialIndex))
91 {
92 return Entries[MaterialIndex].Material;
93 }
94
95 return nullptr;
96 }
97
98 inline UMaterialInterface* GetSafeMaterial(int32 MaterialIndex) const
99 {
100 if (Entries.IsValidIndex(MaterialIndex))
101 {
102 const FMaterialAuditEntry& AuditEntry = Entries[MaterialIndex];
104 }
105
106 return nullptr;
107 }
108
109 inline bool HasPerInstanceRandomID(int32 MaterialIndex) const
110 {
111 if (Entries.IsValidIndex(MaterialIndex))
112 {
113 return Entries[MaterialIndex].bHasPerInstanceRandomID;
114 }
115
116 return false;
117 }
118
119 inline bool HasPerInstanceCustomData(int32 MaterialIndex) const
120 {
121 if (Entries.IsValidIndex(MaterialIndex))
122 {
123 return Entries[MaterialIndex].bHasPerInstanceCustomData;
124 }
125
126 return false;
127 }
128
129 inline FVector4f GetLocalUVDensities(int32 MaterialIndex) const
130 {
131 if (Entries.IsValidIndex(MaterialIndex))
132 {
133 return Entries[MaterialIndex].LocalUVDensities;
134 }
135 return FVector4f(1.0f);
136 }
137};
138
139ENGINE_API void AuditMaterials(const USkinnedMeshComponent* Component, FMaterialAudit& Audit, bool bSetMaterialUsage = true);
140ENGINE_API void AuditMaterials(const UStaticMeshComponent* Component, FMaterialAudit& Audit, bool bSetMaterialUsage = true);
141ENGINE_API void AuditMaterials(const FStaticMeshSceneProxyDesc* ProxyDesc, FMaterialAudit& Audit, bool bSetMaterialUsage = true);
142ENGINE_API void AuditMaterials(const FSkinnedMeshSceneProxyDesc* ProxyDesc, FMaterialAudit& Audit, bool bSetMaterialUsage = true);
143
150
151ENGINE_API bool IsMaskingAllowed(UWorld* World, bool bForceNaniteForMasked);
152
159
161
179
191
192// Note: Keep NANITE_FILTER_FLAGS_NUM_BITS in sync
193enum class EFilterFlags : uint8
194{
195 None = 0u,
196 StaticMesh = (1u << 0u),
197 InstancedStaticMesh = (1u << 1u),
198 Foliage = (1u << 2u),
199 Grass = (1u << 3u),
200 Landscape = (1u << 4u),
201 StaticMobility = (1u << 5u),
202 NonStaticMobility = (1u << 6u),
203 SkeletalMesh = (1u << 7u),
204 All = 0xFF
205};
206
208
210{
211public:
212#if WITH_EDITOR
213 enum class EHitProxyMode : uint8
214 {
217 };
218#endif
219
221 {
222 FMaterialRenderProxy* RasterMaterialProxy = nullptr;
223 FMaterialRenderProxy* ShadingMaterialProxy = nullptr;
224
225 #if WITH_EDITOR
226 HHitProxy* HitProxy = nullptr;
227 #endif
228 int32 MaterialIndex = INDEX_NONE;
229 float MaxWPOExtent = 0.0f;
230
233
235 FVector4f LocalUVDensities = FVector4f(1.0f);
236
239 uint8 bHasVoxels : 1 = false;
240 uint8 bHidden : 1 = false;
241 uint8 bCastShadow : 1 = false;
243 #if WITH_EDITORONLY_DATA
244 uint8 bSelected : 1 = false;
245 #endif
246
247 ENGINE_API void ResetToDefaultMaterial(bool bShading = true, bool bRaster = true);
248
249 inline bool IsProgrammableRaster(bool bEvaluateWPO) const
250 {
251 return IsVertexProgrammableRaster(bEvaluateWPO) || IsPixelProgrammableRaster();
252 }
253
255 {
256 const bool bEnableWPO = (bEvaluateWPO && MaterialRelevance.bUsesWorldPositionOffset);
257 const bool bEnableVertexUVs = MaterialRelevance.bUsesCustomizedUVs && IsPixelProgrammableRaster();
258 return bEnableWPO || bEnableVertexUVs || MaterialRelevance.bUsesDisplacement || MaterialRelevance.bUsesFirstPersonInterpolation;
259 }
260
261 inline bool IsPixelProgrammableRaster() const
262 {
263 // NOTE: MaterialRelevance.bTwoSided does not go into bHasPixelProgrammableRaster
264 // because we want only want this flag to control culling, not a full raster bin
265 return MaterialRelevance.bUsesPixelDepthOffset || MaterialRelevance.bMasked;
266 }
267 };
268
269public:
270
273 {
274 bIsNaniteMesh = true;
275 bIsAlwaysVisible = SupportsAlwaysVisible();
276 bHasVertexProgrammableRaster = false;
277 bHasPixelProgrammableRaster = false;
278 bHasDynamicDisplacement = false;
279 bHasVoxels = false;
280 bReverseCulling = false;
281 bHasPerClusterDisplacementFallbackRaster = false;
282 bImplementsStreamableAssetGathering = true;
283 #if WITH_EDITOR
284 bHasSelectedInstances = false;
285 #endif
286 }
287
288 FSceneProxyBase(const UPrimitiveComponent* Component)
290 {
291 bIsNaniteMesh = true;
292 bIsAlwaysVisible = SupportsAlwaysVisible();
293 bHasVertexProgrammableRaster = false;
294 bHasPixelProgrammableRaster = false;
295 bHasDynamicDisplacement = false;
296 bHasVoxels = false;
297 bReverseCulling = false;
298 bHasPerClusterDisplacementFallbackRaster = false;
299 bImplementsStreamableAssetGathering = true;
300 #if WITH_EDITOR
301 bHasSelectedInstances = false;
302 #endif
303 }
304
305 virtual ~FSceneProxyBase() = default;
306
307#if WITH_EDITOR
309 ENGINE_API virtual HHitProxy* CreateHitProxies(UPrimitiveComponent* Component, TArray<TRefCountPtr<HHitProxy>>& OutHitProxies) override;
310#endif
311
312 inline bool IsVisibleInNanite() const
313 {
314#if !WITH_EDITOR
315 return IsDrawnInGame() || CastsHiddenShadow() || IsVisibleInLumenScene();
316#else
317 return true;
318#endif
319 }
320
321 virtual bool IsUsingDistanceCullFade() const override
322 {
323 // Disable distance cull fading, as this is not supported anyways (and it has CPU overhead)
324 return false;
325 }
326
327 virtual bool CanBeOccluded() const override
328 {
329 // Disable slow occlusion paths(Nanite does its own occlusion culling)
330 return false;
331 }
332
333 inline bool HasVertexProgrammableRaster() const
334 {
335 return bHasVertexProgrammableRaster;
336 }
337
338 inline bool HasPixelProgrammableRaster() const
339 {
340 return bHasPixelProgrammableRaster;
341 }
342
343 inline bool HasProgrammableRaster() const
344 {
345 return HasVertexProgrammableRaster() || HasPixelProgrammableRaster();
346 }
347
348 inline bool HasDynamicDisplacement() const
349 {
350 return bHasDynamicDisplacement;
351 }
352
353 inline bool HasVoxels() const
354 {
355 return bHasVoxels;
356 }
357
359 {
360 return MaterialSections;
361 }
362
364 {
365 return MaterialSections;
366 }
367
369 {
370 return MaterialMaxIndex;
371 }
372
374 {
375 return FilterFlags;
376 }
377
378 bool IsCullingReversedByComponent() const override
379 {
380#if SUPPORT_REVERSE_CULLING_IN_NANITE
381 return bReverseCulling;
382#else
383 return false;
384#endif
385 }
386
388 {
389 return CombinedMaterialRelevance;
390 }
391
394
395 UE_DEPRECATED(5.6, "This interface will be removed in a future release. Use Nanite::FSceneProxyBase::GetResourcePrimitiveInfo instead.")
396 virtual void GetNaniteResourceInfo(uint32& OutResourceID, uint32& OutHierarchyOffset, uint32& OutImposterIndex) const override
397 {
398 FResourcePrimitiveInfo PrimitiveInfo = GetResourcePrimitiveInfo();
399 OutResourceID = PrimitiveInfo.ResourceID;
400 OutHierarchyOffset = PrimitiveInfo.HierarchyOffset;
401 OutImposterIndex = PrimitiveInfo.ImposterIndex;
402 }
403
404 inline void SetRayTracingId(uint32 InRayTracingId) { RayTracingId = InRayTracingId; }
405 inline uint32 GetRayTracingId() const { return RayTracingId; }
406
408 inline uint32 GetRayTracingDataOffset() const { return RayTracingDataOffset; }
409
410 ENGINE_API virtual void GetStreamableRenderAssetInfo(const FBoxSphereBounds& PrimitiveBounds, TArray<FStreamingRenderAssetPrimitiveInfo>& OutStreamableRenderAssets) const override;
411#if WITH_EDITOR
413 {
414 return HitProxyIds;
415 }
416
417 inline EHitProxyMode GetHitProxyMode() const
418 {
419 return HitProxyMode;
420 }
421
422 inline bool HasSelectedInstances() const
423 {
424 return bHasSelectedInstances;
425 }
426#endif
427
428 // Nanite always uses LOD 0, and performs custom LOD streaming.
429 virtual uint8 GetCurrentFirstLODIdx_RenderThread() const override { return 0; }
430
431 inline float GetPixelProgrammableDistance() const
432 {
433 return HasPixelProgrammableRaster() ? PixelProgrammableDistance : 0.0f;
434 }
435
436 ENGINE_API float GetMaterialDisplacementFadeOutSize() const;
437
439 {
440 return bHasPerClusterDisplacementFallbackRaster;
441 }
442
443protected:
444 ENGINE_API void DrawStaticElementsInternal(FStaticPrimitiveDrawInterface* PDI, const FLightCacheInterface* LCI);
445 ENGINE_API void OnMaterialsUpdated(bool bOverrideMaterialRelevance = false);
446 ENGINE_API bool SupportsAlwaysVisible() const;
447
448#if RHI_RAYTRACING
450#endif
451
452protected:
454
455#if WITH_EDITOR
457 EHitProxyMode HitProxyMode = EHitProxyMode::MaterialSection;
458#endif
459 int32 MaterialMaxIndex = INDEX_NONE;
460 uint32 InstanceWPODisableDistance = 0;
461 float PixelProgrammableDistance = 0.0f;
462 float MaterialDisplacementFadeOutSize = 0.0f;
470#if WITH_EDITOR
471 uint8 bHasSelectedInstances : 1;
472#endif
473
474private:
475 uint32 RayTracingId = INDEX_NONE;
476 uint32 RayTracingDataOffset = INDEX_NONE;
477};
478
480{
481public:
483
486
488 ENGINE_API FSceneProxy(const FMaterialAudit& MaterialAudit, UInstancedStaticMeshComponent* Component);
490
491 ENGINE_API virtual ~FSceneProxy();
492
493public:
494 // FPrimitiveSceneProxy interface.
495 ENGINE_API virtual SIZE_T GetTypeHash() const override;
496 ENGINE_API virtual FPrimitiveViewRelevance GetViewRelevance(const FSceneView* View) const override;
497 ENGINE_API virtual void GetLightRelevance(const FLightSceneProxy* LightSceneProxy, bool& bDynamic, bool& bRelevant, bool& bLightMapped, bool& bShadowMapped) const override;
499 virtual bool CanApplyStreamableRenderAssetScaleFactor() const override { return true; }
500
501#if WITH_EDITOR
504#endif
506 ENGINE_API virtual void GetDynamicMeshElements(const TArray<const FSceneView*>& Views, const FSceneViewFamily& ViewFamily, uint32 VisibilityMap, FMeshElementCollector& Collector) const override;
507
509
510#if NANITE_ENABLE_DEBUG_RENDERING
512 ENGINE_API virtual bool GetCollisionMeshElement(
513 int32 LODIndex,
514 int32 BatchIndex,
515 int32 ElementIndex,
518 FMeshBatch& OutMeshBatch) const;
519#endif
520
521#if RHI_RAYTRACING
522 ENGINE_API virtual bool HasRayTracingRepresentation() const override;
523 virtual bool IsRayTracingRelevant() const override { return true; }
524 virtual bool IsRayTracingStaticRelevant() const override { return !bDynamicRayTracingGeometry; }
529#endif
530
531 ENGINE_API virtual uint32 GetMemoryFootprint() const override;
532
533 virtual void GetLCIs(FLCIArray& LCIs) override
534 {
536 LCIs.Add(LCI);
537 }
538
540 ENGINE_API virtual bool HasDistanceFieldRepresentation() const override;
541
542 ENGINE_API virtual const FCardRepresentationData* GetMeshCardRepresentation() const override;
543
544 ENGINE_API virtual int32 GetLightMapCoordinateIndex() const override;
545
546 ENGINE_API virtual FResourceMeshInfo GetResourceMeshInfo() const override;
548
551
553
555
556 ENGINE_API virtual void SetInstanceCullDistance_RenderThread(float StartCullDistance, float EndCullDistance) override;
557
559
561
563 {
564 return StaticMesh;
565 }
566
567protected:
568 ENGINE_API virtual void CreateRenderThreadResources(FRHICommandListBase& RHICmdList) override;
569
571
573 {
574 public:
576
577 // FLightCacheInterface.
579
580 private:
581 TArray<FGuid> IrrelevantLights;
582 };
583
584 ENGINE_API bool IsCollisionView(const FEngineShowFlags& EngineShowFlags, bool& bDrawSimpleCollision, bool& bDrawComplexCollision) const;
585
586#if RHI_RAYTRACING
589 ENGINE_API void GetDynamicRayTracingInstances_Internal(FRayTracingInstanceCollector& Collector, FRWBuffer* DynamicVertexBuffer = nullptr, bool bUpdateRayTracingGeometry = true);
590#endif // RHI_RAYTRACING
591
592#if RHI_RAYTRACING || NANITE_ENABLE_DEBUG_RENDERING
593 ENGINE_API bool IsReversedCullingNeeded(bool bUseReversedIndices) const;
594#endif
595
596protected:
598
599 const FResources* Resources = nullptr;
600
604
606
608
609 const UStaticMesh* StaticMesh = nullptr;
610
613
616
619
622
623#if RHI_RAYTRACING
626
631
632 bool bSupportRayTracing : 1 = false;
633 bool bHasRayTracingRepresentation : 1 = false;
634 bool bDynamicRayTracingGeometry : 1 = false;
635
637#endif
638
640
641#if NANITE_ENABLE_DEBUG_RENDERING
642 UObject* Owner;
643
646
649
651 ECollisionTraceFlag CollisionTraceFlag;
652
654 FCollisionResponseContainer CollisionResponse;
655
659 int32 ForcedLodModel;
660
662 int32 LODForCollision;
663
666
669#endif
670
671#if RHI_RAYTRACING || NANITE_ENABLE_DEBUG_RENDERING
672 class FFallbackLODInfo
673 {
674 public:
676 struct FSectionInfo
677 {
679 FSectionInfo()
680 : MaterialProxy(nullptr)
681 #if WITH_EDITOR
682 , bSelected(false)
683 , HitProxy(nullptr)
684 #endif
685 {}
686
689
690 #if WITH_EDITOR
692 bool bSelected;
693
696 #endif
697
698 #if WITH_EDITORONLY_DATA
699 // The material index from the component. Used by the texture streaming accuracy viewmodes.
700 int32 MaterialIndex;
701 #endif
702 };
703
706
708 FColorVertexBuffer* OverrideColorVertexBuffer;
709
711
719 );
720 };
721
723 uint32 SetMeshElementGeometrySource(
724 const FStaticMeshSection& Section,
725 const FFallbackLODInfo::FSectionInfo& SectionInfo,
727 const FAdditionalStaticMeshIndexBuffers* AdditionalIndexBuffers,
728 const ::FVertexFactory* VertexFactory,
729 bool bWireframe,
732#endif
733
734#if RHI_RAYTRACING
736#endif
737
738#if NANITE_ENABLE_DEBUG_RENDERING
740#endif
741};
742
744 : public FSceneProxyBase
745{
746public:
748
753 bool bAllowScaling = true
754 );
755
760 bool bAllowScaling = true
761 );
762
764
765public:
766 // FPrimitiveSceneProxy interface.
767 ENGINE_API virtual void CreateRenderThreadResources(FRHICommandListBase& RHICmdList) override;
768 ENGINE_API virtual void DestroyRenderThreadResources() override;
769 ENGINE_API virtual SIZE_T GetTypeHash() const override;
770 ENGINE_API virtual FPrimitiveViewRelevance GetViewRelevance(const FSceneView* View) const override;
771#if WITH_EDITOR
773#endif
775 ENGINE_API virtual void GetDynamicMeshElements(const TArray<const FSceneView*>& Views, const FSceneViewFamily& ViewFamily, uint32 VisibilityMap, FMeshElementCollector& Collector) const override;
776
778
779 virtual bool CanApplyStreamableRenderAssetScaleFactor() const override { return true; }
780
782 ENGINE_API void DebugDrawSkeleton(int32 ViewIndex, FMeshElementCollector& Collector, const FEngineShowFlags& EngineShowFlags) const;
783
784 ENGINE_API virtual uint32 GetMemoryFootprint() const override;
785
786 ENGINE_API virtual FResourceMeshInfo GetResourceMeshInfo() const override;
788
790 {
791 if (IsVisibleInNanite())
792 {
793 return SceneExtensionProxy.Get();
794 }
795 return nullptr;
796 }
797
799 {
800 return MeshObject;
801 }
802
804 {
805 return SkinnedAsset;
806 }
807
808 ENGINE_API virtual FDesiredLODLevel GetDesiredLODLevel_RenderThread(const FSceneView* View) const final override;
809
811
812#if RHI_RAYTRACING
814
816
817 virtual bool HasRayTracingRepresentation() const override { return bHasRayTracingRepresentation; }
818 virtual bool IsRayTracingRelevant() const override { return true; }
819 virtual bool IsRayTracingStaticRelevant() const override { return !bDynamicRayTracingGeometry; }
824#endif
825
826 ENGINE_API virtual const FCardRepresentationData* GetMeshCardRepresentation() const override;
827
828protected:
829
830 ENGINE_API void UpdateLumenCardsFromBounds(bool bMostlyTwoSided);
831
832 const FResources* Resources = nullptr;
837
839
841
842#if RHI_RAYTRACING
846#endif
847
850
852
855
856#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
859#endif
860};
861
867
868} // namespace Nanite
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
ECollisionTraceFlag
Definition BodySetupEnums.h:11
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
FPlatformTypes::int16 int16
A 16-bit signed integer.
Definition Platform.h:1123
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
EBlendMode
Definition EngineTypes.h:245
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
EMaterialDomain
Definition MaterialDomain.h:13
UE::Math::TIntVector2< uint32 > FUintVector2
Definition MathFwd.h:103
UE::Math::TVector4< float > FVector4f
Definition MathFwd.h:75
ERayTracingPrimitiveFlags
Definition PrimitiveSceneProxy.h:236
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition MeshCardBuild.h:142
Definition ColorVertexBuffer.h:16
Definition RHIDefinitions.h:95
Definition DistanceFieldAtlas.h:241
Definition InstanceDataSceneProxy.h:425
Definition SceneManagement.h:820
Definition SceneManagement.h:333
Definition LightSceneProxy.h:43
Definition MaterialRenderProxy.h:102
Definition MaterialShared.h:2058
Definition MeshElementCollector.h:26
Definition NameTypes.h:617
Definition PrimitiveSceneProxy.h:296
virtual ENGINE_API HHitProxy * CreateHitProxies(UPrimitiveComponent *Component, TArray< TRefCountPtr< HHitProxy > > &OutHitProxies)
Definition PrimitiveSceneProxy.cpp:661
Definition RHICommandList.h:455
Definition RawIndexBuffer.h:130
Definition SceneView.h:2212
Definition SceneView.h:1425
Definition SkeletalMeshLODRenderData.h:128
Definition SkeletalRenderPublic.h:85
Definition SkeletalMeshRenderData.h:17
Definition SkinningSceneExtensionProxy.h:17
Definition StaticMeshResources.h:774
Definition StaticMeshResources.h:404
Definition SceneManagement.h:1293
Definition TextureResource.h:103
Definition Foliage.Build.cs:6
Definition HitProxies.h:135
Definition ComponentInterfaces.h:59
Definition Landscape.Build.cs:7
Definition NaniteSceneProxy.h:210
TArray< FMaterialSection > MaterialSections
Definition NaniteSceneProxy.h:453
uint8 bReverseCulling
Definition NaniteSceneProxy.h:468
virtual FResourceMeshInfo GetResourceMeshInfo() const =0
TArray< FMaterialSection > & GetMaterialSections()
Definition NaniteSceneProxy.h:363
virtual bool CanBeOccluded() const override
Definition NaniteSceneProxy.h:327
virtual bool IsUsingDistanceCullFade() const override
Definition NaniteSceneProxy.h:321
void SetRayTracingDataOffset(uint32 InRayTracingDataOffset)
Definition NaniteSceneProxy.h:407
virtual FResourcePrimitiveInfo GetResourcePrimitiveInfo() const =0
bool HasPixelProgrammableRaster() const
Definition NaniteSceneProxy.h:338
uint8 bHasPerClusterDisplacementFallbackRaster
Definition NaniteSceneProxy.h:469
bool HasProgrammableRaster() const
Definition NaniteSceneProxy.h:343
int32 GetMaterialMaxIndex() const
Definition NaniteSceneProxy.h:368
const TArray< FMaterialSection > & GetMaterialSections() const
Definition NaniteSceneProxy.h:358
bool HasDynamicDisplacement() const
Definition NaniteSceneProxy.h:348
bool HasVoxels() const
Definition NaniteSceneProxy.h:353
float GetPixelProgrammableDistance() const
Definition NaniteSceneProxy.h:431
uint8 bHasVertexProgrammableRaster
Definition NaniteSceneProxy.h:464
uint8 bHasVoxels
Definition NaniteSceneProxy.h:467
bool HasPerClusterDisplacementFallbackRaster() const
Definition NaniteSceneProxy.h:438
bool IsCullingReversedByComponent() const override
Definition NaniteSceneProxy.h:378
uint8 bHasDynamicDisplacement
Definition NaniteSceneProxy.h:466
bool HasVertexProgrammableRaster() const
Definition NaniteSceneProxy.h:333
uint32 GetRayTracingDataOffset() const
Definition NaniteSceneProxy.h:408
FSceneProxyBase(const UPrimitiveComponent *Component)
Definition NaniteSceneProxy.h:288
const FMaterialRelevance & GetCombinedMaterialRelevance() const
Definition NaniteSceneProxy.h:387
uint32 GetRayTracingId() const
Definition NaniteSceneProxy.h:405
FSceneProxyBase(const FPrimitiveSceneProxyDesc &Desc)
Definition NaniteSceneProxy.h:271
EFilterFlags GetFilterFlags() const
Definition NaniteSceneProxy.h:373
uint8 bHasPixelProgrammableRaster
Definition NaniteSceneProxy.h:465
virtual uint8 GetCurrentFirstLODIdx_RenderThread() const override
Definition NaniteSceneProxy.h:429
void SetRayTracingId(uint32 InRayTracingId)
Definition NaniteSceneProxy.h:404
bool IsVisibleInNanite() const
Definition NaniteSceneProxy.h:312
virtual ~FSceneProxyBase()=default
Definition NaniteSceneProxy.h:573
virtual ENGINE_API FLightInteraction GetInteraction(const FLightSceneProxy *LightSceneProxy) const override
Definition NaniteResources.cpp:1340
Definition NaniteSceneProxy.h:480
const FResources * Resources
Definition NaniteSceneProxy.h:599
virtual ENGINE_API bool HasDistanceFieldRepresentation() const override
Definition NaniteResources.cpp:2393
virtual ENGINE_API void GetPreSkinnedLocalBounds(FBoxSphereBounds &OutBounds) const override
Definition NaniteResources.cpp:1638
FTextureResource * MeshPaintTextureResource
Definition NaniteSceneProxy.h:614
virtual ENGINE_API void GetDistanceFieldAtlasData(const FDistanceFieldVolumeData *&OutDistanceFieldData, float &SelfShadowBias) const override
Definition NaniteResources.cpp:2387
virtual ENGINE_API void SetWorldPositionOffsetDisableDistance_GameThread(int32 NewValue) override
Definition NaniteResources.cpp:1753
ENGINE_API bool IsCollisionView(const FEngineShowFlags &EngineShowFlags, bool &bDrawSimpleCollision, bool &bDrawComplexCollision) const
Definition NaniteResources.cpp:2404
int32 ClampedMinLOD
Definition NaniteSceneProxy.h:621
uint32 bHasMaterialErrors
Definition NaniteSceneProxy.h:605
uint32 EndCullDistance
Definition NaniteSceneProxy.h:618
virtual ENGINE_API void CreateRenderThreadResources(FRHICommandListBase &RHICmdList) override
Definition NaniteResources.cpp:1105
virtual ENGINE_API void OnEvaluateWorldPositionOffsetChanged_RenderThread() override
Definition NaniteResources.cpp:1125
const UStaticMesh * GetStaticMesh() const
Definition NaniteSceneProxy.h:562
const FStaticMeshRenderData * RenderData
Definition NaniteSceneProxy.h:601
virtual ENGINE_API bool GetInstanceDrawDistanceMinMax(FVector2f &OutCullRange) const override
Definition NaniteResources.cpp:1733
virtual ENGINE_API void GetLightRelevance(const FLightSceneProxy *LightSceneProxy, bool &bDynamic, bool &bRelevant, bool &bLightMapped, bool &bShadowMapped) const override
Definition NaniteResources.cpp:1239
virtual ENGINE_API void GetDynamicMeshElements(const TArray< const FSceneView * > &Views, const FSceneViewFamily &ViewFamily, uint32 VisibilityMap, FMeshElementCollector &Collector) const override
Definition NaniteResources.cpp:1462
virtual ENGINE_API int32 GetLightMapCoordinateIndex() const override
Definition NaniteResources.cpp:2398
virtual ENGINE_API bool GetInstanceWorldPositionOffsetDisableDistance(float &OutWPODisableDistance) const override
Definition NaniteResources.cpp:1747
virtual void GetLCIs(FLCIArray &LCIs) override
Definition NaniteSceneProxy.h:533
virtual ENGINE_API ~FSceneProxy()
Definition NaniteResources.cpp:1098
virtual ENGINE_API FResourceMeshInfo GetResourceMeshInfo() const override
Definition NaniteResources.cpp:2343
virtual ENGINE_API FInstanceDataUpdateTaskInfo * GetInstanceDataUpdateTaskInfo() const override
Definition NaniteResources.cpp:1779
FMeshInfo MeshInfo
Definition NaniteSceneProxy.h:597
TSharedPtr< FInstanceDataSceneProxy, ESPMode::ThreadSafe > InstanceDataSceneProxy
Definition NaniteSceneProxy.h:639
virtual ENGINE_API void GetStreamableRenderAssetInfo(const FBoxSphereBounds &PrimitiveBounds, TArray< FStreamingRenderAssetPrimitiveInfo > &OutStreamableRenderAssets) const override
Definition NaniteResources.cpp:3630
virtual ENGINE_API void DrawStaticElements(FStaticPrimitiveDrawInterface *PDI) override
Definition NaniteResources.cpp:1454
virtual ENGINE_API const FCardRepresentationData * GetMeshCardRepresentation() const override
Definition NaniteResources.cpp:2382
virtual ENGINE_API void SetEvaluateWorldPositionOffsetInRayTracing(FRHICommandListBase &RHICmdList, bool bEvaluate)
Definition NaniteResources.cpp:1784
virtual ENGINE_API void SetInstanceCullDistance_RenderThread(float StartCullDistance, float EndCullDistance) override
Definition NaniteResources.cpp:1774
FBoxSphereBounds StaticMeshBounds
Definition NaniteSceneProxy.h:612
virtual bool CanApplyStreamableRenderAssetScaleFactor() const override
Definition NaniteSceneProxy.h:499
virtual FUintVector2 GetMeshPaintTextureDescriptor() const override
Definition NaniteSceneProxy.h:560
virtual ENGINE_API FResourcePrimitiveInfo GetResourcePrimitiveInfo() const override
Definition NaniteResources.cpp:2377
FUintVector2 MeshPaintTextureDescriptor
Definition NaniteSceneProxy.h:615
const FDistanceFieldVolumeData * DistanceFieldData
Definition NaniteSceneProxy.h:602
const UStaticMesh * StaticMesh
Definition NaniteSceneProxy.h:609
uint32 MeshPaintTextureCoordinateIndex
Definition NaniteSceneProxy.h:607
uint32 MinDrawDistance
Definition NaniteSceneProxy.h:617
virtual ENGINE_API SIZE_T GetTypeHash() const override
Definition NaniteResources.cpp:1146
virtual ENGINE_API FPrimitiveViewRelevance GetViewRelevance(const FSceneView *View) const override
Definition NaniteResources.cpp:1152
virtual ENGINE_API uint32 GetMemoryFootprint() const override
Definition NaniteResources.cpp:2429
const FCardRepresentationData * CardRepresentationData
Definition NaniteSceneProxy.h:603
Definition NaniteSceneProxy.h:745
FBoxSphereBounds PreSkinnedLocalBounds
Definition NaniteSceneProxy.h:838
virtual ENGINE_API ~FSkinnedSceneProxy()
Definition NaniteResources.cpp:2583
FCardRepresentationData * CardRepresentationData
Definition NaniteSceneProxy.h:840
virtual ENGINE_API uint8 GetCurrentFirstLODIdx_RenderThread() const final override
Definition NaniteResources.cpp:3150
FSkinningSceneExtensionProxy * GetSkinningSceneExtensionProxy() const override final
Definition NaniteSceneProxy.h:789
virtual ENGINE_API uint32 GetMemoryFootprint() const override
Definition NaniteResources.cpp:3101
virtual ENGINE_API FPrimitiveViewRelevance GetViewRelevance(const FSceneView *View) const override
Definition NaniteResources.cpp:2615
uint16 NumLODs
Definition NaniteSceneProxy.h:851
FSkeletalMeshRenderData * RenderData
Definition NaniteSceneProxy.h:836
uint8 bHasRayTracingRepresentation
Definition NaniteSceneProxy.h:854
USkinnedAsset * GetSkinnedAsset() const
Definition NaniteSceneProxy.h:803
uint8 bDynamicRayTracingGeometry
Definition NaniteSceneProxy.h:853
ENGINE_API void UpdateLumenCardsFromBounds(bool bMostlyTwoSided)
Definition NaniteResources.cpp:3155
virtual bool CanApplyStreamableRenderAssetScaleFactor() const override
Definition NaniteSceneProxy.h:779
TUniquePtr< FSkinningSceneExtensionProxy > SceneExtensionProxy
Definition NaniteSceneProxy.h:835
FSkeletalMeshObject * GetMeshObject() const
Definition NaniteSceneProxy.h:798
FSkeletalMeshObject * MeshObject
Definition NaniteSceneProxy.h:833
virtual ENGINE_API void DestroyRenderThreadResources() override
Definition NaniteResources.cpp:2603
virtual ENGINE_API FDesiredLODLevel GetDesiredLODLevel_RenderThread(const FSceneView *View) const final override
Definition NaniteResources.cpp:3145
ENGINE_API void DebugDrawSkeleton(int32 ViewIndex, FMeshElementCollector &Collector, const FEngineShowFlags &EngineShowFlags) const
Definition NaniteResources.cpp:2767
virtual ENGINE_API void CreateRenderThreadResources(FRHICommandListBase &RHICmdList) override
Definition NaniteResources.cpp:2587
TOptional< FLinearColor > DebugDrawColor
Definition NaniteSceneProxy.h:857
virtual ENGINE_API void GetPreSkinnedLocalBounds(FBoxSphereBounds &OutBounds) const override
Definition NaniteResources.cpp:2762
virtual ENGINE_API void GetDynamicMeshElements(const TArray< const FSceneView * > &Views, const FSceneViewFamily &ViewFamily, uint32 VisibilityMap, FMeshElementCollector &Collector) const override
Definition NaniteResources.cpp:2714
virtual ENGINE_API SIZE_T GetTypeHash() const override
Definition NaniteResources.cpp:2609
uint32 NaniteResourceID
Definition NaniteSceneProxy.h:848
virtual ENGINE_API void DrawStaticElements(FStaticPrimitiveDrawInterface *PDI) override
Definition NaniteResources.cpp:2708
virtual ENGINE_API FResourceMeshInfo GetResourceMeshInfo() const override
Definition NaniteResources.cpp:3106
uint8 bDrawDebugSkeleton
Definition NaniteSceneProxy.h:858
virtual ENGINE_API const FCardRepresentationData * GetMeshCardRepresentation() const override
Definition NaniteResources.cpp:3179
USkinnedAsset * SkinnedAsset
Definition NaniteSceneProxy.h:834
virtual ENGINE_API FResourcePrimitiveInfo GetResourcePrimitiveInfo() const override
Definition NaniteResources.cpp:3140
uint32 NaniteHierarchyOffset
Definition NaniteSceneProxy.h:849
const FResources * Resources
Definition NaniteSceneProxy.h:832
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
Definition DelegateSignatureImpl.inl:1029
Definition RefCounting.h:454
Definition SharedPointer.h:692
Definition ShaderParameterMacros.h:136
Definition UniquePtr.h:107
UE_FORCEINLINE_HINT T * Get() const
Definition UniquePtr.h:324
Definition BodySetup.h:128
Definition HierarchicalInstancedStaticMeshComponent.h:136
Definition InstancedStaticMeshComponent.h:158
Definition MaterialInterface.h:296
Definition Object.h:95
Definition SkinnedAsset.h:47
Definition SkinnedMeshComponent.h:258
Definition StaticMesh.h:593
Definition World.h:918
Definition SkinnedMeshComponent.h:50
ERayTracingMode
Definition NaniteInterface.h:18
EProxyRenderMode GetProxyRenderMode()
Definition NaniteResources.cpp:3237
void AuditMaterials(const USkinnedMeshComponent *Component, FMaterialAudit &Audit, bool bSetMaterialUsage)
Definition NaniteResources.cpp:3184
bool IsSupportedShadingModel(FMaterialShadingModelField ShadingModelField)
Definition NaniteResources.cpp:3217
EProxyRenderMode
Definition NaniteSceneProxy.h:154
@ Disallow
Disable rendering if Nanite is enabled on a mesh but is unsupported.
Definition NaniteSceneProxy.h:157
@ AllowForDebugging
Disable rendering if Nanite is enabled on a mesh but is unsupported, except for debug purpose.
Definition NaniteSceneProxy.h:156
@ Allow
Fall back to rendering Nanite proxy meshes if Nanite is unsupported. (default)
Definition NaniteSceneProxy.h:155
EFilterFlags
Definition NaniteSceneProxy.h:194
bool IsSupportedMaterialDomain(EMaterialDomain Domain)
Definition NaniteResources.cpp:3212
int16 CoarseMeshStreamingHandle
Definition PrimitiveSceneProxy.h:55
bool IsMaskingAllowed(UWorld *World, bool bForceNaniteForMasked)
Definition NaniteResources.cpp:3222
bool IsSupportedBlendMode(EBlendMode BlendMode)
Definition NaniteResources.cpp:3204
int32 FGeometryGroupHandle
Definition SceneManagement.h:74
int
Definition TestServer.py:515
@ false
Definition radaudio_common.h:23
Definition StaticMeshResources.h:394
Definition EngineTypes.h:1339
Definition PrimitiveSceneProxy.h:67
Definition EngineTypes.h:3237
Definition EngineTypes.h:3204
Definition ShowFlags.h:56
Definition InstancedStaticMeshSceneProxyDesc.h:11
Definition MaterialRelevance.h:13
uint8 bUsesDisplacement
Definition MaterialRelevance.h:40
uint8 bUsesWorldPositionOffset
Definition MaterialRelevance.h:39
uint8 bMasked
Definition MaterialRelevance.h:28
uint8 bUsesCustomizedUVs
Definition MaterialRelevance.h:42
uint8 bUsesFirstPersonInterpolation
Definition MaterialRelevance.h:56
uint8 bUsesPixelDepthOffset
Definition MaterialRelevance.h:41
Definition MaterialShared.h:1181
Definition EngineTypes.h:732
Definition MeshBatch.h:371
Definition PrimitiveSceneProxyDesc.h:12
Definition PrimitiveViewRelevance.h:14
Definition RHIUtilities.h:181
Definition RayTracingInstance.h:17
Definition SkinnedMeshSceneProxyDesc.h:21
Definition StaticMeshSceneProxyDesc.h:13
Definition StaticMeshResources.h:202
Definition StaticMeshResources.h:320
Definition StaticMeshResources.h:643
Definition NaniteSceneProxy.h:43
FVector4f LocalUVDensities
Definition NaniteSceneProxy.h:62
uint8 bHasUnsupportedBlendMode
Definition NaniteSceneProxy.h:52
UMaterialInterface * Material
Definition NaniteSceneProxy.h:44
uint8 bHasInvalidUsage
Definition NaniteSceneProxy.h:60
uint8 bHasTessellationEnabled
Definition NaniteSceneProxy.h:55
FName MaterialSlotName
Definition NaniteSceneProxy.h:46
uint8 bHasVertexUVs
Definition NaniteSceneProxy.h:57
uint8 bHasUnsupportedShadingModel
Definition NaniteSceneProxy.h:53
uint8 bHasPerInstanceRandomID
Definition NaniteSceneProxy.h:58
uint8 bHasAnyError
Definition NaniteSceneProxy.h:49
uint8 bHasPixelDepthOffset
Definition NaniteSceneProxy.h:54
uint8 bHasNullMaterial
Definition NaniteSceneProxy.h:50
uint8 bHasPerInstanceCustomData
Definition NaniteSceneProxy.h:59
uint8 bHasWorldPositionOffset
Definition NaniteSceneProxy.h:51
int32 MaterialIndex
Definition NaniteSceneProxy.h:47
uint8 bHasVertexInterpolator
Definition NaniteSceneProxy.h:56
Definition NaniteSceneProxy.h:66
uint8 bHasMasked
Definition NaniteSceneProxy.h:71
UMaterialInterface * GetMaterial(int32 MaterialIndex) const
Definition NaniteSceneProxy.h:88
TArray< FMaterialAuditEntry, TInlineAllocator< 4 > > Entries
Definition NaniteSceneProxy.h:68
bool HasPerInstanceRandomID(int32 MaterialIndex) const
Definition NaniteSceneProxy.h:109
FString AssetName
Definition NaniteSceneProxy.h:67
uint8 bHasSky
Definition NaniteSceneProxy.h:72
UMaterialInterface * FallbackMaterial
Definition NaniteSceneProxy.h:69
FMaterialAudit()
Definition NaniteSceneProxy.h:75
bool HasPerInstanceCustomData(int32 MaterialIndex) const
Definition NaniteSceneProxy.h:119
uint8 bHasAnyError
Definition NaniteSceneProxy.h:70
FVector4f GetLocalUVDensities(int32 MaterialIndex) const
Definition NaniteSceneProxy.h:129
uint8 bCompatibleWithLumenCardSharing
Definition NaniteSceneProxy.h:73
UMaterialInterface * GetSafeMaterial(int32 MaterialIndex) const
Definition NaniteSceneProxy.h:98
bool IsValid(bool bAllowMasked) const
Definition NaniteSceneProxy.h:83
Definition NaniteSceneProxy.h:163
uint32 NumMaterials
Definition NaniteSceneProxy.h:170
uint32 NumSegments
Definition NaniteSceneProxy.h:171
bool bAssembly
Definition NaniteSceneProxy.h:175
uint32 NumVertices
Definition NaniteSceneProxy.h:168
uint32 NumTriangles
Definition NaniteSceneProxy.h:169
uint32 NumClusters
Definition NaniteSceneProxy.h:166
TArray< uint32 > SegmentMapping
Definition NaniteSceneProxy.h:164
uint32 NumNodes
Definition NaniteSceneProxy.h:167
uint32 NumResidentClusters
Definition NaniteSceneProxy.h:173
FDebugName DebugName
Definition NaniteSceneProxy.h:177
Definition NaniteSceneProxy.h:181
uint32 AssemblyTransformCount
Definition NaniteSceneProxy.h:186
uint32 HierarchyOffset
Definition NaniteSceneProxy.h:183
uint32 ResourceID
Definition NaniteSceneProxy.h:182
uint32 AssemblyTransformOffset
Definition NaniteSceneProxy.h:185
uint32 ImposterIndex
Definition NaniteSceneProxy.h:184
Definition NaniteResources.h:410
Definition NaniteSceneProxy.h:221
FDisplacementScaling DisplacementScaling
Definition NaniteSceneProxy.h:231
FDisplacementFadeRange DisplacementFadeRange
Definition NaniteSceneProxy.h:232
bool IsPixelProgrammableRaster() const
Definition NaniteSceneProxy.h:261
FMaterialRelevance MaterialRelevance
Definition NaniteSceneProxy.h:234
uint8 bHidden
Definition NaniteSceneProxy.h:240
bool IsProgrammableRaster(bool bEvaluateWPO) const
Definition NaniteSceneProxy.h:249
bool IsVertexProgrammableRaster(bool bEvaluateWPO) const
Definition NaniteSceneProxy.h:254
uint8 bHasPerInstanceCustomData
Definition NaniteSceneProxy.h:238
uint8 bCastShadow
Definition NaniteSceneProxy.h:241
uint8 bAlwaysEvaluateWPO
Definition NaniteSceneProxy.h:242
uint8 bHasVoxels
Definition NaniteSceneProxy.h:239
uint8 bHasPerInstanceRandomID
Definition NaniteSceneProxy.h:237
Definition NaniteSceneProxy.h:863
static ENGINE_API TMulticastDelegate< void(const FSkinnedSceneProxy *)> OnDestroyRenderThreadResources
Definition NaniteSceneProxy.h:865
static ENGINE_API TMulticastDelegate< void(const FSkinnedSceneProxy *)> OnCreateRenderThreadResources
Definition NaniteSceneProxy.h:864
Definition Optional.h:131
Definition BoxSphereBounds.h:25