広告
広告

Eevee の使い方

カテゴリ:blender

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

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

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

目次

サポートするGPU

フィルム

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

ブルーム

鏡面反射

透過・屈折

皮下拡散(Subsurface Scattering)

間接光・放射(Irradiance Volume)

霧(Volumetric)

セルシェーディング

被写界深度

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

制限

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

外部リンク

サポートする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英語)。

フィルム

フィルターサイズ

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

背景の透過

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

gb transparent
背景の透過

オーバースキャン

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

overscan
オーバースキャン

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

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

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

ao node
基本的な AO の設定

外部リンク

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

ブルーム

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

bloom
ブルーム

tips

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

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

鏡面反射

反射平面

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

reflection plane
Reflection Plane

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

欠点

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

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

メッシュの反射

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

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

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

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

bake cubemap
反射キューブマップのベイク。間接照明をベイク(Bake Indirect Lighting)でも 反射キューブマップがベイクされる
on
反射キューブマップあり
off
反射キューブマップなし

反射キューブマップは SSR(Screen Space Reflection)と同時に使える。

cubemap plus ssr
反射キューブマップ + SSR

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

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

ssr
SSR

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

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

透過・屈折

透過(Transparency)

シェーディングあり

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

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

シェーディングなし

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

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

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

unlit mix shader
透過ノードを使う方法

放射消し

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

is camera ray
放射消し

Eevee のブレンドモード

アルファブレンド

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

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

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

アルファハッシュ

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

sampling
サンプル数をあげる

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

外部リンク

Hashed Alpha Testing - NVIDIA Developer(pdf)

Hashed Alpha Testing(原論文 pdf)

アルファクリップ

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

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

加算合成と乗算合成の削除(2.81)

バージョン 2.81 からブレンドモードの付加(Additive)と乗算(Multiply)がなくなった。ブレンドモードをアルファブレンドにして、以下のノードを使うことでそれらを表現できる。ブレンドモードをノードで表現することにより、加算と乗算のブレンドモードを同時に使えるようになり、Cycles でも同様のルックでレンダリングされるようになる。

addtive multiply node
加算ノードと乗算ノード
demo
加算と乗算を同時に使う

ホールドアウト(2.81)

バージョン 2.81 からはホールドアウトノードが使える。

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

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

透過オブジェクトの描画順序は、それが変更されると最終的な色が変わるので重要だ。2.80 の Eevee ではピクセル単位・ポリゴン単位のソートはサポートしていない。オブジェクト単位でソートされ、その基準位置はオブジェクトの原点が使われる。これが問題になるのはパーティクルで透過オブジェクトを大量(1,000以上)に出現させる時だ。このようなエフェクトはソート負荷とレンダリング負荷とが高い。

加算や乗算のブレンドモードはレンダリング順序に依存しない。しかしアルファブレンドはそうではないので、ガラスコップのようなオブジェクトをレンダリングする場合は「裏面の非表示」オプションにチェックを入れる。

屈折(Refraction)

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

設定

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

reflaction settings
屈折の設定
result

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

皮下拡散(Subsurface Scattering 以下 SSS)

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

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

設定

Subsurface Scattering ノードを使うかプリンシプル BSDF の Subsurface ソケットに値を入力するかすると自動的に有効になる。

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

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

外部リンク

Separable Subsurface Scattering

Translucent Shadow Maps

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

間接光・放射

Eevee は間接光の情報をイラディアンスボリュームにベイクすることで大域照明(Global Illumination)を実現している。なので Eevee の大域照明はアニメーションしない。ベイクの精度を高くするために イラディアンスボリュームの解像度を上げると、ベイクの時間が長くなる。イラディアンスボリュームの解像度は高すぎても低すぎてもアーティファクトが出る。

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

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

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

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

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

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

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

bake
間接光のベイク

注意事項

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

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

将来的には OpenGL 版の DirectX Raytracing を使った、リアルタイムレイトレでこの影の問題は解決できる見込みである。もしくは反射・屈折・影の生成にリアルタイムでないレイトレを使う実装も考えられる。

