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

Classes

class  FComputeDistanceFieldNormalPS
 
class  FComputeDistanceFieldNormalCS
 

Functions

 DEFINE_LOG_CATEGORY (LogDistanceField)
 
FAutoConsoleVariableRef CVarDistanceFieldAO (TEXT("r.DistanceFieldAO"), GDistanceFieldAO, TEXT("Whether the distance field AO feature is allowed, which is used to implement shadows of Movable sky lights from static meshes."), ECVF_Scalability|ECVF_RenderThreadSafe)
 
FAutoConsoleVariableRef CVarMobileDistanceFieldAO (TEXT("r.Mobile.DistanceFieldAO"), GMobileDistanceFieldAO, TEXT("Whether the distance field AO feature is allowed for Mobile Platforms, which is used to implement shadows of Movable sky lights from static meshes."), ECVF_ReadOnly|ECVF_RenderThreadSafe)
 
FAutoConsoleVariableRef CVarDistanceFieldAOMultiView (TEXT("r.DistanceFieldAO.MultiView"), GDistanceFieldAOMultiView, TEXT("Whether the distance field AO feature is allowed when rendering multiple views."), ECVF_Scalability|ECVF_RenderThreadSafe)
 
FAutoConsoleVariableRef CVarDistanceFieldAOQuality (TEXT("r.AOQuality"), GDistanceFieldAOQuality, TEXT(" 0:off, 1:medium, 2:high (default)"), ECVF_Scalability|ECVF_RenderThreadSafe)
 
FAutoConsoleVariableRef CVarDistanceFieldAOApplyToStaticIndirect (TEXT("r.AOApplyToStaticIndirect"), GDistanceFieldAOApplyToStaticIndirect, TEXT("Whether to apply DFAO as indirect shadowing even to static indirect sources (lightmaps + stationary skylight + reflection captures)"), ECVF_Scalability|ECVF_RenderThreadSafe)
 
FAutoConsoleVariableRef CVarDistanceFieldAOSpecularOcclusionMode (TEXT("r.AOSpecularOcclusionMode"), GDistanceFieldAOSpecularOcclusionMode, TEXT("1: (default) Intersect the reflection cone with the unoccluded cone produced by DFAO. This gives more accurate occlusion than 0, but can bring out DFAO sampling artifacts.\n"), ECVF_Scalability|ECVF_RenderThreadSafe)
 
bool UseDistanceFieldAO ()
 
bool UseAOObjectDistanceField ()
 
void TileIntersectionModifyCompilationEnvironment (EShaderPlatform Platform, FShaderCompilerEnvironment &OutEnvironment)
 
FIntPoint GetBufferSizeForAO (const FViewInfo &View)
 
float TemporalHalton2 (int32 Index, int32 Base)
 
void GetSpacedVectors (uint32 FrameNumber, TArray< FVector, TInlineAllocator< 9 > > &OutVectors)
 
void OnListMemory (UWorld *InWorld)
 
void OnListMeshDistanceFields (UWorld *InWorld)
 
bool ShouldCompileDFNormalShaders (EShaderPlatform ShaderPlatform)
 
 IMPLEMENT_GLOBAL_SHADER (FComputeDistanceFieldNormalPS, "/Engine/Private/DistanceFieldScreenGridLighting.usf", "ComputeDistanceFieldNormalPS", SF_Pixel)
 
 IMPLEMENT_GLOBAL_SHADER (FComputeDistanceFieldNormalCS, "/Engine/Private/DistanceFieldScreenGridLighting.usf", "ComputeDistanceFieldNormalCS", SF_Compute)
 
void ComputeDistanceFieldNormal (FRDGBuilder &GraphBuilder, const FViewInfo &View, const FSceneTextures &SceneTextures, FRDGTextureRef DistanceFieldNormal, const FDistanceFieldAOParameters &Parameters)
 
FVector GetUnitPosition2 (FRandomStream &RandomStream)
 
FVector GetUnitVector2 (FRandomStream &RandomStream)
 
void GenerateBestSpacedVectors ()
 
void AllocateTileIntersectionBuffers (FRDGBuilder &GraphBuilder, FIntPoint TileListGroupSize, uint32 MaxSceneObjects, bool bAllow16BitIndices, FRDGBufferRef &OutObjectTilesIndirectArguments, FTileIntersectionParameters &OutParameters)
 
