Последно актуализирано: 21 септември, 2026

Image File Formats for Game Developers: DDS, TGA, PNG, and KTX Compared

Файлови формати за изображения за гейм разработчици: DDS, TGA, PNG и KTX

В гейм разработката текстурите съставляват най-голямата част от консумацията на памет по време на изпълнение и размера на инсталационния билд. Независимо дали създавате инди стилизиран платформер или преследвате фотореализъм в AAA отворен свят RPG, начинът, по който съхранявате, обработвате и зареждате данните за текстурите, директно определя вашите кадри в секунда, времена за зареждане и съвместимост с хардуера.

Често срещана грешка за начинаещи е да се третират гейм текстурите като уеб графика — да се предполага, че лек файл на диска се превръща в леко изпълнение в игровия двигател. В света на GPU реалността по време на изпълнение е напълно различна.

В това задълбочено изследване разглеждаме четирите най-критични формати за текстури и изображения в съвременната гейм разработка: DDS, TGA, PNG и KTX. Ще разгледаме как работят, къде се вписват в пайплайна на активите и кога да използваме всеки от тях.

Златното правило: Дисково съхранение срещу видеопамет (VRAM)

Преди да разпаднем отделните формати, разработчиците трябва да разберат фундаменталната разлика между компресия за съхранение на диск и хардуерна блокова компресия на GPU.

1. Компресия на диск (PNG, JPEG, WebP)

Формати като PNG използват беззагубно ентропийно кодиране (DEFLATE). Докато PNG спестява огромно количество пространство на SSD или сървър за изтегляне, съвременните GPU не могат директно да семплират PNG файлове. Когато вашият игрови двигател зарежда PNG:

  • CPU‑т трябва да декомпресира файла в сурови, некомпресирани 32‑битови RGBA пиксели в системната памет.
  • Неконпресираната битмапа се качва във VRAM.
  • Текстура с размер 2048×2048 заема приблизително 16 MB VRAM, независимо дали PNG‑ът е бил 1 MB или 3 MB на диска.

2. Блокова компресия на GPU (BCn, ASTC, ETC2)

Посветените GPU формати компресират фиксирани блокове пиксели (обикновено блокове от 4×4 пиксела) в по‑малки битови представяния. Графичният хардуер взема проби от тези блокове директно във VRAM без декомпресия от страна на CPU:

  • Директен произволен достъп до VRAM без никакво натоварване от декомпресия по време на изпълнение.
  • Същата текстура 2048×2048, използваща BC7/ASTC, заема само приблизително 4 MB VRAM (намаление с 75 %).
  • Мипмапите могат да бъдат вградени директно в контейнерния файл.

Контейнери като DDS и KTX са създадени специално за обвиване на тези GPU‑нативни формати, докато PNG и TGA изпълняват различни роли по‑рано в процеса.

1. DDS (DirectDraw повърхност)

Представен от Microsoft заедно с DirectX 7, форматът DirectDraw Surface (.dds) е неоспоримият индустриален работен кон за разработка на игри за PC, Xbox и конзоли.

Технически характеристики

  • Тип на контейнера: Вграден GPU текстурен контейнер.
  • Поддържана компресия: BC1 до BC7 (Block Compression / DXT семейство), некопресирани RGBA, формати с плаваща запетая (BC6H за HDR).
  • Ключови възможности: Предварително генерирани мипмапи, кубични карти, масиви от текстури, обемни (3D) текстури.

Защо разработчиците използват DDS

DDS по същество е директно изхвърляне на паметта на това, което графичният хардуер изисква. При зареждане на DDS текстура с предварително генерирани мипмапи, двигателят изцяло пропуска CPU декомпресията и изпраща директно копиране на паметта чрез Direct3D или Vulkan към GPU. Това премахва теснините в CPU по време на стрийминг и зареждане на нива.

Предимства

  • Изключително бързо време за зареждане: Нулеви CPU цикли за декомпресия по време на изпълнение.
  • Предварително генерирани мипмапи: Офлайн генерирането на мипмапи позволява контролирано от художника филтриране, изостряне и нормализация на нормалните карти през различните нива на детайл (LOD).
  • Ефективност на VRAM: Използва нативно индустриално-стандартни BC алгоритми за компресия.

Недостатъци

  • DirectX/Windows Bias: Исторически свързано с екосистемите на Microsoft, въпреки че е широко поддържано в съвременните настолни енджини.
  • Lossy Compression Artifacts: Блоковото компресиране (особено BC1 върху нормални карти) може да въведе блокираност, освен ако не се използва BC5/BC7.
  • Limited Mobile Support: Мобилните GPU обикновено предпочитат ASTC или ETC2 пред настолните BC формати.

2. TGA (Truevision Targa)

Създаден през 1984 г., TGA (.tga) е некомпресиран или кодирано с дължина на поредица (RLE) растерен графичен файлов формат, който остава стабилна основа в производствения процес повече от три десетилетия.

