DXTCのソースを表示
←
DXTC
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
'''DXTC'''(時々S3 Texture Compression (S3TC) ないしDXTnと呼ばれる)は、元々[[S3 Graphics|S3]]社によって開発された画像圧縮アルゴリズム技術である({{US patent|5956431|US Patent #5,956,431}})。この技術はSavage 3Dグラフィックスアクセラレータで用いられている。[[JPEG]]のような既存の画像圧縮アルゴリズムとは違い、DXTCは(VQのやり方に似た)単純なメモリアクセスと対になった固定レートデータ圧縮を行う。これは3Dコンピュータグラフィックスをハードウェアで支援する際、テクスチャを圧縮するのに適している。この技術は、[[マイクロソフト]]の[[DirectX]] 6.0に含まれると、ハードウェアやソフトウェアメーカーに広く採用されるようになった。S3社はもはやグラフィックスアクセラレータ市場において、リーディングカンパニーではないが、例えばコンソール用に使われているDXTC技術のライセンス料でいまだ生き長らえている。 == コーデック == DXTCアルゴリズムには5つのバリエーションがある。これらはDXT1からDXT5まであり、それぞれのフォーマットに対して[[FourCC]]コードがマイクロソフトによって割り当てられている。これらはそれぞれ特定の種類のイメージデータ用に設計されている。画像はすべてのフォーマットにおいて、64ビットないし128ビットに量子化された4×4ブロックに変換され、32ビットのRGBA入力データは8:1ないし4:1に圧縮される。DXTCは非可逆圧縮アルゴリズムであるため、画像品質は落ちるが、リアルな画像を表示するには、圧縮された画像データでも十分である。アニメ風の画像や[[法線マップ]]は上手く圧縮することができず、[[圧縮アーティファクト|アーティファクト]]が生じやすい。[[ATI Technologies|ATI]]の[[3Dc]]圧縮アルゴリズムは、DXTCが持つ法線マップについての欠点を克服するように設計された、DXT5の変種である。 多くの近代的な画像圧縮アルゴリズムと同様に、実装者が特定のニーズに合わせて圧縮アルゴリズムを設計することができるようにするために、DXTCはただ画像を解凍するのに使われる方法を指定するのみである。しかし特許は圧縮アルゴリズムもカバーしている。初期の圧縮ルーチンは最適化されていなかった。それはどんどん改善されたが、最初DXTCは開発ベンダーに採用されなかった。[[NVIDIA]]の[[GeForce]]からGeForce 4までの[[Graphics Processing Unit|GPU]]は16ビット補間のDXT1テクスチャ描画を使用していたので、色変化を伴うテクスチャを解凍する時に帯のようなノイズが載っていた。このため、テクスチャ圧縮に対してよくない印象を与えてしまったが、これは[[コーデック]]自身に基本的に関係しないものだった。 == DXT1 == DXT1は最も簡単なDXTCのバリエーションである。これは、16ピクセル入力から64ビットデータを出力する。この出力は16bit RGB5:6:5 2色と4x4の2ビットのルックアップテーブルからなる。 最初の色 (c0) が2番目の色 (c1) より数値的に大きいならば、他の2つの色は<math>c_2 = {2 \over 3} c_0 + {1 \over 3} c_1</math> と <math>c_3 = {1 \over 3} c_0 + {2 \over 3} c_1</math>として計算される。このモードは[[Apple]]のビデオコーデックのc0モードによく似ている。 逆に<math>c_0 \le c_1</math>なら、<math>c_2 = {1 \over 2} c_0 + {1 \over 2} c_1</math> になり、c3は透過色になる。 ルックアップテーブルはそれぞれのピクセル毎に色値が決定される。<math>c_0</math>だと0に相当し、<math>c_3</math>だと3が相当する。より高圧縮にするためにアルファデータは格納されない。 == DXT2とDXT3 == DXT2とDXT3は16ピクセル入力から128ビットデータに変換する。これは64ビットの色データに続いて64ビットのアルファチャンネルデータ(ピクセルそれぞれについて4ビット)からなり、DXT1と同様の方法でエンコードされる(ただし、アルファなしの4色バージョンが常に使われる)。DXT2では、色データにはあらかじめアルファデータが掛け合わせてあり、DXT3ではアルファデータが掛け合わされていない。普通、DXT2/3は透過色の領域と不透明色の領域の境界が鋭く変化する画像によく合う。 == DXT4とDXT5 == DXT4とDXT5は16ピクセル入力から128ビットデータに変換する。このデータには64ビットの色データ(DXT2ないしDXT3と同じ方法でエンコードされたもの)に続いて、64ビットのアルファチャンネルデータ(2つの8ビットアルファ値と4x4の3ビットルックアップテーブル)からなる。 <math>\alpha_0 > \alpha_1</math>であれば、6つの補間用アルファ値を以下の様に計算する。<math>\alpha_2 = {{6\alpha_0 + 1\alpha_1} \over 7}</math>, <math>\alpha_3 = {{5\alpha_0 + 2\alpha_1} \over 7}</math>, <math>\alpha_4 = {{4\alpha_0 + 3\alpha_1} \over 7}</math>, <math>\alpha_5 = {{3\alpha_0 + 4\alpha_1} \over 7}</math>, <math>\alpha_6 = {{2\alpha_0 + 5\alpha_1} \over 7}</math>, <math>\alpha_7 = {{1\alpha_0 + 6\alpha_1} \over 7}</math>. 逆に<math>\alpha_0 \le \alpha_1</math>であれば、4つの補間用アルファデータを<math>\alpha_2 = {{4\alpha_0 + 1\alpha_1} \over 5}</math>, <math>\alpha_3 = {{3\alpha_0 + 2\alpha_1} \over 5}</math>, <math>\alpha_4 = {{2\alpha_0 + 3\alpha_1} \over 5}</math>, <math>\alpha_5 = {{1\alpha_0 + 4\alpha_1} \over 5}</math>と計算する。残り2つは<math>\alpha_6 = 0</math>と<math>\alpha_7 = 255</math>とする。ルックアップテーブルはそれぞれのピクセルのアルファ値に従って決定される。<math>\alpha_0</math>は0に割り当てられ、<math>\alpha_7</math>は7に割り当てられる。DXT4の色データはアルファ値がすでに掛け合わせてあり、DXT5の色データはそうではない。DXT4/5は補間アルファ色値を用いているので、DXT2/3よりアルファ値(透過具合)がだんだん変化していくものについては非常によい結果をもたらす。DXT5は最も柔軟な汎用圧縮アルゴリズムだと考えられる。 {| |----- align="center" ! FOURCC ! 内容 ! Alpha premultiplied? ! 圧縮率 ! テクスチャタイプ |----- align="center" | DXT1 || 不透明色 / 1-bit Alpha || N/A || 8:1 / 6:1 || 単純なアルファなし |----- align="center" | DXT2 || 明示的なアルファ値 || Yes || 4:1 || 鋭く変化するアルファ値をもつ |----- align="center" | DXT3 || 明示的なアルファ値 || No || 4:1 || 鋭く変化するアルファ値をもつ |----- align="center" | DXT4 || 補間アルファ値 || Yes || 4:1 || 徐々に変化するアルファ値をもつ |----- align="center" | DXT5 || 補間アルファ値 || No || 4:1 || 徐々に変化するアルファ値をもつ |} == 関連項目 == * [[3Dc]] * {{仮リンク|FXT1|en|FXT1}} * [[DirectDraw Surface]] {{iw-ref|en|S3 Texture Compression|15:20, 19 May 2007|oldid=132016170}} {{Computer-stub}} [[Category:3DCG]]
このページで使用されているテンプレート:
テンプレート:Computer-stub
(
ソースを閲覧
)
テンプレート:Iw-ref
(
ソースを閲覧
)
テンプレート:US patent
(
ソースを閲覧
)
テンプレート:仮リンク
(
ソースを閲覧
)
DXTC
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報