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

Classes

class  FBuildPhysicsFieldClipmapCS
 
class  FResetPhysicsFieldClipmapCS
 
struct  FVectorFieldAddOperator
 
struct  FScalarFieldAddOperator
 
struct  FIntegerFieldAddOperator
 

Functions

 DECLARE_STATS_GROUP (TEXT("PhysicsFields"), STATGROUP_PhysicsFields, STATCAT_Advanced)
 
 DECLARE_CYCLE_STAT (TEXT("Create Scene Proxy [GT]"), STAT_PhysicsFields_CreateSceneProxy, STATGROUP_PhysicsFields)
 
 DECLARE_CYCLE_STAT (TEXT("Send Render Data [GT]"), STAT_PhysicsFields_SendRenderData, STATGROUP_PhysicsFields)
 
 DECLARE_CYCLE_STAT (TEXT("UpdateResource [RT]"), STAT_PhysicsFields_UpdateResource_RT, STATGROUP_PhysicsFields)
 
 DECLARE_GPU_STAT (PhysicsFields_ClearClipmap)
 
 DECLARE_GPU_STAT (PhysicsFields_BuildClipmap)
 
 DECLARE_GPU_STAT (PhysicsFields_UpdateBuffers)
 
 DEFINE_LOG_CATEGORY_STATIC (LogGlobalField, Log, All)
 
FAutoConsoleVariableRef CVarPhysicsFieldBuildClipmap (TEXT("r.PhysicsField.BuildClipmap"), GPhysicsFieldBuildClipmap, TEXT("Build the Physics field clipmap"), ECVF_Scalability|ECVF_RenderThreadSafe)
 
template<typename BufferType , int ElementSize, EPixelFormat PixelFormat>
void InitInternalBuffer (FRHICommandListBase &RHICmdList, const TCHAR *DebugName, const uint32 ElementCount, FRWBuffer &OutputBuffer)
 
template<typename BufferType , int ElementSize, EPixelFormat PixelFormat>
void UpdateInternalBuffer (FRHICommandListBase &RHICmdList, const TCHAR *DebugName, const uint32 ElementCount, const BufferType *InputData, FRWBuffer &OutputBuffer, const bool bInitField=false)
 
FVector MinVector (const FVector &VectorA, const FVector &VectorB)
 
FVector MaxVector (const FVector &VectorA, const FVector &VectorB)
 
 IMPLEMENT_SHADER_TYPE (, FBuildPhysicsFieldClipmapCS, TEXT("/Engine/Private/PhysicsFieldBuilder.usf"), TEXT("BuildPhysicsFieldClipmapCS"), SF_Compute)
 
 IMPLEMENT_SHADER_TYPE (, FResetPhysicsFieldClipmapCS, TEXT("/Engine/Private/PhysicsFieldReset.usf"), TEXT("ResetPhysicsFieldClipmapCS"), SF_Compute)
 
FORCEINLINE void FillFieldCommands (const TArray< FFieldSystemCommand > &InputCommands, const FBox &BoundingBox, const float TimeSeconds, TArray< FFieldSystemCommand > &OutputCommands)
 
void GetFieldIndex (const uint32 FieldType, int32 &FieldIndex, EFieldOutputType &FieldOutput)
 
template<typename DataType , typename BlendOperator >
void EvaluateFieldNodes (TArray< FFieldSystemCommand > &FieldCommands, const EFieldPhysicsType FieldType, FFieldContext &FieldContext, TArray< DataType > &ResultsArray, TArray< DataType > &MaxArray)
 
void EvaluateFieldVectorNodes (TArray< FFieldSystemCommand > &FieldCommands, const EFieldPhysicsType FieldType, FFieldContext &FieldContext, TArray< FVector > &ResultsArray, TArray< FVector > &MaxArray)
 
void EvaluateFieldScalarNodes (TArray< FFieldSystemCommand > &FieldCommands, const EFieldPhysicsType FieldType, FFieldContext &FieldContext, TArray< float > &ResultsArray, TArray< float > &MaxArray)
 
