volume render optimization

ここでは、ボリュームを Mantra でレンダリングする際の最適化について紹介する。

使用したビルド: Houdini 16.0.468

シーン構成

今回のレンダリングシーンは以下の要素によって構成されている

  • 別シーンファイルでシミュレーションされ Alembicで出力されたボリュームキャッシュ。9回複製して(計10個) マージされている。
  • ボリュームが影を落とす地面
  • 環境光 x1 と前面からのポイントライト x1 の計2つのライト
  • カメラ
  • レンダリングの設定をしている Mantra

ボリュームジオメトリ提供: 小松 泰氏

1 元画像 レンダリング時間 56分55秒
Mantra ROP ライト
Render Engine Pixel Samples Ray Variance Anti-Aliasing (RVAA) Stochastic Samples Lights' Sampling Quality
Ray Tracing 3x3 On 4 1
ほぼデフォルトの元の設定。57分のレンダリングは非常に遅い。

2 Mantra ROP の Rendering タブ以下の Sampling タブにある RVAA をオフにする レンダリング時間 10分41秒 (19%)
Mantra ROP ライト
Render Engine Pixel Samples RVAA Stochastic Samples Lights' Sampling Quality
Ray Tracing 3x3 OFF 4 1
RVAAをオフにしたことでレンダリング時間は元の約1/5。しかしながら、画像下の方の暗い部分を中心にノイズが多くなった。

3 Pixel Samples を 1x1 に レンダリング時間 1分20秒 (2%)
Mantra ROP ライト
Render Engine Pixel Samples RVAA Stochastic Samples Lights' Sampling Quality
Ray Tracing 1x1 OFF 4 1
ピクセルサンプルを 1x1 にしてみると、レンダリングは1分ちょっとで終わるが、予想通り、ノイズが全体にかかる。

4 ライトの Sample Quality を 4 に レンダリング時間 04分19秒 (8%)
Mantra ROP ライト
Render Engine Pixel Samples RVAA Stochastic Samples Lights' Sampling Quality
Ray Tracing 1x1 OFF 4 4
ピクセルサンプルの値をそのままにライト (2つあり) のサンプル精度をどちらも 4 にする。これにより、ノイズは一つ前 (#3) よりも減るが、#2 よりきれいにはならない。それでもレンダリング時間は元画像の8%。

5 Ray Racing to PBR レンダリング時間 04分26秒 (8%)
Mantra ROP ライト
Render Engine Pixel Samples RVAA Stochastic Samples Lights' Sampling Quality
PBR 1x1 OFF 4 4
Render Engine を Ray Racing から PBR に変更。かかる時間も画質もほぼまったく変わらない。

6 Pixel Samples to 2x2 レンダリング時間 16分22秒 (29%)
Mantra ROP ライト
Render Engine Pixel Samples RVAA Stochastic Samples Lights' Sampling Quality
PBR 2x2 OFF 4 4
Pixel Samples を 2x2 に増加. 全体的なノイズは減ったが、ピクセルサンプルが低いと雲全体が暗く見える。ピクセルサンプルは変更しない方が良いかもしれない。

7 Pixel Samples back to 3x3 レンダリング時間 36分16秒 (64%)
Mantra ROP ライト
Render Engine Pixel Samples RVAA Stochastic Samples Lights' Sampling Quality
PBR 3x3 OFF 4 4
Pixel Samples を 3x3 に戻す。レンダリング精度は #1 とほぼ同じで時間は約64%。

8 Stochastic Samples 8 レンダリング時間 1 hour 3分26秒 (111%)
Mantra ROP ライト
Render Engine Pixel Samples RVAA Stochastic Samples Lights' Sampling Quality
PBR 3x3 OFF 8 4
Stochastic Samples を8 まであげた。ノイズは減ったが、8 では元画像より 10% 遅くなった。

9 Stochastic Samples 16 レンダリング時間 1 hour 42分16秒 (179%)
Mantra ROP ライト
Render Engine Pixel Samples RVAA Stochastic Samples Lights' Sampling Quality
PBR 3x3 OFF 16 4
Stochastic Samples を 16 まで増強。ノイズは殆どわからないが、レンダリング時間は元の2倍弱。

Summary

  • レンダリングの時間と精度を考慮する上で気をつける場所が3箇所ある。それらは:
    • ROP ノード
    • ライト
    • シェーダ/マテリアル、これに関しては今回待ってく触れていない。ただし、使用しているシェーダで View->VEX code を実行すると、このシェーダは PBR をしていることがわかる。
  • ライトの Sampling Quality をあげるとレンダリングの精度も上がる。これは見落としがち。
  • ボリュームデータをレンダリングする場合で時間を気にするのであれば、"Ray Variance Anti-Aliasing" はオフにした方が良い。テスト#1 (元画像、 RVAA はオン) とテスト#7 (RBAA オフでライトのSample Quality は4) とではほぼ同じ画質だが、テスト#7は、テスト#1の64%の時間で終了。
  • (Mantra の) PBR と Ray tracing では、レンダリングの画質もレンダリング時間もほぼ同じ。

テスト環境

  • Houdini 16.0.463
  • Cent OS 6.7
  • 12 Core i7 @ 3.20GHz
  • 32GB RAM

0 件のコメント:

コメントを投稿