dskjal
広告
広告

Eevee の使い方

カテゴリ:blender

Eevee は Cycles と同じ物理ベースのレンダラーだ。ただしパストレーシングの Cycles と違って、Eevee はゲームエンジンで使われるラスタライズ法でレンダリングされる。パストレーシング(Cycles)では自動的に処理されるような表現の一部は、ラスタライズ法(Eevee)ではユーザーが明示的にセットアップする必要がある。

この記事ではバージョン 2.83 LTS 以降を対象としている。

公式ドキュメント(英語)

Blender Cycles vs. Eevee - 15 Limitations of Real Time Rendering in Blender 2.8

EEVEE-Next

EEVEE-Next はレイトレーシングに対応した Eevee だ。2023 年現在 Eevee はレイトレーシング対応のためのリライトを行っているBlender 4.1 - EEVEE-Next Feedback

EEVEE-Next のリリースは延期され、Blender 4.2 に搭載される予定だ

目次

サポートするGPU

Supported GPUs in Blender 2.80

Eevee の実行には OpenGL 3.3 以降をサポートする GPU が必要になる。しかし古い GPU は OpenGL 3.3 以降をサポートしていても、ドライバー等のバグのため正しく動作しないことがある。Blender 2.80 では OpenGL 3.3 のサポートに加え、以下の条件を満たした GPU のみサポートする。

macOS

macOS 10.12(Sierra)以降。

NVIDIA

GeForce 200 シリーズ以降、テスラアーキテクチャの Quadro 以降で、OS は Windows と Linux のみサポート。

AMD

HD 7000(第1世代 GCN)以降で、OS は Windows と Linux のみサポート。TeraScale アーキテクチャの HD 2000~6000 は Windows での動作が不安定なのでサポートリストから外されることになった。

Intel

Haswell 以降。製品名だと、Celeron 29xx/G18xx, Pentium 35xx/G3xxx, 第4世代Core i3/i5/i7 4xxx。対応GPU_Graphics_4200%EF%BD%9E5200)(英語)。

パスのプレビュー

3Dビューのシェーディングがレンダーかマテリアルプレビューのとき、AO・法線・ミスト・直接サブサーフェス・サブサーフェスカラーをプレビューできる。

場所

場所

フィルム

フィルターサイズ

Eevee のレンダリング結果はジャギーが出るので、画面全体をぼかしてジャギーを目立たなくする必要がある。このぼかしの量を決めるのがフィルターサイズだ。

背景の透過

フィルムの透過にチェックを入れる。

背景の透過

背景の透過

オーバースキャン

Eevee のエフェクトのほとんどはレンダリングされた画像を加工し合成することで生成される。しかしこのスクリーンスペースエフェクトは画面端で正しい結果にならないことがある。「プロパティパネル > レンダー > フィルム > オーバースキャン」にチェックを入れると、これを解消できる。ただし、より高い解像度でレンダリングすることになるのでパフォーマンスは悪化する。

オーバースキャン

オーバースキャン

アンビエントオクルージョン(AO)

Cycles はオブジェクト間の距離に基づいて暗さを決定するが、Eevee はカメラからの距離(深度バッファ)を使って暗さを決定する。Eevee の AO は後ろに隠れているオブジェクトや遠くのオブジェクトの影響を考慮しないため、Cycles に比べてグラデーションが小さくなる傾向にある。

バージョン 2.93 で、暗くなりすぎる問題の修正とパフォーマンスの向上を含む AO アルゴリズムの変更が入った

レンダータブのアンビエントオクルージョン(AO)にチェックを入れると、AO ノードで AO の情報を取得できる。

基本的な AO の設定

基本的な AO の設定

外部リンク

Eevee は AO のアルゴリズムとして Ground Truth Ambient Occlusion(Practical Realtime Strategies for Accurate Indirect Occlusion(pdf))を採用している。GTAO はスクリーンスペースエフェクト特有の制限はあるものの、レイトレースの結果と一致する AO を計算できる。

ブルーム

発光エフェクトを追加する。ブルームの強度は調整範囲が狭いので、放射ノードの強さで明るさを調整する。

ブルーム

ブルーム

tips

放射ノードの強さには 100 や 1,000 のような大きい値を入力できる。

発光体の彩度を上げすぎないようにする。発光体は露出オーバーにより白飛びするが、彩度が高すぎると白飛びせずに発光体に色が付くことがある。

オブジェクトモーションブラー(2.90)

シャッターでボケの量をコントロールする。

オブジェクトモーションブラー

オブジェクトモーションブラー

鏡面反射

反射平面

