Compartilhar via


Exportar formatos de textura avançada usando o Pipeline de Conteúdo de Imagem no Visual Studio

Este artigo descreve como usar o Pipeline de Conteúdo de Imagem para exportar texturas, como as que contêm mipmaps ou alfa pré-multiplicado, ou mesmo as que podem ser usadas com aplicativos Direct2D ou JavaScript.

Exportar uma textura que contém mipmaps

O Pipeline de conteúdo de imagem pode gerar mipmaps de uma imagem de origem como parte da fase de build do projeto. Para obter certos efeitos, às vezes, você precisa especificar o conteúdo da imagem de cada nível de MIP manualmente. Quando você não precisa especificar o conteúdo da imagem de cada nível MIP manualmente, gerar mipmaps em tempo de build garante que o conteúdo de mipmap nunca fique fora de sincronia. Isso também elimina o custo de desempenho de gerar mipmaps no tempo de execução.

Este artigo cobre:

  • Configurando a imagem de origem a ser processada pelo Pipeline de conteúdo da imagem.

  • Configurando o Pipeline de conteúdo de imagem para gerar mipmaps.

Exportar mipmaps

O mapeamento mip fornece o nível de detalhe do espaço de tela automático para superfícies com textura em um aplicativo ou jogo 3D. Ele aumenta o desempenho de renderização de um jogo ou aplicativo computando previamente versões com amostra reduzida de uma textura. Pré-computar versões reduzidas significa que a textura inteira não ter sua amostra reduzida cada vez que é amostrada.

Para exportar uma textura que contenha mipmaps

  1. Comece com uma textura básica. Carregue um arquivo de imagem existente ou crie um. Para oferecer suporte a mipmaps, especifique uma textura que tenha uma largura e altura que sejam as mesmas, por exemplo, 64x64, 256x256 ou 512x512.

  2. Configure o arquivo de textura que você acabou de criar para que ele seja processado pelo Pipeline de conteúdo de imagem. No Gerenciador de Soluções, abra o menu de atalho do arquivo de textura que você criou e selecione Propriedades. Na página Propriedades de Configuração>Geral, defina a propriedade Tipo de Item como Pipeline de Conteúdo de Imagem. Verifique se a propriedade Conteúdo está definida como Sim e se Excluir do Build está definido como Não. Escolha Aplicar.

    A página de propriedades de configuração Pipeline de Conteúdo de Imagem é exibida.

  3. Configure o Pipeline de conteúdo de imagem para gerar mipmaps. Na página Propriedades de Configuração>Pipeline de Conteúdo de Imagem>Geral, defina a propriedade Gerar mips como Sim (/generatemips).

  4. Selecione OK.

Quando você cria o projeto, o Pipeline de conteúdo de imagem converte a imagem de origem do formato de trabalho para o formato de saída que você especificou, incluindo níveis de MIP. O resultado é copiado para o diretório de saída do projeto.

Exportar uma textura que tenha o alfa pré-multiplicado

O Pipeline de conteúdo de imagem pode gerar texturas alfa pré-multiplicadas de uma imagem de origem. Eles podem ser mais simples de usar e mais robustos do que texturas que não contêm alfa pré-multiplicado.

Este documento demonstra essas atividades:

  • Configurando a imagem de origem a ser processada pelo Pipeline de conteúdo da imagem.

  • Configurando o Pipeline de conteúdo de imagem para gerar alfa pré-multiplicado.

Alfa pré-multiplicado

O alfa pré-multiplicado oferece diversas vantagens em relação ao alfa convencional, não multiplicado, porque ele representa melhor a interação real da luz com materiais físicos, separando a contribuição de cor do texel (a cor que ele adiciona à cena) de sua transparência (a quantidade de cor subjacente permitida). Algumas das vantagens de usar alfa pré-multiplicado são:

  • A combinação com alfa pré-multiplicado é uma operação de associação; o resultado da combinação de várias texturas translúcidas é o mesmo, independentemente da ordem na qual as texturas são mescladas.

  • Devido à natureza associativa de combinação com alfa pré-multiplicado, a renderização multipassagem de objetos translúcidos é simplificada.

  • Ao usar alfa pré-multiplicado, tanto a combinação aditiva pura (pela configuração de alfa para zero) quanto a combinação interpoladas linearmente podem ser obtidas simultaneamente. Por exemplo, em um sistema de partículas, uma partícula de fogo combinada de forma aditiva pode se tornar uma partícula de fumaça translúcida combinada por meio do uso da interpolação linear. Sem alfa pré-multiplicado, você precisa extrair as partículas de fogo separadamente das partículas de fumaça e modificar o estado de renderização entre chamadas de retirada.

  • As texturas que usam alfa pré-multiplicado são compactadas com qualidade mais alta do que aquelas que não usam e elas não exibem as bordas descoloridas (ou "efeito de halo") que podem ocorrer ao combinar texturas que não usam alfa pré-multiplicado.

