Unreal Engine 4.25 およびそれ以降で改善されたシェーディング モデル

Epic Games Rendering Team
Unreal Engine 4.25 のリリースにともなって、そのマテリアル システムには、際立った改善がいくつか行われました。正しい異方性の入力、新たな物理ベースの半透明シェーディング モデル、クリアーコート モデルが追加されました。 
自動車、製造、建築業界で働く人たちは、長年、プロジェクトの正確性を追求してきました。シェーダーの改善によって、そのようなマテリアルを作成する際の複雑さが一段軽減されます。過剰に複雑なロジックを使ったり、ハックしなければ、望みの見栄えが達成できない、ということはなくなります。 

最近更新された無料の Automotive Materials Pack も一緒に使うと、物理的に正確なマテリアルをシーンやプロジェクトにこれまでになく簡単に追加できます。それらの改善点の詳細と、それらがプロジェクトのルック アンド フィールにどのように影響するかについては、以下をお読みください。

クリアーコートの改善

Unreal Engine では、クリアーコートをシミュレートするマルチ レイヤー シェーダーがサポートされてからしばらく経ちますが、既存のモデルが改善され、物理的により正確な出来上がりが得られるようになります。複雑な現実世界の材質を正確に再現する能力がきわめて重要となる業界やプロジェクトが存在します。たとえば、カーペイントの材質の再現は、Thin Translucent によるサーフェスの典型的な例です。このサーフェスは、しばしばさまざまな法線とラフネスのプロパティが関連づけられ、さらにこれらは、基礎となるサーフェスのディテールと一体となります。 
左: Unreal Engine 4.24 でのカーペイント。右: Unreal Engine 4.25 でのカーペイント
以前のクリアコート モデルは、環境光との相性が良好でした。つまり、最も効果的となるのは、空とディレクショナル (指向性) ライトを生かす広い野外環境とともに使うときでした。今回のリリースでは、指向性のあるライトで減衰とフレネルが顕著となる、パンクチュアル ライト (ポイント ライト、スポット ライト、ディレクショナル ライト) への正しい方向性をもった反応がサポートされました。 

クリアコート モデルと言えば、よくカーペイント タイプのマテリアルが連想されますが、使用はそれに限定されません。標準的な材質の上に薄い半透明の表面がある多層材質をシミュレートするのにも使われます。金属の表面にも非金属の表面にも使えます。

クリアコート モデルを真に改善するために、私たちは、エディター内パス トレーサーとともに実装することから始めました。これにより、クリアコート モデルを使って Ground Truth の参照を生成し、物理的に正確な Ground Truth の表現を生成することが可能になりました。この Ground Truth の表現を使って、従来のラスターおよびレイトレーシング レンダリング パス全体でクリアコート モデルを改善することができます。 

独自のクリアコート マテリアルを作成して使用するには、マテリアルの Details (詳細) パネルで、Shading Model (シェーディング モデル) を Clear Coat に変更します。それによって、メインのマテリアル ノードで 2 つの入力 Clear CoatClear Coat Roughness (ラフネス) が有効になります。
TechBlog ShadingModelImprovements Image17
Normal input の入力は、最上層レイヤーのサーフェス テクスチャを制御するために使用します。クリアコートの下の最下層レイヤーを設定および制御するには、[プロジェクトの設定] のエンジン/レンダリング/マテリアルで [Clear Coat Enable Second Normal] にチェックを入れる必要があります。
TechBlog ShadingModelImprovements Image13
第 2 法線を有効にして、マテリアル グラフで Clear Coat Bottom Normal 出力ノードを使用し、クリアコート サーフェス レイヤーの下の Normal Map Detail (法線マップの詳細) テクスチャを設定および制御します。 
TechBlog ShadingModelImprovements Image21
底にある法線によって、複雑な材質がより正確に表現されます。たとえば、下の画像にあるカーボン ファイバーや、カーペイントの反射する斑点などは、最上部のクリアーコートのレイヤーとは幾何学的に/反射的に異なるサーフェスをもっています。このようなマテリアルの設定例は、他にも、Automotive Materials Pack で見つかります。
左: Clear Coat Bottom Normal が有効。 右: Clear Coat Bottom Normal が無効。

