2025年5月23日(現地時間) – Clément Foucault氏によってBlender NPR(ノンフォトリアリスティックレンダリング)プロジェクトに関する最新情報が共有されました。
このプロジェクトは、Blenderにおける非写実的な表現の可能性を大幅に拡大することを目指しています。ここでは、その発表内容を紹介したいと思います。
プロジェクトの背景と初期の試み
NPR(ノンフォトリアリスティックレンダリング)プロジェクトは、2024年7月に行われたDillon Goo StudioとBlender開発者を交えたワークショップを機に正式にスタートしました。
当初ユースケースは明確だったものの、アーキテクチャや全体的な設計は手探りの状態でした。そこで、このプロジェクトはNPRワークフローに不可欠な多くのシェーディング機能(フィルターサポート、カスタムシェーディング、AOVアクセスなど)を含むプロトタイプの開発から始まることになりました。(昨年の以下の記事で紹介)
このプロトタイプはコミュニティから大きな注目を集め、ユーザーからは様々な素晴らしい作例が寄せられました。これにより、多様なエフェクトに対する関心の高さが明らかになりました。

by Azra Reyes
プロトタイプの課題と設計の見直し
このプロトタイプは、フィルター処理やカスタムシェーディングといったNPRに不可欠な機能をEEVEEレンダラー内で実現しましたが、その柔軟性と引き換えに、Cyclesレンダラーとの連携や将来的な機能拡張に課題が生じました。
これらの問題を解決するため、プロジェクト設計が見直されました。その結果、以下の2点を柱とするアプローチが採用されました。
- フィルターと色変更をマルチステージコンポジットワークフローへ移行する。
- シェーディング機能はレンダラーのマテリアルシステム内に維持する。
マルチステージコンポジット について
NPRに不可欠なコア機能の一つが、シェーディングされたピクセルにアクセスして変更を加える能力です。
これをレンダーエンジン内で行うことは非常に難しく、EEVEEではShaderToRGBノードが使えますが多くの制限があり、CyclesではカスタムOSLノードで限定的な効果しか得られませんでした。
その結果、プロダクションパイプラインでは、シーン全体にわたる非常に面倒で時間のかかるコンポジット作業が必要になることが多くありました。この方法の大きな欠点は、アセット固有のコンポジット設定をすべて手動でシーンコンポジターに統合・管理しなければならない点です。
そこで提案されたのが、「アセットレベルで定義」するという考え方です。つまり見た目を決定する設定を個々のアセット自体に設定しておくというアプローチです。
マルチステージコンポジットは、この仕組みを実現するものです。具体的には、見た目を調整するための合成パイプラインの一部が、特定のオブジェクトやマテリアルに直接関連付けられることになります。この部分は、レンダリングされた色、AOV(Arbitrary Output Variables)、レンダーパスを入力として受け取り、変更されたレンダリングカラーを出力します。

上の例では、Suzanne(モンキー)オブジェクトの外観は、そのアセットファイル内のオブジェクトレベルで定義されています。他の要素と共にシーンにリンクされると、自動的に他のアセットと結合されます。これにより、アセット固有のルックデベロップメントが容易になり、シーン間での一貫性も保たれます。
この新しい「マルチステージコンポジット」では、これまで使っていたコンポジットノードを引き続き利用できますが、オブジェクト単位で調整する場合と、マテリアル単位で調整する場合とでは、使えるノードの種類が一部異なります。
この仕組みによって、質感を作るマテリアルノードの編集と、見た目を調整するコンポジットノードの編集作業の連携がスムーズになり、全体の作業効率が向上することが期待されます。
さらに将来的には、Blenderの手描きアニメーション機能である「グリースペンシル」のエフェクトなども、この新しい仕組みで実現できるようになる可能性があるとのことです。

