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.
/nologo
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
- 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
- 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 nuanceur | Profiles |
---|---|
Nuanceur de calcul |
cs_4_1 cs_5_0 cs_5_1 |
Nuanceur de domaine |
ds_5_1 |
Nuanceur de géométrie |
gs_4_1 gs_5_0 gs_5_1 |
Liaison du nuanceur HLSL |
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 |
Nuanceur de coque |
hs_5_1 |
Nuanceur de pixels |
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 |
|
Nuanceur de texture |
|
Nuanceur de sommets |
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.