鏡のような平面の反射は「ライトプローブ > 反射平面」を使えば表現できる。実際に反射させるには、反射平面の位置に平面ポリゴンを配置し、平面ポリゴンに粗さ(Roughness)を0にした光沢BSDFをつける。プリンシプルBSDFのメタリックを1にして、粗さを0にすることでも可能。

Reflection Plane

Reflection Plane

反射平面は平面にしか使えないが、反射キューブマップやSSRより正確かつリアルタイムの反射ができることが強みだ。SSR と組み合わせるとより正確になる。

欠点

反射平面の数だけレンダリング回数が増えるので負荷が高い。

SSS の反射・SSR の反射・ボリューメトリックスの反射・合わせ鏡はサポートされてない。

メッシュの反射

Eevee は平面でないオブジェクトの正確な鏡面反射は計算できない。代わりに球もしくは箱で反射を近似するかスクリーンスペース反射エフェクトかのどちらかが使える。スクリーンスペース反射エフェクトは動くオブジェクトや動く光源によるシェーディングの変化も反射できるが、スクリーンに映っていないオブジェクトは映らない。反射キューブマップはスクリーンに映っていないオブジェクトも反射できるが、リアルタイムで動くものは反射できない。

スクリーンスペース反射エフェクトは動画向け、反射キューブマップは背景やスチル向けだ。

反射キューブマップ(Reflection Cubemap)

反射するメッシュの位置に 反射キューブマップを配置してベイクすると、近似された反射が写るようになる。この例ではスザンヌのマテリアルにメタリックを1にしたプリンシプルシェーダを使っている。

反射キューブマップのベイク。間接照明をベイク(Bake Indirect Lighting)でも 反射キューブマップがベイクされる

反射キューブマップのベイク。間接照明をベイク(Bake Indirect Lighting)でも 反射キューブマップがベイクされる

反射キューブマップあり

反射キューブマップあり

反射キューブマップなし

反射キューブマップなし

反射キューブマップはスクリーンスペース反射(Screen Space Reflection)と同時に使える。

反射キューブマップ + SSR

反射キューブマップ + SSR

スクリーンスペース反射エフェクト(Screen Space Reflection 以下 SSR)

SSR はスクリーンスペース反射にチェックを入れると使える。制限はあるが 反射キューブマップよりも正確に反射できる。

SSR

SSR

SSR はスクリーンに映っている物しか反射しないことに注意。加えて SSS・ボリューメトリック・スクリーンスペース反射・スクリーンスペース屈折は映らない。ただし環境テクスチャは映る。

奥のキューブはスザンヌの側面を反射すべきだが、それがスクリーン上に映っていないため反射できない

奥のキューブはスザンヌの側面を反射すべきだが、それがスクリーン上に映っていないため反射できない

異方性

Eevee で異方性はサポートされていない。以下の方法で似た効果が得られる。

ノード

ノード

タンジェントを回転させて合成

タンジェントを回転させて合成

透過・屈折

透過(Transparency)

シェーディングあり

シェーディングありの透過はプリンシプル BSDF を使うと簡単だ。アルファを設定してブレンドモードをアルファブレンド・アルファクリップ・アルファハッシュのどれかに設定する。影にもアルファを適用するには、影のモードをアルファクリップかアルファハッシュにする。

シェーディングありのアルファブレンドの設定

シェーディングありのアルファブレンドの設定

シェーディングなし

シェーディングが不要な場合はブレンドモードをアルファブレンド・アルファクリップ・アルファハッシュのどれかに設定して、ベースカラーを黒に、スペキュラーを0に設定する。

シェーディングなしの透過

シェーディングなしの透過

透過(Transparent)ノードをミックスする方法もある。

透過ノードを使う方法

透過ノードを使う方法

放射消し

Cycles に切り替えたり、イラディアンスボリュームを使ったりする場合、影が放射で照らされてしまう。これを無効にするには、ライトパスノードのカメラレイか? を使う。

放射消し

放射消し

Eevee のブレンドモード

アルファブレンド

アルファブレンドはカメラから見て奥から手前に向かう順番にレンダリングされる。透過オブジェクトの制限数に達すると残りの透過オブジェクトはレンダリングされない。手前のオブジェクトがレンダリングされないのでこれはすぐに気付く。

アルファブレンドは深度バッファに深度を書き込まないので、それらを使うエフェクト(コンタクトシャドウやアンビエントオクルージョン等)が発生しない。ただしイラディアンスボリュームは機能する。

アルファハッシュやアルファクリップと比較してレンダリング負荷が高い。

アルファハッシュ

アルファハッシュはカメラから見て手前から奥に向かう順番にレンダリングされる。透過するかしないかのどちらかしか選択できない。ランダムな閾値を超えたときのみ透過される。この方法はノイズが乗るが、アルファクリップにあるいくつかの問題を回避できる。ノイズはサンプル数をあげることで減少させられる。

