テクスチャー オブジェクト (DirectX HLSL)
Direct3D 10 では、サンプラおよびテクスチャーは独立して指定されます。テクスチャー サンプリングはテンプレート化されたテクスチャー オブジェクトに実装されます。このテンプレート化されたオブジェクトは特定のフォーマットを持ち、特定の型を返し、各種のメソッドを実装します。
Direct3D9 と Direct3D10 の違い:
Direct3D 9 では、サンプラは特定のテクスチャーにバインドされます。一方、Direct3D 10 では、テクスチャーおよびサンプラは独立したオブジェクトです。各テンプレート化されたオブジェクトは、テクスチャーおよびサンプラの両方を入力パラメーターとして取るテクスチャー サンプリング メソッドを実装しています。 |
すべてのテクスチャー オブジェクトは、次の構文を使用して作成します (マルチサンプルされるオブジェクトを除く)。
Object1 [<Type>] Name; |
---|
マルチサンプリングされるオブジェクト (Texture2DMS および Texture2DMSArray) では、サンプル数として明示的に記述され、表現されたテクスチャー サイズを指定する必要があります。
Object2 [<Type, Samples>] Name; |
---|
パラメーター
Object
テクスチャー オブジェクト。次の型のいずれかを指定する必要があります。Object1 型 説明 Buffer バッファー1 Texture1D 1 次元テクスチャー Texture1DArray 1 次元テクスチャー配列 Texture2D 2 次元テクスチャー Texture2DArray 2 次元テクスチャー配列 Texture3D 3 次元テクスチャー TextureCube キューブ テクスチャー TextureCubeArray 23 キューブ テクスチャー配列 Object2 型 説明 Texture2DMS 2 次元マルチサンプル テクスチャー Texture2DMSArray 2 次元マルチサンプル テクスチャー配列 - Buffer 型は、GetDimensions を除くほとんどのテクスチャー オブジェクト メソッドをサポートしています。
- TextureCubeArrayは、シェーダー モデル 4.1 以降で利用可能です。
- シェーダー モデル 4.1 は、Direct3D 10.1 以降に実装されています。
Type
(省略可能)任意のスカラー HLSL 型。山かっこ内に記述する必要があります。Name
テクスチャー オブジェクト名を指定する ASCII 文字列。Samples
サンプルの数 (1 ~ 128 の範囲)。
例
次に、テクスチャー オブジェクト宣言の例を示します。
Texture2D <float4> MyTex; Texture2DMS <float4, 128> MyMSTex;
テクスチャー オブジェクト メソッド
各テクスチャー オブジェクトは、特定のメソッドを実装しています。次の表は、すべてのメソッドを示しています。それぞれのメソッドを使用できるオブジェクトについては、各メソッドのリファレンス ページを参照してください。
テクスチャー メソッド | 説明 | vs_4_0 | vs_4_12 | ps_4_0 | ps_4_12 | gs_4_0 | gs_4_12 |
---|---|---|---|---|---|---|---|
CalculateLevelOfDetail | 詳細レベル (LOD) を計算します。クランプされた結果を返します。 | x | |||||
CalculateLevelOfDetailUnclamped | 詳細レベル (LOD) を計算します。クランプされていない結果を返します。 | x | |||||
Gather | 4 つのサンプルを取得します (赤の成分のみ)。取得したサンプルは、テクスチャーのサンプリング時のバイリニア補間に使用されます。 | x | x | x | |||
GetDimensions | 指定されたミップマップ レベルのテクスチャー ディメンションを取得します。 | x | x | x | x | x | x |
GetDimensions (マルチサンプル) | 指定されたミップマップ レベルのテクスチャー ディメンションを取得します。 | x | x | x | |||
GetSamplePosition | 指定されたサンプルの位置を取得します。 | x | x | x | |||
Load | フィルタリングやサンプリングを行わず、データをロードします。 | x | x | x | x | x | x |
Load (マルチサンプル) | フィルタリングやサンプリングを行わず、データをロードします。 | x | x | x | x | ||
Sample | テクスチャーをサンプリングします。 | x | x | ||||
SampleBias | バイアス値をミップマップ レベルに適用してから、テクスチャーをサンプリングします。 | x | x | ||||
SampleCmp | サンプルの却下を判定するための比較対象値を使用して、テクスチャーをサンプリングします。 | x | x | ||||
SampleCmpLevelZero | サンプルの却下を判定するための比較対象値を使用して、テクスチャーをサンプリングします (ミップマップ レベル 0 限定)。 | x | x | x | x | x | x |
SampleGrad | サンプリング位置の計算方法に作用するグラデーションを使用してテクスチャーをサンプリングします。 | x | x | x | x | x | x |
SampleLevel | 指定されたミップマップ レベルのテクスチャーをサンプリングします。 | x | x | x | x | x | x |
戻り型
テクスチャー オブジェクト メソッドの戻り型は、別途指定しない限り float4 になります。ただし、常に型とサンプル カウントを指定する必要のあるマルチサンプルされるアンチエイリアスが適用されたテクスチャー オブジェクトについては、例外です。戻り値の型は、テクスチャー リソースの型と同じです (DXGI_FORMAT)。つまり、次の方のうちのいずれかの型を指定できます。
型 | 説明 |
---|---|
float | 32 ビット浮動小数点 (IEEE 浮動小数点との違いについては「浮動小数点の規則」を参照) |
int | 32 ビット符号付き整数 |
int (符号なし) | 32 ビット符号なし整数 |
snorm | -1 以上で 1 以下の 32 ビット浮動小数点 (IEEE 浮動小数点との違いについては「浮動小数点の規則」を参照) |
unorm | 0 以上で 1 以下の 32 ビット浮動小数点 (IEEE 浮動小数点との違いについては「浮動小数点の規則」を参照) |
任意のテクスチャー型または構造体 | 返される成分の数は、1 ~ 3 の範囲内である必要があります。 |
また、戻り型には構造体を含む任意のテクスチャー タイプも指定できます。ただし、1 つの成分を返す float1 型のように、返される成分の数が 4 成分未満である必要があります。
例
次に、テクスチャー メソッドを使用したテクスチャー サンプリングの例を示します。
sampler MySamp; Texture2D <float4> MyTex; float4 main( float2 TexCoords[2] : TEXCOORD ) : SV_Target { return MyTex.Sample( MySamp, TexCoords[0] )); }
最低限必要なシェーダー モデル
このオブジェクトは、次のシェーダー モデルでサポートされています。
シェーダー モデル | サポート |
---|---|
シェーダー モデル 4 以降のシェーダー モデル | ○ |