블로그로 돌아가기
형식

KTX 형식: Khronos 텍스처 컨테이너에 대한 전체 가이드

20 분 읽음

KTX(Khronos Texture)는 Khronos Group이 개발하고 유지 관리하는 텍스처 컨테이너 형식에 대한 공식 개방형 표준입니다. OpenGL, OpenGL ES, Vulkan과 같은 최신 그래픽 API용으로 특별히 설계된 로열티가 없고 공급업체 중립적인 형식인 KTX는 다양한 플랫폼과 애플리케이션에서 압축된 텍스처를 저장하고 전송하는 표준화된 방법을 제공합니다. 레거시 OpenGL 애플리케이션용 KTX1과 최신 Vulkan 기반 워크플로우용 KTX2의 두 가지 주요 버전을 갖춘 KTX는 전문 그래픽 개발에서 텍스처 자산 파이프라인의 백본 역할을 합니다.

KTX 형식이란 무엇입니까?

KTX는 그래픽 하드웨어에서 직접 사용할 수 있는 방식으로 텍스처 데이터를 저장하도록 설계된 컨테이너 형식입니다. PNG 또는 JPEG와 같은 이미지 형식과 달리 KTX는 GPU 텍스처 로딩에 특별히 최적화되어 ETC, ASTC, BCn 및 PVRTC를 포함한 다양한 압축 형식을 지원합니다. 이 형식에는 적절한 텍스처 해석을 위한 필수 메타데이터가 포함되어 있어 크로스 플랫폼 그래픽 애플리케이션에 이상적입니다.

이 형식은 원래 다양한 플랫폼과 API에서 텍스처 압축 형식의 조각화를 해결하기 위해 만들어졌습니다. KTX 이전에 개발자는 DirectX용 DDS, PowerVR용 PVR 및 다양한 플랫폼별 형식과 같은 여러 독점 형식을 처리해야 했습니다. KTX는 직접 GPU 로딩 기능을 통해 OpenGL, OpenGL ES 및 Vulkan에서 작동하는 통합 솔루션을 제공합니다.

KTX는 도입 이후 눈에 띄게 발전해 왔으며, KTX2는 기능과 기능 측면에서 큰 도약을 나타냅니다. 최신 버전에는 Basis Universal과 같은 초압축 방식에 대한 지원, DFD(Data Format Descriptor)를 통한 향상된 메타데이터 처리, 텍스처 배열, 3D 텍스처 및 큐브맵과 같은 최신 텍스처 기능에 대한 향상된 지원이 추가되었습니다.

KTX 형식의 주요 특징

크로노스 스탠다드

광범위한 업계 채택과 플랫폼 간 호환성을 보장하는 공식 Khronos 그룹 표준

형식에 구애받지 않음

ETC, ASTC, BCn, PVRTC 및 비압축 형식을 포함한 거의 모든 텍스처 압축 형식을 지원합니다.

풍부한 메타데이터

방향, 색상 공간, 압축 설정 및 사용자 정의 키-값 쌍을 포함한 포괄적인 메타데이터 지원

완전한 밉맵 지원

밉맵 체인, 텍스처 배열, 3D 텍스처 및 큐브맵에 대한 기본 지원

고급 텍스처 유형

텍스처 배열, 3D 텍스처, 큐브맵 및 기타 고급 텍스처 유형 지원

크로스 플랫폼

Windows, macOS, Linux, iOS, Android 및 웹 플랫폼에서 원활하게 작동합니다.

KTX 버전 비교

KTX1과 KTX2의 차이점을 이해하는 것은 애플리케이션에 적합한 형식을 선택하는 데 중요합니다.

KTX1(레거시)

OpenGL 및 OpenGL ES 애플리케이션용으로 설계된 원래 KTX 형식입니다. OpenGL 텍스처 매개변수를 기반으로 하는 간단한 구조입니다.

KTX1은 키-값 데이터, 이미지 데이터 순으로 이어지는 간단한 헤더 구조를 사용합니다. 이전 OpenGL 버전과 호환되며 기본적인 텍스처 저장 기능을 제공합니다. 여전히 널리 지원되지만 KTX2의 고급 기능은 부족합니다.

KTX2(현대)

