texld – ps_2_0 und höher
Probieren Sie eine Textur an einem bestimmten Sampler unter Verwendung der bereitgestellten Texturkoordinaten aus. Diese Anweisung unterscheidet sich von der texld - ps_1_4 Anweisung, die in Pixelshader Version 1_4 verwendet wird.
Syntax
texld dst, src0, src1 |
---|
Hierbei gilt:
- dst ist ein Zielregister.
- src0 ist ein Quellregister, das die Texturkoordinaten für das Texturbeispiel bereitstellt.
- src1 identifiziert den Sampler (Direct3D 9 asm-ps) (s#), wobei # angibt, welche Textur-Samplernummer abgetastet werden soll. Der Sampler hat eine Textur und einen Samplerzustand zugeordnet, der durch D3DSAMPLERSTATETYPE definiert ist.
ps_2_0 und ps_2_x
dst muss ein temporäres Register (r#) sein, und nur die XYZW-Maske (Standardmaske) ist zulässig.
src0 muss entweder ein Texturkoordinatenregister (t#) oder ein temporäres Register (r#) ohne Modifizierer oder swizzle sein.
src1 muss ein Sampler (Direct3D 9 asm-ps) (s#) ohne Modifizierer oder Swizzle sein.
Wenn das D3DD3DPSHADERCAPS2_0_NODEPENDENTREADLIMIT Cap Bit nicht festgelegt ist (in D3DPSHADERCAPS2_0), kann eine bestimmte Texturanweisung (texld, texldp, texldb - ps, texldd ) höchstens von der dritten Ordnung abhängig sein. Eine abhängige Texturanweisung der ersten Ordnung ist eine Texturanweisung, in der eine der folgenden Anweisungen gilt:
- src0 ist ein temporäres Register (r#).
- dst wurde zuvor geschrieben und wird jetzt wieder geschrieben.
Eine abhängige Texturanweisung zweiter Ordnung wird als Texturanweisung definiert, die ein temporäres Register (r#) liest oder in ein temporäres Register schreibt, dessen Inhalt vor der Ausführung der Texturanweisung (vielleicht indirekt) vom Ergebnis einer abhängigen Texturanweisung erster Ordnung abhängt. Eine (n)th-order-Abhängige Texturanweisung wird von einer (n -1)th-Order-Texturanweisung abgeleitet.
ps_3_0
src1 muss ein Sampler (Direct3D 9 asm-ps) (s#) ohne Modifizierer sein. Swizzle ist für src0 oder src1 zulässig. Der Swizzle wird vor der Textursuche auf die Texturkoordinaten angewendet.
Bemerkungen
Diese Anweisung wird in den folgenden Versionen unterstützt:
Pixelshaderversionen | 1_1 | 1_2 | 1_3 | 1_4 | 2_0 | 2_x | 2_sw | 3_0 | 3_sw |
---|---|---|---|---|---|---|---|---|---|
texld | x | x | x | x | x |
Die Anzahl der Koordinaten, die für src0 zum Ausführen des Texturbeispiels erforderlich sind, hängt davon ab, wie src1 deklariert wurde, plus der W-Komponente. Samplertypen werden mit dcl_samplerType (sm2, sm3 – ps asm) deklariert. Wenn src1 als 2D-Sampler deklariert wird, muss src0 XY-Koordinaten enthalten. Wenn src1 entweder als Cube-Sampler oder volume sampler deklariert wird, muss src0 XYZ-Koordinaten enthalten. Das Sampling einer Textur mit weniger Dimensionen als in der Texturkoordinate vorhanden ist, ist zulässig, da die zusätzlichen Texturkoordinatenkomponenten ignoriert werden.
Wenn die Quelltextur weniger als vier Komponenten enthält, werden standardwerte in die fehlenden Komponenten eingefügt. Standardwerte hängen vom Texturformat ab, wie in der folgenden Tabelle gezeigt:
Texturformat | Standardwerte |
---|---|
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 |
Alle Tiefen-/Schablonenformate | R = B = 0,0, A = 1,0 |
Zugehörige Themen