Informations de référence sur le nuanceur Asm
Les nuanceurs pilotent le pipeline graphique programmable.
Informations de référence sur le nuanceur de vertex
Les différences de nuanceur de vertex résument les différences entre les versions du nuanceur de vertex.
Informations de référence sur le nuanceur de pixels
Les différences du nuanceur de pixels résument les différences entre les versions du nuanceur de pixels.
Référence des modèles de nuanceur 4 et 5
Les sections Assembly du nuanceur Modèle 4 et Shader Model 5 Assembly décrivent les instructions prises en charge par les modèles de nuanceur 4 et 5.
Comportement des registres de constantes dans les nuanceurs d’assembly
Il existe deux façons de définir des registres de constantes dans un nuanceur d’assembly :
- Déclarez une constante de nuanceur dans le code d’assembly à l’aide de l’une des instructions def*.
- Utilisez l’une des méthodes d’API Set***ShaderConstant*.
Constantes de nuanceur Direct3D 9
Dans Direct3D 9, la durée de vie des constantes définies dans un nuanceur donné est limitée à l’exécution de ce nuanceur uniquement (et n’est pas substituable). Les constantes définies dans Direct3D 9 n’ont aucun effet secondaire en dehors du nuanceur.
Voici un exemple utilisant Direct3D 9 :
Given:
Create shader1 which references c4 and defines it with the def instruction
Scenario 1:
Call Set***Shader shader1
Call Set***ShaderConstant* to set c4
Call Draw
Result: The shader will see the def'd value in c4
Given:
Scenario 1 has just completed
Create shader2 (which references c4 but does not use the def instruction
to define it)
Scenario 2:
Call Set***Shader shader2
Call Draw
Result: The shader will see the value last set in c4 by
Set***ShaderConstant* in scenario 1. This is because shader 2
didn't def c4.
Dans Direct3D 9, l’appel de Get***ShaderConstant* récupère uniquement les valeurs constantes définies via Set***ShaderConstant*.
Constantes de nuanceur Direct3D 8
Ce comportement est différent dans Direct3D 8.x.
Given:
Create shader1 which references c4 and defines it with the def instruction
Scenario 1 (repeated with Direct3D 8):
Call Set***Shader with shader1
Call Set***ShaderConstant to set c4
Call Draw
Result: The shader will see the value in c4 from Set***ShaderConstant
Dans Direct3D 8.x Set**ShaderConstant prend effet immédiatement. Examinez le scénario suivant :
Given:
Create shader1 which references c4 and defines it with the def instruction
Scenario 3:
Call Set***Shader with shader1
Call Draw
Result: The shader will see the def'd value in c4
Given:
Scenario 3 has just completed
Create shader2 (which references c4 but does not use the def instruction
to define it)
Scenario 4 :
Call Set***Shader with shader2
Call Draw
Result: The shader will see the def'd value in c4 (set by def in shader 1)
Le résultat indésirable est que l’ordre dans lequel les nuanceurs sont définis peut affecter le comportement observé des nuanceurs individuels.
Configuration requise du modèle de pilote de nuanceur
Les interfaces Direct3D 9 sont limitées aux pilotes DDI (Device Driver Interface) qui sont de niveau DirectX 7 et supérieur. Pour case activée le niveau DDI, exécutez l’outil de diagnostic DirectX et examinez le fichier texte enregistré.
Pour référence, les interfaces Direct3D 8 fonctionnent uniquement sur les pilotes DDI de niveau DirectX 6 et supérieur.
Format binaire du nuanceur
La disposition au niveau du bit du flux d’instructions du nuanceur est définie dans D3d9types.h. Si vous souhaitez concevoir votre propre compilateur ou outils de construction de nuanceur et que vous souhaitez obtenir plus d’informations sur le flux de jetons de nuanceur, reportez-vous au Kit de développement de pilotes Direct3D 9 (DDK).
Langage de nuanceur de type C
Consultez Référence HLSL pour découvrir un langage de nuanceur C.
Rubriques connexes