void ListDistanceFieldLightingMemory (const FScene *Scene, FSceneRenderer &SceneRenderer)
 
bool SupportsDistanceFieldAO (ERHIFeatureLevel::Type FeatureLevel, EShaderPlatform ShaderPlatform)
 
bool ShouldRenderDeferredDynamicSkyLight (const FScene *Scene, const FSceneViewFamily &ViewFamily)
 
bool ShouldDoReflectionEnvironment (const FScene *Scene, const FSceneViewFamily &ViewFamily)
 
bool ShouldPrepareForDistanceFieldAO (const FScene *Scene, const FSceneViewFamily &ViewFamily, bool bAnyViewHasGIMethodSupportingDFAO)
 
bool ShouldPrepareForDistanceFieldAO (const FSceneRenderUpdateInputs &SceneUpdateInputs)
 
bool ShouldPrepareGlobalDistanceField (const FSceneRenderer *Renderer)
 
bool ShouldPrepareDistanceFieldScene (const FSceneRenderUpdateInputs &SceneUpdateInputs)
 
bool ShouldRenderDistanceFieldLighting (const FDistanceFieldSceneData &SceneData, TConstArrayView< FViewInfo > Views)
 
bool ShouldRenderDistanceFieldAO (TConstArrayView< FViewInfo > Views, const FEngineShowFlags &EngineShowFlags)
 

Variables

int32 GDistanceFieldAO = 1
 
int32 GMobileDistanceFieldAO = 0
 
int32 GDistanceFieldAOMultiView = 1
 
int32 GDistanceFieldAOQuality = 2
 
int32 GDistanceFieldAOApplyToStaticIndirect = 0
 
int32 GDistanceFieldAOSpecularOcclusionMode = 1
 
float GAOStepExponentScale = .5f
 
FAutoConsoleVariableRef CVarAOStepExponentScale (TEXT("r.AOStepExponentScale"), GAOStepExponentScale, TEXT("Exponent used to distribute AO samples along a cone direction."), ECVF_RenderThreadSafe)
 
float GAOMaxViewDistance = 20000
 
FAutoConsoleVariableRef CVarAOMaxViewDistance (TEXT("r.AOMaxViewDistance"), GAOMaxViewDistance, TEXT("The maximum distance that AO will be computed at."), ECVF_RenderThreadSafe)
 
int32 GAOComputeShaderNormalCalculation = 0
 
FAutoConsoleVariableRef CVarAOComputeShaderNormalCalculation (TEXT("r.AOComputeShaderNormalCalculation"), GAOComputeShaderNormalCalculation, TEXT("Whether to use the compute shader version of the distance field normal computation."), ECVF_RenderThreadSafe)
 
int32 GAOSampleSet = 1
 
FAutoConsoleVariableRef CVarAOSampleSet (TEXT("r.AOSampleSet"), GAOSampleSet, TEXT("0 = Original set, 1 = Relaxed set"), ECVF_RenderThreadSafe)
 
int32 GAOOverwriteSceneColor = 0
 
FAutoConsoleVariableRef CVarAOOverwriteSceneColor (TEXT("r.AOOverwriteSceneColor"), GAOOverwriteSceneColor, TEXT(""), ECVF_RenderThreadSafe)
 
int32 GAOJitterConeDirections = 0
 
FAutoConsoleVariableRef CVarAOJitterConeDirections (TEXT("r.AOJitterConeDirections"), GAOJitterConeDirections, TEXT(""), ECVF_RenderThreadSafe)
 
int32 GAOObjectDistanceField = 1
 
FAutoConsoleVariableRef CVarAOObjectDistanceField (TEXT("r.AOObjectDistanceField"), GAOObjectDistanceField, TEXT("Only global distance field will be used when this option is disabled.\n"), ECVF_RenderThreadSafe)
 
int32 GAOGlobalDistanceFieldDetailedNecessityCheck = 1
 
FAutoConsoleVariableRef CVarAOGlobalDistanceFieldDetailedCheck (TEXT("r.AOGlobalDistanceField.DetailedNecessityCheck"), GAOGlobalDistanceFieldDetailedNecessityCheck, TEXT("Whether to perform detailed necessity check in FSceneRenderer::ShouldPrepareGlobalDistanceField()."), ECVF_RenderThreadSafe)
 
int32 GDistanceFieldAOTileSizeX = 16
 
