Ostatnia aktualizacja: 21 wrz, 2026

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

Formaty plików graficznych dla twórców gier: DDS, TGA, PNG i KTX

W tworzeniu gier tekstury stanowią największy fragment zarówno zużycia pamięci w czasie działania, jak i rozmiaru instalacji. Niezależnie od tego, czy tworzysz indie’owy stylizowany platformer, czy dążysz do fotorealizmu w AAA otwartym świecie RPG, sposób, w jaki przechowujesz, przetwarzasz i wczytujesz dane tekstur, bezpośrednio decyduje o liczbie klatek na sekundę, czasach ładowania i kompatybilności sprzętowej.

Częstym błędem początkujących jest traktowanie tekstur w grach jak grafiki internetowe — zakładając, że lekki plik na dysku przekłada się na lekki wydajność w silniku gry. W świecie GPU rzeczywistość w czasie działania jest zupełnie inna.

W tym dogłębnym opracowaniu rozkładamy cztery najważniejsze formaty plików tekstur i obrazów w nowoczesnym tworzeniu gier: DDS, TGA, PNG i KTX. Zbadamy, jak działają, gdzie pasują w pipelineie zasobów i kiedy używać każdego z nich.

Złota zasada: pamięć dyskowa vs. pamięć wideo (VRAM)

Zanim przystąpisz do analizy poszczególnych formatów, deweloperzy muszą zrozumieć podstawową różnicę między kompresją przechowywania na dysku a sprzętową blokową kompresją GPU.

1. Kompresja dyskowa (PNG, JPEG, WebP)

Formaty takie jak PNG używają bezstratnego kodowania entropii (DEFLATE). Choć PNG oszczędza ogromne ilości miejsca na SSD lub serwerze pobierania, nowoczesne GPU nie mogą bezpośrednio próbować plików PNG. Gdy silnik gry ładuje PNG:

  • CPU musi zdekompresować plik do surowych, nieskompresowanych 32‑bitowych pikseli RGBA w pamięci systemowej.
  • Nieskompresowana bitmapa jest przesyłana do VRAM.
  • Tekstura 2048×2048 zajmuje około 16 MB VRAM, niezależnie od tego, czy plik PNG miał 1 MB czy 3 MB na dysku.

2. Blokowa kompresja GPU (BCn, ASTC, ETC2)

Dedykowane formaty GPU kompresują stałe bloki pikseli (zazwyczaj bloki 4×4 pikseli) do mniejszych reprezentacji bitowych. Sprzęt graficzny odczytuje te bloki bezpośrednio w VRAM, bez dekompresji po stronie CPU:

  • Bezpośredni dostęp losowy do VRAM bez żadnego narzutu dekompresji w czasie wykonywania.
  • Ta sama tekstura 2048×2048 używająca BC7/ASTC zajmuje tylko około 4 MB VRAM (redukcja o 75 %).
  • Mipmapy mogą być wbudowane bezpośrednio w plik kontenera.

Kontenery takie jak DDS i KTX są tworzone specjalnie do opakowywania tych natywnych formatów GPU, podczas gdy PNG i TGA pełnią odrębne role we wcześniejszych etapach potoku.

1. DDS (DirectDraw Surface)

Wprowadzony przez Microsoft wraz z DirectX 7, format DirectDraw Surface (.dds) jest niezaprzeczalnym koniem roboczym branży dla PC, Xbox i tworzenia gier na konsole.

Charakterystyka techniczna

  • Typ kontenera: Natywny kontener tekstur GPU.
  • Obsługiwane kompresje: BC1 do BC7 (Block Compression / rodzina DXT), nieskompresowane RGBA, formaty zmiennoprzecinkowe (BC6H dla HDR).
  • Kluczowe możliwości: Wstępnie wygenerowane mipmapy, mapy sześcienne, tablice tekstur, tekstury wolumetryczne (3D).

Dlaczego deweloperzy używają DDS

