DXTC

DXTC (S3 Texture Compression)



DXTCは、S3社によって開発された画像圧縮技術です。S3 Texture Compression (S3TC) や DXTn とも呼ばれることがあります。この技術は、もともと同社のSavage 3Dグラフィックスアクセラレータで利用するために生み出されました。従来のJPEGのような画像圧縮方式とは異なり、DXTCは固定レートのデータ圧縮を、単純なメモリアクセスと組み合わせて行います。これは、3Dコンピュータグラフィックスにおいて、テクスチャをハードウェアで効率的に処理するために特に適しています。

DXTCが広く知られるようになったのは、マイクロソフトのDirectX 6.0に採用されてからです。これを機に、多くのハードウェアメーカーやソフトウェア開発者に採用されるようになりました。S3社自体は、現在ではグラフィックスアクセラレータ市場で以前のような主要な地位にはありませんが、DXTC技術のライセンス供与、特にゲームコンソール向けなどで、その収益の一部を得ています。

DXTCのバリエーション



DXTCアルゴリズムには、DXT1からDXT5までの5つの主要な形式があり、それぞれにマイクロソフトによってFourCCコードが割り当てられています。これらのバリエーションは、異なる種類の画像データに対応するように設計されています。全ての形式において、画像は4×4ピクセルのブロック単位で処理され、64ビットまたは128ビットのデータに量子化されます。これにより、標準的な32ビットRGBA入力データに対して、DXT1では約8:1、DXT2以降では約4:1の圧縮率を実現します。

DXTCは非可逆圧縮であるため、元の画像と完全に同じ品質を保つことはできません。しかし、現実的な画像を表示する際には、圧縮されたデータでも十分に高い品質が得られます。ただし、アニメーション風の画像や法線マップなど、特定の種類の画像では圧縮によるアーティファクト(ノイズや不自然な模様)が発生しやすいという特性があります。ATIが開発した3Dc圧縮アルゴリズムは、DXT5の派生であり、特に法線マップにおけるDXTCの欠点を克服することを目的として設計されました。

コーデックの詳細



DXTCは、主に画像の「解凍」方法を規定するものです。これにより、実装者は特定のニーズに合わせて圧縮アルゴリズムを設計する自由度を持つことができます。ただし、特許は圧縮アルゴリズム自体もカバーしています。初期の圧縮ルーチンは必ずしも最適化されていませんでしたが、改良が進みました。かつて、NVIDIAのGeForceシリーズ(GeForce 4まで)の一部GPUでは、DXT1テクスチャの描画に16ビット補間を使用していたため、色変化が滑らかでないテクスチャで帯状のノイズが見られることがありました。これはコーデック自体の問題というよりは、特定のハードウェア実装に起因するものでしたが、DXTCの評判に影響を与えた時期もありました。

DXT1



DXT1は最も基本的なDXTC形式です。4×4ピクセルのブロック(16ピクセル)を64ビットのデータに圧縮します。これは、16ビットRGB5:6:5形式の2つの色と、4×4の2ビットの参照テーブルで構成されます。基本となる2色の大小関係によって、補間色の生成方法が変わります。一方のモードでは2つの補間色を含む4色パレットを生成し、もう一方のモードでは1つの補間色と透過色を含むパレットを生成します。参照テーブルは、各ピクセルがどのパレット色を参照するかを指定します。DXT1はアルファチャンネルデータを直接格納しないため、高い圧縮率(8:1)を実現します。

DXT2とDXT3



DXT2とDXT3は、16ピクセルを128ビットのデータに圧縮します。これは、DXT1と同様の方法でエンコードされた64ビットの色データと、各ピクセルあたり4ビットの64ビットアルファチャンネルデータから構成されます。色データは常にアルファチャンネルを持たない4色モードでエンコードされます。DXT2は、アルファ値が色に事前に乗算されているデータ(プリマルチプライドアルファ)を想定しており、DXT3は乗算されていないアルファデータを扱います。これらの形式は、透過領域と不透明領域の境界がはっきりしている画像に適しています。

DXT4とDXT5



DXT4とDXT5も16ピクセルを128ビットのデータに圧縮します。これらは、DXT2/DXT3と同じ形式の64ビットの色データと、より高精度なアルファチャンネルデータからなります。アルファデータは、2つの8ビットアルファ値と、4×4の3ビット参照テーブルで構成されます。基本となる2つのアルファ値の大小関係に応じて、6つまたは4つの補間アルファ値が生成されます。これにより、合計8つまたは6つのアルファ値パレットが作成されます。参照テーブルは、各ピクセルがどのアルファ値を使用するかを指定します。DXT4はプリマルチプライドアルファを、DXT5は乗算されていないアルファデータを扱います。DXT4/DXT5は、補間を利用して滑らかなアルファ値の変化を表現できるため、アルファブレンドを多用する画像に特に適しており、DXT5は汎用性の高い形式と見なされています。

関連技術



DXTCに関連する技術として、法線マップ圧縮に特化した3Dcや、テクスチャ圧縮形式のFXT1、そしてDXTCデータを格納するためによく用いられるファイル形式であるDirectDraw Surface (DDS) などがあります。

本記事は、2007年5月19日版の英語版ウィキペディア記事を基に作成されました。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。