Funzione EvaluateAttributeSnapped
Valuta il centroid pixel con un offset.
Sintassi
numeric EvaluateAttributeSnapped(
in attrib numeric value,
in
int2 offset
);
Parametri
-
valore [in]
-
Tipo: attrib numerico
Valore di input.
-
offset [in]
-
Tipo: int2
Offset 2D dal centro pixel usando una griglia 16x16.
Commenti
L'intervallo per il parametro offset deve essere definito dal codice di byte seguente.
Vengono usati solo i 4 bit meno significativi dei primi due componenti (U, V) dell'offset pixel. La conversione dal punto fisso a 4 bit a float è la seguente (MSB... LSB), dove msB fa parte della frazione e determina il segno:
- 1000 = -0,5f (-8/ 16)
- 1001 = -0.4375f (-7 / 16)
- 1010 = -0,375f (-6 / 16)
- 1011 = -0.3125f (-5 / 16)
- 1100 = -0,25f (-4 /16)
- 1101 = -0.1875f (-3/16)
- 1110 = -0.125f (-2 /16)
- 1111 = -0.0625f (-1 /16)
- 0000 = 0,0f ( 0/ 16)
- 0001 = 0,0625f ( 1/16)
- 0010 = 0,125f ( 2/16)
- 0011 = 0,1875f ( 3/16)
- 0100 = 0,25f ( 4/16)
- 0101 = 0,3125f ( 5/ 16)
- 0110 = 0,375f ( 6/16)
- 0111 = 0,4375f ( 7/16)
Nota
I bordi sinistro e superiore di un pixel sono inclusi nell'offset; tuttavia, i bordi inferiore e destro non sono inclusi. Tutti gli altri bit nell'intero a 32 bit vengono ignorati e i valori di offset V.
Un'implementazione può accettare l'offset fornito dallo shader e ottenere un valore a virgola fissa a 32 bit completo (28.4), che si estende sull'intervallo valido, eseguendo il calcolo seguente:
iU = (iU<<28)>>28 // keep lowest 4 bits and sign extend, which yields [-8..7]
Se un'implementazione deve eseguire il mapping dell'offset a un offset a virgola mobile, esegue il calcolo seguente:
fU = ((float)iU)/16
Modello di shader minimo
Questa funzione è supportata nei modelli shader seguenti.
Modello di shader | Supportato |
---|---|
Modelli shader 5 e versioni successive dello shader | sì |
Questa funzione è supportata nei tipi di shader seguenti:
Vertice | Scafo | Dominio | Geometria | Pixel | Calcolo |
---|---|---|---|---|---|
x |
Vedi anche