반응형
🤔 오클루전 컬링이란?
오클루전 컬링(Occlusion Culling) 은 카메라에 보이지 않는 오브젝트의 렌더링을 자동으로 비활성화하는 기술!
즉 다른 오브젝트에 가려져 화면에 나타나지 않는 객체는 렌더링하지 않아, GPU와 CPU의 부담을 줄이고 게임의 프레임을 향상 시킬 수 있는 기술이다
오버드로우(Overdraw)
: 카메라에서 먼 오브젝트가 먼저 그려지고, 그 위에 가까운 오브젝트가 덮이는 현상
=> 이로 인해 보이지 않는 객체는 렌더링하지 않기 때문에 프레임을 해결할 수 있습니다.
1. 오클루전 컬링을 사용하는 이유
- 성능 향상:
많은 오브젝트를 렌더링할 때, 카메라에 보이지 않는 객체를 렌더링하지 않음으로써 GPU와 CPU 부하를 크게 줄일 수 있다. - 복잡한 씬에서 유리:
복잡한 환경이나 많은 오브젝트가 있는 씬에서 오클루전 컬링은 필수적인 최적화 기법!
Tip: 복잡한 씬에서는 오클루전 컬링과 함께 LOD(Level of Detail)나 배치 최적화 등 다른 최적화 기법도 함께 사용하는 것이 좋다.
2. 오클루전 사용 방법
(1) 오클루전 컬링 창 열기 : 상단 메뉴에서 Window → Rendering → Occlusion Culling을 선택
(2) Bake 카테고리 설정 : 오클루전 컬링 창에서 Bake 카테고리를 클릭하여 각 옵션을 설정.
여기서 오클루전 영역과 관련된 설정을 조정할 수 있다.
🔹 Smallest Occluder
- 정의: 카메라의 시야를 차단할 수 있는 최소 크기를 정의
이 값보다 작은 오브젝트는 오클루더로 간주하지 않는다. - 설정 팁:
- 값을 작게: 더 많은 오브젝트를 오클루더 처리할 수 있으나, 계산 대상이 많아져 성능에 부담을 줄 수 있음.
- 값을 크게: 큰 오브젝트만 오클루더로 간주해 계산량은 줄지만, 최적화 효과가 낮을 수 있음.
- 사용 사례:
큰 건물이나 나무 같은 대형 오브젝트가 많은 경우, 값을 크게 설정하여 작은 오브젝트는 오클루전 처리에서 제외
🔹 Smallest Hole
- 정의: 오클루더 사이의 최소 구멍 크기를 설정
이 값보다 작은 구멍은 무시되며, 해당 구멍을 통해 보이는 오브젝트는 컬링되지 않는다. - 설정 팁:
- 값을 작게: 작은 구멍도 인식해 정밀한 렌더링이 가능하지만, 연산 부하가 증가할 수 있음.
- 값을 크게: 작은 구멍은 무시되어 성능은 향상되지만, 구멍을 통해 보이는 작은 오브젝트가 렌더링되지 않을 수 있음.
- 사용 사례:
복잡한 환경에서는 정밀한 렌더링이 필요하다면 값을 낮추고, 단순한 환경에서는 성능 최적화를 위해 값을 높이는 것이 좋다.!!!!
🔹 Backface Threshold
- 정의: 카메라에 보이지 않는 오브젝트의 뒷면이 오클루전 계산에 기여하는 정도를 설정
- 설정 팁:
- 값을 작게: 카메라에 보이는 면 위주로 오클루전 처리.
- 값을 크게: 뒷면까지 계산에 포함해, 카메라에 보이지 않는 부분까지도 오클루션에 기여하게 됨.
- 사용 사례:
벽이나 건물이 시야를 완전히 차단하는 경우, 높은 값을 설정하면 효율적으로 많은 오브젝트를 렌더링에서 제외할 수 있다.
(3). 데이터 베이크 : 설정이 완료되면 Bake 버튼을 눌러 오클루전 데이터를 베이크 이 과정에서 Unity는 씬의 오클루전 정보를 계산하여 저장한다

- 정확한 설정 : 오클루전 영역과 관련된 설정을 정확하게 해야 한다. 잘못된 설정은 성능 저하를 초래할 수 있기 때문!
- 테스트 필수 : 오클루전 컬링을 적용한 후에는 반드시 테스트를 통해 결과를 확인해야 한다. 설정에 따라 예상치 못한 문제가 발생하는 경우도 있어서 ㅎㅎ
- 최적화 필요 : 오클루전 컬링을 사용하더라도 다른 최적화 기법과 함께 사용하는 것을 추천! 예를 들어, LOD(Level of Detail)나 배치 최적화와 함께 사용하면 더욱 효과적
** 추가적으로
오클루전 컬링과 절두체 컬링은 다릅니다!!
⚠️ 오클루전 컬링 vs. 절두체 컬링
- 오클루전 컬링:
카메라에 보이지 않는, 다른 오브젝트에 가려진 객체의 렌더링을 비활성화 - 절두체 컬링 (Frustum Culling):
카메라의 시야 영역(절두체) 밖에 있는 오브젝트의 렌더러를 비활성화
하지만 오버드로우로 인해 보이지 않는 객체는 여전히 렌더링이 된다
반응형
'Unity 개발 > 기술 향상' 카테고리의 다른 글
[Unity] Google TTS (Text-To-Speechs) 적용 해보기 (1) | 2024.08.11 |
---|---|
[Unity] 텍스처 압축 (9) | 2024.07.23 |
[Unity] 게임수학 - 삼각함수을 이용한 터치한 방향으로 공 팅기기 (0) | 2022.12.14 |
[Unity] 게임수학 - 삼각함수을 이용한 터치한 방향 바라보기 (0) | 2022.12.14 |
[Unity Error] Unable to access Unity services (0) | 2022.11.10 |