ShaderEffect.DdxUvDdyUvRegisterIndex 属性

定义

获取或设置一个值,该值指示要用于纹理坐标对屏幕空间的偏导数的着色器寄存器。

protected:
 property int DdxUvDdyUvRegisterIndex { int get(); void set(int value); };
protected int DdxUvDdyUvRegisterIndex { get; set; }
member this.DdxUvDdyUvRegisterIndex : int with get, set
Protected Property DdxUvDdyUvRegisterIndex As Integer

属性值

Int32

包含偏导数的寄存器的索引。

例外

尝试多次或在初次处理效果后设置 DdxUvDdyUvRegisterIndex 属性。

注解

使用 DdxUvDdyUvRegisterIndex 属性指定着色器寄存器,该寄存器包含与屏幕空间相关的纹理坐标的部分派生。 例如,如果 DdxUvDdyUvRegisterIndex 设置为 4,则使用着色器寄存器 c4。 注册 c4 包含四个浮点字段。 以下高级着色语言 (HLSL) 代码演示了此寄存器的使用方式。 该值 nextPixelUV 表示右侧的下一个像素。

float4 ddxUvDdyUv : register(c4);  
SamplerState  sampler : register(S0);  
...  
float2 nextPixelUV;  
nextPixelUV.u = ddxUvDdyUv.x + u;  
nextPixelUV.v = ddxUvDdyUv.y + v;  

tex2D(sampler, nextPixelUV);  

下表显示了如何填充指定的 DdxUvDdyUvRegisterIndex 寄存器。

寄存器常量 派生值
x 组件 ddx (u)
y 组件 ddx (v)
z 组件 ddy (u)
w 组件 ddy (v)

纹理坐标表示为 (u, v)ddx(u) 是相对于屏幕空间 x 坐标的纹理坐标组件的 u 常量部分派生。 ddy(u) 是纹理坐标 u 相对于屏幕空间 y 坐标的部分派生。 同样, ddx(v) 也是 ddy(v) 纹理坐标组件的相应屏幕空间派生体 v

备注

HLSL 具有用于计算这些值的 ddx 和 ddy 指令,但这些指令在所有 PixelShader 2.0 硬件上都不可用。

可以按以下方式思考这些常量。 如果在屏幕空间右侧执行步骤 1 像素, (x 方向) ,则 ddx(u) 纹理空间变化的量 u 以及 ddx(v) 纹理空间变化量 v 。 如果效果在呈现时轴对齐,则 ddx(v) 为 0。 如果呈现效果时旋转,则 ddx(v) 为非零。

适用于

另请参阅