int32 GDistanceFieldAOTileSizeY = 16
 
const FVector SpacedVectors9 []
 
const FVector RelaxedSpacedVectors9 []
 
float GAOConeHalfAngle = FMath::Acos(1 - 1.0f / (float)UE_ARRAY_COUNT(SpacedVectors9))
 
uint32 GAONumConeSteps = 10
 
float GAOViewFadeDistanceScale
 
bool bListMemoryNextFrame = false
 
FAutoConsoleCommandWithWorld ListMemoryConsoleCommand (TEXT("r.AOListMemory"), TEXT(""), FConsoleCommandWithWorldDelegate::CreateStatic(OnListMemory))
 
bool bListMeshDistanceFieldsMemoryNextFrame = false
 
FAutoConsoleCommandWithWorld ListMeshDistanceFieldsMemoryConsoleCommand (TEXT("r.AOListMeshDistanceFields"), TEXT(""), FConsoleCommandWithWorldDelegate::CreateStatic(OnListMeshDistanceFields))
 

Function Documentation

◆ AllocateTileIntersectionBuffers()

void AllocateTileIntersectionBuffers ( FRDGBuilder GraphBuilder,
FIntPoint  TileListGroupSize,
uint32  MaxSceneObjects,
bool  bAllow16BitIndices,
FRDGBufferRef OutObjectTilesIndirectArguments,
FTileIntersectionParameters OutParameters 
)

◆ ComputeDistanceFieldNormal()

void ComputeDistanceFieldNormal ( FRDGBuilder GraphBuilder,
const FViewInfo View,
const FSceneTextures SceneTextures,
FRDGTextureRef  DistanceFieldNormal,
const FDistanceFieldAOParameters Parameters 
)

◆ CVarDistanceFieldAO()

