본문 바로가기
자료는 자료지/회사 내부용 자료

째째하게 모바일 데이터를 줄여봅시다. / 모바일 작업 지침

by 대마왕J 2012. 2. 21.

모바일은... 답이 없습니다.
PC에서 쓰던 것 처럼 작업해서는 안됩니다.
Vertex가 조금이라도 많아지면 퍼포먼스에 지대한 영향을 끼치고 맙니다 ... !!!

때문에 모바일 작업 지침을 올려 드립니다.
이것은 중요한 지침입니다. 이 작업 프로세스는 꼭 지켜 주시길 바랍니다.

1. Texture 압축은 PVRTC 2bit 이미지를 기본으로 사용합니다.
가장 작은 압축 포멧입니다. 물론 그림이 많이 깨지긴 하지만, 넓은 면이나 부드러운 이미지 표현이 아니라면 사용하기 충분합니다.

단, 예외도 있습니다.

-넓은 면이나 부드러운 이미지는 PVRTC 4bit를 사용합니다. Terrain 같은 경우가 그런 예라고 할 수 있겠습니다. 
사실상 거의 유일한 예입니다.  
-UI 는 16bit 를 사용합니다.

2. 날카로운 엣지는 사용 금지입니다.

여기에 대해서는 설명이 좀 필요합니다.
사실 현재 그래픽 팀에서는 Vertex를 Count 하지 않고, Tri만 카운트 하고 있습니다.
그 이유는, Vertex Count가 '부정확하기' 때문입니다.

Vertex는 다음과 같은 데이터를 각각 하나씩 가지고 있습니다.
- 위치값
- Normal 값
- UV 좌표
- Vertex Color
- 기타 Index 정보등의 잡 데이터.

이런 상황에서, 만약 한 점에 Normal 값이 2개 이상 필요한 상황이 나타난다면, 게임에서는 이 Vertex를 Split (나눔 : 여기서는 복사와 같은 의미) 해버리게 됩니다.



이런 박스라면, Vertex 는 8개가 되어야 정상일 것입니다.

하지만 실제는 어떨까요?


실제로는, 이렇게 각 Vertex 마다 Normal이 3개씩 존재하고 있기 때문에 , Vertex는 3배로 늘어납니다.
8*3 = 24 (물론, 이렇게 순진하게 3배로 딱 맞게 늘어나지는 않습니다. 다 뭔가 최적화 하고 뭔가뭔가 하지요)

그러므로, Smooth 기능을 이용해서 이런 각진 부분을 다 풀어 주어야만 합니다.


이렇게 하면 Normal이 하나로 변하면서, Vertex의 증가가 없어지게 됩니다.

물론 라이팅이 좀 이상하게 대충 나와 버린다는 단점이 있긴 하지만, 어차피 모바일에서 라이팅의 방향을 선명하게 받는건 큰 의미가 없고, 텍스쳐를 입히면 크게 이상해 보이지 않기 때문에 이대로 사용해도 되겠습니다.

물론 급격히 각도가 변하면서, 하드 엣지가 나오지 않으면 모양이 영 이상하게 나온다고 판단된다면 써야겠지요. 거의 없겠지만요. 그런 경우를 제외하고는 사용 금지입니다.




3. UV는 가급적 단순하게 폅니다.

UV를 복잡하게 펴는 것도 Vertex 증가의 원인이 될 수 있습니다.
위 박스를 예로 봤을 때,



요렇게 두 가지 방법으로 펴는 방법이 있겠습니다.

아래 방법은 꽤 이상적인 방법이라고 할 수 있겠습니다만,
위의 방법은 역시 2번의 이유와 같이 UV가 2개가 발생되어서 Vertex가 증가되는 요인이 됩니다

 

그러므로, 가급적이면 UV를 최대한 붙여서 , 이음매가 없이 만들어 주시는게 효율적이됩니다.

모바일 기기가 기기인만큼, 이렇게 리소스가 매우 섬세하네요.

그럼 이렇게 만든 결과물을 한번 비교해 보겠습니다.


맨 왼쪽이 기존의 평범한 방식대로 만든, UV도 넓게 펴고 각진 면을 만든 박스입니다.
가운데는 Smooth로 각진 면을 모두 합쳐준 박스입니다
맨 오른쪽은  Smooth와 함께 UV도 합쳐줘서 만든 박스입니다.


각진 박스는 24개의 Vertex가 나왔습니다.

Smooth 처리를 하니 4개의 Vertex가 줄었습니다. 이론만큼 많이 줄지는 않는군요.

UV까지 최적화 시켜주니 16개 Vertex로 줄었습니다.

24-16 = 8
약 30% 의 Vertex용량이 줄었습니다.

위 수치가 드라마틱하게 변하지 않은 이유는, Vertex를 게임 엔진에서 사용할때 그렇게 순수하게 사용하지 않기 때문입니다. 그래도 어쨌든 상당한 크기가 줄어든다는 것을 알 수 있으실 겁니다.
(이 수치는 에디터에서 FBX를 직접 선택함으로써 여러분도 확인할 수 있습니다)

이미지가 검뎅으로 보이지않느냐는 홍장군님의 말씀도 있었는데,

실제로 라이트를 주고, 엠비언트 칼라를 까맣게만 하지 않으면 대충 이 정도 느낌이 나게 됩니다.

나름 폴리곤이 작은것을 애매하게 숨겨주는 긍정적인 역할도 합니다 :)

반응형

댓글