툴/유니티

텍스쳐 압축/최적화

스튜디오 오버그래픽스 2023. 1. 24. 20:48

https://youtu.be/BeEjoTa9sSo

 

 

텍스쳐압축
DXT,ETC,PVRTC,ASTC

True Color = 일반적인 이미지 컬러 = 32bpp
RGBA 각각 8비트씩 합쳐서 32비트
bpp(bit per pixel)

PNG 비손실 압축
JPG 손실 압축
그렇다할지라도 단순한 형태, 비슷한 컬러가 많을 경우 PNG가 더 고퀄리티로 저용량일 수도 있음

이미지 포맷은 용량을 줄이기위한 포맷이지
GPU에서 메모리를 줄이기 위한 포맷은 아님
그래서 유니티에서 GPU전용 포맷으로 변환을 함

텍스쳐 압축 특징
-빠른 디코딩(압축된 GPU상에 올라가있는 거기 때문에 디코딩이 빨라야함)
-랜덤 액세스(압축된 상태에서 순차적으로 접근하는게 아닌, 원하는 좌표의 컬러값에 바로 액세스 할수 있어야함)

가변 비율 압축 vs 고정 비율 압축
PNG나 JPG 같은 경우는 가변 비율 압축
텍스쳐 같은 경우는 인코딩 되었어도 원하는 위치에 바로 접근을 할 수 있게 고정된 비율로 압축을 함

DXT(DirectX Texture) - 다이렉트X
4x4 pixel 블럭 기반 압축
4x4 = 16픽셀에서 대표 컬러 2개를 뽑고, 각 픽셀당 대표 2개 컬러의 비율 정보만 가짐으로써 압축하는 방식
대신 컬러 조합이 복잡할 경우 디테일한 색 표현력이 떨어짐

PVRTC(PowerVR Texture Compression) - 주로 애플에서 사용, PowerVR은 과거 애플의 칩
DXT처럼 블럭 기반압축
DXT는 블럭형태로 나눠져서 픽셀이 튀어보이는데 PVRTC는 한번 블러처리를 해줘서 이미지가 매끄럽게 보이게만듬
대신 UI 이미지 처럼 경계선이 뚜렷해야하는 이미지에는 좋지 않음

ETC(Ericsson Texture Compression) - 에릭슨 이라는 회사에서 만들었고 주로 안드로이드에서 사용
사람눈은 채도 변화에 둔감하고 밝기 변화에 민감하다는 특성을 활용
컬러는 저해상도로 저장, 명암은 고해상도로 저장, 그리고 채도와 명암을 합침
ETC1(4bpp)
ETC2(4,8bpp)
Crunched ETC = 디스크에 저장 용량을 줄이기 위한 한번더 압축, 대신 로딩 시간이 더 발생

ASTC(Adaptive scalable texture compression) - 요즘은 모바일에서 ASTC로 통일, 플랫폼 호환성 좋음
블럭 기반 압축, 4x4 부터 12x12 까지 블럭 크기와 알파값 사용 여부를 따로 지정해서 압축 가능
텍스쳐 특징에 따라 선택적으로 고품질 혹은 저품질로 압축 가능

타겟 기기에 따라 호환 되는 포맷이 다르기 때문에 맞춰서 개발

사용할 에셋,파일의 포맷은 최적화와는 무관
ex)JPG,PNG,PSD,TIF,BMP 등
어떤 포맷을 쓰든 결국 유니티에서 한번 더 용도에 맞게 변환하기 때문에 최적화와 큰 상관없음(에디터 용량에는 영향있음)