How to open DDS files?

DDS-filer: Teksturer og Kompression

I en verden domineret af standardbilledformater som JPEG og PNG findes der specialiserede formater, der tjener meget specifikke formål. Et sådant format er DDS, eller Microsoft DirectDraw Surface. Selvom det måske ikke er et format, du støder på, når du gemmer feriebilleder eller deler grafik på sociale medier, er det absolut essentielt inden for et meget vigtigt område: 3D-grafik og spiludvikling.

https://www.youtube.com/watch?v=0gcJCdgAo7VqN5tD

Indholds

Hvad er en DDS-fil?

En DDS-fil er grundlæggende en rasterbilledfil, der er gemt i DDS-containerformatet. Formatet blev oprindeligt udviklet af Microsoft som en del af deres DirectX API (Application Programming Interface), der er et sæt værktøjer og funktioner, der primært bruges til spiludvikling på Windows-platformen. Formålet med DDS var at give spiludviklere en effektiv måde at håndtere og indlæse teksturer på, som grafikkortet kunne behandle hurtigt og effektivt.

What is a DDS image?
A DDS (Microsoft DirectDraw Surface) file is a raster image saved in the DDS container format. DDS is a Microsoft format for storing data compressed with an S3 Texture Compression (S3TC) algorithm. DDS files are often used to store textures. DDS files store compressed and uncompressed pixel formats.

Forestil dig en 3D-model af en bold i et spil. For at bolden skal se realistisk ud, skal den have en overflade – en tekstur. Det er her, DDS-filer ofte kommer ind i billedet. De gemmer de billeddata, der 'klæbes' på 3elle modeller for at give dem farve, mønster og detaljer.

Hvorfor bruge DDS til teksturer?