DDS jest w zasadzie bezpośrednim zrzutem pamięci tego, czego potrzebuje sprzęt graficzny. Podczas ładowania tekstury DDS z wstępnie wygenerowanymi mipmapami, silnik całkowicie pomija dekompresję CPU i wykonuje bezpośrednie kopiowanie pamięci Direct3D lub Vulkan do GPU. Eliminuje to wąskie gardła CPU podczas strumieniowania i ładowania poziomów.

Zalety

  • Błyskawicznie szybkie czasy ładowania: Zero cykli dekompresji CPU wymaganych w czasie działania.
  • Wstępnie wygenerowane mipmapy: Generowanie mipmap offline pozwala artystom kontrolować filtrowanie, wyostrzanie i normalizację map normalnych w różnych poziomach szczegółowości (LOD).
  • Wydajność VRAM: Natychmiastowo wykorzystuje standardowe algorytmy kompresji BC.

Wady

  • DirectX/Windows Bias: Historycznie powiązany z ekosystemami Microsoft, choć szeroko wspierany w nowoczesnych silnikach desktopowych.
  • Lossy Compression Artifacts: Kompresja blokowa (szczególnie BC1 na mapach normalnych) może wprowadzać blokowatość, chyba że użyje się BC5/BC7.
  • Limited Mobile Support: Mobilne GPU zazwyczaj preferują ASTC lub ETC2 zamiast desktopowych formatów BC.

2. TGA (Truevision Targa)

Stworzony w 1984 roku, TGA (.tga) to nieskompresowany lub kodowany metodą run-length (RLE) format plików grafiki rastrowej, który pozostaje niezawodnym elementem pipeline od ponad trzech dekad.

Charakterystyka techniczna

  • Container Type: Nieskompresowany bitmap do autorskiego i wymiany.
  • Bit Depths: 8, 16, 24 i 32 bity na piksel (RGB + dedykowany 8‑bitowy kanał alfa).
  • Compression: Brak lub podstawowy RLE (Run-Length Encoding).

Dlaczego programiści używają TGA

TGA jest preferowana przez artystów technicznych i programistów silników ze względu na jej czystą prostotę architektoniczną. W przeciwieństwie do PNG, które osadza kanał alfa w złożonych macierzach filtrujących, TGA utrzymuje dane kolorów i kanały alfa całkowicie odrębne i niezmienione.

Podczas tworzenia własnych masek (np. pakowanie Roughness do czerwonego, Metallic do zielonego, Ambient Occlusion do niebieskiego i Height do alfa), TGA zapewnia, że nie występuje subtelne algorytmiczne mieszanie ani rozlewanie kolorów pomiędzy kanałami.

Zalety

  • Nienaruszona wierność danych: Bitowa dokładność zachowania wartości kanałów; idealne dla tekstur z kanałami pakowanymi jako ORM (Occlusion-Roughness-Metallic).
  • Trywialne parsowanie: Narzędzia wewnętrznego pipeline’u, własne eksportery i automatyczne skrypty mogą odczytywać i zapisywać pliki TGA przy minimalnej liczbie linii kodu.
  • Uniwersalne wsparcie DCC: Maya, 3ds Max, Blender, Substance 3D i Photoshop oferują natywny, bezproblemowy eksport TGA.

Wady

  • Ogromne rozmiary plików: Duży ślad w repozytoriach Git/Perforce oraz wolne prędkości pobierania w rozproszonych zespołach.
  • Niewłaściwy dla czasu wykonywania: Nie może być używany bezpośrednio przez GPU jako format skompresowany; musi być konwertowany przez silnik w czasie przygotowania (cook).

3. PNG (Portable Network Graphics)

PNG (.png) jest najbardziej rozpoznawalnym na świecie bezstratnym formatem obrazu, wykorzystującym kompresję zlib/DEFLATE do pakowania bogatych obrazów 24‑bitowych i 32‑bitowych w niezwykle małe pliki.

Charakterystyka techniczna

  • Typ kontenera: Bezstratny format tworzenia i dystrybucji.
  • Głębia bitowa: Do 16 bitów na kanał (48-bitowy RGB, 64-bitowy RGBA).
  • Kompresja: Bezstratny algorytm DEFLATE.

