Blender on GPGPU 序
この記事は GPGPU Advent Calender の9日目の記事です。
昨日の ii.takuさんのLLVM meets GPU again!からの続きになります。
最初に断っておきますが私はGPGPUプログラマでもないですし、Blenderデベロッパでもないので
本記事には多分に、「嘘、大げさ、紛らわしい」を含んでいます。*1
はじめに
さて今までの記事で、OpenCL/CUDA等のGPGPU言語や
thrust等のライブラリ、LLVM等のコンパイラ等のプログラミングのお話が続きましたが
私はそんなの話せないので、少し視点を変えて
GPGPUが活用されているアプリケーション等について、
簡単に紹介っと、思いました。
Blenderについて
で、どのようなGPGPUが活用されているアプリについて紹介するかですが、
今回は3DCGアニメーション統合環境アプリケーションのBlenderについて
かるく紹介して見ようと思います。
Blenderについて詳しくしりたい方は以下を参照してください。
なんでBlenderなんですか(´・ω・`)
GPGPUが活用されているアプリ (・`ω´・ ○)だからです(終
って、簡単すぎるので何点か補足。
- OSSであるから
- GPGPUが活用されたレンダラ実装のCyclesがあるから
- cpu/cuda/openclと有りますので比較の観点からも有用と思われます
- 開発が活発であるから
- ここ最近のGoogle summer of codeで関連プロジェクトが採択されています
で、百聞は一見にしかずといいますし
以下にCyclesレンダラのデモ動画のリンクをはっておきます。
Cyclesの何が嬉しいの(´・ω・`)?
モデリングとレンダリングが同じ表示結果 (・`ω´・ ○)が嬉しいです(終
って、簡単すぎるので何点か補足。
- realtimeでレンダリング結果が見えること
- realtimeで表示できるようなったのは普通にすごいです
- といっても、他のレンダラより優れているわけでもありません
- 途中経過でもある程度の表示になるアルゴリズムであるだけです
- モデリング/レンダリングのサイクルを小さく回せること
って、なんかDisってるような文面になりましたが
まあ有用なレンダラであることは間違いありません。
C言語のコンパイルで最後に文法エラーとか吐かれていたのが
エディタの裏で文法チェックとかしてくれたら嬉しい^^ですよね!、ね!!
そんか感じです><
ソースコード取得
上記デモでCyclesの実装がどうなってんだろうと、興味がわいてきましたね?
なんとソースコードが取得できます。*2
ソースコード取得は簡単で、お手持ちのsvnでcoして見ましょう。
cd ~ mkdir blender-svn cd blender-svn svn co https://svn.blender.org/svnroot/bf-blender/trunk/blender
まずは簡単にフォルダ構成を見てみましょう。
一覧は以下の感じです。
$ tree -d -L 2 . ├── build_files │ ├── build_environment │ ├── buildbot │ ├── cmake │ ├── package_spec │ └── scons ├── doc │ ├── blender_file_format │ ├── build_systems │ ├── doxygen │ ├── guides │ ├── license │ ├── manpage │ └── python_api ├── extern │ ├── Eigen3 │ ├── binreloc │ ├── bullet2 │ ├── carve │ ├── colamd │ ├── glew │ ├── libmv │ ├── libopenjpeg │ ├── libredcode │ ├── lzma │ ├── lzo │ ├── recastnavigation │ └── xdnd ├── intern │ ├── audaspace │ ├── boolop │ ├── bsp │ ├── container │ ├── cycles │ ├── dualcon │ ├── elbeem │ ├── ffmpeg │ ├── ghost │ ├── guardedalloc │ ├── iksolver │ ├── itasc │ ├── locale │ ├── memutil │ ├── mikktspace │ ├── moto │ ├── opencolorio │ ├── opennl │ ├── raskter │ ├── smoke │ ├── string │ ├── tools │ └── utfconv ├── release │ ├── bin │ ├── darwin │ ├── datafiles │ ├── freedesktop │ ├── scripts │ ├── text │ └── windows ├── scons │ └── scons-local-1.2.0.d20090223 └── source ├── blender ├── blenderplayer ├── creator ├── gameengine ├── icons ├── tests └── tools 70 directories
Cycles関連は./intern/cyclesに
Blender本体関連は./source/blenderに配置されています。
まとめ
というわけで、Blender/Cyclesについての簡単な紹介と
コード全体の俯瞰を行いました。
紹介ということで軽く流しましたが、
いざ上記コードをbuildしようとすると結構依存関係が有りますので
build環境を整えるのも一苦労*3だったりします。
詳しくは、こちらのBlender developmentのページ等を参照してみてください。
次回*4は、Cyclesの内部実装をみてみましょうか。