texld - ps_2_0和向上
使用提供的紋理座標,在特定取樣器上取樣紋理。 此指令與 texld - ps_1_4 圖元著色器 1_4 版中使用的指令不同。
Syntax
texld dst, src0, src1 |
---|
其中:
- dst 是目的地暫存器。
- src0 是來源暫存器,可提供紋理樣本的紋理座標。
- src1 會識別 Sampler (Direct3D 9 asm-ps) ( s#) ,其中 # 會指定要取樣的紋理取樣器編號。 取樣器已與它相關聯紋理,以及 D3DSAMPLERSTATETYPE所定義的取樣器狀態。
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 - ps、texldd ) 可能相依于最多第三個順序。 第一個順序相依紋理指令是紋理指令,其中一個是:
- src0 是 暫存緩存 器 (r#) 。
- 先前已撰寫 dst,現在再次寫入。
第二個順序相依紋理指令定義為紋理指令,該指令會讀取或寫入 暫存緩存 器 (r#) ,其內容在執行紋理指令之前,可能間接 () 第一順序相依紋理指令的結果。 (n) 順序相依紋理指令衍生自 n - 1 (n - 1) 順序紋理指令。
ps_3_0
src1 必須是 Sampler (Direct3D 9 asm-ps) ( s#) ,沒有修飾詞。 src0 或 src1 上允許 Swizzle。 在紋理查閱之前,會將 Swizzle 套用至紋理座標。
備註
下列版本支援此指示:
圖元著色器版本 | 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 宣告為 Cube 取樣器或磁片區取樣器,則 src0 必須包含 .xyz 座標。 允許取樣維度少於紋理座標中的紋理,因為會忽略額外的紋理座標元件 () 。
如果來源紋理包含少於四個元件,預設值會放在遺漏的元件中。 預設值取決於紋理格式,如下表所示:
紋理格式 | 預設值 |
---|---|
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 |
相關主題