Syntaxe

Voici la syntaxe permettant d’appeler FXC.exe, l’outil de compilateur d’effets. Pour obtenir un exemple, consultez Compilation hors connexion.

Utilisation

fxc SwitchOptions Filenames

Arguments

Séparer chaque option de commutateur d'un espace ou d'un signe deux-points.

SwitchOptions

[in] Compiler les options. Une seule option est obligatoire, mais il existe de nombreuses options facultatives. Séparez-les par un espace ou un signe deux-points.

Option obligatoire

/T <profile>

Modèle nuanceur (voir Profils).

Options facultatives

/?, /help

Afficher l’aide pour FXC.exe.

@<command.option.file>

Fichier qui contient des options de compilation supplémentaires. Cette option peut être conjuguée à d’autres options de compilation de ligne de commande. Le fichier command.option.file ne doit contenir qu'une seule option par ligne. Le fichier command.option.file ne peut pas contenir de ligne vide. Les options spécifiées dans le fichier ne doivent pas contenir d’espaces de début ou de fin.

/all_resources_bound

Activer l’aplatissement agressif dans SM5.1+. Nouveautés de Direct3D 12.

/Cc

Assemblage à code couleur de sortie.

/compress

Compresser le bytecode du nuanceur DX10 à partir de fichiers.

/D <id>=<text>

Définir une macro.

/decompress

Décompresser le bytecode du nuanceur DX10 à partir du premier fichier. Les fichiers de sortie doivent être listés dans l’ordre dans lequel ils se trouvaient pendant la compression.

/dumpbin

Charge un fichier binaire plutôt que de compiler un nuanceur.

/E <name>

Point d’entrée du nuanceur. Si aucun point d’entrée n’est donné, main est considéré comme le nom d’entrée du nuanceur.

/enable_unbounded_descriptor_tables

Active les tableaux de descripteurs sans restriction. Nouveautés de Direct3D 12.

/extractrootsignature <file>

Extraire la signature racine du bytecode du nuanceur. Nouveautés de Direct3D 12.

/Fc <file>

Fichier de liste de code d’assemblage de sortie.

/Fd <file>

Extraire les informations de base de données du programme de nuanceur (PDB) et écrire dans le fichier donné. Lorsque vous compilez le nuanceur, utilisez /Fd pour générer un fichier PDB avec les informations de débogage du nuanceur.

/Fe <file>

Avertissements et erreurs de sortie dans le fichier donné.

/Fh <file>

Fichier d’en-tête de sortie contenant le code de l'objet.

/Fl <file

Définir la sortie d'une bibliothèque. Nécessite le fichier D3dcompiler_47.dll ou une version ultérieure de ce fichier.

/Fo <file>

Fichier objet de sortie. L'extension de ce fichier est souvent .fxc, bien que d’autres extensions soient utilisées, comme .o, .obj ou .dxbc.

/Fx <file>

Code d’assemblage de sortie et fichier de référencement hexadécimal.

/Gch

Compiler en tant qu’effet enfant pour les profils fx_4_x.

Remarque

Les profils Effets hérités ne sont plus pris en charge.

/Gdp

Désactiver le mode de performances de l’effet.

/Gec

Activer le mode de rétrocompatibilité.

/Ges

Activer le mode strict.

/getprivate <file>

Enregistrer des données privées à partir de l’objet blob de nuanceur (binaire du nuanceur compilé) dans le fichier donné. Extrait les données privées, précédemment intégrées par /setprivate, à partir de l’objet blob du nuanceur.

Vous devez indiquer l’option /dumpbin avec /getprivate. Par exemple :

fxc /getprivate ps01.private.data 
    /dumpbin ps01.with.private.obj
/Gfa

Éviter les constructions de contrôle de flux.

/Gfp

Privilégier les constructions de contrôle de flux.

/Gis

Forcer la rigueur IEEE.

/Gpp

Forcer la précision partielle.

/I <include>

Chemin d'accès à inclure supplémentaire.

/Lx

Littéraux hexadécimaux de sortie. Nécessite le fichier D3dcompiler_47.dll ou une version ultérieure de ce fichier.

/matchUAVs

Mettre en correspondance les attributions d’emplacements UAV du nuanceur de modèle dans le nuanceur actuel. Pour en savoir plus, consultez Remarques.

