반응형

 

 

 

 

오클루전 컬링

- 오클루전 컬링은 어떤 게임 오브젝트가 다른 게임오브젝트에 의해 카메라 뷰에서 완전히 가려진 게임 오브젝트에 대한 렌더링 계산을 수행하지 못하도록 하는 프로세스이다.

- 기본적으로 카메라 컴포넌트에 있는 Clipping planes의 값을 설정해 절두체 컬링을 할 수 있지만 절두체 컬링은 렌더러가 다른 게임 오브젝트에 가려져있는지 확인하지 않으므로 유니티에서 최종 프레임에 표시되지 않는 렌더러에 대한 렌더링 작업에 CPU 및 GPU 시간을 낭비할 수 있기때문에 오클루전 컬링으로 이러한 낭비를 방지한다.

 

 

 

오클루전 컬링의 작동 방식

- 유니티에서 씬에 대한 데이터를 생헝한 후 런타임 시점에서 해당 데이터를 사용하여 카메라가 볼 수 있는 요소를 결정한다. (베이크)

- 오클루전 컬링 데이터를 베이크하면 유니티는 씬을 셀로 나누고 셀 내 지오메트리와 인접 셀 간의 가시성을 설명하는 데이터를 생성한 뒤, 생성된 데이터의 크기를 줄이기 위해 가능한 경우 셀을 병합한다.

- 런타임 시점에서 유니티가 베이크된 데이터를 메모리에 로드하고, 오클루전 컬링 프로퍼티가 활성화된 각 카메라에 대해 해당 데이터에 대한 쿼리를 수행하여 카메라가 볼 수 있는 요소를 결정한다.

- 오클루전 컬링이 활성화 되면 카메라는 절두체 컬링과 오클루전 컬리을 둘 다 수행하게 된다.

 

 

 

오클루전 컬링 사용 시기

- 낭비되는 렌더링 작업을 방지하게 되면 CPU 및 GPU 시간 모두 절약할 수 있다.

- 유니티의 빌트인 오클루전 컬링은 CPU에서 런타임 계산을 수행하므로 절약되는 CPU 시간을 오프셋할 수 있다. 따라서 오클루전 컬링을 사용하면 오버드로우로 인해 프로젝트가 GPU 바운드일 떄 성능이 향상될 가능성이 매우 높다.

- 오클루전 컬링 데이터는 런타임 시점에서 메모리에 로드되므로 디바이스에 해당 데이터를 로드할 만큼 충분한 메모리가 있는지 확인해야한다.

- 오클루전 컬링은 작고 윤곽이 또렷한 영역이 견고한 게임 오브젝트에 의해 서로 명확하게 분리된 씬에서 잘 작동한다. (복도로 연결된 방을 예로 들 수 있다.)

- 오클루전 컬링을 사용하여 동적 게임 오브젝트를 가릴 수 있지만, 동적 게임 오브젝트는 다른 게임 오브젝트를 가릴 수 없다. 프로젝트가 런타임에 씬 지오메트리를 생성하는 경우에는 해당 기능이 프로젝트에 적합하지 않다.

 

 

 

오클루더(Occluder), 오클루디(Occludee), 동적 오클루전(Dynamic occlusion)

- 오클루더(Occluder) : 다른 렌더러를 가리는 게임오브젝트 (정적 게임 오브젝트)

- 오클루디(Occludee) : 다른 게임오브젝트에 의해 가려지는 렌더러 (정적 게임 오브젝트)

- 동적 오클루전(Dynamic occlusion) : 동적 게임 오브젝트인 경우 오클루더에 의해 컬링 되려면 렌더러에서 해당 플래그를 활성화 시켜야한다.

※※ 동적 게임 오브젝트의 경우, 오클루전 컬링 데이터에 베이크할 수 없다. 그렇기 때문에 동적 오클루전 플래그를 활성화하여 오클루더가 해당 렌더러를 가릴 때 컬링할 수 있도록 해준다.

※※ 동적 게임 오브젝트는 오클루디일 수는 있지만 오클루더일 수는 없다.

 

 

 

 

추가 문서

 

오클루전 컬링 - Unity 매뉴얼

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

docs.unity3d.com

 

 

[유니티] 오클루전 컬링 - 설정

기본 개념은 다음 글에서 참고 [유니티] 오클루전 컬링 - 기본 개념 오클루전 컬링 - 오클루전 컬링은 어떤 게임 오브젝트가 다른 게임오브젝트에 의해 카메라 뷰에서 완전히 가려진 게임 오브젝

srdeveloper.tistory.com

 

 

 

 

반응형

+ Recent posts