Direct3D 10
来週 MD3 というイベントで、Direct3D 10 とシェーダモデル4.0をしゃべるので、久しぶりに (Unmanaged の) Direct3D をいじっています。Direct3D 10 は Direct3D 9 までと違って下位互換性を持たず、Windows Vista かつ次世代ハードウェア (まだ Direct3D 10 が動作するハードウェアは販売されていません) でのみ動作します。したがって普及には時間がかかりそうです。しかし、その機能には、ゲーム開発者はもちろん、CG に興味のあるプログラマにはぐっとくるものがあります。
特にジオメトリシェーダは特筆ものです。GPU がこれだけ高速化した現在、ボトルネックはやはりバスです。高品質の画像を生成するには CPU から GPU に多量のデータを送る必要があるのですが、PCI Express であっても無限のデータを送ることはできません。ジオメトリシェーダの優れた点は GPU で頂点 (より正確にはプリミティブ) 生成ができることです。DirectX 9 SDK June 2006 のサンプルには、パーティクルやブラーや変移マッピングの頂点を GPU で生成するサンプルがあります。
さらに (実は一番重要なのですが) ジオメトリシェーダによりシャドウボリューム用の縮退四角形が必要なくなります。影生成の主要テクニックの1つであるシャドウボリュームでは、光源から見た輪郭エッジで四角形を生成し、片方の辺を無限遠点に座標変換します。ところが、現在の GPU では頂点を生成できないので、三角形の各辺に縮退四角形としてデータを持たせる必要がありました 。全ての三角形の辺に縮退四角形を持たせることを想像すると、とんでもない数になることが予想できます。そのため、シャドウボリュームはあまり GPU では処理されてきませんでした。これがジオメトリシェーダによって解決できるのです、興味のある方は SDK のシャドウボリュームのサンプルを参照してください。影生成のアルゴリズムに興味のある方は前回の書籍をお読みください。
Comments
- Anonymous
June 27, 2006
成果物認定までが必要 (MD3 に参加して