Vulkan 및 차세대 그래픽 애플리케이션용으로 설계된 최신 KTX 형식입니다. 향상된 기능 및 초압축 지원.

KTX2에는 Basis Universal Supercompression, DFD(Data Format Descriptor), 효율적인 데이터 액세스를 위한 레벨 인덱스, 텍스처 배열 및 3D 텍스처에 대한 향상된 지원 등 중요한 개선 사항이 도입되었습니다. 새로운 프로젝트에 권장되는 선택입니다.

지원되는 압축 형식

KTX는 다양한 압축 형식의 컨테이너 역할을 하여 매우 다양하게 사용할 수 있습니다.

ETC(에릭슨 텍스처 압축)

모바일 장치용 표준 압축(RGB용 ETC1 및 RGBA 압축용 ETC2)

ASTC(적응형 확장 가능 텍스처 압축)

4x4에서 12x12픽셀까지 다양한 블록 크기를 지원하는 현대적인 고품질 압축

BCn(블록 압축)

데스크탑 게임 및 Windows 응용 프로그램용 BC1-BC7을 포함한 DirectX 압축 형식

PVRTC(PowerVR 텍스처 압축)

2bpp 및 4bpp 변형이 포함된 iOS 및 임베디드 시스템용 PowerVR 특정 압축

비압축 형식

RGB8, RGBA8 및 다양한 HDR 형식과 같은 표준 비압축 형식

KTX 파일 구조

KTX 파일은 세 가지 주요 구성 요소로 구성된 구조적 형식을 따릅니다.

파일 헤더

형식 식별, 버전 정보, 치수 및 형식과 같은 기본 텍스처 메타데이터가 포함되어 있습니다.

키-값 데이터

추가 텍스처 정보에 대한 사용자 정의 키-값 쌍이 포함된 메타데이터 섹션

이미지 데이터

밉맵 수준 및 배열 레이어로 구성된 실제 압축 또는 압축되지 않은 텍스처 데이터

KTX1 헤더 구조

KTX1은 OpenGL 텍스처 매개변수를 기반으로 하는 64바이트 헤더를 사용합니다.

식별자(12바이트)

"«KTX 11»\r\n\x1A\n" - 유효성 검사를 위한 파일 형식 식별자

엔디안(4바이트)

바이트 순서 지정: little-endian의 경우 0x04030201, big-endian의 경우 0x01020304

glType(4바이트)

OpenGL 데이터 유형(예: GL_UNSIGNED_BYTE) - 압축 형식의 경우 0

glFormat(4바이트)

OpenGL 형식(예: GL_RGB) - 압축 형식의 경우 0

glInternalFormat(4바이트)

OpenGL 내부 형식(예: GL_COMPRESSED_RGB8_ETC2)

glBaseInternalFormat(4바이트)

이전 OpenGL 버전과의 호환성을 위한 기본 OpenGL 형식

픽셀 너비(4바이트)

픽셀 단위의 텍스처 너비

픽셀 높이(4바이트)

픽셀 단위의 텍스처 높이(1D 텍스처의 경우 0)

픽셀 깊이(4바이트)

픽셀 단위의 텍스처 깊이(2D 텍스처의 경우 0)

numberOfArrayElements(4바이트)

배열 요소 수(배열이 아닌 텍스처의 경우 0)

numberOfFaces(4바이트)

면 수(큐브맵의 경우 6개, 일반 텍스처의 경우 1개)

numberOfMipmapLevels(4바이트)

밉맵 수준 수(밉맵이 없는 경우 1)

bytesOfKeyValueData(4바이트)

키-값 데이터 섹션의 크기(바이트)

KTX2 구조 개선

KTX2에는 향상된 기능을 위해 몇 가지 새로운 구조 구성 요소가 도입되었습니다.

향상된 헤더

버전 정보, 형식 식별자 및 데이터 크기 표시기로 헤더 구조가 개선되었습니다.

레벨 지수

특정 밉맵 수준 및 텍스처 데이터에 빠르게 액세스할 수 있는 효율적인 인덱싱 시스템

데이터 형식 설명자(DFD)

OpenGL 형식 상수를 대체하는 포괄적인 형식 설명 시스템

키-값 데이터

