Share via


texldp - ps

射影テクスチャーのロード命令です。この命令は、サンプリング直前に入力テクスチャー座標を第 4 成分 (.a または .w) で除算します。

構文

texldp dst, src0, src1

この場合

  • dst はデスティネーション レジスタです。
  • src0 は、テクスチャー サンプルのテクスチャー座標が格納されたソース レジスタです。「テクスチャー座標レジスタ」を参照してください。
  • src1 はサンプラー (Direct3D 9 asm-ps) (s#) を識別します。# はサンプリングするテクスチャー サンプラ番号を示します。サンプラーには、D3DSAMPLERSTATETYPE によって定義されるテクスチャーとサンプラー ステートが関連付けられます。

texldp の使用制限については、「texld」を参照してください。

解説 

texldp は、サンプリング実行前に src0 から読み取った座標の射影を行います。個々のテクスチャー座標を src0.w で除算してから、テクスチャーをサンプリングします。texldb を実行しても、src0 の内容は変化しません (dst が同じレジスタである場合を除く)。texldp を使用する代わりに、シェーダー内で手動で射影除算を実行することもできます。ただし、シェーダー コード内で除算を行うと、通常、texldp 命令で実行する場合より時間がかかります。このような追加の計算はできる限り避けるようにしてください。

src0 のテクスチャー サンプリングの実行に必要な座標の数は、s# がどのように宣言されているか、および 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#) であることが必要です。また、src1 に修飾子またはスィズルは指定できません。

(D3DPSHADERCAPS2_0 で) D3DD3DPSHADERCAPS2_0_NODEPENDENTREADLIMIT CAP ビットが設定されていない場合、テクスチャー命令 (texldtexldptexldb - pstexldd) の順序について依存関係が発生するのは、最大 3 レベルまでです。第 1 の順序依存テクスチャー命令は、テクスチャー命令です。ここで、

  • src0 はテンポラリ レジスタ (r#) です。
  • dst は既に書き込まれていて、ここで再度書き込みが実行されます。

第 2 の順序従属テクスチャー命令は、そのテクスチャー命令を実行する前の内容が、第 1 の順序従属テクスチャー命令の結果に依存する (場合によっては間接的に) テンポラリ レジスタ (r#) に対して、読み取りまたは書き込みを行うテクスチャー命令で定義されます。第 n の順序従属テクスチャー命令は、第 (n - 1) 順位のテクスチャー命令から派生します。

ps_3_0

ps_3_0 の場合、src1 はサンプラー (Direct3D 9 asm-ps) (s#) であることが必要です。また、src1 に修飾子は指定できません。src1 ではスィズルを使用できます。スィズルを適用すると、dst に書き込まれる前に、テクスチャー ルックアップ結果がスィズルされます。