サンプル数をあげる

サンプル数をあげる

アルファクリップと同様に高速だが、品質を上げるためにサンプル数をあげるとレンダリング負荷が上がる。

外部リンク

Hashed Alpha Testing - NVIDIA Developer(pdf)

Hashed Alpha Testing(原論文 pdf)

アルファクリップ

アルファクリップはカメラから見て手前から奥に向かう順番にレンダリングされる。ブレンドはできず、透過するかしないかのどちらかしか選択できない。アルファクリップは、遠景メッシュのテクスチャに解像度の低いミップマップが適用されると、メッシュの多くが消える欠点がある。この欠点を回避するにはアルファハッシュを使う。

ほかのふたつの方法に比べて最もレンダリング負荷が低い。

加算合成と乗算合成

加算合成と乗算合成はブレンドモードをアルファブレンドにして、以下のノードを使うことでそれらを表現できる。

加算ノードと乗算ノード

加算ノードと乗算ノード

加算と乗算を同時に使う

加算と乗算を同時に使う

ホールドアウト

透過するにはフィルムの透過にチェックを入れる必要がある。

ホールドアウトを使ったシャドウキャッチャー

ホールドアウトを使ったシャドウキャッチャー

透過を有効にする

透過を有効にする

透過マテリアルの描画順序問題

不透明オブジェクト(アルファハッシュ・アルファクリップを含む)は原点を基準にソートされ、カメラから見て手前のオブジェクトから順に描画される。オブジェクト内に複数のマテリアルがあるときは上から順に描画される。

アルファブレンドマテリアルはオブジェクトの原点を基準にソートされ、カメラから見て奥のオブジェクトから順に描画される。

バージョン 2.80 の Eevee ではピクセル単位・ポリゴン単位のソートはサポートしていない。

パーティクルで透過オブジェクトを大量(1,000以上)に出現させる場合、描画順によっては意図した結果にならない。このようなエフェクトを正しくレンダリングしようとすると、ソート負荷とレンダリング負荷とが高くなりすぎる。

そのようなエフェクトが必要な場合はアルファハッシュ・アルファクリップ・アルファブレンドの加算・アルファブレンド乗算が使える。加算や乗算のブレンドモードはレンダリング順序に依存しない。

ガラスのレンダリング

ポリゴン単位でメッシュをソートできないので、ガラスコップのような透明なオブジェクトをレンダリングすると、視点によってはレンダリング結果がおかしくなる。そのようなオブジェクトをレンダリングする場合は「裏面の非表示」オプションにチェックを入れる。

屈折(Refraction)

Eevee の屈折は法線と厚みとの情報からオブジェクト後方の画像をゆがませることで実現している。入射光がオブジェクト内で反射しているわけではないので、複雑な形状では Cycles とまったく異なるレンダリング結果になる。

設定

屈折を表現するにはプリンシプルシェーダの透過を1にして、マテリアルのスクリーンスペース屈折とレンダータブの「スクリーンスペース反射 > 屈折」とにチェックを入れる。

屈折の設定

屈折の設定

これもスクリーンスペースエフェクトなのでスクリーン上に映っていない物は映らない。ただし環境テクスチャは映る。

皮下拡散(Subsurface Scattering 以下 SSS)

Eevee の SSS はオブジェクトの厚みと法線とを利用して皮下拡散を近似している。ただしやっていることは、スクリーンスペースでディフューズ色をぼかしているだけだ。これは人肌のように控えめに使われる場合にはうまく働く。ただし厚みの薄い場所ではディティールが潰れやすい。

Eevee の SSS は影付きの光源でしか機能しない。間接光も SSS に影響しない。

設定

Subsurface Scattering ノードを使うかプリンシプル BSDF の Subsurface ソケットに値を入力するかして、マテリアルのサブサーフェスの透光にチェックを入れる。

サブサーフェスの透光

サブサーフェスの透光

Subsurface Scattering ノードよりもプリンシプル BSDF の方が SSS の調整はやりやすい。

SSS は逆光にするとわかりやすい

SSS は逆光にするとわかりやすい

外部リンク

Separable Subsurface Scattering

Translucent Shadow Maps

頂点空間表面下散乱(VSSS:Vertex Space Subsurface Scattering)

間接光・放射

Eevee は間接光の情報をイラディアンスボリュームにベイクすることで大域照明(Global Illumination)を実現している。この方法は欠点が多い。適切な位置に間接光を表現するエリアライトを配置する昔ながらのテクニックが有効かもしれない。

