GPUの進化の方向性

DirectX9では頂点シェーダとピクセルシェーダが使える。
頂点シェーダは入力された頂点を回転したりし、そこからスクリーン上の3点を結んだ三角形を生成する。
ピクセルシェーダは三角形内の全ピクセルに対し、色を置く。
この2つは結構自由にプログラムを組むことができるが、この間にある処理、すなわち三角形に含まれるピクセルを判定し、それぞれに対してテクスチャの位置・Zを算出して、Zテストなどをやっているのは、おそらくGPUのハードウェアであると思われる。


Intelが開発中のLarrabeeSIMD拡張をしたPentiumをたくさん並べたようなGPUだ。
これはレンダリングの仕組みをすべてソフトウェアで提供し、超柔軟・高速に処理しようという試みで、とりあえず第1弾の発売は延期になったらしい。
ソフトウェアレンダラになると何が変わるかというと、上記の頂点シェーダとピクセルシェーダの間の処理も自由に作ることができるようになる。
冷静に考えてみるとこれはなかなか面白い話だ。


GPUが「ポリゴンを描画する回路」となっているのは、もともと非力なCPU/GPUで効率的に3Dっぽい描画をするために、ポリゴンという仕組みが非常に効率的だったからで、3D描画にポリゴンが最適であるという理由からではない。
現在のGPUも柔軟にはなっているが、原理的にポリゴンを描画するものであり、その頂点をどうするか、置く色をどう細工するか、というところに焦点が当たっている。
DirectX11のテッセレータも「ポリゴン」を分割するもので、その原理は変わっていない。
GPUがポリゴンを描画するものと固定している最も大きな要因は、頂点シェーダとピクセルシェーダの間、三角形の頂点をスクリーンのピクセルにラスタライズする部分である。と思う。


じゃあ、その部分が自由に作れるようになったらどうなるのか。
まずピクセルシェーダに入力する点の集合体は、三角形を現すものである必要がなくなる。
すると、頂点シェーダの出力も三角形を表す頂点である必要はなくなる。ってことは、頂点シェーダの入力も三角形でなくてよい。
頂点シェーダとピクセルシェーダの間が自由になると、3点指定の面を描画することに縛られなくなるのだ。
もちろん、それが自由になるからといって、じゃあどのように絵を作ればいいのかは俺なんかには思いつかない。3Dを利用しなくても2D描画が速くできるね、ぐらい?


まあ、なんしか、GPUというのはそういう感じでソフトウェアレンダラの方向に向かって進んでいるらしい。
ずっと未来にはGPUごとの違いを吸収するための中間コードと、それ用の言語・開発環境がマイクロソフトから提供されて、下位層のDirectXとなるかもしれない。過渡期には従来のポリゴンレンダラをソフトウェアで実装したものが上位レベルのDirectXとなるのかもしれないし、なんらかの新手法が標準化されてまったく新しいDirectXになっちゃうかもしれない。
ソフトウェアレンダラ化っつーのは、いままでとは違う絵、違う理論、違う手法で画面を作る、未開拓の世界への扉なのだ、と思う。
どんなものが出てくるんだろう。もう少しでそういう時代になるのかと思うと、なんだかのんびりしてもいられない。