dcl_semantics (sm3 - ps asm)
Dichiarare l'associazione tra l'output del vertex shader e l'input pixel shader.
Sintassi
dcl_semantics [_centroid] dst[.write_mask]
Dove:
- _semantics: identifica l'utilizzo dei dati desiderato e può essere uno dei valori in D3DDECLUSAGE (senza il prefisso D3DDECLUSAGE_). È inoltre possibile aggiungere un indice integer alla semantica per distinguere i parametri che usano semantica simile.
- [_Centroid] è un modificatore di istruzioni facoltativo. È supportata nelle istruzioni dcl_usage che dichiarano i registri di input e nelle istruzioni di ricerca delle trame. Il centroide viene accodato senza spazio.
- dst: registro di destinazione. Vedere ps_3_0 Registri.
- write_mask: lo stesso registro di output può essere dichiarato più volte, ogni volta con una maschera di scrittura univoca (quindi è possibile applicare semantica diversa ai singoli componenti). Tuttavia, la stessa semantica non può essere usata più volte in una dichiarazione. Ciò significa che i vettori devono essere quattro componenti o meno e non possono superare i limiti del registro a quattro componenti (singoli registri di output). Quando viene usata la semantica _psize, deve avere una maschera di scrittura completa perché è considerata scalare. Quando viene usata la semantica _position, deve avere una maschera di scrittura completa perché devono essere scritti tutti e quattro i componenti.
Osservazioni:
Versioni del pixel shader | 1_1 | 1_2 | 1_3 | 1_4 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|---|---|---|
dcl_usage | x | x |
Tutte le istruzioni dcl_usage devono essere visualizzate prima della prima istruzione eseguibile.
Esempi di dichiarazione
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)
Argomenti correlati