Sidst opdateret: 21 sept., 2026

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

Billedfilformater for spiludviklere: DDS, TGA, PNG og KTX

I spiludvikling udgør teksturer den enkelt største del af både runtime-hukommelsesforbrug og installationsbygningens størrelse. Uanset om du bygger et indie‑stiliseret platformspil eller presser fotorealisme i et AAA open‑world RPG, bestemmer hvordan du gemmer, behandler og indlæser teksturdata direkte dine billedhastigheder, indlæsningstider og hardwarekompatibilitet.

En almindelig nybegynderfejl er at behandle spilteksturer som webgrafik – at antage at en let fil på disken svarer til let ydeevne i din spilmotor. I GPU‑verdenen er runtime‑realiteterne helt anderledes.

I denne dybdegående gennemgang nedbryder vi de fire mest kritiske tekstur‑ og billedfilformater i moderne spiludvikling: DDS, TGA, PNG og KTX. Vi vil undersøge, hvordan de fungerer, hvor de passer ind i asset‑pipelinen, og hvornår man skal bruge hver enkelt.

Den gyldne regel: Disklager vs. Video RAM (VRAM)

Før man dissekerer individuelle formater, skal udviklere forstå den grundlæggende forskel mellem disklagringskomprimering og GPU‑hardwareblokkomprimering.

1. Diskkomprimering (PNG, JPEG, WebW)

Formater som PNG bruger tabsfri entropikodning (DEFLATE). Mens PNG sparer enorme mængder plads på en SSD eller downloadserver, kan moderne GPU’er ikke sample PNG-filer direkte. Når din spilmotor indlæser en PNG:

  • CPU’en skal dekomprimere filen til rå, ukomprimerede 32-bit RGBA-pixels i systemhukommelsen.
  • Den ukomprimerede bitmap uploades til VRAM.
  • En 2048×2048 tekstur bruger cirka 16 MB VRAM, uanset om PNG-filen var 1 MB eller 3 MB på disken.

2. GPU-blokkomprimering (BCn, ASTC, ETC2)

Dedikerede GPU-formater komprimerer faste blokke af pixels (typisk 4×4 pixelblokke) til mindre bitrepræsentationer. Grafikhardware sampler disse blokke direkte i VRAM uden CPU-side dekomprimering:

  • Direkte VRAM-tilfældig adgang uden nogen runtime-dekomprimeringsomkostning.
  • Den samme 2048×2048 tekstur, der bruger BC7/ASTC, bruger kun omtrent 4 MB VRAM (en 75 % reduktion).
  • Mipmaps kan indlejres direkte i containerfilen.

Containere som DDS og KTX er bygget specifikt til at indpakke disse GPU-native formater, mens PNG og TGA har forskellige roller tidligere i pipeline’en.

1. DDS (DirectDraw Surface)

Introduceret af Microsoft sammen med DirectX 7, er DirectDraw Surface (.dds)-formatet den ubestridte industriarbejds-hest for PC-, Xbox- og konsolspiludvikling.

Tekniske egenskaber

  • Containertype: Indfødt GPU-teksturbeholder.
  • Understøttet komprimering: BC1 gennem BC7 (Block Compression / DXT-familien), ukomprimeret RGBA, flydende formater (BC6H for HDR).
  • Vigtige funktioner: Forudbagt mipmaps, cube maps, teksturarrays, volumen (3D)-teksturer.

Hvorfor udviklere bruger DDS

DDS er i bund og grund en direkte hukommelsesdump af hvad grafikhardwaren har brug for. Når en DDS-tekstur med forudgenererede mipmaps indlæses, springer motoren CPU-dekomprimering helt over og udfører en direkte Direct3D- eller Vulkan-hukommelseskopiering til GPU’en. Dette eliminerer CPU-flaskehalse under streaming og niveauindlæsning.

Fordele

  • Lynhurtige indlæsningstider: Nul dekomprimerings-CPU-cyklusser kræves ved kørsel.
  • Forudbagt mipmaps: Offline mipmap-generering tillader kunstnerkontrolleret filtrering, skærpning og normalmap-normalisering på tværs af LOD’er.
  • VRAM-effektivitet: Anvender industri-standard BC-komprimeringsalgoritmer indfødt.

Ulemper

  • DirectX/Windows Bias: Historisk knyttet til Microsoft-økosystemer, men bredt understøttet på moderne desktop-motorer.
  • Lossy Compression Artifacts: Blokkomprimering (især BC1 på normalmaps) kan introducere blokering, medmindre BC5/BC7 anvendes.
  • Limited Mobile Support: Mobile GPU’er foretrækker typisk ASTC eller ETC2 frem for desktop BC-formater.

2. TGA (Truevision Targa)