霧(Volumetric)

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

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

設定

プリンシプル Volume ノードを使うのが簡単だ。Volumetric ノードは Material Output の Volume ソケットにつなぐことに注意。ボリュームの形は密度を設定することで変形できる。

procedual cloud
簡単な雲の例

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

Procedural Cloudscape Generation in Cycles (now Eevee!)

Advanced Nebulae in EEVEE (Blender 2.8)

セルシェーディング

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

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

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

被写界深度

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

settings
被写界深度の設定

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

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

lock camera
カメラをビューにロック

被写界深度のスポイト

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

dof picker
被写界深度のスポイト

Eevee は IBL(環境テクスチャ)で影を生成しない。影が必要な場合はライトを配置するか、イラディアンスボリュームを配置する必要がある

シャドウマッピング法はテクスチャの精度の問題で厚みのないポリゴンにできる影が不正確だ。室内モデルで厚みのない壁や天井を作る場合は、厚みつけモディフィアをつける等の処理が必要になるかもしれない。ESM では指数(Exponent)を、VSM ではブリードバイアス(Bleed Bias)の値を上げることで漏れを減少させられる。

light leaking
辺の部分で光漏れが起こりやすい
exponent parameter
ESM なら指数を上げると漏れを減少させられる

サンライト

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

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

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

ソフトシャドウ

立方体サイズ(Cube Size)を下げ、ライトの柔らかさを上げる。影の品質を上げるために立方体サイズを上げるとぼかしの量が減少することに注意する。

simple soft shadow
均一なソフトシャドウ

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

ソフトシャドウオプションは光源の位置をずらした複数のシャドウマップを使って影を作る。この方法で影を作ると、影と遮蔽物との距離が大きいほど影がぼけるリアルな影が作れる。立方体サイズを下げたVSMとライトの柔らかさとを設定すると、きれいなボケを作りやすい。

soft shadow option
ソフトシャドウオプション
result
影と遮蔽物との距離が遠いほど影がぼける

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

shadow banding
バンド状の影
sampling
サンプル数をあげる

ジャギー低減

以下の方法がある。

  1. ソフトシャドウオプションにチェックを入れる
  2. 立方体サイズをあげる
  3. ライトの柔らかさをあげる
remove jaggy
ジャギー低減

影生成アルゴリズムの VSM と ESM について

ハードシャドウなら ESM、ソフトシャドウなら VSM がおすすめだ。

VSM と ESM はそれぞれ欠点がある。VSM は影の中に影が落ちると、影の輪郭が明るくなるライトブリーディングという欠点がある。なので背景のような、高さの異なる複数のオブジェクトが配置されるシーンでは VSM の使用を避けた方がいいだろう。ESM は光が漏れやすい。

ESM も VSM も深度バッファの値が不連続な場所で影に欠損が発生する。この欠損はライトの柔らかさ(Softness)を下げることでしか対処できない。

cutout
オブジェクトの端にできた影の欠損

ESM と VSM を組み合わせた EVSM もしくは MSM(Moment Shadow Map)実装されれば、それが一番いいのだが。

Exponential Shadow Map(ESM)

ESM は影かどうかを0か1かで判定するのではなく、その境界を指数で補間する。

欠点

深度バッファの値が不連続な場所で影に欠損が発生する

VSM に比べて光が漏れやすい。指数(Exponent)を上げるか立方体サイズ(Cube Size)を上げると光の漏れを抑えられる。指数を上げると影がぼけなくなる。

esm light leak
ESM
vsm light leak
VSM

利点

VSM に比べて ESM は計算負荷・メモリ負荷が低い。なので光源を大量に配置する場合は ESM が適している。

指数

ESM を使う場合は指数をコントロールすることが重要だ。指数を上げると光の漏れを抑えられるが、影がなまってしまう。光の漏れの影響がない場所では指数を最低値にすることできれいに影をぼかせる。

Variance Shadow Map(VSM)

VSM は影かどうかを0か1かで判定するのではなく、チェビシェフの不等式を使って確率的に求める。ESM 同様、影に欠損が発生することがある。

