Unity

[Unity] Occlusion Culling

샘김 2022. 12. 5. 22:34

Frustum Culling 

Frustum Culling 유니티에서 기본적으로 제공하는 Culling 기법으로 카메라에서 비추고 있는 영역을 Frustum Area 로 정의합니다. Clipping Plane을 줄여 에서 Frustum Area를 벗어난 오브젝트는 렌더링 대상에서 제외시킵니다.

  • 카메라 오브젝트의 카메라 컴포넌트 Clipping Plane으로 설정 가능
  • 단위는 미터(모든 유니티에서)
  • Near Clipping Plane 과 Far Clipping Plane 을 설정하여 가시거리 설정 가능
  • 유니티 안에서 기본적으로 수행

카메라가 비추는 절두체 모양의 피라미드 모양의 Frustum Area

Near : 화면이 시작하는 지점

Far : 화면이 끝나는 지점

Near, Far Clipping Planes 설정

Occlusion Culling 

Occlusion Culling 은 오브젝트가 다른 오브젝트에 의해 가려져서 카메라에 보이지 않을 때 해당 오브젝트의 렌더링을 비활성화 하는 기능입니다. 3D 그래픽에서는 카메라에서 가장 먼 오브젝트가 먼저 그려지고 가까운 오브젝트는 그 위에 그려집니다(overdraw) . Frustum Culling 은 카메라의 시야 영역밖에 있는 오브젝트에 대한 렌더링을 비활성화 하지만 Overdraw 에 의해 숨겨진 것을 끄지는 않습니다. 

  • 낭비되는 렌더링 작업을 방지하여 CPU, GPU 시간 모두 절약
  • 동적 오브젝트를 가릴 순 있지만, 동적 오브젝트가 다른 오브젝트를 가릴 순 없다.( 동적 오브젝트는 Occludee 일 순 있지만 Occluder 일 수는 없음
  • 불투명 오브젝트에는 적용할 수 없음

Occluder & Occludee

Occluder : 다른 오브젝트를 가리는 오브젝트(정적 오브젝트)

Occludee : 다른 오브젝트에 의해 가려지는 오브젝트

 

 

Occlusion Culling 설정 방법

Occlustion Culling 을 시작하기 전에 오브젝트에 Occluder static, Occludee static을 설정해야 합니다.

 

카메라 컴포넌트에서 Occlusion Culling 플래그를 활성화 시켜준다.

Occlusion Culling window

- 상단 메뉴에서 Window RenderingOcclusion Culling 을 눌러 Occlusion Culling widow을 엽니다.

 Occlusion Areas를 누르면 녹색 반투명 상자가 생성되고 그 안에 객체들에게 Occlusion Culling을 적용합니다.

 

Is View Volume 활성화 시킵니다.

 

-  오브젝트들을 Occluder static 또는 Occludee static 으로 설정한다.

 

- Bake 카테고리를 눌러 각 옵션을 설정해주는데 옵션들의 기능은 다음과 같습니다.

  • Smllest Occluder : 오브젝트를 Occluder로 인식할 최소 크기, 해당 크기보다 작은 오브젝트는 다른 오브젝트를 가리지 않는다고 판단.
  • Smallest Hole : 카메라가 지오메트리 사이의 빈 공간을 인식할 최소거리, 오브젝트들이 촘촘하게 배치되어 있을수록 더 작게 설정.
  • Backface Threshold : Backface를 제거할 임계값, 값이 작을수록 더 많은 Backface를 제거

 

- [Bake] 버튼을 누르면 Occlusion Culling 이 Bake된다.

- [Visualization] 탭에서 실제로 Culling 되는 모습을 확인할 수 있다.

 

 

'Unity' 카테고리의 다른 글

[Unity] UGUI & 최적화  (0) 2023.04.23
[Unity]Forward, Deferred, Forward+, SSAO  (3) 2022.11.18