3Dc

3Dc ( FourCC : ATI2), även känd som DXN , BC5 eller Block Compression 5 är en datakomprimeringsalgoritm för normala kartor som uppfanns och först implementerades av ATI . Den bygger på den tidigare DXT5 -algoritmen och är en öppen standard . 3Dc är nu implementerat av både ATI och Nvidia .

Målapplikation

Målapplikationen, normal mapping, är en förlängning av bumpmapping som simulerar belysning på geometriska ytor genom att läsa ytnormaler från ett rätlinjigt rutnät analogt med en texturkarta – vilket ger enkla modeller intrycket av ökad komplexitet. Denna extra kanal ökar dock belastningen på grafiksystemets minnesbandbredd. Redan existerande förlustkompressionsalgoritmer implementerade på 3D-hårdvara för konsumenter saknade den precision som krävs för att reproducera normala kartor utan överdrivet synliga artefakter, vilket motiverar utvecklingen av 3Dc.

Algoritm

Ytnormaler är tredimensionella vektorer av enhetslängd. På grund av längdbegränsningen behöver bara två element av varje normal lagras. Inmatningen är därför en uppsättning tvådimensionella värden.

Kompression utförs i 4×4 block. I varje block komprimeras de två komponenterna i varje värde separat. För varje block har var och en av de två komponenterna en palett med 8 värden att välja mellan. Paletterna genereras från två värden som representerar början och slutet av en linje och de andra sex värdena genereras som linjära kombinationer av start- och slutvärden.

Komprimering uppnås naturligt genom att hitta de lägsta och högsta värdena av de 16 pixlarna som ska komprimeras och lagra var och en av dessa som en 8-bitars kvantitet. Individuella element inom 4×4-blocket lagras sedan med 3-bitar vardera, vilket representerar deras position på en 8-stegs linjär skala från det lägsta värdet till det högsta. Varje pixels 3-bitars värde (palettindex) skulle väljas genom att välja palettposten med det minsta avståndet från de ursprungliga värdena.

Den totala lagringen är 128 bitar per 4x4-block när båda källkomponenterna har räknats in. I ett okomprimerat schema med liknande 8-bitars precision är källdata 32 8-bitars värden för samma område och upptar 256 bitar. Algoritmen ger därför ett komprimeringsförhållande på 2:1 .

Kompressionsförhållandet anges ibland vara "upp till 4:1" eftersom det är vanligt att använda 16-bitars precision för indata snarare än 8-bitars. Detta ger en komprimerad utdata som är bokstavligen 1/4 av storleken på ingången men den är inte av jämförbar precision.

3Dc+

3Dc+ ( FourCC : ATI1) (även känd som BC4 eller Block Compression 4 ) kan komprimera texturer, dvs ljuskartor, skuggkartor, HDR-texturer och materialegenskaper. 3Dc+ ger 2:1 komprimeringsförhållande med enkelkomponent ( DXT5 alpha) 8-bitars heltalstexturer och 4:1 komprimeringsförhållande med normala kartor och texturer som består av två 8-bitars heltalskomponenter