Partager via


Utilisation de ressources 3D dans vos jeux et applications

Cet article explique comment utiliser Visual Studio pour traiter les ressources 3D et les inclure dans vos builds.

Une fois que vous avez utilisé les outils dans Visual Studio pour créer des ressources 3D, l'étape suivante consiste à les utiliser dans votre application.Mais avant de pouvoir les utiliser, vos ressources doivent être converties dans un format compatible avec DirectX.Pour vous aider à transformer vos ressources, Visual Studio fournit des personnalisations de la build pour chaque type de ressource qu'il peut produire.Pour inclure les ressources dans votre build, il vous suffit de configurer votre projet pour utiliser les personnalisations de la build, d'ajouter les ressources à votre projet, puis de configurer les ressources pour qu'elles utilisent la personnalisation de la build appropriée.Ensuite, vous pouvez charger les ressources dans votre application et les utiliser en créant et en renseignant des ressources DirectX comme vous le feriez dans une autre application DirectX.

Configuration de votre projet

Avant de déployer vos ressources 3D dans le cadre de votre build, Visual Studio doit connaître les types de ressources que vous souhaitez déployer.Visual Studio connaît déjà de nombreux types de fichiers communs, mais étant donné que seuls certains genres d'applications utilisent des ressources 3D, Visual Studio ne considère pas qu'un projet va générer ces types de fichiers.Vous pouvez indiquer à Visual Studio que votre application utilise ces types de ressources à l'aide des fichiers de personnalisation de la build fournis pour chaque type de ressource, qui indiquent à Visual Studio comment gérer différents types de fichiers de manière utile.Comme ces personnalisations sont appliquées pour chaque projet, tout ce que vous devez faire consiste à ajouter les personnalisations appropriées à votre projet.

Pour ajouter les personnalisations de la build à votre projet

  1. Dans l'Explorateur de solutions, ouvrez le menu contextuel du projet, puis choisissez Personnalisations de la build.La boîte de dialogue Fichiers de personnalisation de la build Visual C++ s'affiche.

  2. Vous avez juste à ajouter ces personnalisations de la build à Visual Studio une fois ; si vous les avez déjà ajoutées, vous pouvez ignorer cette étape.

    Choisissez le bouton Rechercher un fichier existant, puis accédez au répertoire d'installation Visual Studio\Common7\IDE\Extensions\Microsoft\VSGraphics\, qui contient les personnalisations de build qui prennent en charge la génération des ressources 3-D.Sélectionnez l'un des fichiers de personnalisation de build (par exemple, ImageContentTask.targets), puis cliquez sur le bouton Ouvrir.Lorsqu'un message vous demande si vous souhaitez ajouter le répertoire au chemin de recherche des personnalisations de build, cliquez sur Oui.Cela rend disponible trois des personnalisations de la build.

  3. Choisissez le bouton Actualiser la liste pour actualiser le contrôle d'affichage de grille Fichiers de personnalisation de la build disponibles.

  4. Dans le contrôle d'affichage de grille Fichiers de personnalisation de la build disponibles, activez les cases à cocher correspondant aux types de ressources à utiliser dans votre projet, comme il est décrit dans le tableau suivant :

    Type de ressource

    Nom de personnalisation de la build

    Textures et images

    ImageContentTask (.targets, .props)

    Modèles 3D

    MeshContentTask (.targets, .props)

    Shaders

    ShaderGraphContentTask(.targets, .props)

  5. Cliquez sur le bouton OK.

Inclusion de ressources dans votre build

Maintenant que votre projet sait les différents types de ressources 3D à utiliser, l'étape suivante consiste à lui indiquer les fichiers qui sont des ressources 3D et les types de ressources que ces fichiers contiennent.

