C#/Unity3D

[Unity3D] Occlusion Culling (오클루전 컬링)

cmlee 2022. 6. 28. 23:35
1. 오클루전 컬링이란?

 

오클루전 컬링이란 다른 오브젝트에 의해 가려져서 카메라에 보이지 않을 때 (Occlusion)

해당 오브젝트의 렌더링을 비활성화 하는 기능이다.

 

기본적으로 카메라는 절두체(프러스텀) 컬링을 수행하여 카메라의 뷰 절두체에 속하지 않는 모든 렌더러를 제외한다.

하지만 절두체 컬링은 렌더러가 다른 게임 오브젝트에 의해 가려지는지를 확인하지 않으므로,

Unity가 최종 프레임에 표시되지 않는 렌더러에 대한 렌더링 작업에 CPU 및 GPU 시간을 여전히 낭비할 수 있다.

오클루전 컬링은 Unity가 이러한 낭비되는 작업을 수행하지 못하도록 방지한다.

 

  • 오클루더 : 다른 오브젝트를 가리는 역할. 사전 연산을 걸쳐서 데이터를 미리 Bake 해놓는다. 따라서 Static 오브젝트이다.
  • 오클루디 : 오클루더에 의해 가려지는 오브젝트.

 

2. 오클루전 컬링을 사용해야 할 때

 

  • 오클루전 컬링은 작고 윤곽이 또렷한 영역이 견고한 게임 오브젝트에 의해                                                                  서로 명확하게 분리된 씬에서 가장 잘 작동한다. (EX. 복도로 연결된 방)
  • 오클루전 컬링을 사용하여 동적 게임 오브젝트를 가릴 수 있지만, 동적 게임 오브젝트는 다른 게임 오브젝트를 가릴 수 없다. 프로젝트가 런타임 시점에 씬 지오메트리를 생성하는 경우에는 Unity의 빌트인 오클루전 컬링이 프로젝트에 적합하지 않다. (런타임 시 생성되는 장애물은 오클루전 적용이 불가능)
  • 야외 씬 같이 오브젝트끼리 가려지는 경우가 많지 않은 경우에는 오브젝트를 가림으로써 얻는 이득보다 오클루전 컬링 연산에 드는 비용이 더 클 수 있다.

 

한 마디로, 오클루전 컬링은 좁은 맵에서 움직이지 않는 견고한 장애물이 많을 때 효과적이다.

 

 

https://tsyang.tistory.com/84
https://docs.unity3d.com/kr/current/Manual/OcclusionCulling.html