Volver al blog
Formatos

Formato KTX: la guía completa del contenedor de texturas Khronos

20 lectura mínima

KTX (Khronos Texture) es el estándar abierto oficial para formatos de contenedores de texturas desarrollado y mantenido por Khronos Group. Como formato independiente del proveedor y libre de regalías, diseñado específicamente para API de gráficos modernos como OpenGL, OpenGL ES y Vulkan, KTX proporciona una forma estandarizada de almacenar y transportar texturas comprimidas a través de diferentes plataformas y aplicaciones. Con dos versiones principales: KTX1 para aplicaciones OpenGL heredadas y KTX2 para flujos de trabajo modernos basados ​​en Vulkan, KTX sirve como columna vertebral para los canales de activos de textura en el desarrollo de gráficos profesionales.

¿Qué es el formato KTX?

KTX es un formato contenedor diseñado para almacenar datos de textura de manera que puedan ser consumidos directamente por el hardware de gráficos. A diferencia de los formatos de imagen como PNG o JPEG, KTX está optimizado específicamente para la carga de texturas de GPU y admite varios formatos de compresión, incluidos ETC, ASTC, BCn y PVRTC. El formato incluye metadatos esenciales para una interpretación adecuada de las texturas, lo que lo hace ideal para aplicaciones de gráficos multiplataforma.

El formato se creó originalmente para abordar la fragmentación en los formatos de compresión de texturas en diferentes plataformas y API. Antes de KTX, los desarrolladores tenían que manejar múltiples formatos propietarios como DDS para DirectX, PVR para PowerVR y varios formatos específicos de plataforma. KTX proporciona una solución unificada que funciona en OpenGL, OpenGL ES y Vulkan, con capacidades de carga directa de GPU.

KTX ha evolucionado significativamente desde su introducción, y KTX2 representa un gran avance en términos de características y capacidades. La versión más nueva agrega soporte para esquemas de supercompresión como Basis Universal, manejo mejorado de metadatos a través del Descriptor de formato de datos (DFD) y mejor soporte para funciones de textura modernas como matrices de texturas, texturas 3D y mapas de cubos.

Características clave del formato KTX

Estándar de Khronos

Estándar oficial del Grupo Khronos que garantiza una amplia adopción en la industria y compatibilidad multiplataforma

Formato independiente

Admite prácticamente cualquier formato de compresión de texturas, incluidos ETC, ASTC, BCn, PVRTC y formatos sin comprimir.

Metadatos enriquecidos

Soporte integral de metadatos que incluye orientación, espacio de color, configuraciones de compresión y pares clave-valor personalizados.

Soporte completo de mapas Mip

Soporte nativo para cadenas de mapas MIP, matrices de texturas, texturas 3D y mapas de cubos.

Tipos de textura avanzados

Soporte para matrices de texturas, texturas 3D, mapas de cubos y otros tipos de texturas avanzadas

Multiplataforma

Funciona perfectamente en Windows, macOS, Linux, iOS, Android y plataformas web.

Comparación de versiones KTX

Comprender las diferencias entre KTX1 y KTX2 es crucial para elegir el formato correcto para su aplicación:

KTX1 (heredado)

El formato KTX original diseñado para aplicaciones OpenGL y OpenGL ES. Estructura simple basada en parámetros de textura OpenGL.

KTX1 utiliza una estructura de encabezado sencilla seguida de datos clave-valor y luego datos de imagen. Es compatible con versiones anteriores de OpenGL y proporciona capacidades básicas de almacenamiento de texturas. Si bien sigue siendo ampliamente compatible, carece de las funciones avanzadas de KTX2.

KTX2 (moderno)

El formato KTX moderno diseñado para Vulkan y aplicaciones gráficas de próxima generación. Funciones mejoradas y soporte de supercompresión.

KTX2 introduce mejoras significativas que incluyen supercompresión Basis Universal, descriptores de formato de datos (DFD), índice de nivel para un acceso eficiente a los datos y mejor soporte para matrices de texturas y texturas 3D. Es la opción recomendada para nuevos proyectos.

Formatos de compresión admitidos

KTX sirve como contenedor para varios formatos de compresión, lo que lo hace increíblemente versátil:

ETC (compresión de textura Ericsson)

Compresión estándar para dispositivos móviles, con ETC1 para RGB y ETC2 para compresión RGBA

ASTC (Compresión de textura escalable adaptativa)

Compresión moderna y de alta calidad que admite varios tamaños de bloque, desde 4x4 hasta 12x12 píxeles

BCn (compresión de bloques)

Formatos de compresión DirectX, incluidos BC1-BC7 para juegos de escritorio y aplicaciones de Windows

PVRTC (Compresión de textura PowerVR)

Compresión específica de PowerVR para iOS y sistemas integrados con variantes de 2bpp y 4bpp

Formatos sin comprimir

Formatos estándar sin comprimir como RGB8, RGBA8 y varios formatos HDR

Estructura de archivos KTX

Los archivos KTX siguen un formato estructurado con tres componentes principales:

Encabezado de archivo

