ToyBox を RIB 対応にする話 その 7
Out of Core な MPBS レンダラ(SnowStorm)ができたので、その比較画像作成のためにレイトレーサ(ToyBox)の機能拡張を行いました。モデルは少し前に流行った Perfumeモデルです。
実際のレンダリングは ToyBox を RIB 対応させた tb.exe で行いました。
主な機能拡張は、
ReadArchive での .obj 対応では、形状のみを読み込むようにしてあります。.obj フォーマットでは .mtl ファイルと連携してマテリアルの指定も可能なのですが、やはり .rib ファイルでは、シェーダの切り替えなども簡単に行いたい場合が多いと思い、今回は形状データの読み込みのみとしました。
水平画角指定は Projection コマンドに fov キーワードだけでなく、horizontalFov キーワードを独自拡張として追加しました。これは SnowStorm 側が水平画角指定を行っているためです。
その他、バグフィックスなども行いました。XY 平面、YZ 平面、ZX 平面に平行なポリゴンだけからなる形状データを読み込んだ場合、レンダリングされないというバグを取ったり等々。
tb の方も、何気に少しずつ開発が進んでおります。
RIB 対応だけではあまり意味がないので、RSL 対応までできたら公開しても良いかなぁ、などと考えております。
ちなみに上記画像は、こんな RIB でレンダリングしてます:
# ReadArchive test
Display "PerfumeRGB.ppm" "file" "rgb"
Format 800 450 1.0
Projection "perspective" "horizontalFov" [ 45 ]
Imager "background" "color" [ 0 0 0 ]
PixelSamples 16 16
WorldBegin
LightSource "ambientlight" "ambient" "intensity" [ 0.5 ]
LightSource "pointlight" 1
"from" [ 1000 1000 -100 ]
"intensity" [ 1 ]
"lightcolor" [ 1 1 1 ]
Color [ 1 1 1 ]
Surface "plastic"
"Ks" [ 0.3 ] "Kd" [ 1 ] "Ka" [ 0.25 ]
"roughness" [ 0.01 ]
"specularcolor" [1 1 1 ]
Translate 0 0 400
Translate 0 -155 0
Color [ 1 0.1 0.2 ]
ReadArchive "model1.obj"
Color [ 0.1 1 0.1 ]
ReadArchive "model2.obj"
Color [ 0.1 0.2 1 ]
ReadArchive "model3.obj"
WorldEnd
レイトレーシング(層化 PLS 16x16) |
MPBS (Out of Core) - スーパーサンプリングなし |
実際のレンダリングは ToyBox を RIB 対応させた tb.exe で行いました。
主な機能拡張は、
- ReadArchive での .obj ファイル対応
- 水平画角指定対応
ReadArchive での .obj 対応では、形状のみを読み込むようにしてあります。.obj フォーマットでは .mtl ファイルと連携してマテリアルの指定も可能なのですが、やはり .rib ファイルでは、シェーダの切り替えなども簡単に行いたい場合が多いと思い、今回は形状データの読み込みのみとしました。
水平画角指定は Projection コマンドに fov キーワードだけでなく、horizontalFov キーワードを独自拡張として追加しました。これは SnowStorm 側が水平画角指定を行っているためです。
その他、バグフィックスなども行いました。XY 平面、YZ 平面、ZX 平面に平行なポリゴンだけからなる形状データを読み込んだ場合、レンダリングされないというバグを取ったり等々。
tb の方も、何気に少しずつ開発が進んでおります。
RIB 対応だけではあまり意味がないので、RSL 対応までできたら公開しても良いかなぁ、などと考えております。
ちなみに上記画像は、こんな RIB でレンダリングしてます:
# ReadArchive test
Display "PerfumeRGB.ppm" "file" "rgb"
Format 800 450 1.0
Projection "perspective" "horizontalFov" [ 45 ]
Imager "background" "color" [ 0 0 0 ]
PixelSamples 16 16
WorldBegin
LightSource "ambientlight" "ambient" "intensity" [ 0.5 ]
LightSource "pointlight" 1
"from" [ 1000 1000 -100 ]
"intensity" [ 1 ]
"lightcolor" [ 1 1 1 ]
Color [ 1 1 1 ]
Surface "plastic"
"Ks" [ 0.3 ] "Kd" [ 1 ] "Ka" [ 0.25 ]
"roughness" [ 0.01 ]
"specularcolor" [1 1 1 ]
Translate 0 0 400
Translate 0 -155 0
Color [ 1 0.1 0.2 ]
ReadArchive "model1.obj"
Color [ 0.1 1 0.1 ]
ReadArchive "model2.obj"
Color [ 0.1 0.2 1 ]
ReadArchive "model3.obj"
WorldEnd
コメント
コメントを投稿