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)
Topik terkait