はじめに
ようこそ。
これは D3D/OpenGL のグラフィックスパイプラインを実際の GPU が実装している通りに説明していくブログシリーズの目次ページである。こういった話題の多くはグラフィックスプログラマーによく知られており、同じようなことが書かれた論文は大量に存在している。しかし個別の要素に関する非常に細かい情報や一般的な概観は存在するにもかかわらず、その中間の文章があまり存在しないこと、またあったとしても大部分が時代遅れであることが私は気になっていた。
このシリーズはモダンな 3D API をよく知っていて、その内部がどうなっているかに興味のあるグラフィックスプログラマーに向けて書かれている。初心者向けのグラフィックスパイプラインの説明ではないので、3D API を使ったことのない人が読んでもほとんど役に立たないだろう。また現代的なハードウェア設計に関する実際上の知識も仮定する──レジスタ、FIFO、キャッシュ、パイプラインがどんなもので、どのように動作するかを最低でも知っておいた方がいい。最後に、基礎的な並列プログラミング機構に関する実際上の知識も必要になる。GPU は大規模並列計算器だから、これを避けて通ることはできない。
何人かの読者から「このシリーズはグラフィックスパイプラインと GPU の非常に低水準な解説だ」というコメントをもらったが、これが正しいかどうかはどこに視点を置くかによって変わってくる。GPU 技術者はこのシリーズを高水準な GPU の説明と呼ぶだろう。新しい世代の GPU が発表されるときにハードウェアレビューサイトに掲載される類のカラフルなフローチャートほどには高水準ではないが、正直に言って、ああいった種類のレポートは (たとえ美しく書けていたとしても) 情報密度が非常に低い傾向がある。突き詰めれば、あれは実際の動作を説明するために書かれたのではない──キラキラ輝く新しいオモチャを見せるための技術ポルノに過ぎない。さて、私はここでもう少し中身のあることを書きたいと思っている。そのため残念ながら色は少ないし、ベンチマークの結果も出てこない。出てくるのは大量の文章とモノクロの図がいくつかで、さらに (恐ろしい) 数式さえ登場する。もしそれでもよければ、目次を示そう: