UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ParticleCurveTexture.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*==============================================================================
4 ParticleCurveTexture.h: Texture used to hold particle curves.
5==============================================================================*/
6
7#pragma once
8
9#include "CoreMinimal.h"
10#include "RenderResource.h"
11
15
16/*------------------------------------------------------------------------------
17 Texel allocator.
18------------------------------------------------------------------------------*/
19
25{
29
32 : X(0)
33 , Y(0)
34 , Size(0)
35 {
36 }
37};
38
43{
44public:
45
48
51
58
63 void Free( FTexelAllocation Allocation );
64
65private:
66
68 struct FBlock
69 {
71 FBlock* Next;
73 uint16 Begin;
76 };
77
81 FBlock* GetBlock();
82
86 void ReturnBlock( FBlock* Block );
87
89 TArray<FBlock*> FreeBlocks;
91 FBlock* BlockPool;
93 int32 BlockCount;
95 int32 TextureSizeX;
97 int32 TextureSizeY;
99 int32 FreeTexels;
100};
101
102/*-----------------------------------------------------------------------------
103 A texture for storing curve samples on the GPU.
104-----------------------------------------------------------------------------*/
105
116
121{
122public:
123
126
130 virtual void InitRHI(FRHICommandListBase& RHICmdList) override;
131
135 virtual void ReleaseRHI() override;
136
143
148 void RemoveCurve( FTexelAllocation TexelAllocation );
149
157
161 FRHITexture* GetCurveTexture() { return CurveTextureRHI; }
162
166 void SubmitPendingCurves();
167
168private:
170 FTextureRHIRef CurveTextureRHI;
172 FTexelAllocator TexelAllocator;
174 TArray<FCurveSamples> PendingCurves;
175};
176
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
TGlobalResource< FParticleCurveTexture > GParticleCurveTexture
Definition ParticleCurveTexture.cpp:30
const int32 GParticleCurveTextureSizeY
const int32 GParticleCurveTextureSizeX
uint32 Size
Definition VulkanMemory.cpp:4034
uint16_t uint16
Definition binka_ue_file_header.h:7
Definition ParticleCurveTexture.h:121
FTexelAllocation AddCurve(const TArray< FColor > &CurveSamples)
Definition ParticleCurveTexture.cpp:541
virtual void ReleaseRHI() override
Definition ParticleCurveTexture.cpp:531
void SubmitPendingCurves()
Definition ParticleCurveTexture.cpp:601
FParticleCurveTexture()
Definition ParticleCurveTexture.cpp:503
void RemoveCurve(FTexelAllocation TexelAllocation)
Definition ParticleCurveTexture.cpp:573
FRHITexture * GetCurveTexture()
Definition ParticleCurveTexture.h:161
virtual void InitRHI(FRHICommandListBase &RHICmdList) override
Definition ParticleCurveTexture.cpp:511
FVector4f ComputeCurveScaleBias(FTexelAllocation TexelAllocation)
Definition ParticleCurveTexture.cpp:588
Definition RHICommandList.h:455
Definition RHIResources.h:2153
Definition RenderResource.h:37
Definition ParticleCurveTexture.h:43
FTexelAllocation Allocate(int32 Size)
Definition ParticleCurveTexture.cpp:343
~FTexelAllocator()
Definition ParticleCurveTexture.cpp:312
Definition Array.h:670
Definition RenderResource.h:543
Definition Color.h:486
Definition ParticleCurveTexture.h:110
FColor * Samples
Definition ParticleCurveTexture.h:112
FTexelAllocation TexelAllocation
Definition ParticleCurveTexture.h:114
Definition ParticleCurveTexture.h:25
FTexelAllocation()
Definition ParticleCurveTexture.h:31
uint16 Size
Definition ParticleCurveTexture.h:28
uint16 Y
Definition ParticleCurveTexture.h:27
uint16 X
Definition ParticleCurveTexture.h:26