Modificatori per ps_2_0 e versioni successive

I modificatori di istruzioni influiscono sul risultato dell'istruzione prima che venga scritto nel registro di destinazione.

Questa sezione contiene informazioni di riferimento per i modificatori di istruzioni implementati da pixel shader versione 2_0 e successive.

Name Sintassi 2_0 2_x 2_sw 3_0 3_sw
Baricentro _Baricentro x x x x x
Partial_Precision _Pp x x x x x
Saturazione _Sab x x x x x

 

Baricentro

Il modificatore centroide è un modificatore facoltativo che blocca l'interpolazione degli attributi all'interno dell'intervallo della primitiva quando un centro pixel multisample non è coperto dalla primitiva. Questo problema può essere visualizzato nel campionamento centroide.

È possibile applicare il modificatore centroide a un'istruzione di assembly, come illustrato di seguito:

dcl_texcoord0_centroid v0

È anche possibile applicare il modificatore centroide a una semantica, come illustrato di seguito:

float4 TexturePointCentroidPS( float4 TexCoord : TEXCOORD0_centroid ) : COLOR0
{
    return tex2D( PointSampler, TexCoord );
}

Inoltre, qualsiasi registro colori di input (v#) dichiarato con una semantica del colore avrà automaticamente il centroide applicato. Le sfumature calcolate dagli attributi campionati al centro non sono sicuramente accurate.

Precisione parziale

Il modificatore di istruzioni di precisione parziale (_pp) indica le aree in cui la precisione parziale è accettabile, purché l'implementazione sottostante la supporti. Le implementazioni sono sempre libere di ignorare il modificatore ed eseguire le operazioni interessate con precisione completa.

Il modificatore _pp può verificarsi in due contesti:

  • In una dichiarazione di coordinata della trama per abilitare il passaggio delle coordinate della trama al pixel shader in formato con precisione parziale. Ciò consente, ad esempio, l'uso di coordinate di trama per inoltrare i dati dei colori al pixel shader, che può essere più veloce con precisione parziale rispetto a con precisione completa in alcune implementazioni. In assenza di questo modificatore, le coordinate della trama devono essere passate con precisione completa.
  • In qualsiasi istruzione, incluse le istruzioni di caricamento delle trame. Ciò indica che l'implementazione può eseguire l'istruzione con precisione parziale e archiviare un risultato di precisione parziale. In assenza di un modificatore esplicito, l'istruzione deve essere eseguita con precisione completa (indipendentemente dalla precisione di input).

Esempi:

dcl_texcoord0_pp t1
cmp_pp r0, r1, r2, r3

Saturazione

Il modificatore di istruzioni saturo (_sat) satura (o blocca) il risultato dell'istruzione nell'intervallo [0, 1] prima di scrivere nel registro di destinazione.

Il modificatore di istruzioni _sat può essere usato con qualsiasi istruzione ad eccezione di frc - ps, sincos - ps e qualsiasi istruzione tex*.

Per ps_2_0, ps_2_x e ps_2_sw, il modificatore di istruzioni _sat non può essere usato con le istruzioni scritte in qualsiasi registro di output (Registro colori di output o Registro profondità di output). Questa restrizione non si applica a ps_3_0 e versioni successive.

Esempio:

dp3_sat r0, v0, c1

Istruzioni per pixel shader