Oprettet i 1984, TGA (.tga) er et ukomprimeret eller løbende længde‑kodet (RLE) rastergrafikfilformat, som har forblevet en pålidelig pipeline‑standard i over tre årtier.

Tekniske egenskaber

  • Container Type: Ukomprimeret forfatter‑/udvekslings‑bitmap.
  • Bit Depths: 8, 16, 24 og 32 bits per pixel (RGB + dedikeret 8-bit Alpha‑kanal).
  • Compression: Ingen eller grundlæggende RLE (Run-Length Encoding).

Hvorfor udviklere bruger TGA

TGA foretrækkes af tekniske kunstnere og motorprogrammerere for sin rene arkitektoniske enkelhed. I modsætning til PNG, som indlejrer en alfa‑kanal i komplekse filtrerings‑matricer, holder TGA farvedata og alfa‑kanaler helt adskilte og urørte.

Når du opretter brugerdefinerede masker (f.eks. pakker Roughness i rød, Metallic i grøn, Ambient Occlusion i blå og Height i alfa), sikrer TGA, at der ikke opstår subtile algoritmiske blandinger eller farveblødning mellem kanalerne.

Fordele

  • Uforstyrret datanøjagtighed: Bit-nøjagtig bevarelse af kanalværdier; ideel til kanal-pakkede ORM (Occlusion-Roughness-Metallic) teksturer.
  • Triviel parsing: Interne pipeline-værktøjer, brugerdefinerede eksportører og automatiserede scripts kan læse og skrive TGA-filer med minimale kodelinjer.
  • Universel DCC-understøttelse: Maya, 3ds Max, Blender, Substance 3D og Photoshop tilbyder indbygget, problemfri TGA-eksport.

Ulemper

  • Massive filstørrelser: Stor pladsforbrug i Git/Perforce-repositorier og langsomme downloadhastigheder for distribuerede teams.
  • Uegnet til runtime: Kan ikke bruges direkte af GPU’en som et komprimeret format; skal konverteres af motoren under kogning.

3. PNG (Portable Network Graphics)

PNG (.png) er verdens mest anerkendte tabsfrie billedformat, der bruger zlib/DEFLATE-kompression til at pakke rige 24-bit og 32-bit billeder i bemærkelsesværdigt små filer.

Tekniske egenskaber

  • Containertype: Tabsfri forfatter- og leveringsformat.
  • Bitdybder: Op til 16 bit per kanal (48-bit RGB, 64-bit RGBA).
  • Komprimering: Tabfri DEFLATE-algoritme.

Hvorfor udviklere bruger PNG

PNG fungerer som det primære distributionsformat for UI‑assets, sprites, reklame‑materialer og mellemliggende kilde‑teksturer. For 2D‑spil lavet i Unity, Godot eller Unreal Engine giver PNG skarp pixel‑trofasthed med fejlfri gennemsigtighedsmasker.

Fordele

  • Kompakt lageraftryk: Reducerer projektets checkout‑størrelser betydeligt sammenlignet med ukomprimeret TGA.
  • Tabfri farvekvalitet: Ingen komprimeringsartefakter på højkontrastkanter og vektor‑stil illustrationer.
  • Indbygget alfa‑gennemsigtighed: Ren 8-bit alfa‑kanal support for komplekse gennemsigtige UI‑elementer og partikel‑ark.

Ulemper

  • Tung CPU‑dekodning: Dekomprimering af store PNG‑filer i runtime sænker billedhastigheden og får hukommelsesforbruget til at stige før GPU‑upload.
  • Premultiplied Alpha-faldgruber: Nogle billedredigeringsprogrammer kasserer RGB‑data i fuldt gennemsigtige pixels, hvilket ødelægger tekstur‑blødning og forårsager mørke konturer omkring sprites.
  • Zero VRAM Besparelser: Dekomprimeres til fuld 32-bit råhukommelse inde i GPU’en, medmindre den indtages af motorens tekstur-cooker.

4. KTX (Khronos Texture) og KTX 2.0

Udviklet af Khronos Group—det styrende organ bag Vulkan, OpenGL og glTF—KTX (.ktx) og KTX 2.0 repræsenterer den moderne åbne standard for tværplatform GPU-teksturer.

Tekniske egenskaber

  • Containertype: Standardiseret åben GPU-teksturcontainer.
  • Komprimeringsunderstøttelse: Basis Universal (ETC1S og UASTC), ASTC, BCn, ETC2.
  • Nøglefunktioner: Universel teksturtranskodning, mipmaps, cubemaps, array-teksturer, glTF-integration.

Hvorfor udviklere bruger KTX

KTX 2.0 løser det fragmenterede tværplatform-komprimeringsdilemma. Traditionelt måtte udviklere levere DDS (BCn) til desktop/konsoller og ASTC/ETC2 til mobil/tabletter.

