ソフトウェア GLSL 対応状況

by syoyo

ソフトウェアモードでの GLSL の対応状況、
つまりは OpenGL ソフトウェアラスタライザのパフォーマンスを調べてみました。
GLSL をハードウェアの制限なしに走らせたい場合を考えてみたかったので。

NVIDIA(windows)
最新のドライバで 2.0 に対応したので、3dlabs の glsldemo が動く。
geforce 6800 でもマンデルブローは動かないので nvemulate.exe
でソフトウェアモードにしてみた。絵が 1 枚出てくるのに 4, 5 分くらいかかる。
むちゃんこ重い、、、、  
ちなみに NVIDIA が公開している OpenGL 2.0 のノートを見ると、
noise() 関数は実装されていないとのこと。まああたりまえといえば当たり前。

ATI(windows)
同じく 3dlabs の glsldemo を動かしてみる。
マンデルブローを実行すると強制ソフトウェアモードになるみたい(X800 でも)。
でもこれも NV と同じくむちゃんこ重い、、、、
しかもマンデルブローの結果はなんか変。
ところで、ATI ではユーザがソフトウェアモードに切り替えられるようにできる
ツールとかあるんでしょうか?

Mac OS X
Developer Tools でインストールされる GLSLshowpiece デモを動かす。
結構早い。マンデルブローも 3, 4 fps くらいでうごく(PowerBook G4)。
noise() も動く。

総評

NV, ATI のソフトウェア OpenGL レンダラはむちゃくちゃ重くて使い物にならない。
これは結構残念。
まあ本来であればリファレンスのためにつくってあるものでしょうから、
速度よりも精度を重視しているのでしょう。

Mac OS X のソフトウェア OpenGL はそこそこ動く。AltiVec にも最適化されているらしい。
きっとハードで対応できない、もしくは古いハードでやるより CPU のほうが効率的な場合
の第二の OpenGL レンダラとしてソフトウェアレンダラを
使うという位置づけなのでしょう。速度 > 精度か?

というわけで、GLSL をハードウェアの制限なしにそれなりに快適に動かして
ひととおり Orange book のシェーダを試したいのなら、Mac OS X でしょうか。

shader builder で一文字打つたびに構文チェック & コンパイルもしてくれるし。

もうひとつの選択肢は、 GLSL を実装中の Mesa 待ちですね。早く来いこい Mesa。

Advertisements