マテリアルのブレンド モード

マテリアルのブレンド モードと、各モードがマテリアルのレンダリングに与える影響について説明します。

ブレンド モードでは、現在のマテリアルの出力と描画済みの背景とのブレンド方法を示します。技術的には、マテリアルを他のピクセルの前面にレンダリングする際に、マテリアル (ソース カラー) とすでにフレーム バッファ (デスティネーション カラー) にあるものをエンジンでどのように組み合わせるかを制御できるようになります。

ブレンド モードのオプションは、[Details (詳細)] パネルにあり、他の基本的な マテリアルのプロパティ と一緒に並んでいます。

Blend Modes dropdown menu

このドキュメントでは、カメラとウォールの間にスフィアを配置して、さまざまなブレンド モードの実演を行います。スフィア マテリアルのブレンド モードを変更することで、オブジェクトとその背後にあるピクセルのブレンド方法を確認できます。

Blend Modes demo setup

Opaque (不透明)

不透明ブレンド モードは最も単純で、おそらくは非常に頻繁に使用するブレンド モードです。このモードは、ライトが通過または貫通しないサーフェスを定義します。 ほとんどのプラスチック、金属、石のほか、大半のサーフェスの種類に最適です。カメラの視点から見ると、金色のスフィアが背後のウォールを完全にオクルードしています。

Opaque Blend Mode

Masked (マスク)

マスク ブレンド モードは、バイナリ (オン/オフ) 方式で選択的に可視性を制御する必要がある場合に使用します。たとえば、金網フェンスや格子を模したマテリアルを考えてみましょう。その場合、一部の領域は実体として見えるようにしますが、残りの領域は不可視にします。そのようなマテリアルに最適なのがマスク ブレンド モードです。

以下のマスク マテリアル グラフでは、黒と白のストライプのテクスチャが Opacity Mask 入力に接続されています。マスクの白の部分はレンダリングされますが、黒の部分はレンダリングされません。マスク マテリアルを使用する場合、中間レベルのオパシティはありません。

Masked Material Graph

カメラの視点から見たマテリアルは以下のようになります。

Masked Material

透明であることレンダリングされないこと の違いに留意することが重要です。ガラスなど、透明なサーフェスは、反射 (スペキュラリティ) の形でライトとインタラクトします。一方、マスク モードでカリングされるピクセルは描画されないため、その領域では反射は起こりません。反射性 (スペキュラ) を維持するには、透過ブレンド モードを使用するか、レイヤー マテリアル の作成を検討することをお勧めします。

さらに、マスク領域ではそれらの機能がレンダリングされず、まったく計算されないので、GPU のパフォーマンスを節約することができます。

Opacity Clip Mask

マスク ブレンド モードを使用する際には、Opacity Mask Clip Value プロパティに特に注意が必要です。このプロパティには 0 ~ 1 のスカラー値を設定して、カットオフ ポイントとして使用するオパシティ マスク テクスチャの値を制御します。ここに設定した値よりも 暗い ピクセルすべてが、レンダリング対象外になります。

Opacity Mask Clip Value (スライダーをドラッグしてプレビュー)

上記の例では、マテリアルの Two Sided プロパティが True (オン) に設定されているため、ボックスの内部が見えるようになっています。

なお、ここではインタラクティブな例をお見せしましたが、Opacity Mask Clip Value プロパティはランタイム時に変更できるようにはなっていません。

Translucent (透過)

透過ブレンド モードは、何らかの透過処理が必要なオブジェクトに使用します。透過ブレンド モードは、さまざまなレベルの透過処理ができる点で、マスク ブレンド モードと異なります。

Translucent Material Graph

このブレンド モードでは、オパシティ 値またはテクスチャを受け取り、それをサーフェスに適用します。黒い領域は完全に透明になり、白い領域は完全に不透明になります。黒と白の間の色調は、それに対応する透明度になります。 例えば、黒から白へのグラデーションを Opacity 入力に接続すると、スフィアのメッシュの頂点は完全に透明で、下に行くにつれだんだんと透明度が下がり、最下部では完全に不透明になります。

Translucent gradient on a sphere

透過マテリアルを使用する際の留意点として重要なのは、透過マテリアルが現在スペキュラリティに対応していないことです。つまり、サーフェス上に反射を表示することができません。ただし、次のようなノード ネットワークでキューブマップを使用すると反射に見せかけることができます。キューブマップ テクスチャは、ベース カラーの上に単純に追加されます。

Additive (加算)

加算ブレンド モードは、マテリアルのピクセルを受け取り、それらを背景のピクセルに加えます。これは、Photoshop の Linear Dodge (Add) (覆い焼き (リニア) - 加算) ブレンド モードに非常に似ています。 つまり、明るさは落ちないということです。すべてのピクセル値が加算されるため、黒は単に透明としてレンダリングされます。このブレンド モードは、火、蒸気、ホログラムなど、さまざまな特殊エフェクトに役立ちます。

Additive Material Graph