void EvaluateFieldIntegerNodes (TArray< FFieldSystemCommand > &FieldCommands, const EFieldPhysicsType FieldType, FFieldContext &FieldContext, TArray< int32 > &ResultsArray, TArray< int32 > &MaxArray)
 

Variables

int32 GPhysicsFieldBuildClipmap = 1
 
float GPhysicsFieldClipmapDistance = 10000
 
FAutoConsoleVariableRef CVarPhysicsFieldClipmapDistance (TEXT("r.PhysicsField.ClipmapDistance"), GPhysicsFieldClipmapDistance, TEXT("Max distance from the clipmap center"), ECVF_RenderThreadSafe)
 
int32 GPhysicsFieldClipmapCount = 4
 
FAutoConsoleVariableRef CVarPhysicsFieldClipmapCount (TEXT("r.PhysicsField.ClipmapCount"), GPhysicsFieldClipmapCount, TEXT("Number of clipmaps used for the physics field"), ECVF_RenderThreadSafe)
 
float GPhysicsFieldClipmapExponent = 2
 
FAutoConsoleVariableRef CVarPhysicsFieldClipmapExponent (TEXT("r.PhysicsField.ClipmapExponent"), GPhysicsFieldClipmapExponent, TEXT("Exponent used to derive each clipmap's size, together with r.PhysicsField.ClipmapDistance"), ECVF_RenderThreadSafe)
 
int32 GPhysicsFieldClipmapResolution = 32
 
FAutoConsoleVariableRef CVarPhysicsFieldClipmapResolution (TEXT("r.PhysicsField.ClipmapResolution"), GPhysicsFieldClipmapResolution, TEXT("Resolution of the physics field. Higher values increase fidelity but also increase memory and composition cost."), ECVF_RenderThreadSafe)
 
int32 GPhysicsFieldSingleTarget = 0
 
FAutoConsoleVariableRef CVarPhysicsFieldSingleTarget (TEXT("r.PhysicsField.SingleTarget"), GPhysicsFieldSingleTarget, TEXT("Limnit the physics field build to only one target, the linear force"), ECVF_RenderThreadSafe)
 
int32 GPhysicsFieldEnableCulling = 1
 
FAutoConsoleVariableRef CVarPhysicsFieldEnableCulling (TEXT("r.PhysicsField.EnableCulling"), GPhysicsFieldEnableCulling, TEXT("Enable the spatial culling based on the field nodes bounds"), ECVF_RenderThreadSafe)
 

Function Documentation

◆ CVarPhysicsFieldBuildClipmap()