異方性マテリアルのためのサポートを追加

つや消し金属や似たようなタイプの材質を、正しい異方性の反応をもって表現することは、4.25 のリリース以前では不可能であり、マテリアルでこのエフェクトをフェイクするしかありませんでした。しかし、4.25 のリリースにより、異方性を設定および制御するためのベータ版サポートが追加になり、物理的に正しいライティング反応が得られるようになりました。つまり、ライトの方向性をリアルタイムに制御することが可能になり、簡単に利用できるマテリアルの入力を使うことで、このエフェクトをフェイクするような複雑なことは必要なくなりました。 

たとえば、下図では、車輪のブレーキローター部分はライトに対して自然な反応を示しています。これは、Anisotropy (異方性) と Tangent という新たなマテリアル入力を使って最小限の設定で実現できます。
左: 標準的な等方性の反応。 右: 正しい異方性の反応
私たちの異方性 (Anisotropic) モデルでは、GGX 異方性定式化が使われており、正確なライトや、スカイライトのためのイメージベースのライティング (IBL)、レイトレーシングまたは反射キャプチャ プローブを利用した反射が、Clear Coat モデルおよび Default Lit シェーディング モデルにおいてサポートされています。今回のリリースでサポートされているライトのタイプは限定的ですが、エンジンの今後のリリースでは、Directional Light (ディレクショナル ライト) および Rect Light (矩形ライト) がサポートされる予定です。現在のところは、異方性のプロパティを使うマテリアルによる等方性反応に切り替えられます。

[プロジェクトの設定] で Use anisotropic BRDF (Beta) (異方性 BRDF を使用) にチェックを入れると、Anisotropy (異方性) と Tangent (タンジェント) の入力が、マテリアル エディタのメインのマテリアル ノードで有効になります。TechBlog ShadingModelImprovements Image15
[プロジェクトの設定] により、マテリアル エディタのメインのマテリアル ノードで、AnisotropyTangent の入力が使えるようになります。Anisotropy の入力は、Roughness (ラフネス/粗さ) の入力の値がゼロより大きい場合に、異方性の反応の正または負の Roughness を制御します。
TechBlog ShadingModelImprovements Image10
Tangent の入力は、適用されるテクスチャのライトの方向性を指定するのに役立ちます。上の例では、つや消し金属の Tangent マップを使用して指定しています。Anisotropy の入力は、異方性の反応のラフネスを制御します。以下の例では、値 0 (異方性の反応なし) から値 1 (正の異方性の反応) まで変化させています。なお、異方性の反応は -1 から 1 までの値を使用できます。 
 
TechBlog ShadingModelImprovements Image12
上の Anisotropy では、0~1 の値が使われ、等方性の反応から完全な正の異方性の反応までが表示されています。
Tangent の入力は、直接的な値または Tangent テクスチャ マップを使用してライトの方向性を指定するのに役立ちます。法線テクスチャだけを使用する場合は、ライトの方向性により等方性の反応が得られます。しかし、Tangent マップと組み合わせると、ライトの方向性に対して完全な異方性の反応が得られます。
TechBlog ShadingModelImprovements Image19
左: 法線マップおよび Tangent マップを使った異方性の反応。 中: 法線マップのみを使った異方性の反応。 右: Tangent マップのみを使った異方性の反応。

物理ベースの半透明を改善

色味をつけたガラスやすりガラスなどの現実世界における振る舞いを正確に表現するような透明なマテリアルを作成する場合、これまでは制約がありました。回避策を用いたり、複雑な組み方をしなければうまく表現できませんでした。今回、透明のための、まったく新しいシェーディング モデルを追加することによって、そのような表現を可能にしました。そのシェーディング モデルは Thin Translucent と言います。これは、白いスペキュラ ハイライトと背景にあるものの両方をシングル パスでレンダリングします。その際、空中からガラスに、そしてガラスから空中に入るライトの反射を考慮する物理ベースのシェーダーが使われます。このようなことを実現しながらも、半透明 (translucent) マテリアルのクオリティとパフォーマンスは、これまでの方式のものよりも改善されています。
色味のついたガラスや半透明の色つきマテリアルなどのようなマテリアルを作成する場合は、白いスペキュラ ハイライトを追加するとともに、そのガラスを通して見た背景には色を付ける必要があります。Unreal Engine の以前のバージョンでは、この種のエフェクトは、別々のオブジェクトとマテリアルを使ってフェイクする他ありませんでした (一つは白いスペキュラ ハイライトのためのものであり、もう一つは、背景の色付けのためのものです)。この種のマテリアルを組むことの複雑さはまだあります。正しい順番で互いとブレンドさせる必要もあるのです。 