/mergeUAVs

Fusionner les attributions d’emplacements UAV du nuanceur de modèles et du nuanceur actuel. Pour en savoir plus, consultez Remarques.

/Ni

Numéros d’instruction de sortie dans les listes d’assemblages.

/No

Décalage d’octet d’instruction de sortie dans les listes d’assemblages. Lorsque vous produisez un assemblage, utilisez /No pour l’annoter avec le décalage d’octet pour chaque instruction.

Supprime le message de copyright.

/Od

Désactivez les optimisations. /Od implique /Gfp bien que la sortie ne puisse pas être identique à /Od /Gfp.

/Op

Désactiver les prénuanceurs (obsolète).

/O0 /O1, /O2, /O3

Niveaux d’optimisation. O1 est le paramètre par défaut.

  • O0 : désactive la réorganisation des instructions. Cela permet de réduire la charge d’inscription et d’accélérer la simulation de boucle.
  • O1 : désactive la réorganisation des instructions pour ps_3_0 et versions ultérieures.
  • O2 : identique à O1. Réservé pour un usage futur.
  • O3 : identique à O1. Réservé pour un usage futur.
/P <file>

Prétraiter le fichier (doit être utilisé seul).

/Qstrip_debug

Supprimer les données de débogage du bytecode du nuanceur pour les profils 4_0+.

/Qstrip_priv

Supprimer les données privées du bytecode du nuanceur 4_0+. Supprime les données privées (séquence arbitraire d’octets) de l’objet blob de nuanceur (binaire du nuanceur compilé) précédemment intégré avec l’option /setprivate <file> .

Vous devez indiquer l’option /dumpbin avec /Qstrip_priv. Par exemple :

fxc /Qstrip_priv /dumpbin /Fo ps01.no.private.obj 
    ps01.with.private.obj
/Qstrip_reflect

Supprimer les données reflétées du bytecode du nuanceur pour les profils 4_0+.

/Qstrip_rootsignature

Supprimer la signature racine du bytecode du nuanceur. Nouveautés de Direct3D 12.

/res_may_alias

Partir du principe que les UAVs/SRVs peuvent constituer un alias pour cs_5_0+. Nécessite le fichier D3dcompiler_47.dll ou une version ultérieure de ce fichier.

/setprivate <file>

Ajouter des données privées dans le fichier donné à l’objet blob de nuanceur compilé. Intègre le fichier donné, qui est traité comme une mémoire tampon brute, dans l’objet blob du nuanceur. Utilisez /setprivate pour ajouter des données privées lorsque vous compilez un nuanceur. Vous pouvez également utiliser l’option /dumpbin avec /setprivate pour charger un objet nuanceur existant, puis une fois que l’objet est en mémoire, pour ajouter l’objet blob de données privé. Par exemple, utilisez une seule commande avec /setprivate pour ajouter des données privées à un objet blob de nuanceur compilé :

fxc /T ps_4_0 /Fo ps01.with.private.obj ps01.fx 
    /setprivate ps01.private.data

Vous pouvez également utiliser deux commandes. La seconde charge un objet nuanceur, puis ajoute des données privées :

fxc /T ps_4_0 /Fo ps01.no.private.obj ps01.fx
fxc /dumpbin /Fo ps01.with.private.obj ps01.no.private.obj 
    /setprivate ps01.private.data
/setrootsignature <file>

Attachez la signature racine au bytecode du nuanceur. Nouveautés de Direct3D 12.

/shtemplate <file>

Utilisez le fichier de nuanceur de modèles donné pour fusionner (/mergeUAVs) et mettre en correspondance (/matchUAVs) les ressources. Pour en savoir plus, consultez Remarques.

/Vd

Désactiver la validation.

/verifyrootsignature <file>

Vérifier le bytecode du nuanceur par rapport à la signature racine. Nouveautés de Direct3D 12.

/Vi

Afficher des détails sur le processus d'inclusion.

/Vn <name>

Utilisez name comme nom de variable dans le fichier d’en-tête.

/WX

Considérez les avertissements comme des erreurs.

/Zi

Activez les informations de débogage.

/Zpc

Regrouper les matrices dans l’ordre column-major.

/Zpr

Regrouper les matrices dans l'ordre row-major.