Технически характеристики

  • Container Type: Некомпресиран битмап за създаване/обмен.
  • Bit Depths: 8, 16, 24 и 32 бита на пиксел (RGB + отделен 8-битов Alpha канал).
  • Compression: Няма или базово RLE (Run-Length Encoding).

Защо разработчиците използват TGA

TGA се предпочита от техническите артисти и програмистите на енджини заради изключителната си архитектурна простота. За разлика от PNG, който вгражда алфа канал в сложни филтърни матрици, TGA запазва цветовите данни и алфа каналите напълно отделени и непокътнати.

Когато създавате персонализирани маски (например, пакетиране на Roughness в червено, Metallic в зелено, Ambient Occlusion в синьо и Height в алфа), TGA гарантира, че между каналите няма да се появи деликатно алгоритмично смесване или изтичане на цвят.

Предимства

  • Прецизна верност на данните: Точно запазване на стойностите на каналите; идеално за текстури с пакетирани канали ORM (Occlusion-Roughness-Metallic).
  • Лесно парсиране: Вътрешните инструменти за пайплайн, персонализирани експортери и автоматизирани скриптове могат да четат и записват TGA файлове с минимален брой редове код.
  • Универсална поддръжка на DCC: Maya, 3ds Max, Blender, Substance 3D и Photoshop предлагат вграден, безпроблемен експорт на TGA.

Недостатъци

  • Огромни размери на файловете: Значително натоварване в Git/Perforce репозитории и бавни скорости на изтегляне при разпределени екипи.
  • Неподходящо за изпълнение: Не може да се използва директно от GPU като компресиран формат; трябва да бъде конвертирано от енджина по време на компилация.

3. PNG (Portable Network Graphics)

PNG (.png) е най-разпознаваният в света беззагубен формат за изображения, използващ компресия zlib/DEFLATE за пакетиране на богати 24-битови и 32-битови изображения в изключително малки файлове.

Технически характеристики

  • Тип контейнер: Беззагубен формат за създаване и доставка.
  • Битова дълбочина: До 16 бита на канал (48-битов RGB, 64-битов RGBA).
  • Компресия: Беззагубен алгоритъм DEFLATE.

Защо разработчиците използват PNG

PNG служи като основен формат за разпространение на UI активи, спрайтове, рекламни материали и междинни изходни текстури. За 2D игри, създадени в Unity, Godot или Unreal Engine, PNG осигурява ясна пикселна точност с безупречни маски за прозрачност.

Предимства

  • Компактен отпечатък в хранилището: Силно намалява размерите при изтегляне на проекта в сравнение с некопресирания TGA.
  • Беззагубено цветово качество: Нулеви артефакти от компресия върху висококонтрастни ръбове и векторни илюстрации.
  • Вродена алфа прозрачност: Чисто 8-битово поддържане на алфа канал за сложни полупрозрачни UI елементи и листове с частици.

Недостатъци

  • Тежко декодиране от CPU: Декомпресирането на големи PNG файлове по време на изпълнение забавя кадрите и увеличава използването на памет преди качване към GPU.
  • Капани при предварително умножена алфа: Някои графични редактори отхвърлят RGB данните в напълно прозрачни пиксели, което разваля изтичането на текстурите и причинява тъмни контури около спрайтовете.
  • Zero VRAM Savings: Декомпресира се до пълна 32-битова сурова памет в GPU, освен ако не бъде обработен от текстурния кукър на двигателя.

4. KTX (Khronos Texture) и KTX 2.0

Разработени от Khronos Group — управляващият орган зад Vulkan, OpenGL и glTF — KTX (.ktx) и KTX 2.0 представляват съвременния отворен стандарт за крос‑платформени GPU текстури.

Технически характеристики

  • Container Type: Стандартизиран отворен контейнер за GPU текстури.
  • Compression Support: Поддръжка на компресия: Basis Universal (ETC1S и UASTC), ASTC, BCn, ETC2.
  • Key Capabilities: Универсално транскодиране на текстури, мипмапи, кубични карти, масивни текстури, интеграция с glTF.

Защо разработчиците използват KTX

KTX 2.0 решава фрагментирания проблем с крос‑платформената компресия. Традиционно разработчиците трябваше да доставят DDS (BCn) за настолни/конзолни системи и ASTC/ETC2 за мобилни устройства/таблети.

С KTX 2.0 и Basis Universal:

  1. Съхранявате текстурите в компактен, универсално компресируем формат.
  2. По време на изпълнение хардуерът на клиента транскодира файла директно в какъвто и да е блоков формат, който предпочита локалният GPU (например BC7 на GeForce RTX, ASTC на iPhone, ETC2 на по-старо Android устройство).
  3. Суперкомпресията (Zstandard) създава файлове, по-малки от JPEG на диска, които се транскодират в родни VRAM блокове за милисекунди.

