Version: 2019.4
사선 절두체 사용하기
오클루전 컬링 시작

오클루전 컬링

오클루전 컬링은 Unity가 다른 게임 오브젝트에 의해 뷰에서 완전히 가려진(오클루전된) 게임 오브젝트에 대한 렌더링 계산을 수행하지 못하도록 하는 프로세스입니다.

프레임마다 카메라는 씬의 렌더러를 검사한 후 그릴 필요가 없는 렌더러를 제외(컬링)합니다. 기본적으로 카메라는 절두체 컬링을 수행하여 카메라의 뷰 절두체에 속하지 않는 모든 렌더러를 제외합니다. 하지만 절두체 컬링은 렌더러가 다른 게임 오브젝트에 의해 가려지는지를 확인하지 않으므로, Unity가 최종 프레임에 표시되지 않는 렌더러에 대한 렌더링 작업에 CPU 및 GPU 시간을 여전히 낭비할 수 있습니다. 오클루전 컬링은 Unity가 이러한 낭비되는 작업을 수행하지 못하도록 방지합니다.

일반 절두체 컬링은 카메라 뷰 내의 모든 렌더러를 렌더링합니다.
일반 절두체 컬링은 카메라 뷰 내의 모든 렌더러를 렌더링합니다.
오클루전 컬링은 더 가까운 렌더러에 의해 완전히 가려진 렌더러를 제거합니다.
오클루전 컬링은 더 가까운 렌더러에 의해 완전히 가려진 렌더러를 제거합니다.

오클루전 컬링을 사용하는 시기

오클루전 컬링이 프로젝트의 런타임 성능을 향상하는지 판단하려면 다음을 고려하십시오.

  • 낭비되는 렌더링 작업을 방지하면 CPU 및 GPU 시간을 모두 절약할 수 있습니다. Unity의 빌트인 오클루전 컬링은 CPU에서 런타임 계산을 수행하므로 절약되는 CPU 시간을 오프셋할 수 있습니다. 따라서 오클루전 컬링을 사용하면 오버드로우로 인해 프로젝트가 GPU 바운드일 때 성능이 향상될 가능성이 매우 높습니다.
  • Unity는 런타임 시점에 오클루전 컬링 데이터를 메모리에 로드합니다. 이 데이터를 로드할 만큼 충분한 메모리가 있는지 확인해야 합니다.
  • 오클루전 컬링은 작고 윤곽이 또렷한 영역이 견고한 게임 오브젝트에 의해 서로 명확하게 분리된 씬에서 가장 잘 작동합니다. 일반적인 예로는 복도로 연결된 방을 들 수 있습니다.
  • 오클루전 컬링을 사용하여 동적 게임 오브젝트를 가릴 수 있지만, 동적 게임 오브젝트는 다른 게임 오브젝트를 가릴 수 없습니다. 프로젝트가 런타임 시점에 씬 지오메트리를 생성하는 경우에는 Unity의 빌트인 오클루전 컬링이 프로젝트에 적합하지 않습니다.

오클루전 컬링의 작동 방식

오클루전 컬링은 Unity 에디터에서 씬에 대한 데이터를 생성한 후 런타임 시점에 해당 데이터를 사용하여 카메라가 볼 수 있는 요소를 결정합니다. 이러한 데이터 생성 프로세스를 베이크라고합니다.

오클루전 컬링 데이터를 베이크하면 Unity는 씬을 셀로 나누고 셀 내 지오메트리와 인접 셀 간의 가시성을 설명하는 데이터를 생성합니다. 그런 다음 Unity는 생성된 데이터의 크기를 줄이기 위해 가능한 경우 셀을 병합합니다. 베이크 프로세스를 설정하려면 오클루전 컬링 창에서 파라미터를 변경하고, 씬에서 오클루전 영역을 사용하십시오.

런타임 시점에 Unity가 베이크된 데이터를 메모리에 로드하고, Occlusion Culling 프로퍼티가 활성화된 각 카메라에 대해 해당 데이터에 대한 쿼리를 수행하여 카메라가 볼 수 있는 요소를 결정합니다. 오클루전 컬링이 활성화되면 카메라는 절두체 컬링과 오클루전 컬링을 둘 다 수행합니다.

추가 리소스

Unity는 Umbra 라이브러리를 사용하여 오클루전 컬링을 수행합니다. Umbra에 대한 자세한 정보를 제공하는 기사 링크는 추가 리소스 페이지를 참조하십시오.

사선 절두체 사용하기
오클루전 컬링 시작