이 페이지에서는 Android에만 해당되는 Texture Overrides 에 대해 자세하게 설명합니다. 일반적인 텍스처 오버라이드는 여기를 참조하십시오.
이 페이지의 내용은 독자가 DXT 및 ETC 텍스처 압축과 OpenGL ES 및 Android 개발 작업에 대한 지식이 있다는 가정 하에 작성되었습니다.
텍스처 압축과 OpenGL ES에 대한 자세한 내용은 다음 위키피디아 페이지에서 확인할 수 있습니다.
Texture Format | 내부 형식 |
---|---|
RGB Compressed DXT1 | 압축된 RGB 텍스처입니다. Nvidia Tegra에서 지원합니다. 픽셀당 4비트(256x256 텍스처당 32KB)입니다. |
RGB Crunched DXT1 | 압축된 RGB 텍스처입니다. Nvidia Tegra에서 지원합니다. 크런치는 DXT 텍스처 압축에 추가되는 손실 압축 포맷입니다. CPU에서 텍스처를 DXT1로 압축을 푼 후 런타임 시점에 GPU에 업로드합니다. 크런치는 일반 DXT1 압축보다 더 작은 텍스처를 얻을 수 있지만, 품질이 더 낮습니다. 크런치 텍스처는 압축하는 데 시간이 오래 걸릴 수 있지만 런타임 시점에 압축을 푸는 속도가 매우 빠릅니다. 픽셀당 4비트(출력 크기는 텍스처에 따라 다르고, 256x256 텍스처당 1KB 이상)입니다. |
RGBA Compressed DXT5 | 압축된 RGBA 텍스처입니다. Nvidia Tegra에서 지원합니다. 픽셀당 8비트(256x256 텍스처당 64KB)입니다. |
RGBA Crunched DXT5 | 압축된 RGBA 텍스처입니다. Nvidia Tegra에서 지원합니다. 크런치는 DXT 텍스처 압축에 추가되는 손실 압축 포맷입니다. CPU에서 텍스처를 DXT5로 압축을 푼 후 런타임 시점에 GPU에 업로드합니다. 크런치 압축을 사용하여 일반 DXT5 압축보다 훨씬 더 작은 텍스처를 얻을 수 있지만, 품질이 더 낮습니다. 크런치 텍스처는 압축하는 데 시간이 오래 걸릴 수 있지만 런타임 시점에 압축을 푸는 속도가 매우 빠릅니다. 픽셀당 8비트(출력 크기는 텍스처에 따라 다르고, 256x256 텍스처당 1KB 이상)입니다. |
RGB Compressed ETC 4 bits | 압축된 RGB 텍스처로입니다. Unity 에디터에서 사용하는 Android 프로젝트의 기본 텍스처 포맷입니다. ETC_RGB4는 OpenGL ES 2.0의 일부이고 모든 OpenGL ES 2.0 GPU에서 지원합니다. 알파는 지원하지 않습니다. 픽셀당 4비트(256x256 텍스처당 32KB)입니다. |
RGB Crunched ETC | 압축된 RGB 텍스처입니다. 크런치는 ETC 텍스처 압축에 추가되는 손실 압축 포맷입니다. CPU에서 텍스처를 ETC_RGB4로 압축을 푼 후 런타임 시점에 GPU에 업로드합니다. 크런치는 일반 ETC_RGB4 압축보다 더 작은 텍스처를 얻을 수 있지만, 품질이 더 낮습니다. 크런치 텍스처는 압축하는 데 시간이 오래 걸릴 수 있지만 런타임 시점에 압축을 푸는 속도가 매우 빠릅니다. ETC_RGB4는 OpenGL ES 2.0의 일부이고 모든 OpenGL ES 2.0 GPU에서 지원합니다. 알파는 지원하지 않습니다. 픽셀당 4비트(출력 크기는 텍스처에 따라 다르고, 256x256 텍스처당 1KB 이상)입니다. |
RGB Compressed ETC2 4 bits | 압축된 RGB 텍스처입니다. ETC2는 OpenGL ES 3.0의 일부이고 모든 OpenGL ES 3.0 GPU에서 지원합니다. 픽셀당 4비트(256x256 텍스처당 32KB)입니다. |
RGB + 1-bit Alpha Compressed ETC2 4 bits | 1비트 펀치스루 알파가 있는 압축된 RGB 텍스처입니다. ETC2는 OpenGL ES 3.0의 일부이고 모든 OpenGL ES 3.0 GPU에서 지원합니다. 픽셀당 4비트(256x256 텍스처당 32KB)입니다. |
RGBA Compressed ETC2 8 bits | 압축된 RGBA 텍스처입니다. 모든 OpenGL ES 3.0 GPU에서 지원합니다. 256x256 텍스처의 경우 64KB입니다. |
RGBA Crunched ETC2 | 압축된 RGBA 텍스처입니다. 크런치는 ETC 텍스처 압축에 추가되는 손실 압축 포맷입니다. CPU에서 텍스처를 ETC2_RGBA8로 압축을 푼 후 런타임 시점에 GPU에 업로드합니다. 크런치 압축을 사용하여 일반 ETC2_RGBA8 압축보다 훨씬 더 작은 텍스처를 얻을 수 있지만, 품질이 더 낮습니다. 크런치 텍스처는 압축하는 데 시간이 오래 걸릴 수 있지만 런타임 시점에 압축을 푸는 속도가 매우 빠릅니다. 모든 OpenGL ES 3.0 GPU에서 지원합니다. 픽셀당 8비트(출력 크기는 텍스처에 따라 다르고, 256x256 텍스처당 1KB 이상)입니다. |
RGB Compressed PVRTC 2 bits | 압축된 RGB 텍스처입니다. Imagination PowerVR GPU에서 지원합니다. 픽셀당 2비트(256x256 텍스처당 16KB)입니다. |
RGBA Compressed PVRTC 2 bits | 압축된 RGBA 텍스처입니다. Imagination PowerVR GPU에서 지원합니다. 픽셀당 2비트(256x256 텍스처당 16KB)입니다. |
RGB Compressed PVRTC 4 bits | 압축된 RGB 텍스처입니다. Imagination PowerVR GPU에서 지원합니다. 픽셀당 4비트(256x256 텍스처당 32 KB)입니다. |
RGBA Compressed PVRTC 4 bits | 압축된 RGBA 텍스처입니다. Imagination PowerVR GPU에서 지원합니다. 픽셀당 4비트(256x256 텍스처당 32 KB)입니다. |
RGB Compressed ATC 4 bits | 압축된 RGB 텍스처. Qualcomm Snapdragon에서 지원. 픽셀당 4비트(256x256 텍스처당 32KB). |
RGBA Compressed ATC 8 bits | 압축된 RGBA 텍스처. Qualcomm Snapdragon에서 지원. 픽셀당 8비트(256x256 텍스처당 64KB). |
RGB Compressed ASTC 4x4 block RGB Compressed ASTC 5x5 block RGB Compressed ASTC 6x6 block RGB Compressed ASTC 8x8 block RGB Compressed ASTC 10x10 block RGB Compressed ASTC 12x12 block |
압축된 RGB 텍스처. 모든 OpenGL ES 3.2 및 OpenGL ES 3.1+AEP GPU와 일부 OpenGL ES 3.0 GPU에서 지원합니다. 이 압축 타입은 고정 128비트 블록 크기를 사용하고, 픽셀 블록 크기(4x4–12x12)에 따라 픽셀당 8비트–0.89비트를 사용합니다. 압축된 텍스처 크기는 256x256 텍스처당 64KB(4x4 블록, 최고 품질)부터 256x256 텍스처당 7.6KB(12x12 블록, 최고 압축률)까지 다양합니다. |
RGBA Compressed ASTC 4x4 block RGBA Compressed ASTC 5x5 block RGBA Compressed ASTC 6x6 block RGBA Compressed ASTC 8x8 block RGBA Compressed ASTC 10x10 block RGBA Compressed ASTC 12x12 block |
압축된 RGB 텍스처입니다. 모든 OpenGL ES 3.2 및 OpenGL ES 3.1+AEP GPU와 일부 OpenGL ES 3.0 GPU에서 지원합니다. 이 압축 타입은 고정 128비트 블록 크기를 사용하고, 픽셀 블록 크기(4x4 to 12x12)에 따라 픽셀당 8비트 ~ 0.89비트를 사용합니다. 압축된 텍스처 크기는 256x256 텍스처당 64KB(4x4 블록, 최고 품질)부터 256x256 텍스처당 7.6KB(12x12 블록, 최고 압축률)까지 다양합니다. |
RGB 16 bit | 알파가 없는 65K 컬러입니다. 압축된 포맷보다 메모리를 더 많이 사용하지만, 그레디언트가 없는 산뜻한 텍스처나 UI에 더 적합할 수 있습니다. 256x256 텍스처당 128KB입니다. |
RGB 24 bit | 알파가 없는 트루컬러입니다. 256x256 텍스처당 192KB입니다. |
Alpha 8 bit | 컬러가 없는 고품질 알파 채널입니다. 256x256 텍스처당 64KB입니다. |
RGBA 16 bit | 저품질 트루컬러. 알파 채널이 있는 텍스처의 기본 압축. 256x256 텍스처당 128KB. |
RGBA 32 bit | 알파가 있는 트루컬러입니다. 알파가 있는 텍스처의 최고 품질 압축입니다. 256x256 텍스처당 256KB입니다. |
Compression Quality | 가장 빠른 성능을 얻으려면 Fast를 선택하고, 최고 이미지 품질을 얻으려면 Best를 선택하고, 둘의 균형을 맞추려면 Normal을 선택합니다. |
사용한 텍스처 압축 포맷을 지원하지 않는 기기에 앱을 설치하면 Unity 에디터가 RGBA 32로 텍스처 압축을 풀고 앱을 실행할 때 기기의 메모리에 이 텍스처를 압축된 텍스처와 함께 저장합니다. 그러면 Unity 에디터가 텍스처 압축을 풀고 사용된 두 가지 텍스처 버전(압축 및 비압축)을 저장해야 하므로 로드 시간이 늘어나고 메모리 사용량이 증가합니다. 특히 상대적으로 느린 구형 기기의 렌더링 성능에 큰 영향을 미칠 수도 있습니다.
Nvidia Tegra와 같은 특정 하드웨어를 타겟으로 하지 않는다면 ETC2 압축을 사용하십시오. ETC2는 알파 채널이 있는 텍스처와 없는 텍스처를 모두 지원하고 모든 OpenGL ES 3 기기에서 지원됩니다. 소프트웨어 압축이 풀리지 않도록 그래픽스 API 목록에서 OpenGL ES 2를 제거하고 Minimum API Level을 18 이상으로 설정하여 플레이어 설정 창에서 그래픽스 API를 OpenGL ES 3로 설정하십시오.
OpenGL ES 2 및 OpenGL ES 3 기기를 타겟으로 지정하려면 먼저 위 그림과 같이 OpenGL ES 3이 타겟인 APK를 빌드한 후 플레이어 설정 창의 Graphics API 섹션에서 OpenGL ES 2와 Vulcan을 제거하여 OpenGL ES 2가 타겟인 APK를 빌드합니다. 그런 다음 두 APK를 모두 Google Play 스토어에 퍼블리시할 수 있습니다. 사용자가 앱을 다운로드하면 Google Play 스토어에서 사용자의 기기에 가장 적합한 APK를 자동으로 설정합니다. 여러 APK 파일 퍼블리싱에 대한 자세한 내용은 Android 개발자에서 여러 APK 퍼블리시 및 Google Play 스토어 APK 필터링 문서를 참조하십시오.
OpenGL ES 2가 타겟인 APK를 빌드할 때에는 ETC1 텍스처 압축을 사용할 수 있습니다.
OpenGL ES2가 타겟인 APK의 텍스처 압축 포맷으로는 ETC1을 사용할 수 있습니다. Unity 에디터는 알파가 있는 텍스처에 ETC1을 사용할 수 있습니다. 이 경우 (패킹 태그를 지정하여) 텍스처를 아틀라스에 배치해야 하고, 빌드가 Android용이어야 합니다. 텍스처에 대해 “Compress using ETC1” 체크박스를 설정하여 이렇게 선택할 수 있습니다. 내부에서 Unity 에디터는 결과 아틀라스를 알파가 없는 두 개의 텍스처로 분할한 다음 렌더링 파이프라인의 마지막 부분에서 결합합니다.
텍스처에 알파 채널을 반드시 저장하려면 모든 하드웨어 공급업체에서 지원하는 RGBA 16비트 압축 포맷을 사용해야 합니다.
2017–09–18 편집 리뷰를 거쳐 페이지 수정됨
Unity 2017.1에서 업데이트된 기능
Unity 2017.3에서 크런치 압축 포맷 업데이트