今回は、Maya 2020のArnoldレンダラを使い、GPUレンダリングを試してみました。
本当に早くレンダリングできるのか?設定はどうするのか?
そのあたりをメモしてみました。
以下、使用したノートPCのスペックです。
プロセッサ:Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz 2.59 GHz
実装RAM:16.0 GB (15.9 GB 使用可能)
グラフィックボード:GeForce RTX2060

CPUレンダリングのレンダリング時間を確認
GPUレンダリングの場合と比較するために、まずはCPUレンダリングでどの程度の時間がかかるかを確認してみました。
レンダリングシーンは下の画像のものを使っています。

レンダー設定で[Arnold Render]タブを、以下のように設定しました。
- [Camera (AA)]:3
- 以下の数値:2
- [Adaptive Sampling]:オフ

[System]タブは、以下のように設定しています。
- [Render Device]:CPU

この設定でレンダリングしてみた結果は下の画像のようになりました。
レンダリング時間:15秒

影のあたりのノイズが気になるので、調整します。
レンダー設定の[Arnold Render]タブで以下の部分を追加します。
- [Adaptive Sampling]:オン
- [Max. Camera (AA)]:20

再びレンダリングしてみた結果は下の画像のようになりました。
レンダリング時間:2分56秒

一気にレンダリング時間が上がってしまいましたが、影のノイズのあたりは綺麗になっています。
ArnoldのGPUレンダリング
GPUレンダリングを試してみたいと思います。
レンダー設定で[Arnold Render]タブを、以下のように設定します。
- [Camera (AA)]:3
- 以下の数値:2
- [Adaptive Sampling]:オン
- [Max. Camera (AA)]:20

[System]タブは、以下のように設定します。
- [Render Device]:GPU
- [Manual Device Selection (Local Render)] > [Enable Manual Device Selection]:オン

【注意】
MayaのGPUレンダリングに対応していないグラフィックボードもあります。
詳しくは下記Autodeskのページで確認してみてください。
Getting Started with Arnold GPU
次に、キャッシュを取ります。
ArnoldのGPUレンダリングは、キャッシュを取ってからおこないます。キャッシュを取った後でも、ライトの修正やマテリアル調整は問題なくできます。
[Arnold] > [Utilities] > [Pre-populate GPU Cache]


キャッシュを取るために時間が少し必要です。
気長に待ちます。
キャッシュを取ってからやってはいけないことは下記です。
- オブジェクトの追加・削除
- マテリアルの追加・削除
ただし、試しにオブジェクトを追加したりしてみましたが、ちゃんとレンダリングできました。あくまでやらないことを推奨しているということなのだと思います。
レンダリングしてみると、かなり早くレンダリングできました。
レンダリング時間:25秒

CPUレンダリングの時と比べると、サンプリング数などは同じはずなのですが、ややノイズが目立ちます。
●GPUレンダリング

●CPUレンダリング

そのため、ノイズを少し抑えるようサンプリング数を上げます。
レンダー設定で[Arnold Render]タブの以下の部分を変更します。
- [Adaptive Sampling]:オン
- [Max. Camera (AA)]:30

レンダリング時間は少し長くなりました。しかし影の部分を確認してみるとCPUレンダリングの場合の結果よりもきれいにレンダリングされました。
レンダリング時間:39秒

角度を変えてレンダリングしてみましたが、CPUレンダリングの時と比べてかなり高速で結果を確認できます。

マテリアルを調整してみました。エラーなどは起きません。

レンダリング中のタスクマネージャーを確認しましたが、CPUが40%ほどの稼働率で抑えられています。CPUレンダリングだと100%近くまで行ってしまうので、大きな違いがあることが確認できます。

まとめると、GPUレンダリングはキャッシュの取得時間は少し時間がかかるももの、一度取ってしまえばそのあとのレンダリング確認作業は大幅に削減できることがわかりました。
注意すべき点は、オブジェクトを追加などしたときに、正しく機能しない可能性があるということです。また、中にはGPUレンダリングでは使うことのできないマテリアルもあります(「GPU×」のアイコンが付いています)。覚えておいた方が良いでしょう。
以上、ArnoldのGPUレンダリングを試してみた結果でした。
(-_-)zzz
追記
●Adaptive Samplingをオンにすると、レンダリングのパーセンテージが100%になった後からノイズ除去の計算が入ります。100%になってから少し待つ時間が必要です。

↑ 100%でもまだ終わっていない
●GPUレンダリングをかけると、GPUのメモリ不足で処理落ちすることがあります。この場合、サンプリング数が大きすぎる可能性があります。Camera(AA)は最大でも4、処理落ちする場合は2ほどまで下げます。そうするとレンダリング結果はノイズが目立つので、Adaptive Samplingを少し大きくしてノイズの処理をします。GPUへの負荷は減るので、処理落ちすることが減ると思います。
また、Camera(AA)が2など小さい数値にしていてもGPUのメモリ不足で処理落ちする場合は、Max Texture Resolutionに数値を「1024」などテクスチャの最大サイズを入力します。すると、処理落ちせずにレンダリングすることができました。4Kのテクスチャなどを多く使用していると、テクスチャを読み込むためのメモリ使用で処理落ちしてしまうように考えられます。情報が少なく真偽のほどは定かではないですが。

以上です(´ρ`)