照明情報がベイクされているため、Eevee の大域照明はアニメーションしない。

ベイクの精度を高くするために イラディアンスボリュームの解像度を上げると、ベイクの時間が長くなる。イラディアンスボリュームの解像度は高すぎても低すぎてもアーティファクトが出る。

キャッシュされる間接光は視点から独立しているものに限られる。なので反射平面の情報はキャッシュされない。

キャッシュされるオブジェクトは現在のビューレイヤーにありレンダーで有効なオブジェクトに限られる。ビューポートで可視だがレンダリングされないオブジェクトはキャッシュされない。

巨大なシーンではベイク結果を使った再計算を行うため、複数回ベイクが実行されることがある。

バージョン 2.80 の Eevee はレンダリング時のフレーム単位での間接光の再計算はサポートしてない(スクリプトを使わない限り)。将来のバージョンでこの制限は解除される予定だ。

放射(Emission)やライトがほかのオブジェクトを照らしたり、ほかのオブジェクトが反射した光を表現するためには「ライトプローブ > イラディアンスボリューム」を配置する必要がある。

底面の赤と側面の青がスザンヌに反射している

底面の赤と側面の青がスザンヌに反射している

間接光を計算するにはレンダータブで「間接照明をベイク」を押す。変更時に自動的に再計算してほしいときは自動ベイクにチェックを入れる。自動ベイクが有効な場合、ちょっとした変更で何度もイラディアンスボリュームが再計算される。なのでイラディアンスボリュームの調整が終わり次第すぐに 自動ベイクのチェックを外した方がいい。

間接光のベイク

間接光のベイク

スクリーンスペース大域照明アドオン

Screen Space Global Illumination for Eevee | Addon

Blender をカスタムしたバージョンと、アドオンバージョンがある。カスタムバージョンはシェーダで書かれており、より高性能だ。

アドオンバージョンについて

IBL のようなワールドライティングの影響が強い場合は、Darken Direct Lighting の値を小さくすることで対処できる。

メタリックでない低ラフネスのマテリアルは SSR による反射が写るが、バージョン 0.1.1 のこのノードを使うとそれが消えるバグがある。

実装について

このアドオンは SSR を無効にすると機能しない。おそらく光沢 BSDF のような SSR の色が拾えるノードを合成して、拡散反射をシミュレートしている。

ノードで SSR の色のみを抽出する方法がないので、ワールドライティングの影響を完全に除去できない。SSR の実装があれば SSGI を実現するのは難しくないので、要望が多ければシェーダで書かれたオフィシャルの SSGI が実装されるかもしれない。

注意事項

バージョン 2.83 では、反射プローブの実装が八面体マップからキューブマップへ変更された。なのでバージョン 2.82 以前のバージョンでベイクされたライトキャッシュはバージョン 2.83 で再ベイクする必要がある。またバージョン 2.83 以降でベイクされたライトキャッシュはそれ以前のバージョンではロードできない。

イラディアンスボリュームはアニメーションしないため、アニメーションするキャラクターやオブジェクトの情報はベイクしてはならない。

イラディアンスボリュームのサンプルポイントがポリゴンの内部に入らないよう注意する必要がある。そのような点の周辺ではオブジェクトが必要以上に暗く表示される。これを避けるためには複数のイラディアンスボリュームを配置するしかないが、イラディアンスボリュームの継ぎ目のシェーディングが不自然になるデメリットがある。

ライトでなくメッシュの放射を大域的な光源として使うのは推奨できない。Eevee の放射はイラディアンスボリューム内しか照らさないからだ。イラディアンスボリュームが巨大だとその解像度も上げる必要があり、キャッシュの計算に待たされることになる。

イラディアンスボリュームを使っても放射オブジェクトは影を作らない。ラスタライズ法は影の生成にシャドウマップという、光源ごとに影生成用テクスチャを使う方法がよく使われる。シャドウマップで放射の影を生成するとポリゴン一枚ごとにテクスチャを割り当る必要があり、メモリが不足する。

ボリューメトリック(Volumetric)

God Ray のようなエフェクトなら Cycles より Eevee が得意だ。正確ではないがレンダリングは高速でノイズがまったくない。3D テクスチャを使ってリアリティをあげることもできる。

ただし Eevee は厚みのある煙や炎のような光を発するエフェクトは苦手だ。

バージョン 2.91 からはボリュームオブジェクトにボリューム変換(Mesh to Volume)モディフィアを追加することで、メッシュ形状のボリュームを作成できる。

バージョン 2.93 で影や光の表現がより正確になった

設定

プリンシプルボリュームノードを使うのが簡単だ。ボリューメトリックノードはマテリアル出力のボリュームソケットにつなぐことに注意。ボリュームの形は密度を設定することで変形できる。

