お世話になります。
UMG描画のドローコールについて質問です。
弊社で確認しましたところImage、TextなどのウィジェットをPanel系のウィジェットの子とした場合、Stat コマンドで確認できるドローコールに変化が見受けられました。
ドローコールが集約されないウィジェットに関して、集約されるようになる条件などご存知でしたらご教示いただきたく思います。
〇親にした場合、ドローコールが集約されるウィジェット
・Scroll Box
・Vertical Box
・Horizontal Box
・Wrap Box
・Grid Box
・Uniform Grid Box
〇親にした場合、ドローコールが集約されないウィジェット
・Canvas Panel
・Size Box
・Scale Box
・Widget Switcher
・Safe Zone
・Overlay
※マテリアルインスタンスは共通のもとを使用。
以上、よろしくお願いいたします。
お世話になっております。こちら、残念ながら明示的に示すドキュメントなどが存在しておりません。ただいまこれらが比較的容易に識別する手段がないか確認しております。お時間頂いて恐縮ですが、今しばらくお待ち下さい。
こちら調査にお時間いただき申し訳ございません。
まず、このDrawCallがまとめられるかどうかは残念ながらどこかに明示的に記されているわけではありません。現状は実装内容から判断していただくことになります。そのうえで、どの様な基準でまとめられるかをご説明させていただきます。
基本的に、UE4では、そのWidget内部で視覚的に重なりがない起きないと想定される場合、各子要素は同一レイヤーと扱われ内部でまとめられるバッチをまとめます。ですので、上記で上げて頂いたリストは内部でDrawCallがまとめられます。
〇親にした場合、ドローコールが集約されるウィジェット
・Scroll Box
・Vertical Box
・Horizontal Box
・Wrap Box
・Grid Box
・Uniform Grid Box
その上で、まとめられないWidgetについて各種説明させていただきます。
・Size Box
・Scale Box
・Safe Zone
上記3つのWidgetは小要素を一つのみもてることからDrawをまとめる処理が走りません。
・Widget Switcher
こちらは複数要素を入れられますが、描画されるものは一つを指定するのでこちらもDrawがまとめられることはありません。
・Overlay
こちらも画像を重ねることなどができるため、Drawがまとまることはございません。
・Canvas Panel
最後にCanvas Panelですが、こちらも好きにWidgetを配置し重ねることができるため、基本的にはDrawCallをまとめず、UMGエディタで設定したWidgetの前後関係に基づいて順に描画をいたします。ただし、プロジェクトセッティングにある、 Explicit Canvas Child ZOrderをONにすることで、ZOrderが同一のものを同一レイヤーとしてバッチをまとめる
ことができます。
しかし、その場合、CanvasPanel内部の各子供のZOrderを明示的に指定しないと前後関係が保証されなくなります。
ご参考になれば幸いです。
お世話になっております。
条件はございますが「Explicit Canvas Child ZOrder」を有効にすることで、比較的容易にドローコールを集約できることを確認いたしました。
ご回答ありがとうございます。