240306-TIL

2024. 3. 6. 21:46내일배움캠프

3월 6일 

 

오늘은 유니티 최적화 기법중 하나인 오클루전 컬링에 대해 알아보도록 하자

 

오클루전 컬링

더보기

오클루전 컬링은 어떤 게임 오브젝트가 다른 게임 오브젝트에 의해 카메라 뷰에서 완전히 가려진

 

게임 오브젝트에 대한 렌더링 계산을 수행하지 못하도록 하는 프로세스이다.

 

유니티 Documentation에선

 

이렇게 설명하고 있다.

 

그림으로 한번 봐볼까?

 

 

 

이런 느낌이라고 생각하면 된다.

 

어떻게 할까?

 

오쿨루전 컬링을 활용하려면 몇 가지 수동 설정이 필요하다

 

 

일단 카메라 설정에서

 

 

Occlusion Culling 플래그를 활성화 시켜준다. 아마 기본적으로 세팅이 되어있을 것이다.

 

 그다음엔 오브젝트에서 Occluder static과  Occludee Static을 선택한다.

 

 

 

정적 게임오브젝트 즉 움직이지 않는 오브젝트를 베이크 할 것이기 때문에 렌더러에서 Dynamic occlusion 플래그를

 

활성화 시켜줄 필요는 없다.

 

 

하지만 기본적으로 생성하면 자동적으로 체크가 되어있으니 굳이 체크를 풀 필요는 없다

 

 

 

그다음은 window - rendering - Occlusion Culling을 클릭하면

 

Occlusion 창이 열리게 된다 Bake 탭에 들어가면 3가지 종류의 옵션을 설정할 수 있는데

 

  • Smallest Occluder
    • 다른 게임 오브젝트를 가릴 수 있는 가장 작은 게임 오브젝트 단위이다
    • 가장 작은 파일 크기와 가장 빠른 베이크 시간을 위해 최상의 결과를 제공하느 가장 높은 값을 선택해야함
  • Smallest Hole
    • 카메라가 들여다 볼 수 있는 가장 작은 간격의 직경
  • Backface Threshold
    • 베이크 된 크기를 줄여야 하는 경우 유니티는 베이크할 때 씬을 샘플링하고 표시되는 오클루더 지오메트리가 특정 비율의 후면 이상으로 구성된 씬의 일부를 제외할 수 있다.
    • 기본값 100은 데이터에서 영역을 제거하지 않는다. 값을 낮추면 파일 크기가 작아지지만 시각적 결함이 생길 수 있다.

주의할 점은 Smallest Occluder의 값은 작을수록 컬링 정밀도가 올라가지만

 

정밀도가 올라갈수록 데이터 크기가 늘어나고 연산 오버헤드가 발생하므로

 

적절한 수치를 적용하는게 가장 좋다! (경험적인 수치 즉 매직넘버)

 

적절한 값을 입력해주고 Bake를 눌러준다 

 

visualize를 체크하면 컬링 화면을 확인할 수 있다

 

카메라 영역에 큐브가 들어오면 둘다 렌더링하다가

 

 

한 큐브가 카메라 영역 밖으로 나가버렸다 그렇다면 더 이상 범위 밖으로 나간 큐브를 렌더링 하지 않는다

 

반대도 마찬가지!!

 

 

-용어정리-

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

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

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

 

오늘은 오클루전 컬링에 대해 알아보았다.

 

최적화는 알면 알수록 어렵고 또 여러 기법이 있고

 

최근에 3D프로젝트를 진행하면서 확실히 2D보다 프레임이 많이 떨어진다고 느꼈는데 이런 최적화를 개무시하고 만들어서 그런가 보다

 

3월 6일 TIL은 여기서 마치도록 하겠다.

'내일배움캠프' 카테고리의 다른 글

240308-TIL  (0) 2024.03.08
240307-TIL  (0) 2024.03.07
240305-TIL  (1) 2024.03.05
240304-TIL  (0) 2024.03.04
240229-TIL  (0) 2024.02.29