dcl_semantics (sm3 - ps asm)

Deklarasikan hubungan antara output shader vertex dan input shader piksel.

Sintaks

dcl_semantics [_centroid] dst[.write_mask]

 

Mana:

  • _semantics: Mengidentifikasi penggunaan data yang dimaksudkan, dan mungkin salah satu nilai dalam D3DDECLUSAGE (tanpa awalan D3DDECLUSAGE_). Selain itu, indeks bilangan bulat dapat ditambahkan ke semantik untuk membedakan parameter yang menggunakan semantik serupa.
  • [_Centroid] adalah pengubah instruksi opsional. Ini didukung pada instruksi dcl_usage yang menyatakan register input dan pada instruksi pencarian tekstur. Sentroid ditambahkan tanpa ruang.
  • dst: register tujuan. Lihat ps_3_0 Registers.
  • write_mask: Register output yang sama dapat dinyatakan beberapa kali, setiap kali dengan masker tulis unik (sehingga semantik yang berbeda dapat diterapkan ke komponen individual). Namun, semantik yang sama tidak dapat digunakan beberapa kali dalam deklarasi. Ini berarti bahwa vektor harus empat komponen atau kurang, dan tidak dapat melintasi batas pendaftaran empat komponen (register output individual). Ketika semantik _psize digunakan, itu harus memiliki masker tulis penuh karena dianggap sebagai skalar. Ketika semantik _position digunakan, itu harus memiliki masker tulis penuh karena keempat komponen harus ditulis.

Keterangan

Versi piksel shader 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
dcl_usage x x

 

Semua instruksi dcl_usage harus muncul sebelum instruksi pertama yang dapat dieksekusi.

Contoh Deklarasi

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)

Instruksi Pixel Shader

Sampel Antialias