像素着色器汇编程序由一组指令组成,这些指令针对寄存器中包含的像素数据进行作。 作表示为由运算符和一个或多个作数组成的指令。 说明使用寄存器传入和传出像素着色器 ALU 中的数据。 寄存器也可以由一些说明用来保存临时结果。
注意
HLSL 对像素着色器 1.x 的支持已弃用。
指示
像素着色器指令有两个主要类别:算术指令和纹理寻址指令。 算术指令修改颜色数据。 纹理寻址作处理纹理坐标数据,在大多数情况下,对纹理进行采样。 像素着色器指令按像素运行;也就是说,他们不知道管道中的其他像素。
纹理寻址指令各使用一个槽,但可以配对算术指令,以在单个槽中启用颜色组件(RGB)和 alpha 分量指令。
ps_1_1、ps_1_2、ps_1_3、ps_1_4指令 包含可用说明的列表。
启用多重采样后,每个像素的像素着色器仅运行一次,而不是每个子像素的一次。 多重采样只会增加多边形边缘的分辨率,以及深度和模具测试。 例如,如果启用了 3x3 多重采样,并且发现光栅化三角形覆盖特定像素的 9 个子像素中的 5 个,则像素着色器将运行一次,并将相同的颜色结果应用于所有五个子像素。
寄存 器
ps_1_1__ps_1_2__ps_1_3__ps_1_4 寄存器 列出着色器 ALU 使用的不同寄存器。
修饰 符
用于ps_1_X的修饰符可用于更改指令的功能,或者从寄存器读取或写入到寄存器的数据。
Direct3D 9 要求中间计算对所有图面格式保持至少 8 位精度。 对于阶段内数学,建议将精度(12 位)和纹理阶段之间的饱和度达到 8 位。 不支持可修改的舍入模式或异常。 应使用舍入到最接近的精度来支持乘法,以将精度损失保持在最小值。
采样器计数
可用的纹理采样器数为:
- 对于 ps_1_0 - ps_1_3,最大值为 4。
- 对于ps_1_4,最大值为 6。
相关主题