Contiene identificación de formato, información de versión y metadatos de textura básicos como dimensiones y formato.

Datos de valor clave

Sección de metadatos que contiene pares clave-valor personalizados para información de textura adicional

Datos de imagen

Datos de textura reales comprimidos o sin comprimir organizados por niveles de mapa MIP y capas de matriz

Estructura del encabezado KTX1

KTX1 utiliza un encabezado de 64 bytes basado en parámetros de textura OpenGL:

Identificador (12 bytes)

"«KTX 11»\r\n\x1A\n" - Identificador de formato de archivo para validación

Endianidad (4 bytes)

Especifica el orden de los bytes: 0x04030201 para little-endian, 0x01020304 para big-endian

tipogl (4 bytes)

Tipo de datos OpenGL (por ejemplo, GL_UNSIGNED_BYTE): 0 para formatos comprimidos

formato gl (4 bytes)

Formato OpenGL (por ejemplo, GL_RGB): 0 para formatos comprimidos

glInternalFormat (4 bytes)

Formato interno OpenGL (por ejemplo, GL_COMPRESSED_RGB8_ETC2)

glBaseInternalFormat (4 bytes)

Formato OpenGL base para compatibilidad con versiones anteriores de OpenGL

Ancho de píxel (4 bytes)

Ancho de textura en píxeles

altura de píxel (4 bytes)

Altura de la textura en píxeles (0 para texturas 1D)

profundidad de píxeles (4 bytes)

Profundidad de textura en píxeles (0 para texturas 2D)

númeroDeElementosArray (4 bytes)

Número de elementos de la matriz (0 para texturas que no son de matriz)

número de caras (4 bytes)

Número de caras (6 para mapas de cubos, 1 para texturas regulares)

númeroDeMipmapLevels (4 bytes)

Número de niveles de mapa mip (1 para no tener mapas mip)

bytesOfKeyValueData (4 bytes)

Tamaño de la sección de datos clave-valor en bytes

Mejoras en la estructura del KTX2

KTX2 presenta varios componentes estructurales nuevos para una funcionalidad mejorada:

Encabezado mejorado

Estructura de encabezado mejorada con información de versión, identificadores de formato e indicadores de tamaño de datos

Índice de nivel

Sistema de indexación eficiente para acceso rápido a niveles de mapas MIP específicos y datos de textura.

Descriptor de formato de datos (DFD)

Sistema integral de descripción de formatos que reemplaza las constantes del formato OpenGL.

Datos de valor clave

Sistema de metadatos mejorado con soporte para internacionalización y tipos de datos complejos.

Datos globales de supercompresión

Datos globales para esquemas de supercompresión como Basis Universal

Metadatos y datos de valores clave

Los archivos KTX pueden contener metadatos extensos a través de la sección de datos clave-valor:

Orientación de textura

Especifica la orientación de la textura (arriba a la izquierda, abajo a la derecha, etc.) para una representación adecuada.

Información de formato

Detalles sobre el formato de compresión, la configuración de calidad y los parámetros de codificación

Información del escritor

Información sobre la herramienta o aplicación que creó el archivo KTX

Configuración de compresión

Parámetros de compresión específicos y configuraciones de calidad utilizadas.

Espacio de color

Información del espacio de color, incluidos perfiles de color sRGB, lineales y HDR

Flujo de trabajo de desarrollo de KTX

La creación y gestión de texturas KTX implica estas etapas clave:

1

Preparación de activos de origen

Prepare imágenes de origen de alta calidad con dimensiones y perfiles de color adecuados

2

Selección de formato

Elija el formato de compresión adecuado según las plataformas de destino y los requisitos de calidad.

3

Compresión de textura

Utilice herramientas como toktx o canales de activos para comprimir imágenes de origen en formato KTX

4

Adición de metadatos

Agregue metadatos apropiados, incluida la orientación, el espacio de color y las propiedades personalizadas.

5

Validación de archivos

Valide los archivos KTX para comprobar su compatibilidad y corrección con las plataformas de destino

6

Integración de aplicaciones

Integre la carga y el manejo de KTX en su aplicación de gráficos

Ventajas clave del formato KTX

Estándar de la industria

Estándar del Grupo Khronos que garantiza soporte a largo plazo y una amplia adopción en la industria

Flexibilidad de formato

Admite prácticamente cualquier formato de compresión, lo que lo hace versátil y preparado para el futuro.

Metadatos enriquecidos

Sistema integral de metadatos para una adecuada interpretación y gestión de texturas.

Funciones avanzadas

Soporte para funciones de textura modernas como matrices, texturas 3D y supercompresión.

Multiplataforma

Funciona en todas las plataformas principales sin modificaciones ni conversiones

Listo para el futuro

KTX2 y el soporte de supercompresión garantizan la compatibilidad con futuras tecnologías gráficas

Casos de uso comunes

Aplicaciones vulcanas

Formato principal para aplicaciones Vulkan modernas con capacidades de carga directa de GPU

Aplicaciones OpenGL

Formato de textura multiplataforma para aplicaciones OpenGL y OpenGL ES

