ほとんどでOSXやLinuxむけのものはあまり目にかかれないSmallLuxGPU。
また開発状況もいよいよLuxRender v.0.8に向けて本調子になってきたのか、ほぼ毎日
何かしらの変更が加わっているような感じです。
ここはぜひ開発版を試したり、手元の環境に最適化したビルドを作っていきたい感じ。
というわけでソースから自分でビルドできるような環境を整えてみたのでメモ。
0. まず始めに
環境を整えるといっても、結果として手元の環境が
・LuxRenderをビルドできる状態になっているという2つの条件が整っていればそれほど手間ではないかと。
・公式フォーラムからダウンロードしてきたSmallLuxGPUのバイナリが動作する
このあたりは以下の過去記事が参考になるかもしれません。
『Ubuntu10.04でLuxRenderをビルドしてみる』大抵のパッケージはMac OSXではMac Ports、Linuxではaptなどのパッケージ管理
『XcodeでLuxRenderをビルドしてみた』
『SmallLuxGPUを使ってみた。』
システムから簡単に導入できるのでそちらを利用してみるのが良さげ。
1. ソースファイルの入手
まずはSmallLuxGPUのソースをもらってきます。
LuxRender関連のプロジェクトはMercurialによるバージョン管理が行われています。
なので手元の環境がMercurialが使えるといろいろと便利だったりします。
Mercurialが使えるなら適当な作業フォルダ、例えば /home/taro/src を作成し、そこで
$ hg clone http://src.luxrender.net/luxrays/ luxrays
として、しばらくすると必要なファイルのダウンロードが完了して/home/taro/src/luxrays以下にソースファイル一式が保存されています。
開発版が更新された場合は上記のluxraysフォルダ内で
とすれば手元のソースファイルも差分が自動的に更新され最新の状態なります。$ hg pull
$ hg update
Mercurialが使えないのであれば上のURLをブラウザで開いて、ページの上の方にある
bz2 | zip | gz のリンクから都合のいい圧縮形式をえらんでダウンロード。
ソース一式が書庫ファイルに圧縮されているので展開しておきます。
開発版が更新された場合は、同じようにファイル一式をダウンロードして展開という
手順を踏まなければならないのでhgのコマンドを使う場合と比べるとちょっと面倒かも。
で、ソースファイルの入手と展開が終わったら次へ
2. CMakeLists.txtの編集
ビルドを実施するための必要な設定をCMakeLists.txtに記述しておきます。
が、ほとんどの(LinuxとMac OSXの)場合は修正は2ヶ所だけで済むはずです。
ひとつは71行目にある
/home/david/src/ati-stream-sdk-v2.1-lnx64/include
の部分。ここでOpenCL SDKのインクルードファイルの場所を指定します。デフォルトはどうやら開発者自身が使用している環境に合わせた記述になっているようです。
なので自分の環境に合わせて、OpenCL SDKのインクルードファイルの場所を指定します。
もうひとつはすぐ下の72行目にある
/home/david/src/ati-stream-sdk-v2.1-lnx64/lib/x86_64
の部分。こちらはOpenCL SDKのライブラリの場所を指定しています。こちらも自分の環境に合った場所に変更します。
以上の2点でCMakeLists.txtの編集は終了です。
3. cmakeの実行
とりあえず2までの作業が完了したらCMakeLists.txtのあるフォルダで
cmakeを実行してmakeでのビルドに必要なMakefileを出力します。
こんな感じ。
$ cmake -G "Unix Makefiles"
問題なく完了すれば、最後にBuild files have been written to: /home/taro/src/luxrays
みたいなメッセージが出力され、作業しているフォルダにMakefileができてるはず。問題がある場合はメッセージ中にnot foundやらerrorといった単語があるはずなので
足りないパッケージを適宜追加。ちなみに自分の環境で最初cmakeしたときはdoxygenと
libXmuが無いと言われました。
不足していたパッケージを追加して再度cmakeする場合には
$ rm -rf CMakeFiles CMakeCache.txt
として以前のcmake実行時に出力されたファイルやキャッシュを削除してからcmakeを実行したほうが良さげ。
無事にMakefileの出力が完了したら次へ
4. ビルドする
先ほど出力したMakefileがあるフォルダで
$ make
すればOK。CPUがマルチコアの場合はコア数に応じてmake -j2
とかmake -j4
とかするとビルドが早く済みます。
問題なくビルドが完了すれば、最後に
[100%] Built target slg
とメッセージが表示され作業フォルダ(ここでは/home/src/luxrays)にいくつかのフォルダやファイルができているはずです。それらフォルダの中で特に大切なのは
・slgをはじめとする実行ファイル ・・・ ./binとこんな感じです。
・各種サンプルシーン ・・・ ./scenes
・blender用エクスポータ ・・・ ./samples/smallluxgpu/blender
ビルドが正しく終了しなかった場合はエラーを確認してください。
必要なファイルがないとかライブラリが見つからないといった問題が多いかと思います。
CMakeLists.txtの記述を自分の環境と照らし合わせて確認してみたり、要求されている
パッケージが正しくインストールされているか等をチェックすると解決の手助けになるかと。
ビルドが完了したらテストしてみます。
5. テスト
ソースを展開した作業ディレクトリで
$ ./bin/slg -f ./scenes/luxball/luxball.scn
としてSmallLuxGPUにサンプルシーンのluxball.scnをレンダリングさせてみます。問題なければこんな感じのウインドウが表示されるかと。
以前アップしたサンプル動画もこのシーンファイルだったりします。
ここまできたら後はblender用のエクスポータをインストールするだけです。
6. エクスポータのインストール
blender向けのエクスポータは下記のファイルになります。
./samples/smallluxgpu/blender/engine_render_smallluxgpu.py
いつも通りblenderのscripts/ioにコピーすれば完了。エクスポータの使い方やblenderの設定は『SmallLuxGPUをblender2.5で使う方法』あたりを参考に。
7. おまけ
自前でビルドする環境ができたので、手元の環境に合わせて最適化ビルドを作ることも可能です。
CMakeLists.txtのコンパイラ関連オプションをいじったり、
cmake -G "Unix Makefiles"
の代わりにCC=llvm-gcc CXX=llvm-g++ cmake -G "Unix Makefiles"
とかやってみると楽しげ。この辺の話はまたそのうちに。
コメントなどありましたらこちらへ->web拍手