Pour ajouter un composant à votre build

  1. Dans l'Explorateur de solutions, dans votre projet, ouvrez le menu contextuel d'une ressource, puis choisissez Propriétés.La boîte de dialogue Page de propriétés de la ressource s'affiche.

  2. Vérifiez que les propriétés Configuration et Platform ont les valeurs auxquelles vous souhaitez que vos modifications s'appliquent.

  3. Sous Propriétés de configuration, choisissez Général, puis dans la grille des propriétés, sous Général, affectez à la propriété Type d'élément le type d'élément de pipeline de contenu approprié.Par exemple, pour un fichier image ou un fichier de texture, choisissez le pipeline de contenu d'image.

    Important

    Par défaut, Visual Studio suppose que de nombreux types de fichiers image doivent être classés à l'aide du type d'élément Image intégré dans Visual Studio.Par conséquent, vous devez modifier la propriété Type d'élément de chaque image qui doit être traité par le pipeline de contenu d'image.D'autres types de fichiers sources de contenu de pipeline pour les modèles 3D et les graphiques shaders visuels ont comme valeur par défaut le Type d'élément correct.

  4. Cliquez sur le bouton OK.

Voici les trois types d'éléments de contenu de pipeline et leurs types de fichiers source et de sortie associés.

Type d'élément

Types de fichiers sources

Format du fichier de sortie

Pipeline de contenu d'image

Portable Network Graphics (.png)

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

Direct Draw Surface (.dds)

Graphics Interchange Format (.gif)

Bitmap (.bmp, .dib)

Format d'image TIFF (Tagged Image File Format, .tif, .tiff)

Targa (.tga)

DirectDraw Surface (.dds)

Pipeline de contenu de maillage

Fichier AutoDesk FBX Interchange (.fbx)

Fichier DAE Collada (.dae)

Fichier Wavefront OBJ (.obj)

Fichier de maillage 3D (.cmo)

Pipeline de contenu de shader

Graphe de nuanceur visuel (.dgsl)

Sortie du nuanceur de pixels (.cso)

Configuration des propriétés du pipeline de contenu des ressources

Vous pouvez définir les propriétés du pipeline de contenu de chaque fichier de ressources afin qu'il soit généré de manière spécifique.

Pour configurer les propriétés de contenu de pipeline

  1. Dans l'Explorateur de solutions, dans votre projet, ouvrez le menu contextuel du fichier de ressources, puis choisissez Propriétés.La boîte de dialogue Page de propriétés de la ressource s'affiche.

  2. Vérifiez que les propriétés Configuration et Platform ont les valeurs auxquelles vous souhaitez que vos modifications s'appliquent.

  3. Sous Propriétés de configuration, choisissez le nœud de pipeline de contenu (par exemple, Pipeline de contenu d'image pour les ressources d'image et de texture), puis dans la grille des propriétés, affectez aux propriétés les valeurs appropriées.Par exemple, pour générer des mipmaps pour une ressource de texture au moment de la génération, appliquez à la propriété Générer des mips la valeur Oui.

  4. Cliquez sur le bouton OK.

Hh972446.collapse_all(fr-fr,VS.110).gifConfiguration du pipeline de contenu d'image

Lorsque vous utilisez l'outil de pipeline du contenu de l'image pour générer un composant de texture, vous pouvez compresser la texture de plusieurs façons, indiquer si les niveaux de MIP doivent être générés au moment de la génération, puis modifiez le nom du fichier de sortie.

Propriété

Description

Compresser

Spécifie le type de compression utilisé pour le fichier de sortie.

Les options disponibles sont les suivantes :

  • Aucune compression

  • Compression BC1_UNORM

  • Compression BC1_UNORM_SRGB

  • Compression BC2_UNORM

  • Compression BC2_UNORM_SRGB

  • Compression BC3_UNORM

  • Compression BC3_UNORM_SRGB

  • Compression BC4_UNORM

  • Compression BC4_SNORM

  • Compression BC5_UNORM

  • Compression BC5_SNORM

  • Compression BC6H_UF16

  • Compression BC6H_SF16

  • Compression BC7_UNORM

  • Compression BC7_UNORM_SRGB

Pour plus d'informations sur les formats de compression pris en charge dans les différentes versions de DirectX, consultez le guide de programmation pour DXGI.

Générez des mips

