dcl_semantics (sm3 - ps asm)

宣告頂點著色器輸出與圖元著色器輸入之間的關聯。

語法

dcl_semantics [_centroid] dst[.write_mask]

 

其中:

  • _semantics:識別預期的資料使用方式,而且可以是D3DDECLUSAGE 中的任何值 (不含D3DDECLUSAGE_前置詞)。 此外,可以將整數索引附加至語意,以區分使用類似語意的參數。
  • [_心形] 是選擇性的指令修飾詞。 dcl_usage指令支援宣告輸入暫存器和紋理查閱指令。 心心附加,沒有空格。
  • dst:目的地暫存器。 請參閱 ps_3_0暫存器
  • write_mask:每次都有唯一的寫入遮罩時,可以宣告相同的輸出暫存器(因此可以將不同的語意套用至個別元件)。 不過,宣告中不能多次使用相同的語意。 這表示向量必須是四個元件或更少,而且不能跨越四個元件暫存器界限(個別輸出暫存器)。 使用_psize語意時,它應該具有完整的寫入遮罩,因為它被視為純量。 使用_position語意時,它應該具有完整的寫入遮罩,因為必須寫入這四個元件。

備註

圖元著色器版本 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
dcl_usage x x

 

所有dcl_usage指令都必須出現在第一個可執行指令之前。

宣告範例

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)

圖元著色器指示

Antialias 範例