10. 유니티(Unity)와 ASTC
유니티는 하드웨어가 지원하는 경우 Android, iOS, tvOS 및 WebGL에서 ASTC를 활성화할 수 있도록 지원합니다. 안드로이드에서는 HDR 및 LDR 프로필을 모두 사용할 수 있습니다.
10.1 빌드 설정 (Build settings)
각 플랫폼에는 기본 텍스처 압축 형식이 있습니다. 예를 들어, 안드로이드의 기본값은 RGBA 텍스처의 경우 ETC2, RGB 텍스처의 경우 ETC입니다. 압축 설정은 File > Build Settings에서 변경할 수 있습니다.

- Texture Compression 설정은 모든 텍스처에 전역으로 적용됩니다.
- Don’t override 옵션은 기본 텍스처 압축 형식을 사용한다는 것을 의미합니다.
10.2 텍스처별 설정 (Texture-specific settings)
각 텍스처에 대해 전역 압축 형식을 재정의하려면 Texture settings의 Override for platform 섹션을 사용하십시오.

- Best for Compression Quality를 선택하면 압축기가 최적의 ASTC 블록을 정밀하게 선택하지만, 압축 시간이 늘어납니다.
- 아래와 같이 Format을 선택하여 ASTC 블록의 크기를 지정할 수 있습니다.

Override for platform이 비활성화된 경우에도 이 섹션의 설정은 유용합니다. 전역 설정 및 텍스처 유형에 따라 특정 텍스처에 어떤 형식과 설정이 적용되고 있는지 확인할 수 있기 때문입니다.
Import Settings에서는 텍스처 유형과 알파 채널 정보를 지정할 수 있습니다. 이 설정을 통해 유니티는 텍스처에 적절한 압축 설정을 선택합니다. 필요한 경우 Normal map을 선택해야 합니다.

텍스처 설정을 적용한 후 Texture Preview를 통해 결과물, 선택된 압축 형식, 메모리 사용량을 확인할 수 있습니다.

10.3 다양한 하드웨어를 위한 빌드
모든 기기가 ASTC를 지원하는 것은 아닙니다. 플랫폼이 지원하지 않는 텍스처 형식을 선택한 경우, 텍스처 데이터는 런타임에 압축 해제됩니다. 유니티는 강력한 디코더를 사용하므로 로딩 시간에 큰 영향을 주지는 않지만, 낮은 메모리 사용량과 캐시 효율성 같은 텍스처 압축의 이점은 사라집니다.
이러한 상황을 방지하기 위해 하드웨어별로 별도의 APK를 빌드할 수 있습니다. 예를 들어, ASTC는 OpenGL ES 3 기기에서 사용할 수 있고, OpenGL ES 2 기기에서는 ETC를 사용할 수 있습니다.
다음은 다양한 플랫폼을 위해 서로 다른 APK를 빌드하는 작업 흐름의 예시입니다.
- OpenGL ES 3 및 Vulkan용 빌드:
- 안드로이드용 File > Build Settings에서 ASTC를 선택합니다.
- Edit > Project Settings > Player Settings로 이동하여 OpenGL ES 2를 비활성화합니다.
- APK를 빌드합니다.
- OpenGL ES 2용 빌드:
- 안드로이드용 File > Build Settings에서 Don’t override를 선택합니다.
- 플랫폼에 대한 모든 텍스처별 재정의(override)가 비활성화되어 있거나 ETC 형식을 사용하는지 확인합니다.
- Edit > Project Settings > Player Settings로 이동하여 OpenGL ES 2만 활성화합니다.
- APK를 빌드합니다.
11. 언리얼 엔진(Unreal Engine)과 ASTC
언리얼 엔진은 모바일 기기용 ASTC 및 기타 형식을 지원합니다. 기기가 지원하는 형식을 확인하려면 게임 실행 중에 네 손가락으로 화면을 탭 하십시오. 콘솔 창(Console Window)이 나타나며 사용 가능한 텍스처 형식을 보여줍니다.

- bShowConsoleOnFourFingerTap 변수가 이 동작을 제어합니다.
- Shipping 빌드 구성에서는 bShowConsoleOnFourFingerTap 변수가 기본적으로 비활성화되어 있습니다.
Launch 컨텍스트 메뉴를 열어 사용 가능한 텍스처 압축 옵션을 확인할 수 있습니다.

