2011年5月18日水曜日

CUDA対応cyclesなblenderのビルドとちょっとしたベンチ

いろいろ迷いつつどうにかCUDAなCyclesをビルドできるようになったのでメモ。
ついでにCPUとGPUを比較するためのちょっとしたベンチも。


・使用したOSとハードウェア構成

OS:Ubuntu10.04LTS 64bit
CPU:PhenomII X6 1055T
チップセット:785G
GPU:Quadro600

GPUはCUDA対応のものを。ここ2・3年のnvidiaのGPUであれば多分大丈夫。
以下は手元のUbuntuなPCで行った手順を記載していますが、おそらくOSXや、
WindowsのCygwinやMinGWでも同様の流れでできるかと。試してませんが・・。



・CUDA環境の準備

まずはCUDA対応のGPUドライバとSDK、ツールキット等の開発環境の準備。
nvidiaのホームページからダウンロードしてインストール。
ドライバはv270系、SDK・ツールキットはv4.0を選択。

今回使用したのは下記のバージョン。
ドライバ:270.40
SDKとツールキット:ver4.0.13

以上のものがインストールできたら、自分のGPUが対応するCUDAのシェーダーモデルの
バージョンを調べておくとあとで少しばかり楽ができる。
CUDA SDKのサンプルに含まれているdeviceQueryやdeviceQueryDrvを実行して
確認してもOK。



・ビルドの手順

事前にインストールしておくライブラリやビルドの手順はblender.orgの公式Wikiを参考にしていけば
基本的にOK。ただし、Ubuntu10.04ではデフォルトでインストールされるboostのバージョンが
1.40と古いためエラーが出てビルドが通らず・・・それに気づくまでかなり嵌りました。

というわけでより新しいバージョンをソースからビルドしてもいいのですが、ppaでboost1.42が
提供されているのでそれを利用させていただく感じで。

$ sudo add-apt-repository ppa:lucid-bleed/ppa
$ sudo apt-get update


としてaptリポジトリに追加したら、aptitudeでいつものようにインストールすればOK。

あとはOpenImageIOとcyclesなblenderのソースをそれぞれダウンロードしてビルド。
この辺は先ほどの公式wikiに記載のとおり。

CUDA対応でビルドする場合のcmakeのオプションは手元の環境だとこんな感じ。

$ cmake ../blender
-DCMAKE_BUILD_TYPE=Release
-DCYCLES_OIIO=../oiio/dist/linux64
-DCMAKE_EXE_LINKER_FLAGS=-lGLEW
-DCMAKE_EXE_LINKER_FLAGS_RELEASE=-lGLEW
-DWITH_CYCLES_CUDA=ON
-DCUDA_INCLUDES=/usr/local/cuda/include
-DCUDA_LIBRARIES=/usr/local/cuda/lib64


CPUなどのスペックによってはcubinのビルドに時間がかかるので、始めに調べておいた
自分のGPUが対応しているシェーダーモデルのバージョンだけビルドしてもOK。

でcmakeが終わったら、あとはmake、make installすれば完成。



・実行

無事にビルドがエラー無く済んだら
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:../oiio/dist/linux64/lib
という感じにライブラリのパスを設定して
$ ./bin/blender
で起動。

いつものblenderが起動したらレンダラを"Blender Render"から"Cycles"に変更して、
プロパティウィンドウの"Render"タブに以下のようなレンダリングデバイスを選択する項目が
表示されているか確認




上の図のようにCPUとGPUが選べるようになっていればCUDAに対応したCyclesが
正しくビルドされてblenderから利用できる状態になっている。

ちなみに何か問題があってうまく行ってないと下の図のような感じ。




ここまで無事に完了したら先程のライブラリパスの設定を
~/.bashrcに書いたり、起動用のシェルスクリプトを作成しておくとよさげ。



・CPUとGPUでベンチ

で、せっかくビルドが完成したのでGPUでのレンダがどれだけ早いかちょっとテスト。
下図のデフォルトのシーンをパス256、解像度1280x720に設定してCPUとGPUでレンダ



