texldp – ps
Projizierte Texturladeanweisung. Diese Anweisung teilt die Eingabetexturkoordinate durch das vierte Element (.a oder .w) unmittelbar vor der Stichprobenentnahme.
Syntax
| texldp dst, src0, src1 |
|---|
where
- dst ist das Zielregister.
- src0 ist ein Quellregister, das die Texturkoordinaten für das Texturbeispiel bereitstellt. Siehe Texturkoordinatenregister.
- src1 identifiziert den Sampler (Direct3D 9 asm-ps) (s), # wobei # angibt, welche Textur-Samplernummer entnommen werden soll. Der Sampler hat ihm eine Textur und einen sampler-Zustand zugeordnet, der durch D3DSAMPLERSTATETYPEdefiniert wird.
Informationen zu den Einschränkungen bei der Verwendung von texldp finden Sie unter texld.
Hinweise
texldp führt eine Projektion auf die aus src0 gelesenen Koordinaten durch, bevor das Beispiel ausgeführt wird. Jede Texturkoordinate wird durch src0.w geteilt, dann wird die Textur entnommen. Wenn texldp abgeschlossen ist, sind die Inhalte von src0 nicht betroffen (es sei denn, dst ist dasselbe Register). Eine Alternative zur Verwendung von texldp ist die manuelle Durchführung der Projektionsteilung im Shader. Die Division im Shadercode ist jedoch in der Regel langsamer als bei Ausführung durch die texldp-Anweisung. Vermeiden Sie daher nach Möglichkeit zusätzliche Berechnungen.
Die Anzahl der Koordinaten, die für src0 zum Ausführen des Texturbeispiels erforderlich sind, hängt davon ab, wie src1 deklariert wurde, sowie die W-Komponente. Samplertypen werden mit dcl _ samplerType (sm2, sm3 - ps asm)deklariert. Wenn src1 als 2D-Sampler deklariert ist, muss src0 XYW-Koordinaten enthalten. Wenn src1 entweder als Cube-Sampler oder als Volume-Sampler deklariert wird, muss src0 .xyzw-Koordinaten enthalten. Das Sampling einer 2D-Textur mit XYZW-Koordinaten ist zulässig (die Z-Koordinate wird ignoriert).
Wenn die Quelltextur weniger als vier Komponenten enthält, werden die Standardwerte in den fehlenden Komponenten platziert. Die Standardwerte hängen vom Texturformat ab, wie in der folgenden Tabelle gezeigt.
| Texturformat | Standardwerte für fehlende Komponenten |
|---|---|
| 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 |
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 |
|---|---|---|---|---|---|---|---|---|---|
| texldp | x | x | x | x | x |
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) # sein, ohne Modifizierer oder Swizzle.
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 Reihenfolge abhängig sein. Eine in erster Ordnung abhängige Texturanweisung ist eine Texturanweisung, in der eine der beiden
- src0 ist ein temporäres Register (r # ).
- dst wurde zuvor geschrieben und jetzt erneut geschrieben.
Eine abhängige Texturanweisung der zweiten Ordnung wird als Texturanweisung definiert, die ein temporäres Register (r) liest oder # schreibt, dessen Inhalt vor dem Ausführen der Texturanweisung (möglicherweise indirekt) vom Ergebnis einer abhängigen Texturanweisung erster Ordnung abhängt. Eine (n)th-order-abhängigeTexturanweisung wird von einer Texturanweisung (n - 1)mitder Reihenfolge abgeleitet.
ps _ 3 _ 0
Für ps _ 3 _ 0 muss src1 ein Sampler (Direct3D 9 asm-ps) (s) # ohne Modifizierer sein. Swizzle ist für src1 zulässig, und wenn sie angewendet werden, werden die Ergebnisse der Textursuche vor dem Schreiben in dst vorverwendet.