- Multi 옵션은 사용 가능한 모든 형식으로 텍스처를 압축합니다. 이 옵션은 패키지 크기와 빌드 시간을 증가시키지만, 런타임에 가장 적합한 형식이 선택되도록 보장합니다.
- 일부 기기에서 ASTC가 지원되지 않을 수 있지만, ETC1 지원은 보장됩니다.
Project Settings에서 Multi 빌드 변형에 포함될 형식을 선택하고 상대적 우선순위를 설정할 수 있습니다.

노멀 맵(normal maps), 마스크(masks), GUI 요소의 경우 Texture Editor에서 적절한 압축 설정을 지정해야 합니다.

12. 지식 점검 (Check your knowledge)
Q: ASTC와 같은 실시간 압축 방식과 JPG 및 PNG와 같은 기존 압축 방식의 주요 차이점은 무엇입니까?
A: ASTC와 같은 실시간 압축 방식은 큰 이미지 내의 요소에 대해 효율적인 무작위 샘플링(random sampling)을 허용합니다. 반면 JPG와 PNG는 전체 이미지를 압축 해제하도록 설계되었습니다.
Q: ASTC는 이미지 압축 시 다양한 비트 레이트 선택지를 제공합니다. 이 범위의 상한과 하한은 무엇입니까?
A: ASTC는 텍셀당 0.89비트에서 8비트(bpt) 사이의 비트 레이트를 제공하며, 이는 4x4 텍셀에서 12x12 텍셀의 블록 크기에 해당합니다.
Q: ASTC는 각 텍셀의 색상 값을 할당하기 위해 색상 그라디언트 또는 파티션(partitions)을 사용합니다. 하나의 블록이 정의할 수 있는 최대 파티션 수는 얼마입니까?
A: ASTC는 블록당 최대 4개의 고유 파티션을 정의할 수 있습니다.
Q: 각 채널이 서로 전혀 관계없는 콘텐츠를 포함하는 입력 텍스처를 압축할 때 어떤 astcenc 명령줄 옵션을 사용해야 합니까?
A: -mask 옵션입니다.
13. 관련 정보 (Related information)
이 가이드의 내용과 관련된 리소스는 다음과 같습니다.
- 블로그 게시물:
- Arm Unveils Details of ASTC Texture Compression at HPG Conference (Part 1, Part 2)
- ASTC does it (Part 1: Overview, Part 2: How to use it)
- ASTC Texture Compression: Arm Pushes the Envelope in Graphics Technology
- How low can you go? Building low-power, low-bandwidth Arm Mali GPUs
- 그래픽스 API ASTC 예제:
- 프레젠테이션:
- 기술 문서:
- 비디오:
14. 다음 단계 (Next steps)
이 가이드에서는 ASTC가 무엇인지, 어떻게 발전했는지, 그리고 애플리케이션에서 ASTC를 사용하는 방법에 대한 기본 원리를 소개했습니다.
다음 단계는 자신의 프로젝트에 있는 텍스처 에을 압축하기 위해 ASTC 형식을 직접 사용해 보는 것입니다.
게임 엔진을 사용하여 프로젝트를 개발 중이라면, 다음 리소스를 통해 ASTC 사용법을 더 자세히 알아볼 수 있습니다.
- 언리얼 엔진 사용자: Arm Guide for Unreal Engine 4: Optimizing Mobile Gaming Graphics
- 유니티 사용자: Arm Guide for Unity Developers: Optimizing Mobile Gaming Graphics
마지막으로, ASTC를 통해 얻을 수 있는 결과를 확인하려면 CES 2014의 'Arm Mali ASTC Texture Compression Demo' 영상을 시청해 보십시오.
'자료는 자료지 > 외부에서 퍼온자료' 카테고리의 다른 글
| 02 Shader 코드 입문 기초 (0) | 2026.01.02 |
|---|---|
| 실시간 렌더링 파이프라인 기초 (6) | 2026.01.02 |
| ASTC_User_Guide 번역 5 (0) | 2025.12.14 |
| ASTC_User_Guide 번역 4 (0) | 2025.12.14 |
| ASTC_User_Guide 번역 3 (0) | 2025.12.09 |
댓글