从二维多样本纹理中读取单个样本。
ld2dms[_aoffimmi(u,v)] dest[.mask], srcAddress[.swizzle], srcResource[.swizzle], sampleIndex |
---|
条目 | DESCRIPTION |
---|---|
dest |
[in]作结果的地址。 |
srcAddress |
[in]执行样本所需的纹理坐标。 |
srcResource |
[in]必须声明的纹理寄存器(t#)标识要从中提取的纹理或缓冲区 |
sampleIndex |
[in]标识要从 srcResource (标量作数)读取的示例。 |
注解
此指令是 示例 指令的简化替代方法。 它使用提供的整数 srcAddress 和 sampleIndex 从指定的纹理中提取数据(例如点采样)。
srcAddress 提供以无符号整数形式执行样本所需的纹理坐标集。 如果 srcAddress 超过范围[0...()#texels 维度 -1)], ld2dms 始终以资源格式返回 0,对于缺少的组件,默认值为 0,0,0,1.0f/0x00000001。
sampleIndex 不必是文本。 多样本计数不必在纹理资源上指定,并且它适用于深度或模具视图。
希望对范围外地址行为进行更灵活的控制的应用程序应改用 示例 指令,因为它遵循定义为采样器状态的地址包装/镜像/固定/边框行为。
对于 Texture2D,将忽略 srcAddress.b (后重排)。 如果值超过可用数组索引的范围 [0...(数组 size-1],然后 ld2dms 始终返回资源格式的所有组件中的 0,对于缺少的组件,默认值为 0,0,0,0,1.0f/0x00000001。
对于 Texture2D 数组, srcAddress.b (后重排)提供数组索引。 否则,它的行为与 Texture2D 相同。
srcAddress.a (后重排)始终被忽略。 HLSL 编译器永远不会输出任何内容。
srcResource 是一个纹理寄存器(t#),必须已声明(22.3.11),用于标识要从中提取的纹理。
从 t# 提取,但没有任何限制,它为所有组件返回 0。
地址偏移量
可选的 [_aoffimmi(u,v,w)] 后缀(按即时整数的地址偏移量)指示 ld2dm 的 纹理坐标将由一组提供的即时纹素空间整数常量值偏移。 文本值是一组 4 位 2 的补数,具有整数范围 [-8,7]。
偏移量将添加到纹理坐标(以纹素空间为单位)。
地址偏移量不会沿 Texture1D/2D 数组的数组轴应用。
对于 Texture1D,将忽略 _aoffimmi v,w 组件。
对于 Texture2D,将忽略 _aoffimmi w 组件。
由于 ld2dms 的纹理坐标是无符号整数,如果偏移量导致地址低于零,它将包装到一个大地址,并导致超出边界的访问,如 ld 在资源格式显示的所有组件中返回 0,默认值(0,0,0,1.0f/0x00000001),
示例编号
ld2dms 可用于任何资源。 ld2dms 的工作方式与 ld 相同,但 2D 多重采样资源除外,方法是使用其他 (基于 0) sampleIndex 作数来确定要从资源读取的示例。
指定超过资源中样本数的 sampleIndex 的结果未定义,但不能在设备上下文的地址空间之外返回数据。
返回类型控件
ld2dms 返回到目标寄存器的数据格式与示例指令所述的相同方式确定。 它基于绑定到 srcResource 参数 (t#) 的格式。
与 示例 指令一样, ld2dms 的返回值是 4 向量,对于格式中不存在的组件,具有特定于格式的默认值。 srcResource 上的重排确定如何重排从纹理加载返回的 4 分量结果,之后 dest 上的 .mask 确定 dest 中的哪些组件会得到更新。
当 ld2dms 将 32 位浮点值读取到 32 位寄存器中时,位将保持不变;也就是说,非规范值保持非正态值。 这与 示例 指令不同。
其他详细信息
由于没有与此指令关联的筛选,因此 LOD 偏差等概念不适用。 因此,没有 采样器 s# 参数。
限制
- srcResource 必须是 t# 寄存器,而不是 TextureCube、Texture1D 或 Texture1DArray。 srcResource 不能是 ConstantBuffer,不能绑定到 t# 寄存器。
- 不允许 在 srcResource 上进行相对寻址。
- srcAddress 和 sampleIndex 必须是 temp (r#/x#), 常量 (cb#) 或输入 (v#) 寄存器。
- dest 必须是 temp (r#/x#) 或输出 (o*#) 寄存器。
此说明适用于以下着色器阶段:
顶点着色器 | 几何着色器 | 像素着色器 |
---|---|---|
x | x | x |
最小着色器模型
以下着色器模型中支持此函数。
着色器模型 | 已支持 |
---|---|
着色器模型 5 | 是的 |
着色器模型 4.1 | 是的 |
着色器模型 4 | 否 |
着色器模型 3 (DirectX HLSL) | 否 |
着色器模型 2 (DirectX HLSL) | 否 |
着色器模型 1 (DirectX HLSL) | 否 |