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の流れ.
Base Pass
Early Z-pass
再掲
Depth BufferColor Buffer
この一枚を描くフローを追っていきます
Masked Material Only In Early Z-passの流れ. 1
Base Pass
Early Z-pass
再掲
Depth Buffer
(Full) Early Z-passでDepthを作成する
Color Buffer
Masked Material Only In Early Z-passの流れ. 2
Depth Buffer
Base Pass
Early Z-pass
再掲
Base Passで不透明として描画するが。。。
Color Buffer
Masked Material Only In Early Z-passの流れ. 3
Depth Buffer
Base Pass
Early Z-pass
再掲
その際のDepthTestをDepthEqualとする
Color Buffer
同じデプスの
とこだけ描いて
Maskマテリアルが多い際は、検討してみましょう。
End…

Mask Material only in Early Z-passの効果と仕組み