이번에 확인할 내용은 오클루전 컬링 입니다.

컬링이란, 렌더링의 제외를 결정하는 것을 말합니다.

렌더링 파이프라인에서 가장 대표적인 컬링은 절두체 컬링과 후면 컬링이 있습니다.


절두체 컬링은 카메라에 잡히지 않는, 즉 카메라 밖에 있는 오브젝트는 그리지 않는 것입니다. 

유니티에서 절두체 컬링의 설정은 카메라 컴포넌트에서 계산 할수 있으며 기본적인 컬링이므로 컬링 자체를 설정할 필요는 없습니다.


후면컬링은 뒷면을 그리지 않는 것을 이야기하는데, 이는 정점의 그리기 순서로 결정할수 있습니다.

예를들어 정점 순서가 1->2->3으로 그릴수 있지만 뒤집혔을때 3-> 2->1 순서가 되면 그리지 않는 것입니다.

여러분이 유니티에서 크기가 큰 큐브를 배치해놓고 그 안에 들어가면 큐브 안쪽이 그려지지 않는것을 알수 있습니다. 

이것은 후면컬링을 하기 때문입니다. 


위두가지는 가장 기본적인 컬링이며, 여러분이 DX를 배운다면 직접 구현해보실수도 있습니다.

 

오클루전 컬링은 카메라 시점에서 완벽히 가려지는 오브젝트를 화면에 중복 렌더링을 하지 않는 컬링 입니다. 

주의할 점은 완벽히 가려져야 된다는 점입니다. 완벽히 가려지지 않는 경우 컬링이 아니라 렌더링 파이프라인 과정중

클리핑과정을 통해서 제거할수 있습니다. 다만 클리핑은 렌더링 과정보다 비효율적이기 때문에 필요에 따라 구현하게 됩니다.

 

자세한 오클루전 컬링 과정은 아래 유니티 메뉴얼에서 확인하세요

오클루전 컬링(Occlusion Culling)

 


적용전 확인

프레임이 대략 470~500 사이정도 나옵니다.

 

이번에도 마찬가지로 오브젝트에 정적설정을 부여 합니다.

빌딩같이 큰 지형지물 오브젝트들 (뒤에 가려질 장애물이 있을 가능성이 큰경우)는 Occulder Static을 적용 하시면 됩니다.

 

그외 다른 오브젝트를 가리기 힘든 구조물이나, 유리등 Alpha가 적용되어 투명한 부분이 있는 오브젝트들은 Occuldee Static을 적용 합니다.

 

정적 배칭과 달리 컬링 영역을 설정해주어야 합니다.

메뉴 -> Window -> Occusion Culling 메뉴로 들어 갑니다.

 

Create New 버튼을 눌러서 Occulsion Area를 만듭니다.

 

인스펙터 윈도우에 Occulsion Area를 선택하신다음에 Size 부분과 위치를 조절하여 맵을 덮을수 있도록 지정해 줍니다.

 

설정이 끝나면 다시 Occulsion Culling Window로 돌아오셔서 Bake를 눌러줍니다.

Bake 되는동안 과정을  보면 재귀적으로 영역을 분할하여 탐색과정을 거치는데 원래 렌더링파이프라인에서 흔히쓰는 옥트리 (자식이 8개인 최대 트리)를 이용합니다.

 

Baking이 완료된 상태입니다. 카메라 기준으로 가려진 물체들은 렌더링이 되지않는걸 알 수 있습니다.

(카메라를 이동해본 모습)

완료된 결과 입니다.

FPS가 700을 찍고있는데 꽤나 프레임이 많이 상승한것을 알 수 있습니다.