UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
VectorFieldStatic.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 VectorField: A 3D grid of vectors.
5=============================================================================*/
6
7#pragma once
8
9#include "CoreMinimal.h"
10#include "Math/Float16.h"
14#include "VectorFieldStatic.generated.h"
15
16class FRHITexture;
18
19// The internal representation of the CPU data (if used) is based on how we can
20// effectively sample it. Currently we'll decide that based on if we have ISPC
21// supported
22#define VECTOR_FIELD_DATA_AS_HALF (INTEL_ISPC)
23
26{
28
29
30 UPROPERTY(Category=VectorFieldStatic, VisibleAnywhere)
31 int32 SizeX;
32
34 UPROPERTY(Category=VectorFieldStatic, VisibleAnywhere)
35 int32 SizeY;
36
38 UPROPERTY(Category=VectorFieldStatic, VisibleAnywhere)
39 int32 SizeZ;
40
42 UPROPERTY(Category=VectorFieldStatic, EditAnywhere)
43 bool bAllowCPUAccess;
44
45public:
48
51
52#if WITH_EDITORONLY_DATA
53 UPROPERTY()
55
56 UPROPERTY(VisibleAnywhere, Instanced, Category=ImportSettings)
58#endif // WITH_EDITORONLY_DATA
59
60 //~ Begin UObject Interface.
61 virtual void PostLoad() override;
62 virtual void BeginDestroy() override;
63 virtual void GetResourceSizeEx(FResourceSizeEx& CumulativeResourceSize) override;
64#if WITH_EDITOR
65 virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
66#endif // WITH_EDITOR
67 virtual void Serialize(FArchive& Ar) override;
68#if WITH_EDITORONLY_DATA
69 virtual void GetAssetRegistryTags(FAssetRegistryTagsContext Context) const override;
70 UE_DEPRECATED(5.4, "Implement the version that takes FAssetRegistryTagsContext instead.")
71 virtual void GetAssetRegistryTags(TArray<FAssetRegistryTag>& OutTags) const override;
72 virtual void PostInitProperties() override;
73#endif
74 //~ End UObject Interface.
75
76 //~ Begin UVectorField Interface
77 virtual void InitInstance(class FVectorFieldInstance* Instance, bool bPreviewInstance) override;
78 //~ End UVectorField Interface
79
84
88 ENGINE_API void UpdateCPUData(bool bDiscardData);
89
90#if WITH_EDITOR
93#endif // WITH_EDITOR
94
96 ENGINE_API FRHITexture* GetVolumeTextureRef();
97
98 ENGINE_API FVector FilteredSample(const FVector& SamplePosition, const FVector& TilingAxes) const;
99 ENGINE_API FVector Sample(const FIntVector& SamplePosition) const;
100
102#if VECTOR_FIELD_DATA_AS_HALF
103 FFloat16;
104#else
105 float;
106#endif
107
109 {
110 return MakeArrayView<const InternalFloatType>(reinterpret_cast<const InternalFloatType*>(CPUData.GetData()), CPUData.Num() / sizeof(InternalFloatType));
111 }
112
113 bool HasCPUData() const { return bAllowCPUAccess && CPUData.Num(); }
114
115private:
117 friend class UVectorFieldStaticFactory;
118
123 ENGINE_API void UpdateResource();
124
128 ENGINE_API void ReleaseResource();
129
130 inline FVector SampleInternal(int32 SampleIndex) const;
131
133 TArray<uint8> CPUData;
134};
135
136// work around for the private nature of FVectorFieldResource
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
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
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
Definition Archive.h:1208
Definition AssetRegistryTagsContext.h:98
Definition Float16.h:34
Definition RHIResources.h:2153
virtual RENDERCORE_API void InitResource(FRHICommandListBase &RHICmdList)
Definition RenderResource.cpp:178
Definition VectorField.h:102
Definition VectorField.h:38
Definition Array.h:670
Definition UniquePtr.h:107
Definition AssetImportData.h:72
Definition VectorFieldStatic.h:26
float InternalFloatType
Definition VectorFieldStatic.h:105
class FVectorFieldResource * Resource
Definition VectorFieldStatic.h:47
FByteBulkData SourceData
Definition VectorFieldStatic.h:50
bool HasCPUData() const
Definition VectorFieldStatic.h:113
TConstArrayView< InternalFloatType > ReadCPUData() const
Definition VectorFieldStatic.h:108
Definition VectorField.h:16
Definition ExpressionParserTypes.h:21
Definition UnrealType.h:6865
Definition ResourceSize.h:31
Definition VectorFieldStatic.h:138
ENGINE_API ~FVectorFieldTextureAccessor()
Definition VectorField.cpp:325
ENGINE_API FRHITexture * GetTexture() const
Definition VectorField.cpp:330
Definition ObjectPtr.h:488
Definition Object.h:827