この記事でのバージョン
Unity 2020.3.25f1
はじめに
Unityにはオクルージョンカリング(Occlusion Culling)という
カメラに映ってないオブジェクトは描画しない負荷削減のための機能があります。
イメージとしては以下のような感じで負荷削減の効果も高く、
3Dゲームにはほぼ必須と言ってもいいぐらいの機能です。
ただし、自動で機能するわけではなく簡単な設定が必要なため、今回はその解説記事です!
なお、記事中では以下のアセットを使っています。
Low Poly Ultimate Pack | 3D Props | Unity Asset Store |
オクルージョンカリング
さっそく設定方法ですが、まずCameraのOcclusion Cullingにチェックを入れます。
次に他のオブジェクトを隠すオブジェクトのOccluder Staticにチェック、
他のオブジェクトから隠されるオブジェクトのOccludee Staticにチェックを入れます。
(どちらも該当する場合は両方にチェック、Staticにチェックを入れると全部有効になる)
あとはWindow/Rendering/Occlusion Cullingからウィンドウを開き、
Bakeすれば、
カメラに映ってない物は自動で描画されないようになります。
(Occlusionのウィンドウを開いていればSceneでも確認可能)
これによりSetPass callsが減るので、負荷も大きく減ります。
なお、Bake時の設定値の意味は以下の通りで、特にSmallest Occluderは
デフォルトで結構大きい値が設定されているので、調整する必要があるかもしれません。
- Smallest Occluder : 遮蔽物の最小サイズ、値が小さい程に精度が上がるがデータサイズが増える
- Smallest Hole : 遮蔽物と遮蔽物の間の最小値、値が小さい程に精度が上がるがデータサイズが増える
- Backface Threshold : モデルの裏面(見えない所)のメッシュを削除する割合、下げるほど削除される
ちなみBakeした結果のデータは
シーンと同名のディレクトリに格納されているOcclusionCullingDataになります。