VL-BASICで動くレイトレーシング

2021/7/10(土)

VL-BASICで動くレイトレーシング

 

by ULproject

 

HTMLで動くレイトレーシング

 

VL-BASICの拡張命令で作ってみました

 

VL-BASICは行列による移動になりますので

mray003.html

が一番近いです

(VL-BASIC拡張命令では点の大きさの変更には

対応していませんので省略しています)

 

以下、モデル(球)の配置の説明

mray003.htmlのModel関数と同じように作りました

 

*MODEL

GPU MATERIAL(PUSH)

GPU MATRIX(MODE, MODEL)

'

GPU MATERIAL(SPECULAR, 1.0, 1.0, 1.0)

GPU MATERIAL(SHININESS, 10.0)

GPU MATERIAL(REFLECT, 0.0, 0.0, 0.0)

GPU MATERIAL(CLARITY, 0.0, 0.0, 0.0)

GPU MATERIAL(REFRACT, 1.0)

' 光源

GPU MATERIAL(LIGHT    , 1.0, 1.0, 1.0) '--- 光源の光の色と強さ

GPU MATERIAL(ATTENUATE, 1.0, 0.0, 0.0) '--- 光減衰(0,1,2乗の係数)

GPU MATERIAL(DIFFUSE, 1.0, 1.0, 1.0)

GPU MATRIX(PUSH)

GPU TRANSLATE(-500, 500, 500)

GPU SPHERE(2)

GPU MATRIX(POP)

GPU MATERIAL(LIGHT    , 0.0, 0.0, 0.0) '--- 光源の光の色と強さ

' 大球

GPU MATERIAL(DIFFUSE, 0.0, 1.0, 1.0)

GPU MATRIX(PUSH)

GPU TRANSLATE(3, 8, -80)

GPU SPHERE(18)

GPU MATRIX(POP)

' 小球

GPU MATERIAL(DIFFUSE, 1.0, 1.0, 0.0)

GPU MATRIX(PUSH)

GPU TRANSLATE(-6, 14, -60)

GPU SPHERE(6)

GPU MATRIX(POP)

' 透明

GPU MATERIAL(DIFFUSE, 0.1, 0.1, 0.1)

GPU MATERIAL(CLARITY, 0.9, 0.9, 0.9)

GPU MATERIAL(REFRACT, 1.2)

GPU MATRIX(PUSH)

GPU TRANSLATE(3, 9, -20)

GPU SPHERE(4)

GPU MATRIX(POP)

' 反射

GPU MATERIAL(DIFFUSE, 0.5, 0.5, 0.5)

GPU MATERIAL(REFLECT, 0.5, 0.5, 0.5)

GPU MATERIAL(CLARITY, 0.0, 0.0, 0.0)

GPU MATERIAL(REFRACT, 1.0)

GPU MATRIX(PUSH)

GPU TRANSLATE(0, -91, -90)

GPU SPHERE(80)

GPU MATRIX(POP)

'

GPU MATRIX(MODE, PREVIOUS)

GPU MATERIAL(POP)

RETURN

 

のように

OpenGL風にモデルを配置出来ます

GPU MATRIX(PUSH), GPU MATRIX(POP)行列の退避と戻しです

Specular 反射光の割合

Shininess 反射光の収束度

Reflect 鏡の割合

Clarity 透明度

Refract 屈折率

Diffuse 表面の色(RGB)

Sphere(r) 半径rの球

Translate(x, y, z) x,y,z方向に移動

Rotate(d, x, y, z) ベクトル(x,y,z)回りにd°回転

 

MODELモードでは

行列などの演算はSphereに近いほうから

Rotate(d, x, y, z)

Translate(x, y, z)

Sphere(r)

球は並進移動した後回転する

 

VIEWモードでは

自分が動くイメージですが方向はモデルが動く方向です

演算は常にモデル(球)に対して行っているためです

Rotate(d, x, y, z)

Translate(x, y, z)

自分がベクトル(x,y,z)回りに-d°回転し

自分が-x,-y,-z方向に並進移動する

 

ややこしいですが、行列などの演算の都合です

 

blg~.zip(mray001v.bas)は

以下のリンクからダウンロードできます

VL-BASIC(N88-BASIC互換?)ホームページ

Readme.txtを読んで遊んで下さい

 

操作方法はプログラムリストの最終行に

書いてあります




このブログの人気の投稿

NEWS

N88-BASICでゲーム (1回目)