Freigeben über


texldb – ps

Anweisung zum Laden von voreingenommenen Texturen. In dieser Anweisung wird das vierte Element (.a oder .w) verwendet, um die Textur-Sampling-Detailebene unmittelbar vor dem Sampling zu verfeinigen.

Syntax

texldb dst, src0, src1

 

Hierbei gilt:

Die Einschränkungen bei der Verwendung von texldb finden Sie in der Anweisung texld – ps_2_0 und höher .

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, 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 src1 zulässig, und wenn sie angewendet werden, werden die Textursuchergebnisse vor dem Schreiben in dst vorgeschwendet.

Bemerkungen

Pixelshaderversionen 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 verzerrt die mipmap-Detailebene, die normal als Teil des Beispielprozesses durch den (signierten) Wert in src0.w berechnet wird. Positive Verzerrungswerte führen dazu, dass kleinere Mipmaps ausgewählt werden und umgekehrt. Für ps_2_0 und ps_2_x können Die Biaswerte innerhalb des Bereichs [-3,0, +3,0] liegen. Bei ps_3_0 können die Biaswerte innerhalb des Bereichs [-16,0, +15,0] liegen. Verzerrungswerte außerhalb dieser Bereiche erzeugen undefinierte Ergebnisse. Der Samplerzustand D3DSAMP_MIPMAPLODBIAS wird weiterhin berücksichtigt, und die texldb-Verzerrung wird hinzugefügt, jedoch pro Pixel. Nachdem die voreingenommene Detailebene berechnet wurde, wird D3DSAMP_MAXMIPLEVEL weiterhin berücksichtigt, und das Texturbeispiel tritt auf. Nach texldb sind die Inhalte von src0 nicht betroffen (es sei denn, dst ist dasselbe Register).

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 XYW-Koordinaten enthalten. Wenn src1 entweder als Cube-Sampler oder 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 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

 

Pixelshaderanweisungen