How to open DDS files?

PNG vs. DDS: Vælg det rette teksturformat

Når man udvikler spil eller 3D-applikationer, er valget af det rette teksturformat afgørende for både visuel kvalitet og ydeevne. To populære formater, der ofte diskuteres, er PNG (Portable Network Graphics) og DDS (DirectDraw Surface). Begge har deres styrker og svagheder, og forståelsen af disse kan spare dig for meget besvær og optimere dit projekt betydeligt.

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

Indholds

PNG: Den tabsfri standard

PNG er et velkendt billedformat, der især er populært på internettet, men også finder vej til spiludvikling. Dets primære fordel er, at det er et tabsfri format. Det betyder, at når du gemmer et billede som PNG, går der ingen billedinformation tabt. Hver pixel bevarer sin oprindelige farve og gennemsigtighed (alpha-kanal), præcis som den var i kildematerialet.

Is DDS smaller than PNG?
PNGs look great, are smaller than . JPGs and are lossless. DDS are even smaller (most of the time) and are optimized for 3d rendering but are lossy and my artist is wary.

Denne tabsfri natur gør PNG fremragende til billeder med skarpe linjer, solid farveblokke, tekst eller brugerfladeelementer (UI), hvor selv små artefakter eller sløring er uacceptable. Sammenlignet med et format som JPG, der er tabsgivende og optimeret til fotografier, er PNG ofte mindre for billeder med store områder af ensfarvethed eller gentagne mønstre, fordi det bruger effektiv komprimering (deflate) uden at fjerne data.

Ulempen ved PNG, især i spiludvikling, er dens håndtering af teksturer i en 3D-pipeline. Selvom filstørrelsen på disk kan være mindre end for et ukomprimeret format, er dataene ikke i et format, som en GPU (Graphics Processing Unit) kan læse direkte og effektivt. Når en PNG-tekstur indlæses i grafikhukommelsen, skal den dekomprimeres og ofte konverteres til et format, som GPU'en foretrækker (typisk et ukomprimeret eller blok-komprimeret format). Denne proces tager tid og bruger hukommelsesbåndbredde, hvilket kan påvirke indlæsningstider og, i nogle tilfælde, renderingsevnen.

DDS: Optimeret til 3D-Rendering

DDS står for DirectDraw Surface og er et billedformat specifikt designet til brug i realtidsgrafikapplikationer, herunder spil. Dets primære fordel ligger i, at det understøtter hardware-komprimeringsformater som DXT (nu kendt som BC – Block Compression). Disse komprimeringsmetoder er tabsgivende, hvilket betyder, at de fjerner billedinformation for at opnå meget høje kompressionsforhold.

Det geniale ved DDS med BC-komprimering er, at GPU'en kan læse de komprimerede data direkte fra grafikhukommelsen og dekomprimere dem i realtid, mens teksturen bruges. Dette reducerer mængden af data, der skal overføres fra hukommelsen til GPU'ens kerner markant, hvilket fører til hurtigere indlæsningstider og forbedret renderingsevne, især på systemer med begrænset hukommelsesbåndbredde.

Udover komprimering understøtter DDS også indlejrede MIPmaps. MIPmaps er mindre versioner af teksturen, der automatisk genereres og gemmes sammen med hovedteksturen. En 3D-motor kan automatisk vælge den passende MIPmap-niveau baseret på objektets afstand fra kameraet. Dette reducerer mængden af teksturdata, der skal samples, når objekter er langt væk, hvilket yderligere forbedrer ydeevnen og reducerer flimmer.

Den største ulempe ved DDS, som også bekymrer din kunstner, er den tabsgivende komprimering. Afhængigt af den valgte komprimeringsalgoritme (f.eks. DXT1, DXT5, BC7) og billedets indhold kan der opstå synlige kompressionsartefakter. Dette er især mærkbart i områder med bløde farveovergange eller fin, tilfældig støj. For teksturer, hvor visuel perfektion er kritisk, kan dette være en dealbreaker.

Størrelse og Kvalitet: En Direkte Sammenligning

Er DDS mindre end PNG? Ja, i langt de fleste tilfælde er en DDS-fil, der bruger BC-komprimering, markant mindre end en tilsvarende PNG-fil, især for teksturer med alpha-kanaler (hvor DXT5/BC3 eller BC7 bruges). Dette skyldes den aggressive, hardware-accelererede komprimering i DDS, som opnår kompressionsforhold på op til 6:1 eller mere uden at udvide dataene igen i hukommelsen før brug.

