だんだんとタイトルから離れていってますが、DAZ StudioのIrayレンダラーを使った時のメモリ使用量とレンダリング時間について、今回も調査を続けていきます。
■テクスチャ圧縮の効果Irayレンダラーではテクスチャ画像を圧縮してメモリ使用量を削減する仕組みが組み込まれていて、初期設定ではほとんど全てのテクスチャ画像が圧縮されるようになっています。
その圧縮によるメモリ使用量の削減と、レンダリング画像に及ぼす影響を調査してみました。
DAZで販売されている商品(特にフィギュア)に使われているテクスチャ画像のサイズは一辺4000ピクセルまたは4096ピクセルの正方形が一般的です。
Irayレンダラーの設定(Render SettingsタブのAdvancedページ)ではMedium Compression(中圧縮)、High Compression(高圧縮)の2種類の圧縮レベルがあり、それぞれの閾値は初期設定ではそれぞれ512ピクセル、1024ピクセルとなっています(数値より一辺が大きいサイズのテクスチャ画像が圧縮の対象になります)。

まずはメモリ使用量とレンダリング時間について見てみましょう。
裸のフィギュア(使用されているテクスチャは2048*2048ピクセルが5枚、4096*4096ピクセルが9枚です)をレンダリングした場合次のようになりました。
| メインメモリ | ビデオメモリ | レンダリング時間 |
高圧縮 | 1523MB | 1363MB | 11分2秒 |
中圧縮 | 1552MB | 1382MB | 10分57秒 |
無圧縮 | 1934MB | 1745MB | 10分42秒 |
無圧縮の状態だとかなりの量のメモリがテクスチャに使われていることがわかります。圧縮によるメモリ使用量の削減効果はかなり大きいですね。レンダリング時間は圧縮にかかる時間なのでしょうか、無圧縮と比べて十数秒の差が出ます。
「iray dev blog」によると、メモリ使用量は中圧縮で32%、高圧縮で29%まで下がり、テクスチャサイズを縮小するよりも画質の劣化が抑えられるとあります。
続いてはレンダリング画像に圧縮による画質の劣化は判別できるかどうかです。
※画像のクリックで元のサイズで表示します。圧縮による画質の劣化が現れやすい赤色の服の部分は、結構劣化しているのがわかります。肌も含めそれ以外は差がわかりません。
無圧縮だとメモリ使用量がかなり多いので、
High Compressionを4096に上げておいて中圧縮が適用されるようにしておくのが良いのではないでしょうか。
■Rendering Qualityの設定Render SettingsタブのProgressive RenderingグループにRendering Qualityという項目があります。どういう効果があるかわからないため初期設定のまま使っている方も多いと思いますが、この機会にそこにもメスを入れてみました。

・Min Samples | レンダリングする最小サンプル数です。 |
・Max Samples | レンダリングする最大サンプル数です。 |
・Rendering Quality Enable | オンにするとレンダリングするサンプル数をRendering QualityとRendering Coverged Ratioの数値から求めます。Photorealモードで有効です。 |
・Rendering Quality | ピクセル単位でのレンダリングの目標品質です。高いほど高品質になります。 |
・Rendering Converged Ratio | イメージ全体のうち収束した(最終的な色が決定した?)ピクセルの目標割合です。 |
Irayレンダリングは「Max Samples」(品質基準)または「Max Time (secs)」(時間基準)のどちらかに達すると終了するとご紹介してきました。この項目の設定は、そのうちの品質基準に関わるものです。
●レンダリング進捗ウィンドウの表示Photorealモードでのレンダリング中の進捗ウィンドウ(レンダリングウィンドウの裏に隠れています)を見ると、次のようなログが流れていきます。

「Iray Iteration: ~」がサンプル数(Iteration:反復数)で、「Iray: ~% of image converged」というのが収束率(Rendering Converged Ratio)であると思われます。
ちなみにプログレスバーはRendering QualityがオンのときはRendering Converged Ratioの設定値のうちその時点の収束率の割合が、オフのとき(またはInteractiveモードのとき)はMax Samplesに対するその時点のIterationの割合が反映されているようです。
●Quality、RatioとIterationの関係単純なシーンでの
Rendering QualityとRendering Converged Ratioの設定値に対するレンダリング終了時のIterationの数値(シーンによってこれは大きく変わります)を表にしてみました。
Max Samples 1000の場合
Quality | Ratio | Iteration |
0.5 | 95% | 364 |
1.0 | 95% | 674 |
2.0 | 95% | 1000 |
Max Samples 5000の場合
Quality | Ratio | Iteration |
0.5 | 95% | 364 |
1.0 | 95% | 674 |
2.0 | 95% | 1281 |
Rendering Quality EnableがOnのとき、IrayレンダラーはRendering QualityとRendering Converged Ratioの設定値から目標とするレンダリング品質(Convergence quality estimate:収束品質見積)を決めます。
レンダリングはIterationの増加とともに進んでいき、
目標品質に達した時、またはIterationがMax Samplesに達した時にレンダリングは終了します。Rendering Quality EnableがOffのときは、IterationがMax Samplesに達した時にレンダリングは終了します。
また、
Interactiveモードのときも、IterationがMax Samplesに達した時にレンダリングは終了します。
上の表ではRendering Qualityが2.0のとき、Max Samples 5000の場合はレンダリング終了時のIterationは1281ですが、Max Samples 1000の場合はIteration 1000で上限に達したためレンダリングが終了しています。
●レンダリングの品質を上げるには?そのためレンダリング品質を上げたいときは
「Max Samples」の数値を増やすと同時に、「Rendering Quality」の数値も増やすかRendering Quality EnableをOffにするかのどちらかをする必要があります。
■レンダリングサイズでの比較私はだいたいPC画面に納まるサイズでレンダリングをするのですが、この機会にレンダリングサイズによるメモリ使用量とレンダリング時間の関係も調査してみました。
今回使用したシーンはこちら。

Character: | Ember |
---|
Hair: | Toulouse Genesis 2 Female (Genesis 2 Female Starter Essentials) |
---|
Costume: | Ladybug Outfit for Genesis 2 Female(s) , Trendy Accessories , Jewelry Box-Elani Collection , Star Of Mikaella |
---|
Skin: | Fusion Skin Textures for Callie 6 , Beautiful Skin Iray Genesis 3 Female(s) |
---|
屋内照明を想定して、IBL(ライトのみ焼き付けたもの)とシーンライトでライティングしました。スキンシェーダーはGenesis3F用ものがプロモ画像を見て良さそうだったので、SurfacesタブでGenesis2Fに移植しました。
以下がそれぞれのレンダリング画像サイズでのメモリ使用量とレンダリング時間です。
画像サイズ | メインメモリ | ビデオメモリ | レンダリング時間 |
300*400ピクセル | 2500MB | 1675MB | 1分43秒 |
600*800ピクセル | 2596MB | 1685MB | 5分8秒 |
1200*1600ピクセル | 2717MB | 1713MB | 18分15秒 |
2400*3200ピクセル | 3120MB | 1823MB | 1時間9分39秒 |
2400*3200ピクセルのような大サイズでレンダリングする場合を除けば、そんなに気にするほどにはメモリ使用量は増加していませんね。メインメモリもビデオメモリも両方使うのは注意すべき点ですが。
レンダリングの終了条件となる品質基準はピクセル当たりのサンプル数ですので、レンダリング時間は面積に比例すると単純には考えられますが、それよりは早く終了しているようです。
今回の素材はこちら