Noms de fichiers

[in] Fichiers qui contiennent le ou les nuanceurs et/ou les effets.

Notes

Utilisez les options /mergeUAVs, /matchUAVs, et /shtemplate pour aligner les emplacement de liaison UAV pour une chaîne de nuanceurs.

Imaginez que vous avez des nuanceurs A.fx, B.fx et C.fx. Pour aligner les emplacements de liaison UAV pour cette chaîne de nuanceurs, deux passes de compilation sont nécessaires :

Pour aligner les emplacements de liaison UAV pour une chaîne de nuanceurs

  1. Utilisez /mergeUAVs pour compiler des nuanceurs, puis indiquez un objet blob de nuanceur compilé précédemment avec /shtemplate. Par exemple :
    fxc.exe /T cs_5_0 C.fx /Fo C.o /mergeUAVs /shtemplate Btmp.o
    
  2. Utilisez /matchUAVs pour compiler des nuanceurs et indiquez le dernier objet blob de nuanceur à partir du premier passage avec /shtemplate. Vous pouvez compiler dans n’importe quel ordre. Par exemple :
    fxc.exe /T cs_5_0 A.fx /Fo A.o /matchUAVs /shtemplate C.o
    

Il n'est pas nécessaire de recompiler C.fx dans la deuxième passe.

Après avoir effectué les deux passes de compilation précédentes, vous pouvez utiliser A.o, B.o et C.o en tant qu’objets blob de nuanceur finaux avec des emplacements UAV alignés.

Profiles

Chaque modèle de nuanceur est étiqueté avec un profil HLSL. Pour compiler un nuanceur à partir d'un modèle de nuanceur particulier, choisissez le profil de nuanceur qui convient dans le tableau suivant.

Type de nuanceurProfiles
Nuanceur de calcul
cs_4_0
cs_4_1
cs_5_0
cs_5_1
Nuanceur de domaine
ds_5_0
ds_5_1
Nuanceur de géométrie
gs_4_0
gs_4_1
gs_5_0
gs_5_1
Liaison du nuanceur HLSL
lib_4_0
lib_4_1
lib_4_0_level_9_1
lib_4_0_level_9_1_vs_only
lib_4_0_level_9_1_ps_only
lib_4_0_level_9_3
lib_4_0_level_9_3_vs_only
lib_4_0_level_9_3_ps_only
lib_5_0
Pour plus d’informations sur la liaison de nuanceur, consultez ID3D11Linker et ID3D11FunctionLinkingGraph.
Nuanceur de coque
hs_5_0
hs_5_1
Nuanceur de pixels
ps_2_0
ps_2_a
ps_2_b
ps_2_sw
ps_3_0
ps_3_sw
ps_4_0
ps_4_0_level_9_0
ps_4_0_level_9_1
ps_4_0_level_9_3
ps_4_1
ps_5_0
ps_5_1
Signature racine
rootsig_1_0
Nuanceur de texture
tx_1_0
Nuanceur de sommets
vs_1_1
vs_2_0
vs_2_a
vs_2_sw
vs_3_0
vs_3_sw
vs_4_0
vs_4_0_level_9_0
vs_4_0_level_9_1
vs_4_0_level_9_3
vs_4_1
vs_5_0
vs_5_1

Notes de version

Pour Direct3D 12, consultez Spécification de signatures racine en langage HLSL, Liaison de ressource dans HSL et Indexation dynamique à l’aide de HLSL 5.1.

Dans Direct3D 10, utilisez l’API pour obtenir le profil de vertex, de géométrie et de nuanceur de pixels le mieux adapté à un appareil donné en appelant les fonctions suivantes : D3D10GetVertexShaderProfile, D3D10GetPixelShaderProfile etD3D10GetGeometryShaderProfile.

Dans Direct3D 9, utilisez les méthodes GetDeviceCaps ou GetDeviceCaps pour extraire les profils de vertex et de nuanceur de pixel prise en charge par un appareil donné. La structure D3DCAPS9 renvoyée par ces méthodes indique les profils de vertex et de nuanceur de pixel pris en charge par un appareil dans ses membres VertexShaderVersion et PixelShaderVersion.

Pour obtenir des exemples, consultez Effectuer une compilation avec le compilateur actuel.