Version: Unity 6.0 (6000.0)
언어 : 한국어
오클루전 컬링으로 숨겨진 오브젝트 제외
오클루전 컬링을 위한 씬 설정

오클루전 컬링

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

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

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

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

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

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

오클루전 컬링의 작동 방식

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

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

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

오클루전 컬링으로 숨겨진 오브젝트 제외
오클루전 컬링을 위한 씬 설정