UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
TextureAtlas.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "Containers/List.h"
7#include "Layout/SlateRect.h"
8
9#define WITH_ATLAS_DEBUGGING (WITH_EDITOR || IS_PROGRAM) && !UE_BUILD_SHIPPING
10
12
17{
19 Alpha,
21 Color,
23 Msdf
24};
25
39
44{
46 Unknown = -1,
48 Game = 0,
50 Render = 1,
51};
52
57
62
94
99{
100public:
102
104
109
117 SLATECORE_API const FAtlasedTextureSlot* AddTexture(uint32 TextureWidth, uint32 TextureHeight, const TArray<uint8>& Data);
118
120 uint32 GetWidth() const { return AtlasWidth; }
122 uint32 GetHeight() const { return AtlasHeight; }
123
126
130 virtual void ConditionalUpdateTexture() = 0;
131
135 virtual void ReleaseResources() = 0;
136
138
139#if WITH_ATLAS_DEBUGGING
141#endif
142protected:
150
155
160
165
183
191
199
207
208private:
210 inline uint8 GetPaddingAmount() const
211 {
213 }
214protected:
229
234#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
240#endif
241};
242
244{
249
251 {
252 return AtlasSlotRect != Other.AtlasSlotRect & TextureName != Other.TextureName;
253 }
254
257};
258
259
271
280
283{
284public:
286
288
294 virtual void RequestFlushCache(const FString& Reason) = 0;
295
297 void ResetFlushCounters();
298
301
302private:
303 bool UpdateInternal(int32 CurrentNum, int32& MaxNum, int32 InitialMax, int32 FrameWindowNum);
304private:
306 const FAtlasFlushParams* FlushParams;
307
309 int32 CurrentMaxGrayscaleAtlasPagesBeforeFlushRequest;
310
312 int32 CurrentMaxColorAtlasPagesBeforeFlushRequest;
313
315 int32 CurrentMaxMsdfAtlasPagesBeforeFlushRequest;
316
318 int32 CurrentMaxNonAtlasedTexturesBeforeFlushRequest;
319
321 uint64 FrameCounterLastFlushRequest;
322};
323
328{
329public:
332
334 virtual int32 GetNumAtlasPages() const = 0;
335
338
340 virtual bool IsAtlasPageResourceAlphaOnly(const int32 InIndex) const = 0;
341
342#if WITH_ATLAS_DEBUGGING
345#endif
346};
347
348
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
ESlateTextureAtlasThreadId
Definition TextureAtlas.h:44
ESlateFontAtlasContentType
Definition TextureAtlas.h:17
SLATECORE_API ESlateTextureAtlasThreadId GetCurrentSlateTextureAtlasThreadId()
Definition TextureAtlas.cpp:18
SLATECORE_API uint32 GetSlateFontAtlasContentBytesPerPixel(ESlateFontAtlasContentType InContentType)
Definition TextureAtlas.cpp:35
ESlateTextureAtlasPaddingStyle
Definition TextureAtlas.h:31
@ PadWithZero
Definition TextureAtlas.h:37
@ NoPadding
Definition TextureAtlas.h:33
@ DilateBorder
Definition TextureAtlas.h:35
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition NameTypes.h:617
Definition TextureAtlas.h:283
void UpdateFlushCounters(int32 NumGrayscale, int32 NumColor, int32 NumMsdf, int32 NumNonAtlased)
Definition TextureAtlas.cpp:410
virtual void RequestFlushCache(const FString &Reason)=0
virtual ~FSlateFlushableAtlasCache()
Definition TextureAtlas.h:287
void ResetFlushCounters()
Definition TextureAtlas.cpp:401
Definition SlateRect.h:26
Definition SlateShaderResource.h:44
Definition TextureAtlas.h:99
uint32 GetHeight() const
Definition TextureAtlas.h:122
TArray< FAtlasedTextureSlot * > AtlasEmptySlotsMap
Definition TextureAtlas.h:220
virtual FSlateShaderResource * GetAtlasTexture() const =0
uint32 AtlasHeight
Definition TextureAtlas.h:224
uint32 BytesPerPixel
Definition TextureAtlas.h:226
SLATECORE_API void CopyDataIntoSlot(const FAtlasedTextureSlot *SlotToCopyTo, const TArray< uint8 > &Data)
Definition TextureAtlas.cpp:209
static int32 GetFreeSlotSearchIndex(uint32 InWidth, uint32 InHeight)
Definition TextureAtlas.cpp:377
void AddFreeSlot(uint32 InX, uint32 InY, uint32 InWidth, uint32 InHeight)
Definition TextureAtlas.cpp:383
SLATECORE_API void EmptyAtlasData()
Definition TextureAtlas.cpp:79
TArray< uint8 > AtlasData
Definition TextureAtlas.h:216
virtual SLATECORE_API ~FSlateTextureAtlas()
Definition TextureAtlas.cpp:70
SLATECORE_API const FAtlasedTextureSlot * AddTexture(uint32 TextureWidth, uint32 TextureHeight, const TArray< uint8 > &Data)
Definition TextureAtlas.cpp:111
SLATECORE_API void InitAtlasData()
Definition TextureAtlas.cpp:141
SLATECORE_API void ZeroRow(const FCopyRowData &CopyRowData)
Definition TextureAtlas.cpp:198
uint32 GetWidth() const
Definition TextureAtlas.h:120
SLATECORE_API void MarkTextureDirty()
Definition TextureAtlas.cpp:127
SLATECORE_API const FAtlasedTextureSlot * FindSlotForTexture(uint32 InWidth, uint32 InHeight)
Definition TextureAtlas.cpp:299
ESlateTextureAtlasThreadId AtlasOwnerThread
Definition TextureAtlas.h:239
bool bNeedsUpdate
Definition TextureAtlas.h:231
SLATECORE_API void CopyRow(const FCopyRowData &CopyRowData)
Definition TextureAtlas.cpp:163
ESlateTextureAtlasPaddingStyle PaddingStyle
Definition TextureAtlas.h:228
FAtlasedTextureSlot * AtlasUsedSlots
Definition TextureAtlas.h:218
bool bUpdatesAfterInitialization
Definition TextureAtlas.h:233
virtual void ReleaseResources()=0
virtual void ConditionalUpdateTexture()=0
uint32 AtlasWidth
Definition TextureAtlas.h:222
Definition TextureAtlas.h:328
virtual int32 GetNumAtlasPages() const =0
virtual class FSlateShaderResource * GetAtlasPageResource(const int32 InIndex) const =0
virtual ~ISlateAtlasProvider()
Definition TextureAtlas.h:331
virtual bool IsAtlasPageResourceAlphaOnly(const int32 InIndex) const =0
Definition TextureAtlas.h:262
virtual void ReleaseTextureAtlases(const TArray< TUniquePtr< FSlateTextureAtlas > > &InTextureAtlases, const TArray< TUniquePtr< FSlateShaderResource > > &InNonAtlasedTextures, const bool bWaitForRelease) const =0
virtual TUniquePtr< FSlateTextureAtlas > CreateTextureAtlas(int32 AtlasSize, int32 AtlasStride, ESlateTextureAtlasPaddingStyle PaddingStyle, bool bUpdatesAfterInitialization) const =0
virtual TUniquePtr< FSlateShaderResource > CreateNonAtlasedTexture(const uint32 InWidth, const uint32 InHeight, const TArray< uint8 > &InRawData) const =0
virtual ~ISlateTextureAtlasFactory()
Definition TextureAtlas.h:264
Definition Array.h:670
Definition List.h:349
Definition UniquePtr.h:107
Definition TextureAtlas.h:274
int32 GrowNonAtlasFrameWindow
Definition TextureAtlas.h:278
int32 InitialMaxNonAtlasPagesBeforeFlushRequest
Definition TextureAtlas.h:276
int32 InitialMaxAtlasPagesBeforeFlushRequest
Definition TextureAtlas.h:275
int32 GrowAtlasFrameWindow
Definition TextureAtlas.h:277
Definition TextureAtlas.h:244
FSlateRect AtlasSlotRect
Definition TextureAtlas.h:255
bool operator!=(const FAtlasSlotInfo &Other) const
Definition TextureAtlas.h:250
FName TextureName
Definition TextureAtlas.h:256
FAtlasSlotInfo()
Definition TextureAtlas.h:245
Definition TextureAtlas.h:72
uint32 Width
Definition TextureAtlas.h:78
uint8 Padding
Definition TextureAtlas.h:82
uint32 Height
Definition TextureAtlas.h:80
FAtlasedTextureSlot(uint32 InX, uint32 InY, uint32 InWidth, uint32 InHeight, uint8 InPadding)
Definition TextureAtlas.h:84
uint32 X
Definition TextureAtlas.h:74
uint32 Y
Definition TextureAtlas.h:76
Definition TextureAtlas.h:167
uint32 RowWidth
Definition TextureAtlas.h:177
uint32 SrcTextureWidth
Definition TextureAtlas.h:179
uint8 * DestData
Definition TextureAtlas.h:171
uint32 SrcRow
Definition TextureAtlas.h:173
const uint8 * SrcData
Definition TextureAtlas.h:169
uint32 DestTextureWidth
Definition TextureAtlas.h:181
uint32 DestRow
Definition TextureAtlas.h:175
Definition IntPoint.h:25