Condividi tramite


dcl_input_sv (sm4 - asm)

Dichiara un registro shader-input che prevede che venga fornito un valore di sistema da una fase precedente.

dcl_input_sv vN[.mask], systemValueName[, interpolationMode]
Elemento Descrizione
vN
[in] Registro dei dati dei vertici.
  • N è un intero che identifica il numero di registro.
  • [.mask] è una maschera componente facoltativa (.xyzw) che specifica quale dei componenti del registro da usare.
systemValueName
[in] Nome del valore di sistema che è una stringa (vedere semantica del valore di sistema) senza il prefisso "SV_".
interpolationMode
[in] Facoltativo. Modalità di interpolazione che influisce sulla modalità di calcolo dei valori durante la rasterizzazione; la modalità viene usata solo da un pixel shader. Può essere uno dei valori seguenti:
  • costante: non interpolare tra i valori del registro.
  • lineare- interpolare in modo lineare tra i valori del registro.
  • linearCentroid - uguale a lineare ma centroid bloccato quando si esegue il multicampionamento.
  • linearNoperspective - uguale a lineare ma senza correzione di prospettiva.
  • linearNoperspectiveCentroid - uguale a lineare ma senza correzione di prospettiva e centroid bloccato quando si esegue la multicampionamento.

Una maschera componente per una dichiarazione di valore di sistema può essere qualsiasi subset appropriato di [xyzw]; le dichiarazioni potrebbero non sovrapporsi (ogni dichiarazione deve seguire la sequenza xyzw). Quando si dichiarano valori di sistema scalari (distanza di clip e distanza del cull, ad esempio), è possibile dichiarare più valori di sistema in un singolo registro. In tal caso, assicurarsi che altri modificatori come le modalità di interpolazione corrispondano.

Questa istruzione si applica alle fasi dello shader seguenti:

Vertex shader Geometry shader Pixel shader
x x x

Questa istruzione è inclusa per facilitare il debug di uno shader nell'assembly; non è possibile creare uno shader nel linguaggio dell'assembly usando Shader Model 4.

Esempio

Di seguito sono riportati alcuni esempi:

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

Modello di shader minimo

Questa funzione è supportata nei modelli shader seguenti.

Modello di shader Supportato
Modello shader 5
Modello shader 4.1
Modello shader 4
Modello shader 3 (DirectX HLSL) no
Modello shader 2 (DirectX HLSL) no
Modello shader 1 (DirectX HLSL) no

Shader Model 4 Assembly (DirectX HLSL)