Sample (DirectX HLSL テクスチャー オブジェクト)
テクスチャーをサンプリングします。
DXGI_FORMAT Object.Sample( sampler_state S, float Location [, int Offset] ); |
---|
パラメーター
Object
任意のテクスチャー オブジェクト型 (Texture2DMS および Texture2DMSArray を除く)。S
[in] サンプラ ステート。これは、ステート割り当てを含むエフェクト ファイルで宣言されたオブジェクトです。Location
[in] テクスチャー座標。引数の型は、テクスチャー オブジェクトの型によって異なります。テクスチャー オブジェクト型 パラメーター型 Texture1D float Texture1DArray、Texture2D float2 Texture2DArray、Texture3D、TextureCube float3 TextureCubeArray1 float4 Offset
[in] オプションのテクスチャー座標オフセット。あらゆるタイプのテクスチャー オブジェクトに適用できます。このオフセットを位置に適用した後でサンプリングが行われます。オフセットは、整数ミップレベルでのみ使用してください。それ以外の使用方法では、ハードウェアに対して適切な変換とならない結果が生成される可能性があります。引数の型はテクスチャー オブジェクトの型に依存します (整数オフセットの適用を参照)。テクスチャー オブジェクト型 パラメーター型 Texture1D、Texture1DArray int Texture2D、Texture2DArray int2 Texture3D int3 TextureCube、TextureCubeArray1 サポートなし
戻り値
テクスチャー フォーマット。DXGI_FORMAT に列挙されている型指定された値のいずれかです。
最低限必要なシェーダー モデル
この関数は、次のシェーダー モデルでサポートされています。
vs_4_0 | vs_4_12 | ps_4_0 | ps_4_12 | gs_4_0 | gs_4_12 |
---|---|---|---|---|---|
x | x |
- TextureCubeArrayは、シェーダー モデル 4.1 以降で利用可能です。
- シェーダー モデル 4.1 は、Direct3D 10.1 以降に実装されています。
例
次のコード例は、「BasicHLSL10 サンプル」の BasicHLSL10.fx ファイルから抜粋したものです。
// Object Declarationsba 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 パラメーターの追加の値はテクスチャー配列に対するインデックスを指定します。標準的なテクスチャー座標の正規化された空間とは異なり、このインデックスは、スケーリングされた浮動小数点値として扱われます。整数インデックスへの変換は、浮動小数点値を最も近い偶数の整数に丸めた後、それを配列範囲にクランプすることによって実行されます。
テクスチャー座標に対するオフセットの適用
offset は、テクセル空間におけるテクスチャー座標を修正するためのパラメーターです。テクスチャー座標は正規化された浮動小数点数ですが、offset に適用されるのは整数オフセットです。
返されるデータの形式は、テクスチャー フォーマットによって異なります。たとえば、テクスチャー リソースが DXGI_FORMAT_A8B8G8R8_UNORM_SRGB フォーマットを使用して定義されていた場合、サンプリングされたテクセルがガンマ 2.0 から 1.0 に変換され、その結果がフィルタリングされた後、範囲 [0..1] の浮動小数点値として出力されます。