sample_c (sm4 - asm)
执行比较筛选器。
sample_c[_aoffimmi(u,v,w)] dest[.mask], srcAddress[.swizzle], srcResource.r, srcSampler, srcReferenceValue |
---|
项 | 说明 |
---|---|
dest |
[in] 操作结果的地址。 |
srcAddress |
[in] 一组纹理坐标。 有关详细信息,请参阅 sample 指令。 |
srcResource |
[in] 纹理寄存器。 有关详细信息,请参阅 sample 指令。 必须是 .r 重排。 |
srcSampler |
[in] 采样器寄存器。 有关详细信息,请参阅 sample 指令。 |
srcReferenceValue |
[in] 已选定单个分量的寄存器,用于比较。 |
备注
此指令的主要用途是为百分比渐近深入筛选提供构建基块。 sample_c 中的“c”表示比较。
sample_c 的操作数与 sample 指令相同,只是有一个附加的 float32 源操作数 srcReferenceValue,它必须是已选定单个分量的寄存器或标量文本。
srcResource 参数必须具有 .r (red) 重排。 sample_c 以独占方式在 red 分量上运行,并返回单个值。 srcResource 上的 .r 重排指示标量结果已复制到所有分量。
操作顺序为 srcReferenceValue {ComparisonFunction} texel.R
。
当深度缓冲区设置为输入纹理时,深度值将显示在 red 分量中。
如果此指令与非 Texture1D/2D/2DArray/Cube/CubeArray 的资源一起使用,则会生成未定义的结果。
执行此指令时,采样硬件使用当前采样器的 ComparisonFunction 将 srcReferenceValue 与当前配置的纹理筛选器覆盖的每个筛选器“点击”位置(纹素)处的源资源的 Red 分量值进行比较,具体取决于 srcAddress 中提供的坐标。
比较发生在 srcReferenceValue 量化为纹理格式的精度之后,与输出合并可见性测试中深度比较之前 z 量化为深度缓冲区精度的方式完全相同。 这包括对格式范围的限制(例如 UNORM 格式的 [0..1])。
源纹素的 Red 分量与量化 srcReferenceValue 进行比较。 对于从资源上脱落的纹素,Red 分量值是通过应用采样器中的地址模式(如果处于边框模式则为 BorderColorR)来确定的。 如果纹理格式为浮点,则比较遵循所有 D3D11 浮点比较规则。
通过的每个比较将返回 1.0f 作为纹素的 Red 分量值,未通过的每个比较将返回 0.0f 作为纹理的 Red 值。 然后,筛选将完全按照采样器状态的指定进行,仅在 Red 分量中运行,并将单个标量筛选结果返回到着色器,复制到所有过滤的 dest 分量。
sample_c 的使用与所有其他常规用途筛选控件是正交的。 sample_c 与其他常规用途筛选器模式无缝配合工作。 sample_c 更改常规用途筛选器的行为,以便筛选的值由于比较结果而变为 1.0f 或 0.0f。
从没有任何绑定的输入槽提取会为所有分量返回 0。
有关详细信息,请参阅 sample 指令。
此指令适用于以下着色器阶段:
顶点着色器 | 几何着色器 | 像素着色器 |
---|---|---|
x |
最小着色器模型
以下着色器模型中支持此函数。
着色器模型 | 支持 |
---|---|
着色器模型 5 | 是 |
着色器模型 4.1 | 是 |
着色器模型 4 | 是 |
着色器模型 3 (DirectX HLSL) | 否 |
着色器模型 2 (DirectX HLSL) | 否 |
着色器模型 1 (DirectX HLSL) | 否 |