簡単な雲の例

簡単な雲の例

tips

Volumetrics の Start, End を適切に設定すると、解像度が上がる。

外部リンク



メッシュの形の雲を作るノード(英語)

Procedural Cloudscape Generation in Cycles (now Eevee!)

Advanced Nebulae in EEVEE (Blender 2.8)

セルシェーディング

シェーダーからRGBへ(Shader to RGB)ノードを使う。一部のスクリーンスペースエフェクトは反映されない。環境テクスチャやスクリーンスペース屈折(Refraction)、SSAO はシェーダーからRGBへノードで処理できる。そのほかのセルルックエフェクトはEevee のセルルック技法まとめを参照。

シェーダーからRGBへノードは Cycles では使えない

手前のスザンヌはグラスBSDFを使い、奥のスザンヌはディフューズBSDFを使っている

手前のスザンヌはグラスBSDFを使い、奥のスザンヌはディフューズBSDFを使っている

被写界深度

バージョン 2.93 でアルゴリズムが変更され、高速化されたうえ、サンプル数を上げた場合はレイトレースの被写界深度と同じ結果になる

被写界深度を有効にするにはレンダータブの「被写界深度」にチェックを入れる。被写界深度の設定はカメラで行う。ボケの量を増やすには F 値(F-stop)の値を小さくする。ピントの位置は適当なエンプティを配置して、焦点のオブジェクト(Focus on Ojbect)を設定する。

被写界深度の設定

被写界深度の設定

ビューポートで被写界深度エフェクト

ビュー > カメラ設定 > アクティブカメラ(Numpad 0)でカメラからの視点に切り替え、サイドバー(N)で「カメラをビューにロック」にチェックを入れる。

カメラをビューにロック

カメラをビューにロック

被写界深度のスポイト

ビュー > カメラ設定 > アクティブカメラ(Numpad 0)でカメラからの視点の状態のとき、右クリック > 被写界深度(スポイト)で、被写界深度をスポイトで設定できる。

被写界深度のスポイト

被写界深度のスポイト

Eevee は光源の位置をずらした複数のシャドウマップを使ってソフトシャドウを作り、PCF でアンチエイリアスを行う。Eevee は IBL(環境テクスチャ)で影を生成しない。影が必要な場合はライトを配置するか、イラディアンスボリュームを配置する必要がある

光漏れ

シャドウマッピング法はテクスチャの精度の問題で厚みのないポリゴンにできる影が不正確だ。室内モデルで厚みのない壁や天井を作る場合は、厚みつけモディフィアをつける等の処理が必要になるかもしれない。

光漏れを減らすには、ライトのバイアスの値を小さくする。

ライトのバイアスを小さくする

ライトのバイアスを小さくする

サンライト

サンライトはカスケードサイズで深度マップのテクスチャのサイズを指定し、そのほかのライトはキューブサイズで深度マップのテクスチャサイズを指定する。

サンライトは影響範囲が広く、その分深度マップサイズが不足する。サンライトできれいな形の影を作るには、4096px のカスケードサイズが必要になる。このサイズのシャドウマップはエントリーレベルの GPU(1050Ti や RX 560)では力不足だ。

サンライトは遠景を一様にライティングするのに向いている。

ソフトシャドウ

ソフトシャドウにチェックを入れ、サンプリング数を上げ、ライトの半径を大きくする。

ソフトシャドウ

ソフトシャドウ

ソフトシャドウオプション

ソフトシャドウオプションは光源の位置をずらした複数のシャドウマップを使って影を作る。この方法で影を作ると、影と遮蔽物との距離が大きいほど影がぼけるリアルな影が作れる。

ソフトシャドウオプション

ソフトシャドウオプション

影と遮蔽物との距離が遠いほど影がぼける

影と遮蔽物との距離が遠いほど影がぼける

影がバンド状になる場合はサンプル数をあげる。

バンド状の影

バンド状の影

サンプル数をあげる

サンプル数をあげる

ジャギー低減

以下の方法がある。

ソフトシャドウオプションにチェックを入れる

場所は「レンダープロパティ > シャドウ」。

ぼかしの量はサンライトは「角度(Angle)」、そのほかのライトは「半径(Radius)」で設定できる。場所は「ライトのプロパティ > ライト」。

シャドウマップの解像度をあげる

サンライトは「レンダープロパティ > シャドウ > カスケードサイズ」、そのほかのライトは「レンダープロパティ > シャドウ > 立方体サイズ」で変更できる。

コンタクトシャドウ

光が漏れたり、オブジェクトの接地部分に影ができない場合は、ライトのコンタクトシャドウ(Contact Shadows)にチェックを入れると改善される。

