ps_2_x 说明

本部分包含像素着色器版本2_x说明的参考信息。

有多种类型的像素着色器指令,如表中所示。 右侧的列表示以下内容:

  • 指令槽数 - 每个指令使用的指令槽数。
  • 设置 - 像素着色器必须具有版本指令,并且必须是第一个指令。
  • 算术 - 这些指令提供着色器中的数学运算。
  • 纹理 - 这些指令用于加载和采样纹理数据,以及修改纹理坐标。
  • 流控制 - 这些指令为指令的执行提供静态和动态流控制。
  • 新建 - 这些说明是此版本的新增内容。

指令集

名称 说明 指令槽 安装 算术 纹理 流量控制 新建
abs - ps 绝对值 1 x
add - ps 添加两个向量 1 x
break - ps 突破代表...endrep 块 1 x x
break_comp - ps 有条件地突破代表...endrep 块,带有比较 3 x x
breakp - ps 突破代表...endrep 块,基于谓词 3 x x
call - ps 调用子例程 2 x x
callnz bool - ps 如果布尔寄存器不为零,则调用子例程 3 x x
callnz pred - ps 如果谓词寄存器不为零,则调用子例程 3 x x
cmp - ps 将源与 0 进行比较 1 x
crs - ps 跨积 2 x
dcl_samplerType (sm2, sm3 - ps asm) 声明采样器的纹理维度 0 x
dcl - (sm2, sm3 - ps asm) 声明顶点着色器输出寄存器与像素着色器输入寄存器之间的关联。 0 x
def - ps 定义常量 0 x
defb - ps 定义布尔常量 0 x x
defi - ps 定义整数常量 0 x x
dp2add - ps 2D 点积并添加 2 x
dp3 - ps 3D 点积 1 x
dp4 - ps 4D 点积 1 x
dsx - ps x 方向的变化率 2 x x
dsy - ps y 方向的变化率 2 x x
else - ps 开始 else 块 1 x x
endif - ps 结束一个 if...else 块 1 x x
endrep - ps 重复块的结束 2 x x
exp - ps 全精度 2x 1 x
frc - ps 小数部分 1 x
if bool - ps 开始 if 块 3 x x
if_comp - ps 使用比较开始 if 块 3 x x
如果 pred - ps 使用 predication 开始 if 块 3 x x
label - ps Label 0 x x
log - ps 全精度对数ー (x) 1 x
lrp - ps 线性内插 2 x
m3x2 - ps 3x2 乘法 2 x
m3x3 - ps 3x3 乘法 3 x
m3x4 - ps 3x4 乘法 4 x
m4x3 - ps 4x3 乘法 3 x
m4x4 - ps 4x4 乘法 4 x
mad - ps 相乘和加法 1 x
max - ps 最大值 1 x
min - ps 最小值 1 x
mov - ps 移动 1 x
mul - ps 1 x
nop - ps 无操作 1 x
nrm - ps 规范化 3 x
pow - ps xy 3 x
ps 版本 0 x
rcp - ps 互惠 1 x
代表 - ps Repeat 3 x x
ret - ps 子例程的结尾 1 x x
rsq - ps 倒数平方根 1 x
setp_comp 设置谓词寄存器 1 x x
sincos - ps 正弦和余弦 8 x
sub - ps 1 x
texkill - ps 终止像素渲染 请参阅注释 1 x
texld - ps_2_0和向上 采样纹理 查看注释 2 x
texldb - ps 来自 w 组件的详细信息级别偏差的纹理采样 请参阅注释 3 x
texldd - ps 使用用户提供的渐变进行纹理采样 3 x x
texldp - ps 使用投影除以 w 分量进行纹理采样 请参阅注释 4 x

 

注意:

  1. 如果设置了 D3DD3DPSHADERCAPS2_0_NOTEXINSTRUCTIONLIMIT ,则槽 = 2;否则槽 = 1。
  2. 如果设置了 D3DD3DPSHADERCAPS2_0_NOTEXINSTRUCTIONLIMIT 并且纹理是立方体贴图,则槽 = 4;否则槽 = 1。
  3. 如果设置了 D3DD3DPSHADERCAPS2_0_NOTEXINSTRUCTIONLIMIT ,则槽 = 6;否则槽 = 1。
  4. 如果未设置 D3DD3DPSHADERCAPS2_0_NOTEXINSTRUCTIONLIMIT ,则槽 = 1;否则:

像素着色器说明