Partilhar via


Usar ativos 3D em seu jogo ou aplicativo

Este artigo descreve como você pode usar o Visual Studio para processar ativos 3D e incluí-los em suas compilações.

Depois de usar as ferramentas no Visual Studio para criar ativos 3D, a próxima etapa é usá-los em seu aplicativo. Mas, antes que você possa usá-los, seus ativos precisam ser transformados em um formato que o DirectX possa entender. Para ajudá-lo a transformar seus ativos, o Visual Studio fornece personalizações de compilação para cada tipo de ativo que ele pode produzir. Para incluir os ativos em sua compilação, tudo o que você precisa fazer é configurar seu projeto para usar as personalizações de compilação, adicionar os ativos ao seu projeto e configurar os ativos para usar a personalização de compilação correta. Depois disso, você pode carregar os ativos em seu aplicativo e usá-los criando e preenchendo recursos DirectX como faria em qualquer outro aplicativo DirectX.

Configure seu projeto

Antes de implantar seus ativos 3D como parte de sua compilação, o Visual Studio precisa saber sobre os tipos de ativos que você deseja implantar. O Visual Studio já sabe sobre muitos tipos de arquivo comuns, mas como apenas certos tipos de aplicativos usam ativos 3D, o Visual Studio não assume que um projeto criará esses tipos de arquivos. Você pode dizer ao Visual Studio que seu aplicativo usa esses tipos de ativos usando o criar personalizações— arquivos que informam ao Visual Studio como processar diferentes tipos de arquivos de maneira útil — que são fornecidos para cada tipo de ativo. Como essas personalizações são aplicadas por projeto, tudo o que você precisa fazer é adicionar as personalizações apropriadas ao seu projeto.

Para adicionar as personalizações de compilação ao seu projeto

  1. No Explorador de Soluções , abra o menu de atalho do projeto e escolha Dependências de Construção>Personalizações de Construção.

    A caixa de diálogo Visual C++ Build Customizations Files é exibida.

  2. Em Arquivos de Personalização de Compilação Disponíveis, marca as caixas de seleção que correspondem aos tipos de recursos que pretendes usar no teu projeto, conforme descrito na tabela a seguir.

    Tipo de ativo Nome da personalização da build
    Texturas e imagens ImageContentTask(.targets, .props)
    Modelos 3D MeshContentTask(.targets, .props)
    Sombreadores ShaderGraphContentTask(.targets, .props)

    Observação

    O Visual Studio 2022 17.9.3 removeu o suporte para o Editor de Modelo e MeshContentTask devido a preocupações de segurança no SDK FBX da Autodesk. Consulte CVE-2023-27911.

  3. Escolha o botão OK.

Inclua ativos em sua compilação

Agora que seu projeto sabe sobre os diferentes tipos de ativos 3D que você deseja usar, a próxima etapa é dizer quais arquivos são ativos 3D e quais tipos de ativos são.

Para adicionar um ativo ao seu projeto

  1. No Gerenciador de Soluções , em seu projeto, abra o menu de atalho de um ativo e escolha Propriedades.

    A caixa de diálogo da Página de Propriedades do ativo é exibida.

  2. Certifique-se de que as propriedades Configuration e Platform estão definidas para os valores aos quais você deseja que suas alterações sejam aplicadas.

  3. Em Propriedades de Configuração, escolha Gerale, na grade de propriedades, em Geral, defina a propriedade Tipo de Item como o tipo de item de pipeline de conteúdo apropriado. Por exemplo, para um arquivo de imagem ou textura, escolha Pipeline de Conteúdo de Imagem.

    Importante

    Por padrão, o Visual Studio pressupõe que muitos tipos de arquivos de imagem devem ser categorizados usando o tipo de item Image interno no Visual Studio. Portanto, você precisa alterar a propriedade Item Type de cada imagem que você deseja que seja processada pelo pipeline de conteúdo da imagem. Outros tipos de arquivos de pipeline de conteúdo de origem para modelos 3D e gráficos de sombreador visual definem-se automaticamente como o Tipo de Item correto.

  4. Escolha o botão OK.

A seguir estão os três tipos de itens do pipeline de conteúdo, bem como os tipos de ficheiros de origem e de saída associados.

Tipo de Item Tipos de arquivo de origem Formato de arquivo de saída
O pipeline de conteúdo de imagem Gráficos de rede portáteis (.png)

JPEG (.jpg, .jpeg, .jpe, .jfif)

Superfície de tração direta (.dds)

Formato de intercâmbio gráfico (.gif)

Bitmap (.bmp, .dib)

