Senast uppdaterad: 21 sept., 2026

Bildfilformat för spelutvecklare: DDS, TGA, PNG och KTX
I spelutveckling står texturer för den största delen av både minnesförbrukning under körning och installationsbyggnadens storlek. Oavsett om du bygger ett indie‑stylat plattformsspel eller driver fotorealism i ett AAA‑öppen‑värld‑RPG, avgör hur du lagrar, bearbetar och tar in texturdata direkt dina bildhastigheter, laddningstider och hårdvarukompatibilitet.
Ett vanligt nybörjarmisstag är att behandla speltexturer som webb‑grafik—att anta att en lätt fil på disken motsvarar lätt prestanda i din spelmotor. I GPU‑världen är körningsrealiteten helt annorlunda.
I den här djupdykningen går vi igenom de fyra mest kritiska textur‑ och bildfilformaten i modern spelutveckling: DDS, TGA, PNG och KTX. Vi kommer att undersöka hur de fungerar, var de passar in i tillgångspipelinen och när man ska använda varje format.
Den gyllene regeln: Disklagring vs. Video RAM (VRAM)
Innan man dissekerar enskilda format måste utvecklare förstå den grundläggande skillnaden mellan disklagringskomprimering och GPU‑hårdvarublocks‑komprimering.
1. Diskkomprimering (PNG, JPEG, WebP)
Format som PNG använder förlustfri entropikodning (DEFLATE). Även om PNG sparar enorma mängder utrymme på en SSD eller nedladdningsserver, kan moderna GPU:er inte läsa PNG‑filer direkt. När din spelmotor laddar en PNG:
- CPU:n måste dekomprimera filen till råa, okomprimerade 32-bitars RGBA-pixlar i systemminnet.
- Den okomprimerade bitmapen laddas upp till VRAM.
- En 2048×2048-textur förbrukar ungefär 16 MB VRAM, oavsett om PNG-filen var 1 MB eller 3 MB på disken.
2. GPU-blockkomprimering (BCn, ASTC, ETC2)
Dedikerade GPU-format komprimerar fasta pixelblock (vanligtvis 4×4-pixelblock) till mindre bitrepresentationer. Grafikmaskinvaran samplar dessa block direkt i VRAM utan CPU-sida dekomprimering:
- Direkt slumpmässig åtkomst till VRAM utan någon dekomprimeringskostnad vid körning.
- Samma 2048×2048-textur som använder BC7/ASTC förbrukar bara ungefär 4 MB VRAM (en 75 % minskning).
- Mipmaps kan bakas in direkt i containerfilen.
Behållare som DDS och KTX är speciellt byggda för att omsluta dessa GPU-inhemska format, medan PNG och TGA har olika roller tidigare i pipeline.
1. DDS (DirectDraw Surface)
Introducerades av Microsoft tillsammans med DirectX 7, formatet DirectDraw Surface (.dds) är den obestridda arbetshästen i branschen för PC-, Xbox- och konsolspelutveckling.
Tekniska egenskaper
- Behållartyp: Inbyggd GPU-texturbehållare.
- Stödd komprimering: BC1 till BC7 (Block Compression / DXT-familjen), okomprimerad RGBA, flyttalsformat (BC6H för HDR).
- Nyckelfunktioner: Förgenererade mipmaps, kubkartor, texturarrayer, volym (3D)-texturer.
Varför utvecklare använder DDS
DDS är i princip en direkt minnesdump av vad grafikmaskinvaran kräver. När en DDS-textur med förgenererade mipmaps laddas, hoppar motorn över CPU-dekomprimering helt och utfärdar en direkt Direct3D- eller Vulkan-minneskopiering till GPU:n. Detta eliminerar CPU-flaskhalsar under streaming och nivåladdning.
Fördelar
- Extremt snabba laddningstider: Noll CPU-cykler för dekomprimering krävs vid körning.
- Förgenererade mipmaps: Offline-generering av mipmaps möjliggör artiststyrd filtrering, skärpning och normalmapnormalisering över LOD:er.
- VRAM-effektivitet: Använder branschstandard BC-komprimeringsalgoritmer inbyggt.
Nackdelar
- DirectX/Windows-bias: Historiskt knutet till Microsoft-ekosystem, men brett stöd på moderna skrivbords-motorer.
- Förlustkomprimeringsartefakter: Blockkomprimering (särskilt BC1 på normalmappar) kan introducera blockighet om inte BC5/BC7 används.
- Begränsat mobilt stöd: Mobila GPU:er föredrar vanligtvis ASTC eller ETC2 framför skrivbords-BC-format.
2. TGA (Truevision Targa)
Skapad 1984, TGA (.tga) är ett okomprimerat eller run-length-kodat (RLE) rastergrafikfilformat som har förblivit en stadig stapel i pipeline i över tre decennier.
Tekniska egenskaper
- Behållartyp: Okodad författar- / utbytesbitmap.
- Bitdjup: 8, 16, 24 och 32 bitar per pixel (RGB + dedikerad 8-bitars alfakanal).
- Komprimering: Ingen eller grundläggande RLE (Run-Length Encoding).
Varför utvecklare använder TGA
TGA föredras av tekniska artister och motorprogrammerare för sin rena arkitektoniska enkelhet. Till skillnad från PNG, som inbäddar en alfakanal i komplexa filtreringsmatriser, håller TGA färgdata och alfakanaler helt separata och orörda.
När du skapar anpassade masker (t.ex. packar Roughness i rött, Metallic i grönt, Ambient Occlusion i blått och Height i alfa), säkerställer TGA att ingen subtil algoritmisk blandning eller färgblödning uppstår mellan kanalerna.
Fördelar
- Ofläckad datatrogenhet: Bit-exakt bevarande av kanalvärden; idealiskt för kanalpaketerade ORM (Occlusion-Roughness-Metallic) texturer.
- Trivial parsning: Interna pipeline-verktyg, anpassade exportörer och automatiserade skript kan läsa och skriva TGA-filer med minimalt antal kodrader.
- Universellt DCC-stöd: Maya, 3ds Max, Blender, Substance 3D och Photoshop erbjuder inbyggd, problemfri TGA-export.
Nackdelar
- Massiva filstorlekar: Stort fotavtryck i Git/Perforce-repositorier och långsamma nedladdningshastigheter för distribuerade team.
- Olämplig för körning: Kan inte konsumeras direkt av GPU:n som ett komprimerat format; måste konverteras av motorn vid kokningstid.
3. PNG (Portable Network Graphics)
PNG (.png) är världens mest igenkända förlustfria bildformat, som använder zlib/DEFLATE-komprimering för att packa rika 24-bitars och 32-bitars bilder i anmärkningsvärt små filer.
Tekniska egenskaper
- Behållartyp: Förlustfri författar- och leveransformat.
- Bitdjup: Upp till 16 bitar per kanal (48-bitars RGB, 64-bitars RGBA).
- Komprimering: Förlustfri DEFLATE-algoritm.
Varför utvecklare använder PNG
PNG fungerar som det primära distributionsformatet för UI‑tillgångar, sprites, marknadsföringsmaterial och mellanstegskälltexturer. För 2D‑spel skapade i Unity, Godot eller Unreal Engine ger PNG skarp pixelfidelitet med rena transparensmasker.
Fördelar
- Kompakt lagringsavtryck: Minskar projektutcheckningsstorlekar avsevärt jämfört med okomprimerad TGA.
- Förlustfri färgkvalitet: Noll komprimeringsartefakter på högkontrastkanter och vektorliknande illustrationer.
- Inbyggd alfatransparens: Ren 8-bitars alfakanalstöd för komplexa genomskinliga UI‑element och partikelfyllda blad.
Nackdelar
- Krävande CPU‑avkodning: Att dekomprimera stora PNG‑filer i realtid sänker bildhastigheten och ökar minnesanvändningen innan GPU‑uppladdning.
- Fallgropar med förmultiplicerad alfa: Vissa bildredigerare kastar bort RGB‑data i helt transparenta pixlar, vilket förstör texturblödning och orsakar mörka konturer runt sprites.
- Zero VRAM Savings: Dekomprimeras till full 32-bit råminne i GPU:n om den inte tas upp av motorns texturkokare.
4. KTX (Khronos Texture) och KTX 2.0
Utvecklat av Khronos Group—den styrande organisationen bakom Vulkan, OpenGL och glTF—KTX (.ktx) och KTX 2.0 representerar den moderna öppna standarden för plattformsoberoende GPU-texturer.
Tekniska egenskaper
- Container Type: Standardiserad öppen GPU-texturbehållare.
- Compression Support: Basis Universal (ETC1S och UASTC), ASTC, BCn, ETC2.
- Key Capabilities: Universell texturtranskodning, mipmaps, kubemappar, array-texturer, glTF-integration.
Varför utvecklare använder KTX
KTX 2.0 löser det fragmenterade plattformsoberoende komprimeringsdilemmat. Traditionellt var utvecklare tvungna att leverera DDS (BCn) för stationära datorer/konsoler och ASTC/ETC2 för mobila enheter/tabletter.
Med KTX 2.0 och Basis Universal:
- Du lagrar texturer i ett kompakt, universellt komprimerbart format.
- Vid körning transkodar klientens hårdvara filen direkt till det blockformat som den lokala GPU:n föredrar (t.ex. BC7 på en GeForce RTX, ASTC på en iPhone, ETC2 på en äldre Android-enhet).
- Superkomprimering (Zstandard) producerar filer som är mindre än JPEG på disk och som transkodas till inhemska VRAM-block på millisekunder.
Fördelar
- Sant korsplattformstandard: Kör sömlöst på Vulkan, WebGL, WebGPU och mobila enheter.
- Basis Universal Transcoding: En enda tillgångsbyggnad riktar sig mot skrivbord, mobila enheter och webbläsare utan dubbla texturexporter.
- Förstklassig glTF-kompanjon: Avgörande för moderna 3D-webbupplevelser, metaversmotorer och öppna renderingspipeline.
Nackdelar
- Pipeline-verktygs mognad: Kräver moderna byggkedjor (såsom
toktxfrån KTX-Software-sviten); äldre proprietära motorer kan sakna färdig integration. - Transcoder-överhuvud: Lätt fördröjning vid körning (men flera storleksordningar snabbare än full PNG-programvaruavkodning).
Jämförelse sida vid sida
| Funktion / Kriterier | DDS | TGA | PNG | KTX / KTX 2.0 |
|---|---|---|---|---|
| Primärt användningsområde | PC/konsol runtime | Källredigering & Masker | 2D Sprites & Källkonst | Plattformsoberoende & webb runtime |
| Direkt GPU-sampling | Ja (Inbyggt) | Nej | Nej | Ja (Inbyggt eller omkodad) |
| VRAM-komprimering | Ja (BC1–BC7) | Nej (Okomprimerad) | Nej (Okomprimerad) | Ja (ASTC, BCn, Basis) |
| Förbakade Mipmappar | Ja | Nej | Nej | Ja |
| Diskstorlek | Måttlig | Mycket hög | Liten | Extremt liten (Basis + Zstandard) |
| Ekosystem | DirectX / Desktop-motorer | DCC-programvara / Källpipeline | Universella webb‑ och 2D‑motorer | Vulkan, WebGPU, glTF |
Praktisk guide: Bygga den ideala tillgångspipelinen
Hur bör du organisera dessa fyra format i en kommersiell produktionspipeline? Så här strukturerar ledande studior sina textur‑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
- Källresurser: Lagra master‑filer och kanal‑paketerad data i TGA eller PNG i dina projekt‑arkiv för att garantera oförstörd färginformation.
- PC‑ och konsol‑byggen: Tillaga dina källtexturer till DDS‑filer med BC7 för högdetaljerade albedo‑/normal‑kartor och BC4/BC5 för enkla och dubbla kanal‑masker.
- Cross‑platform, webb‑ och mobilbyggen: Paketera runtime‑3D‑resurser i KTX 2.0 för att utnyttja universell transkodning över Android, iOS och WebGPU utan att behöva underhålla separata konst‑grenar.
- Användargränssnitt: Behåll runtime‑UI‑texturer antingen i skarpa okomprimerade format eller förlustfria motor‑atlaser härledda från högupplösta PNG‑källfiler.
Vanliga frågor (FAQ)
Q1. Kan en spelmotor läsa ett PNG direkt från videominne?
A1: Nej; GPU:er kan inte tolka PNG‑komprimering, så motorer måste dekomprimera PNG‑filer till råa 32‑bitars bitmapar i minnet innan de laddas upp till VRAM.
Q2. Varför föredrar tekniska artister TGA framför PNG för maskpaketering?
A2: TGA lagrar ren, okomprimerad kanaldata utan färgblödning eller destruktiv kanttransparentfiltrering över enskilda RGB- och alfakanaler.
Q3. Vilken blockkomprimeringsalgoritm bör jag använda i en DDS‑behållare för normalmappar?
A3: Använd BC5 (tvåkanalig tangentrums‑komprimering) för normalmappar för att bevara ren ytkurvatur utan standard BC1‑blockartefakter.
Q4. Vad gör KTX 2.0 bättre än DDS för plattformsoberoende spel?
A4: KTX 2.0 stöder Basis Universal, vilket gör att en enda fil kan transkodas i realtid till skrivbords‑BCn‑format eller mobila ASTC/ETC‑format vid start.
Q5. Ökar förbakade mipmaps i DDS‑ eller KTX‑filer filstorleken?
A5: Ja, att inkludera fullständiga mipmap‑kedjor lägger till ungefär 33 % mer rådata till filen, men det eliminerar skakningar i körning, förbättrar cache‑lokalitet och ökar GPU‑renderingsprestanda.