texld - ps_2_0以降

指定されたテクスチャ座標を使用して、特定のサンプラーでテクスチャをサンプリングします。 この命令は、ピクセル シェーダー バージョン 1_4 で使用 される texld - ps_1_4 命令とは異なります。

構文

texld dst、src0、src1

 

この場合、

  • dst は宛先レジスタです。
  • src0 は、テクスチャ サンプルのテクスチャ座標を提供するソース レジスタです。
  • src1 は サンプラー (Direct3D 9 asm-ps) (s#) を識別します。ここで、 # はサンプリングするテクスチャ サンプラー番号を指定します。 サンプラーは、 D3DSAMPLERSTATETYPE によって定義されたテクスチャとサンプラー状態に関連付けられています。

ps_2_0とps_2_x

dst は 一時レジスタ (r#) である必要があり、.xyzw マスク (既定のマスク) のみが許可されます。

src0 は 、テクスチャ座標レジスタ (t#) または 一時レジスタ (r#) のいずれかであり、修飾子やスウィズルは必要ありません。

src1 は サンプラー (Direct3D 9 asm-ps) (s#) である必要があります。修飾子やスウィズルはありません。

D3DD3DPSHADERCAPS2_0_NODEPENDENTREADLIMITキャップ ビットが設定されていない場合 (D3DPSHADERCAPS2_0)、特定のテクスチャ命令 (texldtexldptexldb - pstexldd ) は、最大で 3 番目の順序に依存する場合があります。 一次依存テクスチャ命令は、次のいずれかのテクスチャ命令です。

  • src0 は 一時レジスタ (r#) です。
  • dst は以前に書き込まれ、現在は再び書き込まれます。

2 次依存テクスチャ命令は、テクスチャ命令を実行する前に内容が (おそらく間接的に) 一次依存テクスチャ命令の結果に依存する 一時レジスタ (r#) に読み取りまたは書き込みを行うテクスチャ命令として定義されます。 (n)番目の依存テクスチャ命令は、(n - 1)番目のテクスチャ命令から派生します。

ps_3_0

src1 は サンプラー (Direct3D 9 asm-ps) (s#) である必要があります。修飾子はありません。 swizzle は src0 または src1 で許可されます。 スウィズルはテクスチャ参照の前にテクスチャ座標に適用されます。

注釈

この命令は、次のバージョンでサポートされています。

ピクセル シェーダーのバージョン 1_1 1_2 1_3 1_4 2_0 2_x 2_sw 3_0 3_sw
texld x x x x x

 

src0 がテクスチャ サンプルを実行するために必要な座標の数は、src1 の宣言方法と .w コンポーネントによって異なります。 サンプラー型は 、dcl_samplerType (sm2、sm3 - ps asm) を使用して宣言されます。 src1 が 2D サンプラーとして宣言されている場合、src0 には .xy 座標が含まれている必要があります。src1 がキューブ サンプラーまたはボリューム サンプラーとして宣言されている場合、src0 には .xyz 座標が含まれている必要があります。 テクスチャ座標に存在するよりも小さいサイズのテクスチャのサンプリングは、追加のテクスチャ座標コンポーネントが無視されるため、許可されます。

ソース テクスチャに含まれるコンポーネントが 4 つ未満の場合は、不足しているコンポーネントに既定値が設定されます。 既定値は、次の表に示すようにテクスチャの形式によって異なります。

テクスチャの形式 既定値
D3DFMT_R5G6B5、D3DFMT_R8G8B8、D3DFMT_L8、D3DFMT_L16、D3DFMT_R3G3B2、D3DFMT_CxV8U8、D3DFMT_L6V5U5 A = 1.0
D3DFMT_V8U8、D3DFMT_V16U16、D3DFMT_G16R16、D3DFMT_G16R16F、D3DFMT_G32R32F B = A = 1.0
D3DFMT_A8 R = G = B = 0.0
D3DFMT_R16F、D3DFMT_R32F G = B = A = 1.0
すべての深度/ステンシル形式 R = B = 0.0、A = 1.0

 

ピクセル シェーダーの手順