サンプラ型 (DirectX HLSL)
サンプラ ステートおよびサンプラ比較ステートを宣言するには、次の構文を使用します。
Direct3D 9 と Direct3D 10 の違い Direct3D 9 のサンプラの構文は次のとおりです。
SamplerType Name = sampler_state{ Texture = <texture_variable>; [state_name = state_value;] ... };
Direct3D 10 のサンプラの構文は、テクスチャー オブジェクトおよびサンプラ配列をサポートするために少し変更されています。
SamplerType Name[Index] { [state_name = state_value;] ... };
|
パラメーター
sampler_state
Direct3D 9 のみ。必須キーワードです。Name
サンプラ変数名を一意に識別する ASCII 文字列。[Index]
Direct3D 10 のみ。配列のサイズ (省略可能)。1 以上の正の整数を指定します。SamplerType
[in] サンプラー型。sampler、sampler1D、sampler2D、sampler3D、samplerCUBE、sampler_state、または SamplerState のいずれかです。Direct3D 9 と Direct3D 10 の違い
Direct3D 10 では、SamplerComparisonState というサンプラー型が追加でサポートされています。.
Texture = <texture_variable>;
Direct3D 9 のみ。テクスチャー変数。Texture キーワードは山かっこ内の式の左側に記述し、変数名は右側に記述する必要があります。state_name = state_value
[in] ステート割り当て (省略可能)。代入演算子の左側はステート名、右側はステート値です。すべてのステート割り当ては、ステートメント ブロック (中かっこ) 内で指定する必要があります。各ステートメントは、セミコロンで区切ります。有効なステート名を次の表に示します。// sampler state AddressU AddressV AddressW BorderColor Filter MaxAnisotropy MaxLOD MinLOD MipLODBias // sampler-comparison state ComparisonFunc ComparisonFilter
各式の右辺は、各ステートに割り当てられた値です。Direct3D 10 で有効なステート値については、D3D10_SAMPLER_DESC 構造体の説明を参照してください。ステート名と構造体のメンバーの間には 1 対 1 の関係があります。次の例を参照してください。
解説
シェーダーまたはエフェクトの実装時、サンプラ ステートには、レンダリングのパイプラインを設定するのに必要となる可能性のある、いくつかのステート タイプのいずれかを指定します。シェーダーまたはエフェクト内で設定できるすべての有効なステートのリストについては、次を参照してください。
例
Direct3D 9 と Direct3D 10 の違い 次の例は、「BasicHLSL サンプル」から抜粋した Direct3D 9 サンプラーの一部です。
次の例は、「BasicHLSL10 サンプル」から抜粋した Direct3D 10 サンプラーの一部です。
|
次は、Direct3D 10 におけるサンプラ比較ステートの宣言、および比較サンプラの呼び出しの例です。
SamplerComparisonState ShadowSampler { // sampler state Filter = MIN_MAG_LINEAR_MIP_POINT; AddressU = MIRROR; AddressV = MIRROR; // sampler comparison state ComparisonFunc = LESS; ComparisonFilter = COMPARISON_ MIN_MAG_LINEAR_MIP_POINT; }; float3 vModProjUV; ... float fShadow = g_ShadowMap.SampleCmpLevelZero( ShadowSampler, vModProjUV.xy, vModProjUV.z);