Partager via


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.

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 /mergeUAVsoptions , /matchUAVset /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

  1. 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
    
  2. 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 nuanceurProfils
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 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.