Vordefinierte Matrizen
Zusätzlich zu den Benutzer-definierten- und den Material-Matrizen gibt es noch einige vordefinierte 4x4-Fließkommamatrizen, auf die sowohl von Shadern als auch vom Skript in Renderevents zugegriffen werden kann. Sie haben für Shader und Skripte dieselben Namen.
matView
Die View Transformation 4x4 Matrix, gibt die View Position und Winkel an.
matViewInv
Die inverse View Transformations Matrix.
matProj
Die View Projection 4x4 Matrix, gibt den view aspect, arc,
und clip_near / clip_far Bereich an.
matViewProj
Das Produkt aus View-Transformation und Projektionsmatrix A7.07
LC .
matWorld
Die Welt-Transformations-4x4 Matrix, wird durch Entity-Position,
-Skalierung und -Ausrichtung bestimmt.
matWorldInv
Die umgekehrte Welt-Transformationsmatrix (nur Shader).
matWorldView
Das Produkt aus Welt- und View-Matrix (nur Shader).
matWorldViewProj
Das Produkt aus Welt-, View- und Projektions-Matrix (nur Shader).
matTexture
Die Textur-Transformationsmatrix; wird durch die uv-Werte
der Entity bestimmt. LC A7.07
matMtl
Eine Universalmatrix, die vom material.matrix-Array aufgestellt wird (nur Shader).
matEffect
Eine Universal-float4x4-Matrix, die mit der mat_effect-Funktion auf
jedweden var[16]-Array gesetzt werden
kann (nur Shader).
.
matEffect1..matEffect8
8 allgemeingültige float4x4-Matrizen, die mittels der Pointer matEffect1..matEffect8 auf jedweden float[16]-Array gesetzt werden können. LC A7.08
Bemerkungen:
- Alle Matrizen beinhalten Fließ-Werte anstatt
var. Um unter lite-C das Umwandeln von
float zu var beim Zuweisen eines float-Wertes
an ein var-Array-Element
zu verhindern, nehmen Sie die Funktion floatv oder
übergeben den Wert an einen Pointer wie in var
my_float = (void*)(float)1.0;.
- Alle Matrizen sind mit dem DirectX D3DMATRIX-Format
kompatibel und lassen sich mit DirectX-Funktionen beeinflussen.
Beispiel:
float4x4 matWorldViewProj : WORLDVIEWPROJ;
float4 vecTime;
void vs_flicker_red(
in float4 iPos : POSITION,
in float2 iTex0 : TEXCOORD0,
in float2 iTex1 : TEXCOORD1,
out float4 oPos : POSITION,
out float4 oDiffuse: COLOR0,
out float2 oTex0 : TEXCOORD0,
out float2 oTex1 : TEXCOORD1)
{
oPos = mul(iPos,matWorldViewProj);
oTex0 = iTex0;
oTex1 = iTex1;
oDiffuse.r = fmod(vecTime.w * 0.1,1.0);
oDiffuse.g = 0.0;
oDiffuse.b = 0.0;
oDiffuse.a = 1.0;
}
technique flicker
{
pass p0
{
VertexShader = compile vs_1_1 vs_flicker_red();
}
}
Siehe auch:
Material, shaders, matrix, mat_identity, mat_scale, mat_set, mat_inverse, mat_transpose, mat_multiply
► Aktuelle Version Online