共用方式為


texldb - ps

偏差紋理載入指令。 此指令會使用第四個元素 (.a 或 .w) ,在取樣之前偏差紋理取樣層級的詳細資料。

Syntax

texldb dst、 src0、 src1

 

其中:

如需使用 texldb 的限制,請參閱 texld - ps_2_0和向上 指示。

ps_2_0和ps_2_x

dst 必須是 暫存緩存 器 (r#) ,而且只允許 .xyzw mask (預設遮罩) 。

src0 必須是 紋理座標暫存器 (t#) 或 暫存緩存 器 (r#) ,沒有修飾詞或 swizzle。

src1 必須是 Sampler (Direct3D 9 asm-ps) ( s#) ,沒有修飾詞或 swizzle。

如果未在 D3DPSHADERCAPS2_0) 中 (設定D3DD3DPSHADERCAPS2_0_NODEPENDENTREADLIMIT上限位,則指定的紋理指令 (texld、texldp、texldb、texldd) 可能相依于最多第三個順序。 第一個順序相依紋理指令是紋理指令,其中一個是:

  • src0 是 暫存緩存 器 (r#) 。
  • 先前已撰寫 dst,現在再次寫入。

第二個順序相依紋理指令定義為紋理指令,該指令會讀取或寫入 暫存緩存 器 (r#) ,其內容在執行紋理指令之前,可能間接 () 第一順序相依紋理指令的結果。 (n) 順序相依紋理指令衍生自 n - 1 (n - 1) 順序紋理指令。

ps_3_0

src1 必須是 Sampler (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 會偏差 mipmap 層級的詳細資料,通常是由 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 之後,除非 dst 是相同的暫存器) ,否則 src0 的內容不會受到影響 (。

src0 執行紋理樣本所需的座標數目取決於 src1 的宣告方式,加上 .w 元件。 取樣器類型是以 dcl_samplerType (sm2、sm3 - ps asm) 宣告。 如果 src1 宣告為 2D 取樣器,則 src0 必須包含 .xyw 座標;如果 src1 宣告為 Cube 取樣器或磁片區取樣器,則 src0 必須包含 .xyzw 座標。 允許取樣具有 .xyzw 座標的 2D 紋理, (忽略 .z 座標) 。

如果來源紋理包含少於四個元件,預設值會放在遺漏的元件中。 預設值取決於紋理格式,如下表所示:

紋理格式 預設值
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

 

圖元著色器指示