FAutoConsoleVariableRef CVarPhysicsFieldBuildClipmap ( TEXT("r.PhysicsField.BuildClipmap")  ,
GPhysicsFieldBuildClipmap  ,
TEXT("Build the Physics field clipmap" ,
ECVF_Scalability ECVF_RenderThreadSafe 
)

◆ DECLARE_CYCLE_STAT() [1/3]

DECLARE_CYCLE_STAT ( TEXT("Create Scene Proxy [GT]")  ,
STAT_PhysicsFields_CreateSceneProxy  ,
STATGROUP_PhysicsFields   
)

◆ DECLARE_CYCLE_STAT() [2/3]

DECLARE_CYCLE_STAT ( TEXT("Send Render Data [GT]")  ,
STAT_PhysicsFields_SendRenderData  ,
STATGROUP_PhysicsFields   
)

◆ DECLARE_CYCLE_STAT() [3/3]

DECLARE_CYCLE_STAT ( TEXT("UpdateResource [RT]")  ,
STAT_PhysicsFields_UpdateResource_RT  ,
STATGROUP_PhysicsFields   
)

◆ DECLARE_GPU_STAT() [1/3]

DECLARE_GPU_STAT ( PhysicsFields_BuildClipmap  )

◆ DECLARE_GPU_STAT() [2/3]

DECLARE_GPU_STAT ( PhysicsFields_ClearClipmap  )

◆ DECLARE_GPU_STAT() [3/3]

DECLARE_GPU_STAT ( PhysicsFields_UpdateBuffers  )

◆ DECLARE_STATS_GROUP()

DECLARE_STATS_GROUP ( TEXT("PhysicsFields")  ,
STATGROUP_PhysicsFields  ,
STATCAT_Advanced   
)

Stats

◆ DEFINE_LOG_CATEGORY_STATIC()

DEFINE_LOG_CATEGORY_STATIC ( LogGlobalField  ,
Log  ,
All   
)

Console variables

◆ EvaluateFieldIntegerNodes()

void EvaluateFieldIntegerNodes ( TArray< FFieldSystemCommand > &  FieldCommands,
const EFieldPhysicsType  FieldType,
FFieldContext FieldContext,
TArray< int32 > &  ResultsArray,
TArray< int32 > &  MaxArray 
)

◆ EvaluateFieldNodes()

template<typename DataType , typename BlendOperator >
void EvaluateFieldNodes ( TArray< FFieldSystemCommand > &  FieldCommands,
const EFieldPhysicsType  FieldType,
FFieldContext FieldContext,
TArray< DataType > &  ResultsArray,
TArray< DataType > &  MaxArray 
)

◆ EvaluateFieldScalarNodes()

void EvaluateFieldScalarNodes ( TArray< FFieldSystemCommand > &  FieldCommands,
const EFieldPhysicsType  FieldType,
FFieldContext FieldContext,
TArray< float > &  ResultsArray,
TArray< float > &  MaxArray 
)

◆ EvaluateFieldVectorNodes()

void EvaluateFieldVectorNodes ( TArray< FFieldSystemCommand > &  FieldCommands,
const EFieldPhysicsType  FieldType,
FFieldContext FieldContext,
TArray< FVector > &  ResultsArray,
TArray< FVector > &  MaxArray 
)

◆ FillFieldCommands()

FORCEINLINE void FillFieldCommands ( const TArray< FFieldSystemCommand > &  InputCommands,
const FBox BoundingBox,
const float  TimeSeconds,
TArray< FFieldSystemCommand > &  OutputCommands 
)

◆ GetFieldIndex()

void GetFieldIndex ( const uint32  FieldType,
int32 FieldIndex,
EFieldOutputType FieldOutput 
)

Compute the field indexand output given a field type

◆ IMPLEMENT_SHADER_TYPE() [1/2]

IMPLEMENT_SHADER_TYPE ( FBuildPhysicsFieldClipmapCS  ,
TEXT("/Engine/Private/PhysicsFieldBuilder.usf" ,
TEXT("BuildPhysicsFieldClipmapCS")  ,
SF_Compute   
)

◆ IMPLEMENT_SHADER_TYPE() [2/2]

IMPLEMENT_SHADER_TYPE ( FResetPhysicsFieldClipmapCS  ,
TEXT("/Engine/Private/PhysicsFieldReset.usf" ,
TEXT("ResetPhysicsFieldClipmapCS")  ,
SF_Compute   
)

◆ InitInternalBuffer()

template<typename BufferType , int ElementSize, EPixelFormat PixelFormat>
void InitInternalBuffer ( FRHICommandListBase RHICmdList,
const TCHAR DebugName,
const uint32  ElementCount,
FRWBuffer OutputBuffer 
)

Resource Utilities

◆ MaxVector()

FVector MaxVector ( const FVector VectorA,
const FVector VectorB 
)

◆ MinVector()

FVector MinVector ( const FVector VectorA,
const FVector VectorB 
)

◆ UpdateInternalBuffer()

template<typename BufferType , int ElementSize, EPixelFormat PixelFormat>
void UpdateInternalBuffer ( FRHICommandListBase RHICmdList,
const TCHAR DebugName,
const uint32  ElementCount,
const BufferType *  InputData,
FRWBuffer OutputBuffer,
const bool  bInitField = false 
)

Variable Documentation

◆ CVarPhysicsFieldClipmapCount

FAutoConsoleVariableRef CVarPhysicsFieldClipmapCount(TEXT("r.PhysicsField.ClipmapCount"), GPhysicsFieldClipmapCount, TEXT("Number of clipmaps used for the physics field"), ECVF_RenderThreadSafe) ( TEXT("r.PhysicsField.ClipmapCount")  ,
GPhysicsFieldClipmapCount  ,
TEXT("Number of clipmaps used for the physics field" ,
ECVF_RenderThreadSafe   
)

◆ CVarPhysicsFieldClipmapDistance

FAutoConsoleVariableRef CVarPhysicsFieldClipmapDistance(TEXT("r.PhysicsField.ClipmapDistance"), GPhysicsFieldClipmapDistance, TEXT("Max distance from the clipmap center"), ECVF_RenderThreadSafe) ( TEXT("r.PhysicsField.ClipmapDistance")  ,
GPhysicsFieldClipmapDistance  ,
TEXT("Max distance from the clipmap center" ,
ECVF_RenderThreadSafe   
)

◆ CVarPhysicsFieldClipmapExponent

FAutoConsoleVariableRef CVarPhysicsFieldClipmapExponent(TEXT("r.PhysicsField.ClipmapExponent"), GPhysicsFieldClipmapExponent, TEXT("Exponent used to derive each clipmap's size, together with r.PhysicsField.ClipmapDistance"), ECVF_RenderThreadSafe) ( TEXT("r.PhysicsField.ClipmapExponent")  ,
GPhysicsFieldClipmapExponent  ,
TEXT("Exponent used to derive each clipmap's size, together with r.PhysicsField.ClipmapDistance" ,
ECVF_RenderThreadSafe   
)

◆ CVarPhysicsFieldClipmapResolution

FAutoConsoleVariableRef CVarPhysicsFieldClipmapResolution(TEXT("r.PhysicsField.ClipmapResolution"), GPhysicsFieldClipmapResolution, TEXT("Resolution of the physics field. Higher values increase fidelity but also increase memory and composition cost."), ECVF_RenderThreadSafe) ( TEXT("r.PhysicsField.ClipmapResolution")  ,
GPhysicsFieldClipmapResolution  ,
TEXT("Resolution of the physics field. Higher values increase fidelity but also increase memory and composition cost." ,
ECVF_RenderThreadSafe   
)

◆ CVarPhysicsFieldEnableCulling

FAutoConsoleVariableRef CVarPhysicsFieldEnableCulling(TEXT("r.PhysicsField.EnableCulling"), GPhysicsFieldEnableCulling, TEXT("Enable the spatial culling based on the field nodes bounds"), ECVF_RenderThreadSafe) ( TEXT("r.PhysicsField.EnableCulling")  ,
GPhysicsFieldEnableCulling  ,
TEXT("Enable the spatial culling based on the field nodes bounds" ,
ECVF_RenderThreadSafe   
)

◆ CVarPhysicsFieldSingleTarget

FAutoConsoleVariableRef CVarPhysicsFieldSingleTarget(TEXT("r.PhysicsField.SingleTarget"), GPhysicsFieldSingleTarget, TEXT("Limnit the physics field build to only one target, the linear force"), ECVF_RenderThreadSafe) ( TEXT("r.PhysicsField.SingleTarget")  ,
GPhysicsFieldSingleTarget  ,
TEXT("Limnit the physics field build to only one target, the linear force" ,
ECVF_RenderThreadSafe   
)

◆ GPhysicsFieldBuildClipmap

int32 GPhysicsFieldBuildClipmap = 1

Boolean to check if we need to build or not the clipmap

◆ GPhysicsFieldClipmapCount

int32 GPhysicsFieldClipmapCount = 4

Number of used clipmaps

◆ GPhysicsFieldClipmapDistance

float GPhysicsFieldClipmapDistance = 10000

Clipmap max disatnce

◆ GPhysicsFieldClipmapExponent

float GPhysicsFieldClipmapExponent = 2

Exponent used to compute each clipmaps distance

◆ GPhysicsFieldClipmapResolution

int32 GPhysicsFieldClipmapResolution = 32

Resolution of each clipmaps

◆ GPhysicsFieldEnableCulling

int32 GPhysicsFieldEnableCulling = 1

Spatial culling

◆ GPhysicsFieldSingleTarget

int32 GPhysicsFieldSingleTarget = 0

Single Target Limit