Dlaczego programiści używają PNG

PNG jest głównym formatem dystrybucji zasobów UI, sprite’ów, materiałów promocyjnych oraz pośrednich tekstur źródłowych. Dla gier 2D tworzonych w Unity, Godot lub Unreal Engine, PNG zapewnia wyraźną wierność pikseli oraz nienaganne maski przezroczystości.

Zalety

  • Kompaktowy rozmiar repozytorium: Znacznie zmniejsza rozmiary pobierania projektu w porównaniu do nieskompresowanego TGA.
  • Bezstratna jakość kolorów: Zero artefaktów kompresji na krawędziach o wysokim kontraście i ilustracjach w stylu wektorowym.
  • Natywna przezroczystość alfa: Czyste wsparcie 8-bitowego kanału alfa dla złożonych przezroczystych elementów UI oraz arkuszy cząstek.

Wady

  • Ciężkie dekodowanie CPU: Rozpakowywanie dużych plików PNG w czasie działania spowalnia liczbę klatek i powoduje skoki zużycia pamięci przed przesłaniem do GPU.
  • Pułapki premultypowanej alfa: Niektóre edytory obrazów usuwają dane RGB w całkowicie przezroczystych pikselach, co psuje rozlewanie tekstur i powoduje ciemne obramowania wokół sprite’ów.
  • Zero oszczędności VRAM: Dezakompresowuje do pełnej 32-bitowej surowej pamięci wewnątrz GPU, chyba że zostanie przetworzone przez gotowarkę tekstur silnika.

4. KTX (Khronos Texture) i KTX 2.0

Opracowane przez Khronos Group — organ regulacyjny stojący za Vulkan, OpenGL i glTF — KTX (.ktx) i KTX 2.0 reprezentują nowoczesny otwarty standard dla tekstur GPU działających na wielu platformach.

Charakterystyka techniczna

  • Typ kontenera: Zstandardyzowany otwarty kontener tekstur GPU.
  • Wsparcie kompresji: Basis Universal (ETC1S i UASTC), ASTC, BCn, ETC2.
  • Kluczowe możliwości: Uniwersalne transkodowanie tekstur, mipmapy, mapy sześcienne (cubemaps), tekstury tablicowe, integracja z glTF.

Dlaczego programiści używają KTX

KTX 2.0 rozwiązuje problem rozproszonej kompresji wieloplatformowej. Tradycyjnie programiści musieli dostarczać DDS (BCn) dla komputerów stacjonarnych/konsol oraz ASTC/ETC2 dla urządzeń mobilnych/tabletów.

Z KTX 2.0 i Basis Universal:

  1. Przechowujesz tekstury w kompaktowym, uniwersalnie kompresowalnym formacie.
  2. W czasie działania sprzęt klienta transkoduje plik bezpośrednio do dowolnego formatu blokowego preferowanego przez lokalny GPU (np. BC7 na GeForce RTX, ASTC na iPhone, ETC2 na starszym urządzeniu z Androidem).
  3. Superkompresja (Zstandard) tworzy pliki mniejsze niż JPEG na dysku, które w ciągu milisekund transkodują się do natywnych bloków VRAM.

Zalety

  • Prawdziwy standard wieloplatformowy: Działa płynnie na Vulkan, WebGL, WebGPU i urządzeniach mobilnych.
  • Transkodowanie Basis Universal: Jedna kompilacja zasobu docelowo obsługuje komputery stacjonarne, urządzenia mobilne i przeglądarki bez podwójnego eksportu tekstur.
  • Komponent glTF pierwszej klasy: Niezbędny dla nowoczesnych doświadczeń 3D w sieci, silników metaverse i otwartych pipeline’ów renderujących.

Wady

  • Dojrzałość narzędzi pipeline: Wymaga nowoczesnych łańcuchów budowania (np. toktx z zestawu KTX-Software); starsze, własnościowe silniki mogą nie mieć gotowej integracji.
  • Obciążenie transkodera: Nieznaczne opóźnienie transkodowania w czasie działania (choć o rzędy wielkości szybsze niż pełne dekodowanie PNG w oprogramowaniu).