Oui pour générer une chaîne MIP complète au moment de la génération et l'inclure dans le fichier de sortie ; sinon, Non.Si Non et que le fichier source contient déjà une chaîne mipmap, le fichier de sortie aura une chaîne MIP ; sinon, le fichier de sortie n'a aucune chaîne MIP.

Sortie de contenu

Spécifie le nom du fichier de sortie.

Remarque importanteImportant
La modification de l'extension du fichier de sortie n'a aucun effet sur son format de fichier.

Hh972446.collapse_all(fr-fr,VS.110).gifConfiguration du pipeline de contenu de maillage

Lorsque vous utilisez l'outil du pipeline de contenu de maillage pour générer un composant de maillage, vous pouvez modifier le nom du fichier de sortie.

Propriété

Description

Sortie de contenu

Spécifie le nom du fichier de sortie.

Remarque importanteImportant
La modification de l'extension du fichier de sortie n'a aucun effet sur son format de fichier.

Hh972446.collapse_all(fr-fr,VS.110).gifConfiguration du pipeline de contenu de Shader

Lorsque vous utilisez l'outil du pipeline de contenu de nuanceur pour générer un composant de nuanceur, vous pouvez modifier le nom du fichier de sortie.

Propriété

Description

Sortie de contenu

Spécifie le nom du fichier de sortie.

Remarque importanteImportant
La modification de l'extension du fichier de sortie n'a aucun effet sur son format de fichier.

Chargement et utilisation des ressources 3D au moment de l'exécution

Hh972446.collapse_all(fr-fr,VS.110).gifUtilisation des textures et des images

Direct3D fournit des fonctions pour créer des ressources de texture.Dans Direct3D 11, la bibliothèque d'utilitaires D3DX11 fournit des fonctions supplémentaires pour créer des ressources de texture et des affichages de ressources directement à partir des fichiers image.Pour plus d'informations sur la création d'une ressource de texture dans Direct3D 11, consultez Textures.Pour plus d'informations sur l'utilisation de la bibliothèque D3DX11 pour créer une ressource de texture ou une vue de ressource à partir d'un fichier image, consultez Comment : Initialisez une texture à partir d'un fichier.

Hh972446.collapse_all(fr-fr,VS.110).gifUtilisation des modèles 3D

Direct3D 11 ne fournit pas de fonctions pour créer des ressources à partir des modèles 3D.Au lieu de cela, vous devez écrire le code qui lit le fichier de modèle 3D et crée les mémoires tampons de vertex et d'index qui représentent le modèle 3D et toutes les ressources que le modèle nécessite : par exemple, textures ou nuanceurs.

Hh972446.collapse_all(fr-fr,VS.110).gifUtilisation de nuanceurs

Direct3D fournit des fonctions pour créer les ressources shadères et la liaison elles au pipeline programmable graphiques.Pour plus d'informations sur la création d'une ressource shadère de Direct3D et le lier au pipeline, consultez Guide de programmation pour HLSL.

Dans le pipeline graphique programmable, chaque étape du pipeline doit fournir à l'étape suivante du pipeline un résultat mis en forme de manière à être compris.Comme le Concepteur Shader peut uniquement créer des nuanceurs de pixels, cela signifie qu'il appartient à votre application de vérifier que les données qu'elle reçoit sont au format attendu.Plusieurs étapes du Shader programmables se produisent avant le nuanceur de pixels et effectuent des transformations géométriques (le nuanceur de sommets, le nuanceur Hull Shader, le nuanceur de domaine et le nuanceur de géométrie).L'étape de pavage non programmable se produit également avant le nuanceur de pixels.Quelle que soit l'étape qui précède directement le nuanceur de pixels, son résultat doit se présenter au format suivant :

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;
};

Selon les nœuds du concepteur Shader que vous utilisez dans votre nuanceur, vous devrez peut-être fournir des informations supplémentaires formatées en fonction de ces définitions :

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;
};

Voir aussi

Tâches

Comment : exporter un nuanceur

Autres ressources

Utilisation de ressources 3D pour les jeux et les applications