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

17.2K Views

May 10, 18

スライド概要

草木などMaskedマテリアルが多いシーンでGPU負荷を非常に減らすことが可能な"Mask Material only in Early Z-pass"オプションに関して、非常に簡単ですがその効果とレンダリングフローを説明しました。

ご参考になれば幸いです。

profile-image

Unreal Engineを開発・提供しているエピック ゲームズ ジャパンによる公式アカウントです。 勉強会や配信などで行った講演資料を公開しています。 公式サイトはこちら https://www.unrealengine.com/ja/

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Mask Material only in Early Z-passの効果と仕組み Epic Games Japan Senior Support Engineer Nori Shinoyama

2.

Mask Material only in early Z-pass (4.16からProject Settings Rendering項目に追加)

3.

この様な草木が多いシーンで考えてみます

4.

Mask Material only in Early Z-passの効果 BasePass 設定なし 設定あり 25.47ms 6.56ms 19ms近いGPUの高速化!! 草木の様なMasked マテリアルが多いシーンでは 非常に効果的なオプションです ただし。。。注意点もあります。。

5.

“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にしましょう

6.

Mask Material Only In Early Z-pass 仕組みとレンダリングフロー

7.

Early Z-pass の仕組みとMaskedマテリアルの注意点 を知っておく必要があります。 以下のリンクをご参考にしていただければ CEDEC2016: Unreal Engine 4 のレンダリングフロー総おさらい

8.

Masked Materialならば、 Depth Testで消されるピクセルも、BasePassで計算されまくる。。

9.

BasePassでMaskedマテリアルを不透明として描画できないか。。。

10.

“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の計算が生じない。

11.

Masked Material Only In Early Z-passの流れ. Early Z-pass Base Pass Color Buffer Depth Buffer この一枚を描くフローを追っていきます 再掲

12.

Masked Material Only In Early Z-passの流れ. 1 Early Z-pass Base Pass Color Buffer Depth Buffer (Full) Early Z-passでDepthを作成する 再掲

13.

Masked Material Only In Early Z-passの流れ. 2 Early Z-pass Base Pass Color Buffer Depth Buffer Base Passで不透明として描画するが。。。 再掲

14.

Masked Material Only In Early Z-passの流れ. 3 同じデプスの とこだけ描いて Early Z-pass Base Pass Color Buffer Depth Buffer その際のDepthTestをDepthEqualとする 再掲

15.

Maskマテリアルが多い際は、検討してみましょう。

16.

End…