dcl_input_sv (sm4 – asm)

Deklariert ein Shadereingaberegister, das erwartet, dass ein Systemwert aus einer vorherigen Phase bereitgestellt wird.

dcl_input_sv vN[.mask], systemValueName[, interpolationMode]
Element BESCHREIBUNG
vN
[in] Ein Scheitelpunktdatenregister.
  • N ist eine ganze Zahl, die die Registernummer identifiziert.
  • [.mask] ist eine optionale Komponentenmaske (.xyzw), die angibt, welche der Registerkomponenten verwendet werden sollen.
systemValueName
[in] Der Systemwertname, bei dem es sich um eine Zeichenfolge (siehe Systemwertsemantik) ohne das Präfix "SV_" handelt.
Interpolationmode
[in] Optional. Der Interpolationsmodus, der sich auf die Berechnung von Werten während der Rasterung auswirkt; der Modus wird nur von einem Pixel-Shader verwendet. Es kann sich um einen der folgenden Werte handeln:
  • Konstante: Interpolieren Sie nicht zwischen Registerwerten.
  • linear: Interpolieren Sie linear zwischen Registerwerten.
  • linearCentroid – identisch mit linearen, aber zentrierten Klemmungen beim Multisampling.
  • linearNoperspective - identisch mit linear, aber ohne perspektivische Korrektur.
  • linearNoperspectiveCentroid - gleich linear, aber ohne Perspektivkorrektur und zentriert beim Multisampling.

Eine Komponentenmaske für eine Systemwertdeklaration kann eine beliebige geeignete Teilmenge von [xyzw]sein. Deklarationen dürfen sich nicht überlappen (jede Deklaration muss der Sequenz xyzw folgen). Beim Deklarieren skalarer Systemwerte (z. B. Clipabstand und Kullabstand) können Sie mehrere Systemwerte in einem einzelnen Register deklarieren. Stellen Sie in diesem Fall sicher, dass andere Modifizierer wie die Interpolationsmodi übereinstimmen.

Diese Anweisung gilt für die folgenden Shaderphasen:

Vertexshader Geometrie-Shader Pixelshader
x x x

Diese Anweisung ist enthalten, um das Debuggen eines Shaders in der Assembly zu unterstützen. Sie können keinen Shader in der Assemblysprache mit Shader Model 4 erstellen.

Beispiel

Hier einige Beispiele:

// 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

Minimales Shadermodell

Diese Funktion wird in den folgenden Shadermodellen unterstützt.

Shadermodell Unterstützt
Shadermodell 5 Ja
Shadermodell 4.1 ja
Shadermodell 4 ja
Shadermodell 3 (DirectX HLSL) Nein
Shadermodell 2 (DirectX HLSL) Nein
Shadermodell 1 (DirectX HLSL) Nein

Shadermodell 4-Assembly (DirectX HLSL)