👩🏻‍💻기초지식/DirectX

[DX] 오클루전 컬링과 언리얼 엔진에서의 컬링 설정

공대 컴린이 2023. 8. 22. 13:06
728x90

오클루전 컬링 (Occulusion)

오클루전 컬링은 다른 오브젝트에 의해 숨겨진 오브젝트를 걸러내는 컬링 기법입니다.

카메라 앞에 위치하여 다른 오브젝트를 가리는 오브젝트를 오클루더(Occluder)라고 하고, 오클루더에 의해 가려지는 오브젝트들을 오클루디(Occludee)라고 합니다. (오클루더는 스태틱 오브젝트)

 

오클루전 컬링 시 주의할 점으론, 야외 씬 같이 다른 오브젝트에 가려지는 경우가 많지 않은 경우에는, 오브젝트를 가리며 얻는 이득보다, 오클루전 컬링 연산 비용이 더 클 수 있다는 점 입니다.

 

(언리얼의 프로젝트 셋팅에서 렌더링에 들어가면 오클루전 컬링을 켜고 끌 수 있는 설정값이 있다.)

 

언리얼에서의 렌더링 컬링

언리얼에는 Distance, View Frustum, Precomputed Visibility, Dynamic Occulusion까지 크게 4가지 컬링 기법이 있다. 

 

거리 기반

액터의 위치와 카메라의 거리를 기준으로 컬링을 적용합니다.

레벨에 배치된 각각의 액터는 Draw Distance 값을 가지고 있는데, Detail 탭의 Rendering-LOD 패널에서 최소 거리와 최대 거리를 설정하여 조정할 수 있습니다.

 

Current Max Draw Distance 값은 Cull Distance Volume이 있는 경우, 해당 값을 조회하여 세팅합니다.

Cull Distance Volume은 해당 액터가 특정 값보다 작은 Volume을 가지고 있을 때 거리에 따라 렌더링을 할지 안할지 저장하는 배열이라고 볼 수 있습니다.

 

절두체 방식

레벨 뷰포트에서 Camera Frustum을 활성화시켜 사용할 수 있습니다.

 

Precomputed Visibility

Precomputed Visibility Volume은 움직이지 않는 액터들을 대상으로, Shadow Casting Surface 위에 Visibility 상태 관련 정보를 저장해 놓습니다. 이 컬링 방식은 라이팅 빌드 도중에, visibility 정보를 오프라인에서 생성하고, 크지 않은 레벨과 저사양/모바일 기기에 적합한 컬링 방법이라고 볼 수 있습니다.

 

Dynamic Occlusion

언리얼4에는 다이나믹 오클루전 시스템을 선택할 수 있는 여러 방식을 제공하는데, 각 방식은 카메라의 절두체 영역에 특정 액터가 다른 액터에 의해 가려지는지의 여부를 측정하며, 해당 정보를 GPU나 CPU에게 쿼리로 날리게 됩니다.

그 후, 효과적인 컬링과 성능을 위해 visibility 한 것들을 체크하고 불 필요한 것들을 보여주지 않게 됩니다. 

 

언리얼 엔진은 오클루전 쿼리를 만들 때 Scene Depth Buffer를 사용하는데, 이 버퍼는 Maximum Draw Distance 대신 카메라로부터의 추정 거리에 의존하므로, 더 먼 거리까지 물체를 보여줄 수 있습니다.


https://tsyang.tistory.com/84

 

컬링(Culling)

컬링 드로우콜을 줄이기 위해서는 애초에 적은 수의 오브젝트를 렌더링 하면 된다. 이 때 눈에 보이지 않는 오브젝트를 제외함으로써 렌더링할 오브젝트의 수를 줄일 수 있는데, 이처럼 렌더링

tsyang.tistory.com

https://koreanfoodie.me/1185

 

언리얼 렌더링 최적화 : Visibility 와 오클루전 컬링(Occlusion Culling)

언리얼 렌더링 최적화 : Visibility 와 오클루전 컬링(Occlusion Culling) 핵심 : 1. 렌더링에는 컬링(Culling) 이라는 개념이 있다. 이 개념은, 카메라의 시점에서 보이지 않는 녀석들을 굳이 렌더링 할 필요

koreanfoodie.me

 

728x90