Porównanie Bezpośrednie

Funkcja / KryteriaDDSTGAPNGKTX / KTX 2.0
Podstawowy Przypadek UżyciaŚrodowisko uruchomieniowe PC/KonsoliTworzenie źródeł i maskiSprite’y 2D i grafika źródłowaŚrodowisko uruchomieniowe wieloplatformowe i internetowe
Bezpośrednie próbkowanie GPUTak (Natywne)NieNieTak (Natywne lub Transkodowane)
Kompresja VRAMTak (BC1–BC7)Nie (Nieskompresowane)Nie (Nieskompresowane)Tak (ASTC, BCn, Basis)
Wstępnie wypiekane mipmapyTakNieNieTak
Rozmiar dyskuUmiarkowanyBardzo wysokiMałyNiezwykle mały (Basis + Zstandard)
EkosystemDirectX / Silniki desktopoweOprogramowanie DCC / Potoki źródłoweUniwersalne silniki internetowe i 2DVulkan, WebGPU, glTF

Praktyczny przewodnik: Budowanie idealnego potoku zasobów

Jak powinieneś zorganizować te cztery formaty w komercyjnym pipeline produkcyjnym? Oto jak wiodące studia strukturyzują swoje pipeline tekstur:

[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. Source Assets: Przechowuj pliki master i dane pakowane kanałowo w formatach TGA lub PNG w repozytoriach projektu, aby zapewnić nienaruszoną informację o kolorze.
  2. PC & Console Builds: Przetwórz swoje tekstury źródłowe do plików DDS, używając BC7 dla wysokiej szczegółowości map albedo/normal oraz BC4/BC5 dla jednopasmowych i dwupasmowych masek.
  3. Cross-Platform, Web & Mobile Builds: Pakuj zasoby 3D w czasie wykonywania do formatu KTX 2.0, aby wykorzystać uniwersalne transkodowanie na Androidzie, iOS i WebGPU bez konieczności utrzymywania oddzielnych gałęzi artystycznych.
  4. User Interfaces: Przechowuj tekstury UI w czasie wykonywania albo w wyraźnych, nieskompresowanych formatach, albo w bezstratnych atlasach silnika pochodzących z wysokiej rozdzielczości plików źródłowych PNG.

Najczęściej zadawane pytania (FAQ)

Q1. Czy silnik gry może pobierać PNG bezpośrednio z pamięci wideo?

A1: Nie; GPU nie mogą parsować kompresji PNG, więc silniki muszą zdekompresować pliki PNG do surowych 32-bitowych bitmap w pamięci przed ich załadowaniem do VRAM.

Q2. Dlaczego artyści techniczni wolą TGA od PNG przy pakowaniu masek?

A2: TGA przechowuje czyste, nieskompresowane dane kanałów bez rozlewania kolorów ani destrukcyjnego filtrowania przejrzystości krawędzi w poszczególnych kanałach RGB i alfa.

Q3. Który algorytm blokowej kompresji powinienem użyć w kontenerze DDS dla map normalnych?

A3: Użyj BC5 (kompresja dwukanałowa w przestrzeni stycznej) dla map normalnych, aby zachować czystą krzywiznę powierzchni bez standardowych artefaktów bloków BC1.

Q4. Co sprawia, że KTX 2.0 jest lepszy od DDS w grach wieloplatformowych?

A4: KTX 2.0 obsługuje Basis Universal, co pozwala jednemu plikowi na bieżąco transkodować się do formatów BCn na komputerach stacjonarnych lub formatów ASTC/ETC na urządzeniach mobilnych przy uruchomieniu.

Q5. Czy wstępne generowanie mipmap w plikach DDS lub KTX zwiększa rozmiar dysku?

A5: Tak, włączenie pełnych łańcuchów mipmap zwiększa rozmiar pliku o około 33 % surowych danych, ale eliminuje migotanie w czasie działania, poprawia lokalność pamięci podręcznej i zwiększa wydajność renderowania GPU.

Zobacz także