국제화 및 복잡한 데이터 유형을 지원하는 향상된 메타데이터 시스템

초압축 글로벌 데이터

Basis Universal과 같은 초압축 방식에 대한 글로벌 데이터

메타데이터 및 키-값 데이터

KTX 파일은 키-값 데이터 섹션을 통해 광범위한 메타데이터를 포함할 수 있습니다.

텍스처 방향

적절한 렌더링을 위해 텍스처 방향(왼쪽 위, 오른쪽 아래 등)을 지정합니다.

형식 정보

압축 형식, 품질 설정 및 인코딩 매개변수에 대한 세부정보

작가 정보

KTX 파일을 생성한 도구 또는 응용 프로그램에 대한 정보

압축 설정

사용되는 특정 압축 매개변수 및 품질 설정

색 공간

sRGB, 선형 및 HDR 색상 프로필을 포함한 색상 공간 정보

KTX 개발 워크플로우

KTX 텍스처 생성 및 관리에는 다음과 같은 주요 단계가 포함됩니다.

1

소스 자산 준비

적절한 크기와 색상 프로필을 갖춘 고품질 소스 이미지 준비

2

형식 선택

대상 플랫폼 및 품질 요구 사항에 따라 적절한 압축 형식을 선택하십시오.

3

텍스처 압축

toktx 또는 자산 파이프라인과 같은 도구를 사용하여 소스 이미지를 KTX 형식으로 압축

4

메타데이터 추가

방향, 색상 공간, 사용자 정의 속성을 포함한 적절한 메타데이터 추가

5

파일 유효성 검사

대상 플랫폼과의 호환성 및 정확성을 위해 KTX 파일을 검증합니다.

6

애플리케이션 통합

KTX 로딩 및 처리를 그래픽 애플리케이션에 통합

KTX 형식의 주요 장점

산업 표준

장기적인 지원과 폭넓은 산업 채택을 보장하는 Khronos 그룹 표준

형식 유연성

거의 모든 압축 형식을 지원하여 미래에도 사용할 수 있고 다용도로 사용할 수 있습니다.

풍부한 메타데이터

적절한 텍스처 해석 및 관리를 위한 포괄적인 메타데이터 시스템

고급 기능

배열, 3D 텍스처, 초압축과 같은 최신 텍스처 기능 지원

크로스 플랫폼

수정이나 변환 없이 모든 주요 플랫폼에서 작동

미래 지향적

KTX2 및 초압축 지원으로 미래 그래픽 기술과의 호환성 보장

일반적인 사용 사례

Vulkan 애플리케이션

직접 GPU 로딩 기능을 갖춘 최신 Vulkan 애플리케이션의 기본 형식

OpenGL 애플리케이션

OpenGL 및 OpenGL ES 애플리케이션을 위한 크로스 플랫폼 텍스처 형식

WebGL 애플리케이션

KTX 텍스처 로더 및 WebGL을 통한 웹 기반 그래픽 애플리케이션

게임 개발

크로스 플랫폼 텍스처 자산 파이프라인을 사용한 전문 게임 개발

VR/AR 애플리케이션

효율적인 텍스처 로딩이 필요한 가상 및 증강 현실 애플리케이션

모바일 개발

최적화된 텍스처 압축 형식을 갖춘 iOS 및 Android 애플리케이션

KTX와 다른 형식

KTX가 다른 텍스처 형식과 비교되는 방식 이해:

KTX 대 DDS

KTX는 크로스 플랫폼이며 API에 구애받지 않지만 DDS는 DirectX 전용이며 Windows 중심입니다.

KTX 대 PVR

KTX는 다양한 압축 형식을 지원하며 PVR은 PowerVR GPU 및 iOS에 최적화되어 있습니다.

KTX1 vs KTX2

KTX2는 레거시 KTX1에 비해 초압축, 더 나은 메타데이터 및 최신 기능을 제공합니다.

KTX vs 베이시스 유니버설

KTX는 컨테이너 형식이고 Basis Universal은 KTX2에 저장할 수 있는 압축 형식입니다.

개발 도구 및 리소스

toktx 도구

다양한 이미지 형식에서 KTX 파일을 생성하고 변환하기 위한 공식 명령줄 도구

KTX-도구 패키지

