bmap_to_cubemap(
BMAP*)
Diese Anweisung konvertiert eine 6-seitige Sky-Cube Bitmap in eine Cubic Enviroment
Map, welche für Enviroment Mapping und Shader Effekte verwendet werden kann.
Parameter:
BMAP* - Pointer auf Sky-Cube-Bitmap bmap
Bemerkungen:
- Die Bitmap muss aussehen wie ein Sky-Cube (s.
Abb. unten), d.h. sie muss sechs aneinanderhängende
quadratische Würfel-Seiten in der Reihenfolge, Süden, Osten, Norden,
Westen, Unten, Oben enthalten. Die Breite muss das sechsfacher der Höhe
betragen. Jede Würfelseite sollte in der Ausdehung
eine 2er-Potenz haben, also z.B. 256x256 Pixel. Die Würfel-Seiten
müssen
so geteilt sein, dass sie den Würfel vollständig einhüllen,
d.h. die Kanten der aneinanderhängenen Seiten müssen ineinander übergehen.
- Einige alte 3D-Karten (ATI) unterstützen keine würfelförmige Umgebungsmaps
mit Würfelseiten, die mehr als 256x256 Pixel haben.
- Für Mipmap-Environment-Maps erzeugen Sie die Mipmaps befor bmap_to_cubemap aufgerufen
wird (also z.B. bmap_to_cubemap(bmap_to_mipmap(skymap)).
Danach erzeugte Mipmaps produzieren eine nicht funktionierende Umgebungsmap.
- Zum Rendern in eine Fläche einer Umgebungsmap, setzen die den View-Parameter pos_x auf
die Pixel-Positon des Anfangs der Fläche, in die Sie rendern wollen. Einige 3D-Kartentreiber unterstützen das Rendern in eine Umgebungsmap, die im selben View sichtbar ist, nicht. Um die in die Umgebung gemappten Objekte aus den Render-Views auszuschließen, verwnden Sie entweder die Methode NOFLAG1 oder ENABLE_TREE.
Geschwindigkeit:
Langsam
Edition:
C P
Beispiel:
BMAP* bmpEnviro = "skybox+6.tga";
MATERIAL* mtlEnviro =
{
skin2 = bmpEnviro;
effect = "
texture mtlSkin2;
technique enviro
{
pass P0
{
Texture[0] = <mtlSkin2>;
AddressU[0] = Clamp; // don't wrap around edges
AddressV[0] = Clamp;
ColorOp[0] = SelectArg1; // ignore the ambient light
ColorArg1[0] = Texture;
TexCoordIndex[0] = CameraSpaceReflectionVector;
TextureTransformFlags[0] = Count3;
}
}
technique fallback { pass p0 { } } // empty fallback causes normal rendering without effect
";
}
function mtlEnviro_startup()
{
bmap_to_cubemap(mtlEnviro.skin2);
}
Siehe auch:
CUBE, view.bmap
► Aktuelle Version Online