Contact Shadows を有効にすると接地部分に影ができる

Contact Shadows を有効にすると接地部分に影ができる

欠点

コンタクトシャドウはスクリーンスペースエフェクトなので、視点によっては表示されないことがある。

外部リンク

Exponential Shadow Maps(pdf)

Variance Shadow Maps(pdf)

Moment Shadow Mapping(pdf)

Non-Linearly Quantized Moment Shadow Maps(pdf)

中級グラフィックス入門~シャドウマッピング総まとめ~

[カスケード シャドウ マップ](https://msdn.microsoft.com/ja-jp/library/ee416307%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396

)

そのほかのポストエフェクト

カメラの前にガラスを配置し、シェーダーからRGBへノードを使うことでポストエフェクトをかけられる。ただし以下の制限がある。

設定

屈折を有効にして、シェーダーからRGBへノードで色を取得する。後は取得した色を加工するだけだ。

設定

設定

制限

カメラ

透視投影と平行投影のみサポートしている。

ライト

バージョン 2.81 からはインスタンスで作成されたライトも影を生成するようになった。

バージョン 2.80 では Dupli Ojbect やグループインスタンスで複製したライトは影を作成しない。つまりコレクション内のライトはインスタンス化によって複製された場合、影を生成しない。このような実装になっているのは、インスタンス化されたオブジェクトはレンダリング時に複製され、不要になると破棄されるからだ。つまりレンダリングのたびにシャドウマップを作成する必要があり、そのような実装はビューポートのパフォーマンスを悪化させる。詳細はEevee: Lights dont cast shadows if they are part of an collection instance を参照。

シーン内で有効なライトの数は 128 が上限になる。それ以上のライトが存在している場合、ライティングされないライトが出てくる。

影を生成するサンライトは同時に8つまでしか配置できない。

ライトは単色のみサポートしている。今のところライトノードはサポートしていない。

ライトプローブ

有効な反射キューブマップの個数の上限は 128 個。

有効なイラディアンスボリュームの個数の上限は 64 個。

カメラ内で有効な反射平面の個数の上限は 16 個。

間接光

ボリューメトリックはイラディアンスボリュームを無視する。しかしワールドのディフューズライティングの影響は受ける。

スペキュラからディフューズやスペキュラからスペキュラへの光の反射はサポートしてない。イラディアンスボリュームのベイクの間は、全てのスペキュラライティングは無効になる。

ボリューメトリック

サポートしている scattering は1つだけ。scattering を複数使ってノードを組んでも、使われるのはそのどれかひとつだけだ。

ボリューメトリックはイラディアンスボリュームを無視する。しかしワールドのディフューズライティングの影響は受ける。

ボリューメトリックはカメラレイにのみ対応する。反射/屈折/ライトプローブには映らない。

ボリューメトリックシャドウはほかのボリューメトリックにのみ影を落とす。なのでシーン内の他のオブジェクトには影を落とさない。

ボリューメトリックシャドウはカメラに映っているボリュームでのみ機能する。

ボリューメトリックライティングはライトの形を無視する。ライトは全て点光源として扱われる。

スクリーンスペース反射

スクリーンスペース反射が機能するのはマテリアル内の光沢BSDFのうちのどれか一つだけ。現状では選択される光沢BSDFを指定できない。

オレンジの光沢BSDFが反射していない

オレンジの光沢BSDFが反射していない

スクリーンスペース反射は透過オブジェクトや SSR を使うオブジェクトを映せる。しかし深度バッファが1つしかないので正確な位置を反映しているわけではない。

スクリーンスペース屈折

正確に計算できるのは最初の屈折だけ。

アンビエントオクルージョン(AO)

オブジェクトが無限の厚みを持つと仮定している。AO の距離(Distance)パラメータが大きいとき、暗くなりすぎる傾向にある。

マテリアル

屈折

光沢BSDFと同じ reflection probe を使って屈折を表現している。違いは反射した視線ベクトルではなく屈折した視線ベクトルを使っていることだ。正確に計算できるのは最初の屈折だけで、2回目以降の屈折は Refraction Depth を使った比較的薄いオブジェクトを利用して計算される。

バンプ

今のところバンプマッピングは OpenGL の derivatives 関数を使って実装されている。これは1ピクセルごとに計算されるのではなく、2x2 のピクセルで同じ値になる。そのためバンプの出力はブロック感が目立つ。なので法線マップの使用を推奨する。

バンプがどうしても必要な場合は2倍の解像度でレンダリングして、出力する際に 1/2 に縮小する。

バージョン 2.81 ではバンプマッピングの精度が上がった

