Frustum Culling
Frustum Culling 유니티에서 기본적으로 제공하는 Culling 기법으로 카메라에서 비추고 있는 영역을 Frustum Area 로 정의합니다. Clipping Plane을 줄여 에서 Frustum Area를 벗어난 오브젝트는 렌더링 대상에서 제외시킵니다.
- 카메라 오브젝트의 카메라 컴포넌트 Clipping Plane으로 설정 가능
- 단위는 미터(모든 유니티에서)
- Near Clipping Plane 과 Far Clipping Plane 을 설정하여 가시거리 설정 가능
- 유니티 안에서 기본적으로 수행
Near : 화면이 시작하는 지점
Far : 화면이 끝나는 지점
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 → Rendering → Occlusion 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 |