Registre temporaire (référence VS HLSL)

Un registre temporaire du nuanceur de vertex est utilisé pour contenir les résultats intermédiaires.

Un registre temporaire doit être initialisé avant d’être utilisé. Chaque registre temporaire dispose d’un accès en écriture unique et triple lecture. Cela signifie qu’une instruction de nuanceur unique peut utiliser autant que trois registres temporaires comme entrées.

Les valeurs d’un registre temporaire qui subsistent des appels précédents du nuanceur de vertex ne peuvent pas être utilisées.

Un registre se compose de propriétés qui déterminent le comportement de chaque registre.

Propriété Description
Nom r[n]. n est un numéro de registre facultatif. La valeur par défaut est 0 et est la valeur utilisée si aucune valeur n’est spécifiée.
Count Un maximum de 12 registres.
Autorisations d’E/S En lecture/écriture. Ce registre peut être lu ou écrit par l’API ou par le nuanceur.
Ports de lecture Le nombre de fois où un registre peut être lu dans une seule instruction est de 3. Un registre temporaire est le seul registre qui peut être lu et écrit plusieurs fois dans une seule instruction.

 

Chaque registre temporaire dispose d’un accès en écriture unique et triple lecture. Par conséquent, une instruction peut avoir trois registres temporaires dans son ensemble d’opérandes sources d’entrée.

Aucune valeur d’un registre temporaire qui subsiste des appels précédents du nuanceur de vertex ne peut être utilisée. Les nuanceurs de vertex qui lisent une valeur à partir d’un registre temporaire avant d’y écrire échouent l’appel de l’API Direct3D pour créer le nuanceur de vertex.

Exemple

Voici un exemple d’utilisation d’un registre temporaire :

def c4, 0,0,0,1
...
// Decompress position
mov r0.x, v0.x
mov r0.y, c4.w       // 1
mov r0.z, v0.y
mov r0.w, c4.w       // 1

// Compute theta from distance and time
mov r4.xz, r0        // xz
Versions du nuanceur de vertex 1_1 2_0 2_sw 2_x 3_0 3_sw
Registre temporaire x x x x x x

 

Registres du nuanceur de vertex