その結果、およそCPUで2分だったものがGPUで1分30秒という具合に。
解像度やシーンを替えてレンダしてみましたが、やはり平均で25%ほどGPUの方が早い感じです。

ところで、今回使用したGPUのQuadro600のGPUコアはGF108相当。
GeforceでいえばGT430相当のローエンドなスペックです。
それでもドライバの最適化等によりOpenGLアプリでディスプレイデバイスとしての
利用であればGeforceのハイエンドモデル以上(Nvidiaの発表によればGTX580以上)の
フレームレートが出るというのが面白いところ。

しかし、CUDAやOpenCLなどGPGPU用途での演算能力としてはコアが持っているシェーダー数と
動作クロックに準じたものとなり、コアが同等なGeforceローエンド相当の性能しかでません。
ひとつ上のQuadro2000でもコアはGF106相当なのでミドルレンジのGeforce GTS450程度です。

そんなGPUでもこれだけの差が付くのであれば、安価に購入できるミドルレンジのGeforceを
GPGPU用に追加するというのもよさそうです。GTS450の2倍のシェーダーを備えるGTX560Tiでも
20k円なのでCyclesだけでなくLuxRender等でのレンダも考えるとコストパフォーマンスの点で
かなり魅力的です。


Cycles自体もまだ開発の初期なので、これから効率が改善されていく可能性も十分にあります。
また現状インテグレータはパストレーサーのみですが、それ以外のアルゴリズムを実装する
予定もあるそうなのでそれによってもレンダリングの高速化が期待できるかと思います。

ただ、Cyclesのプロジェクトの予定としては今後1〜2年の間に既存のblender内蔵レンダラを
置き換えられるものにするのが目標とのことなので、しばらく気長に追いかけてくのがよさそうです。



---------------------------------------------------------------
コメントなどありましたらこちらへ->web拍手

2011年5月17日火曜日

Face Bone Toolを使ってみた

前回製作中だったやつ一応完成。レンダリングはいつもどおりblender2.57系Freestyle統合版。



最初は男性素体つくろうかなっていうのと、モーション練習用になんかキャラクタデータ欲しいなと思い
作り始めたもの。ただ作ってくうちにのっぺらぼうはつまらないので顔つくって、せっかくだから髪も・・
という具合になっていってこんな感じに。

今までは口を作るのが苦手でテクスチャで済ませていたけれど今回とりあえずモデリングできた。
時間もこれくらいなら以前に比べるとそれほどかけずにできるようになってきたのもよさげ。


で、せっかくなので顔の表情をつけてみたくなったのでFace Bone Toolを試してみたり。
2.56で動作するらしいけど、2.57ではどうだろう?と思いつつ試してみたらたまにエラーが出たりする。
けれどめげずにしばらくいじってたらこんな感じにボーンとウェイトのセットアップが自動で完了してた。



とりあえずちょっと表情をいじってみた。



おもしろい。これがボタン数回押すだけでセットアップ完了するなんてありがたすぎます。
ちゃんと位置やサイズの調整をすれば適切な場所にボーンが追加できそうなので調べていく感じで。


---------------------------------------------------------------
コメントなどありましたらこちらへ->web拍手

2011年5月12日木曜日

4月に作ったものとか5月に作る(予定の)ものなど

最近作ってたくろいこはぎりぎり4月中に完成してこんな感じ。



CG-SNSに投稿したのは眼鏡とゴルフクラブ装備のほむら(弱)バージョンだけど
改めて見るとこっちもなかなか。どちらも捨てがたい。


GW中はblenderが2.57に移行したのに伴いFreestyle統合版も2.57系になったので、
まとめサイトのチュートリアルの方もそちらに準拠するかたちで更新。
Python Scripting Modeについての簡単な解説も追加。


で、そのあとに作り始めたのは今こんな感じ。



パキっとしたいかにもトゥーンシェーダーってのはまだ作ってなかった気がするので
そんな感じで。あと男キャラの素体も作ったことなかったのでそんな感じで。

---------------------------------------------------------------
コメントなどありましたらこちらへ->web拍手