ps_2_0及更高版本的修饰符
指令修饰符会影响指令的结果,然后再将其写入目标寄存器。
本部分包含像素着色器 2_0 及更高版本实现的指令修饰符的参考信息。
名称 | 语法 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|
质心 | _质心 | x | x | x | x | x |
Partial_Precision | _Pp | x | x | x | x | x |
饱和 | _坐 | x | x | x | x | x |
质心
质心修饰符是一个可选修饰符,当基元未覆盖多重采样像素中心时,该修饰符将属性内插固定在基元的范围内。 这在 质心采样中可见。
可以将质心修饰符应用于程序集指令,如下所示:
dcl_texcoord0_centroid v0
还可以将质心修饰符应用于语义,如下所示:
float4 TexturePointCentroidPS( float4 TexCoord : TEXCOORD0_centroid ) : COLOR0
{
return tex2D( PointSampler, TexCoord );
}
此外,使用颜色语义声明的任何 输入颜色寄存器 (v#) 将自动应用质心。 从质心采样的属性计算的渐变不保证准确。
部分精度
部分精度指令修饰符 (_pp) 指示可接受部分精度的区域,前提是基础实现支持部分精度。 实现始终可以忽略修饰符,并完全精确执行受影响的操作。
_pp修饰符可以在两个上下文中出现:
- 在纹理坐标声明中,允许以部分精度形式将纹理坐标传递到像素着色器。 例如,这允许使用纹理坐标将颜色数据中继到像素着色器,在某些实现中,部分精度可能比完全精度更快。 如果没有此修饰符,则必须以完全精度传递纹理坐标。
- 在任何指令上,包括纹理加载指令。 这表示允许实现以部分精度执行指令并存储部分精度结果。 在没有显式修饰符的情况下,无论输入精度) 如何,都必须以全精度 (执行指令。
示例:
dcl_texcoord0_pp t1
cmp_pp r0, r1, r2, r3
饱和度
饱和指令修饰符 (_sat) 饱和 (或夹,在写入目标寄存器之前将指令结果) 到 [0, 1] 范围。
_sat指令修饰符可与除 frc - ps、 sincos - ps 和任何 tex* 指令以外的任何指令一起使用。
对于ps_2_0、ps_2_x和ps_2_sw,_sat指令修饰符不能与输出颜色寄存器或输出深度寄存器) (写入任何输出寄存器的指令一起使用。 此限制不适用于ps_3_0及更高版本。
例如:
dp3_sat r0, v0, c1
相关主题