無料なのに、ものすごい機能のBlender。機能が有りすぎて使いこなすのは大変。
無計画にオブジェクトを作成していると、レンダリング時間はどうしても延びてしまう。Cyclesレンダーは特に。
そこで、レンダリング時間を少しでも短縮したいときのテクニック・・・というか、いじくりまわして気づいた設定のコツなど。
※短縮するとクオリティは落ちる。どの辺でバランスを取るかという話。なお、間違っていることや見当違いな事を言っているかもしれないから、鵜呑みにしてはいけない。公式サイトのドキュメント(英語版)熟読を推奨。
※RADEON RX570 8GBを購入してみたので追記
※※Blender Ver2.80bataがリリースされたので追記
はじめに
Cyclesレンダラーの設定方法は、公式ドキュメントのここらへんにある
※本件は2015年~の状況であり、
Blender3.0 で進化したCyclesをプチ検証 買うべきグラボを検討も参照のこと(デノイザーで全て解決できるレベル)。
動作環境
環境や常駐ソフトなどでレンダリング速度は変動する、参考まで。
- Blender Ver2.79b 日本語化環境
- Cyclesレンダリングエンジン
- GeForce GTX 750 Ti CUDA利用
- Intel core i7 3770
- DDR3-1600 32GB
- windows 10
構成が少し古いが、現時点(2015)のミドルレンジマシンより速い。
テスト用ファイル
公式デモファイルのページにあるBlender 2.74のスプラッシュ「Fishy Cat」を利用。CC0 by Manu Jarvinen (manujarvinen.com)。
パーティクルで表現された大量のもふもふがキュートでクッソ重い。
初期状態のレンダリング時間は約57秒(倍率200%)。これでは少々大きい(重い)ため、以下のように設定を変更する。
- 等倍(100%)
- コンポジットノードを削除(レンダー出力のみ)
この設定をベースとし、各種パラメータを調整した。
501×230(等倍)CPUレンダリングで約19秒
PCの設定関連(重要)
お約束だが、Blenderをいじくる前に確認すべき事項。
- 常駐ソフトを切る
- オーバークロックをしない
- 他のソフトを立ち上げない
- CPUの冷却がしっかりできているか確認(ほこりのつまり等)
- マシンスペックを上げるのは最終手段(注意)
GPGPU(CUDAかOpenCL)を利用する場合はグラボ増設必須。
CUDAは2.0~6.1(概要は英語版wikipedia等を参照) 必須。OpenCLはGCN architecture 2.0(同じく英語版参照)以上必須(現時点)。
個人的にはGeForce推奨。この業界は公式含め、日本語の情報サイトがあまりにも役に立たないため注意(特にAMD)。
なお、連続して超高負荷がかかるため、安易なグラボ増設は電源容量不足を引き起こす。
スリム筐体のPCは冷却が追いつかないため、諦めて買い換えよう(GTX 1050 Tiでさえ75Wの2SLOT占有)。エントリーからミドルロークラスのグラボを採用する意味は全く無い(詳しくは次項で)。
※追記 2017~2018年だと、消費電力の観点からGeForce GTX 1050 Tiあたりのコスパが高い。というより、その辺の採用が最低ライン。対応状況などの詳細はblender公式サイトも参照。
タイルサイズ(マルチコアCPU VS GPU)
CPUコア数が増えるほど、タイルを分割(処理を分散)した方が処理が速くなる。でも、GPUは逆。
そのため、GPU利用時はタイルサイズを大きく(タイル数削減)、CPU利用時は小さく(タイル数増加)した方が有利。ただし、極端なサイズに設定するとエラーになる・・・が、ならない時もある(特定verのドライバが怪しい)。
このファイル(Fishy Cat)のデフォルト設定は、タイルサイズ32×32。
i7 3770+GTX 750 Tiの場合、単にGPUに切り替えただけでは逆にレンダリング時間は伸びてしまった(約19秒→44秒)。
出力サイズがカバー(分割無し)できる、512×512へ変更すると約19.5秒(CPU利用時とほぼ同じ)になった。
このことから、
「i7 3770 ≒ GTX 750 Ti」
この式が成り立つらしい(あくまで、Blender + Fishy Cat の場合)。
前述したGTX 1050 Tiの処理速度は、単純計算するとGTX 750 Tiの1.5~1.6倍程度らしい。
すると概ね「i7 8700 ≒ GTX 1050 Ti」の式が成立すると思われる。
その上のXeon、Ryzen ThreadripperやQuadroの価格を考えると、i3以下利用のBlender使いにはGTX 1050 Tiのコスパは極めて高い・・・と思う、持ってないから断言はできないが。
ということで・・・
- タイルサイズは512×512に変更
した。
特記なき場合、この条件を追加して計測する。
ミドルハイレンジGPUよりハイレンジCPUの方が若干速いようだ
※追記 RADEON RX570(OpenCL)
RADEON RX570 8GBを購入。グラボ以外は全て同じ構成。
約90%へ短縮・・・あんまり速くならない!!
初回起動時のカーネル構築も遅いので、やっぱりCUDA(Nvidiaのグラボ、同クラスだとGTX1650の補助電源なしタイプ)推奨。
それか、何か設定を間違っているのだろうか・・・
レンダーコンテキスト
この「レンダーコンテキスト」の設定による影響は大きい。というかメイン。
※「プロパティウインドウのヘッダーにあるコンテキスト ボタン」と公式では呼んでいる模様(レンダーコンテキストボタン=カメラマークのボタン)。
これ
※「推奨値」はあくまで管理人の推奨値であり。オブジェクトの性質やマシン環境によって変わる。
寸法パネル
サイズが大きければ重くなる(当たり前)。
解像度
高解像度でレンダリングしたものを縮小した方が品質は高い傾向にあるような印象。
200%化(Fishy Catデフォルト設定)
→約45秒
200%→レンダー後に50%縮小
解像度2倍でピクセル数は4倍増のはずだが、正比例しないようだ。
※追記 RADEON RX570(OpenCL)
約70%へ短縮。重くなるほど差が出るようだ
※※追記 Blender Ver2.80bata+RADEON RX570
約50%へ短縮。2.80ヤバイくらい速くなってる
・・・ただし、2.80で保存すると、ファイルの互換性が無くなるようなので注意。というより、変わり過ぎて別のソフトになった感じが。
サンプリングパネル
パストレーシングと分散パストレーシングが選べる。
Fishy Catデフォルトでは、パストレーシングはサンプル数30、分散パストレーシングはAA4,1,1,1,1,1,1,1に設定されている(たぶん作者は分散パストレーシングを使っていない)。
二重サンプル(共通)
ONにすると、計算量激増、画質大幅アップ。推奨値「OFF」
ON化→約258秒
透明感がまるで違うが、解像度2倍からの縮小で良いと思う
直接値/間接値を制限(共通)
ノイズ低減用。計算量の変化はあまり無い。推奨値0.1~3。
0だとプチノイズが出やすい
光のサンプリングしきい値
ノイズ低減用らしいが効果は良くわからなかった(該当機能を使ってない?)。推奨値0(無制限)。
パターン(共通)
ノイズパターンが変わる、品質と速度は大きく変わらないのでどちらでも可。格子状パターンとかのモアレ対策用か?
分散パストレーシング固有の設定項目
パストレーシングよりクイック?だがノイズ多い。数値を上げ過ぎるとblenderが落ちやすい。
このファイルのデフォルト(AA4,on,on,1,1,1,1,1,1,1)
AAサンプル の数値
比例して計算量増加、品質上昇。1上げると5~6%くらい増えるようだ。上げすぎるとメモリが足りなくなる。推奨値「2~6」
+12(AA16,on,on,1,1,1,1,1,1,1)
全直接光源のサンプル
やや速度に影響。スイッチングによる品質変化はあまりなかった。推奨値「OFF」
ぱっと見、違い解らず(AA4,off,on,1,1,1,1,1,1,1)
全間接光源のサンプル
15%くらい速度に影響する。この猫?はそうでもないけど、反射部の品質上昇幅が大きいと思う。推奨値「OFF」
全体的に色が薄くなってる?(AA4,off,off,1,1,1,1,1,1,1)
サンプル の各数値
公式によると、AAの数値の乗数になってるらしい(The Sampling panel shows this total number of samples. というのが良く解らんけど)。
少し上げただけで計算量が爆増するため、blenderが非常に落ちやすい。
でもなぜか影響は軽微なため、全て推奨値は「1」。3以上は危険。今回、3回も落ちた。そして、再起動を繰り返していたらノイズパターンがなぜか変わってしまった。
サンプリングパネルのまとめ
特殊なシーン以外、パストレーシングを使った方が良さげ。設定もしやすい。Fishy Catデフォルト設定が最適なのかもしれない。さすがだ公式スプラッシュ。
分散パストレーシングを使うとすればプレビューくらいか。
倍率2倍、設定0,3,3,0、AAサンプル4,off,off、サンプル1,1,1,1,1,1,1。からの縮小がそこそこ速くて便利かも。
こうなる
ジオメトリパネル
特定の機能を使う場合に影響が出やすい模様。
ボリュームサンプリングの数値
ボリュームレンダリング機能(特定のシェーダ)を利用しなければ影響はないようだ。
ステップサイズ
Fishy Catは影響なし。推奨値「0.1」Blenderデフォルト
最大ステップ
Fishy Catは影響なし。推奨値「1024」Blenderデフォルト
ヘアーを使用
ヘアーは大幅に計算量が増える。
ただしこれはレンダリング速度が云々以前の、表現方法の問題であり、個々人が納得するレベルに設定するしかない。
計算量はヘアーの本数による影響が大きい。
これではモフれない
ライトパスパネル
ライト(というかRAY?)の設定。いじると影や透過に影響が出る。
透明度
Fishy Catは影響が少ない。半透明やガラスの先に光源を置くと変化が大きい印象。
最大
計算量の増加量は4以上だと微増、8以下は品質が低くなりやすい。増やしすぎても変化は少ない。推奨値「10前後」
最少
+1あたり計算量20%~増えるときもある、。0~2の品質差が大きく、3~4は軽微。推奨値「3以上」
影
ON必須。OFFは通常不可(影が無くなると不自然)
反射/屈折コースティクス
ONにすると計算量増、ノイズ増。使うシーン不明。推奨値「OFF」
光沢フィルタ
コースティクスオンの場合は必須? 推奨値「0」
バウンス
最大最少値を決め、個別に4項目を調整するスタイル
最大
0で計算量大幅削減可能。しかし、反射や透過が一切無くなる。その代わりノイズは出ない。
最少
計算量品質共に変化わからず
反射部分の違和感が増大しない程度に最少で調整するのが良い。推奨値「1以上」。なお、ライト側のバウンスの値も影響する模様。
バウンス0。なんか怖い、暗黒面に落ちたか
バウンス1、やや黒っぽいが許容範囲
パフォーマンスパネル
PC環境(ハード)に依存する項目。
タイル
最初に述べたとおり、最終出力に影響が無い設定の中では、最も速度変化が大きい。
原則として大きい方が早いようだ(分割の演算の関係か?)。ただし、極端な値をとるとエラーで落ちる(おらくメモリ不足)。
最大512ピクセル又は256分割程度までが無難。
多スレッド環境の場合、細長くすると数%速くなる時がある。端部分が各コア間のバッファ(時間軸の)のようになる(左右端まで複雑なオブジェクトが映る場合を除く)。
ビューポート
ケースバイケース。
開始解像度
下げておくと3Dビューのシェーディングを「レンダー」にした時、フリーズしにくくなるようだ(メモリ不足っぽい時に起こる)。
スレッド
自動検知が基本だが、サブのBulldozer の Opteron マシンは増減させると変化が大きい時があった(OSの対応が怪しい)。
その他
AO(アンビエントオクルージョン)やSSS(サブサーフェイススキャタリング)は、めちゃくちゃ重い。遊び用途の家庭用マシンでは耐えられない。
使わない方が無難(2010年代では完全に玄人用)。
まとめ
Fishy Catの設定はよく練られており参考になる。さすが公式。
2.75以降のスプラッシュは重すぎて、家庭用PCではキツイ。ミドル+αレベルのマシンの人は、2.74の時代くらいが参考にするには最適(2.74は2015年3月リリース、GTX750Tiは2014年2月の発売当時1.8万、i7 3770は3万くらいだったと記憶)。
追記
なおこのマシンは、2019年に退役しサブへ。
屈折コーティクスはガラスとかで使うときがあります。オフにすると時々屋外から室内を見るとき真っ黒になることがあるので。
コメント気づきませんでした・・・
>ガラス
ですね。シーン毎に、いらない(影響が少ない)パラメータを探すのが速度アップのキモなんじゃないかと思います。
なかなか難しいですが・・・