UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FInstanceSceneDataBuffers Class Reference

#include <InstanceDataSceneProxy.h>

+ Inheritance diagram for FInstanceSceneDataBuffers:

Classes

struct  FAccessTag
 
struct  FCompressedSpatialHashItem
 
struct  FReadView
 
struct  FWriteView
 

Public Member Functions

ENGINE_API FInstanceSceneDataBuffers ()
 
ENGINE_API FInstanceSceneDataBuffers (bool InbInstanceDataIsGPUOnly)
 
 FInstanceSceneDataBuffers (FInstanceSceneDataBuffers &&Other)=default
 
const FInstanceDataFlagsGetFlags () const
 
int32 GetNumInstances (FAccessTag AccessTag=FAccessTag()) const
 
int32 GetNumCustomDataFloats (FAccessTag AccessTag=FAccessTag()) const
 
ENGINE_API uint32 GetPayloadDataStride (FAccessTag AccessTag=FAccessTag()) const
 
ENGINE_API FRenderBounds GetInstanceLocalBounds (int32 InstanceIndex, FAccessTag AccessTag=FAccessTag()) const
 
ENGINE_API FRenderBounds GetInstancePrimitiveRelativeBounds (int32 InstanceIndex, FAccessTag AccessTag=FAccessTag()) const
 
ENGINE_API FBoxSphereBounds GetInstanceWorldBounds (int32 InstanceIndex, FAccessTag AccessTag=FAccessTag()) const
 
ENGINE_API FMatrix GetInstanceToWorld (int32 InstanceIndex, FAccessTag AccessTag=FAccessTag()) const
 
bool IsInstanceDataGPUOnly (FAccessTag AccessTag=FAccessTag()) const
 
FRenderTransform GetInstanceToPrimitiveRelative (int32 InstanceIndex, FAccessTag AccessTag=FAccessTag()) const
 
FRenderTransform GetPrevInstanceToPrimitiveRelative (int32 InstanceIndex, FAccessTag AccessTag=FAccessTag()) const
 
const FVectorGetPrimitiveWorldSpaceOffset (FAccessTag AccessTag=FAccessTag()) const
 
bool GetInstanceVisible (int32 InstanceIndex, FAccessTag AccessTag=FAccessTag()) const
 
const FRenderTransformGetPrimitiveToRelativeWorld (FAccessTag AccessTag=FAccessTag()) const
 
ENGINE_API FRenderTransform ComputeInstanceToPrimitiveRelative (const FMatrix44f &InstanceToPrimitive, FAccessTag AccessTag=FAccessTag())
 
ENGINE_API void SetPrimitiveLocalToWorld (const FMatrix &PrimitiveLocalToWorld, FAccessTag AccessTag=FAccessTag())
 
ENGINE_API FInstanceDataBufferHeader GetHeader (FAccessTag AccessTag=FAccessTag()) const
 
ENGINE_API void ValidateData () const
 
FWriteView BeginWriteAccess (FAccessTag AccessTag)
 
void EndWriteAccess (FAccessTag AccessTag)
 
FReadView GetReadView (FAccessTag AccessTag=FAccessTag()) const
 
ENGINE_API void SetImmutable (FInstanceSceneDataImmutable &&ImmutableData, FAccessTag AccessTag)
 
FInstanceSceneDataImmutablePtr GetImmutable () const
 

Static Public Member Functions

static ENGINE_API uint32 CalcPayloadDataStride (FInstanceDataFlags Flags, int32 InNumCustomDataFloats, int32 InNumPayloadExtensionFloat4s)
 

Protected Member Functions

void ValidateAccess (const FAccessTag &AccessTag) const
 

Protected Attributes

FRenderTransform PrimitiveToRelativeWorld
 
FVector PrimitiveWorldSpaceOffset
 
TArray< FRenderBoundsInstanceLocalBounds
 
TArray< floatInstanceCustomData
 
TArray< floatInstanceRandomIDs
 
TArray< FVector4fInstanceLightShadowUVBias
 
TArray< uint32InstanceSkinningData
 
TArray< uint32InstanceHierarchyOffset
 
TArray< FVector4fInstancePayloadExtension
 
TArray< FRenderTransformInstanceToPrimitiveRelative
 
TArray< FRenderTransformPrevInstanceToPrimitiveRelative
 
TBitArray VisibleInstances
 
int32 NumInstancesGPUOnly = 0
 
int32 NumCustomDataFloats = 0
 
