Voltar ao blog
Formatos

Formato KTX: o guia completo para contêiner de textura Khronos

20 minutos de leitura

KTX (Khronos Texture) é o padrão aberto oficial para formatos de contêineres de textura desenvolvidos e mantidos pelo Grupo Khronos. Como um formato isento de royalties e independente de fornecedor, projetado especificamente para APIs gráficas modernas como OpenGL, OpenGL ES e Vulkan, o KTX fornece uma maneira padronizada de armazenar e transportar texturas compactadas em diferentes plataformas e aplicativos. Com duas versões principais – KTX1 para aplicativos OpenGL legados e KTX2 para fluxos de trabalho modernos baseados em Vulkan – o KTX serve como espinha dorsal para pipelines de ativos de textura no desenvolvimento gráfico profissional.

O que é o formato KTX?

KTX é um formato de contêiner projetado para armazenar dados de textura de uma forma que possa ser consumido diretamente pelo hardware gráfico. Ao contrário de formatos de imagem como PNG ou JPEG, o KTX é otimizado especificamente para carregamento de textura de GPU, suportando vários formatos de compactação, incluindo ETC, ASTC, BCn e PVRTC. O formato inclui metadados essenciais para uma interpretação adequada de texturas, tornando-o ideal para aplicações gráficas multiplataforma.

O formato foi originalmente criado para lidar com a fragmentação em formatos de compactação de textura em diferentes plataformas e APIs. Antes do KTX, os desenvolvedores tinham que lidar com vários formatos proprietários, como DDS para DirectX, PVR para PowerVR e vários formatos específicos de plataforma. KTX fornece uma solução unificada que funciona em OpenGL, OpenGL ES e Vulkan, com recursos de carregamento direto de GPU.

O KTX evoluiu significativamente desde a sua introdução, com o KTX2 representando um grande avanço em termos de recursos e capacidades. A versão mais recente adiciona suporte para esquemas de supercompressão como Basis Universal, manipulação aprimorada de metadados por meio do Data Format Descriptor (DFD) e melhor suporte para recursos de textura modernos, como matrizes de textura, texturas 3D e mapas de cubos.

Principais recursos do formato KTX

Padrão Khronos

Padrão oficial do Grupo Khronos garantindo ampla adoção na indústria e compatibilidade entre plataformas

Agnóstico de Formato

Suporta praticamente qualquer formato de compactação de textura, incluindo ETC, ASTC, BCn, PVRTC e formatos não compactados

Metadados ricos

Suporte abrangente a metadados, incluindo orientação, espaço de cores, configurações de compactação e pares de valores-chave personalizados

Suporte completo para Mipmap

Suporte nativo para cadeias mipmap, matrizes de textura, texturas 3D e mapas cúbicos

Tipos de textura avançados

Suporte para matrizes de textura, texturas 3D, mapas de cubos e outros tipos de textura avançados

Plataforma cruzada

Funciona perfeitamente em plataformas Windows, macOS, Linux, iOS, Android e web

Comparação de versões KTX

Compreender as diferenças entre KTX1 e KTX2 é crucial para escolher o formato certo para sua aplicação:

KTX1 (legado)

O formato KTX original projetado para aplicativos OpenGL e OpenGL ES. Estrutura simples baseada em parâmetros de textura OpenGL.

KTX1 usa uma estrutura de cabeçalho simples seguida por dados de valor-chave e, em seguida, dados de imagem. É compatível com versões mais antigas do OpenGL e fornece recursos básicos de armazenamento de texturas. Embora ainda seja amplamente suportado, faltam os recursos avançados do KTX2.

KTX2 (Moderno)

O formato KTX moderno projetado para aplicações gráficas Vulkan e de próxima geração. Recursos aprimorados e suporte para supercompressão.

KTX2 apresenta melhorias significativas, incluindo supercompressão Basis Universal, descritores de formato de dados (DFD), índice de nível para acesso eficiente aos dados e melhor suporte para matrizes de textura e texturas 3D. É a escolha recomendada para novos projetos.

Formatos de compactação suportados

KTX serve como contêiner para vários formatos de compactação, tornando-o incrivelmente versátil:

ETC (compressão de textura Ericsson)

Compressão padrão para dispositivos móveis, com ETC1 para RGB e ETC2 para compressão RGBA

ASTC (compressão de textura escalável adaptativa)

Compressão moderna e de alta qualidade, compatível com vários tamanhos de bloco, de 4x4 a 12x12 pixels

BCn (compressão de bloco)

Formatos de compactação DirectX, incluindo BC1-BC7 para jogos de desktop e aplicativos do Windows

PVRTC (compressão de textura PowerVR)

Compressão específica do PowerVR para iOS e sistemas embarcados com variantes de 2bpp e 4bpp

Formatos não compactados

Formatos padrão não compactados como RGB8, RGBA8 e vários formatos HDR

Estrutura do arquivo KTX

Os arquivos KTX seguem um formato estruturado com três componentes principais:

Cabeçalho do arquivo

