1. 프러스텀 컬링 (Frustum Culling)
기본적으로 유니티 엔진 자체에서 프러스텀(Frustum) 컬링으로 카메라에 잡히지 않는 물체는 그리지 않아 드로우 콜이 발생하지 않는다.
위 예시와 같이 씬 뷰에서 모든 오브젝트들이 다 보이지만 뷰 프러스텀(View Frustum) 내에 들어오지 않은 물체들은 그리지 않아
사진1의 Batches가 훨씬 작은 것을 알 수 있다.
2. 오클루전 컬링 (Occlusion Culling)
하지만 다음 그림과 같이 A 물체 뒤에 가려지는 B 물체는 게임 뷰에서 보이지는 않지만
뷰 프러스텀 내에 들어와 있다면 드로우 콜이 발생한다.
위와같이 가려져 있더라도 뷰 프러스텀 내에 들어오는 오브젝트들은 모두 드로우 콜이 발생한다.
비교를 위해 [사진 7]의 상황에서 큐브 오브젝트를 비활성화 해보았다.
확실하게 줄어든 모습을 보아 카메라에 잡히지 않아도 드로우 콜이 발생한다는 사실을 알 수 있다.
이렇게 카메라에 잡히지 않는 오브젝트의 렌더링을 피하는 최적화 기법으로 오클루전 컬링(Occlusion Culling) 을 사용하는데
방법은 다음과 같다.
위 프로퍼티들은 매직넘버를 찾아야 한다고 한다.
Cube의 Mesh Renderer - Dynamic Occlusion 체크박스를 체크한다.
Batches가 25로 절반 가까이 더 줄었다. Cube 오브젝트 뿐만 아니라 이전에 렌더링 중이던 벽면등도 함께 컬링이 되었기 때문이다.
다만 평야와 같은 실외 맵에서 사용하면 오히려 연산비용이 증가하니 실내 맵에서만 사용하는 것을 권장하고 있다.