次の方法で共有


texldb - ps

偏ったテクスチャ読み込み命令。 この命令では、4 番目の要素 (.a または .w) を使用して、サンプリングの直前にテクスチャ サンプリングの詳細レベルをバイアスします。

構文

texldb dst、src0、src1

 

この場合、

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

texldb を使用する場合の制限については、 texld - ps_2_0 と up の命令を参照してください。

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、texldd) は、最大で 3 番目の順序に依存する可能性があります。 1 次依存テクスチャ命令は、次のいずれかのテクスチャ命令です。

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

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

ps_3_0

src1 は サンプラー (Direct3D 9 asm-ps) (s#) である必要があり、修飾子はありません。 src1 では Swizzle が許可され、適用されると、テクスチャ参照結果は dst に書き込まれる前に事前にスウィズルされます。

解説

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

 

texldb は、src0.w の (符号付き) 値によってサンプル プロセスの一部として通常計算される mipmap の詳細レベルをバイアスします。 正のバイアス値を指定すると、ミップマップが小さくなり、その逆も選択されます。 ps_2_0とps_2_xの場合、バイアス値は [-3.0, +3.0] の範囲内にすることができます。 ps_3_0の場合、バイアス値は [-16.0, +15.0] の範囲内にすることができます。 これらの範囲外のバイアス値では、未定義の結果が生成されます。 サンプラーの状態D3DSAMP_MIPMAPLODBIASは引き続き受け入れられ、texldb バイアスはこれに追加されますが、ピクセル単位で追加されます。 バイアスされた詳細レベルが計算された後も、D3DSAMP_MAXMIPLEVELが受け入れられ、テクスチャ サンプルが発生します。 texldb の後、src0 の内容は影響を受けません (dst が同じレジスタでない限り)。

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

 

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