ps_2_x说明

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

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

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

指令集

名字 描述 指令槽 设置 算术 质地 流控制 新增功能
abs - ps 绝对值 1 x
添加 - ps 添加两个向量 1 x
中断 - ps 退出代表...endrep 块 1 x x
break_comp - ps 有条件地中断代表...endrep 块,与比较 3 x x
断点 - ps 退出代表...endrep 块,基于谓词 3 x x
呼叫 - 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
挑衅 - 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
其他 - ps 开始其他块 1 x x
endif - ps 结束 if...else 块 1 x x
endrep - ps 重复块的结束 2 x x
exp - ps 全精度 2x 1 x
frc - ps 小数部分 1 x
布尔 - ps 开始一个 if 块 3 x x
if_comp - ps 使用比较开始 if 块 3 x x
pred - ps 使用谓词启动 if 块 3 x x
标签 - ps 标签 0 x x
日志 - 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
疯狂 - ps 相乘和添加 1 x
最大值 - ps 最大 1 x
分钟 - 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
rep - ps 重复 3 x x
重试 - ps 子例程的结尾 1 x x
rsq - ps 倒数平方根 1 x
setp_comp 设置谓词寄存器 1 x x
sincos - ps 正弦和余弦值 8 x
子 - ps 减去 1 x
texkill - ps 终止像素呈现 请参阅注释 1 x
texld - ps_2_0和向上 示例纹理 请参阅注释 2 x
texldb - ps 具有 w-component 中细节级别的偏差的纹理采样 请参阅注释 3 x
texldd - ps 使用用户提供的渐变进行纹理采样 3 x x
texldp - ps 通过投影除以 w-component 进行纹理采样 请参阅说明 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;否则:

像素着色器说明