이 페이지에서는 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 기기에서 지원됩니다. 소프트웨어 압축 해제를 방지하려면 Android 플레이어 설정에서 최소 그래픽스 API를 OpenGL ES 3으로 설정하십시오. 이를 위해 Graphics APIs 목록에서 OpenGL ES 2를 제거하고 Minimum API Level을 18+로 설정합니다.
OpenGL ES 2 기기와 OpenGL ES 3 기기를 모두 타겟팅하려면 APK를 두 개 빌드하십시오. 이를 위해 우선 위에서 설명한 대로 OpenGL ES 3을 타겟팅하는 APK를 빌드한 다음, Player 설정의 Graphics APIs 섹션에서 OpenGL ES 2와 Vulcan을 제거하여 OpenGL ES 2를 타겟팅하는 APK를 빌드합니다. 그런 다음 두 APK 모두를 Google Play Store에 퍼블리시하면 됩니다. 사용자가 앱을 다운로드하면 Google Play Store가 자동으로 해당 사용자의 기기에 가장 적합한 APK를 설치합니다. 여러 개의 APK 파일을 퍼블리시하는 방법은 Android 개발자 문서의 여러 개의 APK 퍼블리싱과 Google Play Store APK 필터링을 참조하십시오.
OpenGL ES 2가 타겟인 APK를 빌드할 때에는 ETC1 텍스처 압축을 사용할 수 있습니다.
ETC1을 OpenGL ES2를 타겟팅하는 APK의 텍스처 압축 포맷으로 사용할 수 있습니다. Unity는 알파를 포함한 텍스처에 ETC1을 사용할 수 있습니다(단, 패킹 태그를 지정하여 아틀라스에 배치되고 빌드가 Android용이어야 함). 텍스처에 대해 Compress using ETC1 체크박스를 선택하여 이 설정을 사용할 수 있습니다. 내부에서 Unity는 결과 아틀라스를 알파가 없는 두 개의 텍스처로 분할한 다음 렌더링 파이프라인의 마지막 부분에서 결합합니다.
텍스처에 알파 채널을 반드시 저장하려면 모든 하드웨어 공급업체에서 지원하는 RGBA 16비트 압축 포맷을 사용해야 합니다.
2017–09–18 편집 리뷰를 거쳐 페이지 수정됨
Unity 2017.1에서 업데이트된 기능
Unity 2017.3에서 크런치 압축 포맷 업데이트