FAutoConsoleVariableRef CVarDistanceFieldAO ( TEXT("r.DistanceFieldAO")  ,
GDistanceFieldAO  ,
TEXT("Whether the distance field AO feature is allowed, which is used to implement shadows of Movable sky lights from static meshes." ,
ECVF_Scalability ECVF_RenderThreadSafe 
)

◆ CVarDistanceFieldAOApplyToStaticIndirect()

FAutoConsoleVariableRef CVarDistanceFieldAOApplyToStaticIndirect ( TEXT("r.AOApplyToStaticIndirect")  ,
GDistanceFieldAOApplyToStaticIndirect  ,
TEXT("Whether to apply DFAO as indirect shadowing even to static indirect sources (lightmaps + stationary skylight + reflection captures)")  ,
ECVF_Scalability ECVF_RenderThreadSafe 
)

◆ CVarDistanceFieldAOMultiView()

FAutoConsoleVariableRef CVarDistanceFieldAOMultiView ( TEXT("r.DistanceFieldAO.MultiView")  ,
GDistanceFieldAOMultiView  ,
TEXT("Whether the distance field AO feature is allowed when rendering multiple views." ,
ECVF_Scalability ECVF_RenderThreadSafe 
)

◆ CVarDistanceFieldAOQuality()

FAutoConsoleVariableRef CVarDistanceFieldAOQuality ( TEXT("r.AOQuality")  ,
GDistanceFieldAOQuality  ,
TEXT(" 0:off, 1:medium, 2:high (default)")  ,
ECVF_Scalability ECVF_RenderThreadSafe 
)

◆ CVarDistanceFieldAOSpecularOcclusionMode()

FAutoConsoleVariableRef CVarDistanceFieldAOSpecularOcclusionMode ( TEXT("r.AOSpecularOcclusionMode")  ,
GDistanceFieldAOSpecularOcclusionMode  ,
TEXT("1: (default) Intersect the reflection cone with the unoccluded cone produced by DFAO. This gives more accurate occlusion than 0, but can bring out DFAO sampling artifacts.\n" ,
ECVF_Scalability ECVF_RenderThreadSafe 
)

◆ CVarMobileDistanceFieldAO()

FAutoConsoleVariableRef CVarMobileDistanceFieldAO ( TEXT("r.Mobile.DistanceFieldAO")  ,
GMobileDistanceFieldAO  ,
TEXT("Whether the distance field AO feature is allowed for Mobile Platforms, which is used to implement shadows of Movable sky lights from static meshes." ,
ECVF_ReadOnly ECVF_RenderThreadSafe 
)

◆ DEFINE_LOG_CATEGORY()

DEFINE_LOG_CATEGORY ( LogDistanceField  )

◆ GenerateBestSpacedVectors()

void GenerateBestSpacedVectors ( )

◆ GetBufferSizeForAO()

FIntPoint GetBufferSizeForAO ( const FViewInfo View)

◆ GetSpacedVectors()

void GetSpacedVectors ( uint32  FrameNumber,
TArray< FVector, TInlineAllocator< 9 > > &  OutVectors 
)

◆ GetUnitPosition2()

FVector GetUnitPosition2 ( FRandomStream RandomStream)

Generates a pseudo-random position inside the unit sphere, uniformly distributed over the volume of the sphere.

◆ GetUnitVector2()

FVector GetUnitVector2 ( FRandomStream RandomStream)

Generates a pseudo-random unit vector, uniformly distributed over all directions.

◆ IMPLEMENT_GLOBAL_SHADER() [1/2]

IMPLEMENT_GLOBAL_SHADER ( FComputeDistanceFieldNormalCS  ,
"/Engine/Private/DistanceFieldScreenGridLighting.usf"  ,
"ComputeDistanceFieldNormalCS"  ,
SF_Compute   
)

◆ IMPLEMENT_GLOBAL_SHADER() [2/2]

IMPLEMENT_GLOBAL_SHADER ( FComputeDistanceFieldNormalPS  ,
"/Engine/Private/DistanceFieldScreenGridLighting.usf"  ,
"ComputeDistanceFieldNormalPS"  ,
SF_Pixel   
)

◆ ListDistanceFieldLightingMemory()

void ListDistanceFieldLightingMemory ( const FScene Scene,
FSceneRenderer SceneRenderer 
)

◆ OnListMemory()

void OnListMemory ( UWorld InWorld)

◆ OnListMeshDistanceFields()

void OnListMeshDistanceFields ( UWorld InWorld)

◆ ShouldCompileDFNormalShaders()

bool ShouldCompileDFNormalShaders ( EShaderPlatform  ShaderPlatform)

◆ ShouldDoReflectionEnvironment()

bool ShouldDoReflectionEnvironment ( const FScene Scene,
const FSceneViewFamily ViewFamily 
)

◆ ShouldPrepareDistanceFieldScene()

bool ShouldPrepareDistanceFieldScene ( const FSceneRenderUpdateInputs SceneUpdateInputs)

◆ ShouldPrepareForDistanceFieldAO() [1/2]

bool ShouldPrepareForDistanceFieldAO ( const FScene Scene,
const FSceneViewFamily ViewFamily,
bool  bAnyViewHasGIMethodSupportingDFAO 
)

◆ ShouldPrepareForDistanceFieldAO() [2/2]

bool ShouldPrepareForDistanceFieldAO ( const FSceneRenderUpdateInputs SceneUpdateInputs)

◆ ShouldPrepareGlobalDistanceField()

bool ShouldPrepareGlobalDistanceField ( const FSceneRenderer Renderer)

◆ ShouldRenderDeferredDynamicSkyLight()

bool ShouldRenderDeferredDynamicSkyLight ( const FScene Scene,
const FSceneViewFamily ViewFamily 
)

◆ ShouldRenderDistanceFieldAO()

bool ShouldRenderDistanceFieldAO ( TConstArrayView< FViewInfo Views,
const FEngineShowFlags EngineShowFlags 
)

◆ ShouldRenderDistanceFieldLighting()

bool ShouldRenderDistanceFieldLighting ( const FDistanceFieldSceneData SceneData,
TConstArrayView< FViewInfo Views 
)

◆ SupportsDistanceFieldAO()

bool SupportsDistanceFieldAO ( ERHIFeatureLevel::Type  FeatureLevel,
EShaderPlatform  ShaderPlatform 
)

◆ TemporalHalton2()

float TemporalHalton2 ( int32  Index,
int32  Base 
)

◆ TileIntersectionModifyCompilationEnvironment()

void TileIntersectionModifyCompilationEnvironment ( EShaderPlatform  Platform,
FShaderCompilerEnvironment OutEnvironment 
)

◆ UseAOObjectDistanceField()

bool UseAOObjectDistanceField ( )

◆ UseDistanceFieldAO()

bool UseDistanceFieldAO ( )

Variable Documentation

◆ bListMemoryNextFrame

bool bListMemoryNextFrame = false

◆ bListMeshDistanceFieldsMemoryNextFrame

bool bListMeshDistanceFieldsMemoryNextFrame = false

◆ CVarAOComputeShaderNormalCalculation

FAutoConsoleVariableRef CVarAOComputeShaderNormalCalculation(TEXT("r.AOComputeShaderNormalCalculation"), GAOComputeShaderNormalCalculation, TEXT("Whether to use the compute shader version of the distance field normal computation."), ECVF_RenderThreadSafe) ( TEXT("r.AOComputeShaderNormalCalculation")  ,
GAOComputeShaderNormalCalculation  ,
TEXT("Whether to use the compute shader version of the distance field normal computation." ,
ECVF_RenderThreadSafe   
)

◆ CVarAOGlobalDistanceFieldDetailedCheck

FAutoConsoleVariableRef CVarAOGlobalDistanceFieldDetailedCheck(TEXT("r.AOGlobalDistanceField.DetailedNecessityCheck"), GAOGlobalDistanceFieldDetailedNecessityCheck, TEXT("Whether to perform detailed necessity check in FSceneRenderer::ShouldPrepareGlobalDistanceField()."), ECVF_RenderThreadSafe) ( TEXT("r.AOGlobalDistanceField.DetailedNecessityCheck")  ,
GAOGlobalDistanceFieldDetailedNecessityCheck  ,
TEXT("Whether to perform detailed necessity check in FSceneRenderer::ShouldPrepareGlobalDistanceField().")  ,
ECVF_RenderThreadSafe   
)

◆ CVarAOJitterConeDirections

FAutoConsoleVariableRef CVarAOJitterConeDirections(TEXT("r.AOJitterConeDirections"), GAOJitterConeDirections, TEXT(""), ECVF_RenderThreadSafe) ( TEXT("r.AOJitterConeDirections")  ,
GAOJitterConeDirections  ,
TEXT("")  ,
ECVF_RenderThreadSafe   
)

◆ CVarAOMaxViewDistance

FAutoConsoleVariableRef CVarAOMaxViewDistance(TEXT("r.AOMaxViewDistance"), GAOMaxViewDistance, TEXT("The maximum distance that AO will be computed at."), ECVF_RenderThreadSafe) ( TEXT("r.AOMaxViewDistance")  ,
GAOMaxViewDistance  ,
TEXT("The maximum distance that AO will be computed at." ,
ECVF_RenderThreadSafe   
)

◆ CVarAOObjectDistanceField

FAutoConsoleVariableRef CVarAOObjectDistanceField(TEXT("r.AOObjectDistanceField"), GAOObjectDistanceField, TEXT("Only global distance field will be used when this option is disabled.\n"), ECVF_RenderThreadSafe) ( TEXT("r.AOObjectDistanceField")  ,
GAOObjectDistanceField  ,
TEXT("Only global distance field will be used when this option is disabled.\n" ,
ECVF_RenderThreadSafe   
)

◆ CVarAOOverwriteSceneColor

FAutoConsoleVariableRef CVarAOOverwriteSceneColor(TEXT("r.AOOverwriteSceneColor"), GAOOverwriteSceneColor, TEXT(""), ECVF_RenderThreadSafe) ( TEXT("r.AOOverwriteSceneColor")  ,
GAOOverwriteSceneColor  ,
TEXT("")  ,
ECVF_RenderThreadSafe   
)

◆ CVarAOSampleSet

FAutoConsoleVariableRef CVarAOSampleSet(TEXT("r.AOSampleSet"), GAOSampleSet, TEXT("0 = Original set, 1 = Relaxed set"), ECVF_RenderThreadSafe) ( TEXT("r.AOSampleSet")  ,
GAOSampleSet  ,
TEXT("0 = Original set, 1 = Relaxed set" ,
ECVF_RenderThreadSafe   
)

◆ CVarAOStepExponentScale

FAutoConsoleVariableRef CVarAOStepExponentScale(TEXT("r.AOStepExponentScale"), GAOStepExponentScale, TEXT("Exponent used to distribute AO samples along a cone direction."), ECVF_RenderThreadSafe) ( TEXT("r.AOStepExponentScale")  ,
GAOStepExponentScale  ,
TEXT("Exponent used to distribute AO samples along a cone direction." ,
ECVF_RenderThreadSafe   
)

◆ GAOComputeShaderNormalCalculation

int32 GAOComputeShaderNormalCalculation = 0

◆ GAOConeHalfAngle

float GAOConeHalfAngle = FMath::Acos(1 - 1.0f / (float)UE_ARRAY_COUNT(SpacedVectors9))

◆ GAOGlobalDistanceFieldDetailedNecessityCheck

int32 GAOGlobalDistanceFieldDetailedNecessityCheck = 1

◆ GAOJitterConeDirections

int32 GAOJitterConeDirections = 0

◆ GAOMaxViewDistance

float GAOMaxViewDistance = 20000

◆ GAONumConeSteps

uint32 GAONumConeSteps = 10

◆ GAOObjectDistanceField

int32 GAOObjectDistanceField = 1

◆ GAOOverwriteSceneColor

int32 GAOOverwriteSceneColor = 0

◆ GAOSampleSet

int32 GAOSampleSet = 1

◆ GAOStepExponentScale

float GAOStepExponentScale = .5f

◆ GAOViewFadeDistanceScale

float GAOViewFadeDistanceScale
extern

◆ GDistanceFieldAO

int32 GDistanceFieldAO = 1

◆ GDistanceFieldAOApplyToStaticIndirect

int32 GDistanceFieldAOApplyToStaticIndirect = 0

◆ GDistanceFieldAOMultiView

int32 GDistanceFieldAOMultiView = 1

◆ GDistanceFieldAOQuality

int32 GDistanceFieldAOQuality = 2

◆ GDistanceFieldAOSpecularOcclusionMode

int32 GDistanceFieldAOSpecularOcclusionMode = 1

◆ GDistanceFieldAOTileSizeX

int32 GDistanceFieldAOTileSizeX = 16

Tile sized used for most AO compute shaders.

◆ GDistanceFieldAOTileSizeY

int32 GDistanceFieldAOTileSizeY = 16

◆ GMobileDistanceFieldAO

int32 GMobileDistanceFieldAO = 0

◆ ListMemoryConsoleCommand

FAutoConsoleCommandWithWorld ListMemoryConsoleCommand(TEXT("r.AOListMemory"), TEXT(""), FConsoleCommandWithWorldDelegate::CreateStatic(OnListMemory)) ( TEXT("r.AOListMemory")  ,
TEXT("")  ,
FConsoleCommandWithWorldDelegate::CreateStatic(OnListMemory  
)

◆ ListMeshDistanceFieldsMemoryConsoleCommand

FAutoConsoleCommandWithWorld ListMeshDistanceFieldsMemoryConsoleCommand(TEXT("r.AOListMeshDistanceFields"), TEXT(""), FConsoleCommandWithWorldDelegate::CreateStatic(OnListMeshDistanceFields)) ( TEXT("r.AOListMeshDistanceFields")  ,
TEXT("")  ,
FConsoleCommandWithWorldDelegate::CreateStatic(OnListMeshDistanceFields  
)

◆ RelaxedSpacedVectors9

const FVector RelaxedSpacedVectors9[]
Initial value:
=
{
FVector(-0.467612, 0.739424, 0.484347),
FVector(0.517459, -0.705440, 0.484346),
FVector(-0.419848, -0.767551, 0.484347),
FVector(0.343077, 0.804802, 0.484347),
FVector(0.364239, 0.244290, 0.898695),
FVector(-0.381547, 0.185815, 0.905481),
FVector(-0.870176, -0.090559, 0.484347),
FVector(0.874448, 0.027390, 0.484346),
FVector(0.032967, -0.435625, 0.899524)
}
#define FVector
Definition IOSSystemIncludes.h:8

◆ SpacedVectors9

const FVector SpacedVectors9[]
Initial value:
=
{
FVector(-0.573257625, 0.625250816, 0.529563010),
FVector(0.253354192, -0.840093017, 0.479640961),
FVector(-0.421664953, -0.718063235, 0.553700149),
FVector(0.249163717, 0.796005428, 0.551627457),
FVector(0.375082791, 0.295851320, 0.878512800),
FVector(-0.217619032, 0.00193520682, 0.976031899),
FVector(-0.852834642, 0.0111727007, 0.522061586),
FVector(0.745701790, 0.239393353, 0.621787369),
FVector(-0.151036426, -0.465937436, 0.871831656)
}