texldp - ps
投影テクスチャの読み込み命令。 この命令は、サンプリングの直前に、入力テクスチャ座標を 4 番目の要素 (.a または .w) で除算します。
構文
texldp dst、src0、src1 |
---|
where
- dst は宛先レジスタです。
- src0 は、テクスチャ サンプルのテクスチャ座標を提供するソース レジスタです。 「テクスチャ座標レジスタ」を参照してください。
- src1 は サンプラー (Direct3D 9 asm-ps) (s#) を識別します。ここで、 # はサンプリングするテクスチャ サンプラー番号を指定します。 サンプラーは、 D3DSAMPLERSTATETYPE によって定義されたテクスチャとサンプラー状態に関連付けられています。
texldp を使用する場合の一連の制限については、「 texld」を参照してください。
注釈
texldp は、サンプルを実行する前に src0 から読み取られた座標に対してプロジェクションを実行します。 各テクスチャ座標は src0.w で除算され、テクスチャがサンプリングされます。 texldp が完了すると、src0 の内容は影響を受けません (dst が同じレジスタでない限り)。 texldp を使用する代わりに、シェーダーでプロジェクション分割を手動で実行することもできます。 ただし、シェーダー コードでの除算の実行は、通常、texldp 命令で実行した場合よりも遅くなります。そのため、可能な場合は、このような追加の数学を避けてください。
src0 がテクスチャ サンプルを実行するために必要な座標の数は、src1 の宣言方法と .w コンポーネントによって異なります。 サンプラー型は 、dcl_samplerType (sm2、sm3 - ps asm) を使用して宣言されます。 src1 が 2D サンプラーとして宣言されている場合、src0 には .xyw 座標が含まれている必要があります。src1 がキューブ サンプラーまたはボリューム サンプラーとして宣言されている場合、src0 には .xyzw 座標が含まれている必要があります。 .xyzw 座標を使用して 2D テクスチャをサンプリングできます (.z 座標は無視されます)。
ソース テクスチャに含まれるコンポーネントが 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 |
この命令は、次のバージョンでサポートされています。
ピクセル シェーダーのバージョン | 1_1 | 1_2 | 1_3 | 1_4 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|---|---|---|
texldp | x | x | x | x | x |
ps_2_0とps_2_x
dst は 一時レジスタ (r#) である必要があり、.xyzw マスク (既定のマスク) のみが許可されます。
src0 は 、テクスチャ座標レジスタ (t#) または 一時レジスタ (r#) のいずれかであり、修飾子やスウィズルは必要ありません。
src1 は サンプラー (Direct3D 9 asm-ps) (s#) である必要があります。修飾子やスウィズルはありません。
D3DD3DPSHADERCAPS2_0_NODEPENDENTREADLIMITキャップ ビットが設定されていない場合 (D3DPSHADERCAPS2_0)、特定のテクスチャ命令 (texld、texldp、 texldb - ps、 texldd ) は、最大で 3 番目の順序に依存する場合があります。 一次依存テクスチャ命令は、次のいずれかのテクスチャ命令です。
- src0 は 一時レジスタ です (r#)
- dst は以前に書き込まれ、現在は再び書き込まれます。
2 次依存テクスチャ命令は、テクスチャ命令を実行する前に内容が (おそらく間接的に) 一次依存テクスチャ命令の結果に依存する 一時レジスタ (r#) に読み取りまたは書き込みを行うテクスチャ命令として定義されます。 (n)番目の依存テクスチャ命令は、(n - 1)番目のテクスチャ命令から派生します。
ps_3_0
ps_3_0の場合、src1 は サンプラー (Direct3D 9 asm-ps) (s#) であり、修飾子は必要ありません。 src1 では Swizzle が許可されており、適用すると、テクスチャルックアップ結果は dst に書き込まれる前に事前にスウィズルされます。
関連トピック