このページの本文へ

すべて分かった GeForce4

すべて分かった GeForce4

2002年04月20日 00時30分更新

文● アスキーPC Explorer編集部・佐久間 康仁

  • この記事をはてなブックマークに追加
  • 本文印刷

表現力をいっそう強化!?
nfiniteFXII

 前ページ図中でもっとも大きなブロックである「nfiniteFXIIエンジン」については、あまり詳しい内容が明らかにされていない。少なくとも発表資料を見る限りでは、各ユニットの個数に追加、変更はなく、コアクロックの高速化などの要因によってパフォーマンスが従来(GeForce3)の1.5倍に引き上げられたようだ。ただ、GeForce3からあまり変更がないと言っても、内部はかなり複雑な仕組みなので解説が必要だろう。

 ポリゴンで構成される3Dオブジェクトは、各頂点データとポリゴンの表面の模様、色彩を管理したテクスチャデータとしてnfiniteFXIIエンジンに読み込まれる。このとき、単純な頂点の移動や陰影の計算だけで済む場合には左側のブロック(頂点バッファと頂点演算プロセッサ、シャドウバッファと光源演算プロセッサ)に流れ、4つのパイプラインを通って同時に最大4つのピクセルとして出力される。

 一方、ポリゴンの内部に頂点を演算合成して、曲面やさざ波などの複雑な表現を行う場合には、右側の「プログラマブルバーテックス(頂点)シェーダ」にデータを読み込ませる。バーテックスシェーダとピクセルシェーダを組み合わせることで、単純なポリゴンから実に複雑な表現が可能になる。ピクセルシェーダは従来のレンダリングユニットがポリゴンやテクスチャ全体に効果を与えるのとは異なり、ピクセル単位で微細に陰影や反射光の効果を指定できる。表情の細かいシワや岩肌のゴツゴツ感も、ピクセルシェーダを使えばよりリアルに再現できる。

 図3、4はDirectX 8.1 SDKに含まれるサンプルを使ったかなり単純な例だが、1枚のフラットなポリゴンに頂点を合成し、頂点座標を上下に移動させることで起伏を起こしてそれに伴う影をつけることで、波紋のような効果を描き出している。これを最初から複雑なポリゴンの集合で描こうとすると、あらかじめ複雑なモデリングを行い、さらに多数のポリゴンデータを短時間に読み込む必要があるが、ビデオチップ内部で合成するこの方法であれば、読み込むデータは極めて少なくて済み、GPU(グラフィックチップ)内部の高速な演算能力を活用できる。

図3、4 DirectX 8.1 SDKに含まれる「Vertex Shader」のデモプログラム。フラットな1枚のポリゴンと、陰影情報テクスチャだけだが、Vertex Shader機能を利用することで波打つように変化する。

図5 Nvidia渾身の3D CGデモの1シーン。発表会場で見た、毛むくじゃらの狼男の体毛が、風になびくシーンは圧巻だった。
 図5は対照的に複雑な例で、Nvidiaが公開しているデモの1シーンだが、毛むくじゃらの狼男の体毛もバーテックスシェーダ&ピクセルシェーダによって表現されている(元の狼男の3Dモデル=約10万ポリゴンには毛の頂点などの座標は含まれず、GPU内部の計算結果に基づいて描画している)。

 なお、GeForce4 Tiはバーテックスシェーダとピクセルシェーダを両方搭載しているが、GeForce4 MXにはピクセルシェーダが搭載されていないため、図5のような複雑な3Dグラフィックスのリアルタイムレンダリングはできない(各種テストプログラムではGeForce4 MXでもバーテックスシェーダの機能が利用できるが、Nvidiaのスペックシートではバーテックスシェーダの記載がないため、図でも省略している)。



カテゴリートップへ

注目ニュース

ASCII倶楽部

ピックアップ

ASCII.jpメール アキバマガジン

ASCII.jp RSS2.0 配信中