17.2K Views
May 10, 18
スライド概要
草木などMaskedマテリアルが多いシーンでGPU負荷を非常に減らすことが可能な"Mask Material only in Early Z-pass"オプションに関して、非常に簡単ですがその効果とレンダリングフローを説明しました。
ご参考になれば幸いです。
Unreal Engineを開発・提供しているエピック ゲームズ ジャパンによる公式アカウントです。 勉強会や配信などで行った講演資料を公開しています。 公式サイトはこちら https://www.unrealengine.com/ja/
Mask Material only in Early Z-passの効果と仕組み Epic Games Japan Senior Support Engineer Nori Shinoyama
Mask Material only in early Z-pass (4.16からProject Settings Rendering項目に追加)
この様な草木が多いシーンで考えてみます
Mask Material only in Early Z-passの効果 BasePass 設定なし 設定あり 25.47ms 6.56ms 19ms近いGPUの高速化!! 草木の様なMasked マテリアルが多いシーンでは 非常に効果的なオプションです ただし。。。注意点もあります。。
“Mask Material only in early Z-pass”の条件 • 条件: “Full” Early Z-passを要求 – Full: Maskedオブジェクト、Skeletal Meshなど、デプスを書 く全てのオブジェクトをEraly Z-passにいれなければいけない • キャラクターなどが多いシーンでは、逆にGPUコスト全体で見ると高負荷 になる可能性もあります – 備考 • D-Bufferを使う場合も、Full Early Z-passが強制されます • なので、D-bufferを使う場合、このオプションの副作用は実質0になります • D-Bufferを使う場合はこのオプションを必ずONにしましょう
Mask Material Only In Early Z-pass 仕組みとレンダリングフロー
Early Z-pass の仕組みとMaskedマテリアルの注意点 を知っておく必要があります。 以下のリンクをご参考にしていただければ CEDEC2016: Unreal Engine 4 のレンダリングフロー総おさらい
Masked Materialならば、 Depth Testで消されるピクセルも、BasePassで計算されまくる。。
BasePassでMaskedマテリアルを不透明として描画できないか。。。
“Mask Material only in early Z-pass”の仕組み 1. Early Z-pass 工夫1: シーン全体のデプスを先に書く (Full Early Z-pass) 2. BasePass 工夫2: Maskマテリアルを不透明マテリアルとして書く 工夫3: DepthTestをEqualで計算する BasePass内部での計算が全て不透明オブジェクトとして計算されるので、 PreZが働き、PixelShaderの計算が生じない。
Masked Material Only In Early Z-passの流れ. Early Z-pass Base Pass Color Buffer Depth Buffer この一枚を描くフローを追っていきます 再掲
Masked Material Only In Early Z-passの流れ. 1 Early Z-pass Base Pass Color Buffer Depth Buffer (Full) Early Z-passでDepthを作成する 再掲
Masked Material Only In Early Z-passの流れ. 2 Early Z-pass Base Pass Color Buffer Depth Buffer Base Passで不透明として描画するが。。。 再掲
Masked Material Only In Early Z-passの流れ. 3 同じデプスの とこだけ描いて Early Z-pass Base Pass Color Buffer Depth Buffer その際のDepthTestをDepthEqualとする 再掲
Maskマテリアルが多い際は、検討してみましょう。
End…