Freigeben über


D3DTEXTUREOP-Enumeration

Definiert Texturmischungsvorgänge pro Phase.

Syntax

typedef enum D3DTEXTUREOP { 
  D3DTOP_DISABLE                    = 1,
  D3DTOP_SELECTARG1                 = 2,
  D3DTOP_SELECTARG2                 = 3,
  D3DTOP_MODULATE                   = 4,
  D3DTOP_MODULATE2X                 = 5,
  D3DTOP_MODULATE4X                 = 6,
  D3DTOP_ADD                        = 7,
  D3DTOP_ADDSIGNED                  = 8,
  D3DTOP_ADDSIGNED2X                = 9,
  D3DTOP_SUBTRACT                   = 10,
  D3DTOP_ADDSMOOTH                  = 11,
  D3DTOP_BLENDDIFFUSEALPHA          = 12,
  D3DTOP_BLENDTEXTUREALPHA          = 13,
  D3DTOP_BLENDFACTORALPHA           = 14,
  D3DTOP_BLENDTEXTUREALPHAPM        = 15,
  D3DTOP_BLENDCURRENTALPHA          = 16,
  D3DTOP_PREMODULATE                = 17,
  D3DTOP_MODULATEALPHA_ADDCOLOR     = 18,
  D3DTOP_MODULATECOLOR_ADDALPHA     = 19,
  D3DTOP_MODULATEINVALPHA_ADDCOLOR  = 20,
  D3DTOP_MODULATEINVCOLOR_ADDALPHA  = 21,
  D3DTOP_BUMPENVMAP                 = 22,
  D3DTOP_BUMPENVMAPLUMINANCE        = 23,
  D3DTOP_DOTPRODUCT3                = 24,
  D3DTOP_MULTIPLYADD                = 25,
  D3DTOP_LERP                       = 26,
  D3DTOP_FORCE_DWORD                = 0x7fffffff
} D3DTEXTUREOP, *LPD3DTEXTUREOP;

Konstanten

D3DTOP_DISABLE

Deaktiviert die Ausgabe dieser Texturphase und aller Phasen mit einem höheren Index. Um die Texturzuordnung zu deaktivieren, legen Sie dies als Farbvorgang für die erste Texturstufe (Phase 0) fest. Alphavorgänge können nicht deaktiviert werden, wenn Farbvorgänge aktiviert sind. Das Festlegen des Alphavorgangs auf D3DTOP_DISABLE, wenn die Farbmischung aktiviert ist, führt zu undefiniertem Verhalten.

D3DTOP_SELECTARG1

Verwenden Sie das erste Farb- oder Alphaargument dieser Texturstufe ( unverändert) als Ausgabe. Dieser Vorgang wirkt sich auf das Farbargument aus, wenn es mit dem zustand der D3DTSS_COLOROP Texturphase verwendet wird, und auf das Alphaargument, wenn es mit D3DTSS_ALPHAOP verwendet wird.

Formel dieses Arguments (s(rgba) = arg1)

D3DTOP_SELECTARG2

Verwenden Sie das zweite Farb- oder Alphaargument dieser Texturstufe( unverändert) als Ausgabe. Dieser Vorgang wirkt sich auf das Color-Argument aus, wenn es mit dem Zustand der D3DTSS_COLOROP Texturphase verwendet wird, und auf das Alphaargument, wenn es mit D3DTSS_ALPHAOP verwendet wird.

Formel dieses Arguments (s(rgba) = arg2)

D3DTOP_MODULATE

Multiplizieren Sie die Komponenten der Argumente.

Formel der Modulatoperation (s(rgba) = arg1 x arg 2)

D3DTOP_MODULATE2X

Multiplizieren Sie die Komponenten der Argumente, und verschieben Sie die Produkte 1 Bit nach links (effektiv multipliziert mit 2), um sie aufzuhellen.

Gleichung der Modulate2x-Operation (s(rgba) = (arg1 x arg 2) und dann nach links verschieben 1)

D3DTOP_MODULATE4X

Multiplizieren Sie die Komponenten der Argumente, und verschieben Sie die Produkte 2 Bits nach links (effektiv multipliziert sie mit 4), um sie aufzuhellen.

Gleichung des Modulate4x-Vorgangs (s(rgba) = (arg1 x arg 2) und dann nach links verschieben 2)

D3DTOP_ADD

