SampleGrad (DirectX HLSL 纹理对象)

使用渐变对纹理采样,以影响采样位置的计算方式。

<Template Type> Object.SampleGrad ( sampler_state S, float Location, float DDX, float DDY [, int Offset] ) ;

parameters

说明
对象
除 Texture2DMS 和 Texture2DMSArray 之外的任何 纹理对象 类型 () 。
S
[in] 采样器状态。 这是在包含状态分配的效果文件中声明的对象。
位置
[in]纹理坐标。 参数类型依赖于纹理对象类型。
Texture-Object类型 参数类型
Texture1D FLOAT
Texture1DArray、Texture2D float2
Texture2DArray、Texture3D、TextureCube float3
TextureCubeArray float4
Texture2DMS、Texture2DMSArray 不支持

DDX

[in]图面几何图形在 x 方向上的变化率。 参数类型依赖于纹理对象类型。

Texture-Object类型 参数类型
Texture1D、Texture1DArray FLOAT
Texture2D、Texture2DArray float2
Texture3D、TextureCube、TextureCubeArray float3
Texture2DMS、Texture2DMSArray 不支持

DDY

[in]y 方向图面几何图形的变化率。 参数类型依赖于纹理对象类型。

Texture-Object类型 参数类型
Texture1D、Texture1DArray FLOAT
Texture2D、Texture2DArray float2
Texture3D、TextureCube、TextureCubeArray float3
Texture2DMS、Texture2DMSArray 不支持

抵消

[in]可选的纹理坐标偏移量,可用于任何纹理对象类型。 在采样之前,偏移量应用于位置。 仅在整数偏移量处使用偏移量;否则,可能会得到无法很好地转换为硬件的结果。 参数类型依赖于纹理对象类型。 有关详细信息,请参阅应用整数偏移量

Texture-Object类型 参数类型
Texture1D、Texture1DArray int
Texture2D、Texture2DArray int2
Texture3D int3
TextureCube、TextureCubeArray 不支持
Texture2DMS、Texture2DMSArray 不支持

返回值

纹理的模板类型,可以是单分量或多分量向量。 格式基于纹理的 DXGI_FORMAT

最小着色器模型

以下着色器模型中支持此函数。

vs_4_0 vs_4_1 ps_4_0 ps_4_1 gs_4_0 gs_4_1
x x x x x x
  1. TextureCubeArray 在着色器模型 4.1 或更高版本中可用。
  2. 着色器模型 4.1 在 Direct3D 10.1 或更高版本中可用。

示例

此部分代码示例来自 MotionBlur10 示例中的 MotionBlur.fx 文件。

// Object Declarations
Texture2D g_txDiffuse;

SamplerState g_samLinear
{
    Filter = ANISOTROPIC;
    MaxAnisotropy = 8;
    AddressU = Wrap;
    AddressV = Wrap;
};

struct VSSceneOut
{
    float4 Pos : SV_POSITION;
    float4 Color : COLOR0;
    float2 Tex : TEXCOORD;
    float2 Aniso : ANISOTROPY;
};

float4 PSSceneMain( VSSceneOut Input ) : SV_TARGET
{
    float2 ddx = Input.Aniso;
    float2 ddy = Input.Aniso;
    
    // Shader body calling the intrinsic function
    float4 diff = g_txDiffuse.SampleGrad( g_samLinear, Input.Tex, ddx, ddy);
    
    ...
}

Texture-Object