異なるスタイルを持つ3つのオブジェクトがシームレスに統合された最終レンダリング。
この機能については、多くの議論がされています。
主な検討事項をみる
- どの単位で処理を行うのが最も効果的か?
- オブジェクト単位: 複数の質感を持つ素材全体に共通の処理を適用できます。
- マテリアル単位: 質感ごとに固有の処理を定義でき、その結果を複数のオブジェクトで共有できます。
- コレクション単位: 多数のオブジェクト(例:背景全体)にまとめて同じ効果を適用できます。
- ビューレイヤー単位: コレクション単位と似ていますが、別途レンダリングが必要になるという手間があります。
- 複数の単位で処理を行う場合、処理の順番をどう組み合わせるか?
- 処理を行う際の色空間は?
- 一貫性を保つため、質感設定(マテリアルノード)と同じ「シーン参照リニア空間」を使用します。
- レンダリング設定はどのように行うか?(シーン全体の設定か、専用の命令系統か)
- オブジェクトの形状合成(Out of shape compositing):
- オブジェクトの輪郭を超えてピクセルを加工できる機能は非常に有用ですが、処理負荷も大きくなります。
- 特に、複数のオブジェクトが重なり合う場合に、どのオブジェクトの加工を優先するかの順序決定が課題となります。(単純な奥行き順、自動的な深度拡張、ユーザーによる深度指定、シーンコンポジターでの明示的な順序管理などが検討されています。)
- オブジェクトが画面外にある場合の処理は?
- 基本的には画面全体に対して処理を行いますが、画面外のオブジェクトに対しては処理を省略する設定や、影響のある処理だけを実行する仕組みが考えられます。
- 分割レンダリング(Split rendering):
- 特定のエフェクトでは、一部のオブジェクトを別の画像として個別にレンダリングする必要があります。これにより、手前のレイヤーの色情報や、他のオブジェクトに隠れていない状態のオブジェクト情報を利用できます。
- この処理は、シーンを複数回レンダリングするため負荷が高いですが、重なっていない画像を統合することでメモリ使用量を大幅に削減できる可能性があります。
- ポリモーフィックAOV(Polymorphic AOVs):
- 特定の条件下では、各ピクセルが単一の面にしか対応しないことを利用して、AOV(補助的な画像情報)をよりメモリ効率の良い形式で保存する方法です。これはユーザーが意識することなく自動的に行われます。
詳細についてはこちらの開発タスクをご覧ください。
アンチエイリアス出力の改善
コンポジットワークフローにおける大きな課題の一つがアンチエイリアス(AA)です。
アンチエイリアス処理された入力をコンポジットすると、解決が難しいフリンジ(縁のギザギザ)が発生することがよくあります。

左: レンダーパス、中央: オブジェクトマット、右: 抽出されたオブジェクトレンダーパス
一般的な回避策は、AAなしで高解像度でレンダリングし、コンポジット後にダウンスケールするというものですが、これは非常にメモリを消費し、通常は理想的とは言えないフィルタリングで4倍または9倍のAAしか実現できません。
もう一つの選択肢はポストプロセスAAフィルターを使用することですが、これはアニメーションでフリッカー(ちらつき)を引き起こすことがよくあります。

左: コンポジター ベースのシェーディングの前にアンチエイリアシングを実行。
右: コンポジターの後にアンチエイリアシングを実行。
この問題に対する解決策は、各AAステップでコンポジターを実行し、レンダラーが行うようにコンポジットされたピクセルをフィルタリングすることです。これにより、最終フレームのメモリ使用量が増加するだけで、最高の画質が得られます。
収束済み入力の処理
現代のレンダラーの主な問題の一つは、出力がノイズを含んでいることです。NPR(非写実的表現)では、色をくっきり分けたり、線をはっきり出したりといった、シャープな変換処理が多く用いられます。そのため、NPRワークフローとは相性が良くありません。
例えば、アンビエントオクルージョンノードに対して一定補間されたカラーランプを適用すると、ノイズの多い出力に対して平均化操作が実行されてしますので、次の真ん中の画像のようになってしまいます。

左: オリジナルの AO、中央: マテリアルの一定ランプ、右: コンポジターで適用されたランプ (希望)
これらのエフェクトをコンポジット段階で実行することで、最終的に収束した画像を入力として使用できます。しかし、前述の通り、コンポジターはAAフィルタリングの前に実行される必要があります。
したがって、マルチステージのコンポジターは、収束済みまたはノイズ除去された入力を扱いながら、AA が適用されていない状態で動作できる必要があります。言い換えると、限られたレンダーサンプル(計算リソース)は、「レンダーパスの収束処理」と「最終的なコンポジターでのAA処理」という2つの工程の間で振り分けられる必要があります。
エンジン機能の強化
スタイライズの柔軟性を高めるためにはコンポジットワークフローの改善が重要ですが、レンダーエンジン内部で実装するほうが適している機能もあります。
レンダーエンジン内に組み込むことで、光の伝播やその他のレンダリング機能と自然に連携できます。これらの機能は「NPR(非写実的レンダリング)」だけでなく、エンジン全体の設計にもマッチします。
具体的には、以下の機能がエンジン内で直接サポートされる予定です。
- Ray Queries
- Portal BSDF
- Custom Shading
- Depth Offset
今後の展望
これらの開発は、2025年11月に予定されているBlender 5.0のリリース後に開始される予定です。
プロジェクトの進捗状況は、関連する開発タスクやアナウンスメントスレッドで確認できます。
























コメント