Volumes Objects

Object volume シェーダはポリゴン内ではなく境界ボリューム内のオブジェクトに影響を与える。volume の形はシェーダ内でプロシージャルテクスチャを使って調整するべきだ。

シェーダノード

BSDF ノードは近似されているので Eevee と Cycles とで小さな違いがある。

Sky Texture 等のいくつかのユーティリティノードは Eevee と互換性がない。

サポートリストはBlender 2.80 の Eevee がサポートしているノードを参照。

メモリ管理

巨大なシーンをレンダリングする場合、GPU のメモリが不足して Blender がクラッシュすることがある。レンダリングに必要なメモリサイズを計算する方法は現状存在しない。

CPU レンダリング

CPU レンダリングはサポートしない。

マルチGPU

現状ではマルチ GPU はサポートしてない。

ヘッドレスレンダリング

ヘッドレスシステムはディスプレイマネージャを使わずにレンダリングする。バージョン 3.4 の時点では Linux のみサポート

そのほか

オブジェクトモーションブラーはバージョン 2.90 でサポート。カメラのモーションブラーのみサポートしている。

Blender 2.80 の Eevee がサポートしているノード

Nodes Support

Eevee でのみ使えるノード

シェーダーからRGBへ(Shader to RGB)

スペキュラー(Specular BSDF)

機能が制限されているノード

ここに列挙されていないノードは全機能がサポートされている。

ディフューズBSDF(Diffuse BSDF)

粗さは未サポート。なので単純なランバート拡散ノードになっている。

放射(Emission)

間接光として使うには SSR やライトプローブ(特にイラディアンスボリューム)が必要になる。

グラス・屈折BSDF(Glass・Refraction BSDF)

光の反射は未サポート。ベックマンと GGX は未サポート。

光沢BSDF(Glossy BSDF)

バージョン 2.91 で複合散乱 GGX がサポートされた(A Multiple-Scattering Microfacet Model for Real-Time Image Based Lighting)。

ベックマン・Ashikhmin-Shirley は未サポート

SSS(Subsurface Scattering)

ランダムウォークサンプリングは未サポート。各色チャンネルの半径はデフォルトのソケット値で指定する必要がある。この半径ソケットに何かをつないでも無視される。アルベドを分離(プロパティパネルのレンダータブのSSSにある)にチェックが入っていない場合、テクスチャぼかしは 1.0 として扱われる。テクスチャぼかしに 0.0 もしくは 1.0 以外の値を指定しても不正確な結果になる。

透過BSDF(Transparent BSDF)

半透明は未サポート。色は実数(float)に変換され、アルファ値として扱われる。透過を機能させるには、マテリアルのブレンドモードを不透明以外に設定する。シェーダー加算に透過BSDFをつないでも加算合成にはならない。

半透明BSDF(Translucent BSDF)

オブジェクト内の光の拡散はサポートしない。このノードは法線の反転している面のみをライティングする。

プリンシプルBSDF(Principled BSDF)

バージョン 2.91 で複合散乱 GGX がサポートされた(A Multiple-Scattering Microfacet Model for Real-Time Image Based Lighting)。

ディフューズBSDF・光沢BSDF・屈折BSDF・SSSのすべての制限がこのノードにも当てはまる。異方性は未サポート。伝搬の粗さ(Transmission Roughness)は未サポート。シーンレイヤーは近似だ。

ボリュームの吸収(Volume Absorption)

ボリューメトリック を参照。

ボリュームの拡散(Volume Scatter)

異方性パラメータはすべての重なっているボリューメトリックオブジェクトで平均化され合成される。これは物理的に正確ではなく Cycles とレンダリング結果が一致しない。ボリューメトリックを参照。

プリンシプルボリューム(Principled Volume)

ボリューメトリック を参照。

ホールドアウト(Holdout)バージョン 2.81 でサポート。

異方性BSDF(Anisotropic BSDF)未サポート。

トゥーンBSDF(Toon BSDF)未サポート。

ヘアーBSDF(Hair BSDF)未サポート。

ベルベットBSDF(Velvet BDF)未サポート。

プリンシプルヘアーBSDF(Principled Hair BSDF)未サポート。

シェーダー加算(Add Shader)

バージョン 2.81 でサポート。

入力ノード

アンビエントオクルージョン(AO)(Ambient Occlusion)

法線と色とのみサポート。Eevee のAOはスクリーンスペースエフェクトなので、AOノードが評価される前にAOはすでに計算されている。プロパティパネルのレンダータブのアンビエントオクルージョン(AO)でそのほかのパラメータを設定できる。ノード単位で法線と色と以外のパラメータを変更することはできない。