Fügen Sie die Komponenten der Argumente hinzu.

Gleichung des Add-Vorgangs (s(rgba) = arg1 + arg 2)

D3DTOP_ADDSIGNED

Fügen Sie die Komponenten der Argumente mit einer -0,5-Abweichung hinzu, sodass der effektive Wertebereich von - 0,5 bis 0,5 festgelegt wird.

Gleichung des vorgangs add signed (s(rgba) = arg1 + arg 2 – 0,5)

D3DTOP_ADDSIGNED2X

Fügen Sie die Komponenten der Argumente mit einer -0,5-Abweichung hinzu, und verschieben Sie die Produkte 1 Bit nach links.

Gleichung der 2x-Operation add signed ((s(rgba) = arg1 + arg 2 - 0,5) und dann nach links verschieben 1)

D3DTOP_SUBTRACT

Subtrahieren Sie die Komponenten des zweiten Arguments von denen des ersten Arguments.

Gleichung der subtrahieren Operation (s(rgba) = arg1 - arg 2)

D3DTOP_ADDSMOOTH

Fügen Sie das erste und das zweite Argument hinzu. dann ihr Produkt von der Summe subtrahieren.

Gleichung der glatten Add-Operation (s(rgba) = arg1 + arg 2 x (1 - arg1))

D3DTOP_BLENDDIFFUSEALPHA

Blende diese Texturphase linear unter Verwendung des interpolierten Alphas von jedem Scheitelpunkt aus.

Gleichung der blend diffuse Alpha-Operation (s(rgba) = arg1 x alpha + arg 2 x (1 - alpha))

D3DTOP_BLENDTEXTUREALPHA

Blende diese Texturphase linear ein, indem du das Alpha aus der Textur dieser Phase verwendest.

Gleichung der Fülltextur-Alphaoperation (s(rgba) = arg1 x alpha + arg 2 x (1 - alpha))

D3DTOP_BLENDFACTORALPHA

Fügen Sie diese Texturphase linear über, indem Sie einen Skalar-Alphasatz mit dem D3DRS_TEXTUREFACTOR Renderzustand verwenden.

Gleichung der Blendfaktor-Alphaoperation (s(rgba) = arg1 x alpha + arg 2 x (1 - alpha))

D3DTOP_BLENDTEXTUREALPHAPM

Lineares Mischen einer Texturphase, die ein prämultipliziertes Alpha verwendet.

Formel der Fülltextur alpha pm Operation (s(rgba) = arg1 + arg 2 x (1 - alpha))

D3DTOP_BLENDCURRENTALPHA

Blende diese Texturphase linear unter Verwendung des Alphas aus der vorherigen Texturphase ein.

Gleichung der aktuellen Alphaoperation (s(rgba) = arg1 x alpha + arg2 x (1 - alpha))

D3DTOP_PREMODULATE

D3DTOP_PREMODULATE wird in Phase n festgelegt. Die Ausgabe von Phase n ist arg1. Wenn in Phase n + 1 eine Textur vorhanden ist, wird jede D3DTA_CURRENT in Phase n + 1 mit der Textur in Phase n + 1 vormultipliziert.

D3DTOP_MODULATEALPHA_ADDCOLOR

Modulieren Sie die Farbe des zweiten Arguments, indem Sie das Alpha des ersten Arguments verwenden. fügen Sie dann das Ergebnis dem ersten Argument hinzu. Dieser Vorgang wird nur für Farbvorgänge (D3DTSS_COLOROP) unterstützt.

Formel der Alphaoperation add color modulate (s(rgba) = arg1(rgb) + arg1(a) x arg2(rgb))

D3DTOP_MODULATECOLOR_ADDALPHA

Modulieren Sie die Argumente; fügen Sie dann das Alpha des ersten Arguments hinzu. Dieser Vorgang wird nur für Farbvorgänge (D3DTSS_COLOROP) unterstützt.

Formel der Farboperation add alpha modulate (s(rgba) = arg1(rgb) x arg2(rgb) + arg1(a))

D3DTOP_MODULATEINVALPHA_ADDCOLOR

Ähnlich wie D3DTOP_MODULATEALPHA_ADDCOLOR, aber verwenden Sie die Umkehrung des Alphas des ersten Arguments. Dieser Vorgang wird nur für Farbvorgänge (D3DTSS_COLOROP) unterstützt.

