3Dc

3Dc ( FourCC  : ATI2), også kjent som DXN, er en tapsbasert komprimeringsalgoritme for bilder oppfunnet og først implementert av ATI . Det er en åpen standard bygget på DXT5- algoritmen . 3Dc er for tiden implementert av både ATI og NVIDIA .

Omfang

Omfanget, normal mapping, er en utvidelse av bump mapping som simulerer belysning på geometriske flater ved å lese overflaten fra et rettlinjet nett analogt med en tekstur – noe som gir enkle modeller inntrykk av økt kompleksitet. Denne tilleggskanalen øker imidlertid belastningen på grafikksystemets båndbredde og minne. Eksisterende datakomprimeringsalgoritmer med tap implementert i forbruker-3D-maskinvare manglet nøyaktigheten som trengs for å reprodusere normale kart uten overdreven synlige artefakter, noe som rettferdiggjorde utviklingen av 3Dc.

Selv om 3Dc formelt ble introdusert med kortene i ATI x800 -serien , er det også planlagt en S3TC-kompatibel versjon for den eldre R3xx-serien og kort fra andre selskaper. Kvaliteten og kompresjonen blir ikke like god, men de visuelle feilene vil likevel være betydelig mindre enn det S3TC-standarden tilbyr.

Algoritme

Overflaten på kartene er vektorer med en lengde på tre dimensjoner per enhet. På grunn av lengdebegrensningen trenger bare to elementer av et kart lagres. Derfor er inngangen en todimensjonal rekke verdier.

Komprimering gjøres i 4x4 blokker. I hver blokk komprimeres de to komponentene til hver verdi separat. For hver blokk har hver komponent en palett med 8 verdier å velge mellom. Paletter genereres fra to verdier som representerer starten og slutten av en linje, og de andre seks verdiene genereres som lineære kombinasjoner av start- og sluttverdiene.

Komprimeringen gjøres ved å finne minimum og maksimum 16-pikslers verdier som skal komprimeres og lagre dem som en 8-bits mengde. De enkelte elementene i 4x4-blokken lagres deretter med 3 biter hver, som representerer deres posisjon på en 8-trinns lineær skala fra minimum til maksimum verdi. Hver 3-bits verdi av pikselen (palettindeksen) vil bli valgt ved å velge paletten med den minste avstanden fra de opprinnelige verdiene.

Lagringsstørrelsen er 128 biter per 4x4 blokk når begge kildekomponentene er faktorisert. I et 8-bits dekomprimert skjema med like presisjon består inngangsdataene av 32 8-bits verdier for det samme området, og opptar 256 biter. Derfor produserer algoritmen et datakomprimeringsforhold på 2:1.

Komprimeringsforholdet når noen ganger opp til 4:1 når 16-biters presisjon brukes for inngangsdataene i stedet for 8-biters. Dette gir en komprimert utgang som bokstavelig talt er 1/4 av størrelsen på inngangen, men som ikke har sammenlignbar nøyaktighet.

3Dc+

3Dc+ ( FourCC : ATI1) kan komprimere teksturer, f.eks. lyskart, skyggekart, HDR-teksturer og materialegenskaper. 3Dc+ gir et 2:1 komprimeringsforhold med en enkelt 8-bits heltallskomponent ( DXT5 alpha) og et 4:1 komprimeringsforhold med kart og teksturer som består av to 8-bits heltallskomponenter.

Referanser