Contém identificação de formato, informações de versão e metadados básicos de textura, como dimensões e formato

Dados de valor-chave

Seção de metadados contendo pares de valores-chave personalizados para informações adicionais de textura

Dados de imagem

Dados reais de textura compactados ou não compactados, organizados por níveis de mipmap e camadas de array

Estrutura do cabeçalho KTX1

KTX1 usa um cabeçalho de 64 bytes baseado em parâmetros de textura OpenGL:

Identificador (12 bytes)

"«KTX 11»\r\n\x1A\n" - Identificador de formato de arquivo para validação

Endianidade (4 bytes)

Especifica a ordem dos bytes: 0x04030201 para little-endian, 0x01020304 para big-endian

glType (4 bytes)

Tipo de dados OpenGL (por exemplo, GL_UNSIGNED_BYTE) - 0 para formatos compactados

glFormat (4 bytes)

Formato OpenGL (por exemplo, GL_RGB) – 0 para formatos compactados

glInternalFormat (4 bytes)

Formato interno OpenGL (por exemplo, GL_COMPRESSED_RGB8_ETC2)

glBaseInternalFormat (4 bytes)

Formato OpenGL básico para compatibilidade com versões mais antigas do OpenGL

largura de pixel (4 bytes)

Largura da textura em pixels

pixelHeight (4 bytes)

Altura da textura em pixels (0 para texturas 1D)

profundidade de pixel (4 bytes)

Profundidade da textura em pixels (0 para texturas 2D)

numberOfArrayElements (4 bytes)

Número de elementos do array (0 para texturas que não são do array)

númeroOfFaces (4 bytes)

Número de faces (6 para mapas cúbicos, 1 para texturas regulares)

numberOfMipmapLevels (4 bytes)

Número de níveis de mipmap (1 para nenhum mipmap)

bytesOfKeyValueData (4 bytes)

Tamanho da seção de dados de valor-chave em bytes

Melhorias na estrutura KTX2

KTX2 introduz vários novos componentes estruturais para funcionalidade aprimorada:

Cabeçalho aprimorado

Estrutura de cabeçalho aprimorada com informações de versão, identificadores de formato e indicadores de tamanho de dados

Índice de nível

Sistema de indexação eficiente para acesso rápido a níveis específicos de mipmap e dados de textura

Descritor de formato de dados (DFD)

Sistema abrangente de descrição de formato que substitui constantes de formato OpenGL

Dados de valor-chave

Sistema de metadados aprimorado com suporte para internacionalização e tipos de dados complexos

Dados globais de supercompressão

Dados globais para esquemas de supercompressão como Basis Universal

Metadados e dados de valor-chave

Os arquivos KTX podem conter metadados extensos por meio da seção de dados de valor-chave:

Orientação de Textura

Especifica a orientação da textura (superior esquerdo, inferior direito, etc.) para renderização adequada

Informações de formato

Detalhes sobre formato de compactação, configurações de qualidade e parâmetros de codificação

Informações do escritor

Informações sobre a ferramenta ou aplicativo que criou o arquivo KTX

Configurações de compactação

Parâmetros de compressão específicos e configurações de qualidade usados

Espaço de cores

Informações de espaço de cores, incluindo perfis de cores sRGB, lineares e HDR

Fluxo de trabalho de desenvolvimento KTX

A criação e o gerenciamento de texturas KTX envolvem estas etapas principais:

1

Preparação de ativos de origem

Prepare imagens de origem de alta qualidade com dimensões e perfis de cores apropriados

2

Seleção de formato

Escolha o formato de compactação apropriado com base nas plataformas de destino e nos requisitos de qualidade

3

Compressão de Textura

Use ferramentas como toktx ou pipelines de ativos para compactar imagens de origem no formato KTX

4

Adição de metadados

Adicione metadados apropriados, incluindo orientação, espaço de cores e propriedades personalizadas

5

Validação de arquivo

Valide os arquivos KTX quanto à compatibilidade e correção com as plataformas de destino

6

Integração de aplicativos

Integre o carregamento e o manuseio de KTX em sua aplicação gráfica

Principais vantagens do formato KTX

Padrão da Indústria

Padrão do Grupo Khronos garantindo suporte de longo prazo e ampla adoção na indústria

Flexibilidade de formato

Suporta praticamente qualquer formato de compactação, tornando-o versátil e à prova de futuro

Metadados ricos

Sistema abrangente de metadados para interpretação e gerenciamento adequados de texturas

Recursos avançados

Suporte para recursos de textura modernos, como matrizes, texturas 3D e supercompressão

Plataforma cruzada

Funciona em todas as principais plataformas sem modificação ou conversão

Pronto para o futuro

O suporte KTX2 e supercompressão garantem compatibilidade com futuras tecnologias gráficas

Casos de uso comuns

Aplicativos Vulkan

Formato primário para aplicativos Vulkan modernos com recursos de carregamento direto de GPU

Aplicativos OpenGL

Formato de textura multiplataforma para aplicativos OpenGL e OpenGL ES

