チュートリアル / Maya V-ray アーティスト ワークフロー~レンダリングテクニックを学ぶ~
第5回:V-Ray応用編~MayaでV-Rayを使いこなすために~

2018.05.23

  • Maya
  • チュートリアル
  • レンダリング
  • 中級者
  • 映画・TV

今まではV-Ray for Mayaの基本的な使い方についてお話してまいりました。
実は今回でコラムの連載は最後になりますが、V-Rayの将来を見据えて、GPUレンダリングについてお話ししたいと思います。

GPUレンダリング黎明期

V-Rayは今から遡ること9年ほど前からGPUレンダリングについて開発を進めていました。
初めて登場したのはV-Ray 2.0に付属されたV-Ray RTと呼ばれる3ds MaxのActiveShadeプラグインでした。
当初からRTエンジンはバックエンドとしてCPU,OpenCL,CUDAの3種類が用意され、切り替えて使用できるようになっていました。
MayaにおいてもV-Ray for Maya 2.0からRTが搭載され、当初は本番レンダリング前のプレビュー用IPR機能として使われることを想定していたようです。

GPUレンダリング混沌期

V-Ray for Maya 2.4からV-Ray for Maya 3.0のアップデートで大幅改良が行われたのですが、GI(グローバルイルミネーション)と同じようにGPUレンダリングも複数の選択肢が用意されるようになり、ユーザーとしてはどのように使用すればいいのかが分かりにくくなる混沌期を迎えます。

ビューポートレンダラー

まずV-Ray RTがビューポートレンダラーとして使用できるようになりました。MayaにはもともとIPR機能(Mayaレンダービュー上でリアルタイムにレンダリング結果を確認できる機能)があったわけですが、ビューポート2.0や旧式の規定ビューポートと同じように、ビューポート上でRTを選択できるようになりました。
ライティングや質感の調整結果がビューポート上でリアルタイムに反映されます。

プロダクションレンダリングモード

これまで、RTはプレビュー用として使用し、プロダクションレンダリング(本番用レンダリング)は今までのV-Rayレンダラー(CPUレンダリング)を使用するように推奨されていたのですが、RTにもプロダクションレンダリングモードが搭載されました。あたかもV-Rayレンダラーと同じ絵がレンダリングされるかのように受け取ってしまうのですが、実際には以下のような違いが生じます。

プロダクションレンダリングとRTのプロダクションモードの比較です。
V-Rayレンダリング CPUモードでイラディアンスマップとライトキャッシュ+コースティクスを使用してレンダリングしています。レンダリング中はこのようにイラディアンスマップの更新がバケットで表示されています。

その設定の状態で、レンダー設定のRT(IPR)タブでSame as production renderer(プロダクションレンダリングモード)を選択してレンダリングしてみます。

しかしRTレンダリングの更新状態はイラディアンスマップを使用した場合のバケット表示ではなく、フォトンを使ったコースティクスも計算されていないようです。

どうやら、RTのSame as production rendererモードは、V-Rayレンダーと同じ結果を得るものではなく、フレームごとの品質を一定にするためのアダプティブサンプリングの使用と、レンダーエレメントへの対応が追加されたモードということらしいです。

プログレッシブモード

次にV-Ray 3.0からプロダクションレンダー上でプログレッシブモードが搭載され、RTのように累進更新式のサンプラーが選択できるようになりました。しかし、これはV-Rayフレームバッファー(VFB)ウインドウ上でIPRと同じようなことができるわけではなく、イメージサンプラーの1つとして追加されたものです。累進更新式とはいえ、GIエンジンにイラディアンスマップを選択した場合は、イラディアンスマップ取得後の最終レンダリング時のみ累進更新となっています。

しかしRTと違い、ビューポート上で操作してもVFBが更新されることはありません。

インタラクティブレンダリングモード

さらにややこしいことに、V-Ray 3.5からはVFB上でインタラクティブレンダリング機能が搭載されました。
こちらはプログレッシブモードとは異なり、インタラクティブレンダリングボタンでスタートさせると、ビューポート上の操作に追従してインタラクティブにVFB上のレンダリングが更新されます。