Como criar uma textura que usa alfa pré-multiplicado

  1. Comece com uma textura básica. Carregue um arquivo de imagem existente ou crie um.

  2. Configure o arquivo de textura para que ele seja processado pelo Pipeline de conteúdo de imagem. No Gerenciador de Soluções, abra o menu de atalho do arquivo de textura e escolha Propriedades. Na página Propriedades de Configuração>Geral, defina a propriedade Tipo de Item como Pipeline de Conteúdo de Imagem. Verifique se a propriedade Conteúdo está definida como Sim e se Excluir do Build está definido como Não e, em seguida, escolha o botão Aplicar. A página de propriedades de configuração Pipeline de Conteúdo de Imagem é exibida.

  3. Configure o Pipeline de conteúdo de imagem para gerar alfa pré-multiplicado. Na página Propriedades de Configuração>Pipeline de Conteúdo de Imagem>Geral, defina a propriedade Converter para formato alfa pré-multiplicado como Sim (/generatepremultipliedalpha).

  4. Clique no botão OK.

    Quando você cria o projeto, o Pipeline de conteúdo de imagem converte a imagem de origem do formato de trabalho para o formato de saída que você especificou, incluindo a conversão da imagem para o formato alfa pré-multiplicado e o resultado é copiado para o diretório de saída do projeto.

exportar uma textura para uso com aplicativos Direct2D ou JavaScript

O Pipeline de conteúdo de imagem pode gerar texturas que são compatíveis com as convenções de renderização internas do Direct2D. Texturas desse tipo são adequadas para serem usadas em aplicativos que usam Direct2D e em aplicativos UWP criados usando JavaScript.

Este documento demonstra essas atividades:

  • Configurando a imagem de origem a ser processada pelo Pipeline de conteúdo da imagem.

  • Configurando o Pipeline de conteúdo de imagem para gerar uma textura que possa ser usada em um aplicativo Direct2D ou JavaScript.

    • Gerar um arquivo .dds compactado em bloco.

    • Gerar alfa pré-multiplicado.

    • Desabilite a geração de mipmap.

Convenções de renderização do Direct2D

Texturas que são usadas no contexto do Direct2D devem estar em conformidade com as seguintes convenções de renderização internas do Direct2D:

  • O Direct2D implementa a transparência e a translucência usando alfa pré-multiplicado. Texturas usadas com Direct2D devem conter alfa pré-multiplicado, mesmo se a textura não usar transparência ou translucência.

  • A textura precisa ser fornecida no formato .dds, usando um desses formatos de compactação em bloco:

    • Compactação BC1_UNORM

    • Compactação BC2_UNORM

    • Compactação BC3_UNORM

  • Não há suporte a mipmaps.

Para criar uma textura compatível com as convenções de renderização do Direct2D

  1. Comece com uma textura básica. Carregue uma imagem existente ou crie uma. Para dar suporte à compactação em bloco no formato .dds, especifique uma textura que tenha uma largura e altura que sejam múltiplos de quatro em tamanho, por exemplo, 100 x 100, 128 x 128 ou 256 x 192. Como não há suporte para mipmap, a textura não precisa ser quadrada nem ser uma potência de tamanho dois.

  2. Configure o arquivo de textura para que ele seja processado pelo Pipeline de conteúdo de imagem. No Gerenciador de Soluções, abra o menu de atalho do arquivo de textura que você criou e selecione Propriedades. Na página Propriedades de Configuração>Geral, defina a propriedade Tipo de Item como Pipeline de Conteúdo de Imagem. Verifique se a propriedade Conteúdo está definida como Sim e se Excluir do Build está definido como Não e, em seguida, escolha o botão Aplicar. A página de propriedades de configuração Pipeline de Conteúdo de Imagem é exibida.

  3. Defina o formato de saída para um dos formatos de compactação em bloco. Na página Propriedades de Configuração>Pipeline de Conteúdo de Imagem>Geral, defina a propriedade Compactar como Compactação BC3_UNORM (/compress:BC3_UNORM). Você pode escolher qualquer um dos outros formatos BC1, BC2 ou BC3, dependendo dos seus requisitos. O Direct2D não dá suporte a texturas BC4, BC5, BC6 ou BC7 no momento. Para obter mais informações sobre os diferentes formatos BC, confira Compactação em bloco (Direct3D 10).

    Observação

    O formato de compactação especificado determina o formato do arquivo que é produzido pelo Pipeline de conteúdo de imagem. Isso é diferente da propriedade Format da imagem de origem no Editor de imagens, que determina o formato do arquivo de imagens de origem quando armazenados em disco, ou seja, o formato de trabalho. Normalmente, um formato de trabalho compactado não é o desejado.

  4. Configure o Pipeline de conteúdo de imagem para gerar uma saída que usa alfa pré-multiplicado. Na página Propriedades de Configuração>Pipeline de Conteúdo de Imagem>Geral, defina a propriedade Converter para formato alfa pré-multiplicado como Sim (/generatepremultipliedalpha).

  5. Configure o pipeline de conteúdo de imagem para não gerar mipmaps. Na página Propriedades de Configuração>Pipeline de Conteúdo de Imagem>Geral, defina a propriedade Gerar Mips como Não.

  6. Clique no botão OK.

    Quando você cria o projeto, o Pipeline de conteúdo de imagem converte a imagem de origem do formato do trabalho para o formato de saída especificado (a conversão inclui a geração de alfa pré-multiplicado) e o resultado é copiado para o diretório de saída do projeto.

Visite Trabalhar com texturas e imagens para saber mais sobre como usar o Editor de Imagens no Visual Studio para criar ou modificar texturas e imagens usadas no desenvolvimento de aplicativos DirectX.