Syntaxe
Voici la syntaxe pour appeler FXC.exe, l’outil du compilateur d’effets. Pour obtenir un exemple, consultez Compilation hors connexion.
Utilisation
fxcSwitchOptionsFilenames
Arguments
Séparez chaque option de commutateur par un espace ou un signe deux-points.
SwitchOptions
[in] Options de compilation. Il n’y a qu’une seule option requise, et beaucoup d’autres sont facultatives. Séparez chacun d’eux par un espace ou deux-points.
Option obligatoire
Profil /T<>
Modèle de nuanceur (voir Profils).
Options facultatives
/?, /help
Imprimez l’aide pour FXC.exe
.
@<command.option.file>
Fichier qui contient des options de compilation supplémentaires. Cette option peut être mélangée avec 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 lignes vides. Les options spécifiées dans le fichier ne doivent pas contenir d’espaces de début ou de fin.
/all_resources_bound
Activez l’aplatissement agressif dans SM5.1+. Nouveautés de Direct3D 12.
/Cc
Assembly codé en couleur de sortie.
/compress
Compressez le bytecode du nuanceur DX10 à partir de fichiers.
/D <id>=<text>
Définissez la macro.
/Décompresser
Décompressez le bytecode du nuanceur DX10 à partir du premier fichier. Les fichiers de sortie doivent être répertoriés dans l’ordre dans lequel ils se trouvaient pendant la compression.
/dumpbin
Charge un fichier binaire au lieu de compiler un nuanceur.
/E <name>
Point d’entrée du nuanceur. Si aucun point d’entrée n’est indiqué, main est considéré comme le nom de l’entrée du nuanceur.
/enable_unbounded_descriptor_tables
Active les tables de descripteur non délimitées. Nouveautés de Direct3D 12.
Fichier /extractrootsignature <>
Extrayez la signature racine du bytecode du nuanceur. Nouveautés de Direct3D 12.
Fichier /Fc<>
Fichier de liste du code de l’assembly de sortie.
Fichier /Fd<>
Extrayez les informations de la base de données du programme de nuanceur (PDB) et écrivez dans le fichier donné. Lorsque vous compilez le nuanceur, utilisez /Fd pour générer un fichier PDB avec des informations de débogage du nuanceur.
Fichier /Fe<>
Générer des avertissements et des erreurs dans le fichier donné.
Fichier /Fh<>
Fichier d’en-tête de sortie contenant le code objet.
Fichier /Fl<
Sortie d’une bibliothèque. Nécessite le D3dcompiler_47.dll ou une version ultérieure de la DLL.
Fichier /Fo<>
Fichier objet de sortie. Souvent avec l’extension « .fxc », bien que d’autres extensions soient utilisées, telles que .o », .obj » ou « .dxbc ».
Fichier /Fx<>
Code d’assembly de sortie et fichier de liste hexadécimal.
/Gch
Compiler en tant qu’effet enfant pour les profils fx_4_x.
Notes
La prise en charge des profils d’effets hérités est déconseillée.
/Pib
Désactivez le mode de performance de l’effet.
/Gec
Activez le mode de compatibilité descendante.
/Ges
Activez le mode strict.
Fichier /getprivate <>
Enregistrez les données privées de l’objet blob du nuanceur (binaire de nuanceur compilé) dans le fichier donné. Extrait des données privées, précédemment incorporées par /setprivate, à partir de l’objet blob du nuanceur.
Vous devez spécifier l’option /dumpbin avec /getprivate. Exemple :
fxc /getprivate ps01.private.data
/dumpbin ps01.with.private.obj
/Gfa
Évitez les constructions de contrôle de flux.
/Gfp
Préférer les constructions de contrôle de flux.
/Sig
Forcer la rigueur IEEE.
/Ppm
Forcer la précision partielle.
/I <include>
Chemin d’accès Include supplémentaire.
/Lx
Littéraux hexadécimaux de sortie. Nécessite le D3dcompiler_47.dll ou une version ultérieure de la DLL.
/matchUAVs
Faire correspondre les allocations d’emplacements UAV du nuanceur de modèle dans le nuanceur actuel. Pour plus d’informations, consultez Remarques.
/mergeUAVs
Fusionner les allocations d’emplacements UAV du nuanceur de modèle et du nuanceur actuel. Pour plus d’informations, consultez Remarques.
/Ni
Sortie des numéros d’instructions dans les listes d’assemblys.
/Non
Décalage d’octet de l’instruction de sortie dans les listes d’assemblys. Lorsque vous produisez un assembly, 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, même si la sortie peut ne pas être identique à /Od /Gfp.
/Op
Désactivez les préshaders (déconseillés).
/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 des registres et permet une simulation de boucle plus rapide.
- O1 : désactive la réorganisation des instructions pour les ps_3_0 et les versions ultérieures.
- O2 : identique à O1. Réservé pour un usage futur.
- O3 : identique à O1. Réservé pour un usage futur.
Fichier /P<>
Prétraitement en fichier (doit être utilisé seul).
/Qstrip_debug
Supprimez les données de débogage du bytecode du nuanceur pour les profils 4_0+
/Qstrip_priv
Supprimez 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 du nuanceur (binaire de nuanceur compilé) que vous avez précédemment incorporé avec l’option /setprivate <file>
.
Vous devez spécifier l’option /dumpbin avec /Qstrip_priv. Exemple :
fxc /Qstrip_priv /dumpbin /Fo ps01.no.private.obj
ps01.with.private.obj
/Qstrip_reflect
Supprimez les données de réflexion du bytecode du nuanceur pour les profils 4_0+
/Qstrip_rootsignature
Supprimer la signature racine du bytecode du nuanceur. Nouveauté de Direct3D 12.
/res_may_alias
Supposons que les UAV/VSR peuvent être alias pour cs_5_0+. Nécessite le D3dcompiler_47.dll ou une version ultérieure de la DLL.
Fichier /setprivate <>
Ajoutez des données privées dans le fichier donné à l’objet blob de nuanceur compilé. Incorpore 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 de nuanceur existant, puis une fois l’objet en mémoire, pour ajouter l’objet blob de données privées. Par exemple, utilisez une commande unique 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 où la deuxième commande charge un objet de 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
Fichier /setrootsignature <>
Attachez la signature racine au bytecode du nuanceur. Nouveauté de Direct3D 12.
Fichier /shtemplate <>
Utilisez un fichier de nuanceur de modèle donné pour la fusion (/mergeUAVs) et la correspondance des ressources (/matchUAVs). Pour plus d’informations, consultez Remarques.
/Vd
Désactivez la validation.
Fichier /verifyrootsignature <>
Vérifiez le bytecode du nuanceur par rapport à la signature racine. Nouveauté de Direct3D 12.
/Vi
Affichez les détails du processus include.
/Vn <name>
Utilisez le nom comme nom de variable dans le fichier d’en-tête.
/WX
Traitez les avertissements comme des erreurs.
/Zi
Activez les informations de débogage.
/Zpc
Empaquetez les matrices dans l’ordre des colonnes principales.
/Zpr
Empaquetez les matrices dans l’ordre principal des lignes.
Noms de fichiers
[in] Fichiers qui contiennent le ou les nuanceurs et/ou les effets.
Notes
Utilisez les /mergeUAVs
options , /matchUAVs
et /shtemplate
pour aligner les emplacements de liaison UAV pour une chaîne de nuanceurs.
Supposons que vous ayez les nuanceurs A.fx, B.fx et C.fx. Pour aligner les emplacements de liaison DAV pour cette chaîne de nuanceurs, vous avez besoin de deux passes de compilation :
Pour aligner les emplacements de liaison de l’UAV pour une chaîne de nuanceurs
- Utilisez /mergeUAVs pour compiler des nuanceurs et spécifiez un objet blob de nuanceur compilé précédemment avec /shtemplate. Exemple :
fxc.exe /T cs_5_0 C.fx /Fo C.o /mergeUAVs /shtemplate Btmp.o
- Utilisez /matchUAVs pour compiler des nuanceurs et spécifiez le dernier objet blob de nuanceur du premier passage avec /shtemplate. Vous pouvez compiler dans n’importe quel ordre. Exemple :
fxc.exe /T cs_5_0 A.fx /Fo A.o /matchUAVs /shtemplate C.o
Vous n’avez pas besoin de recompiler C.fx au deuxième passage.
Après avoir effectué les deux passes de compilation précédentes, vous pouvez utiliser A.o, B.o et C.o comme objets blob de nuanceur finaux avec des emplacements DAV alignés.
Profils
Chaque modèle de nuanceur est étiqueté avec un profil HLSL. Pour compiler un nuanceur sur un modèle de nuanceur particulier, choisissez le profil de nuanceur approprié dans le tableau suivant.
Type de nuanceur | Profils |
---|---|
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 racines dans HLSL, Liaison de ressources dans HLSL 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 ces fonctions : D3D10GetVertexShaderProfile, D3D10GetPixelShaderProfile et D3D10GetGeometryShaderProfile.
Dans Direct3D 9, utilisez les méthodes GetDeviceCaps ou GetDeviceCaps pour récupérer les profils de vertex et de nuanceur de pixels pris en charge par un appareil. La structure D3DCAPS9 retournée par ces méthodes indique les profils de vertex et de nuanceur de pixels pris en charge par un appareil dans ses membres VertexShaderVersion et PixelShaderVersion .
Pour obtenir des exemples, consultez Compilation avec le compilateur actuel.
Rubriques connexes
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour