SelfDXD von Martin Pyka
SelfDXD --- DirectXGraphic --- Direct3D Delphi Referenz --- Aufzählungen
D3DTEXTUREOP
// Control                              
D3DTOP_DISABLE                   = 1;
D3DTOP_SELECTARG1                = 2;
D3DTOP_SELECTARG2                = 3;

// Modulate
D3DTOP_MODULATE                  = 4;
D3DTOP_MODULATE2X                = 5;
D3DTOP_MODULATE4X                = 6;

// Add
D3DTOP_ADD                       = 7;
D3DTOP_ADDSIGNED                 = 8;
D3DTOP_ADDSIGNED2X               = 9;
D3DTOP_SUBTRACT                  = 10
D3DTOP_ADDSMOOTH                 = 11

// Linear alpha blend: Arg1*(Alpha) + Arg2*(1-Alpha)
D3DTOP_BLENDDIFFUSEALPHA         = 12;
D3DTOP_BLENDTEXTUREALPHA         = 13;
D3DTOP_BLENDFACTORALPHA          = 14;

// Linear alpha blend with pre-multiplied arg1 input: Arg1 + Arg2*(1-Alpha)
D3DTOP_BLENDCURRENTALPHA         = 16;
D3DTOP_BLENDTEXTUREALPHAPM       = 15;

// Specular mapping
D3DTOP_PREMODULATE               = 17;
D3DTOP_MODULATEALPHA_ADDCOLOR    = 18;
D3DTOP_MODULATECOLOR_ADDALPHA    = 19;
D3DTOP_MODULATEINVALPHA_ADDCOLOR = 20;
D3DTOP_MODULATEINVCOLOR_ADDALPHA = 21;

// Bump mapping
D3DTOP_BUMPENVMAP                = 22;
D3DTOP_BUMPENVMAPLUMINANCE       = 23;
D3DTOP_DOTPRODUCT3               = 24;

// Triadic ops
D3DTOP_MULTIPLYADD               = 25;
D3DTOP_LERP                      = 26;

D3DTOP_FORCE_DWORD               = $7fffffff;

Auswahl

D3DTOP_DISABLE
Schaltet die Ausgabe von dieser Textur des Index und aller höheren Indizes aus. Um also das Texturieren ganz auszuschalten, genügt es, wenn Sie diesen Parameter für den ersten Stage verwenden. Alphaoperationen können nicht ausgeschaltet werden, wenn Farboperationen eingeschaltet sind.

D3DTOP_SELECTARG1
Benutzt das erste Farb- oder Alpha-Argument des Texturstages als Ausgabe.
SRGBA = Arg1

D3DTOP_SELECTARG2
Benutzt das zweite Farb- oder Alpha-Argument des Texturstages als Ausgabe.
SRGBA = Arg2

Modulation

D3DTOP_MODULATE
Multipliziert die Farbkomponenten beider Argumente.
SRGBA = Arg1 x Arg2

D3DTOP_MODULATE2X
Multipliziert die Farbkomponenten beider Argumente und verschiebt diese um 1 Bit nach links. Tatsächlich wird das Produkt also nochmal mit 2 multipliziert (= helleres Bild).
SRGBA = Arg1 x Arg2 x 2

D3DTOP_MODULATE4X
Multipliziert die Farbkomponenten beider Argumente und verschiebt diese um 2 Bit nach links. Tatsächlich wird das Produkt also nochmal mit 4 multipliziert (= helleres Bild).
SRGBA = Arg1 x Arg2 x 4

Addition und Substraktion

D3DTOP_ADD
Addiert beide Argumente miteinander.
SRGBA = Arg1 + Arg2

D3DTOP_ADDSIGNED
Addiert beide Argumente miteinander und mit -0.5. Damit können Werte zwischen -0.5 und +0.5 erreicht werden.
SRGBA = Arg1 + Arg2 - 0.5

D3DTOP_ADDSIGNED2X
Addiert beide Argumente miteinander und mit -0.5 und multipliziert das ganze mit 2.
SRGBA = (Arg1 + Arg2 - 0.5) x 2

D3DTOP_SUBTRACT
Subtrahiert die Farbwerte des zweiten Arguments von den Werten des ersten Arguments.
SRGBA = Arg1 - Arg2

D3DTOP_ADDSMOOTH
Addiert beide Argumente miteinander und subtrahiert dann das Produkt davon.
SRGBA = Arg1 + Arg2 - Arg1 x Arg2

Linears Alphablending

