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)

Istruzioni per pixel shader

Esempio antialias