Den primære grund til at bruge DDS til teksturer er ydeevne. Grafikkort (GPU'er) er utroligt gode til at håndtere parallelle beregninger, herunder rendering af grafik. DDS-formatet er designet til at udnytte denne styrke optimalt. En nøglefunktion er dens understøttelse af hardwarekomprimeret data.

Traditionelle billedformater som JPEG eller PNG kræver, at billeddata dekomprimeres af CPU'en, før de sendes til GPU'en. Dette kan skabe en flaskehals, især med store teksturer eller mange teksturer, der skal indlæses hurtigt. DDS-filer kan derimod gemme data, der er komprimeret ved hjælp af algoritmer som S3 Texture Compression (S3TC), også kendt som DXT-kompression.

Denne S3TC/DXT-kompression er unik, fordi den er designet til at blive dekomprimeret direkte af grafikkortets hardware i realtid, mens teksturerne bruges. Dette betyder, at CPU'en ikke behøver at bruge tid og ressourcer på dekomprimering, og dataoverførslen til GPU'en kan være hurtigere, da den komprimerede data fylder mindre. Resultatet er hurtigere indlæsningstider, lavere hukommelsesforbrug på grafikkortet og en mere flydende grafisk oplevelse, hvilket er afgørende i spil og interaktive 3D-applikationer.

S3 Texture Compression (S3TC) / DXT

S3TC, eller DXT (efter de forskellige variationer som DXT1, DXT3, DXT5), er en form for lossy kompression. Det betyder, at noget billedinformation går tabt under komprimeringsprocessen, ligesom med JPEG-billeder. Kompressionen fungerer ved at opdele billedet i små blokke (typisk 4x4 pixels) og derefter komprimere hver blok individuelt. For teksturer, der ofte ses på afstand, i bevægelse eller under forskellige lyseffekter, er dette tab af information ofte acceptabelt og mindre mærkbart end de ydeevnefordele, kompressionen giver.

Der findes forskellige varianter af DXT, som er optimeret til forskellige behov:

  • DXT1: Den mest basale form, bruger 4 bits per pixel (bpp). Understøtter enten ingen alfa-kanal eller en 1-bit alfa-kanal (enten fuldt gennemsigtig eller fuldt uigennemsigtig). God til teksturer uden gennemsigtighed.
  • DXT3: Bruger 8 bpp og understøtter en eksplicit 4-bit alfa-kanal, hvilket giver skarpere overgange i gennemsigtighed. Bruges ofte til teksturer med skarpe gennemsigtighedsgrænser.
  • DXT5: Bruger også 8 bpp, men understøtter en interpoleret 8-bit alfa-kanal, hvilket giver blødere overgange i gennemsigtighed. Dette er ofte foretrukket til teksturer med graduerede gennemsigtighedseffekter.

Valget af DXT-variant afhænger af teksturens krav til farvenøjagtighed og gennemsigtighed. Selvom kompressionen er lossy, opnår den meget høje kompressionsforhold (typisk 6:1 for DXT1 og 4:1 for DXT3/DXT5 sammenlignet med ukomprimeret 24-bit RGB), hvilket sparer betydelig hukommelse og båndbredde.

Farveformater og Gennemsigtighed

DDS-filer kan gemme billeddata i forskellige pixelformater. De mest almindelige er:

  • RGB (Red, Green, Blue): Typisk 24-bit farvedybde (8 bits per farvekanal).
  • RGBA (Red, Green, Blue, Alpha): Typisk 32-bit farvedybde (8 bits per farve- og alfa-kanal).

Understøttelsen af en alfa-kanal, som styrer gennemsigtigheden, afhænger stærkt af den anvendte komprimeringsmetode. Som nævnt understøtter DXT1 kun begrænset alfa, mens DXT3 og DXT5 tilbyder mere nuanceret gennemsigtighedskontrol. DDS kan også gemme ukomprimerede data, ofte i 24-bit RGB eller 32-bit RGBA formater, for maksimal billedkvalitet, men på bekostning af filstørrelse og dekomprimeringshastighed.

Tekniske overvejelser: Kvadratiske dimensioner og Mipmaps

Selvom det ikke altid er et strengt krav for *alle* DDS-filer afhængigt af den specifikke implementering eller værktøj, der bruges, er det meget almindeligt og ofte nødvendigt for optimal ydeevne, at DDS-teksturer har kvadratiske dimensioner og dimensioner, der er en potens af to (f.eks. 64x64, 128x128, 512x512, 1024x1024). Dette skyldes GPU-arkitektur og behovet for effektiv mipmapping.

Mipmaps er en række mindre versioner af den samme tekstur. Når et 3D-objekt er langt væk fra kameraet, bruger grafikkortet en mindre mipmap-version af teksturen, hvilket sparer regnekraft og forhindrer aliasing (flimmer). Når objektet er tættere på, bruges en større mipmap. DDS-formatet understøtter lagring af alle mipmap-niveauer inden i den samme fil, hvilket gør indlæsningen hurtigere og mere strømlinet for grafikkortet.

Kravet om kvadratiske dimensioner og potenser af to letter generering og håndtering af disse mipmaps betydeligt for grafikkortets hardware.

DDS vs. andre billedformater

Det er nyttigt at se på, hvordan DDS adskiller sig fra mere velkendte formater:

Format Primær Anvendelse Kompressionstype Gennemsigtighed (Alfa) Hardware Acceleration
DDS 3D-teksturer (spil, grafik) Lossy (S3TC/DXT), Lossless (ubrugt ofte), Ukomprimeret Ja (afhængig af DXT-type) Høj (designet til GPU)
JPEG Fotografier, webgrafik Lossy (DCT) Nej Lav (generel billedvisning)
PNG Grafik, logoer, webbilleder Lossless (Deflate) Ja (8-bit alfa) Lav (generel billedvisning)

Som tabellen viser, er DDS klart optimeret til et specifikt formål – effektiv håndtering af teksturer på grafikkortet – hvilket adskiller det markant fra formater designet til generel billedlagring.

Ofte Stillede Spørgsmål om DDS

Hvad står DDS for?

DDS står for Microsoft DirectDraw Surface.

Hvad bruges DDS-filer primært til?

De bruges primært til at gemme teksturer til brug i 3D-grafikapplikationer, især spil.

Er DDS-kompression lossy?

Ja, den mest almindelige form for kompression i DDS (S3TC/DXT) er lossy, hvilket betyder, at noget billedkvalitet går tabt, men det muliggør hardwareacceleration.

Understøtter DDS gennemsigtighed?

Ja, DDS-filer kan understøtte gennemsigtighed (alfa-kanaler), især når de komprimeres med DXT3 eller DXT5.

Skal DDS-teksturer være kvadratiske?

For optimal ydeevne og kompatibilitet med mipmapping er det meget almindeligt, at DDS-teksturer har kvadratiske dimensioner, der er potenser af to.

Konklusion

DDS-formatet er et specialiseret, men utroligt vigtigt billedformat inden for verdenen af 3D-grafik og spil. Dets design, der fokuserer på hardwarekompression (S3TC/DXT) og effektiv håndtering af mipmaps, gør det til det ideelle valg for teksturer, der skal indlæses og renderes hurtigt og effektivt af grafikkortet. Selvom det bruger lossy kompression, opvejes dette tab af billedkvalitet ofte af de markante ydeevnefordele. Næste gang du spiller et spil med imponerende grafik, er chancerne store for, at DDS-filer spiller en stille, men afgørende rolle bag kulisserne.

Hvis du vil læse andre artikler, der ligner DDS-filer: Teksturer og Kompression, kan du besøge kategorien Grafik.

Avatar photo

Franne Voigt

Mit navn er Franne Voigt, jeg er en 35-årig fotograf fra Danmark med en passion for at fange øjeblikke og dele mine erfaringer gennem min fotoblog. Jeg har arbejdet med både portræt- og naturfotografi i over et årti, og på bloggen giver jeg tips, teknikker og inspiration til både nye og erfarne fotografer. Fotografi er for mig en måde at fortælle historier på – én ramme ad gangen.

Go up

Når du klikker på , Accepter, accepterer du, at cookies gemmes på din enhed for at forbedre navigeringen på siden, analysere brugen af den og samarbejde med vores undersøgelser til markedsføring. Mere information