Med KTX 2.0 og Basis Universal:

  1. Du gemmer teksturer i et kompakt, universelt komprimerbart format.
  2. Ved kørselstid transkoder klienthardwaren filen direkte til det blokformat, som den lokale GPU foretrækker (f.eks. BC7 på en GeForce RTX, ASTC på en iPhone, ETC2 på en ældre Android-enhed).
  3. Superkomprimering (Zstandard) producerer filer, der er mindre end JPEG på disken, og som transkoderes til native VRAM-blokke på millisekunder.

Fordele

  • Ægte tværplatformstandard: Kører problemfrit på Vulkan, WebGL, WebGPU og mobile enheder.
  • Basis Universal Transcoding: En enkelt asset-build målretter desktop, mobil og browser uden duplikerede tekstureksport.
  • Førsteklasses glTF-kompagni: Væsentlig for moderne 3D-weboplevelser, metavers-motorer og åbne renderings-pipelines.

Ulemper

  • Pipeline-værktøjsmodenhed: Kræver moderne build-kæder (såsom toktx fra KTX-Software-suiten); ældre proprietære motorer kan mangle integration klar til brug.
  • Transcoder-overhead: Let runtime transcode-latens (selvom den er størrelsesordener hurtigere end fuld PNG-softwaredekodning).

Sammenligning side om side

Funktion / KriterierDDSTGAPNGKTX / KTX 2.0
Primært anvendelsesområdePC/Konsol runtimeKildeforfatning & masker2D-sprites & kildekunstCross-platform & web-runtime
Direkte GPU-samplingJa (Native)NejNejJa (Native eller transkodet)
VRAM-komprimeringJa (BC1–BC7)Nej (Ukomprimeret)Nej (Ukomprimeret)Ja (ASTC, BCn, Basis)
Forudbagt MipmapsJaNejNejJa
DiskstørrelseModeratMeget højLilleEkstremt lille (Basis + Zstandard)
ØkosystemDirectX / Desktop-motorerDCC-software / Source-pipelinesUniverselle Web- og 2D-motorerVulkan, WebGPU, glTF

Praktisk guide: Byg den ideelle asset-pipeline

Hvordan bør du organisere disse fire formater i en kommerciel produktionspipeline? Sådan strukturerer topstudier deres tekstur‑pipelines:

[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. Kilde‑aktiver: Gem master‑filer og kanal‑pakker data i TGA eller PNG i dine projekt‑repositories for at sikre ukorrumperet farveinformation.
  2. PC‑ og konsol‑builds: Konverter dine kilde‑teksturer til DDS‑filer ved brug af BC7 til høj‑detalje albedo/normal‑maps og BC4/BC5 til enkelt‑ og dobbelt‑kanal‑masker.
  3. Cross‑platform, web‑ og mobil‑builds: Pak runtime‑3D‑aktiver i KTX 2.0 for at udnytte universel transkodning på tværs af Android, iOS og WebGPU uden at vedligeholde separate kunst‑grene.
  4. Brugergrænseflader: Hold runtime‑UI‑teksturer enten i skarpe ukomprimerede formater eller tabsfri motor‑atlasser afledt af høj‑opløsnings‑PNG‑kildefiler.

Ofte stillede spørgsmål (FAQ)

Q1. Kan en spilmotor hente en PNG direkte fra videohukommelsen?

A1: Nej; GPU’er kan ikke parse PNG‑komprimering, så motorer skal dekomprimere PNG‑filer til rå 32‑bit bitmap i hukommelsen før de uploades til VRAM.

Q2. Hvorfor foretrækker tekniske kunstnere TGA frem for PNG til maskepakning?

A2: TGA gemmer ren, ukomprimeret kanaldata uden farveblødning eller destruktiv kantgennemsigtighedsfiltrering på tværs af individuelle RGB- og Alpha-kanaler.

Q3. Hvilken blokkomprimeringsalgoritme skal jeg bruge i en DDS-beholder til normalmaps?

A3: Brug BC5 (to-kanals tangentrumkomprimering) til normalkort for at bevare ren overfladekurvatur uden standard BC1-blokartefakter.

Q4. Hvad gør KTX 2.0 bedre end DDS til tværplatformsspil?

A4: KTX 2.0 understøtter Basis Universal, som gør det muligt for en enkelt fil at transkode on-the-fly til desktop BCn-formater eller mobile ASTC/ETC-formater ved opstart.

Q5. Øger forudbagt mipmaps i DDS- eller KTX-filer diskstørrelsen?

A5: Ja, inklusion af fulde mipmap-kæder tilføjer cirka 33 % mere rådata til filen, men det eliminerer kørselstidsskumring, forbedrer cache-lokalitet og øger GPU-renderingsydelsen.

Se også