シェーディング モデルは、マテリアルに物理ベースのシェーダーを使ってシングル パスでこの種の問題を解決します。しかも、過度に複雑な回避策やワークフローを用いることもなくなります。 
TechBlog ShadingModelImprovements Image5
薄い半透明のマテリアルが、正確に、白いスペキュラ ハイライトを正しく表示しています。同時に、背景には色が付いています。これらはシングル パスでレンダリングされています。
この新シェーディング モデルを使用するには、マテリアルの Details (詳細) パネル内以下のように設定することによって、有効化してください。 
 
  • Blend Mode を Translucent
  • Shading Model を Thin Translucent
  • Lighting Mode を Surface ForwardShading
  TechBlog ShadingModelImprovements Image14
マテリアルのグラフで、Thin Translucent Material 出力ノードを追加して、マテリアルの透過カラー (transmittance color) を制御します。下のグラフの例は、非常に単純な半透明マテリアルです。Transmittance Colorは、このマテリアルを通過するカラーを制御します。メインのマテリアル ノードにある Opacity (不透明度) の入力は、マテリアルを通過できるライトの量を制御します。Default Lit の半透明マテリアルとは異なり、Opacity を 0 に設定すると、このマテリアルは可視的でありながらも、ライトがマテリアルを通過するのを妨げません。 
TechBlog ShadingModelImprovements Image7
以下の例では、Default Lit の半透明マテリアルを新しい半透明モデルと比較すると、違いは明らかです。従来のモデルは深度バッファに依存しており、すぐ後ろにあるオブジェクトには正しく作用しません。また、シャドウがかかる領域が適切に表現されず、色の付いた透明なマテリアルがクリアなマテリアルのままのように見えます。 

新たな半透明モデルでは、これらのことが考慮されています。白いスペキュラのハイライトが表示されるとともに、適切に色味が付いた背景が表現されるのです。

ボーナス!無料のコンテンツ パックをプロジェクトで利用しよう!

私たちは、エンジンを改善させ続けながら、それらのアップデートや新機能を紹介できるコンテンツも必要になります。Epic のチームは、これらの機能のいくつかを非常に詳細に展示できるコンテンツを作成しました。これらのコンテンツは、Unreal Engine マーケットプレイスから無料でダウンロードして、ご自分のプロジェクトに使用することができます!
 
Automotive Materials Pack は、自動車をテーマにした高品質のパックです。150 を超えるマテリアルとテクスチャから構成されており、あなたの次回のプロジェクトにすぐに使える状態になっています。カーペイントや、金属、反射板、革などのためのさまざまな種類のマテリアルが得られます。このパックのアップデートについては、こちらのブログで詳しくご覧になれます。
Automotive Beach Scene (自動車浜辺のシーン) は、最新の自動車デザインやプロダクト デザインのための完璧なショーケースです。これには、Quixel Megascans libraryから採られた非常に詳細なアセット、マテリアル、テクスチャが含まれています。このシーンは、映画のカメラの動きとフォトグラフィックな外観を表現するように制作されており、レイトレーシング機能を有効にすると、さらにリアルなライティングが追加されます。このシーンの詳細については、こちらのブログでご覧いただけます。

    Unreal Engine を今すぐ入手しましょう!

    世界で最もオープンで先進的な制作ツールを手に入れてください。 Unreal Engine は、あらゆる機能が含まれ、ソースコードへの完全なアクセスが可能なため、満載の機能がすぐに使える状態で入手できます。