Gleichung der inversen Alphaoperation add color modulate (s(rgba) = (1 - arg1(a)) x arg2(rgb) + arg1(rgb))

D3DTOP_MODULATEINVCOLOR_ADDALPHA

Ähnlich wie D3DTOP_MODULATECOLOR_ADDALPHA, aber verwenden Sie die Inverse der Farbe des ersten Arguments. Dieser Vorgang wird nur für Farbvorgänge (D3DTSS_COLOROP) unterstützt.

Formel der inversen Farboperation add alphamodulate (s(rgba) = (1 - arg1(rgb)) x arg2(rgb) + arg1(a))

D3DTOP_BUMPENVMAP

Führen Sie eine Pixel-Bump-Zuordnung aus, indem Sie die Umgebungskarte in der nächsten Texturphase ohne Leuchtdichte verwenden. Dieser Vorgang wird nur für Farbvorgänge (D3DTSS_COLOROP) unterstützt.

D3DTOP_BUMPENVMAPLUMINANCE

Führen Sie eine Pixel-Bump-Zuordnung aus, indem Sie die Umgebungskarte in der nächsten Texturstufe mit Leuchtdichte verwenden. Dieser Vorgang wird nur für Farbvorgänge (D3DTSS_COLOROP) unterstützt.

D3DTOP_DOTPRODUCT3

Modulieren Sie die Komponenten jedes Arguments als signierte Komponenten, fügen Sie deren Produkte hinzu. replizieren Sie dann die Summe auf alle Farbkanäle, einschließlich Alpha. Dieser Vorgang wird für Farb- und Alphavorgänge unterstützt.

Gleichung der Punktprodukt-3-Operation (s(rgba) = arg1(r) x arg2(r) + arg1(g) x arg2(g) + arg1(b) x arg2(b)) )

In DirectX 6 und DirectX 7 werden multitexture-Vorgänge die oben genannten Eingaben alle um die Hälfte (y = x - 0,5) nach unten verschoben, bevor sie zum Simulieren signierter Daten verwendet werden, und das Skalarergebnis wird automatisch in positive Werte eingespannt und in alle drei Ausgabekanäle repliziert. Beachten Sie auch, dass dies als Farbvorgang das Alpha nicht aktualisiert, es aktualisiert nur die RGB-Komponenten.

In DirectX 8.1-Shadern können Sie jedoch angeben, dass die Ausgabe an die RGB- oder A-Komponenten oder beide (Standard) weitergeleitet wird. Sie können auch einen separaten Skalarvorgang für den Alphakanal angeben.

D3DTOP_MULTIPLYADD

Führt einen Multikumulationsvorgang aus. Sie nimmt die letzten beiden Argumente, multipliziert sie zusammen, fügt sie dem verbleibenden Eingabe-/Quellargument hinzu und platziert diese im Ergebnis.

SRGBA = Arg1 + Arg2 * Arg3

D3DTOP_LERP

Interpoliert linear zwischen dem zweiten und dritten Quellargument nach einem im ersten Quellargument angegebenen Verhältnis.

SRGBA = (Arg1) * Arg2 + (1- Arg1) * Arg3.

D3DTOP_FORCE_DWORD

Erzwingt, dass diese Enumeration in eine Größe von 32 Bits kompiliert wird. Ohne diesen Wert erlauben einige Compiler es dieser Enumeration, eine andere Größe als 32 Bits zu kompilieren. Dieser Wert wird nicht verwendet.

Bemerkungen

Die Member dieses Typs werden beim Festlegen von Farb- oder Alphavorgängen mithilfe der D3DTSS_COLOROP- oder D3DTSS_ALPHAOP-Werte mit der IDirect3DDevice9::SetTextureStageState-Methode verwendet.

In den obigen Formeln ist SRGBA die RGBA-Farbe, die durch einen Texturvorgang erzeugt wird, und Arg1, Arg2 und Arg3 stellen die vollständige RGBA-Farbe der Texturargumente dar. Einzelne Komponenten eines Arguments werden mit Tiefschreibungen angezeigt. Die Alphakomponente für Argument 1 wird beispielsweise als Arg1A angezeigt.

Anforderungen

Anforderung Wert
Header
D3D9Types.h

Weitere Informationen

Direct3D-Enumerationen

D3DTEXTURESTAGESTATETYPE