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 |
---|---|
|
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. |
|
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 |
---|---|
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
Deuxième niveau d’optimisation le plus bas. Direct3D 9 - non Direct3D 10 - oui |
|
Deuxième niveau d’optimisation le plus élevé. Direct3D 9 - non Direct3D 10 - oui |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
---|---|
|
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. |
|
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. |
|
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. |
|
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 :
- D3DXCompileShader (ou D3DXCompileShaderFromFile ou D3DXCompileShaderFromResource)
- CompileEffect (ou CompileShader)
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 |
|
Voir aussi