VL-BASICの3DCG命令開発日記
VL-BASICの拡張命令はGPUまたはMPUで始まります。
GPUは実際のGPUを使っているわけではなくすべてCPU
で計算しています。
昔レイトレーシングライブラリをC++で作りました。
目指したのは複雑な図形ではなく
リアルタイムレイトレーシングでしたので
単純な図形の組合わせで表示するプリミティブ結合方式
(2次曲面などの組合わせで立体を表現する方式)を採用
しました。
GPUはよくわからないので、CPUのみでの開発です。
ある時、C++をCに置換えると速くなるのではないかと
思い試すとたしかに速くなりましたので以後Cで開発
することにしました。
さらにOpenGLに出会い、その洗練された命令体系に
魅了され、OpenGLのような感覚で使える
レイトレーシングライブラリにしようと思い、
glRotatedに対応するulRotateなどの関数を
少しずつ作り、UL(User libraryの意味、Cのul.hと
ul.lib未公開)を作りました。
OpenGLでは命令の最後がdならdouble、fならfloat
などあらゆる型に対応していますが、ULでは型を固定化
(doubleまたはint)し、命令数を少なくしスリム化
しました。
その後、フォトンマッピングの存在を知りULに組込み
ました。(遅くなるので一部の機能のみですが。)
最近、急にBASICが懐かしくなり、N88-BASIC
シミュレータVL-BASICを作りました。
このBASIC命令でul.libの関数を呼び出せたなら、
面白いと思い、拡張命令を追加しました。
VL-BASICのレイトレーシングはOpenGLの命令体系を
参考にしていますので、OpenGLが分かる方は理解
しやすいのではないかと思います。