Android 플랫폼을 위한 플레이어 설정
Android용 Gradle

Android 2D 텍스처 오버라이드

이 페이지에서는 Android에만 해당되는 Texture Overrides 에 대해 자세하게 설명합니다. 일반적인 텍스처 오버라이드는 여기를 참조하십시오.

이 페이지의 내용은 독자가 DXT 및 ETC 텍스처 압축과 OpenGL ES 및 Android 개발 작업에 대한 지식이 있다는 가정 하에 작성되었습니다.

텍스처 압축과 OpenGL ES에 대한 자세한 내용은 다음 위키피디아 페이지에서 확인할 수 있습니다.

Android 2D 텍스처 오버라이드 설정
Android 2D 텍스처 오버라이드 설정
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 에디터가 텍스처 압축을 풀고 사용된 두 가지 텍스처 버전(압축 및 비압축)을 저장해야 하므로 로드 시간이 늘어나고 메모리 사용량이 증가합니다. 특히 상대적으로 느린 구형 기기의 렌더링 성능에 큰 영향을 미칠 수도 있습니다.

Use ETC2 compression unless you are targeting specific hardware (like Nvidia Tegra). ETC2 supports Textures with and without an alpha channel and is supported by all OpenGL ES 3 devices. To avoid software decompression, set the minimum graphics API to OpenGL ES 3 in the Android Player settings by removing OpenGL ES 2 from the Graphics APIs list and setting the Minimum API Level to 18+.

To target OpenGL ES 2 and OpenGL ES 3 devices, you can create two different APKs by first building an APK targeting OpenGL ES 3, as shown above, and then building an APK targeting OpenGL ES 2 by removing OpenGL ES 2 and Vulcan from the Graphics APIs section of the Player settings. You can then publish both of these APKs to the Google Play Store. When a user downloads your app, the Google Play Store will automatically install the most relevant APK for their device. For more information about publishing multiple APK files, see Android Developer documentation on Publishing Multiple APKs and Google Play Store APK filtering.

OpenGL ES 2가 타겟인 APK를 빌드할 때에는 ETC1 텍스처 압축을 사용할 수 있습니다.

The Texture compression format for OpenGL ES2-targeted APK can be ETC1. Unity can use ETC1 for Textures with Alpha, provided they are placed on an Atlas (by specifying the packing tag) and the build is for Android. You can opt in for this by setting the Compress using ETC1 checkbox for the Texture. Under the hood Unity splits the resulting atlas into two Textures, each without alpha and then combine them in the final parts of the render-pipeline.

텍스처에 알파 채널을 반드시 저장하려면 모든 하드웨어 공급업체에서 지원하는 RGBA 16비트 압축 포맷을 사용해야 합니다.


  • 2017–09–18 편집 리뷰를 거쳐 페이지 수정됨

  • Unity 2017.1에서 업데이트된 기능

  • Unity 2017.3에서 크런치 압축 포맷 업데이트

Android 플랫폼을 위한 플레이어 설정
Android용 Gradle