texld - ps_2_0和向上
使用提供的纹理坐标对特定采样器处的纹理采样。 此指令不同于像素着色器版本 1_4 中使用的 texld - ps_1_4 指令。
语法
texld dst、src0、src1 |
---|
其中:
- dst 是目标寄存器。
- src0 是一个源寄存器,它为纹理样本提供纹理坐标。
- src1 将取样器 (Direct3D 9 asm-ps) (s#) 标识,其中 # 指定要采样的纹理采样器编号。 采样器与 D3DSAMPLERSTATETYPE 定义的纹理和采样器状态相关联。
ps_2_0和ps_2_x
dst 必须是 r#) (临时寄存器 ,并且仅允许使用默认掩码 (.xyzw 掩码) 。
src0 必须是 纹理坐标寄存器 (t#) 或 临时寄存器 (r#) ,没有修饰符或重排。
src1 必须是 (Direct3D 9 asm-ps) (s#) 的采样器,且无修饰符或重排。
如果未在 D3DPSHADERCAPS2_0) 中 (设置D3DD3DPSHADERCAPS2_0_NODEPENDENTREADLIMIT cap 位,则给定的纹理指令 (texld、 texldp、 texldb - ps、 texldd ) 可能最多依赖于三阶。 一阶依赖纹理指令是纹理指令,其中任一项:
- src0 是临时 寄存器 (r#) 。
- dst 以前是写的,现在又写了。
二阶依赖纹理指令定义为纹理指令,该指令可读取或写入临时 寄存器 (r#) ,其内容在执行纹理指令之前,可能间接 () 一阶依赖纹理指令的结果。 (n) 顺序依赖纹理指令派生自 (n - 1) 四阶纹理指令。
ps_3_0
src1 必须是 (Direct3D 9 asm-ps) (s#) 的取样器,且无修饰符。 src0 或 src1 上允许重排。 重排在纹理查找之前应用于纹理坐标。
备注
以下版本支持此指令:
像素着色器版本 | 1_1 | 1_2 | 1_3 | 1_4 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|---|---|---|
texld | x | x | x | x | x |
src0 执行纹理样本所需的坐标数取决于 src1 的声明方式以及 .w 分量。 使用 dcl_samplerType (sm2、sm3 - ps asm) 声明采样器类型。 如果 src1 声明为 2D 采样器,则 src0 必须包含 .xy 坐标;如果 src1 声明为立方体采样器或卷采样器,则 src0 必须包含 .xyz 坐标。 允许对尺寸小于纹理坐标中尺寸的纹理采样,因为会忽略额外的纹理坐标分量 () 。
如果源纹理包含的分量少于四个,则默认值将放置在缺失的组件中。 默认值取决于下表所示的纹理格式:
纹理格式 | 默认值 |
---|---|
D3DFMT_R5G6B5、D3DFMT_R8G8B8、D3DFMT_L8、D3DFMT_L16、D3DFMT_R3G3B2、D3DFMT_CxV8U8、D3DFMT_L6V5U5 | A = 1.0 |
D3DFMT_V8U8、D3DFMT_V16U16、D3DFMT_G16R16、D3DFMT_G16R16F、D3DFMT_G32R32F | B = A = 1.0 |
D3DFMT_A8 | R = G = B = 0.0 |
D3DFMT_R16F、D3DFMT_R32F | G = B = A = 1.0 |
所有深度/模具格式 | R = B = 0.0,A = 1.0 |
相关主题