[かみやんのたわごとへ戻る]


counter

激速GeForce256!

GeForce256.jpg (6940 バイト)  GeForce256。3D野郎はみんな買ったって言うから、オレも買ったよ!CreativeLabの3DBlaster。29800円。

 ジオメトリ(トランスフォームとライティング(T&L))がハードウェア化されて、ビュンビュン。グラフィックワークステーション並だ、この速度は。ちなみに、DirectXで、このT&L機能を使うにはDirectX7が必要だ。OpenGLなら、どのバージョンでもOKだ。

 箱には、1500万ポリゴン/秒って書いてあるから、600万ポリゴン/秒のドリームキャストより速いって事だ。7500万ポリゴン/秒のPlayStation2には、及ばないけどね。

 フィルレートは、マルチテクスチャ&バイリニアフィルタリングで、480MPixel/秒だ(うーん、PS2はいくつだっけか)。

 VRAMのバンド幅は、2.6GB/秒(これって、Byteなのか、Bitなのか。。)。1クロックで4ビクセルの描画。
 まぁ、なんだかんだ言ってもスペック表の言うことだから実際のゲームとかでは理論値は出ないだろうけど。
 あとは、キューブ環境マッピングの対応、バンプマッピングの対応、頂点ブレンディングの対応などが書いてある。

DirectX7 BenchMark

 どのぐらい速くなったかを調べるため、早速Direct3D-IMのサンプルでテストしてみました。ちなみに、GeForceの前はATI RAGE PROを使っていたのでそのカードとの比較をしてみました。RAGE PROは、今から1年10ヶ月前に買ったカードです。Riva128と同時期ぐらいかな。ちなみに、環境はWindows98/PentiumII-300MHz/Mem:128Mbyte。GeForceのドライバは、最初からついていたCreativeのドライバ。

サンプル名 RagePro GeForce256 速度比
Bend 300 942 3.14
Billboard 124 280 2.26
Boids 182 520 2.86
BumpEarth 1.78 1.78 1.00
BumpWaves 1.06 1.06 1.00
ClipMirror 65.5 298 4.55
Compress 448 900 2.00
Dolphin 114 340 2.98
EnvCube 0.38 34.5 90.8
Filter 500 1380 2.76
Fireworks 170 398 2.34
Flare 130 700 5.38
LightMap 195 637 3.27
Lights 153 680 4.44
MFCFog 180 900 5.00
MipMap 505 1400 2.80
MTexture 215 720 3.35
ShadowVol 6.75 239 35.4
ShadowVol2 9.50 210 22.1
SphereMap 118 370 3.14
StencilDepth 7.00 237 33.9
StencilMirror 8 210 26.2
VBuffer 215 836 3.89
VideoTex 82 614 7.49
WBuffer 397 625 1.57

 平均して、2〜4倍ぐらいは速くなったようだ。太字で書いた特に高速化されたところは、RageProではハードウェアが効かなくて速度が落ちていたところだ。キューブ環境マップとステンシルバッファの機能がRageProにはなかった。あと、残念だったのが、BumpEarthとBumpWaveがGeForceでもハードウェアが効かなかったことだ。スペック表には内積バンプマップ対応とあるのに効かなかったということは、サンプルが要求しているバンプマップは他の方式のバンプマップだったのだろう。

 ShadowVol2のフレームレートが十分使える速度になったのは嬉しい。これで、平面だけに落とすインチキ・シャドウではなく、複雑な平面にも正確に落とすボリューム・シャドウが使えるということだ。

 キューブ環境マップは、34fpsでは実用にならない。動的環境マップではなく、静的環境マップとしてなら使えるだろう。

DirectX7の新機能

 ついでに、DirectX7の新機能を書いておくと、

 T&Lハードウェア対応は、大きい。これでOpenGLに一歩近づいたか。
 キューブ環境マップは、現在ハードウェアで対応しているのは、GeForceのみ。そのGeForceもあの速度では動的環境マップとしては使えないだろう。新たな3Dカードに期待。
 ジオメトリブレンディングは、頂点バッファの内容を書きかえることなくメッシュの変形をするもの。頂点バッファは、OpenGLで言うところのディスプレイリスト。一旦、VRAMへ転送してしまえば、以降、転送が不要になり高速化できるというもの。しかも、DirectXの頂点バッファは、Lockし、そのバッファの内容を読み書きできる。ここまでは、DirectX6の機能だが、DirectX7では、Lockして直接書き換えることなくメッシュを変形できるようになった。このLockして書き換えというのは、結構重たいので、それすらしないでメッシュを変形する方法を提供することで高速化しようということだ。ただし、この変形というのは44行列を複数渡して、「どの頂点がどのぐらいどの行列の影響を受けるか」という指定をする。なかなか制御が難しいのだがこれで、生物の間接などワンスキンアニメーションが高速化されるわけだ。ちなみに、GeForceでは行列を2つまで指定できる。今のところGeForce以外では、ジオメトリブレンディングすら対応していないと思われるが、3つぐらい行列が指定できれば、単に曲がる間接だけでなく、筋肉の膨らみなどもジオメトリブレンディングで表現できると思うのだが。。
 デバイスステートブロックは、レンダリングステートの塊を登録しておいて、後で呼び出すことによって、レンダリングステートの変更による速度低下を減らすものだ。レンダリングステートの変更は最小限に押さえろというのは、Direct3Dの初期版からいわれてきたことだ。これに対応するには、1メッシュでも同じテクスチャや同じマテリアルのポリゴンをまとめたり、シーンの中で半透明オブジェクトをまとめたりと、極限までレンダリングステートの変更を押さえようとすると、かなり複雑な機構が必要とされた。これが高速化されたというのは、うれしい。
 Direct3DXインターフェースの追加は、Direct3D-IMの初期化やOpenGLライクな行列のPush、Pop。その他、数学関数が増えている。テクスチャやマテリアルのインターフェースの廃止は、うれしい。今まで、かなり面倒だったからだ。
 3D Now!に対応は、オレは3D Now!ユーザではないし、GeForceがあるので関係ない。Visual Basic対応にいたってはもっと関係ない。むしろ、ヘルプに「VisualBasicの場合は〜」という項目がたくさんあるのでうっとうしい。


[かみやんのたわごとへ戻る]