Unity Occlusion Culling 사용해보기 #1 / 약간의 Shader 개념(MVP)

사진출처 - Unity Korea

설명에 앞서 셰이더 개념에 대해 굉장히 설명을 잘해준(? 솔직히 그냥 내가 올리고 싶었기 때문) 사진이 있어서 가져와봤다

오브젝트의 트랜스폼이 움직인다는 것은 Mesh가 움직이는게 아닌 곧 Vertices들의 이동이라는 점!

셰이더를 하게되면 MVP개념에 대해 알아야 하는데 이 사진이 도움이 된다

 

점들의 조합으로 메쉬가 되고 모델들만 있는 공간을 Model(Local/Object) Space라고 부른다

 

화면에 보이는 모든 오브젝트는 카메라를 통해 비춰지게 된다

그 공간을 View(Camera) Space라고 부른다! 꼭 기억해두길 바란다!!!!!

 

그렇게 카메라에 비치는 것들은 이제 모니터상에 보여지게 되는데 

Projection이라는 과정을 거치게 된다!!! 3D공간을 2D화면으로 보여주게 하는! Clip Space

 

그니깐 순서가  Model(Object) -> World -> View -> Clip 

원근법 원리 , 사진출처 - Unity Korea

NEAR CLIP PLANE 공간과 FAR CLIP PLANE 공간안에 있는 영역의 오브젝트는 그려지고 그 밖 오브젝트들은 그려지지 않게 결정해주는데 그 공간을 FRUSTUM 이라고 부른다

카메라 컴포넌트에 [Projection] 부분에 Near 과 Far이 있다

최적화를 위해 Far을 너무 멀리 하지 않고 중간쯤 Fog를 깔아 뒤에 오브젝트들을 안보이게 한다

옛날 스마트폰 같은 경우 성능이 지금 시대의 스마트폰에 비해 떨어지므로

탑다운View 형식을 많이 채택해서 최적화를 했다고 한다

 

이 방식을 채택하면 공간을 하나하나 관리해줘야하므로 비용이 든다고 한다(오늘의 주인공이 아니므로 Pass)

 

오늘의 주인공이다

이 친구는 유니티에서 자체적으로 만든 기술은 아니고 옴브라에서 가져온 기술이라고 한다

[Occuluer] 는 가리는자 -> 주로 정적

[Occludee] 는 가림당하는 자 라고 한다 -> 정적 동적 둘다 가능

 

Frustum 과 Occlusion의 차이를 명확하게 보여주는 사진이여서 가져왔다!!

Occulsion을 잘 세팅해줘야한다(매징넘버?)

예를 들어 너무 촘촘하게 하면 계산 오버플로우가 일어날 수 있고

반대면 컬링 효율이 떨어진다

=> 프로그래머의 감에 맞춰 해야한다..?ㅋㅋ

 

문 같은 데에도 사용할 수 있는데 문을 닫았을 때는 뒤에 오브젝트들이 보이지 않고

문을 열면 뒤에 오브젝트들이 보이는 그런 설정이다!

LOD 기능에서도 컬링 기능이 사용된다고 한다!

정리

일단 글이 길어지므로 다음 게시글에서 이어서!