FInstanceDataFlags Flags
 
bool bInstanceDataIsGPUOnly: 1 = false
 
FInstanceSceneDataImmutablePtr Immutable
 

Constructor & Destructor Documentation

◆ FInstanceSceneDataBuffers() [1/3]

FInstanceSceneDataBuffers::FInstanceSceneDataBuffers ( )

◆ FInstanceSceneDataBuffers() [2/3]

FInstanceSceneDataBuffers::FInstanceSceneDataBuffers ( bool  InbInstanceDataIsGPUOnly)

◆ FInstanceSceneDataBuffers() [3/3]

FInstanceSceneDataBuffers::FInstanceSceneDataBuffers ( FInstanceSceneDataBuffers &&  Other)
default

Member Function Documentation

◆ BeginWriteAccess()

FWriteView FInstanceSceneDataBuffers::BeginWriteAccess ( FAccessTag  AccessTag)
inline

◆ CalcPayloadDataStride()

uint32 FInstanceSceneDataBuffers::CalcPayloadDataStride ( FInstanceDataFlags  Flags,
int32  InNumCustomDataFloats,
int32  InNumPayloadExtensionFloat4s 
)
static

◆ ComputeInstanceToPrimitiveRelative()

FRenderTransform FInstanceSceneDataBuffers::ComputeInstanceToPrimitiveRelative ( const FMatrix44f InstanceToPrimitive,
FAccessTag  AccessTag = FAccessTag() 
)

◆ EndWriteAccess()

void FInstanceSceneDataBuffers::EndWriteAccess ( FAccessTag  AccessTag)
inline

◆ GetFlags()

const FInstanceDataFlags & FInstanceSceneDataBuffers::GetFlags ( ) const
inline

◆ GetHeader()

FInstanceDataBufferHeader FInstanceSceneDataBuffers::GetHeader ( FAccessTag  AccessTag = FAccessTag()) const

◆ GetImmutable()

FInstanceSceneDataImmutablePtr FInstanceSceneDataBuffers::GetImmutable ( ) const
inline

◆ GetInstanceLocalBounds()

FRenderBounds FInstanceSceneDataBuffers::GetInstanceLocalBounds ( int32  InstanceIndex,
FAccessTag  AccessTag = FAccessTag() 
) const

Clamps the index to the InstanceLocalBounds size (it is always 1:1 with the instance count or exactly 1).

◆ GetInstancePrimitiveRelativeBounds()

FRenderBounds FInstanceSceneDataBuffers::GetInstancePrimitiveRelativeBounds ( int32  InstanceIndex,
FAccessTag  AccessTag = FAccessTag() 
) const

Get the primitive-relative bounds for the instance. These are the local bounds transformed into Primitive relative space using InstanceToPrimitiveRelative transform. Note that this may contain instance rotation which may possibly lead to expansion of the bounds that is less tight than a transformed sphere bounds. Clamps the index to the InstanceLocalBounds size (it is always 1:1 with the instance count or exactly 1).

◆ GetInstanceToPrimitiveRelative()

FRenderTransform FInstanceSceneDataBuffers::GetInstanceToPrimitiveRelative ( int32  InstanceIndex,
FAccessTag  AccessTag = FAccessTag() 
) const
inline

◆ GetInstanceToWorld()

FMatrix FInstanceSceneDataBuffers::GetInstanceToWorld ( int32  InstanceIndex,
FAccessTag  AccessTag = FAccessTag() 
) const

◆ GetInstanceVisible()

bool FInstanceSceneDataBuffers::GetInstanceVisible ( int32  InstanceIndex,
FAccessTag  AccessTag = FAccessTag() 
) const
inline

◆ GetInstanceWorldBounds()

FBoxSphereBounds FInstanceSceneDataBuffers::GetInstanceWorldBounds ( int32  InstanceIndex,
FAccessTag  AccessTag = FAccessTag() 
) const

Clamps the index to the InstanceLocalBounds size (it is always 1:1 with the instance count or exactly 1).

◆ GetNumCustomDataFloats()

int32 FInstanceSceneDataBuffers::GetNumCustomDataFloats ( FAccessTag  AccessTag = FAccessTag()) const
inline

◆ GetNumInstances()

int32 FInstanceSceneDataBuffers::GetNumInstances ( FAccessTag  AccessTag = FAccessTag()) const
inline

◆ GetPayloadDataStride()

