【Unity】オクルージョンカリングについて

概要

Unityにはオクルージョンカリングの機能があり、カメラに映らないオブジェクトのレンダリングを省いてパフォーマンスを向上させています。

今回はUnityの標準機能でできることを調べました。使い方については省略しています。

標準機能でできること

カメラ外のオブジェクトのレンダリングを省く

これは特に設定をしなくても自動で行われているはずです。

確認方法としてはGameタブのStatsを開いて、オブジェクトをカメラ外に移動したりしてください。

「Graphis/Tris」の値が変動すると思いますが、この値が描画回数になります。

ベイクしたシーンでオブジェクトに隠れるオブジェクトのレンダリングを省くこと

こちらは事前に設定が必要で、staticなオブジェクトをシーン上に配置してベイクするとstaticなオブジェクトに完全に隠れるオブジェクトをレンダリングしないようにできます。

標準機能でできないであろうこと

UIで覆っているときのレンダリングを省く

「RenderMode : ScreenSpace-Overlay」のCanvas背景を真っ白にして覆いかぶせ、GameタブのStatsを見ると分かりますがオブジェクトが全く映っていない状態でも「Graphis/Tris」の値は映っているときと変わりません(Canvas分は増えています)。

そもそも「RenderMode : ScreenSpace-Overlay」のCanvasはカメラに映っているわけではないので、カメラのオクルージョンカリングは機能しません。

RenderTextureでカメラの映像をとってくるような使い方をするときもありますが、基本的にUIが全体を覆っているようなときは無駄なレンダリングが走っていることになります。

ベイク時にシーンに存在しないオブジェクトのオクルージョンカリングデータ作成

オクルージョンカリングのデータを作成するとき、対象はシーンになります。

そのため、アセットバンドル等で後からステージを引っ張ってくるような場合はオクルージョンカリングのデータが使えません。

投稿者プロフィール

おかもち
おかもち
ゲームとか作ってます。
Unity触ってることが多いです。
   

コメントを残す


CAPTCHA