株式会社コロッサスへようこそ

menu

Colossus Studios

アーノルドレンダー検証 その24

雨ですね。ようやく露の季節ですね。

Arnoldが新しくなってから、実務でも使い始めている中で、とあるエラーを発見してしまいました。
そのエラーとはメモリーリークです。
モーションブラーと、あるシェーダーを併用すると必ずメモリーリークが発生してしまい、メモリー使用量がうなぎのぼりになってしまいます。

まずこちら、aiStandardSurfaceシェーダーを与えた1000個の球体を回転させ、レンダー設定でモーションブラーをONにします。
aiStandardSurfaceシェーダーの設定はデフォルトのままです。


その状態でレンダリングすると、レンダリング中はメモリーの使用量は一定で推移しています。

しかし、aiStandardSurfaceシェーダーのカラーに、プロシージャルシェーダーの中からCraterをアサインしてレンダリングすると、

このように、シンプルなシーンでもレンダー中のメモリー使用量が激増してしまいます。
では、モーションブラーをOFFにした状態ではどうでしょうか?

モーションブラーをOFFの状態ではメモリー使用量は一定のままです。

他のシェーダーでも検証してみました。

Checkerシェーダー メモリー使用量は一定です。

Rampシェーダー こちらもメモリー使用量は一定です。

Marbleシェーダー メモリー使用量が激増しています。

Rockシェーダー なんどもメモリーリークを繰り返してレンダリングしているので、メモリー使用量が限界に達してしまいそうです。

これでお分かりになるように、モーションブラーと一部のプロシージャルシェーダーの組み合わせはメモリーリークを引き起こし、連続フレームのレンダリングなどではメモリー開放ができず、PCがダウンしてしまう原因になります。
X印を付けたシェーダーがメモリーリークを引き起こしています。

Arnold Core 5.0.0.3ではいくつかのメモリーリークを解消しているとアナウンスされていますので、実務で使用されている場合は次期アップデートを待ったほうが賢明です。