toktx, ktxinfo, ktxcheck 및 기타 유틸리티를 포함한 완벽한 도구 모음

불칸 SDK

공식 Vulkan SDK에는 KTX 지원 및 로딩 유틸리티가 포함되어 있습니다.

OpenGL 라이브러리

KTX 지원이 내장된 다양한 OpenGL 라이브러리 및 프레임워크

유니티 KTX 지원

Unity 엔진은 플러그인과 자산 파이프라인을 통해 KTX 텍스처 로딩을 지원합니다.

언리얼 엔진 KTX

언리얼 엔진은 텍스처 압축 설정을 통해 KTX 텍스처 지원을 제공합니다.

KTX 개발 모범 사례

최신 기능과 초압축 기능을 활용하려면 새로운 프로젝트에 KTX2를 사용하세요.

대상 플랫폼에 따라 적절한 압축 형식 선택: 모바일용 ETC, 데스크탑용 BCn

플랫폼 전반에서 적절한 텍스처 해석을 보장하기 위해 포괄적인 메타데이터를 포함합니다.

호환성 문제를 방지하기 위해 개발 초기에 대상 하드웨어에서 KTX 파일을 검증합니다.

다양한 보기 거리에서 렌더링 성능을 최적화하려면 적절한 밉맵 설정을 사용하세요.

최적의 파일 크기로 크로스 플랫폼 배포를 위해 Basis Universal 슈퍼압축 사용을 고려하세요.

실제 대상 하드웨어 및 네트워크 조건으로 텍스처 로딩 성능 테스트

지원되지 않는 형식이나 기능에 대한 적절한 오류 처리 및 대체 메커니즘을 구현합니다.

마이그레이션 및 업그레이드 경로

KTX로 마이그레이션하거나 버전 간 업그레이드에 대한 지침:

KTX1에서 KTX2로 환승

--ktx2 플래그와 함께 toktx를 사용하여 레거시 KTX1 파일을 최신 KTX2 형식으로 변환

DDS에서 KTX로 전환

toktx 또는 텍스처 변환 도구를 사용하여 DirectX 텍스처를 크로스 플랫폼 KTX 형식으로 마이그레이션

PVR에서 KTX로 전환

크로스 플랫폼 호환성을 위해 iOS 전용 PVR 텍스처를 KTX로 변환

기본 범용 압축 추가

Basis Universal 옵션과 함께 toktx를 사용하여 KTX2 파일에 초압축 추가

KTX2를 선택하는 이유는 무엇입니까?

KTX2는 KTX1 및 기타 형식에 비해 상당한 이점을 제공합니다.

기본 범용 지원

범용 텍스처 배포를 가능하게 하는 Basis Universal 슈퍼압축에 대한 기본 지원

향상된 압축

최신 압축 방식을 통해 압축률과 품질이 향상되었습니다.

초압축 방식

Basis Universal을 넘어서는 다양한 초압축 형식 지원

데이터 형식 설명자

레거시 OpenGL 상수를 대체하는 포괄적인 형식 설명 시스템

미래 지향적인 디자인

현대적이고 미래적인 그래픽 API 및 압축 기술을 위해 설계되었습니다.

결론

KTX 형식은 크로스 플랫폼 텍스처 관리에 대한 업계 표준을 나타내며 개발자에게 텍스처 자산 파이프라인을 위한 강력하고 유연하며 미래 지향적인 솔루션을 제공합니다. OpenGL 애플리케이션용 레거시 KTX1을 사용하든 Vulkan 기반 개발용 최신 KTX2를 사용하든 KTX는 전문 그래픽 개발에 필요한 도구와 기능을 제공합니다.

그래픽 산업이 크로스 플랫폼 개발 및 고급 압축 기술을 향해 계속 발전함에 따라 Basis Universal 수퍼압축 및 최신 기능을 지원하는 KTX2는 텍스처 관리를 위한 최고의 선택으로 자리매김하고 있습니다. KTX 형식과 그 기능을 이해하는 것은 최신 그래픽 애플리케이션을 사용하는 모든 개발자에게 필수적입니다.

추가 자료 및 자료

다음과 같은 권위 있는 리소스를 통해 지식을 확장하세요.

우리의 도구를 사용해 보세요