dcl_semantics (sm3 - ps asm)
声明顶点着色器输出与像素着色器输入之间的关联。
语法
dcl_semantics [_centroid] dst[.write_mask]
其中:
- _semantics:标识预期数据使用情况,可以是 D3DDECLUSAGE 中的任何值(不带 D3DDECLUSAGE_ 前缀)。 此外,可以将整数索引追加到语义中,以区分使用类似语义的参数。
- [_Centroid] 是可选的指令修饰符。 它在声明输入寄存器的 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)
相关主题