PCスペック比較-Blenderのレンダリング時間


ATL客員研究員のUUUPAと申します。ATLショーケースに掲載いただいているBlenderの習作、本記事ではBlenderでのCyclesレンダーにかかるレンダリング時間について書かせていただきます。ATLにあるハイスペックなPCでどれだけレンダリング時間が高速・短縮できるかの調査となります。
ATL環境含め、私が利用できる以下の3台のマシンにて、BlenderのCyclesレンダリング時間を計測して比較しました。


マシン紹介

1台目:ATLのPC
ATLに置かれている「トップクラスマシン」を使用。VR開発を主目的としたPCということもあり、GPU2枚刺しではありませんが、とはいえGTX1080の威力を拝見してみましょう!10Coreというのも凄い!

  • OS:Windows10 Pro
  • CPU:Intel Core i7-6950X [3GHz/10Core]
  • GPU:GeForce GTX1080
  • Memory:64GB

2台目:自宅PC
ハイスペックなATLのPCの使用感に感動して、今年2017年の8月にBTOマシンを20万円で購入。我ながらそこそこいいスペックのマシンを買ったつもりです。

  • OS:Windows10 Home
  • CPU:Intel Core i7-7700 [3.60GHz/4Core] Kabylake
  • GPU:GeForce GTX1070 8GB
  • Memory:16GB

3台目:MBP2013
2013年より使っているMacです。独立GPUではないためCPUレンダリングしかできません。Blenderや主要3DCGソフトはWindowsが主流という風潮ですが、一応テストしてみました。

  • OS:macOS(Sierra)
  • CPU:Intel Core i5 [2.6GHz/2Core]
  • GPU:Intel Iris 1536 MB(CPU内蔵GPU)
  • Memory:8GB 1600MHz DDR3

レンダリングに使用したデータ

ATLショーケースで作った林檎に蜂蜜をかける動画の、ある1フレームを静止画としてレンダリングします。

画像をクリックすると原寸で表示されます。はちみつの境界が少しギザついているのはレンダリング品質起因ではなく、流体(Fluid)品質の設定によるものですので無視してください。

Blenderでの設定は以下の通り:

Cyclesレンダーを使用

解像度は1920×1080(FullHD)※以降の設定はすべてレンダーパネル(カメラアイコン)内の設定項目となります
Device設定は、CPUレンダリングと、GPUレンダリング(GPU Compute)の両方をテスト

上の画像のように、Blenderでは独立GPUを搭載したマシンの場合、GPUを使ってレンダリングすることができます。この機能を使うには、File > User Preferences > Systemタブを開き、下の画像のように”Cycles Compute Device”をCUDAに設定しGPUが表示されているように設定しておきます。

サンプリング数は300

「Samples」はレンダリング品質に関わります。今回は300で。
※数値が多いほど画質は上がりますが、それに比例してレンダリング時間も増大します。とはいえ画質としては1000と2000はそれほど変わらないと言われています。

Tiles設定は32pxと256pxの2パターンの設定で計測

「Tiles」という設定項目は聞き慣れないかもしれませんが、Blenderではレンダリングする時に決められたサイズのグリッド領域ごとにレンダリングしていきます。Tilesではそのグリッドの大きさを設定できます。今回の検証でTilesに注目しているのは、実は事前にBlenderGuruのビデオにて、CPUレンダリングはTilesを小さく、GPUレンダリングではTilesを大きくするほうがレンダリング時間が速くなるという情報を知っていたためです。

TilesのX,Yを256に設定した場合、256pxのグリッドごとにレンダリングされていきます

TilesのX,Yを32に設定。細かくレンダリングされていきます

結果(レンダリング時間)

  1. ATLのPC(CPU/Tile:256):5分04秒
  2. ATLのPC(CPU/Tile:32):3分25秒
  3. ATLのPC(GPU/Tile:256):2分47秒
  4. ATLのPC(GPU/Tile:32):20分40秒
  5. 自宅PC(CPU/Tile:256):8分32秒
  6. 自宅PC(CPU/Tile:32):7分19秒
  7. 自宅PC(GPU/Tile:256):2分51秒
  8. 自宅PC(GPU/Tile:512):2分49秒(※参考)
  9. 自宅PC(GPU/Tile:32):20分50秒
  10. MBP2013(CPU/Tile:256):24分21秒
  11. MBP2013(CPU/Tile:32):21分23秒

わかったこと

  • 同じCore i7でも、10Coreと4CoreでCPUレンダリングの差は如実に表れる(2,6)
  • CPUレンダリングよりもGPUレンダリングの方が高速(2,3や6,7)
  • CPUレンダリングではTilesを小さな値にしたほうが高速(1,2や5,6)
  • GPUレンダリングではTilesを大きな値にしたほうが圧倒的に高速(2,3や7,8,9)
  • GPUレンダリングでGTX1070とGTX1080ではそれほど差はない(3,7)
  • 2013年のMacbookProではけた違いに遅い(10,11)

どうせATLPCのGPUレンダリングが爆速なんだろうと思っていたら、意外にGTX1070と1080で差がなかったことに驚きました。10CoreCPUがなかなか高速だけど、それでもGPUレンダリングの方が早いですね。


まとめ

・GPUレンダリングが使える環境であれば積極的に試すと良い
・CPUレンダリングの時はTiles分割数を小さな値(8×8〜64×64)に、GPUレンダリングの時はTilesを大きな値(128×128〜512×512)に設定する。特にGPUはTilesが小さすぎるとレンダリング速度がかなり遅くなります。BlenderのTiles設定の初期値は64なので、GPUレンダリングを使う時は値を変更することを覚えておいたほうがよさそうです。

レンダリング画像1枚あたり、設定や環境次第でこれだけ時間の差が発生します。連番の静止画や動画となるとさらにその差は大きく、無視できないものになります。
Blenderを始めたばかりの方でも、上の2点に気を付けるだけで相当レンダリング時間が変わるかと思いますのでご参考いただければ幸いです。