OpenShadingLanguage には testrender
という OSL のテスト用のレンダラがありますのでこれを使えるようにします.
環境
- Ubuntu 16.04
- OpenShadingLanguage 1.9.3
- LLVM 7.0
OpenImageIO のビルド
boost などは apt で入るのが使えますが, 依存している OpenImageIO は apt で入るのでは古いのでソースからビルドしておきます.
デフォルトではいろいろなライブラリをリンクしようとするので, いろいろ off にしておくとよいです(e.g. OpenCV など). 最低限, apt で入る libtiff と libpng と OpenEXR でビルドできるはずです
ビルドできたらインストールしておきます.
OpenShadingLanguage のビルド
make help
には OpenImageIO の設定方法が書いていないので迷うかもしれません.
OpenImageIO は OPENIMAGEIOHOME 環境変数で指定します(Make の引数だと cmake に渡してくれない)
LLVM をインストールしておきます. http://releases.llvm.org/download.html#7.0.0 のプレビルドパッケージでいけるはずです.
プレビルドや, LLVM の src からのビルドのデフォルトでは .a
形式なので, LLVM_STATIC=1
を指定します.
(そうしないと LLVM_LIBRARIES
が見つからないというエラーがでる)
LLVM_DIRECTORY
で LLVM のパスを指定して make します(内部で cmake が呼ばれてビルドが走る)
OSL_BUILD_TESTS=1
(デフォルト) で testrender
がビルドされるように設定しておきます.
export OPENIMAGEIOHOME=/path/to/oiio
make LLVM_DIRECTORY=/path/to/llvm LLVM_STATIC=1 OSL_BUILD_TESTS=1
注意
make ベースでは build
ディレクトリを削除しないため, 設定を変えたら build を消すのをわすれずに. そうしないと cmake のキャッシュが残ってうまく cmake configure が走りません.
インストール
make install
デフォルトでは dist
にインストールされます. インストールをせずに oslc
を使おうとすると stdlib.h が見つからないなどのエラーがでます.
testrender を動かす.
testsuite
ディレクトリにいろいろシーンがあるので適当なのを選びます.
まず, oslc で osl シェーダをコンパイル(.oso が生成される)しておきます.
その後,
$ testrender input.xml output.exr
でレンダリングが走ります. ref
にあるリファレンス画像と同じものが生成されたら成功です.
note
OpenShadingLanguage 2.0 からは OPENIMAGEIOHOME の変数名が変わっていたりするので注意です.