ジオメトリ(Geometry)

凸部分(Pointiness)は未サポート。EEVEE: Pointiness doesn't work

属性(Attribute)

デフォルトでアクティブなUVレイヤーが出力される。"density"、"color"、"flame"、"temperature" をサポートしている。UVと頂点色レイヤーもサポート。

ベベル(Bevel)

未サポート。

ヘアー情報(Hair Info)

ランダムソケットの出力にいつも同じ乱数生成アルゴリズムが使われるわけではない。乱数の生成範囲と統計的な分布は一致するが、乱数値は再生するたびに異なる。

ライトパス(Light Path)

Eevee はパストレーシングではないので、光線の概念がない。しかし CyclesーEevee 間での運用を容易にするためにいくつかの機能がサポートされている。Eevee のライトパスノードは基本的に、シェーダ内で間接光のベイクの挙動を制御するために使われる。よって Eevee のライトパスノードは Cycles と互換性がないと考えたほうが良い。

Eevee では以下の項目がサポートされている。

カメラレイか?(Is Camera)サポート
シャドウレイか?(Is Shadow)サポート
ディフューズレイか?(Is Diffuse)サポート
光沢レイか?(Is Glossy)サポート
シンギュラーレイか?(Is Singular)未サポート。光沢レイか? と同じ値を返す
反射レイか?(Is Reflection)未サポート。光沢レイか? と同じ値を返す
伝播レイか?(Is Transmission)未サポート。光沢レイか? と同じ値を返す
レイの長さ(Ray Length)未サポート。1.0 を返す
レイの深度(Ray Depth)ベイクとライトキャッシュ時に、現在のバウンス回数を返す
ディフューズの深度(Diffuse Depth)レイの深度と同じ値を返す。ただしディフューズのベイク時にのみ機能する
光沢の深度(Glossy Depth)レイの深度と同じ値を返す。ただしスペキュラーのベイク時にのみ機能する
透過の深度(Transparent Depth)未サポート。0 を返す
伝播の深度(Transmission Depth)未サポート。光沢の深度と同じ値を返す

光沢レイか? は SSR と同時に機能しない。ただし反射平面と同時に使える。

パーティクル情報

未サポート。

テクスチャ座標

「インスタンサーから」は未サポート。

UV マップ

「インスタンサーから」は未サポート。

ワイヤーフレーム

ピクセルサイズにチェックを入れても、結果は Cycles と正確には一致しない。これはサイズでも同じ。

そのほかのノード

光の減衰(Light Falloff)

未サポート。

バンプ(Bump)

微分の精度の問題で、精度が悪い。

ディスプレイスメント/ベクトルディスプレイスメント(Displacement/Vector Displacement)

未サポート

IES テクスチャ

未サポート

大気テクスチャ(Sky Texture)

未サポート

画像テクスチャ(Image Texture)

Smart 近似は常に三次式(Cubic)補完を使う。チューブ・球投影とリニア補完とを同時に使うとアーティファクト(不自然な結果)が発生する。これはハードウェアのミップマップと異方性フィルタリングが原因で起こる。このタイプのアーティファクトはテクスチャ座標が連続でないときに発生する。ボックス投影とクリップ・拡張延長との同時使用は未サポート。その場合はリピート延長が使われる。

マテリアル出力(Material Output)

Cycles に比べてディスプレイスメントの結果が悪い。

波長(Wavelength)

バージョン 3.0 でサポート。

Eevee のレンダリングを高速化する

サンプル数を減らす

ソフトシャドウを使わないならば、デフォルトのサンプル数 64 はいくらかオーバークオリティだ。アニメーションならば、ほとんどのシーンで 10~20 あれば十分な品質になる。

スクリーンスペース反射の屈折(Refraction)を無効にする

ガラスが目立つところに置いてあるようなシーンでは有効にする。

スクリーンスペース反射の半解像度トレース(Half Rez Trace)を有効にする

これはデフォルトで有効になっている。

被写界深度のボケを小さくする

レンダリングする解像度を下げる

コンポジットで拡大することで解像度を調整する。

影の解像度を下げる

ソフトシャドウを使うなら、影の解像度を下げても品質に問題がないことがある。ただしソフトシャドウを使う場合はサンプル数が増えるため、逆にレンダリングに時間がかかることもある。

ライトの影を無効にする

影を生成するライトの個数を減らすと、レンダリング時間と GPU のメモリ使用量とを節約できる。

大量のライトを配置してソフトシャドウを実現するには、大容量の GPU メモリが必要になる。それよりは影を生成するライトをひとつ配置して、ソフトシャドウを使った方がよい。


関連記事

Blender 記事の目次


広告
広告

カテゴリ