UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
InstanceCullingContext.cpp File Reference

Classes

class  FCompactVisibleInstancesBaseCs
 
class  FCalculateCompactBlockInstanceOffsetsCs
 
class  FCompactVisibleInstancesCs
 
class  FBuildInstanceIdBufferAndCommandsFromPrimitiveIdsCs
 
class  FInstanceCullingDeferredContext
 
class  FClearIndirectArgInstanceCountCs
 

Macros

#define INST_CULL_CALLBACK_BIN_INDEX(CustomCode)
 
#define INST_CULL_CALLBACK(CustomCode)
 
#define INST_CULL_CREATE_STRUCT_BUFF_ARGS(ArrayName)
 
#define INST_CULL_CREATE_STRUCT_BUFF_ARGS_BIN_INDEX(ArrayName)
 

Functions

 IMPLEMENT_STATIC_UNIFORM_BUFFER_SLOT (InstanceCullingUbSlot)
 
 IMPLEMENT_STATIC_UNIFORM_BUFFER_STRUCT (FInstanceCullingGlobalUniforms, "InstanceCulling", InstanceCullingUbSlot)
 
 IMPLEMENT_STATIC_UNIFORM_BUFFER_SLOT (BatchedPrimitive)
 
 IMPLEMENT_STATIC_AND_SHADER_UNIFORM_BUFFER_STRUCT_EX (FBatchedPrimitiveParameters, "BatchedPrimitive", BatchedPrimitive, FShaderParametersMetadata::EUsageFlags::UniformView)
 
 DECLARE_GPU_STAT (BuildRenderingCommandsDeferred)
 
 DECLARE_GPU_STAT (BuildRenderingCommands)
 
FMeshDrawCommandOverrideArgs GetMeshDrawCommandOverrideArgs (const FInstanceCullingDrawParams &InstanceCullingDrawParams)
 
 IMPLEMENT_GLOBAL_SHADER (FCalculateCompactBlockInstanceOffsetsCs, "/Engine/Private/InstanceCulling/CompactVisibleInstances.usf", "CalculateCompactBlockInstanceOffsetsCS", SF_Compute)
 
 IMPLEMENT_GLOBAL_SHADER (FCompactVisibleInstancesCs, "/Engine/Private/InstanceCulling/CompactVisibleInstances.usf", "CompactVisibleInstances", SF_Compute)
 
 IMPLEMENT_GLOBAL_SHADER (FBuildInstanceIdBufferAndCommandsFromPrimitiveIdsCs, "/Engine/Private/InstanceCulling/BuildInstanceDrawCommands.usf", "InstanceCullBuildInstanceIdBufferCS", SF_Compute)
 
template<typename DataType >
FORCEINLINE int32 GetArrayDataSize (const TArrayView< const DataType > &Array)
 
template<typename DataType , typename AllocatorType >
FORCEINLINE int32 GetArrayDataSize (const TArray< DataType, AllocatorType > &Array)
 
 IMPLEMENT_GLOBAL_SHADER (FClearIndirectArgInstanceCountCs, "/Engine/Private/InstanceCulling/BuildInstanceDrawCommands.usf", "ClearIndirectArgInstanceCountCS", SF_Compute)
 

Macro Definition Documentation

◆ INST_CULL_CALLBACK

#define INST_CULL_CALLBACK (   CustomCode)
Value:
[PassParameters, DeferredContext]() \
{ \
DeferredContext->ProcessBatched(PassParameters); \
return CustomCode; \
}
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127

◆ INST_CULL_CALLBACK_BIN_INDEX

#define INST_CULL_CALLBACK_BIN_INDEX (   CustomCode)
Value:
[PassParameters, DeferredContext, BinIndex]() \
{ \
DeferredContext->ProcessBatched(PassParameters); \
return CustomCode; \
}

◆ INST_CULL_CREATE_STRUCT_BUFF_ARGS

