Partager via


dcl_input_sv (sm4 - asm)

Déclare un registre d’entrée de nuanceur qui s’attend à ce qu’une valeur système soit fournie à partir d’une étape précédente.

dcl_input_sv vN[.mask], systemValueName[, interpolationMode]
Élément Description
vN
[in] Registre de données de vertex.
  • N est un entier qui identifie le numéro de registre.
  • [.mask] est un masque de composant facultatif (.xyzw) qui spécifie les composants de registre à utiliser.
systemValueName
[in] Nom de la valeur système qui est une chaîne (voir sémantique de valeur système) sans le préfixe « SV_ ».
interpolationMode
[in] Facultatif. Mode d’interpolation qui affecte la façon dont les valeurs sont calculées pendant la rastérisation ; le mode est utilisé uniquement par un nuanceur de pixels. Ce peut être l’une des valeurs suivantes :
  • constante : ne pas interpoler entre les valeurs de registre.
  • linéaire : interpoler linéairement entre les valeurs de registre.
  • linearCentroid - identique à linéaire mais centroïde serré lors de l’échantillonnage multiple.
  • linearNoperspective : identique à linéaire, mais sans correction de perspective.
  • linearNoperspectiveCentroid : identique à linéaire, mais sans correction de perspective et centroïde serré lors d’un échantillonnage multiple.

Un masque de composant pour une déclaration de valeur système peut être n’importe quel sous-ensemble approprié de [xyzw]; les déclarations ne peuvent pas se chevaucher (chaque déclaration doit suivre la séquence xyzw). Lorsque vous déclarez des valeurs système scalaires (distance de découpage et distance d’élimination, par exemple), vous pouvez déclarer plusieurs valeurs système dans un même registre. Si vous procédez ainsi, assurez-vous que les autres modificateurs tels que les modes d’interpolation correspondent.

Cette instruction s’applique aux étapes suivantes du nuanceur :

Nuanceur de sommets Nuanceur de géométrie Nuanceur de pixels
x x x

Cette instruction est incluse pour faciliter le débogage d’un nuanceur dans l’assembly ; vous ne pouvez pas créer un nuanceur en langage d’assembly à l’aide du modèle de nuanceur 4.

Exemple

Voici quelques exemples :

// valid
dcl_input v0.y, linear
dcl_input_sv v0.w, clipDistance
dcl_input_sv v0.z, cullDistance
// invalid declarations
dcl_input v0.y, linear
dcl_input_sv v0.x, clipDistance  // the y component was previously declared, this declaration must use 
                                 // either the z or w component

dcl_input v0.y, linearNoPerspective                  // the interpolation mode is linear-no-perspective
dcl_input_sv v0.z, renderTargetArrayIndex, constant  // the interpolation modes is constant
                                                     // the interpolation modes must match

Modèle de nuanceur minimal

Cette fonction est prise en charge dans les modèles de nuanceur suivants.

Modèle de nuanceur Pris en charge
Modèle de nuanceur 5 Oui
Modèle de nuanceur 4.1 Oui
Modèle de nuanceur 4 Oui
Modèle de nuanceur 3 (DirectX HLSL) non
Shader Model 2 (DirectX HLSL) non
Modèle de nuanceur 1 (DirectX HLSL) non

Shader Model 4 Assembly (DirectX HLSL)