Featured image of post 모바일용 Font shader : TkMobile_Font_Headuptext

모바일용 Font shader : TkMobile_Font_Headuptext

일반적으로 그래픽 파일은 RGBA 로 이루어져 있습니다.
DXT처럼 압축하지 않는 픽셀 포맷이라면 보통 채널당 8비트씩, 알파 채널이 포함된 이미지라면 32비트로 이루어져 있지요.

보통 일반적인 게임용 텍스쳐는 일단 DXT를 이용해서 낮은 비트수로 압축하기 때문에 32비트 이미지를 보기 어렵지만,
특별히 UI에 한해서는 32비트가 FULL로 사용되는 경우가 자주 있곤 합니다. 압축하면 확실히 이미지가 깨져 버리기 때문이지요.

하지만 이것이 역시 문제를 유발시키는 것이… 폰트 사이즈가 1024*1024 24bit 이미지로 압축하지 않은 이미지로 넣으면 4MB 이미지가 되는데, 이게 런타임으로 올라가면 5MB 정도 차지한다는 것입니다. 전체 쓸 수 있는 메모리 중에 그래픽에서 쓸 수 있는 메모리가 기껏해야 30메가 내외인 상태에서 , 폰트만 5MB 정도 차지하는건 꽤 큰 용량이 아닐수 없습니다.

그래서 모바일용으로 개선책을 찾다가… 그전에는 몰랐던 싱기한 픽셀 포맷이 존재한다는 것을 알아냈습니다. 아이 싱기해.
게다가 이게 PC용으로도 있어??? 뭐지 이거???

Alpha 8 bitHigh quality alpha channel but without any color. 64 KB for a 256x256 texture

바로 이거. 데스크탑용으로도 있고, 모바일용으로도 있군요.
알파만 존재하는 파일 포맷입니다. 그동안 파일을 포토샵에서만 만들어 와서, 이런게 만들어지리라고는 상상하지 못했는데
유니티에서는 일단 원본 그래픽 파일을 엔진에 넣고 엔진에서 텍스쳐 포맷을 변형시키기 때문에 이런 싱기한 짓도 가능한 것입니다.
걱정되는 건 이게 GUI속성태그가 붙은 텍스쳐 타입이 아니라는 건데… 뭐 문제생기면 모바일팀에서 알아서 해주시겠 … (후다닥ㅋㅋㅋ)

어쨌건 사용이 가능해진다면, 8bit (256칼라) 이미지의 용량으로 최고의 퀄리티의 폰트를 만들어 낼 수 있겠지요.
그래서 뭐 간단히 쉐이더를 제작했습니다. 폰트명은 TkMobile_Font_Headuptext.
다행히 모바일에서는 폰트에 외각선 같은걸 그리지 않게 되어 있더군요. 폰트 칼라를 위해서 버텍스 칼라만 지원하면 되고,
PowerVR 그래픽 카드에서는 알파 블렌딩이 더 빠르니 간단하게 알파 블렌딩이 되는 쉐이더만 제작하면 되는 것이었습니다.

그래서 뭐 완성. 잘 나오네요. 메모리도 약 3M 정도 줄일 수 있었습니다.

Hugo로 만듦
JimmyStack 테마 사용 중