Aplicaciones WebGL

Aplicaciones gráficas basadas en web a través de cargadores de texturas KTX y WebGL.

Desarrollo de juegos

Desarrollo de juegos profesionales con canales de activos de texturas multiplataforma

Aplicaciones de realidad virtual y realidad aumentada

Aplicaciones de realidad virtual y aumentada que requieren una carga de texturas eficiente

Desarrollo Móvil

Aplicaciones iOS y Android con formatos de compresión de texturas optimizados.

KTX frente a otros formatos

Comprender cómo se compara KTX con otros formatos de textura:

KTX y DDS

KTX es multiplataforma e independiente de API, mientras que DDS es específico de DirectX y está centrado en Windows.

KTX frente a PVR

KTX admite múltiples formatos de compresión mientras que PVR está optimizado para GPU PowerVR e iOS

KTX1 frente a KTX2

KTX2 ofrece supercompresión, mejores metadatos y funciones modernas sobre el KTX1 heredado

KTX y Basis Universal

KTX es un formato contenedor, mientras que Basis Universal es un formato de compresión que se puede almacenar en KTX2.

Herramientas y recursos de desarrollo

Herramienta toktx

Herramienta oficial de línea de comandos para crear y convertir archivos KTX desde varios formatos de imagen

Paquete de herramientas KTX

Conjunto completo de herramientas que incluyen toktx, ktxinfo, ktxcheck y otras utilidades

SDK de Vulcano

El SDK oficial de Vulkan incluye soporte KTX y utilidades de carga

Bibliotecas OpenGL

Varias bibliotecas y marcos OpenGL con soporte KTX integrado

Soporte de unidad KTX

El motor Unity admite la carga de texturas KTX a través de complementos y canales de activos

Motor irreal KTX

Unreal Engine proporciona soporte de texturas KTX a través de configuraciones de compresión de texturas

Mejores prácticas para el desarrollo de KTX

Utilice KTX2 para nuevos proyectos para aprovechar las funciones modernas y las capacidades de supercompresión.

Elija el formato de compresión adecuado según las plataformas de destino: ETC para dispositivos móviles, BCn para computadoras de escritorio

Incluya metadatos completos para garantizar una interpretación adecuada de las texturas en todas las plataformas.

Valide los archivos KTX en el hardware de destino en las primeras etapas del desarrollo para evitar problemas de compatibilidad.

Utilice la configuración de mapa MIP adecuada para optimizar el rendimiento de renderizado a diferentes distancias de visualización.

Considere utilizar la supercompresión Basis Universal para la implementación multiplataforma con tamaños de archivo óptimos

Pruebe el rendimiento de carga de texturas con el hardware de destino y las condiciones de red reales.

Implementar mecanismos de respaldo y manejo de errores adecuados para formatos o funciones no compatibles

Rutas de migración y actualización

Directrices para migrar a KTX o actualizar entre versiones:

Migración de KTX1 a KTX2

Utilice toktx con el indicador --ktx2 para convertir archivos KTX1 heredados al formato KTX2 moderno

Conversión de DDS a KTX

Utilice toktx o herramientas de conversión de texturas para migrar texturas DirectX al formato KTX multiplataforma

Conversión de PVR a KTX

Convierta texturas PVR específicas de iOS a KTX para compatibilidad multiplataforma

Agregar compresión universal básica

Utilice toktx con las opciones de Basis Universal para agregar supercompresión a archivos KTX2

¿Por qué elegir KTX2?

KTX2 ofrece importantes ventajas sobre KTX1 y otros formatos:

Soporte universal básico

Soporte nativo para la supercompresión Basis Universal que permite la implementación de texturas universales

Compresión mejorada

Relaciones de compresión y calidad mejoradas a través de esquemas de compresión modernos.

Esquemas de supercompresión

Soporte para varios formatos de supercompresión más allá de Basis Universal

Descriptores de formato de datos

Sistema integral de descripción de formatos que reemplaza las constantes OpenGL heredadas

Diseño preparado para el futuro

Diseñado para API de gráficos y tecnologías de compresión modernas y futuras.

Conclusión

El formato KTX representa el estándar de la industria para la gestión de texturas multiplataforma y proporciona a los desarrolladores una solución sólida, flexible y preparada para el futuro para canalizaciones de activos de texturas. Ya sea que utilice KTX1 heredado para aplicaciones OpenGL o KTX2 moderno para desarrollo basado en Vulkan, KTX ofrece las herramientas y funciones necesarias para el desarrollo de gráficos profesionales.

A medida que la industria gráfica continúa evolucionando hacia el desarrollo multiplataforma y tecnologías de compresión más avanzadas, KTX2 con su soporte para la supercompresión Basis Universal y características modernas se posiciona como la principal opción para la gestión de texturas. Comprender el formato KTX y sus capacidades es esencial para cualquier desarrollador que trabaje con aplicaciones gráficas modernas.

Lecturas y recursos adicionales

Amplíe sus conocimientos con estos recursos autorizados:

Pruebe nuestras herramientas