2021年11月24日(現地時間)Blender 3.0リリースに搭載される Cycles X プロジェクトの最新情報が公開されました。
上記の記事で紹介した前回の発表以来、開発者はコードの完成と安定化、新機能の追加とパフォーマンスの向上に取り組んでおり、以下のような改善されています。
GPUパフォーマンス
多くの変更の積み重ねにより、GPUによるレンダリング性能がさらに向上しました。有名なBlenderシーンで、2.93との比較は以下のようになっています。
詳細については、GPUカーネルのドキュメントおよびGPUパフォーマンス開発タスクをご覧ください。
また、前回発表時にはボリュームレンダリングのサポートはありませんでしたが、サポート後にテストしたところ、さまざまなボリュームシーンでGPUのレンダリング性能が3~5倍向上することが判明したとのことです。
ヘアとシャドウの改善
ほとんどのベンチマークシーンはCycles Xでより速くレンダリングされましたが、透明な髪のレイヤーが多く含まれるシーンでは、2.93と比較してパフォーマンスが低下するものがありました。
この原因のひとつとして、GPUレンダリングにおいて、画像全体のうち一部のサブセットだけがレンダリングに時間がかかる場合(キャラクターの髪の毛など)、GPUの占有率が低くなるという問題があることがわかりました。この問題は、1回のバッチでレンダリングするサンプル数を推定するアルゴリズムをよりスマートにすることで改善されました。これまでは、一度に1つのサンプルをレンダリングしていましたが、現在はGPUの使用率が低いことを検知して、適応的にバッチ処理するサンプル数を増やし、使用率が向上します。
もう一つの解決策として、シャドウカーネルのスケジューリングが変更されました。以前は、次のバウンスに進むと、前のバウンスですべての光と影が解決されるのを待たなければなりませんでしたが、今ではこの処理が切り離され、多くのバウンスのシャドウトレーシング作業をキューに蓄積することができるようになりました。これにより、一度にトレースできるシャドウレイの数が増え、GPUの占有率が向上します。これは、Spring のシーンのように、わずかなピクセルが透明な髪の毛に64バウンドもするような場合に特に重要です。
さらに、髪の毛の透明度は通常、固定値か、根元から先端に向かってフェードアウトするシンプルなグラデーションのどちらかで、非常にシンプルです。なのでシャドウの交点ごとにシェーダーを評価するのではなく、ヘアのカーブキーで透明度をベイクし、それを単純に補間するようになりました。
以下は、これらの結果を比較するための2つのサンプル画像となります。
距離スクランブリング、別名マイクロジッタリング
SobolとProgressive Multi-Jitter(PMJ)サンプリングでは、距離スクランブル(distance scrambling)(またはマイクロジッタリング(Micro-Jittering))を使用してピクセル間の相関性を高めることにより、GPUレンダリングのパフォーマンスを向上させることができるようになりました。また、スクランブル距離の値を自動的に選択する自動スクランブルオプションもあり、これらはレンダリングプロパティの詳細設定で利用できます。
上の画像をレンダリングするために、ピクセル間の相関を最大化するためにスクランブリング距離が0に設定されていますが、これは、マイクロジッタリングによって生じる違いを分かりやすくするために行ったものであり、女の子の肩にあるようなアーチファクトが生じるので、実際の環境ではより大きな距離を取ることが一般的です。このテクニックを使うと、画像のノイズが少なくなり、場合によってはレンダリングの設定に応じて1%から5%の範囲でパフォーマンスが向上します(GPUレンダリングの場合のみ有効です)。
以下は、アダプティブスクランブリング距離(adaptive scrambling distance)を使用したパフォーマンスの結果ですが、現在のところCUDAではタイルサイズの関係であまりうまくいっていません。現在、CUDA用のより良いタイルサイズを選択する作業が進行中であり、これによりパフォーマンスが向上するはずです。
アンビエントオクルージョン
アンビエントオクルージョンは、Cycles Xの初期バージョンでは透明度を考慮していませんでしたが、今回、ヘアにも効果のあるシャドウカーネルの改良を利用して考慮するようになりました。
また、additive ambient occlusion (AO)のサポートが Fast GI 設定で可能になりました。さらに、AOの結果を「Add」するための新しいオプションが追加され、すでに利用可能だった「Replace」操作も可能になりました。以下、結果画像の比較となります。
デノイジングの改善
ボリュームのノイズ除去が改善されました。これまでボリュームは、デノイザーが使用するアルベドや法線のパスからほとんど除外されていました。サーフェス上のアルベドや法線と完全に相当するものはありませんが、デノイザーがボリュームの詳細をデノイジングする際に役立つ推定値を作成することにより、ノイズ除去が改善されています。
また、NLM(Non-local Means)デノイザーと一緒に削除されていたデノイジングデプスパス(denoising depth pass)が復活しました。
AMD HIP
AMD社と協力することにより、AMD GPUレンダリングのサポートが復活しました。
これはHIPプラットフォームをベースにしており、Blender 3.0では、Radeon RX 5000とRX 6000シリーズのGPUを含むRDNAおよびRDNA2世代のグラフィックスカードを搭載したWindowsでサポートされる予定です。
3.0ではもっと多くのことをサポートしたかったようですが、GPUプロダクションレンダリングのためのHIPはまだ非常に新しいものであったため、そこまで至らなかったとのことです。しかし、以前のOpenCLの実装は常に遅れていて、より多くの制限やバグがあったのに対し、HIPはCUDAやOptiXと同じGPUレンダリングカーネルと機能を共有することができるという利点があることから、HIPを使用するのは正しい選択であると考えられています。
Blender 3.1のリリースに向けて、Linuxサポートの追加や、旧世代のグラフィックカードを調査するためにAMDと協力しているとのことです。
HIPリリースをテストするには、Blender 3.1アルファ版を入手し、さらに最新のAMDドライバをダウンロードする必要があります。より詳しい情報は以下の記事で紹介しています。
https://cginterest.com/2021/11/16/blender-cycles-x-%e3%81%8c-amd-gpu-%e3%82%92%e3%82%b5%e3%83%9d%e3%83%bc%e3%83%88%ef%bc%88beta%ef%bc%89/
Apple Metal
最近AppleはBlender Development Fundに参加しました。
Appleは、Blender 3.1 で予定されている Cycles 用の Metal バックエンドに貢献しています。
今後の作業
新しい Cycles X アーキテクチャが導入されたことで、様々な新しいプロダクション機能の追加が容易になるとされており、この作業は3.1から始まり、3.xシリーズを通して継続されます。
Cycles X の最新機能は、Blender 3.1 Alpha buildsをダウンロードして試すことができます。
コメント