D3DTOP_BLENDDIFFUSEALPHA
Vermischt beide Argumente anhand des Alphawertes der Vertices.

D3DTOP_BLENDTEXTUREALPHA
Vermischt beide Argumente anhand des Textur-Alphawertes. Je nachdem, in welchem Format Sie die Textur erstellen, haben Sie mehrere Bits für den Alpha-Wert eines Pixels zur Verfügung. Durch das Verändern dieses Wertes können Sie für jeden einzelnen Pixel der Textur entscheiden, wie transparent dieser sein soll.

D3DTOP_BLENDFACTORALPHA
Vermischt Texturen anhand eines Faktors, den Sie mit D3DRS_TEXTUREFACTOR bestimmen können.

D3DTOP_BLENDCURRENTALPHA
Der Alpha-Wert des vorrausgehenden Texturstages wird zum überblenden verwendet.

Allen vier Flags gemeinsam ist die Berechnungsmethode des Farbwertes:
SRGBA = Arg1 x Alpha + Arg2 x (1 - Alpha)

D3DTOP_BLENDTEXTUREALPHAPM

Spiegel-, Glanz-Mapping

D3DTOP_PREMODULATE
Moduliert diesen Texturstage mit dem nächsten.

D3DTOP_MODULATEALPHA_ADDCOLOR
Moduliert die Farbe des ersten Argumentes unter Benutzung des Alphawertes des ersten Argumentes. Anschliessend wird das Resultat zum ersten Argument addiert. Diese Operation ist nur für die Farboperationen (D3DTSS_COLOROP) verfügbar.
SRGBA = Arg1RGB + Arg1A x Arg2RGB

D3DTOP_MODULATECOLOR_ADDALPHA
Moduliert beide Argumente und addiert den Alphawert des ersten Argumentes hinzu. Diese Operation ist nur für die Farboperationen (D3DTSS_COLOROP) verfügbar.
SRGBA = Arg1RGB x Arg2RGB + Arg1A

D3DTOP_MODULATEINVALPHA_ADDCOLOR
Im Gegensatz zu D3DTOP_MODULATECOLOR_ADDALPHA wird hier die Umkehrung des Alphawertes des ersten Argumentes verwendet. Diese Operation ist nur für die Farboperationen (D3DTSS_COLOROP) verfügbar.
SRGBA = (1 - Arg1A) x Arg2RGB + Arg1RGB

D3DTOP_MODULATEINVCOLOR_ADDALPHA
Ähnlich wie D3DTOP_MODULATECOLOR_ADDALPHA. Hier wird allerdings die Umkehrung des ersten Argumentes verwendet. Diese Operation ist nur für die Farboperationen (D3DTSS_COLOROP) verfügbar.
SRGBA = (1 - Arg1RGB) x Arg2RGB + Arg1A

Bump Mapping

D3DTOP_BUMPENVMAP
Unter Verwendung der Environmentmap im nächsten Stage werden die Höhen und Tiefen Bumpmap-typisch berechnet. Beleuchtungsoperationen sind hier nicht aktiv. Diese Operation ist nur für die Farboperationen (D3DTSS_COLOROP) verfügbar.

D3DTOP_BUMPENVMAPLUMINANCE
Unter Verwendung der Environmentmap im nächsten Stage werden die Höhen und Tiefen Bumpmap-typisch berechnet. Beleuchtungsoperationen sind hier auch aktiv. Diese Operation ist nur für die Farboperationen (D3DTSS_COLOROP) verfügbar.

D3DTOP_DOTPRODUCT3
Moduliert alle Farbkomponenten beider Argumente. Die Summe dieser Modulationen wird jedem Farbkanal, inklusive des Alphakanals, hinzugefügt. Diese Operation ist für Farb- und Alphaoperationen verfügbar.
SRGBA = (Arg1R x Arg2R + Arg1G x Arg2G + Arg1B x Arg2B)

Dreieckiges Texturblending

D3DTOP_MULTIPLYADD
Das zweite und dritte Argument werden miteinander multipliziert und zum ersten addiert.
SRGBA = Arg1 + Arg2 x Arg3

D3DTOP_LERP
Lineare Interpolation zwischen dem zweiten und dritten Argument in einem Verhältnis, das durch das erste Argument angegeben wird.
SRGBA = Arg1 x Arg2 + (1 - Arg1) x Arg3

Sonstiges

D3DTOP_FORCE_DWORD
Zwingt den Compiler dazu, die Werte der Konstanten als 32-Bit-Zahlen zu verwenden. Für die Darstellung hat diese Konstante keinen Einfluss.