En 1024x1024 tekstur med alpha-kanal kan fylde flere megabyte som PNG, mens den samme tekstur komprimeret med DXT5 i en DDS-fil måske kun fylder 1,33 megabyte. Forskellen i filstørrelse på disk er tydelig, men den endnu vigtigere forskel er størrelsen i grafikhukommelsen og den måde, GPU'en tilgår dataene på.

Kvalitetsmæssigt er PNG overlegen, da det er tabsfri. DDS introducerer kompressionsartefakter. Valget her afhænger af teksturens formål. En murstenstekstur vil sandsynligvis klare sig fint med DDS-komprimering, da små artefakter vil blive maskeret af teksturens naturlige variation. En tekstur til en brugerfladeknap med en blød skygge eller en gradient vil derimod potentielt se mærkbart dårligere ud som DDS.

Egenskab PNG DDS (med BC/DXT)
Komprimering Tabsfrit (Deflate) Tabsgivende (BC/DXT)
Typisk filstørrelse Moderat til stor Lille (ofte markant mindre)
Billedkvalitet Perfekt (ingen tab) Kan have kompressionsartefakter
GPU-venlighed Mindre (kræver dekomprimering/konvertering ved indlæsning) Meget (GPU kan læse/dekomprimere direkte)
MIPmap support Typisk ikke indbygget Indbygget
Anvendelse UI, logoer, billeder med tekst/skarpe kanter Spilteksturer (miljø, karakterer, objekter), der tåler tab

Ydeevne i Renderingsmotoren

Den mærkbare forskel i ydeevne mellem PNG og DDS (med BC-komprimering) i en renderingsmotor som Blender Game Engine (BGE) eller enhver anden moderne motor handler primært om, hvordan GPU'en håndterer dataene. Selvom filstørrelsen på disk påvirker indlæsningstid, er den afgørende faktor for *rendering* ydeevne den hastighed og effektivitet, hvormed GPU'en kan tilgå og sample teksturdata fra grafikhukommelsen.

Når en tekstur er i DDS-format med BC-komprimering, ligger dataene i grafikhukommelsen i et format, som GPU'en er designet til at arbejde direkte med. GPU'en kan læse små blokke af komprimerede data, dekomprimere dem i realtid og bruge dem til at farvelægge polygoner. Dette kræver langt mindre hukommelsesbåndbredde end at læse ukomprimerede data (som PNG effektivt bliver til i hukommelsen).

How to open DDS files?
View DDS File Online You can open DirectDraw Surface (. dds) files online with any modern desktop or mobile web browser, such as Chrome, Firefox, and Safari, and it's 100% free.

Med PNG skal motoren eller driveren dekomprimere PNG-dataene og uploade dem til GPU'en i et ukomprimeret format (f.eks. 32-bit RGBA) eller et andet internt format. Selvom uploaden er hurtig, fylder de ukomprimerede data meget mere i grafikhukommelsen, og hver gang GPU'en skal sample teksturen, skal den læse en større mængde data. Dette kan føre til flaskehalse i hukommelsesbåndbredden, især ved høje opløsninger eller med mange teksturer.

Derfor er der en mærkbar forskel i renderingsevne, især i scener med mange teksturerede objekter eller på hardware med begrænset hukommelsesbåndbredde. Brugen af DDS kan føre til højere framerates, mindre hukommelsesforbrug og hurtigere indlæsningstider for teksturer.

Ensartethed eller Fleksibilitet?

Spørgsmålet om, hvorvidt brug af et enkelt teksturformat øger renderingen, er mere nuanceret. At bruge ét format (f.eks. kun DDS) kan strømline din pipeline og potentielt reducere overhead i motoren ved ikke at skulle håndtere flere forskellige dataformater. Det kan også gøre det nemmere at forudsige ydeevne.

