PKM 및 ETC 형식: 전체 가이드
PKM은 ETC 압축 텍스처를 위한 간단한 컨테이너 형식으로 Android 및 OpenGL ES 플랫폼에서 널리 사용됩니다. 이 문서에서는 PKM 형식 구조, ETC/ETC2 압축 버전을 이해하고 이를 효과적으로 사용하는 방법에 대한 완전한 가이드를 제공합니다.
PKM 형식이란 무엇입니까?
PKM(Ericsson이 명명한 'PoKeMon'의 약어)은 ETC 압축 텍스처 데이터를 저장하기 위해 특별히 설계된 간단한 컨테이너 형식입니다. KTX나 DDS와 같은 복잡한 형식과 달리 PKM은 16바이트 헤더와 압축된 이미지 데이터가 뒤따르는 최소한의 구조를 가지고 있습니다.
이 형식은 모바일 장치에서 ETC 압축 텍스처를 저장하고 로드하는 간단한 방법을 제공하기 위해 만들어졌습니다. 단순성 덕분에 압축된 텍스처 데이터 자체를 넘어서는 오버헤드가 거의 없이 쉽게 구현하고 구문 분석할 수 있습니다.
PKM 파일 구조
- 16바이트 헤더: 매직 넘버(PKM), 버전, 형식, 크기
- 압축된 텍스처 데이터: 원시 ETC/ETC2 블록
ETC 압축 버전
ETC 압축에는 두 가지 주요 버전이 있으며 각각 다른 기능을 가지고 있습니다.
ETC1(에릭슨 텍스처 압축 1)
4:1 고정 압축 비율로 RGB 색상 채널만 지원하는 원래 ETC 표준입니다. OpenGL ES 2.0부터 Android 기기에서 널리 지원됩니다.
지원하다: 모든 OpenGL ES 2.0+ 장치
압축비: 4:1 고정(픽셀당 4비트)
ETC2(에릭슨 텍스처 압축 2)
ETC1의 후속 버전으로 개선되어 다양한 형식 옵션으로 RGBA 지원이 추가되었습니다. 이전 버전과의 호환성을 유지하면서 더 나은 품질과 알파 채널 지원을 제공합니다.
지원하다: OpenGL ES 3.0+, 불칸
압축비: 형식에 따라 4:1 ~ 8:1
PKM 형식 변형
PKM에는 다양한 ETC 형식 유형이 포함될 수 있습니다.
ETC1 RGB
원본 형식, RGB만, 알파 채널 없음
ETC2 RGB
ETC1보다 더 나은 품질로 향상된 RGB 압축
ETC2 RGBA
8:1 압축(픽셀당 8비트)으로 전체 RGBA 지원
ETC2 RGB + 펀치스루 알파
1비트 알파의 RGB, 4:1 압축 유지
PKM/ETC의 장점
범용 Android 지원
ETC1은 모든 Android 장치에서 지원이 보장되므로 Android 개발을 위한 가장 이식성이 뛰어난 압축 형식입니다.
고정 압축비
일관된 4:1 또는 8:1 압축 비율로 메모리 사용량을 예측할 수 있어 메모리 예산 계산이 단순화됩니다.
좋은 품질 대 크기 비율
ETC2는 DXT/BCn과 같은 데스크톱 형식에 필적하는 대부분의 텍스처 유형에 탁월한 시각적 품질을 제공합니다.
하드웨어 디코딩
렌더링 중 CPU 오버헤드 없이 GPU를 직접 압축 해제하여 효율적인 텍스처 샘플링을 가능하게 합니다.
제한 사항 및 고려 사항
ETC1 품질 제한
ETC1은 고주파 디테일 또는 부드러운 그라데이션이 있는 텍스처에 눈에 띄는 아티팩트를 표시할 수 있습니다. 더 나은 품질을 위해 ETC2 사용을 고려해보세요.
ETC1에는 알파가 없습니다.
ETC1은 알파 채널을 지원하지 않습니다. OpenGL ES 2.0 장치를 대상으로 하는 경우 ETC2 RGBA를 사용하거나 알파를 별도로 저장해야 합니다.
제한된 고급 기능
PKM은 밉맵, 큐브맵 또는 텍스처 배열을 지원하지 않습니다. 이러한 고급 기능을 사용하려면 KTX 또는 KTX2 형식을 사용하세요.
PKM 형식을 사용하는 방법
프로젝트에서 PKM 파일을 사용하는 것은 간단합니다.
PKM으로 인코딩
- PNG/JPG 이미지를 업로드하세요(2의 거듭제곱 또는 4의 배수 크기여야 함).
- 필요에 따라 ETC1 RGB 또는 ETC2 RGB/RGBA 중에서 선택하세요.
- 생성된 .pkm 파일을 다운로드하여 프로젝트에 통합하세요.
PKM 파일 디코딩
- .pkm 파일을 업로드하여 내용을 확인하세요.
- 압축이 풀린 텍스처를 미리 보고 품질을 확인하세요
- 텍스처를 편집하거나 검사해야 하는 경우 PNG로 내보내기
모범 사례
- 모든 Android 장치(OpenGL ES 2.0+)에서 최대 호환성을 위해 ETC1 RGB를 사용하십시오.
- 알파 채널이 필요한 최신 장치(OpenGL ES 3.0+)를 대상으로 하는 경우 ETC2 RGBA를 선호합니다.
- 최상의 품질을 위해 텍스처 크기가 4의 배수(ETC1) 또는 2의 거듭제곱인지 확인하세요.
- 구형 장치에서 알파가 필요한 텍스처의 경우 별도의 회색조 텍스처 사용을 고려하세요.
- 실제 대상 장치에서 압축된 텍스처를 테스트합니다. 품질 인식은 콘텐츠 유형에 따라 다릅니다.
결론
ETC/ETC2 압축을 사용하는 PKM은 Android 및 모바일 OpenGL ES 개발을 위한 표준 선택입니다. 보편적인 지원, 예측 가능한 성능 및 우수한 품질로 인해 모바일 텍스처 압축의 탁월한 기본값이 됩니다.
당사의 온라인 PKM 인코더 및 디코더 도구를 사용하면 명령줄 도구나 SDK를 설치하지 않고도 ETC 압축 텍스처로 쉽게 작업할 수 있습니다. 새로운 텍스처를 생성하든 기존 텍스처를 검사하든 이러한 도구는 모바일 그래픽 파이프라인을 최적화하는 데 도움이 됩니다.
추가 자료 및 참고 자료
ETC 및 PKM 형식에 대해 자세히 알아보세요.
- ETC 텍스처 압축(Khronos) - 공식 OpenGL ES 사양 및 ETC 형식 문서
- Ericsson 텍스처 압축(Wikipedia) - ETC 압축 알고리즘의 역사 및 기술 세부 사항
- Android 그래픽: 텍스처 압축 - 텍스처 압축 형식에 대한 Android 공식 가이드
- PKM 파일 형식 사양 - PKM 컨테이너 형식에 대한 기술 사양