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が分かる方は理解

しやすいのではないかと思います。