ToyBox を RIB 対応にする話 その 7

Out of Core な MPBS レンダラ(SnowStorm)ができたので、その比較画像作成のためにレイトレーサ(ToyBox)の機能拡張を行いました。モデルは少し前に流行った Perfumeモデルです。

レイトレーシング(層化 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

コメント

このブログの人気の投稿

[ C# ] 複数ページからなる TIFF ファイルの作成方法

メモ: ffmpeg を用いた連番ファイルへの変換方法

連番 PPM から FFMpeg と huffyuv でロスレス動画作ってみたんだけど…