UDN
Search public documentation:

SoftMaskedJP
English Translation
中国翻译
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

新しいマテリアルブレンドモード SoftMasked

このページは現在制作中です タスクメモ: QA ビルドで、この機能が利用可能になることを発表すること。

ドキュメントの概要: Masked マテリアルブレンドモードより高品質のレンダリングを提供する SoftMasked ブレンドモードについて説明。

ドキュメントの変更ログ: Martin Mittring により作成および更新。

次の画像は、 SoftMasked を草木に適用したときの外観を示しています。
SoftMaskedGras.jpg

草の柔らかさや木の葉にアンチエイリアスが入り、テクスチャに輪郭がはっきり示されているのが分かります。さらに、後方の草むらになるほど深度バッファへの寄与が少なく、ごちゃごちゃした SSAO のアーチファクトも減少するのでアンビエントオクルージョン (AO) も良くなります。

次の画像では、同じコンテンツに従来の Masked マテリアルブレンドモードを適用しています。
MaskedGras.jpg

概要

このページでは、 SoftMasked マテリアルブレンド モードについて説明します。これを Masked モードの代わりに使用して、ハード比較に起因するエイリアスを抑えることができます (ピクセルは完全不透明または半透明のいずれかです)。ほとんどの場合はこれでマスクコンテンツのアンチエイリアシング問題が解決されますが、 Masked モードと同様の結果に陥る場合もあります。慎重に使用すれば、草木のレンダリング品質を大幅に改善することができます。

透明レンダリングによって、同じコンテンツをよりソフトにレンダリングできますが、他の制限事項があります (被写体深度 (depth of field) に作用しない、かぶり (fog)、正確な Z オクルージョンがない)。 これに対して SoftMasked では、2 つの手法の長所を最大限に活かし、それらを組み合わせて使用しています。スクリーンショットでは違いがあまり分かりませんが、動いている最中ならはっきりと分かります。これは、 Masked コンテンツのエイリアシングが視る者の位置に応じて変化し、動きのあるコンテンツでもそのように見えるからです。

モードを有効にして調整する方法

MaterialEditor.jpg

このモードをアクティブにするには、マテリアル エディタで Blend Mode (ブレンドモード) を Blend_SoftMasked に設定するだけです。優れた結果を得るには、 Opacity Mask Clip Value を値 0.7*付近に変更するのが一番です (有効な範囲は 0.4 ~ 0.9)。値が高くなるほど、柔らかなトランジション (変わり目) の使用範囲が増えますが、同時に従来の *Masked モードの方法で (正しいフォグピクセル深度と被写界深度で) レンダリングされる量が減少します。

ブレンドに適したコンテンツ

テクスチャの拡大 (magnification) とは、テクスチャ解像度が画面のピクセルサイズより低い状態を意味しますが、これは回避してください。オブジェクトの境界が広くなり、それによってソートやくもり (fogging) の問題が画面のピクセルより大きくなって、より目立つ可能性があるためです。

MagMiniFied.jpg

左側の葉のテクスチャは拡大され、右側のは拡大されていません。適度なモノクロマスクとミップマッピングした結果、境界にアンチエイリアシングが適度に入っています (この画像では問題が見えません)。

テクスチャを拡大していなくても、テクスチャコンテンツに大きなグレースケールのコンテンツ部分ある場合は、境界が広くなる可能性がありますが、これは大抵の場合回避できます。いずれにしろ、マスクしたコンテンツはバイナリマスクになるので、(Masked モードと比較して) 結果にほとんど影響を与えずに広いトランジション部分を回避するようにコンテンツを修正できます。この修正は Photoshop で行うことができます。テクスチャマスクの悪いサンプルとして、次の画像を使用してみました。

BadLeafMask.jpg