Imidlertid er en "tekstur-for-tekstur" beslutning ofte den mest optimale tilgang. Ikke alle teksturer er ens, og deres krav til kvalitet og ydeevne varierer:

  • Brugerflade (UI) og HUD: Her er skarphed og fravær af artefakter kritisk. PNG er ofte det bedste valg, da den tabsfri kvalitet bevarer detaljer som tekst og ikoner perfekt. Ydeevnegevinsten ved DDS for disse relativt få, små teksturer er minimal sammenlignet med vigtigheden af visuel klarhed.
  • Spilverdenens teksturer (vægge, gulve, terræn): Disse teksturer dækker ofte store områder og gentages. De er ideelle kandidater til DDS med BC-komprimering. Den reducerede størrelse og forbedrede GPU-adgang giver en mærkbar ydeevnegevinst, og eventuelle kompressionsartefakter vil ofte være svære at bemærke i den travle spilverden.
  • Normalkort og andre datakort: Selvom DDS fungerer godt til normalkort (som ofte bruger DXT5/BC5), skal man være opmærksom på, hvordan komprimeringen påvirker dataene. Nogle udviklere foretrækker ukomprimerede formater eller nyere BC-formater (som BC7), der håndterer normalkort bedre, selvom filstørrelsen er større.
  • Teksturer med fine farveovergange (skyer, hud): Disse kan lide under BC-komprimering og vise banding eller artefakter. Her kan det være nødvendigt at teste forskellige DDS-komprimeringsindstillinger (f.eks. BC7, som er mindre tabsgivende end DXT) eller overveje alternative formater, hvis kvaliteten er altafgørende.

Så selvom ensartethed kan have fordele for workflowet, vil en fleksibel tilgang, hvor du vælger format baseret på den enkelte teksturs behov for kvalitet versus ydeevne, sandsynligvis give det bedste samlede resultat for dit spil.

Ofte Stillede Spørgsmål

  • Hvorfor er DDS ofte mindre end PNG?

    DDS bruger hardware-accelereret blokkomprimering (BC/DXT), som er tabsgivende og opnår meget høje kompressionsforhold (f.eks. 6:1 eller mere for farvedata og 4:1 for alpha-data). PNG bruger tabsfri komprimering (Deflate), som er mindre aggressiv og bevarer alle data, hvilket resulterer i større filer.

  • Mister jeg altid kvalitet med DDS?

    Ja, DDS med BC/DXT-komprimering er tabsgivende, så der vil altid være et tab af billedinformation, som kan manifestere sig som kompressionsartefakter. Gradueringen af kvalitetstab afhænger af den specifikke BC-variant (BC7 giver f.eks. højere kvalitet end DXT1/BC1) og billedets indhold.

  • Er DDS altid hurtigere at rendere?

    DDS med BC/DXT-komprimering er generelt hurtigere at rendere, fordi GPU'en kan læse og dekomprimere dataene direkte fra grafikhukommelsen. Dette reducerer hukommelsesbåndbredden. PNG-data skal dekomprimeres og uploades i et ukomprimeret eller andet format, hvilket kræver mere hukommelsesbåndbredde under rendering. Forskellen er mest mærkbar med mange store teksturer.

  • Kan jeg bruge både PNG og DDS i mit spil?

    Ja, de fleste moderne spilmotorer understøtter brug af flere forskellige teksturformater side om side. Det er ofte den mest praktiske og ydelsesmæssigt bedste løsning at vælge formatet baseret på den enkelte teksturs behov: PNG til elementer, der kræver tabsfri kvalitet (UI, tekst), og DDS til spilverdenens teksturer, hvor ydeevne og filstørrelse er kritiske.

Konklusion

Valget mellem PNG og DDS til dine spilteksturer er en afvejning mellem kvalitet, filstørrelse og ydeevne. PNG tilbyder tabsfri kvalitet, hvilket er essentielt for elementer som UI og tekst, men kan være mindre effektivt for 3D-rendering på grund af den måde, dataene håndteres af GPU'en på. DDS, især med BC-komprimering, tilbyder markant mindre filstørrelser og overlegen renderingsevne, fordi dataene er optimeret til hardware-adgang, men dette kommer på bekostning af billedkvalitet på grund af den tabsgivende komprimering.

For de fleste spilprojekter er den bedste strategi at bruge en kombination af formater. Anvend DDS til de fleste af dine 3D-verdensteksturer for at maksimere ydeevne og minimere hukommelsesforbrug, og reservér PNG til de teksturer, hvor absolut visuel præcision er nødvendig. Forståelse af kompromiserne gør dig i stand til at træffe informerede beslutninger, der optimerer både spillets udseende og dets flydende afvikling.

Hvis du vil læse andre artikler, der ligner PNG vs. DDS: Vælg det rette teksturformat, 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