EEVEE の使い方(バージョン 4.2 以降)
EEVEE は Cycles と同じ物理ベースのレンダラーだ。ただしパストレーシングの Cycles と違って、EEVEE はゲームエンジンで使われるラスタライズ法でレンダリングされる。パストレーシング(Cycles)では自動的に処理されるような表現の一部は、ラスタライズ法(EEVEE)ではユーザーが明示的にセットアップする必要がある。
バージョン 4.2 以降の EEVEE はラスタライズ法でレンダリングされ、一部のエフェクト(影・反射・屈折・大域照明など)をスクリーンスペースレイトレーシングで行う。Cycles のようにシーン内でレイを飛ばす3Dのレイトレーシングではないことに注意が必要だ。なので反射や屈折は不正確で、画面外の情報はライトプローブにベイクしなければ取得できない。
この記事ではバージョン 4.2 以降を対象としている。古いバージョンはEevee の使い方を参照。
目次
- シェーダのコンパイルが遅い
- バンド状の影や細かいノイズがでる
- ライトノードが機能しない
- EEVEE Next
- 移行ガイド
- サポートするGPU
- パスのプレビュー
- フィルム
- オブジェクトモーションブラー
- 異方性
- ジッターシャドウ
- 影の解像度
- EEVEE のレンダー方法
- 鏡面反射
- 透過・屈折
- 反射・屈折の品質を上げる
- 反射と屈折とのトレードオフ
- 間接照明・放射
- ボリューメトリック
- セルシェーディング
- 被写界深度
- レイトレースの設定
シェーダのコンパイルが遅い
「プリファレンス > システム > メモリと制限 > 最大シェーダコンパイルサブプロセス数」を増やし、Blender を再起動する。
バンド状の影や細かいノイズがでる
EEVEE: Shadow terminator artifacts with custom normals #123595
影を無効にすると消える。
オブジェクト単位で影を無効
可視性 > レイの可視性 > 影のチェックを外す。
マテリアル単位で影を無効
マテリアルの「影を透過」にチェックを入れ、ライトパスのシャドウレイを使ってシェーダを切り替える。
マテリアルの「影を透過」にチェックを入れ、ライトパスのカメラレイをプリンシプル BSDF のアルファにつなぐ方法でも可能。
マテリアルで影を無効にしたオブジェクトに影をつける
ソリッド化モディフィアをつけて、影を無効にしていないマテリアルをソリッド化メッシュに割り当てる。.blend ファイルダウンロード
ライトノードが機能しない
まだ実装されていない。
EEVEE: Light Node Tree Support #124615
EEVEE Next
バージョン 4.2 の EEVEE はスクリーンスペースレイトレーシングに対応した。これはレンダリング後の情報を利用した2Dのレイトレーシングであり、Cycles のようにシーン内でレイを飛ばす3Dレイトレーシングではないことに注意。重要な改善点は以下の通り。
- レンダータブのレイトレーシングにチェックを入れるだけでエフェクトがすべて有効になる
- 影の品質が向上し、設定項目が減った
- ライトプローブボリュームのベイクが速くなり、オブジェクト単位でベイクできるようになった
ただし以下の点で注意が必要だ。
- シーン外のオブジェクトの情報は取得できない(ただしライトプローブを使えば可能)
- ハードウェアレイトレーシングは未対応
グローバルイルミネーション
全ての BSDF がスクリーンスペースレイトレーシングを使用するようになり、BSDF 数の制限がなくなった。
ライト
シーン内に配置できるライト数の制限がなくなったが、有効なライト数の上限は 4096 だ。
- 屈折マテリアル越しのライトがレンダリングされるようになった
- ライトがレイの可視性オプションをサポート
- Glossy lighting がオブジェクトの裏側に漏れなくなった
影
影生成アルゴリズムが Virtual Shadow Map に変更された結果、設定項目の減少とバイアスとが減少した。
ソフトシャドウの生成にシャドウマップレイトレーシングを利用することで、ソフトシャドウ生成時の影の揺らぎがなくなった。
シャドウマップバイアスは自動計算されるようになったので削除された。シャドウ境界(shadow terminator)の不自然さの対策はまだ開発中。
Virtual Shadow Map は高品質なのでコンタクトシャドウは削除された。
シェーディング
シェーディングモード
ブレンドモードはレンダー方法(Render Method)にリネームされた。レンダー方法の「ブレンド」は以前のアルファブレンドと同じ。
マテリアルのシャドウモードはオブジェクトレベルの制御に変更され、「オブジェクト > 可視性(Visibility)> レイの可視性(Ray Visibility)> 影」で設定するようになった。
バックフェイスカリングシャドウオプションと影を透過(Transparent Shadows)オプションは Virtual Shadow Map のパフォーマンス低下の対策として使用できる。
マテリアル透過の挙動は前のアルファハッシュと同じだ。アルファクリップの挙動を再現したい場合は数式ノードの大きいが使える。
アルファブレンドマテリアルの不透明ピクセルは正しい順番でレンダリングされるようになった。
ディスプレイスメント
ディスプレイスメントがサポートされた。ただし「ディスプレイスメントのみ」が使えない場合は「ディスプレイスメントとバンプ」が使われる。
ディスプレイスメントはマテリアルビューかレンダービューかでのみ有効。
サブディビジョンサーフェスモディフィアのシンプルと組み合わせても使える。
幅
ノードのマテリアル出力に「幅ソケット」が追加された。これは屈折・SSS(サブサーフェススキャッタリング)・半透明の制御に使える。これは屈折の深度(Refraction Depth)の置き換えだ。
SSS(サブサーフェススキャッタリング)
新しい SSS の実装は BSSDF ノードの数に制限がなく、任意の半径を設定できるようになった。またオブジェクト間でリークがなくなり、エネルギー損失がなくなっている。
サブサーフェスの透光(subsurface translucency)は常に計算されるようになったのでオプションは削除された。
ライトプローブ
ベイクが高速化され、オブジェクト単位でベイクできるようになった(ベイクの場所もデータタブへ移動されている)。なのでボリュームライトプローブは他のファイルからリンクして使える。
寄与の「ワールド」にチェックを入れるとスカイライティングをベイクすることもできる。
ライトプローブのボリュームはボリューメトリックに影響与える。しかし、オブジェクトボリュームとワールドボリュームはライトプローブのボリュームに影響を与えない。
ライトプローブの球や平面は動的に更新される。加えて、前のバージョンの EEVEE より反射がはっきり映るようになっている。
ボリューム
ワールドボリュームはディスタントライト(ワールドとサンライト)を完全にブロックするようになった。古いファイルは「ワールド > ボリューム」パネルで変換できる。
ボリュームライティングはフリッカーを避けるためディザ合成される。
ワールドが存在しない場合、深度の範囲は自動的に最大化される。
メッシュオブジェクトのボリュームの交差の計算が正確になった。古いバージョンではレンダリング境界ボックスが使われていた。
イメージの安定性
velocity aware temporal super sampling によりイメージの安定性が増した。
「レンダータブ > クランピング」で間接照明のクランピングを調整できる。
外部リンク
Blender 4.1 - EEVEE-Next Feedback
移行ガイド
EEVEE migration from older versions to 4.2
ワールド
ワールドボリュームはディスタントライト(ワールドライト・サンライト)を完全にブロックするようになった。旧 EEVEE と同じルックを再現するにはメッシュオブジェクトへ変換する必要がある。トップバーのヘルプメニューかプロパティパネルの「ワールド > ボリューム」で変換できる。
ワールドライトは推論された光源位置から影を生成するようになった。古いファイルを開いた場合、この機能は無効化されている。設定場所は、プロパティパネルの「ワールド > 設定 > 太陽 > 影」。
影
古い設定のサンライトの影の解像度は自動的に変換されない。単に「データ > ライト > 影 > 解像度を制限」に置き換えられるだけだ。この値が小さすぎる場合、パフォーマンスが悪化するか、Shadow buffer full エラーが発生する。その場合は「解像度を制限」の値を大きくすると解決する。
古いバージョンの「レンダー設定 > 影 > ソフトシャドウ」は光源ごとに設定できるようになり、「データ > ライト > 影 > ジッター」になった。シャドウマップレイトレーシングはより低いコストでそれらしいソフトシャドウを作成するので、この設定はデフォルトで無効化されている。シャドウマップレイトレーシングの結果が気に入らないならば、ライトごとにこの設定を有効化する。
ジッターシャドウは高コストなので、ビューポートでは無効化されている。「レンダー > 設定 > サンプリング > ビューポート > ジッターシャドウ」にチェックを入れると、ビューポートでジッターシャドウが有効になる。
新しいシャドウマップは高精度なので、コンタクトシャドウは削除された。ライトリークに対処するには光源の「解像度を制限」の値を小さくする。
マテリアル
マテリアルのブレンドモードはレンダー方法に置き換えられた。古いアルファクリップや不透明のふるまいを再現するには、「数式ノードの大きい」を追加することで再現できる。
マテリアルのシャドウモードは「オブジェクト > 可視性 > レイの可視性 > 影」に置き換えられた。オブジェクトに設定されているすべてのマテリアルが「影のモード > なし」の場合、この設定は無効化される。
影のモードがアルファクリップの場合、ブレンドモードの互換性に従い自動的に対処される。
影のモードが不透明の場合、「マテリアル > 設定 > 影の透過」が無効化される。
影のモードがなしの場合、マテリアルノードツリーは影を無効化するよう自動的に修正されるはずだ。手動で修正する場合は以下の画像を参照。
新しく導入された Thickness ワークフローは透過マテリアルの動作に影響がある。
古いマテリアルがスクリーンスペース屈折を使っている場合、屈折の深度は自動変換される。
半透明 BSDF は、ゼロでない厚みがある場合、より正確な近似をするようになった。古いバージョンの動作を再現する場合は、0を設定した値ノードをマテリアル出力の幅ソケットにつなぐ必要がある。
サブサーフェスの透光は常に評価されるようになったので削除された。サブサーフェスの透光はオブジェクトの内部の光の吸収の計算にマテリアル出力の幅ソケットに入力された値を使う。
「マテリアル > 設定 > 幅 > 影から」にチェックを入れると、シャドウマップの厚みを改善するのにマテリアル出力の幅ソケットに入力された値が使われる。これは古いバージョンの影の動作を再現するのにも使える。
レンダー方法の「ブレンド」はスクリーンスペース屈折とライトプローブの平面をサポートしない。詳細は EEVEE: Add options for fast refraction evaluation を参照。
レンダー設定
ボリュームが間接光で照らされるようになった。古いバージョンを再現する場合は「レンダー > 制限(Clamping)> ボリューム > 間接照明」に0に近い値を設定する。
ライトプローブ
ライトプローブボリュームのサンプル位置と influence volume が変更されている。ライトリークを避けるために手動で拡大する必要があるかもしれない。
ライトプローブボリュームはサーフェル解像度を設定できるようになった。古いバージョン作成されたシーンをベイクするには、サーフェル解像度の設定が必要になるかもしれない。詳細はマニュアルを参照。
訳注:サーフェルは surface element の略で、シーンのサーフェスを小さなディスク状の要素に分割して表現する技術。それぞれのサーフェルには位置・法線・半径・色・反射特性などの情報が格納される。サーフェルの数を増やせば品質は上がるが、ベイクとレンダリングに時間がかかるようになる。詳細は Elmer Dellson. Dynamic Diffuse Global Illumination Using Probes and Surfels p. 19 を参照。サーフェルのイメージ図。色のついている円がサーフェルで、中央の球がプローブ。
ライトプローブボリュームオブジェクトはオブジェクト単位でベイクできるようになった(データ > ベイク > ライトキャッシュをベイク)。一括でのベイクは「シーン > ライトプローブ > 全ライトプローブボリュームをベイク」でできる。
ライトプローブ球の設定は「ワールド > 設定 > ライトプローブ」と「シーン > ライトプローブ」に移動された。キューブテクスチャではなく1枚のテクスチャを使うようになったので設定内容も変化している。
ライトプローブ球と平面は拡散光(diffuse lighting)のみ記録する。すべてのスペキュラーと光沢ライティングは拡散光に変換される。
ライトプローブの可視性のコレクションはオブジェクト単位の可視性オプションがあるため削除された。旧バージョンでの設定はマニュアルで設定変更が必要になる。
ブルーム
ブルームは削除された。ビューポートコンポジターのグレアノードのブルームで再現できる。
サポートするGPU
System Requirements for Blender
EEVEE の実行には OpenGL 4.3 以降をサポートする GPU が必要になる。その他の条件は以下の通り。
macOS
macOS 11.2 (Big Sur) 以降。
NVIDIA
GeForce 400 シリーズ以降、テスラアーキテクチャの Quadro 以降で、OS は Windows と Linux のみサポート。
AMD
HD 7000(第1世代 GCN)以降で、OS は Windows と Linux のみサポート。
Intel
Broadwell 以降。製品名だと、Celeron 32xx/37xx, Pentium 38xx, 第5世代 Core i3/i5/i7 5xxx。対応GPU_Graphics_4200%EF%BD%9E5200)(英語)。
パスのプレビュー
3Dビューのシェーディングがレンダーかマテリアルプレビューのとき、AO・法線・ミスト・直接サブサーフェス・サブサーフェスカラーをプレビューできる。
フィルム
フィルターサイズ
EEVEE のレンダリング結果はジャギーが出るので、画面全体をぼかしてジャギーを目立たなくする必要がある。このぼかしの量を決めるのがフィルターサイズだ。
背景の透過
フィルムの透過にチェックを入れる。
オーバースキャン
EEVEE のエフェクトのほとんどはレンダリングされた画像を加工し合成することで生成される。しかしこのスクリーンスペースエフェクトは画面端で正しい結果にならないことがある。「プロパティパネル > レンダー > フィルム > オーバースキャン」にチェックを入れると、これを解消できる。ただし、より高い解像度でレンダリングすることになるのでパフォーマンスは悪化する。
オブジェクトモーションブラー
バージョン 4.2 からはアニメーション中はビューポートでもモーションブラーがかかる。
シャッターでボケの量をコントロールする。数値が大きいほどぼける。EEVEE のモーションブラーは影はぼけないので、影がオブジェクトの近くにあると不自然になる。
異方性
EEVEE で異方性はサポートされていない。以下の方法で似た効果が得られる。
I have prepared an image for you. I'm sorry. I exaggerated a little. My material is not physically correct.
— Studio GANMA© [含真] (@fu1002) October 8, 2019
The four textures combine to look physically correct. I made this because the material of "Anisotropy BSDF for Cycles" doesn't look real for me. pic.twitter.com/IzKib453Dh
ジッターシャドウ
旧 EEVEE のソフトシャドウのアルゴリズムはジッターで設定できる。高負荷なのでデフォルトでは無効化されている。
設定
光源の「影 > ジッター」にチェックを入れる。ビューポートでのプレビューを有効にするには、「レンダー > サンプリング > ビューポート > ジッター」にチェックを入れる。
影の解像度
影の解像度は光源ごとに設定する。光源の「解像度を制限」を小さい値にすると、影の品質が上がる。
影の解像度を一律に下げたい場合(影の品質を下げてパフォーマンスを改善したい場合)は、「レンダータブ > サンプリング > 影」の値を下げる。
EEVEE のレンダー方法
ディファードレンダリングのディザーとフォワードレンダリングのブレンドとがある。
ディザー(ディファードレンダリング)VS. ブレンド(フォワードレンダリング)
ディザーの利点は大量の光源が利用できることだ。ディザーでは光源の数を2倍にしても負荷の増加量は小さいのに対し、ブレンドは光源の数が2倍になると描画負荷も2倍になる。
基本的にディザーを使うが、以下の状況ではブレンドを使う。
- 描画順を制御したい
- レイトレースエフェクトの影響を受けたくない・与えたくない
- ノイズのない透過が欲しい
ディザー(ディファードレンダリング)
ディザーとは透過の表現方法のひとつだ。ディファードレンダリングでは(半)透明オブジェクトはレンダリングできない。そこで(半)透明オブジェクトを透過度に応じてランダムにレンダリングしないことにして、透過した部分をデノイズすることで透過を表現するのがディザーだ。しかし不透明オブジェクトと同時に処理できるわけではなく、不透明オブジェクトをレンダリングした後で追加で(半)透明オブジェクトをレンダリングする。
ブレンドに対するディザーの利点
- 大量の光源が扱える
- レイトレース対応
- レンダーパスに対応
レイトレース伝播
レンダー方法がディザーである場合にレイトレース伝播にチェックを入れると、(半)透明のマテリアルになり、スクリーンスペース屈折が有効になる。EEVEE ではガラス BSDF や伝播を設定するだけでは(半)透明のマテリアルとはみなされず、透過・屈折しない。
スクリーンスペース屈折はレンダリングされた画像を加工しているだけなので、不透明オブジェクトの間接照明の計算は先に済ませておく必要がある。不透明オブジェクトの間接照明の計算時に、レイトレース伝播にチェックを入れたマテリアルはまだレンダリングされていないので、レイトレース伝播にチェックを入れたマテリアルは不透明オブジェクトの間接照明に影響を与えない。
つまり不透明オブジェクトは透過マテリアルの間接照明に影響を与えるが、透過マテリアル(レイトレース伝播にチェックを入れたマテリアル)は不透明オブジェクトに影響を与えない。レイトレース伝播にチェックの入っているマテリアル間で間接照明は計算されることに注意。
ディザーのレンダリングの大枠は eevee_pipeline.cc の DeferredPipeline::render で見れる。不透明オブジェクトや透過マテリアルのレンダリングは eevee_pipeline.cc の DeferedLayer::render で行われている。
ディザーにおける伝播とアルファとの違い
アルファはスクリーンスペース屈折エフェクトがないが、伝播はスクリーンスペース屈折エフェクトがある。
ブレンド(フォワードレンダリング)
旧のアルファブレンドだが機能は大幅に削減されている。屈折の機能がなくなっている。屈折はディザーでしかできない。Principled and Glass BSDF - Transparency parameters #123126
アルファブレンドの透過具合はプリンシプル BSDF のアルファで設定する。伝播やガラス BSDF を使った透過はできない。
アルファブレンドはカメラから見て奥から手前に向かう順番にレンダリングされる。透過オブジェクトの制限数に達すると残りの透過オブジェクトはレンダリングされない。手前のオブジェクトがレンダリングされないのでこれはすぐに気付く。
アルファが1のブレンドマテリアルは深度バッファに出力されるようになったので、正しい順番でレンダリングされるようになった。つまりアルファが1のブレンドマテリアルは描画順の操作ができない。しかしアルファが1のブレンドマテリアルは AO が使える。
ブレンドは光源が大量にあるシーンではパフォーマンスが問題になる。たとえば、RTX3050 のマシンで以下のシーンでビューポートの FPS が9になる。
- シーンには平面1個とキューブ1個と 80 個のポイントライトがある
- ブレンドマテリアルはキューブのみ
非表示にしたいマテリアルをブレンドにすると、透視眼鏡が簡単に作れる。
透過マテリアルの描画順序問題
不透明オブジェクトは原点を基準にソートされ、カメラから見て手前のオブジェクトから順に描画される。オブジェクト内に複数のマテリアルがあるときは上から順に描画される。
レンダー方法でブレンドを選択した場合、透明・半透明オブジェクトはオブジェクトの原点を基準にソートされ、カメラから見て奥のオブジェクトから順に描画される。
バージョン 4.2 の EEVEE ではピクセル単位・ポリゴン単位のソートはサポートしていない。
パーティクルで透過オブジェクトを大量(1,000以上)に出現させる場合、描画順によっては意図した結果にならない。このようなエフェクトを正しくレンダリングしようとすると、ソート負荷とレンダリング負荷とが高くなりすぎる。
レンダリングオーダー
- レイトレース伝播にチェックの入っていないディザーマテリアル
- レイトレース伝播にチェックの入ったディザーマテリアル
- ブレンドマテリアル
正確には以下のようになる。
- レイトレース伝播にチェックの入っていないディザーマテリアル
- レイトレース伝播にチェックの入っていないディザーマテリアルのレイトレース(間接照明・スクリーンスペース反射など)
- レイトレース伝播にチェックの入ったディザーマテリアル
- レイトレース伝播にチェックの入ったディザーマテリアルのレイトレース(間接照明・スクリーンスペース反射・屈折など)
- ブレンドの不透明マテリアル
- ブレンドの透明マテリアル
ブレンドマテリアルは反射・屈折に映らず、間接照明にも影響を与ず、間接照明の影響を受けない。
鏡面反射
反射平面
鏡のような平面の反射は「ライトプローブ > 平面」を使えば表現できる。実際に反射させるには、反射平面の位置に平面ポリゴンを配置し、平面ポリゴンに粗さ(Roughness)を0にした光沢BSDFをつける。プリンシプルBSDFのメタリックを1にして、粗さを0にすることでも可能。
反射平面は平面にしか使えないが、スクリーンスペースレイトレーシングと違い、画面外のオブジェクトを正確かつリアルタイムの反射ができることが強みだ。
欠点
反射平面の数だけレンダリング回数が増えるので負荷が高い。
レイトレースエフェクトの反射・合わせ鏡はサポートされてない。プローブの球と平面とはスクリーンスペースレイトレースのエフェクトが乗らないので、シーンによっては不自然になる。
メッシュの反射
EEVEE は平面でないオブジェクトの正確な鏡面反射は計算できない。代わりに球もしくは箱で反射を近似するかレイトレーシングかのどちらかが使える。レイトレーシングは動くオブジェクトや動く光源によるシェーディングの変化も反射できるが、スクリーンに映っていないオブジェクトは映らない。ライトプローブの球はリアルタイムでスクリーンに映っていないオブジェクトも反射できるが、あくまで球による近似だ。
ライトプローブの球
反射するメッシュの位置にライトプローブの球を配置すると、近似された反射が写るようになる。この例ではスザンヌのマテリアルにメタリックを1にしたプリンシプルシェーダを使っている。
自分自身が映る問題は、ライトプローブのキャプチャのクリッピングを変更することで対処する。
透過・屈折
EEVEE の屈折は法線と厚みとの情報からオブジェクト後方の画像をゆがませることで実現している。入射光がオブジェクト内で反射しているわけではないので、複雑な形状では Cycles とまったく異なるレンダリング結果になる。
バージョン 4.2 からはマテリアル出力ノードの幅で厚み(単位はメートル)を設定できるようになった。幅は値ノードを使って入力する。
ディザーの設定
- レンダータブのレイトレーシングにチェックを入れる
- プリンシプル BSDF の伝播を設定
- マテリアルのレンダー方法をディザーにする
- マテリアルのレイトレース伝播にチェックを入れる
- マテリアルの幅を「厚みのある板」と「球」とから適切なものを選ぶ
ガラスのレンダリング
ポリゴン単位でメッシュをソートできないので、ガラスコップのような透明なオブジェクトをレンダリングすると、視点によってはレンダリング結果がおかしくなる。そのようなオブジェクトをレンダリングする場合は「裏面の非表示」オプションにチェックを入れる。
ブレンドの設定
伝播やガラス BSDF を使った透過はできない。
- マテリアルのレンダー方法をブレンドにする
- プリンシプル BSDF のアルファに透過具合を設定する
コンポジター
アルファ透過は法線や深度が正しく取得できない。アルファ透過マテリアルの深度や法線を取得したい場合は、旧の EEVEE 同様に、ブレンドと透過とを無効にしてビューレイヤーを使ってレンダリングする必要がある。ブレンドマテリアルは法線が出力されない。
ディザー透過
伝播透過
ディザーで伝播を使って透過すると深度・法線等が正しく取得できる。
アルファ透過
ディザーでアルファを使って透過すると、深度・法線などのパスにノイズがのり、使い物にならない。
ブレンド透過
アルファが1未満のブレンドマテリアルは深度・法線などのパスに出力されない。アルファが1のブレンドマテリアルは深度は出力されるが、法線は出力されない。
反射・屈折の品質を上げる
- サンプル数を増やす
- レイトレーシングの解像度を1:1にする
- スクリーントレーシングの精度を上げる
反射と屈折とのトレードオフ
スクリーンスペース反射とスクリーンスペース屈折とは両立しない。
スクリーンスペース屈折に映したいマテリアルはレイトレース伝播にチェックを入れてはいけない。なので、スクリーンスペース反射にスクリーンスペース屈折マテリアルは映らない。逆にスクリーンスペース反射マテリアルのレイトレース伝播にチェックを入れると、レイトレース伝播にチェックを入れたマテリアルも反射に映る。ただし反射マテリアルはスクリーンスペース屈折に映らなくなる。
ライトプローブを使えば、反射とスクリーンスペース屈折とを両立させることは可能。ただし、ライトプローブに反射したマテリアルの屈折は表現できない。
間接照明・放射
間接照明はスクリーンスペースレイトレーシングを使うかライトプローブボリュームを使う。
スクリーンスペースレイトレーシング
利点
- リアルタイム
- 設定やベイクが不要
- 情報がない場合は自動的にライトプローブボリュームを参照してくれる
欠点
- 画面に映っていないオブジェクトは影響を与えない
- レンダリング後の画像は厚みの情報がないので、厚みが不正確
ライトプローブボリューム
利点
- スクリーンスペースレイトレーシングより計算負荷が低い
- 画面外のオブジェクトの情報もベイクできる
欠点
- リアルタイム更新ができない
- 設定が面倒
ライトプローブ以外にも、適切な位置に間接照明を表現するエリアライトを配置する昔ながらのテクニックが有効かもしれない。
キャッシュされる間接照明は視点から独立しているものに限られる。なので反射平面の情報はキャッシュされない。
キャッシュされるオブジェクトは現在のビューレイヤーにありレンダーで有効なオブジェクトに限られる。ビューポートで可視だがレンダリングされないオブジェクトはキャッシュされない。
注意事項
ライトプローブボリュームはアニメーションしないため、アニメーションするキャラクターやオブジェクトの情報はベイクしてはならない。
ライトプローブボリュームのサンプルポイントがポリゴンの内部に入らないよう注意する必要がある。そのような点の周辺ではオブジェクトが必要以上に暗く表示される。これを避けるためには複数のライトプローブボリュームを配置するしかないが、ライトプローブボリュームの継ぎ目のシェーディングが不自然になるデメリットがある。
ボリューメトリック
God Ray のようなエフェクトなら Cycles より EEVEE が得意だ。正確ではないがレンダリングは高速でノイズがまったくない。3D テクスチャを使ってリアリティをあげることもできる。
ただし EEVEE は厚みのある煙や炎のような光を発するエフェクトは苦手だ。
メッシュにボリューム変換(Mesh to Volume)モディフィアを追加することで、メッシュ形状のボリュームを作成できる。
設定
プリンシプルボリュームノードを使うのが簡単だ。ボリューメトリックノードはマテリアル出力のボリュームソケットにつなぐことに注意。ボリュームの形は密度を設定することで変形できる。
tips
You may want to change the volume "Start" and "End" properties to fit the scene better. The volumes are rendered as a lot of slices through the scene at intervals (1 for each sample), but if the start is too low then lots are wasted near the camera. pic.twitter.com/CsnAjaMDVP
— Late as usual (@lateasusual_) August 13, 2021
Volumetrics の Start, End を適切に設定すると、解像度が上がる。
セルシェーディング
バージョン 4.2 以降のシェーダーから RGBへノードはスクリーンスペース反射やスクリーンスペース屈折の情報を取得できなくなった。
シェーダーからRGBへ(Shader to RGB)ノードを使う。一部のレイトレースエフェクトは反映されない。そのほかのセルルックエフェクトは EEVEE のセルルック技法まとめを参照。
シェーダーからRGBへノードは Cycles では使えない。
被写界深度
被写界深度を有効にするにはレンダータブの「被写界深度」にチェックを入れる。被写界深度の設定はカメラで行う。ボケの量を増やすには F 値(F-stop)の値を小さくする。ピントの位置は適当なエンプティを配置して、焦点のオブジェクト(Focus on Ojbect)を設定する。
ビューポートで被写界深度エフェクト
ビュー > カメラ設定 > アクティブカメラ(Numpad 0)でカメラからの視点に切り替え、サイドバー(N)で「カメラをビューにロック」にチェックを入れる。
被写界深度のスポイト
ビュー > カメラ設定 > アクティブカメラ(Numpad 0)でカメラからの視点の状態のとき、右クリック > 被写界深度(スポイト)で、被写界深度をスポイトで設定できる。
制限(Clamping)
直接照明
マテリアルが反射可能な最大明るさを制限する。レンダリングの正確さは低下するが、エイリアシングや firefly(高輝度ノイズ)を抑制できる。0にすると無効になる。小さい値ほど影響力が大きくなる。
間接照明
機能は直接照明と同じで、レイトレーシングとライトプローブからの影響を制限する。
サンプリング
サンプル数
上げるとノイズが減るがレンダリングに時間かかる。ビューポートのサンプル数は0を設定でき、そうすると常にサンプルし続ける。GPU に常に負荷がかかり続けるので0は非推奨。
テンポラルリプロジェクション
ビューポートを動かしたり、アニメーションさせたりしている状態でもノイズを除去する。ゴーストが発生することがある。
ジッターシャドウ
ビューポートでジッターシャドウを有効にする。レンダリング時にはチェックを外していても有効になる。半透明マテリアルで影を落とす場合に影響がある。
レイ数
光源に向かって投げるレイの数。数を増やすとランダムシャドウサンプリングに起因するノイズが減る。
ステップ数
シャドウレイ1本がシャドウマップをサンプルする回数。多くすると影が柔らかくなるが、負荷が高くなる。
ボリュームシャドウ
ボリュームによる光の吸収を近似する。計算負荷が高く制限もある。
解像度
シャドウマップの解像度。VRAM が少ないマシンではこれを小さくするとパフォーマンスが上がる。
光の閾値
ライティングに影響を与える最低の明るさ。光源から遠いオブジェクトのライティングを省略できるのでパフォーマンスが上がる。
光源の「カスタム距離」設定はこの値より優先されるので注意。
レイトレーシング
旧 EEVEE の以下の機能はレイトレーシングに統合された。
- アンビエントオクルージョン(AO)
- SSS(サブサーフェススキャッタリング)
- 影
- 間接照明
- スクリーンスペース屈折
- スクリーンスペース反射
以下の機能は削除された。
- ブルーム(ビューポートコンポジターで実現可能)
レンダータブのサンプリングとレイトレーシングで設定できる。設定は品質と速度とのトレードオフがある。品質を下げるとレンダリングは速くなる。
方式
ライトプローブ
間接照明の計算に手動で配置したライトプローブボリュームを使う。計算は速いが、配置の手間がかかり、動体には対応しない。
スクリーントレース
深度バッファに対しレイトレースを行うことで間接照明を計算する。画面外のオブジェクトにはライトプローブボリュームが使われる。
利点
- リアルタイム
- 動体に対応
- 設定不要
欠点
- 計算負荷が高い
- 画面外のオブジェクトはライトプローブボリュームを使う必要がある
解像度
レイトレースを行うバッファの解像度。1:1は高負荷だが最も高画質。
最大粗さ
レイトレースが行われる最大粗さ。1の時、常にレイトレースが行われる。この値を超える粗さを持つサーフェスは、粗さが大きくなるにつれて高速 GI 近似が行われる確率が増える。
スクリーントレーシング
精度
精度を上げるとレイの最大到達距離が短くなることに注意が必要。
幅
深度バッファから読み取れない部分の厚み。大きくすると反射が不自然になりフリッカーが発生する。小さくするとレイがヒットしなくなり、反射が不自然になる。
デノイズ
デノイズはレイトレースのノイズを除去する。
空間を再利用
隣接するピクセルのレイを再利用する。これが有効な場合、面を横断する箇所で光が漏れる事がある。
一時的に蓄積(Temporal Accumulation)
前回のレイトレーシングの結果の続きからレイトレーシングを行うことでサンプルを増やす。Firefly の対策になるが、カラーバイアスが発生することがある。動画において時間的な安定性が増加し、レンダリングの収束が速くなる。
バイラテラルフィルター
レイトレーシングの結果をぼかすのにバイラテラルフィルターを使う。
高速 GI 近似
粗さが大きい場合はレイトレースではなく高速 GI 近似が使われる。高速 GI 近似は計算が速くノイズが少ない。
方式
アンビエントオクルージョン
ライトプローブを使って遮蔽を計算する。計算が速い。
グローバルイルミネーション
周辺のオブジェクトの光の反射も含めて計算する。
解像度
小さいほど計算速度が速くメモリ使用量が少ないが、結果がぼける。
レイ数
ピクセルあたりの GI レイ数。多いほどノイズが少ないが計算が遅い。
ステップ
GI レイあたりのサンプル数。多いほどノイズが少ないが計算が遅い。
ステップ数が多い場合は、近辺の厚さを小さくすることで、精度を上げられる。
精度
精度が高いと計算が遅い。
距離
GI 近似が影響を受ける最大距離。0は無限遠。
近辺の厚さ
環境遮蔽を計算するさいの仮想の厚み。光漏れやコンタクトシャドウの品質を見つつ、小さい値を選択する。
遠方
おそらく見えない部分の角の角度。大きい値を設定すると、オブジェクトは薄くなる。
バイアス
自己交差アーティファクトを避けるためのバイアス。