dcl_semantics (sm3 - ps asm)
Déclarez l’association entre la sortie du nuanceur de sommets et l’entrée de nuanceur de pixels.
Syntaxe
dcl_semantics [_centroid] dst[.write_mask]
Où :
- _semantics : identifie l’utilisation prévue des données et peut correspondre à l’une des valeurs de D3DDECLUSAGE (sans le préfixe D3DDECLUSAGE_). En outre, un index entier peut être ajouté à la sémantique pour distinguer les paramètres qui utilisent une sémantique similaire.
- [_centroid] est un modificateur d’instruction facultatif. Il est pris en charge dans les instructions dcl_usage qui déclarent les registres d’entrée et dans les instructions de recherche de texture. Le centroïde est ajouté sans espace.
- dst : registre de destination. Consultez Registres ps_3_0.
- write_mask : le même registre de sortie peut être déclaré plusieurs fois, chaque fois avec un masque d’écriture unique (ainsi, différentes sémantiques peuvent être appliquées à des composants individuels). Toutefois, la même sémantique ne peut pas être utilisée plusieurs fois dans une déclaration. Cela signifie que les vecteurs doivent être constitués de quatre composants ou moins et qu’ils ne peuvent pas franchir les limites des registres à quatre composants (registres de sortie individuels). Lorsque la sémantique _psize est utilisée, elle doit avoir un masque d’écriture complet car elle est considérée comme scalaire. Lorsque la sémantique _position est utilisée, elle doit avoir un masque d’écriture complet car les quatre composants doivent être écrits.
Notes
Versions du nuanceur de pixels | 1_1 | 1_2 | 1_3 | 1_4 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|---|---|---|
dcl_usage | x | x |
Toutes les instructions dcl_usage doivent apparaître avant la première instruction exécutable.
Exemples de déclaration
ps_3_0
; Declaring inputs
dcl_normal v0.xyz
dcl_blendweight v0.w ; Must be same reg# as normal, matching vshader packing
dcl_texcoord1 v1.y ; Mask can be any subset of mask from vshader semantic
dcl_texcoord0 v1.zw; Has to be same reg# as texcoord1, to match vshader
; Declaring samplers
dcl_2d s0
dcl_2d s1
def c0, 0, 0, 0, 0
mov r0.x, v1.y ; texcoord1
mov r0.y, c0
texld r0, r0, s0
texld r1, v1.zw, s1
...
(output regs in ps_3_0 are same as ps_2_0: oC0-oC3, oDepth)
Rubriques connexes