Masked モードでは、しきい値より明るいところはすべて不透明になり、このテクスチャは問題ありません。 SoftMasked モードでは、グレー部分で光を通しているところや、不正なソートやくもりが見られる可能性があります。コンテンツの背景が均等な黒でないために、遮へいしてはいけない範囲を含めて、すべての三角形が部分的に遮へいされてしまうのです。 良いマスクとは、次の画像のようになります (グレーの領域が最小限に抑えられ、可能な範囲で良い結果が得られました)。

GoodLeafMask.jpg

テクスチャをすばやく修正するには、Photoshop で以下の簡単なステップを実行します。

  • マスクを表示させます (RGB またはアルファチャンネル)。
  • [Image Size] (画像サイズ) を 400% (水平/垂直) に変更します。 [Resample image] (画像の再サンプル) が bilinear (バイリニア) に設定されていることを確認します。
  • オプションとして、画像を少しぼかします (例: ガウスブラー = 2.5 ピクセル)。
  • [Adjustments]*、*[Threshold] を選択し、コンテンツに合わせて調整します (Masked モードでは、これは Opacity Clip Mask 値で調整していました)。
  • [Image Size] (画像サイズ) を 25% (水平/垂直) に変更します。 [Resample image] (画像の再サンプル) が bilinear (バイリニア) に設定されていることを確認します。

結果の画像は次のようになります。

BadLeafRepairedMask.jpg

パフォーマンス

この手法のパフォーマンスは優れていますが、 Masked に比べると CPU と GPU のパフォーマンスは遅くなり、2 パスが必要なので Transparent モードよりも遅くなります。

GPU

必要なピクセルシェーダーのインストラクションはごくわずかです。ジオメトリを 2 回レンダリングする (EarlyZ と Base パス、シャドウマップが追加される可能性もあり) 必要があります。フレームバッファとのブレンド作業は、Xbox360d では無視できますが、他のハードウェアで短いシェーダーが使用されているときは目立つ可能性があります。これは、ベースパスでオブジェクトを後ろから前にソートしてレンダリングする必要があるためです。

CPU

必要なソートのために CPU のレンダリングコストにオーバーヘッドが追加されます (ソート関数、ステート変更の増加)。これは描かれる風景に依存し、複数の異なるマテリアルをインタリーブしてレンダリングする必要がある場合に悪化します。

制限事項

  • 現在は実装の初期段階にあり、その将来性と Xbox360 での使用可能性を評価しているところです。さらなる改良によっていくつかの制限事項を解決できますが、コストの追加により著しいパフォーマンス低下に至る可能性があります。PC で Xbox360 同様にプレビューできると便利なので、次の改善点の候補に入るかもしれません。
  • 現在の実装は Xbox360 上でのみうまく機能し、これはアンビエントライティングと 1 つのドミナントライト (太陽) の場合のみです。
  • PC 上では、アンビエントライティングの場合のみ機能します。ドミナントライトの影響を受け、ソフトマスクが適用された境界が重なり合うと明るくなり過ぎ、草木では非常に目立ち、遮へいが少ないオブジェクトではそれほど目立ちません。
  • 現時点では、Playstation 3 とシェーダーモデル 4 に対するサポートは検討していません。
  • SoftMasked レンダリングは、アンビエントライト + 平行ライト 1 つより多くのライトをサポートしません。
    (すべての SoftMasked オブジェクトをシングルパスでレンダリングしなければ、PC 上で見られるように境界が明るくなり過ぎてしまいます)。
  • シャドウのサポートは Xbox360 上だけ、1 つのドミナントライトからのシャドウだけに制限されています。
  • フォグ
    SoftMasked は不透明度が最大の部分の深度バッファだけに作用します。フォグのレンダリングは深度バッファを基に行われるので、一部のピクセルのくもりが非常に強くなります。 Opacity Mask Clip 値を小さくすると改善されますが、柔らかさがいくらか失われるようです。この問題は次の画像で見ることかできます (最初の画像が SoftMasked*、2 番目が *Masked)。

SoftMakskedTree.jpg MaskedTree.jpg

ソート問題 タスクメモ: 画像を用意すること