프로젝트 창에서 텍스처를 클릭하면 인스펙터에서 Texture Import Settings를 확인할 수 있다.

이때 인스펙터 하단을 보면 각 플랫폼 별 텍스처 압축 관련 설정이 가능하다.

기본적으로는 현재 빌드 플랫폼에 따라 적합한 텍스처 포맷으로 자동 변환하지만 각 플랫폼별 오버라이드 옵션을 체크하여 직접 포맷을 지정할 수 있다. 물론 RGBA 32bit, RGB 24bit와 같이 별다른 압축 포맷으로 변환하지 않는 무압축 옵션을 지정할 수도 있다. 지정한 포맷을 지원하지 않는 기기에서 앱을 설치하는 경우 무압축 포맷으로 읽어들인다. 

 

플랫폼별 디폴트 포맷

https://docs.unity3d.com/kr/2018.4/Manual/class-TextureImporterOverride.html

 

그럼 모바일 게임에서 사용되는 대표적인 텍스처 압축 포맷(Texture Compression Format, TCF)의 특징들을 간단히 알아보자

 

PVRTC

유니티의 iOS 기본 압축 형식이자 모든 iOS 기기에서 사용할 수 있는 효율성 높은 압축 포맷이다.

PowerVR 칩셋을 사용하는 텍스처 압축 포맷으로 4bpp, 2bpp 두가지의 정밀도 타입이 나뉜다.

PVRTC1과 상위 호환인 PVRTC2 버전이 있으나 아이폰/아이패드가 PVRTC2를 지원하지 않기 때문에 유니티는 PVRTC1만 지원한다.

텍스처의 해상도가 2의 지수승 정사각형이어야 한다는 제약이 있다. 

 

ETC

유니티에서 안드로이드를 타겟으로 하는 경우 사용되는 텍스처 압축 포맷이다.

ETC의 경우 ETC1과 ETC2로 나뉘는데 ETC2는 ETC1을 확장 및 개선한 포맷이다.

즉 ETC1보다 ETC2를 사용하는 것이 성능상 더 좋지만 Open GL ES 3.0 이상에서만 지원 가능하다.

https://ozlael.tistory.com/42

 

ASTC (Adaptive Scalable Texture Compression)

PVRTC나 ETC와 마찬가지로 손실 블록 기반 텍스처 압축 알고리즘이다.

ASTC는 ETC, PVRTC에 비해 많은 장점이 있기 때문에 ASTC 포맷을 사용할 수 있는 상황이라면 다른 포맷보다 ASTC를 사용할 것을 권한다고 한다. 

우선 ASTC는 안드로이드와 iOS 모두 지원하기 때문에 유지보수가 편하다.

또한 ASTC는 가변 블록 크기를 사용한다. 유니티에서 ASTC 4x4 ~ 12x12까지의 블록 크기를 선택할 수 있는데 이러한 특징 덕분에 텍스처의 중요도, 복잡도에 따라 유연하게 조절할 수 있으면서 ETC에 비해 더 복잡한 인코딩 과정을 거치기 때문에 압축 시간은 조금 더 걸리지만 일반적으로 더 좋은 품질을 얻을 수 있다.

단 ASTC 지원 기기 범위에 대해 신경 쓸 필요가 있다.

ASTC는 OpenGL ES 3.2 및 OpenGL ES 3.1+AEP GPU와 일부 OpenGL ES 3.0 GPU에서 지원한다.

물론 2020년 Google Play 기기의 ASTC 지원 비율을 보면 77%로 사실상 주요 타게팅 기기 대부분이 ASTC를 지원한다고 볼 수 있지만 현재 프로젝트가 인도네시아, 동남아 같은 신흥국 유저나 최대한 많은 기기를 타게팅해야 한다면 ASTC 사용을 더 신중히 고민해야 한다.

 

https://developer.android.chttps://developer.arm.com/documentation/102162/0200/Unity-and-ASTC?lang=en om/guide/app-bundle/asset-delivery/texture-compression?hl=ko 

 

'Unity' 카테고리의 다른 글

[Unity] Behavior Tree  (0) 2023.03.20
[Unity] FSM - 유한 상태 기계  (2) 2023.03.13
[Unity] Normal Map  (0) 2023.01.30
[Unity] 텍스처 타입  (0) 2023.01.24
[Unity] 텍스처와 텍스처 압축  (2) 2023.01.08

+ Recent posts