Aplicativos WebGL

Aplicativos gráficos baseados na Web por meio de carregadores de textura KTX e WebGL

Desenvolvimento de jogos

Desenvolvimento de jogos profissionais com pipelines de ativos de textura multiplataforma

Aplicativos VR/AR

Aplicativos de realidade virtual e aumentada que exigem carregamento eficiente de texturas

Desenvolvimento Móvel

Aplicativos iOS e Android com formatos de compactação de textura otimizados

KTX versus outros formatos

Entendendo como o KTX se compara a outros formatos de textura:

KTX versus DDS

KTX é multiplataforma e independente de API, enquanto DDS é específico para DirectX e focado em Windows

Comparação entre KTX e PVR

KTX oferece suporte a vários formatos de compactação, enquanto o PVR é otimizado para GPUs PowerVR e iOS

KTX1 versus KTX2

KTX2 oferece supercompressão, melhores metadados e recursos modernos em relação ao KTX1 legado

KTX vs Base Universal

KTX é um formato contêiner, enquanto Basis Universal é um formato de compactação que pode ser armazenado em KTX2

Ferramentas e recursos de desenvolvimento

Ferramenta toktx

Ferramenta oficial de linha de comando para criar e converter arquivos KTX de vários formatos de imagem

Pacote de ferramentas KTX

Conjunto completo de ferramentas, incluindo toktx, ktxinfo, ktxcheck e outros utilitários

SDK Vulkan

O SDK oficial do Vulkan inclui suporte KTX e utilitários de carregamento

Bibliotecas OpenGL

Várias bibliotecas e estruturas OpenGL com suporte KTX integrado

Suporte Unity KTX

O mecanismo Unity oferece suporte ao carregamento de textura KTX por meio de plug-ins e pipelines de ativos

Unreal Engine KTX

Unreal Engine fornece suporte a textura KTX por meio de configurações de compactação de textura

Melhores práticas para desenvolvimento KTX

Use KTX2 para novos projetos para aproveitar recursos modernos e capacidades de supercompressão

Escolha o formato de compactação apropriado com base nas plataformas de destino: ETC para celular, BCn para desktop

Inclua metadados abrangentes para garantir a interpretação adequada de texturas em todas as plataformas

Valide arquivos KTX no hardware de destino no início do desenvolvimento para evitar problemas de compatibilidade

Use configurações mipmap apropriadas para otimizar o desempenho de renderização em diferentes distâncias de visualização

Considere usar a supercompressão Basis Universal para implantação em várias plataformas com tamanhos de arquivo ideais

Teste o desempenho do carregamento de texturas com condições reais de hardware e rede alvo

Implementar tratamento de erros adequado e mecanismos de fallback para formatos ou recursos não suportados

Caminhos de migração e atualização

Diretrizes para migração para KTX ou atualização entre versões:

Migrando de KTX1 para KTX2

Use toktx com o sinalizador --ktx2 para converter arquivos KTX1 legados para o formato KTX2 moderno

Conversão de DDS para KTX

Use ferramentas de conversão toktx ou textura para migrar texturas DirectX para o formato KTX multiplataforma

Conversão de PVR para KTX

Converta texturas PVR específicas do iOS em KTX para compatibilidade entre plataformas

Adicionando compressão universal básica

Use toktx com opções Basis Universal para adicionar supercompressão a arquivos KTX2

Por que escolher o KTX2?

KTX2 oferece vantagens significativas sobre KTX1 e outros formatos:

Suporte universal básico

Suporte nativo para supercompressão Basis Universal, permitindo implantação de textura universal

Compressão aprimorada

Taxas e qualidade de compactação aprimoradas por meio de esquemas de compactação modernos

Esquemas de Supercompressão

Suporte para vários formatos de supercompressão além do Basis Universal

Descritores de formato de dados

Sistema abrangente de descrição de formato que substitui constantes OpenGL herdadas

Design à prova de futuro

Projetado para APIs gráficas modernas e futuras e tecnologias de compactação

Conclusão

O formato KTX representa o padrão da indústria para gerenciamento de texturas entre plataformas, fornecendo aos desenvolvedores uma solução robusta, flexível e preparada para o futuro para pipelines de ativos de textura. Seja usando o KTX1 legado para aplicativos OpenGL ou o KTX2 moderno para desenvolvimento baseado em Vulkan, o KTX oferece as ferramentas e os recursos necessários para o desenvolvimento gráfico profissional.

À medida que a indústria gráfica continua a evoluir em direção ao desenvolvimento multiplataforma e tecnologias de compressão mais avançadas, o KTX2, com seu suporte à supercompressão Basis Universal e recursos modernos, se posiciona como a principal escolha para gerenciamento de texturas. Compreender o formato KTX e seus recursos é essencial para qualquer desenvolvedor que trabalhe com aplicativos gráficos modernos.

Leitura adicional e recursos

Expanda seu conhecimento com estes recursos confiáveis:

Experimente nossas ferramentas