ITmedia NEWS >

DirectX9リアル対応3Dゲームが出てこない理由(その1)(3/3 ページ)

» 2004年02月12日 17時33分 公開
[トライゼット西川善司,ITmedia]
前のページへ 1|2|3       

Direct X 9で新設されたテクスチャ形式・その2〜多ビット整数値が格納出来るテクスチャ

 D3D9では、さらに、固定小数点実数表現のダイナミックレンジを広げる意味合いから、新たに多ビット整数テクスチャフォーマットもサポートされるようになった。具体的には以下のようなフォーマットが挙げられる。

D3DFMT_G16R16
D3DFMT_A2R10G10B10
D3DFMT_A16B16G16R16

 例えば「D3DFMT_A2R10G10B10」はαチャネル2ビット、RGBには各10ビットが割り当てられており、1テクセルあたりのビット数は合計32ビットになる。

 こうしたテクスチャフォーマットには、

「格納するベクトルの精度を高くできることと」

「ピクセルシェーダ実行時のスループットが浮動小数点実数よりも速い」

といったメリットが期待出来る。

 とくに「D3DFMT_A2R10G10B10」は、テクスチャフィルタリング処理やαブレンディング処理も適用可能なので、ほとんど従来の32ビットカラーテクスチャと同じような感覚で扱えるのがソフト開発者にとってありがたい。まさにプログラマブルシェーダ2.0時代の3Dゲームにはうってつけのフォーマットだといえる。

フィルタリングブレンディング
D3DFMT_A8R8G8B8
D3DFMT_A2R10G10B10
D3DFMT_A16B16G16R16×
D3DFMT_A16B16G16R16F××
D3DFMT_A32B32G32R32F××

 そして、先ほどと同じようにして調べた整数テクスチャフォーマットの対応を比較したのが下の表だ。

GeForceFX系RADEON9500以上DeltaChrome系Volari系
D3DFMT_A8R8G8B8
D3DFMT_R5G6B5
D3DFMT_A1R5G5B5
D3DFMT_A4R4G4B4
D3DFMT_G16R16×
D3DFMT_A2R10G10B10××
D3DFMT_A16B16G16R16×××

 GeForce FX系は、昔ながらの基本的な32ビットカラー、16ビットカラー以外にサポートしているフォーマットは「D3DFMT_G16R16」のみ。「D3DFMT_A2R10G10B10」はもちろん、「D3DFMT_A16B16G16R16」もサポートしていないことが分かる。

 ちなみに、ここで紹介していることは3Dアプリ開発者の間ではもはや既知の事実であり、なんら新しい情報ではない。あえて、このタイミングで紹介しているのは、今をもって、一般ユーザーにそうした情報があまり知られていないからだ。

 次回は、もう一つの「非互換」要素について迫ってみたい。

ATI RADEON9700のフェラーリのデモ(http://www.ati.com/developer/demos/r9700.html)の「ボンネットの窪み」は、「D3DFMT_A16R16G16B16」による法線マップを活用したバンプマッピングによって実現されていた。つまり、実際にジオメトリとしての凹凸はないということ。ちなみに左側が法線マップを、従来のαARGB8ビットテクスチャフォーマットで表現した場合のレンダリング結果。その差は一目瞭然だ
そのフェラーリ・デモの法線マップを無理矢理可視化したもの。各テクスチャのRGB要素に法線ベクトルのXYZを格納している。何となくこれだけでも凹凸のようなものを見て取れるのが面白い

(トライゼット西川善司)

前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.