そのかわり、GIでイラディアンスマップを選択していてもインタラクティブレンダリングをスタートさせると強制的にブルートフォースに置き換えられてしまいます。これは、サンプリングタイプでバケットを選択していても同じです。インタラクティブレンダリングモードでは強制的にプログレッシブタイプに変更されてしまいます。

[バケットとプログレッシブの違い]

プログレッシブは後に搭載されたイメージサンプラーで、その名の通り累進を意味し、レンダリング画像が最終目標に向かって更新されていくため最初から全体を把握しやすいのですが、バケットタイプと比べて注意が必要なのはメモリーを消費し易いという点です。そのため巨大なサイズのレンダリングを行う場合はバケットを選択、すなわちCPUレンダリングにしておいた方が良いでしょう。

ビューポートレンダラー ビューポート上で使用するRTを使ったIPR機能
プロダクションレンダリングモードプロダクションレンダリングとは異なる結果
プログレッシブモード プロダクションレンダリングで使用する累進更新式のサンプラー IPR機能はない
インタラクティブレンダリングモード プロダクションレンダリングで使用するIPR機能

このように、V-RayではGIエンジンがそうであったように、GPUレンダリングもアップデートと共に複数の選択肢が追加され、最新バージョンではこれらすべてのGPUレンダリングが使用可能になっているためとても複雑ですが、将来のバージョンではGIエンジンも含めて扱いやすく整理されるとアナウンスされています。

GPUレンダリング活用方法

それでは、現状のV-Ray for Maya 3.6におけるGPUレンダリングについて詳しく見ていくことにします。
最新バージョンではプロダクションレンダリングでGPUを使用する方法が現実的な使用方法がと思われます。
一般的に、CPUは連続的な計算を得意で、GPUは並列的な演算が得意という性質を持っています。レンダリング速度は速くなりますが、その代わりいくつかの制限があるようです。

レンダリング速度

実践的なシーンを使ってGPUレンダリングの速度を見ていきましょう。V-RayのGPUバックエンドはOpenCLとCUDAの2種類が用意されていますが、Intel Core i7-3770K 3.5GHzとNvidia GeForce GTX 1070を用いて比較を行うため、今回はCUDAを使用しています。V-Ray3.6からはCPUもCUDAエンジンとして利用できるようにハイブリッド化されています。

このSan miguel のシーンファイルは、777万ポリゴン、193マテリアル、4ライト、GIエンジンはブルートフォース、デノイズを使用しています。レンダリングサイズ1920x1080

■プロダクションレンダリング CPU(Intel Core i7-3770K 3.5GHz) 
レンダリング時間49分19秒 レンダリングサイズ1920x1080

■プロダクションレンダリング CUDA CPU(Intel Core i7-3770K 3.5GHz)
 レンダリング時間30分23秒 レンダリングサイズ1920x1080

■プロダクションレンダリング CUDA GPU(Nvidia GeForce GTX 1070) 
レンダリング時間7分28秒 レンダリングサイズ1920x1080

■プロダクションレンダリング CUDA GPU(Nvidia GeForce GTX 1070)+CPU(Intel Core i7-3770K 3.5GHz)
 レンダリング時間6分10秒 レンダリングサイズ1920x1080

結果だけをみるとGPUはCPUの6.5倍速くレンダリングできています。さらに興味深いことは、CPUをCUDAエンジンとして使用した場合も1.6倍ほど速くなっているということです。

ひとつ注意点があるとすれば、GPUのみを使用したレンダリングであっても、GPUビデオカードのメモリー使用率と同じようにマザーボード上の物理メモリーも使用率が増加していくということです。GPUレンダリングを行うためにはGPUビデオカードだけでなくPC本体のスペックも必要なようです。

