컬 디스턴스 볼륨(Cull Distance Volumes) 은 볼륨 내에서 액터를 그릴 (또는 표시할) 거리를 정의하는 유용한 최적화 툴입니다. 이러한 볼륨은 컬 디스턴스 쌍(Cull Distance Pairs) 이라는 수많은 크기 및 거리 조합을 저장합니다. 이는 가장 긴 액터의 바운드에 매핑된 후 레벨의 해당 액터 인스턴스에 할당됩니다. 컬 디스턴스 볼륨은 내부가 디테일하게 표현된 대규모 야외 레벨을 최적화하는 데 가장 유용합니다. 중요하지 않은 것으로 간주될 만큼 내부가 작은 경우 내부가 컬링될 수 있습니다.
구성 및 사용
컬 디스턴스 볼륨은 에디터의 액터 배치(Place Actors) 패널을 통해 레벨에 추가하고, 레벨에 맞게 스케일 조절할 수 있습니다.

볼륨을 선택했다면 디테일(Details) 패널을 사용하여 컬 디스턴스(Cull Distance) 쌍 배열에 액세스합니다. 컬 디스턴스 쌍마다 크기(Size) 및 컬 디스턴스(Cull Distance) 값이 포함됩니다. 더하기 ( + ) 기호를 클릭하여 배열 엘리먼트 목록 하단에 새 컬 디스턴스 쌍을 추가합니다.

디폴트로 추가되는 컬 디스턴스 쌍은 2개로, 하나는 첫 번째로 입력하여 편집하는 용도이지만 크기나 거리는 아직 설정되지 않은 쌍이며, 다른 하나는 오브젝트의 거리를 0으로 하여 10000유닛보다 큰 오브젝트가 컬링되지 않도록 방지하는 쌍입니다. 값이 큰 컬 디스턴스 쌍을 설정하여 커다란 건물이나 산과 같은 멀리 있는 오브젝트가 컬링되지 않도록 할 수 있습니다.
컬 디스턴스 쌍 삽입, 삭제, 복제
각 배열 엘리먼트 옆의 드롭다운을 사용하여 컬 디스턴스 쌍 엘리먼트를 삽입하거나, 삭제하거나, 복제할 수 있습니다.

- 삽입(Insert) 은 선택된 엘리먼트 위에 새로운 컬 디스턴스 쌍을 추가합니다.
- 삭제(Delete) 는 목록에서 기존의 컬 디스턴스 쌍 엘리먼트를 제거합니다.
- 복제(Duplicate) 는 선택된 컬 디스턴스 쌍을 아래의 새로운 배열 엘리먼트에 복사합니다.
컬 디스턴스 배열 엘리먼트의 수는 원하는 만큼 많거나 적게 보유할 수 있으며, 꼭 순차적으로 정렬되어 있어야만 올바르게 작동하는 것은 아닙니다.
예시 씬 및 구성
Infinity Blades Grasslands 프로젝트를 사용하는 이 예시에서는 여러 컬 디스턴스 쌍이 카메라의 위치에서 다양한 크기의 오브젝트를 컬링하도록 구성되었습니다.
여기에 사용된 값들은 레벨의 액터에서 컬 디스턴스 쌍이 어떻게 작동하는지 빠르게 확인하기 위한 극단적인 예시입니다. 쌍 값을 추가하고 테스트를 거치면 예시에 보이는 '튀는 현상(popping)'이 개선될 것입니다.
다음 값들은 여러 컬 디스턴스 및 크기를 시연하기 위해 사용되었습니다.

- 크기가 200 유닛에 가장 가까운 볼륨 내 오브젝트는 카메라에서 1000 유닛 이상 떨어지면 뷰에서 컬링됩니다.
- 크기가 500 유닛에 가장 가까운 볼륨 내 오브젝트는 카메라에서 2000 유닛 이상 떨어지면 뷰에서 컬링됩니다.
- 크기가 1000 유닛에 가장 가까운 볼륨 내 오브젝트는 컬링되지 않습니다. 이렇게 매우 커다란 오브젝트는 무한으로 간주되므로 카메라가 해당 오브젝트를 컬링할 만큼 멀어지지 않게 됩니다.
컬 디스턴스 쌍을 구성할 때는 다음 사항을 염두에 두시기 바랍니다.
- 컬 디스턴스 쌍 배열은 선형 보간되지 않습니다.
- 이는 더미 쌍을 사용할 필요가 없다는 뜻으로, 컬 디스턴스 쌍이 겹치는 경우 엔진이 가장 공격적인 세팅(또는 0보다 크면서 가장 낮은 값의 세팅)을 선택하여 액터에 할당하게 됩니다.
- 필요한 만큼 많은 컬 디스턴스 쌍을 보유할 수 있습니다.
- 정리 목적으로는 순차적으로 쌍을 정렬하는 것이 가장 좋지만(예: 내림차순) 반드시 그래야 하는 것은 아닙니다.
- 새 쌍을 추가할 때는 언제나 추후 삽입 드롭다운을 사용하여 쌍을 추가할 수 있다는 점에 유의하세요.
- 컬 디스턴스 쌍은 크기에 가장 가까운 바운드 지름이 있는 액터에 할당됩니다. 액터의 현재 최대 드로 디스턴스(Current Max Draw Distance) 를 사용하여 컬 디스턴스 쌍 값을 기반으로 할당되어 있는 캐시된 드로 디스턴스 그룹을 확인할 수 있습니다.
시작에 도움이 되도록 몇 가지의 쌍 값을 추천해 드리겠습니다.

모범 사례
다음 제안사항은 효율적인 결과를 얻는 데 도움이 될 수 있습니다.
- 하나의 컬 디스턴스 볼륨을 사용하여 레벨 전체를 아우릅니다.
- 레벨 대부분을 나타내는 다양한 컬 디스턴스 쌍을 포함합니다.
- 볼륨 내 영역의 경우 별도의 컬 디스턴스 볼륨을 추가하여 컬링을 더욱 공격적으로 조절할 수 있습니다.
- 컬 디스턴스 쌍을 구성할 때는 사용하고자 하는 상한 및 하한을 파악할 수 있도록 크기와 거리 값이 큰 것부터 시작합니다.
- '게임' 뷰의 레벨 뷰포트를 사용하면 레벨에서 이동하며 오브젝트의 '튀는 현상'이 보이는지 확인할 수 있습니다.
- 기존 쌍에 수정을 가하고, 새 컬 디스턴스 쌍을 추가할 수도 있습니다. 문제가 되는 액터를 선택하고 캐시된 컬 디스턴스(Cached Cull Distance) 를 사용하여 일부 액터가 속한 컬 디스턴스 쌍 그룹을 파악합니다.
-
컬 디스턴스 쌍 그룹은 개별 액터의 최대 드로 디스턴스(Max Draw Distance) 보다 낮을 때만 사용된다는 점에 유의하세요.
- 컬 디스턴스 볼륨에 의해 컬링되면 안 되는 액터가 있을 경우, 액터 디테일 패널에서 컬 디스턴스 볼륨 허용(Allow Cull Distance Volume) 을 비활성화합니다.
- 이 옵션을 비활성화해야 하는 액터가 많은 경우, 마지막 컬 디스턴스 쌍을 '컬 디스턴스가 되기에는 너무 큰' 값으로 만드는 방법을 고려해 보세요. 크기 값을 높이고 컬 디스턴스 를 0 으로 만들면 됩니다. 이 방법을 사용하면 산이나 건물 등의 매우 큰 오브젝트가 컬링되는 것을 방지할 수 있습니다.