【Unity】uGUIのポリゴン数とSet Pass Callの計測

ugui-poly-count-set-pass-call

描画負荷について気になったので、単純なUIの要素のポリゴン数とSet Pass Callを計測してみました。

スポンサーリンク

UIの△ポリゴン数について

Total△
Camera(Only) 2
Image(Simple) 4
Image(9Slice) 20
Image(Tiled) 10
Image(Simple)+Shadow 6
Image(Simple)+Outline 12
Image(Simple)+Shadow+Outline 22

カメラのみ

f:id:min0124:20180217132801p:plain

△2

カメラ表示(Solid Color)だけでも、△ポリゴン2計測されます。

1枚のImage(Simple)

f:id:min0124:20180217132848p:plain

+△2

Image(9Slice)

f:id:min0124:20180217133217p:plain

+△18

△2×9複製分

Image(Tiled)

f:id:min0124:20180217135117p:plain

+△8(最小)

△2×4複製分。4隅分が最小で、中央を繰り返した分だけ△は増えていく。

Shadow

f:id:min0124:20180217133246p:plain

+△2

△2×1複製分

Outline

f:id:min0124:20180217133521p:plain

+△8

△2×4複製分

Shadow+Outline

f:id:min0124:20180217133326p:plain

+△18

Camera△2+(Image△2+Outline△8)*Shadow△2=22

まとめ

  • 画像もテキストも1つにつき+△2

  • 9スライスにすると×9倍

  • タイリングにすると×繰り返した分

  • シャドウを使うと×2倍

  • アウトラインを使うと×4倍

  • シャドウとアウトラインを組み合わせると×10倍以上に

ということで、UIといえど無計画だと、いつのまにか頂点数はかなり増えてしまう恐れがあり。

スポンサーリンク

UIのSet Pass Callについて

Set Pass CallはCPUからGPUに送る描画命令。回数が多いと負荷が大きい。

1枚のテクスチャ+UI/Defaultマテリアルの条件で計測

Batches SetPass calls
Camera(Only) 1 1
UI 2 2
Rect Mask 2D 3 2
Mask 4 4

まとめ

  • UIはSet Pass Call2で収まるのが最小値。

  • マスクは使うだけでSetPass callsが増えるので、極力使わないほうが○

  • 複数のマテリアルは挟んでいくとその分、SetPass callsは増えるので、できるだけ1アトラス+1マテリアルに収める

参考

描画最適化 – Qiita

コメント