CPUやGPUを生産するハードウェアメーカーとして知られるAMDがリリースした、パストレーシングレンダラのRadeon ProRender。CPUとGPUの両方に対応し、OSを問わず様々な3Dプラットフォームで活用でき、物理的に正確なレンダリングが可能で、商用利用においても無償で使用できる......などなど、魅力的な要素が盛りだくさんのレンダラだ。そんなRadeon ProRenderの最新の真価をコロッサス Rスタジオの澤田友明氏(レンダリングスペシャリスト)に徹底検証してもらった。本記事では、その検証結果をベーシック編とアドバンス編の2回に分けてお届けする。
TEXT_澤田友明 / Tomoaki Sawada(コロッサス Rスタジオ)
EDIT_尾形美幸 / Miyuki Ogata(CGWORLD)
PHOTO_弘田 充 / Mitsuru Hirota
▲左から、レンダリングスペシャリスト・澤田友明氏(コロッサス Rスタジオ)、シニアソフトウェアエンジニア・池田 翔氏、マネージャー・森本竜英氏(以上、日本AMD)
レンダラの乱立と選定
今日まで、レンダラと言えばレンダリングソフトウェアのことを指してきた。最初は3Dアプリケーションに標準搭載される形で提供されていたが、CPUの動作クロック競争が加熱しだした1990年代から、よりリアリティを追及できるグローバルイルミネーションレンダラという単体のソフトウェアとして世にリリースされるようになった。しかしながら、CPUとソフトウェアは別々のベンダーからリリースされるのが当たり前で、より速いCPUが登場すれば、そのパワーを活かす形でソフトウェアが進歩してきたと言える。そうやってレンダラが乱立してきたからこそ、レンダラを選ぶ際には、そのほかのソフトウェアやハードウェアの選定も含めて慎重にならざるを得ず、それなりの数が必要となれば経済的な面も考慮する必要があった。
進歩が著しいハードウェアベンダーからの提案
ここに紹介するRadeon ProRenderは、今日のCPU、およびGPUそれぞれで双璧の一角をなすハードウェアメーカーのAMDがリリースする最新のパストレーシングレンダラで、CPUとGPUのどちらか一方ではなく両方に対応し、OSを問わず様々な3Dプラットフォームで活用できる。しかも無償で提供されるため、導入に対する障壁がない。
Radeon ProRenderの特徴
・物理的に正確
幅広い独自の物理ベースマテリアルとカメラシステムを特徴とするRadeon ProRenderエンジンを搭載したアンバイアスな最新のパストレーサーで、グローバルイルミネーションを的確に表現できる。
・強力な互換性
Radeon ProRenderは以下のプラットフォームに対応している。その強力な互換性は、代表的な3Dホストアプリケーションだけでなく、次世代のオープンスタンダードも見据えている。
■ CINEMA 4D
■ MODO
■ Maya
■ 3ds Max
■ Blender
■ SOLIDWORKS
■ PTC Creo
■ Unreal Engine 4
■ USD
・GPUとCPUのバランスをとれる
Radeon ProRenderは、同じシステム上の複数のGPUとCPUのコンピューティング機能を同時に使用し、バランスをとることができる。
・わかりやすい
冗長性を排したシンプルなレンダー設定と、どのような場面にも使用できるUberマテリアル、そして最初から用意されている豊富なマテリアルライブラリにより、短時間で操作をマスターできる。
・オープンスタンダード
OpenCLまたはApple Metalを使用すれば、Radeon ProRenderはWindows、Linux、Macで動作し、AMD GPUとCPUだけに限定されることなく、IntelやNVIDIAの製品にも対応している。
・大規模レンダリングにも対応
AMDの「Vega」GPUアーキテクチャのアウト・オブ・コア・レンダリングと広帯域幅キャッシュ・コントローラ(HBCC)をサポートすることによって、これまでのGPUレンダラが弱点としていた大規模スケールのレンダリングも行える。
・AIによって促進されたデノイジング
AI機械学習を含む複数のデノイジングエンジンを搭載し、従来のパストレーシングにかかる時間よりも大幅に短い時間で、高品質なファイナル・レンダリングおよびインタラクティブ・レンダリングイメージを生成できる。
・VR、およびARにも対応
Radeon ProRender Game Engine ImporterとUnreal Engine 4を使用し、VRとARのデザインをインタラクティブに視覚化することができる。
・そして、無料!
前述のように特定のハードウェア・ソフトウェアに限定されないこのレンダラは、しかも無償で提供されており、商用利用も可能だ。
いざ、Radeon ProRenderを徹底検証
さて、このなんとも魅力的なレンダラを既にご存知の方も少なくないと思うが、実際に導入となるといくつかの検証は必要である。また、無償で提供されると逆に手を出しづらいと思う人もいるかもしれないが、Unreal Engine 4の例もあるように、無償で良いものは使わなければもったいない。
代表的なプラットフォームであるWindowsとAutodesk Mayaを使って、実際にRadeon ProRenderの検証を行なってみた。
Radeon ProRenderはこちらから誰でもダウンロードできる。Maya用Pluginを導入すると、シェルフやレンダー設定にRadeon ProRender専用メニューが反映される。同時にマテリアルライブラリもインストールしておくといいだろう。
▲Radeon ProRenderの概要とインストールに関する日本語チュートリアル
・レンダー設定
前述したようにレンダラがシンプルでわかりやすいということは、それだけ活用までの時間を短縮でき、ヒューマンエラーも発生しにくい。世の中には把握しきれないほどのパラメータをユーザーに解放しているレンダラもある中で、Radeon ProRenderのこの姿勢は共感できる(3Dアーティストは、ほかにも覚えなければいけないことが山ほどあるのだ)。レンダー設定タブはシステム・サンプリング・精度・エフェクト・AOVの5つに分類されていて、それぞれのパラメータも少ない。以下で、各パラメーターの概要を解説する。
▲Radeon ProRenderのレンダー設定に関する日本語チュートリアル
・システム
システムでは、ファイナルレンダーとプレビューレンダーでどのハードウェア(GPUかCPU、あるいはその両方)を使用するか選択する。対応するハードウェアはAMD製に限らず、IntelでもNVIDIAでも全く問題がないので、最近のPCであればどのような構成でもハードウェアのパワーを使いきることができる。GPUとCPUの併用については本記事の2ページ目で検証しているため、そちらも参照してほしい。
・サンプリング
- サンプリングの手法にはアダプティブサンプリングが用いられているので、最大イテレーションと最少イテレーションを決め、その可変をスレッシュホールド値でコントロールする。また、時間を制限することも可能なので、プレビューレンダリング時には1枚あたりの計算時間を指定し、トータルレンダリング時間を的確に予想することができる。サンプリングについては本記事の2ページ目で検証しているため、そちらも参照してほしい。
・精度
- ここでいう精度は主にレイデプス(レイトレース計算の追跡回数)のことで、ディフューズやリフレクションの反射回数を指定できる。レイトレースの交差問題を調整するためのRay Epsilonや、テクスチャメモリのアウト・オブ・コア設定を行える。
・エフェクト
- エフェクトではモーションブラー、デノイズ、トーンマッピングに関するコントロールや、レンダー時間を記録できるレンダースタンプの設定が行える。デノイズについては本記事の4ページ目で検証しているため、そちらも参照してほしい。
・AOV
なお、AOVの使用時には2点ほど注意が必要だ。1点目は、MayaのカラーマネジメントがONになっているとレンダリング時に保存される画像がリニアになってしまうので、Radeon ProRenderのレンダー設定でトーンマッピングをONにしてMayaのカラーマネジメントをOFFにした方がいい。
2点目は、現状ではカスタムAOVを設定できず、EXRを使ったコンポジットで再合成ワークフローを行うにも少々要素が足りていない。このあたりは次のアップデートに期待したい。現時点でのAOVは微調整に使用する程度に留めておいた方がいいだろう。
以上のパラメーターを設定し、レンダリングをする際には、Mayaの標準レンダーボタンか(Arnoldのレンダーボタンではない)Radeon ProRender専用シェルフにあるレンダースタートをクリックする。するとMayaの標準レンダービューが立ち上がり、レンダリングが開始される。
▲ビューポート上でもレンダリングすることができる。ビューポートにあるレンダラメニューからRadeon ProRenderを選択すると、ビューポート上でレンダリングが開始される
▲ビューポートレンダリングでは様々なAOV要素を確認することができる
▲デバッグに使えるビューポートモードも用意されている
次ページ:
サンプリング設定、およびGPUとCPUの併用を検証
サンプリング設定によるレンダリングのちがいを検証
最大サンプルイテレーション値の設定によって、レンダリングの品質と所要時間にどの程度の差がでるのかを比べてみた。スレッシュホールド値は0.005として、最大サンプルイテレーションを128から1,024へと増やしていき、最少サンプルイテレーションは最大の半分の値に設定した。なお、レンダリングのハードウェアにはAMD Radeon VII 16GBを使用した。
▲最大サンプルイテレーション 128
▲最大サンプルイテレーション 256
▲最大サンプルイテレーション 512
▲最大サンプルイテレーション 1,024
各画像のレンダリング時間は以下のような結果であった。
■最大サンプルイテレーション 128/8秒
■最大サンプルイテレーション 256/14秒
■最大サンプルイテレーション 512/26秒
■最大サンプルイテレーション 1,024/49秒
用途にもよるが、512以上であればデノイズをかけなくてもそこそこの品質と言えるのではないだろうか。
次に、レンダリング時間を指定した場合の品質の変化を比べてみた。
▲レンダリング時間 1秒
▲レンダリング時間 5秒
▲レンダリング時間 10秒
▲レンダリング時間 20秒
レンダリング時間 1秒ではさすがにノイズだらけだが、プレイブラスト用途としては十分実用的だと思われる。
このように、レンダリング品質に関わる設定はとてもシンプルで、複数のレンダリングエンジンを切り替える必要はなく、パラメータについても簡潔に整理されており設定に時間をとられることもない。
CPU & GPU併用時のレンダリング時間を検証
Radeon ProRenderの特筆すべき特徴のひとつは、なんといってもGPUとCPUを両方使用できる点だろう。GPUを使うレンダラはほかにもあるが、たいていGPU専用レンダラとなりハードウェアの選定に制約がかかる。また、Radeon ProRenderはAMD製でありながらAMDのハードウェアに限定されていない。そこで、いくつかのCPUとGPUを使ってレンダリング時間を比べてみた。
▲検証に使用したハードウェアのひとつ。GPUはAMD Radeon Ⅶ 16GB、CPUはAMD Ryzen Threadripper 1950X 16コアを搭載している
▲テスト用画像のレンダリングサイズは1,920 × 1,080、最大サンプルイテレーションは512に設定した
▲検証結果
検証の結果、やはりGPUを使ったレンダリングスピードは圧倒的で、16コア32スレッドを誇るAMD Ryzen Threadripper 1950XをもってしてもハイエンドのGPUにはかなわなかった。
・GPUによるレンダリングの検証結果
■AMD Radeon Ⅶ 16GB/1m28s
■AMD Radeon RX580 8GB/3m28s
■Nvidia GTX1070 8GB/3m
・CPUによるレンダリングの検証結果
■AMD Ryzen Threadripper 1950X 16コア/4m12s
■Intel Core i9 9900K 8コア/6m
■Intel Core i7 3700HQ 4コア/30m28s
特筆すべきは、Radeon Ⅶはこの価格帯で16GBものオンボードメモリを搭載しているため、複雑なシーンにおいても安心して使用できるという点だ。Radeon ProRenderにはアウト・オブ・コア・テクスチャやアウト・オブ・コア・ジオメトリ機能があるため、GPUのメモリを超えた運用も可能ではあるが、速度を重視する場合はGPUのメモリが必須となってくる。
Radeon ProRenderはGPUとCPUの両方をレンダリングに使用することもできる。両方を同時に使用して検証してみたが、残念ながら明確なアドバンテージを得ることができなかったばかりか、GPU単体でレンダリングした場合よりも遅くなることがあった。
・CPU & GPUの併用によるレンダリングの検証結果
■AMD Radeon Ⅶ + AMD Ryzen Threadripper 1950X/2m34s
■AMD Radeon RX580 + Intel Core i9 9900K/5m28s
■Nvidia GTX1070 + Intel Core i7 3700HQ/6m2s
もっと反射屈折計算や拡散反射計算が多いシーンの方が相乗効果が出やすいのかと思って別のシーンでも試してみたが、GPU単体よりGPU+CPUの方が遅いという傾向は変わらなかった。これについては、アルゴリズムの改善による最適化が進められているらしい。
▲上のシーンのレンダリング時間
■AMD Radeon Ⅶ 16GB/2m53s
■AMD Radeon Ⅶ + AMD Ryzen Threadripper 1950X/3m
▲上のシーンのレンダリング時間
■AMD Radeon Ⅶ 16GB/1m12s
■AMD Radeon Ⅶ + AMD Ryzen Threadripper 1950X/2m19s
Uberマテリアルを検証
最新版のRadeon ProRenderではマテリアルが整理され、最新レンダラのトレンドである、ひとつの基本シェーダで全ての質感を表現できるUberマテリアルを搭載している。
▲Radeon ProRenderのマテリアルに関する日本語チュートリアル
▲様々な質感のUberマテリアルを適用したモデル
では、Uberマテリアルのパラメータを見ていこう。
▲Diffuse Color
▲Diffuse Roughness
▲Reflection
▲Reflection Roughness
▲Metalness
▲Reflection Anisotropy
▲Refraction
▲Refraction Roughness
▲Refraction Absorption
▲Emissive
▲SSS Weight
SSS系だけは注意が必要だ。SSSのパラメータだけでコントロールするのではなく、DiffuseにあるBackscattering WeightとRefractionとの兼ね合いで調整することになる
▲SSS Radius
▲Normal Map
▲Coating
▲Displacement
ディスプレイスメントもUberマテリアルの中でコントロールするようになっていて、ディスプレイスメントさせるメッシュの分割数もマテリアルにあるSubdivisionの値で調整できる
▲マテリアルブラウザ。こちらは別途インストールすることになるが、Uberマテリアルを使用した様々な質感を網羅しているので使わない手はない。インストールしておくとシェルフからマテリアルブラウザを開くことができる
[[SplitPage]]専用ライトを検証
ライトはMayaの標準ライトも使用できるが、Radeon ProRender専用のライトを使用する方がコントロールしやすくなる。Arnoldのライトは当然ながら使用できない。
▲Radeon ProRenderのカメラとライトに関する日本語チュートリアル
▲シェルフにもライト作成ボタンがあるが、メニューからだとより多くの種類を選択できる
▲エリアライト
▲スポットライト
▲ディレクショナルライト
▲イメージベースドライト
▲IESライトには特筆すべき点がある。ビューポート上でIESデータの大まかな照射形状がワイヤーフレーム表示されるため、照射範囲などを直感的に理解できるようになっている
デノイズを検証
- Radeon ProRenderはパストレーサーなので、レンダリング時のサンプリングが低いとノイズが目につきやすい。サンプリングを上げればノイズは減少するが、レンダリング時間も増えてしまう。そこで、レンダリング時間をかけずに品質の良い画像を得る方法のひとつとしてデノイズが用いられる。Radeon ProRenderにも4種類のデノイズが搭載されている。設定はレンダー設定のエフェクトで行う。
■Bilateral
■LWR(Local Weighted Regression)
■EAW(Edge-Avoiding À-Trous Wavelet Transform)
■Machine Learning
上記4種類のデノイズがどのように異なるのかを比較してみた。
▲まずデノイズをかけていない状態のレンダリングを行う。ノイズを目立たせるために最大サンプルイテレーションは128に設定した
▲Bilateralによるデノイズ。コントロールするパラメータはRadiusだけというシンプルなもの。デノイズ効果は薄いがディティールは残っている。なぜかエラードットが見受けられる
▲LWR(Local Weighted Regression)によるデノイズ。3つのパラメータがあり、Bilateralと同じ程度のデノイズ効果だがエラードットは見られない
▲EAW(Edge-Avoiding À-Trous Wavelet Transform)によるデノイズ。コントロールできるパラメータは4つもあるが、最少に設定してもデノイズの効果はかなり高い。その代わりディティールは一番失われている
▲Machine Learningによるデノイズ。単純な計算によるデノイズではなく、AI機械学習を用いているため、ディティールを残しながらデノイズする効果は高いが、一部画像が破綻している箇所も見受けられる
Radeon ProRenderの可能性
GPUを使った高速化を訴求するレンダラは多いが、DCCツールに付属するレンダラがほぼデファクトとなっている今日、別途レンダラを導入し、レンダーファームにも展開させることはリスクが伴う。しかし、Radeon ProRenderは様々なハードウェア・プラットフォームで運用できるだけでなく、商用利用においても無償で使用できるため、今後の発展によってはゲームチェンジャーとなる可能性を秘めている。
現状ではまだ足りていない機能があり、堅牢性の面でも問題があるが、AMDが開発するレンダラのメリットとして、ハードウェアの進歩をいち早く取り入れた機能の改善、Unreal Engine 4やUSDなどの多様な分野への展開が挙げられる。アドバンス編では、ほかのレンダラからRadeon ProRenderへのシーンファイル変換、クラウドレンダリングサービス、Unreal Engine 4やUSDでの運用について検証していきたい。
ベーシック編は以上です。アドバンス編はこちらで公開しています。
合わせてご覧ください。