以上のことから、V-RayにおけるGPUレンダリングは、プロダクションモードにおいてのみ真価を発揮できると言えます。高価なGPUビデオカードを搭載したPCでは、それらを活用してCPUよりも明らかに速くレンダリングすることができます。また、CPUレンダーファームを使用する場合にはCPU CUDAモードを使用してよりパフォーマンスを上げることができるようです。

GPUとCPUの違い

しかしGPUレンダリングはメリットばかりではありません。レンダリングされた画像をよくみると、CPUとGPUで違いがあることがわかります。たとえば左側階段付近の光の当たり方、右側テーブル周りのハイライト、フロアタイルの反射具合などです。

どうやら、今までのCPUを使ったレンダリングと、GPUレンダリングでは全く同じレンダリング結果になるわけではなさそうです。これは、CPUをCUDAエンジンとして使った場合も同様で、同じCPUを使ったレンダリングであっても、CUDAを使うと違った結果となってしまいます。

CPUレンダリングとGPUレンダリングの違い

同じライティングとGIエンジンでも若干明るさや反射具合に差が出る場合があるようです。

さらに、マテリアル、テクスチャ周りでもCPUとGPUでは使用できる種類に違いがあります。

この比較でわかるとおり、GPUでレンダリングできないマテリアル・テクスチャは、
マテリアル
 VRayAlSurface
 VRaySimbiontMtl
 VRayGLSLMtl
 VRaySkinMtl
 VRayOSLMtl
 VRayScannedMtl
 VRayPointParticleMtl
 MayaRumpShader
テクスチャ
 Vertex Color
 VRayEdges
 VRayDistanceTex
 VRayPTex
 VRayOSLTex
 VRayParticleTex
 VRayRaySwitch
 VRayCurvature
 VRayTriplanarTex一部制限
他にも
samplerInfonなどのMaya Utility Nodesが一部制限されます。
よく使用するVRayMtlも、バンプ、違法性反射、リフラクションなどの結果が異なるようです。

ジオメトリ
NURBS、Bifrost Foamがレンダリングできません。

レンダーエレメント
Cryptomatte、Material ID、Matte Shadow、RAWデータ各種が取得できません。

GIエンジン
フォトンマップが使えなくなり、イラディアンスアップもCPUを使って生成されたキャッシュファイルを読み込んで使うことしかできないため、GPUレンダリングは実質的にブルートフォースとライトキャシュのみに制限されます。

以上の内容は公式ヘルプにも記載されています。

これらの検証結果から、V-Rayでは今までCPUでレンダリングされてきたシーンファイルをGPUで同じようにレンダリングすることはできません。かなりの差が生じることからCPUとGPUを混同させることもできません。しかも、GPUではサポートされていない機能が多岐にわたるため、GPUの処理速度の恩恵を受けるためには、GPUでサポートされている機能のみを使用したシーン設計が必要になります。
V-Ray 次のバージョンでは、GPUレンダリングに専念できるようにGPU非対応の機能を見えないように隠し、カーネル構造を再設計し機能をモジュール化することより、パフォーマンスと安定性を両立させることができるように改良されるようなので、よりいっそう使えるGPUレンダリングになっていると期待したいです。
現状ではまだまだ多くの制約があるV-RayのGPUレンダリングですが、今後4K、8Kのレンダリングニーズが増えていくと予想されるため、それらに対応できるレンダリングパワーを付加する方法として、GPUレンダリングの利用は有効であると思われます。

今まで「Maya V-Ray アーティスト ワークフロー」を愛読いただいてありがとうございました。レンダリングはCGを作るうえで避けては通れない工程ですが、いくつものレンダラーがあり、知っておくべき事項も多岐にわたります。その中で本コラムは、マニュアルに載っていてもわかりにくかったり、詳しく説明されていない事柄を含めて、わかりやすく解説できるように努めてまいりました。今回で一旦終了となりますが、また別の機会にお目にかかりたいと思います。

製品購入に関するお問い合わせ
オートデスク メディア&エンターテインメント 製品のご購入に関してご連絡を希望される場合は、こちらからお問い合わせください。