GPU (graphics processing unit)はPS4を初めとするゲーム機の主要機構です。コンピューターの頭脳であるCPUは、もちろんあらゆる計算が可能なわけで、グラフィックスも時間をかければ出来ます。しかし、フルハイビジョンの絵を1/60秒の間隔で次々に表示するとなると専用の計算機構が今でも必要、というかそのGPUがゲーム機などの性能を左右しています。
そのまとまった解説書がなかなか無かったのですけど、つい最近の新刊でかなり見応えのある本を見つけました。ただし内容がややマニアック、つまり私には偏りがあるように見えたので書名はここには書きません。
こうしたCPU外の計算機構はずっと昔からあります。たとえば初期のCT (computed tomography)にはミニコンと呼ばれる計算機が付いていましたけど、その計算速度では人体の横断図を再構成するにはまったく能力が足りないので外付けでかなりでかい計算機構が付いていました。絵はそちらで組み立てます。今ではGPUで事足りると思いますが、それでもCPUが絵作りの主人公で無いのは最初からです。
GPUが担当するのはポリゴンの頂点リストやテクスチャ、視点や光源の座標が与えられた時に画面の各ドットの輝度を計算する部分です。想像可能と思いますけど、延々と同様の処理の繰り返しです。こういった一本道の作業にものすごく強い。
CPUは計算だけで無く条件(正負など)による次の処理の判断が得意です。この条件分岐命令は一説では5~6命令に一つ程度は出て来るそうで、この分岐が起こるとデータの流れが途切れてしまうのでGPUの構成ではかえって遅くなるはずです。
ただし、GPUは発展速度が激しいので内容が公開されることはあまりないです。いわゆる機械語さえ公開されてないものが多数派と思います。メーカーが提供するライブラリと呼ばれるプログラムを呼び出して使います。
なので謎の部分が多かった、ということ。私が面白かったのは、近代ゲームグラフィックスにおける「三種の神器」で、「法線マッピング」「高品位な動的影生成」「HDRレンダリング」だそうです。
法線マッピングは私は「バンプマッピング」という名で覚えていて、ポリゴン表面にでこぼこ感を与える技法。これがゲーム界では大歓迎されてさらに強化されているらしいです。
アイドルマスターでもたとえば腕の影が躯幹に投影されています。あれはどうなっているのかなと思っていたら、視点からの深さ(Z)みたいに光源からの距離で判別しているそうです。言われてみれば納得のアイデア。
HDRはどちらか言うと見た目の効果(フレアなど)に応用されるようです。
技法的にはもっといろいろ知りたかったし、実を言うとプログラミング上で必要な知識を得るために買ったのですけど、業界の都合なのか肝心の所が華麗にスルーされてしまいました。
一応、私のような業界にあまり関連が無い者でもGPUのプログラミングは出来そうです。実用上はライブラリが充実すればおしまいなのですけど、いろいろいじってみたいのです。