ESM に対して VSM は利点が少ないが、唯一 ESM より影をぼかしやすいという利点がある。ESM は光漏れを防ぎつつ影をぼかすにはソフトシャドウオプションを使うしかないが、ソフトシャドウオプションは負荷が高い。VSM なら光漏れを防ぎつつぼけた影を低負荷で描画できる。ただしある程度影はなまってしまう。

欠点

深度バッファの値が不連続な場所で影に欠損が発生する

影が重なるところで、影の輪郭が明るくなるライトブリーディングが発生する。

light bleeding
影の中に影が落ちるとその輪郭が明るくなる

ライトブリーディングはライトのブリードバイアスを設定することで対応できる。光が漏れる場合もブリードバイアスの値を上げることで対処できる。しかしブリードバイアスの値をあげると影がなまってしまう。

breed bias
ブリードバイアスの設定

VSM は影にノイズが乗りやすい。VSM を使う場合は『高いビット深度(High Bitdepth)』のチェックが必須だろう。

メモリ使用量は ESM の2倍(高いビット深度を使う場合は4倍)で計算負荷も ESM より高い。

コンタクトシャドウ

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

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

しかしコンタクトシャドウは視点によっては表示されないことがあり、ちらつきが気になることがある。

flicker
Contact Shadow のちらつき

外部リンク

Exponential Shadow Maps(pdf)

Variance Shadow Maps(pdf)

Moment Shadow Mapping(pdf)

Non-Linearly Quantized Moment Shadow Maps(pdf)

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

カスケード シャドウ マップ

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

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

  • ガラスや透過オブジェクトをうまく処理できない
  • 屈折に距離制限があり、背景が映らないことがある
  • 色情報しか取得できないので、エフェクトの種類に制限がある
  • シェーダ上では、ぼかしや各種フィルターノードが使えない

設定

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

settings
設定

制限

カメラ

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

ライト

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

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

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

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

Light Probes

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

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

カメラ内で有効な Reflection Plane の個数の上限は 16 個。

間接光

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

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

Volumetrics

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

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

Volumetrics はカメラレイにのみ対応する。反射/屈折/Light probe には映らない。

Volumetrics shadow はほかの Volumetrics にのみ影を落とす。なのでシーン内の他のオブジェクトには影を落とさない。

Volumetrics shadow はカメラに映っている volumes でのみ機能する。

Volumetric ライティングはライトの形を無視する。ライトは全て点光源として扱われる。

Screen Space Reflections

Screen Space Reflections が機能するのはマテリアル内の光沢BSDFのうちのどれか一つだけ。現状では選択される光沢BSDFを指定できない。

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

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

Screen Space Refraction

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

Ambient Occlusion

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

マテリアル

屈折

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

バンプ

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

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

Volumes Objects

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

シェーダノード

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

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

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

メモリ管理

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

CPU レンダリング

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

マルチGPU

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

ヘッドレスレンダリング

ディスプレイマネージャを使わずにレンダリングするヘッドレスシステムは現状サポートしてない。

そのほか

カメラのモーションブラーのみサポートしている。

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)

ベックマン・Ashikhmin-Shirley・複合散乱GGX は未サポート

SSS(Subsurface Scattering)

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

透過BSDF(Transparent BSDF)

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

半透明BSDF(Translucent BSDF)

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

プリンシプルBSDF(Principled BSDF)

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

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

Volumetric を参照。

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

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

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

Volumetric を参照。

ホールドアウト(Holdout)

未サポート。

異方性BSDF(Anisotropic BSDF)

未サポート。

トゥーンBSDF(Toon BSDF)

未サポート。

ヘアーBSDF(Hair BSDF)

未サポート。

ベルベットBSDF(Velvet BDF)

未サポート。

プリンシプルヘアーBSDF(Principled Hair BSDF)

未サポート。

シェーダー加算(Add Shader)

シェーダー加算に透過BSDFをつないでも加算合成にはならない。

入力ノード

アンビエントオクルージョン(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)

未サポート。

関連記事

Blender 記事の目次


広告
広告