1980年からプログラマしています

どうしてプログラマすることになったか書いています。過去日記です。

プラス・ワン Zバッファ・レンダリング(198X年)

 HPTurbSRXというグラフィックエンジンは、1秒間に数十万ポリゴンを処理することができた。以前はE&Sのベクター・ディスプレイでワイヤーフレーム1万本がリアルタイムというので驚いたが、HPのグラフィック・エンジンがこんなに速いとは知らなかった。ワークステーションと言っても、本体のCPUは、モトローラのマイクロプロセッサ68030である。メモリはたったの4MBだった。

 グラフィック・エンジンに使われているZバッファ・アルゴリズムは、ポリゴンの奥行き(Z)をピクセル単位にZバッファというメモリに書いておき、Z値を比較して手前なら、フレームバッファにピクセルを書きだすことで、陰面消去(つまり手前の面のみ描画)する仕組みである。

 残念ながらTurboSRXZバッファは、16ビットしかなく精度が非常に悪かった。Zバッファの精度が悪いと、アニメーションをした時に、奥行きが近いポリゴンが出たり消えたりしてちらつくこともある。特に手前のクリッピング面をぎりぎりに取ると精度が落ちるので、できるだけ遠く(!)に設定した。

 つまりZバッファの範囲をできるだけ小さく絞って精度を確保するという作戦だった。これもやり過ぎると、手前のポリゴンが欠けて見えてしまうので、試行錯誤が必要だった(今時そんなことをする必要はない)

 遠方にある空や地面やなどは、Zバッファを使わないで、奥から順番にデータを重ね書きで描画した。これでZバッファの精度不足を回避した。

 影は、建築物のオブジェクトを垂直方向のスケールを0にしてぺしゃんこに潰して、斜めに変形して濃い灰色にして描画した。もちろんウソ影である。これもZバッファを使わずに重ね描きした。Zバッファを使わないので、同じZ位置にポリゴンを描画しても、干渉することもない。アニメーションでは、ここぞというところで、このウソ影は活躍した(当時、影のないCGは普通にあった)。

 レンダリングにグラフィック・エンジンを使うハンデは、プラス・ワンの制作部のアイディアで補っていた。