Indicateurs D3DXSHADER

Les indicateurs D3DXSHADER sont utilisés pour l’analyse, la compilation ou l’assemblage de nuanceurs.

Indicateurs de l’analyseur

Les indicateurs de temps d’analyse sont utilisés uniquement par le système d’effets (avant la compilation des effets) lorsque vous créez un compilateur d’effets. Par exemple, vous pouvez créer un objet de compilateur avec D3DXSHADER_PACKMATRIX_COLUMNMAJOR, puis utiliser cet objet de compilateur à plusieurs reprises avec différents indicateurs de compilateur pour générer du code spécialisé.

Constante Description
D3DXSHADER_PACKMATRIX_COLUMNMAJOR
/Zpc
Sauf indication explicite, les matrices sont empaquetées dans l’ordre principal des colonnes (chaque vecteur se trouve dans une seule colonne) lorsqu’elles sont passées vers et depuis le nuanceur. Cela est généralement plus efficace, car il permet la multiplication de matrices vectorielles à l’aide d’une série de produits à points.
D3DXSHADER_PACKMATRIX_ROWMAJOR
/Zpr
Sauf indication explicite, les matrices sont empaquetées dans l’ordre principal de ligne (chaque vecteur se trouve dans une seule ligne) lorsqu’elles sont transmises au nuanceur ou à partir de celui-ci.

Indicateurs du compilateur

Le compilateur HLSL DirectX 10 est désormais le compilateur par défaut. Pour plus d’informations, consultez Effect-Compiler Tool .

Le tableau suivant détaille les indicateurs disponibles dans Direct3D 9 et Direct3D 10. La valeur de l’indicateur est l’option fxc équivalente.

Constante/valeur Description
D3DXSHADER_AVOID_FLOW_CONTROL
/Gfa
Il s’agit d’un conseil pour que le compilateur évite d’utiliser des instructions de contrôle de flux.
Direct3D 9 - oui
Direct3D 10 - oui
D3DXSHADER_DEBUG
/Zi
Insérez le nom de fichier de débogage, les numéros de ligne et les informations de type et de symbole pendant la compilation du nuanceur.
Direct3D 9 - oui
Direct3D 10 - oui
D3DXSHADER_ENABLE_BACKWARDS_COMPATIBILITY
/Gec
Compilez les nuanceurs ps_1_x en tant que ps_2_0. Les effets qui spécifient ps_1_x cibles seront compilés sur ps_2_0 cibles, car il s’agit de la version minimale du nuanceur prise en charge par la version du compilateur de nuanceur fournie avec DirectX 10. Cet indicateur n’a aucun effet lorsqu’il est utilisé avec des cibles de compilation de niveau supérieur.
Direct3D 9 - non
Direct3D 10 - oui
D3DXSHADER_FORCE_PS_SOFTWARE_NOOPT
N/A
Forcez le compilateur à compiler par rapport à la cible logicielle la plus élevée disponible pour les nuanceurs de pixels. Cet indicateur désactive également les optimisations et le débogage.
Direct3D 9 - oui
Direct3D 10 - oui
D3DXSHADER_FORCE_VS_SOFTWARE_NOOPT
N/A
Forcez le compilateur à compiler par rapport à la cible logicielle la plus élevée disponible pour les nuanceurs de vertex. Cet indicateur désactive également les optimisations et le débogage.
Direct3D 9 - oui
Direct3D 10 - oui
D3DXSHADER_IEEE_STRICTNESS
/Sig
Désactivez les optimisations qui peuvent faire en sorte que la sortie d’un programme de nuanceur compilé diffère de la sortie d’un programme compilé avec le compilateur de nuanceur DirectX 9 en raison de petites erreurs de précision dans les mathématiques à virgule flottante.
Direct3D 9 - non
Direct3D 10 - oui
D3DXSHADER_NO_PRESHADER
/Op
Désactive les préshadeurs. Le compilateur ne extrait pas les expressions statiques à des fins d’évaluation sur le processeur hôte. En outre, le compilateur ne charge pas d’expressions lors de la compilation de fonctions autonomes.
Direct3D 9 - oui
Direct3D 10 - oui
D3DXSHADER_OPTIMIZATION_LEVEL0
/O0
Niveau d’optimisation le plus bas. Peut produire du code plus lent, mais le fera plus rapidement. Cela peut être utile dans un cycle de développement de nuanceur très itératif.
Direct3D 9 - non
Direct3D 10 - oui
D3DXSHADER_OPTIMIZATION_LEVEL1
/O1
Deuxième niveau d’optimisation le plus bas.
Direct3D 9 - non
Direct3D 10 - oui
D3DXSHADER_OPTIMIZATION_LEVEL2
/O2
Deuxième niveau d’optimisation le plus élevé.
Direct3D 9 - non
Direct3D 10 - oui
D3DXSHADER_OPTIMIZATION_LEVEL3
/O3
Niveau d’optimisation le plus élevé. Produit le meilleur code possible, mais peut prendre beaucoup plus de temps. Cela sera utile pour les builds finales d’une application où les performances sont le facteur le plus important.
Direct3D 9 - non
Direct3D 10 - oui
D3DXSHADER_PARTIALPRECISION
/Ppm
Forcez tous les calculs du nuanceur résultant à se produire à une précision partielle. Cela peut accélérer l’évaluation des nuanceurs sur certains matériels.
Direct3D 9 - oui
Direct3D 10 - oui
D3DXSHADER_PREFER_FLOW_CONTROL
/Gfp
Il s’agit d’un indicateur pour que le compilateur préfère utiliser les instructions de contrôle de flux.
Direct3D 9 - oui
Direct3D 10 - oui
D3DXSHADER_SKIPOPTIMIZATION
/Od
Demandez au compilateur d’ignorer les étapes d’optimisation pendant la génération du code. Sauf si vous essayez d’isoler un problème dans votre code et que vous soupçonnez le compilateur, l’utilisation de cette option n’est pas recommandée.
Direct3D 9 - oui
Direct3D 10 - oui
D3DXSHADER_SKIPVALIDATION
/Vd
Ne validez pas le code généré par rapport aux fonctionnalités et contraintes connues. Cette option est recommandée uniquement lors de la compilation de nuanceurs connus pour fonctionner (c’est-à-dire, les nuanceurs qui ont déjà été compilés sans cette option). Les nuanceurs sont toujours validés par le runtime avant d’être définis sur l’appareil.
Direct3D 9 - oui
Direct3D 10 - oui
D3DXSHADER_USE_LEGACY_D3DX9_31_DLL
/LD
Activez l’utilisation du compilateur HLSL Direct3D 9 d’origine. OCT2006_d3dx9_31_x86.cab ou OCT2006_d3dx9_31_x64.cab doivent être inclus dans le cadre de la redisttion des applications. Cet indicateur est nécessaire pour compiler ps_1_x nuanceurs sans utiliser l’indicateur de promotion pour ps_2_0. La spécification de cet indicateur lors de l’obtention d’une interface ID3DXEffectCompiler entraîne des appels ultérieurs à CompileEffect et CompileShader via cet objet pour utiliser le compilateur hérité.
Direct3D 9 - oui
Direct3D 10 - non

