본문 바로가기

Game Programming/Unity

[Unity3D] 효율적인 메모리 관리 - Occulusion Culling

이론

  • 이게 뭔데? : 한 물체가 다른 물체 가림 -> 제거
    • 왜 해야 돼? : 렌더링 부하를 줄여 속도 높임 (눈에 보이지 않는 물체는 렌더링에서 제외)
    • 단점은? : 하지만 컬링을 하기 위한 CPU 부하는 증가
  • 컬링 기법 (오브젝트 제거 기법)
    • 프러스텀 컬링
      • 카메라에 범위에 비친 것들만 보임
    • 카메라와의 거리에 의한 컬링
      • LOD
    • Occulsion Culling
      • 머에 가려져서 안 보이면 컬링
  • Smallest Occluder : 작을 수록 정밀하게 다른 물체 가릴 수 있음
  • Occluder static : 다른 물체 가릴 수 있는 오브젝트
    • Occluder : 다른 물체를 가림
    • Occludee : 가려짐을 당함
    • 둘다 설정 가능
  • * 투명 쉐이더 계열은 Occluder 가 될 수 없음.
  • 사용하기 좋은 이용 사례
    • Good : FPS
    • Bad: TopDown
  • 중요한 점
    • Smallest Occluder 적정값 찾아야 함
    • Occluder, Occludee 속성 정확히 설정
    • Occlusion Culling 필요 없을 때 잠깐 끄기 - Main Camera 속성으로 있음

유니티 적용 예

< 오브젝트 설정 >

- 벽은 다른 물체를 가림

 

- 바닥은 이것저것 모두 가능

- 깡통(?)은 가려짐을 당함

 

< Occulusion 설정 >

(window 에서 꺼내볼 수 있음)

  • 우측 하단 Bake 클릭 -> 적용

< 결과 >

  • ViIsibillity Lines 켜면 볼 수 있음
  • 뒤에 드럼통 사라짐