Unity는 텍스처(예: JPG, PNG, PSD 및 TGA)를 임포트하기 위한 소스 파일로 많은 일반적인 이미지 포맷을 지원합니다. 그러나 그래픽 카드 또는 모바일 디바이스와 같은 3D 그래픽스 하드웨어는 실시간으로 렌더링하는 동안 이러한 포맷을 사용하지 않습니다. 이 하드웨어는 빠른 텍스처 샘플링을 위해 최적화된 지정된 포맷으로 텍스처를 압축해야 합니다. 다양한 플랫폼과 기기는 각각 전용 포맷이 있습니다.
기본적으로 Unity 에디터는 선택한 빌드 타겟에 일치하도록 텍스처를 가장 적합한 포맷으로 자동으로 변환하고 빌드에는 변환된 텍스처만 포함됩니다. 소스 에셋 파일은 프로젝트의 Assets
폴더에 기존 포맷으로 남습니다. 그러나 대부분의 플랫폼은 선택 가능한 몇 가지 텍스처 압축 포맷을 지원합니다.
Unity에는 각 플랫폼마다 기본 포맷이 있지만 오버라이드하고 일부 텍스처에 대해 다른 압축 포맷을 선택할 수 있습니다(예를 들어 텍스처를 마스크로 사용하고 있으면 하나의 채널만을 사용하여 파일 크기는 줄이지만 품질은 보장하기 위해 BC4 포맷을 사용하도록 선택할 수 있음).
이 페이지는 다음에 관한 정보를 제공합니다.
텍스처를 임포트하고 오버라이드를 설정하는 방법에 대한 일반 정보는 텍스처 임포트 설정을 참조하십시오.
이 페이지는 다음 컨셉을 사용합니다.
다음 표는 각 플랫폼에 사용된 디폴트 포맷을 보여줍니다.
플랫폼 | 컬러 모델 | 없음 | 보통 품질(기본값) | 높은 품질 | 낮은 품질(더 높은 성능) |
---|---|---|---|---|---|
Windows, Linux, macOS, PS4, XBox One | RGB | RGB 24비트 | RGB Compressed DXT1 | RGB(A) Compressed BC7 | RGB Compressed DXT1 |
RGBA | RGBA 32비트 | RGBA Compressed DXT5 | RGB(A) Compressed BC7 | RGBA Compressed DXT5 | |
HDR | RGBA Half | RGB Compressed BC6H | RGB Compressed BC6H | RGB Compressed BC6H | |
WebGL | RGB | RGB 24비트 | RGB Compressed DXT1 | RGB Compressed DXT1 | RGB Compressed DXT1 |
RGBA | RGBA 32비트 | RGBA Compressed DXT5 | RGBA Compressed DXT5 | RGBA Compressed DXT5 | |
Android(빌드 설정에서 Don’t override를 활성화한 경우에만 해당) | RGB | RGB 24비트 | RGB Compressed ETC | RGB Compressed ETC | RGB Compressed ETC |
RGBA | RGBA 32비트 | RGBA Compressed ETC2 | RGBA Compressed ETC2 | RGBA Compressed ETC2 | |
iOS | RGB | RGB 24비트 | RGB Compressed PVRTC 4비트 | RGB Compressed PVRTC 4비트 | RGB Compressed PVRTC 2비트 |
RGBA | RGBA 32비트 | RGBA Compressed PVRTC 4비트 | RGBA Compressed PVRTC 4비트 | RGBA Compressed PVRTC 2비트 | |
tvOS | RGB | RGB 24비트 | RGB Compressed ASTC 6x6 블록 | RGB Compressed ASTC 4x4 블록 | RGB Compressed ASTC 8x8 블록 |
RGBA | RGBA 32비트 | RGBA Compressed ASTC 6x6 블록 | RGBA Compressed ASTC 4x4 블록 | RGBA Compressed ASTC 8x8 블록 | |
Default | RGBA | RGBA 32비트 | RGBA 16비트 | RGBA 16비트 | RGBA 16비트 |
다음 표에는 각 플랫폼에서 사용할 수 있는 텍스처 압축 포맷 옵션과 디스크의 결과 압축 파일 크기가 표시되어 있습니다(256x256 픽셀 이미지 기준).
텍스처 압축 포맷을 선택하면 파일 크기와 품질, 압축에 소요되는 시간 사이의 균형을 유지할 수 있습니다. 품질이 높을수록 파일 크기가 커집니다. 특히 모바일 디바이스에서 최고의 성능을 얻으려면 해당 포맷이 충분한 화질을 제공하는 한 애플리케이션이 타겟으로 삼는 하드웨어에서 지원하는 픽셀당 비트 수가 가장 적은 포맷을 사용합니다.
플랫폼에 따라 하드웨어가 다르며 플랫폼은 특정 압축 포맷과 가장 효율적으로 작동하도록 최적화되어 있습니다. 타겟 플랫폼이 지원하는 텍스처 압축 포맷을 사용하면 GPU가 직접 사용할 수 있으며 해당 플랫폼은 지원하는 포맷에 텍스처를 압축 해제하는 데 리소스를 소모하지 않습니다. 이렇게 하면 애플리케이션의 성능을 향상할 수 있습니다.
타겟 플랫폼이 지원하지 않는 텍스처 압축 포맷을 사용하는 경우 텍스처는 RGBA 32로 압축 해제되며(별다른 요청이 없을 경우), 압축 텍스처와 함께 메모리에 저장됩니다. 이렇게 하면 텍스처 로딩 시간이 늘어나며 메모리를 추가로 사용하므로 호환되지 않는 포맷을 선택하는 경우 애플리케이션의 성능에 영향을 줄 수 있습니다.
아래 표는 각 압축 포맷에 지원되는 플랫폼을 보여줍니다.
참고: 메모리 크기는 256x256 픽셀 텍스처를 기준으로 합니다.
텍스처 압축 포맷 | 설명 | 메모리 크기 | Windows | Linux | Mac | PS4 | Xbox One | Android | iOS | tvOS | WebGL |
---|---|---|---|---|---|---|---|---|---|---|---|
RGB Compressed DXT1 | 압축된 unsigned normalised integer RGB 텍스처입니다. | 32KB/4bpp | 지원 | 지원 | 지원 | 지원 | 지원 | 부분적 지원(1) | 지원 안 함 | 지원 안 함 | 부분적 지원(2) |
RGB Crunched DXT1 | 크런치 압축이 추가된 RGB Compressed DXT1 | VBR | 지원 | 지원 | 지원 | 지원 | 지원 | 부분적 지원(1) | 지원 안 함 | 지원 안 함 | 부분적 지원(2) |
RGBA Compressed DXT5 | 압축된 unsigned normalised integer RGBA 텍스처입니다. | 64KB/8bpp | 지원 | 지원 | 지원 | 지원 | 지원 | 부분적 지원(1) | 지원 안 함 | 지원 안 함 | 부분적 지원(2) |
RGBA Crunched DXT5 | 크런치 압축이 추가된 RGBA Compressed DXT5 | VBR | 지원 | 지원 | 지원 | 지원 | 지원 | 부분적 지원(1) | 지원 안 함 | 지원 안 함 | 부분적 지원(2) |
RGB Compressed BC6H | 압축된 unsigned float/HDR(High Dynamic Range) RGB 텍스처입니다. | 64KB/8bpp | 부분적 지원(3) | 지원 | 부분적 지원(3) | 지원 | 지원 | 지원 안 함 | 지원 안 함 | 지원 안 함 | 지원 안 함 |
RGB(A) Compressed BC7 | 고품질의 압축된 unsigned normalised integer RGB 또는 RGBA 텍스처입니다. | 64KB/8bpp | 부분적 지원(3) | 지원 | 부분적 지원(3) | 지원 | 지원 | 지원 안 함 | 지원 안 함 | 지원 안 함 | 지원 안 함 |
RGB 16비트 | 알파를 포함하지 않은 65,536 컬러의 압축되지 않은 포맷입니다. 압축된 포맷보다 많은 메모리를 사용하지만, 그레디언트가 적용되지 않은 선명한 텍스처나 UI에 더욱 적합할 수 있습니다. | 128KB/16bpp | 지원 | 지원 | 지원 | 지원 | 지원 | 지원 | 지원 | 지원 | 지원 |
RGB 24비트 | 알파가 포함되어 있지 않은 트루 컬러입니다. | 192KB/24bpp | 지원 | 지원 | 지원 | 지원 | 지원 | 지원 | 지원 | 지원 | 지원 |
RGB9e5 32비트 Shared Exponent Float | 부동 소수점 / 알파 채널이 포함되어 있지 않은 HDR(High Dynamic Range) 텍스처 | 256KB/32bpp | 지원 | 지원 | 지원 | 지원 | 지원 | 부분적 지원(4) | 부분적 지원(4) | 부분적 지원(4) | 부분적 지원(4) |
알파 8 | 압축되지 않은 고품질 알파 채널 | 64KB/8bpp | 지원 | 지원 | 지원 | 지원 | 지원 | 지원 | 지원 | 지원 | 지원 |
R 8 | 압축되지 않은 고품질 단일 채널 텍스처 | 64KB/8bpp | 지원 | 지원 | 지원 | 지원 | 지원 | 부분적 지원(5) | 부분적 지원(5) | 부분적 지원(5) | 부분적 지원(5) |
R 16비트 | 압축되지 않은 초고품질 단일 채널 텍스처 | 128KB/16bpp | 지원 | 지원 | 지원 | 지원 | 지원 | 부분적 지원(6) | 부분적 지원(6) | 부분적 지원(6) | 지원 안 함 |
RGBA 16비트 | 저품질 트루 컬러 | 128KB/16bpp | 지원 | 지원 | 지원 | 지원 | 지원 | 지원 | 지원 | 지원 | 지원 |
RGBA 32비트 | 알파가 포함된 트루 컬러 | 256KB/32bpp | 지원 | 지원 | 지원 | 지원 | 지원 | 지원 | 지원 | 지원 | 지원 |
RGBA Half | 반정밀도 부동 소수점 / HDR(High Dynamic Range) RGBA 포맷 | 512KB/64bpp | 지원 | 지원 | 지원 | 지원 | 지원 | 부분적 지원(7) | 부분적 지원(7) | 부분적 지원(7) | 부분적 지원(7) |
참고:
DDS 파일에서 텍스처를 임포트할 수 있지만 DXT, BC 압축 포맷 또는 압축되지 않은 픽셀 포맷만 지원됩니다.
아래 표에 나온 포맷은 Android, iOS, tvOS 및 WebGL에서만 지원됩니다.
참고: 크기는 256x256 픽셀 텍스처를 기준으로 합니다.
텍스처 압축 포맷 | 설명 | Size | Android | iOS | tvOS | WebGL |
---|---|---|---|---|---|---|
RGB Compressed ETC | 압축된 RGB 텍스처입니다. 이 포맷은 모든 OpenGL ES 2.0 GPU가 지원합니다. | 32KB/4bpp | 지원 | 지원 | 지원 | 부분적 지원(1) |
RGB Crunched ETC | 크런치 압축이 추가된 RGB Compressed ETC | VBR | 지원 | 지원 | 지원 | 부분적 지원(1) |
RGB Compressed ETC2 | 압축된 RGB 텍스처입니다. | 32KB/4bpp | 부분적 지원(2) | 부분적 지원(3) | 부분적 지원(3) | 부분적 지원(1) |
RGBA Compressed ETC2 | 압축된 RGBA 텍스처입니다. 이 포맷은 모든 OpenGL ES 3.0 GPU가 지원합니다. | 64KB/8bpp | 부분적 지원(2) | 부분적 지원(3) | 부분적 지원(3) | 부분적 지원(1) |
RGBA Crunched ETC2 | 크런치 압축이 추가된 RGBA Compressed ETC2 | VBR | 부분적 지원(2) | 부분적 지원(3) | 부분적 지원(3) | 부분적 지원(1) |
RGB + 1비트 Alpha Compressed ETC2 4비트 | 완전히 불투명하거나 완전히 투명하도록 제한된 알파 채널이 있는 압축된 RGBA 텍스처입니다. | 32KB/4bpp | 부분적 지원(2) | 부분적 지원(3) | 부분적 지원(3) | 부분적 지원(1) |
RG Compressed EAC 8비트 | 고품질의 압축된 RG(2채널) 텍스처입니다. | 64KB/8bpp | 부분적 지원(2) | 부분적 지원(3) | 부분적 지원(3) | 부분적 지원(1) |
R Compressed EAC 4비트 | 고품질의 압축된 R(단일 채널) 텍스처입니다. | 32KB/4bpp | 부분적 지원(2) | 부분적 지원(3) | 부분적 지원(3) | 부분적 지원(1) |
RGB(A) Compressed ASTC | 가변 블록 크기로 압축된 RGB 또는 RGBA 텍스처입니다. 이 포맷은 OpenGL ES 3.1과 Vulkan GPU가 지원합니다. | 12x12: 7744바이트/0.89bpp 10x10: 10816바이트/1.28bpp 8x8: 16KB/2bpp 6x6: 29584바이트 / 3.56bpp 5x5: 43264바이트/5.12bpp 4x4: 64KB/8bpp |
부분적 지원(4) | 부분적 지원(5) | 지원 | 부분적 지원(6) |
RGB(A) Compressed ASTC HDR | 가변 블록 크기로 압축된 unsigned float/HDR(High Dynamic Range) RGB 또는 RGBA 텍스처입니다. | 12x12: 7744바이트/0.89bpp 10x10: 10816바이트/1.28bpp 8x8: 16KB/2bpp 6x6: 29584바이트 / 3.56bpp 5x5: 43264바이트/5.12bpp 4x4: 64KB/8bpp |
부분적 지원(7) | 지원 안 함 | 지원 안 함 | 지원 안 함 |
RGB Compressed PVRTC 2비트 | 고압축 RGB 텍스처입니다. | 16KB/2bpp | 부분적 지원(9) | 지원 | 지원 | 지원 안 함 |
RGBA Compressed PVRTC 2비트 | 고압축 RGBA 텍스처입니다. | 16KB/2bpp | 부분적 지원(9) | 지원 | 지원 | 지원 안 함 |
RGB Compressed PVRTC 4비트 | 압축된 RGB 텍스처입니다. | 32KB/4bpp | 부분적 지원(9) | 지원 | 지원 | 지원 안 함 |
RGBA Compressed PVRTC 4비트 | 압축된 RGBA 텍스처입니다. | 32KB/4bpp | 부분적 지원(9) | 지원 | 지원 | 지원 안 함 |
참고:
보다 폭넓은 호환성을 위해 기본 텍스처 압축 설정(PVRTC)이 선택됩니다. 애플리케이션에 OpenGL ES 2 지원이 포함되지 않은 경우 ASTC 포맷 중 하나를 선택할 수 있습니다. 해당 포맷은 더 나은 품질과 유연성을 제공하며 압축은 PVRTC보다 더 빠릅니다.
Unity는 Metal을 지원하는 tvOS 기기만 지원합니다. ASTC는 이 플랫폼의 기본 텍스처 압축입니다. 수동으로 OpenGL ES 2를 추가하는 경우 텍스처 압축을 PVRTC 또는 ETC로 변경하여 런타임 시 텍스처 압축 해제를 방지해야 합니다.
앱이 특정 하드웨어(예: Nvidia Tegra 또는 Imagination PowerVR)를 타겟으로 하지 않는 경우 여러 장단점을 제공하는 몇 가지 압축 포맷과 압축되지 않은 포맷 중 선택해야 합니다.
Format | 설명 | 지원 |
---|---|---|
ASTC | 가장 유연한 포맷으로 이를 통해 다른 블록 크기를 사용하여 파일 크기와 결과 품질을 미세 조정할 수 있습니다. | Vulkan 또는 OpenGL ES 3.1을 실행하는 모든 기기에서 지원되며 OpenGL ES 3.0을 실행하는 일부 기기에서도 지원됩니다. |
ETC2/EAC | OpenGL ES 3.0에 대한 기본 텍스처 압축 포맷입니다. 결과 이미지 품질이 상당히 높고 1–4 컴포넌트 텍스처 데이터를 지원합니다. OpenGL ES 2 기기가 지원하지 않으므로 텍스처는 런타임 시 ETC2 폴백이 지정한 포맷으로 압축 해제됩니다. | OpenGL ES 3.0에서 지원됩니다. OpenGL ES 2에서는 지원되지 않습니다. |
ETC | 블록 기반 텍스처 압축 포맷입니다. 이미지는 4×4 블록으로 분할되고 각 블록은 고정된 비트 수를 사용하여 인코딩됩니다. 단점은 직접적인 알파 채널 지원이 없다는 점이므로 투명도 정보가 있는 텍스처에는 적합하지 않습니다. Unity는 텍스처 아틀라스에 배치된 알파 채널로 텍스처를 처리하는 자동화된 방법을 제공합니다(스프라이트에 패킹 태그를 사용하여 지정 가능). 이를 활성화하려면 스프라이트 아틀라스 임포트 시 텍스처에 Android 전용 알파 채널 분할 옵션을 활성화합니다. Unity는 결과 아틀라스를 두 가지 텍스처(RGB 데이터가 있는 텍스처 및 세 개(RGB) 채널 모두에서 복제된 알파 채널 데이터가 있는 텍스처)로 분할한 다음 렌더 파이프라인의 마지막 부분에서 두 텍스처를 결합합니다. |
모든 Android 기기에서 지원됩니다. |
RGBA 16비트 | 알파 채널이 있는 압축되지 않은 포맷입니다. 이 포맷은 ETC2보다 두 배 많은 메모리를 사용합니다. 이는 강한 그레디언트 없이 픽셀 퍼펙트 UI를 위해 선택할 수 있는 합리적으로 좋은 포맷입니다. | 모든 기기에서 지원됩니다. |
RGBA 32비트 | 최고 품질을 제공하고 알파 채널을 지원하는 압축되지 않은 포맷입니다. ETC2에 비해 네 배 많은 메모리를 사용합니다. 이는 가장 우수한 픽셀 퍼펙트 UI를 위해 선택하는 포맷입니다. | 모든 기기에서 지원됩니다. |
HDR(High Dynamic Range) 텍스처의 경우 다음 포맷 중 하나를 선택합니다.
서로 다른 하드웨어를 타게팅하는 여러 Android 패키지(APK)를 퍼블리시할 수 있습니다. 예를 들어 두 개의 별도 APK(OpenGL ES 3.0 이상을 지원하는 기기를 타게팅하는 APK, OpenGL ES 2.0 전용 기기용 APK)를 퍼블리시하려면 다음 단계를 따르십시오.
1. OpenGL ES 3을 타게팅하는 APK를 빌드합니다.
2. OpenGL ES 2를 타게팅하는 별도의 APK 빌드합니다.
3. 이러한 APK를 모두 Google Play Store에 퍼블리시합니다.
사용자가 앱을 다운로드하면 Google Play Store는 기기와 가장 적합한 APK를 자동으로 설치합니다.
다중 APK 파일 퍼블리싱에 대한 자세한 내용은 다음에 관한 Android 개발자 문서를 참조하십시오.