matrix
matrix11 .. matrix44
matMtl
Eine Anwender-beschreibbare 4x4-Fließkommamatrix, die für Shader- oder Material-Effekte
über die Effekt-Variable matMtl zur Verfügung steht.
Der matrix-Parameter läßt sich für matrix-Operationen verwenden
und auf ie Elemente der Matrix kann separat über die Fließ-Variablen matrix11..matrix44 zugegriffen
werden.
Typ:
float (lite-C), float4x4 (Shader)
Bemerkungen:
In C-Skript können die Matrix-Elemente über die Funktion floatv() auf
Fließkommawerte gesetzt werden. In lite-C lassen sie sich direkt setzen.
Beispiele:
// use a matrix for cubic environment mapping
function mtl_env_init()
{
bmap_to_cubemap(mtl.skin1);
// generate a user matrix that transforms camera space back to world space
while(1)
{
mat_set(mtl.matrix,mat_viewinv);
// reset the translation part of the matrix
mtl.matrix41 = 0; // 0 is the same as floatv(0)
mtl.matrix42 = 0;
mtl.matrix43 = 0;
wait(1);
}
}
MATERIAL* mtl_envcube // environment cube
{
skin1 = bmp_envcube;
event = mtl_env_init;
effect =
"
texture mtlSkin1;
matrix matMtl;
technique envcube
{
pass p0
{
Texture[0]=<mtlSkin1>;
AddressU[0] = Clamp; // don't wrap around edges
AddressV[0] = Clamp;
TexCoordIndex[0] = CameraSpaceReflectionVector;
TextureTransformFlags[0] = Count3;
TextureTransform[0] = <matMtl>; // transform camera space back to world space
ColorOp[0] = SelectArg1; // ignore the ambient light
ColorArg1[0] = Texture;
}
}
";
}
Siehe auch:
MATERIAL, shader, shader
variables, floatv, floatd, floatr
► Aktuelle
Version Online