2021年4月23日(現地時間)Cyclesが発表されてからちょうど10年が経つ今日に合わせて、Cycles X プロジェクトが発表されました。
この10年間で、Cyclesは多くのアーティストやスタジオで使用される本格的なプロダクションレンダラーに成長しました。
開発チームは、さらにコアとなるCyclesのレンダリングを向上させたいと考えていますが、過去に行われた決定の中にパフォーマンスを妨げているものがあり、コードのメンテナンスが困難になっています。そこで、Brecht氏とSergey氏は、Cycles Xという研究プロジェクトを立ち上げました。
このプロジェクトは、手っ取り早い解決策や問題の一部だけを解決する最適化ではなく、アーキテクチャ全体を見直すことを目的としています。
プロジェクトの内容
大まかに言えば、このプロジェクトの目標は以下のようなものとなります。
- 今後の開発のためにアーキテクチャを改善。
- ビューポートやバッチレンダリングの使い勝手の向上。
- 最新のCPUやGPUでのパフォーマンスの向上。
- より高度なレンダリングアルゴリズムの導入。
最初の目標は、この新しいアーキテクチャを検証することで、そのために、新しいGPUカーネルのプロトタイプが実装され、ビューポートレンダリングとバッチレンダリングのための新しいスケジューリングアルゴリズムが導入されました。現在では、ベンチマークシーンのいくつかをレンダリングするのに十分な機能を備えています。
現在のCycles Xカーネルのグラフ
まだまだやらなければならないことがたくさんあるとのことで、この作業がBlenderの公式リリースの一部となるまでには、少なくとも6ヶ月はかかるようです。
初期の結果
Cyclesが10周年を迎え、初期のパフォーマンス結果の発表とCyclesのコントリビューターとのコラボレーションのためにコードが公開されました。新しいアーキテクチャーに関する開発者向けのテクニカルプレゼンテーションがあり、コードは git.blender.org の cycles-x ブランチにあります。
GPUレンダリング
まず、よく知られたベンチマークシーンでのGPUレンダリングの結果です。使用されたシーンは、ボリュームレンダリングなど、まだ実装されていない機能は削除されています。
新しいアーキテクチャへの取り組みが進むにつれ、数値は変化していきます。OptiXのサポートは、数日前にPatrick Mours氏によって追加されました。
シンプルなbmw27シーン以外はどれも大幅にパフォーマンスが向上しています。最も改善されたのは、多くのライトバウンスやシェーダーを使用するインテリアシーンとなっています、
CPUのレンダリング性能は、現時点では従来とほぼ同じですが、新しいアーキテクチャーによって新たな可能性が生まれています。
ビューポートレンダリング
さらに、ビューポートのレンダリングの改善も行われています。
レンダリングカーネルの高速化はもちろんですが、スケジューリング、タイミング、表示のメカニズムを改善することで、ビューポートがよりインタラクティブに感じられるようになることが発見されました。ビューポートでは、アダプティブサンプリングとサンプルのバッチ処理が新たにサポートされ、最初のいくつかのサンプルが終了した後、イメージがより速くクリーンアップされるようになりました。
以下の動画で比較を確認することができます。
■CPUビューポートレンダリング
■Open ImageDenoiserを使用したCPUビューポートレンダリング
■GPUビューポートレンダリング
■ビューポートアダプティブサンプリング比較
今後の展望
今後数ヶ月の間に、さらに多くの最適化のアイデアが試され、次のような不足している機能が復元されていく予定となっています。
- ボリュームレンダリング:より最新のアルゴリズムを使用して、レイマーチングとライトサンプリングを実装する予定です。
- シャドウキャッチャー:間接光を考慮に入れることができる別のアルゴリズムを試します。
- マルチデバイスレンダリング:タイルを使用せずに、よりきめ細かい負荷分散を実験します。
この他にも、新しいアーキテクチャでは、パスガイドなどのレンダリングアルゴリズムをより簡単に導入できるようになります。
削除されている機能
新アーキテクチャーになり、いくつかの機能が削除されています。主なものは以下の通りです。
- OpenCLレンダリングカーネル:限定されたCyclesのスプリットカーネルの実装、ドライバーのバグ、停滞しているOpenCL規格などの利用によってメンテナンスが困難になっています。現在取り組んでいるような大きな変更は、白紙の状態から始める必要があります。
AMDとIntelと協力して、それぞれのGPUで新しいカーネルを動作させていますが、場合によっては異なるAPIを使用することもあります。実装は現在のものよりも高い品質基準に達する必要があり、これは最初のリリースに間に合わないかもしれません。長期的には、すべての主要なGPUハードウェアベンダーをサポートすることが重要な目標となります。 - 分岐したパスのトレース(Branched path tracing:現在、より自動的に必要な場所にサンプルを割り当てることができるように、サンプリングアルゴリズムの改善が行われており、分岐したパスのトレースは廃止される予定です。 アダプティブサンプリングとライトインポータンスサンプリングの改善が鍵となります。
- NLMデノイザー:AIのノイズ除去アルゴリズム、特にOpenImageDenoiseは一般的に良い結果が得られるため、アーキテクチャとワークフローを最適化していきます。
これらの機能は、2.83と2.93 LTSリリースでは引き続き利用でき、サポートされます。
[9/22更新] Cycles X プロジェクトがBlender 3.0 Alphaに追加
2021年9月21日(現地時間)Cycles X プロジェクトがBlender 3.0 Alphaのマスターブランチに追加されました。
The Cycles X project is now in Blender 3.0 alpha! 🎉
Congrats to Brecht Van Lommel, Sergey Sharybin, and the online developers community.
➡️ Learn more https://t.co/wGiZG9CEj4
☢️ Download the experimental (!) builds at https://t.co/d6iAUnqVrj #b3d #DevFund #BlenderCycles pic.twitter.com/4JVYQYXvll
— Blender Developers (@BlenderDev) September 21, 2021
- GPUレンダリングパフォーマンスの大幅な向上
- ビューポートのインタラクティブ性の向上
- 新しいシャドウキャッチャー
- サンプリング設定の刷新
- サブサーフェイス・スキャッタリングの異方性
- 新しいGPUボリュームサンプリング
- PMJサンプリングパターンの改善
コメント