透過ブレンド モードと同様に、このブレンド モードでもスペキュラリティ (反射) が考慮されません。ブレンドの加算の性質上、このモードでスペキュラリティを使用する可能性は低いと思われますが、前述の透過セクションで示したように、キューブマップを使用することで反射のようなエフェクトを模倣することができます。

以下の画像では、シーンにもう 1 つスフィアを追加しました。2 つのスフィアが重なっている領域では、ピクセルが加算され、明るくなっている点に注目してください。

Additive Material Example

加算マテリアルの短所の 1 つは、背景色が明るいと見づらくなることが多い点です。スフィアを横から見ると、それがよく分かります。

Additive Material side view

この問題を解決するには、代わりに アルファ コンポジット ブレンド モードを使用し、乗算済みのアルファ チャンネルを持つテクスチャを指定します。 これで、明るいシーンにおける彩度と可視性の問題を改善できます。

Modulate (調整)

調整ブレンド モードでは、マテリアルの値と背景のピクセルを乗算します。この動作は、Photoshop の Multiply (乗算) ブレンド モードに非常に似ています。

Modulate Material Graph

上記のグラフでは、マテリアルのシェーディング モデルが [Unlit (非ライティング)]、ブレンド モードが [Modulate] に設定されています。Constant3 ベクターが Emissive 入力に接続され、サーフェスの色を定義しています。

Modulate Material Example

ここでも複数のスフィアを使用します。重なっているピクセルは乗算され、暗い色になっています。

調整ブレンド モードは、特定のパーティクル エフェクトに最適ですが、ライティングや個別の透過処理に対応していないため、注意が必要です。

AlphaComposite (アルファ コンポジット)

アルファ コンポジットは、アルファが乗算済み (イメージの保存前に RGB カラー チャンネルとアルファ チャンネルが乗算済み) のテクスチャが設定されたマテリアルで使用します。アルファ コンポジット ブレンド モードは、明るい色のパーティクルや VFX に対して、加算ブレンド モードや透過ブレンド モードの代替として便利に使用できます。

加算ブレンドと比べて、アルファ コンポジットの方が可視性が高く、明るい色の背景に対してより彩度が維持されます。加算的なビルドでマテリアルの明るい領域が白飛びしてしまう可能性が低くなります。

以下のビデオに、オパシティ パラメータを設定したアルファ コンポジット マテリアルを示します。オパシティ レベルが低い場合、マテリアルは加算ブレンドのような動作をします。オパシティ レベルが 0.5 以上の場合、透過ブレンドのようになり、マスクのエッジ近くで面白い遷移エフェクトが作成されます。

リファレンス

AlphaHoldout (アルファ提供)

アルファ提供ブレンド モードでは、マテリアルのアルファを「提供」できます。ビュー空間では、その背後でオブジェクトに直接穴を開けます。次の画像に、アルファ提供実装のカメラとシーンのレイアウトを示します。

  1. カメラ。

  2. 最前面のスタティック メッシュが「穴抜き」オブジェクトの役割を果たします。AlphaHoldout Material マテリアルがこのメッシュに適用されています。このマテリアルでは、Unlit シェーディング モデルを使用する必要があります。

  3. 穴受けサーフェス (穴を開ける対象のサーフェス) がアルファ提供オブジェクトの背後に配置されています。今回は、レンガの壁です。 穴受けサーフェスのマテリアルは 必ず、透過、加算、調整、またはアルファ コンポジットのいずれかのブレンド モードを使用しなければなりません。アルファ提供マテリアルは、不透明マテリアルに作用することはできません。

  4. 穴を通して見えるシーンの背景。

カメラの視点からは、穴受けサーフェスに透明な穴が開き、穴を通じて背後のオブジェクトが見えます。

AlphaHoldout Example

AlphaHoldOut マテリアルは個別のスタティック メッシュ アセット上にあるため、簡単にエディタ内で移動させたり、ゲーム内でアニメートしたりできます。

ブレンド モードの計算式

モード

説明

BLEND_Opaque

最終カラー = ソース カラーです。マテリアルは背景の上に描画されます。このブレンド モードはライティングと互換性があります。

BLEND_Masked

OpacityMask > OpacityMaskClipValue の場合は最終カラー = ソース カラーです。それ以外の場合、ピクセルは破棄されます。このブレンド モードはライティングと互換性があります。

BLEND_Translucent

最終カラー = ソース カラー * オパシティ + Dest カラー * (1 - オパシティ) です。このブレンド モードは、動的ライティングと互換性が ありません

BLEND_Additive

最終カラー = ソース カラー + Dest カラーです。このブレンド モードは、動的ライティングと互換性が ありません

BLEND_Modulate

最終カラー = ソース カラー x Dest カラーです。デカール マテリアルでない限り、このブレンド モードは動的ライティングまたはフォグと互換性が ありません

BLEND_AlphaComposite

最終カラー = ソース カラー + Dest カラー * (1 - ソース オパシティ) です。

BLEND_AlphaHoldout

最終カラー = Dest カラー * (1 - ソース オパシティ) ですこのブレンド モードは、動的ライティングと互換性が **ありません**。