サンプル (DirectX HLSL テクスチャ オブジェクト)

テクスチャをサンプリングします。

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

パラメーター

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

オフセット

[入力]任意のテクスチャ座標オフセット。任意のテクスチャ オブジェクト型に使用できます。オフセットはサンプリング前の位置に適用されます。 テクスチャ オフセットは静的である必要があります。 引数の型は、texture-object 型に依存します。 詳細については、「 テクスチャ座標オフセットの適用」を参照してください。

Texture-Objectの種類 パラメーターの型
Texture1D、Texture1DArray INT
Texture2D、Texture2DArray int2
Texture3D int3
TextureCube、TextureCubeArray サポート対象外

戻り値

テクスチャのテンプレートの種類。単一または複数コンポーネントのベクターである可能性があります。 この形式は、テクスチャの DXGI_FORMATに基づいています。

最小シェーダー モデル

この関数は、次のシェーダー モデルでサポートされています。

vs_4_0 vs_4_1 ps_4_0 ps_4_1 gs_4_0 gs_4_1
x x
  1. TextureCubeArray はシェーダー モデル 4.1 以降で使用できます。
  2. シェーダー モデル 4.1 は、Direct3D 10.1 以降で使用できます。

この部分コード例は、BasicHLSL11 サンプルの BasicHLSL11.fx ファイルに基づいています。

// Object Declarations
Texture2D g_MeshTexture;            // Color texture for mesh

SamplerState MeshTextureSampler
{
    Filter = MIN_MAG_MIP_LINEAR;
    AddressU = Wrap;
    AddressV = Wrap;
};

struct VS_OUTPUT
{
    float4 Position   : SV_POSITION; // vertex position 
    float4 Diffuse    : COLOR0;      // vertex diffuse color (note that COLOR0 is clamped from 0..1)
    float2 TextureUV  : TEXCOORD0;   // vertex texture coords 
};

VS_OUTPUT In;

// Shader body calling the intrinsic function
   ...
        Output.RGBColor = g_MeshTexture.Sample(MeshTextureSampler, In.TextureUV) * In.Diffuse;

解説

テクスチャ サンプリングでは、テクセル位置を使用してテクセル値を検索します。 オフセットは、参照前の位置に適用できます。 サンプラーの状態には、サンプリングとフィルター処理のオプションが含まれています。 このメソッドはピクセル シェーダー内で呼び出すことができますが、頂点シェーダーまたはジオメトリ シェーダーではサポートされていません。

整数ミップレベルでのみオフセットを使用します。そうしないと、ハードウェアの実装やドライバーの設定に応じて異なる結果が得られる場合があります。

テクセル位置の計算

テクスチャ座標は、テクスチャ データを参照する浮動小数点値です。これは、正規化されたテクスチャ空間とも呼ばれます。 [0...1] 範囲外のテクスチャ座標を変更するには、アドレス ラッピング モードがこの順序 (テクスチャ座標 + オフセット + ラップ モード) で適用されます。

テクスチャ配列の場合、location パラメーターの追加の値は、テクスチャ配列へのインデックスを指定します。 このインデックスは、(標準テクスチャ座標の正規化された空間ではなく) スケーリングされた浮動小数点値として扱われます。 整数インデックスへの変換は、次の順序で行われます (float + round-to-nearest-even integer + clamp to the array range)。

テクスチャ座標オフセットの適用

offset パラメーターは、テクセル空間内のテクスチャ座標を変更します。 テクスチャ座標は正規化された浮動小数点数ですが、オフセットは整数オフセットを適用します。 また、テクスチャ オフセットは静的である必要があることにも注意してください。

返されるデータ形式は、テクスチャ形式によって決まります。 たとえば、テクスチャ リソースがDXGI_FORMAT_A8B8G8R8_UNORM_SRGB形式で定義されている場合、サンプリング操作はサンプリングされたテクセルをガンマ 2.0 から 1.0 に変換し、フィルター処理し、結果を [0..1] の範囲の浮動小数点値として書き込みます。

Texture-Object