Formato de Arquivo de Imagem Etiquetado (.tif, .tiff)

Targa (.tga)
Superfície DirectDraw (.dds)
Pipeline de conteúdo de malha Ficheiro de intercâmbio FBX Autodesk (.fbx)

Arquivo Collada DAE (.dae)

Arquivo OBJ Wavefront (.obj)
Ficheiro de malha 3D (.cmo)
Pipeline de Conteúdo do Shader Gráfico de Shader Visual (.dgsl) Saída de sombreamento compilada (.cso)

Configurar propriedades do pipeline de conteúdo de ativos

Você pode definir as propriedades do pipeline de conteúdo de cada arquivo de ativo para que ele seja criado de uma maneira específica.

Para configurar as propriedades do pipeline de conteúdo

  1. No Explorador de Soluções , no seu projeto, abra o menu de atalho para o ficheiro de ativos e escolha Propriedades.

    A caixa de diálogo Página de propriedades do ativo é exibida.

  2. Certifique-se de que as propriedades Configuration e Platform estão definidas para os valores aos quais você deseja que suas alterações sejam aplicadas.

  3. Em Propriedades de Configuração, escolha o nó do pipeline de conteúdo (por exemplo, Pipeline de Conteúdo de Imagem para ativos de textura e imagem) e, na grade de propriedades, defina as propriedades para os valores apropriados. Por exemplo, para gerar mipmaps para um recurso de textura no momento da construção, configure a propriedade Generate Mips como Yes.

  4. Escolha o botão OK.

Configuração do fluxo de conteúdo de imagem

Ao usar a ferramenta de pipeline de conteúdo de imagem para criar um ativo de textura, você pode compactar a textura de várias maneiras, indicar se os níveis de MIP devem ser gerados no momento da compilação e alterar o nome do arquivo de saída.

Propriedade Descrição
Comprimir Especifica o tipo de compactação usado para o arquivo de saída.

As opções disponíveis são:

- Sem Compressão
- compressão BC1_UNORM
compressão - BC1_UNORM_SRGB
- compressão BC2_UNORM
compressão - BC2_UNORM_SRGB
- compressão BC3_UNORM
Compressão - BC3_UNORM_SRGB
- compressão BC4_UNORM
- compressão BC4_SNORM
- compressão BC5_UNORM
- compressão de BC5_SNORM
- compressão BC6H_UF16
- compressão BC6H_SF16
- compressão BC7_UNORM
- BC7_UNORM_SRGB compression

Para obter informações sobre quais formatos de compactação são suportados em diferentes versões do DirectX, consulte Guia de programação para DXGI.
Converter para o formato alfa pré-multiplicado Sim para converter a imagem para o formato alfa pré-multiplicado no ficheiro de saída; caso contrário, Não. Somente o arquivo de saída é alterado, a imagem de origem permanece inalterada.
Gerar Mips Sim gerar uma sequência MIP completa em tempo de compilação e incluí-la no ficheiro de saída; caso contrário, Não. Se No, e o arquivo de origem já contém uma cadeia mipmap, então o arquivo de saída terá uma cadeia MIP; caso contrário, o arquivo de saída não terá cadeia MIP.
Saída de Conteúdo Especifica o nome do arquivo de saída. Importante: Alterar a extensão de nome de arquivo do arquivo de saída não tem efeito sobre seu formato de arquivo.

Configuração do pipeline para conteúdo de malha

Ao usar a ferramenta de pipeline de conteúdo de malha para criar um ativo de malha, você pode alterar o nome do arquivo de saída.

Propriedade Descrição
Saída de Conteúdo Especifica o nome do arquivo de saída. Importante: Alterar a extensão de nome de arquivo do arquivo de saída não tem efeito sobre seu formato de arquivo.

Configuração do pipeline de conteúdo do sombreador

Ao utilizar a ferramenta de processamento de conteúdo para sombreadores para criar um ativo de sombreador, pode alterar o nome do ficheiro de saída.

Propriedade Descrição
Saída de Conteúdo Especifica o nome do arquivo de saída. Importante: Alterar a extensão de nome de arquivo do arquivo de saída não tem efeito sobre seu formato de arquivo.

Carregue e use ativos 3D em tempo de execução

Usar texturas e imagens

O Direct3D fornece funções para criar recursos de textura. No Direct3D 11, a biblioteca de utilitários D3DX11 fornece funções adicionais para criar recursos de textura e exibições de recursos diretamente de arquivos de imagem. Para obter mais informações sobre como criar um recurso de textura no Direct3D 11, consulte Textures. Para obter mais informações sobre como usar a biblioteca D3DX11 para criar um recurso de textura ou uma exibição de recurso a partir de um arquivo de imagem, consulte Como inicializar uma textura de um arquivo.