Предимства

  • Истински крос-платформен стандарт: Работи безпроблемно на Vulkan, WebGL, WebGPU и мобилни устройства.
  • Basis Universal транскодиране: Една единствена сборка на активи цели настолни, мобилни и браузърни платформи без дублиране на експортираните текстури.
  • Първокласен glTF спътник: Необходим за съвременни 3D уеб преживявания, мета-вселенски двигатели и отворени рендеринг конвейери.

Недостатъци

  • Зрялост на инструменти за конвейер: Изисква съвременни вериги за изграждане (като toktx от пакета KTX-Software); по-стари проприетарни двигатели може да нямат готова интеграция.
  • Натоварване от транскодера: Леко закъснение при транскодиране по време на изпълнение (въпреки това е порядъци по-бързо от пълното софтуерно декодиране на PNG).

Сравнение лице в лице

Функция / КритерийDDSTGAPNGKTX / KTX 2.0
Основен случай на употребаPC/Конзолен RuntimeСъздаване на източници & Маски2D Спрайтове & Изходно изкуствоКрос-платформен & Уеб Runtime
Директно GPU семплиранеДа (Нативно)НеНеДа (Нативно или Транскодирано)
Компресия на VRAMДа (BC1–BC7)Не (Некомпресирано)Не (Некомпресирано)Да (ASTC, BCn, Basis)
Предварително създадени мипмапиДаНеНеДа
Размер на дискаУмеренМного високоМалъкИзключително малък (Basis + Zstandard)
ЕкосистемаDirectX / Десктоп двигателиDCC софтуер / Източници за обработкаУниверсални уеб и 2D двигателиVulkan, WebGPU, glTF

Практически наръчник: Създаване на идеалния процес за активи

Как трябва да организирате тези четири формата в комерсиален производствен процес? Ето как водещите студиа структурират своите текстурни процеси:

[DCC & Authoring]               [Engine Ingestion / Cook]            [Runtime GPU Target]
Substance / Photoshop / Blender           Unreal / Unity / Custom Toolset      VRAM Memory Blocks
 
   • TGA (Clean packed masks)    ──────►  Build Engine Texture Cooker  ──────►  DDS (DirectX / Windows / Xbox)
   • PNG (UI & 2D Sprites)       ──────►  Generates Mipmaps & Block    ──────►  KTX2 (Vulkan / WebGPU / Mobile)
   • PSD / EXR (HDR & masters)   ──────►  Compression Automatically   
  1. Изходни активи: Съхранявайте главните файлове и данните, пакетирани по канали, в TGA или PNG в хранилищата на вашия проект, за да гарантирате некорумпирана цветова информация.
  2. PC и конзолни версии: Преработете вашите изходни текстури в DDS файлове, използвайки BC7 за високодетайлни албедо/нормални карти и BC4/BC5 за едноканални и двуканални маски.
  3. Кросплатформени, уеб и мобилни версии: Опаковайте 3D активите по време на изпълнение в KTX 2.0, за да използвате универсално транскодиране за Android, iOS и WebGPU, без да поддържате отделни клонове за изкуство.
  4. Потребителски интерфейси: Запазете UI текстурите по време на изпълнение или в ясни некопресирани формати, или в беззагубни атласи на двигателя, получени от високорезолюционни PNG изходни файлове.

Често задавани въпроси (FAQ)

В1. Може ли игровият енджин да вземе проба от PNG директно от видеопаметта?

A1: Не; GPU‑тата не могат да разчетат PNG компресията, затова двигателите трябва да декомпресират PNG файловете в необработени 32‑битови битмапи в паметта, преди да ги качат във VRAM.

В2. Защо техническите артисти предпочитат TGA пред PNG за пакетиране на маски?

A2: TGA съхранява чисти, некомпресирани данни за каналите без разливане на цветовете или разрушително филтриране на прозрачността по ръбовете в отделните RGB и Alpha канали.

В3. Кой алгоритъм за блоково компресиране трябва да използвам в DDS контейнер за нормални карти?

A3: Използвайте BC5 (компресия в двумерното тангенциално пространство) за нормални карти, за да запазите чистата кривина на повърхността без стандартните артефакти от блокове BC1.

В4. Какво прави KTX 2.0 по‑добрият от DDS за кросплатформени игри?

A4: KTX 2.0 поддържа Basis Universal, което позволява на един файл да се транскодира в движение в настолни формати BCn или мобилни формати ASTC/ETC при стартиране.

В5. Увеличава ли предварителното генериране на мипмапи в DDS или KTX файлове размера на диска?

A5: Да, включването на пълни мипмап вериги добавя приблизително 33% повече необработени данни към файла, но премахва трептенето по време на изпълнение, подобрява локалността на кеша и ускорява производителността на рендериране от GPU.

Вижте още