Indicateurs d’assembleur

Les indicateurs d’assembleur sont utilisés par le système d’effets pour optimiser le nuanceur et le code d’assembly d’effet.

Constante Description
D3DXSHADER_DEBUG
Insérez le nom de fichier de débogage, les numéros de ligne et les informations de type et de symbole pendant la compilation du nuanceur.
D3DXSHADER_FORCE_PS_SOFTWARE_NOOPT
Forcez le compilateur à compiler par rapport à la cible logicielle la plus élevée disponible pour les nuanceurs de pixels. Cet indicateur désactive également les optimisations et le débogage.
D3DXSHADER_FORCE_VS_SOFTWARE_NOOPT
Forcez le compilateur à compiler par rapport à la cible logicielle la plus élevée disponible pour les nuanceurs de vertex. Cet indicateur désactive également les optimisations et le débogage.
D3DXSHADER_SKIPVALIDATION
Ne validez pas le code généré par rapport aux fonctionnalités et contraintes connues. Cette option est recommandée uniquement lors de la compilation de nuanceurs connus pour fonctionner (c’est-à-dire, les nuanceurs qui ont déjà été compilés sans cette option). Les nuanceurs sont toujours validés par le runtime avant d’être définis sur l’appareil.

Notes

Le système d’effets utilise des indicateurs d’analyseur lorsqu’il est appelé par les fonctions suivantes :

Le système d’effet utilise des indicateurs de compilateur lorsqu’il est appelé par les fonctions suivantes :

En outre, vous pouvez utiliser des indicateurs de compilateur lors de la création d’un effet en appelant D3DXCreateEffect (ou D3DXCreateEffectFromFile ou D3DXCreateEffectFromResource).

  • Si vous transmettez un fichier .fx non compilé, le système d’effet utilise le paramètre d’entrée d’indicateur pendant la compilation.
  • Si vous transmettez un effet compilé, le système d’effets ignore les indicateurs du compilateur, car ils ne sont pas nécessaires pour charger l’effet.

Le système d’effet utilise des indicateurs d’assembleur lorsqu’il est appelé par les fonctions suivantes :

L’application d’indicateurs de compilateur ou d’indicateurs d’assembleur à l’API incorrecte échoue à la validation du nuanceur. Vérifiez la valeur de retour du code d’erreur Direct3D de la fonction avec l’outil Recherche d’erreur DirectX (DXErr.exe) pour vous aider à suivre cette erreur. Vous pouvez obtenir DXErr.exe et en savoir plus à partir du Kit de développement logiciel (SDK) DirectX. Pour plus d’informations sur le Kit de développement logiciel (SDK) DirectX, consultez Où se trouve le Kit de développement logiciel (SDK) DirectX ?.

Spécifications

Condition requise Valeur
En-tête
D3dx9shader.h

Voir aussi

Constantes D3DX