Usar modelos 3D

O Direct3D 11 não fornece funções para criar recursos a partir de modelos 3D. Em vez disso, você precisa escrever código que lê o arquivo de modelo 3D e cria buffers de vértice e índice que representam o modelo 3D e quaisquer recursos que o modelo exija, por exemplo, texturas ou sombreadores.

Usar sombreadores

O Direct3D fornece funções para criar recursos de sombreador e vinculá-los ao pipeline de gráficos programáveis. Para obter mais informações sobre como criar um recurso de sombreador no Direct3D e vinculá-lo ao pipeline, consulte Guia de programação para HLSL.

Na pipeline de gráficos programáveis, cada etapa deve fornecer à próxima um resultado formatado de uma maneira que esta possa entender. Como o Shader Designer só pode criar sombreadores de pixel, isso significa que cabe ao seu aplicativo garantir que os dados recebidos estejam no formato esperado. Vários estágios de sombreador programáveis ocorrem antes do sombreador de pixel e executam transformações geométricas — o sombreador de vértice, o sombreador de casco, o sombreador de domínio e o sombreador de geometria. O estágio de tesselação não programável também ocorre antes do sombreador de pixel. Não importa qual desses estágios precede diretamente o sombreador de pixel, ele deve dar seu resultado neste formato:

struct PixelShaderInput
{
    float4 pos : SV_POSITION;
    float4 diffuse : COLOR;
    float2 uv : TEXCOORD0;
    float3 worldNorm : TEXCOORD1;
    float3 worldPos : TEXCOORD2;
    float3 toEye : TEXCOORD3;
    float4 tangent : TEXCOORD4;
    float3 normal : TEXCOORD5;
};

Dependendo dos nós do Shader Designer que você usa no sombreador, talvez também seja necessário fornecer dados adicionais no formato de acordo com estas definições:

Texture2D Texture1 : register( t0 );
Texture2D Texture2 : register( t1 );
Texture2D Texture3 : register( t2 );
Texture2D Texture4 : register( t3 );
Texture2D Texture5 : register( t4 );
Texture2D Texture6 : register( t5 );
Texture2D Texture7 : register( t6 );
Texture2D Texture8 : register( t7 );

TextureCube CubeTexture1 : register( t8 );
TextureCube CubeTexture2 : register( t9 );
TextureCube CubeTexture3 : register( t10 );
TextureCube CubeTexture4 : register( t11 );
TextureCube CubeTexture5 : register( t12 );
TextureCube CubeTexture6 : register( t13 );
TextureCube CubeTexture7 : register( t14 );
TextureCube CubeTexture8 : register( t15 );

SamplerState TexSampler : register( s0 );

cbuffer MaterialVars : register (b0)
{
    float4 MaterialAmbient;
    float4 MaterialDiffuse;
    float4 MaterialSpecular;
    float4 MaterialEmissive;
    float MaterialSpecularPower;
};

cbuffer LightVars : register (b1)
{
    float4 AmbientLight;
    float4 LightColor[4];
    float4 LightAttenuation[4];
    float3 LightDirection[4];
    float LightSpecularIntensity[4];
    uint IsPointLight[4];
    uint ActiveLights;
}

cbuffer ObjectVars : register(b2)
{
    float4x4 LocalToWorld4x4;
    float4x4 LocalToProjected4x4;
    float4x4 WorldToLocal4x4;
    float4x4 WorldToView4x4;
    float4x4 UVTransform4x4;
    float3 EyePosition;
};

cbuffer MiscVars : register(b3)
{
    float ViewportWidth;
    float ViewportHeight;
    float Time;
};
Título Descrição
Como: Exportar uma textura que contém mipmaps Descreve como usar o Image Content Pipeline para exportar uma textura que contém mipmaps pré-calculados.
Como exportar uma textura com alfa pré-multiplicada Descreve como usar o Image Content Pipeline para exportar uma textura que contém valores alfa pré-multiplicados.
Como exportar uma textura para uso com aplicativos Direct2D ou JavaScript Descreve como usar o Pipeline de Conteúdo de Imagem para exportar uma textura para utilização numa aplicação Direct2D ou JavaScript.
Trabalhando com ativos 3D para jogos e aplicativos Descreve as ferramentas de edição que o Visual Studio fornece para criar e manipular ativos 3D, que incluem texturas e imagens, modelos 3D e sombreadores.
Como exportar um sombreador Descreve como exportar um sombreador do Shader Designer.