uint32 FInstanceSceneDataBuffers::GetPayloadDataStride ( FAccessTag  AccessTag = FAccessTag()) const

◆ GetPrevInstanceToPrimitiveRelative()

FRenderTransform FInstanceSceneDataBuffers::GetPrevInstanceToPrimitiveRelative ( int32  InstanceIndex,
FAccessTag  AccessTag = FAccessTag() 
) const
inline

◆ GetPrimitiveToRelativeWorld()

const FRenderTransform & FInstanceSceneDataBuffers::GetPrimitiveToRelativeWorld ( FAccessTag  AccessTag = FAccessTag()) const
inline

◆ GetPrimitiveWorldSpaceOffset()

const FVector & FInstanceSceneDataBuffers::GetPrimitiveWorldSpaceOffset ( FAccessTag  AccessTag = FAccessTag()) const
inline

Get the offset for the primitive-relative space used for transforms and bounds.

◆ GetReadView()

FReadView FInstanceSceneDataBuffers::GetReadView ( FAccessTag  AccessTag = FAccessTag()) const
inline

◆ IsInstanceDataGPUOnly()

bool FInstanceSceneDataBuffers::IsInstanceDataGPUOnly ( FAccessTag  AccessTag = FAccessTag()) const
inline

Whether instance data resides only in the GPU Scene, not backed by a copy in CPU memory.

◆ SetImmutable()

void FInstanceSceneDataBuffers::SetImmutable ( FInstanceSceneDataImmutable &&  ImmutableData,
FAccessTag  AccessTag 
)

◆ SetPrimitiveLocalToWorld()

void FInstanceSceneDataBuffers::SetPrimitiveLocalToWorld ( const FMatrix PrimitiveLocalToWorld,
FAccessTag  AccessTag = FAccessTag() 
)

◆ ValidateAccess()

void FInstanceSceneDataBuffers::ValidateAccess ( const FAccessTag AccessTag) const
inlineprotected

◆ ValidateData()

void FInstanceSceneDataBuffers::ValidateData ( ) const

Member Data Documentation

◆ bInstanceDataIsGPUOnly

bool FInstanceSceneDataBuffers::bInstanceDataIsGPUOnly
protected

Instance data stored only in GPUScene, not stored in the above arrays in CPU memory.

◆ Flags

FInstanceDataFlags FInstanceSceneDataBuffers::Flags
protected

◆ Immutable

FInstanceSceneDataImmutablePtr FInstanceSceneDataBuffers::Immutable
protected

◆ InstanceCustomData

TArray<float> FInstanceSceneDataBuffers::InstanceCustomData
protected

◆ InstanceHierarchyOffset

TArray<uint32> FInstanceSceneDataBuffers::InstanceHierarchyOffset
protected

◆ InstanceLightShadowUVBias

TArray<FVector4f> FInstanceSceneDataBuffers::InstanceLightShadowUVBias
protected

◆ InstanceLocalBounds

TArray<FRenderBounds> FInstanceSceneDataBuffers::InstanceLocalBounds
protected

◆ InstancePayloadExtension

TArray<FVector4f> FInstanceSceneDataBuffers::InstancePayloadExtension
protected

◆ InstanceRandomIDs

TArray<float> FInstanceSceneDataBuffers::InstanceRandomIDs
protected

◆ InstanceSkinningData

TArray<uint32> FInstanceSceneDataBuffers::InstanceSkinningData
protected

◆ InstanceToPrimitiveRelative

TArray<FRenderTransform> FInstanceSceneDataBuffers::InstanceToPrimitiveRelative
protected

◆ NumCustomDataFloats

int32 FInstanceSceneDataBuffers::NumCustomDataFloats = 0
protected

◆ NumInstancesGPUOnly

int32 FInstanceSceneDataBuffers::NumInstancesGPUOnly = 0
protected

◆ PrevInstanceToPrimitiveRelative

TArray<FRenderTransform> FInstanceSceneDataBuffers::PrevInstanceToPrimitiveRelative
protected

◆ PrimitiveToRelativeWorld

FRenderTransform FInstanceSceneDataBuffers::PrimitiveToRelativeWorld
protected

◆ PrimitiveWorldSpaceOffset

FVector FInstanceSceneDataBuffers::PrimitiveWorldSpaceOffset
protected

◆ VisibleInstances

TBitArray FInstanceSceneDataBuffers::VisibleInstances
protected

The documentation for this class was generated from the following files: