Voltar ao blog
Formatos

Formato PKM e ETC: Guia Completo

10 minutos de leitura

PKM é um formato de contêiner simples para texturas compactadas em ETC, amplamente utilizado nas plataformas Android e OpenGL ES. Este artigo fornece um guia completo para compreender a estrutura do formato PKM, as versões de compactação ETC/ETC2 e como usá-los de maneira eficaz.

O que é o formato PKM?

PKM (abreviação de 'PoKeMon', nomeado por Ericsson) é um formato de contêiner simples projetado especificamente para armazenar dados de textura compactados em ETC. Ao contrário de formatos complexos como KTX ou DDS, o PKM possui uma estrutura mínima com apenas um cabeçalho de 16 bytes seguido por dados de imagem compactados.

O formato foi criado para fornecer uma maneira leve de armazenar e carregar texturas compactadas em ETC em dispositivos móveis. Sua simplicidade facilita a implementação e a análise, praticamente sem nenhuma sobrecarga além dos próprios dados de textura compactados.

Estrutura do arquivo PKM

  • Cabeçalho de 16 bytes: número mágico (PKM), versão, formato, dimensões
  • Dados de textura compactados: blocos ETC/ETC2 brutos

Versões de compressão ETC

Existem duas versões principais de compactação ETC, cada uma com recursos diferentes:

ETC1 (compressão de textura Ericsson 1)

O padrão ETC original, suportando apenas canais de cores RGB com taxa de compressão fixa de 4:1. Amplamente suportado em dispositivos Android desde OpenGL ES 2.0.

Apoiar: Todos os dispositivos OpenGL ES 2.0+

Taxa de compressão: 4:1 fixo (4 bits por pixel)

ETC2 (compressão de textura Ericsson 2)

Sucessor aprimorado do ETC1, adicionando suporte RGBA com múltiplas opções de formato. Fornece melhor qualidade e suporte ao canal alfa, mantendo a compatibilidade com versões anteriores.

Apoiar: OpenGL ES 3.0+, Vulkan

Taxa de compressão: 4:1 a 8:1 dependendo do formato

Variantes de formato PKM

PKM pode conter diferentes tipos de formato ETC:

ETC1 RGB

Formato original, somente RGB, sem canal alfa

ETC2 RGB

Compressão RGB aprimorada com melhor qualidade que ETC1

ETC2 RGBA

Suporte RGBA completo com compactação 8:1 (8 bits por pixel)

ETC2 RGB + Punch-through Alfa

RGB com alfa de 1 bit, mantendo compactação 4:1

Vantagens do PKM/ETC

Suporte universal para Android

O ETC1 tem suporte garantido em todos os dispositivos Android, tornando-o o formato de compactação mais portátil para desenvolvimento Android.

Taxa de compressão fixa

Uso de memória previsível com taxas de compactação consistentes de 4:1 ou 8:1, simplificando os cálculos de orçamento de memória.

Boa relação qualidade/tamanho

O ETC2 oferece excelente qualidade visual para a maioria dos tipos de textura, comparável a formatos de desktop como DXT/BCn.

Decodificação de hardware

Descompressão direta da GPU sem sobrecarga de CPU durante a renderização, permitindo amostragem de textura eficiente.

Limitações e considerações

Limites de qualidade ETC1

O ETC1 pode mostrar artefatos visíveis em texturas com detalhes de alta frequência ou gradientes suaves. Considere usar ETC2 para obter melhor qualidade.

Sem Alfa em ETC1

ETC1 não oferece suporte a canais alfa. Você precisa usar ETC2 RGBA ou armazenar alfa separadamente se for direcionado a dispositivos OpenGL ES 2.0.

Recursos avançados limitados

PKM não oferece suporte a mipmaps, cubemaps ou arrays de textura. Use os formatos KTX ou KTX2 para esses recursos avançados.

Como usar o formato PKM

Usar arquivos PKM em seus projetos é simples:

Codificação para PKM

  1. Carregue sua imagem PNG/JPG (deve ter dimensões de potência de 2 ou múltiplo de 4)
  2. Escolha entre ETC1 RGB ou ETC2 RGB/RGBA com base em suas necessidades
  3. Baixe o arquivo .pkm gerado e integre-o ao seu projeto

Decodificando arquivos PKM

  1. Carregue seu arquivo .pkm para verificar seu conteúdo
  2. Visualize a textura descompactada e verifique a qualidade
  3. Exporte para PNG se precisar editar ou inspecionar a textura

Melhores Práticas

  • Use ETC1 RGB para máxima compatibilidade em todos os dispositivos Android (OpenGL ES 2.0+)
  • Prefira ETC2 RGBA ao direcionar dispositivos modernos (OpenGL ES 3.0+) que precisam de canais alfa
  • Certifique-se de que as dimensões da textura sejam múltiplos de 4 (ETC1) ou potência de 2 para obter melhor qualidade
  • Para texturas que exigem alfa em dispositivos mais antigos, considere usar texturas separadas em tons de cinza
  • Teste texturas compactadas em dispositivos de destino reais - a percepção de qualidade varia de acordo com o tipo de conteúdo

Conclusão

PKM com compactação ETC/ETC2 é a escolha padrão para desenvolvimento Android e OpenGL ES móvel. Seu suporte universal, desempenho previsível e boa qualidade o tornam um excelente padrão para compactação de texturas móveis.

Nossas ferramentas online de codificação e decodificação PKM facilitam o trabalho com texturas compactadas ETC sem a instalação de ferramentas de linha de comando ou SDKs. Esteja você criando novas texturas ou inspecionando as existentes, essas ferramentas ajudam a otimizar seu pipeline de gráficos móveis.

Leituras adicionais e referências

Saiba mais sobre os formatos ETC e PKM:

Experimente nossas ferramentas