SampleGrad (DirectX HLSL テクスチャ オブジェクト)

グラデーションを使用してテクスチャをサンプリングし、サンプルの位置の計算方法に影響を与えます。

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

パラメーター

Item 説明
オブジェクト
任意のテクスチャ オブジェクト型 (Texture2DMS と Texture2DMSArray を除く)。
S
[入力] サンプラーの状態。 これは、状態の割り当てを含む効果ファイルで宣言されたオブジェクトです。
場所
[入力]テクスチャ座標。 引数の型は、テクスチャ オブジェクト型に依存します。
Texture-Objectの種類 パラメーターの型
Texture1D float
Texture1DArray、Texture2D float2
Texture2DArray、Texture3D、TextureCube float3
TextureCubeArray float4
Texture2DMS、Texture2DMSArray サポート対象外

Ddx

[入力]x 方向のサーフェス ジオメトリの変化率。 引数の型は、テクスチャ オブジェクト型に依存します。

Texture-Objectの種類 パラメーターの型
Texture1D、Texture1DArray float
Texture2D、Texture2DArray float2
Texture3D、TextureCube、TextureCubeArray float3
Texture2DMS、Texture2DMSArray サポート対象外

DDY

[入力]y 方向のサーフェス ジオメトリの変化率。 引数の型は、テクスチャ オブジェクト型に依存します。

Texture-Objectの種類 パラメーターの型
Texture1D、Texture1DArray float
Texture2D、Texture2DArray float2
Texture3D、TextureCube、TextureCubeArray float3
Texture2DMS、Texture2DMSArray サポート対象外

オフセット

[入力]任意のテクスチャ座標オフセット。任意のテクスチャ オブジェクト型に使用できます。 オフセットは、サンプリング前の場所に適用されます。 整数 miplevel でのみオフセットを使用します。そうしないと、ハードウェアにうまく変換されない結果が得られる可能性があります。 引数の型は、テクスチャ オブジェクト型に依存します。 詳細については、「整数オフセットの適用」を参照してください。

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