#define INST_CULL_CREATE_STRUCT_BUFF_ARGS (   ArrayName)
Value:
GraphBuilder, \
TEXT("InstanceCulling.") TEXT(#ArrayName), \
DeferredContext->ArrayName.GetTypeSize(), \
INST_CULL_CALLBACK(DeferredContext->ArrayName.Num()), \
INST_CULL_CALLBACK(DeferredContext->ArrayName.GetData()), \
INST_CULL_CALLBACK(DeferredContext->ArrayName.Num() * DeferredContext->ArrayName.GetTypeSize())
#define TEXT(x)
Definition Platform.h:1272

◆ INST_CULL_CREATE_STRUCT_BUFF_ARGS_BIN_INDEX

#define INST_CULL_CREATE_STRUCT_BUFF_ARGS_BIN_INDEX (   ArrayName)
Value:
GraphBuilder, \
TEXT("InstanceCulling.") TEXT(#ArrayName), \
sizeof(DeferredContext->ArrayName[BinIndex][0]), \
INST_CULL_CALLBACK_BIN_INDEX(DeferredContext->ArrayName[BinIndex].Num()), \
INST_CULL_CALLBACK_BIN_INDEX(DeferredContext->ArrayName[BinIndex].GetData()), \
INST_CULL_CALLBACK_BIN_INDEX(DeferredContext->ArrayName[BinIndex].Num() * sizeof(DeferredContext->ArrayName[BinIndex][0]))

Function Documentation

◆ DECLARE_GPU_STAT() [1/2]

DECLARE_GPU_STAT ( BuildRenderingCommands  )

◆ DECLARE_GPU_STAT() [2/2]

DECLARE_GPU_STAT ( BuildRenderingCommandsDeferred  )

◆ GetArrayDataSize() [1/2]

template<typename DataType , typename AllocatorType >
FORCEINLINE int32 GetArrayDataSize ( const TArray< DataType, AllocatorType > &  Array)

◆ GetArrayDataSize() [2/2]

template<typename DataType >
FORCEINLINE int32 GetArrayDataSize ( const TArrayView< const DataType > &  Array)

◆ GetMeshDrawCommandOverrideArgs()

FMeshDrawCommandOverrideArgs GetMeshDrawCommandOverrideArgs ( const FInstanceCullingDrawParams InstanceCullingDrawParams)

◆ IMPLEMENT_GLOBAL_SHADER() [1/4]

IMPLEMENT_GLOBAL_SHADER ( FBuildInstanceIdBufferAndCommandsFromPrimitiveIdsCs  ,
"/Engine/Private/InstanceCulling/BuildInstanceDrawCommands.usf"  ,
"InstanceCullBuildInstanceIdBufferCS"  ,
SF_Compute   
)

◆ IMPLEMENT_GLOBAL_SHADER() [2/4]

IMPLEMENT_GLOBAL_SHADER ( FCalculateCompactBlockInstanceOffsetsCs  ,
"/Engine/Private/InstanceCulling/CompactVisibleInstances.usf"  ,
"CalculateCompactBlockInstanceOffsetsCS"  ,
SF_Compute   
)

◆ IMPLEMENT_GLOBAL_SHADER() [3/4]

IMPLEMENT_GLOBAL_SHADER ( FClearIndirectArgInstanceCountCs  ,
"/Engine/Private/InstanceCulling/BuildInstanceDrawCommands.usf"  ,
"ClearIndirectArgInstanceCountCS"  ,
SF_Compute   
)

◆ IMPLEMENT_GLOBAL_SHADER() [4/4]

IMPLEMENT_GLOBAL_SHADER ( FCompactVisibleInstancesCs  ,
"/Engine/Private/InstanceCulling/CompactVisibleInstances.usf"  ,
"CompactVisibleInstances"  ,
SF_Compute   
)

◆ IMPLEMENT_STATIC_AND_SHADER_UNIFORM_BUFFER_STRUCT_EX()

IMPLEMENT_STATIC_AND_SHADER_UNIFORM_BUFFER_STRUCT_EX ( FBatchedPrimitiveParameters  ,
"BatchedPrimitive"  ,
BatchedPrimitive  ,
FShaderParametersMetadata::EUsageFlags::UniformView   
)

◆ IMPLEMENT_STATIC_UNIFORM_BUFFER_SLOT() [1/2]

IMPLEMENT_STATIC_UNIFORM_BUFFER_SLOT ( BatchedPrimitive  )

◆ IMPLEMENT_STATIC_UNIFORM_BUFFER_SLOT() [2/2]

IMPLEMENT_STATIC_UNIFORM_BUFFER_SLOT ( InstanceCullingUbSlot  )

◆ IMPLEMENT_STATIC_UNIFORM_BUFFER_STRUCT()

IMPLEMENT_STATIC_UNIFORM_BUFFER_STRUCT ( FInstanceCullingGlobalUniforms  ,
"InstanceCulling"  ,
InstanceCullingUbSlot   
)