Suchen und Finden
Service
DirectX Graphics – fortgeschrittene Techniken (S. 347-349)
Am heutigen Tag werden wir tiefer in die Geheimnisse der Grafikprogrammierung eintauchen und uns ein solides Grundlagenwissen aneignen, auf das wir in den kommenden Tagen immer wieder zurückgreifen werden. Die Themen:
- Licht
- Shading
- Texturfilterung
- Verwendung mehrerer Texturen gleichzeitig (Multitexturing)
- Transparenzeffekte (Alpha Blending)
- Erzeugung von 3D-Objekten auf der Grundlage mathematischer Gleichungen
12.1 Fahrplan für den heutigen Tag
In der ersten Hälfte des heutigen Tages werden wir ein kleines Demoprogramm entwickeln (MultiTexturing), in dem sich die verschiedenen in DirectX Graphics integrierten Beleuchtungsmodelle, Farboperationen, die Verwendung von Mipmaps sowie Multitexturing-Effekte wie Glow-, Dark- und Detailmapping in der Praxis studieren lassen.
Im zweiten Teil beschäftigen wir uns mit der Erzeugung von geometrischen 3D-Objekten (Kugel und Zylinder) auf der Grundlage mathematischer Gleichungen. Nach dem gleichen Prinzip werden wir in Woche 3 auch Planeten, Asteroiden, Schutzschilde und Waffenobjekte erzeugen. Des Weiteren werden wir auch tiefer in die Theorie des Alpha Blendings eindringen.
Mit diesem Wissen werden wir ein zweites Demoprogramm (Planet) entwickeln, in dem ein Planet inklusive animierter Wolkendecke erzeugt und gerendert wird.
12.2 Es werde Licht
Die Berechnung von Lichteffekten beim Rendern eines 3D-Szenarios zählt zu den rechenintensivsten Operationen überhaupt. Es ist daher schon ein kleines Wunder, dass heutzutage so etwas überhaut in Echtzeit möglich ist – ein wenig mehr Ehrfurcht, bitte!
Die hohe Geschwindigkeit hat natürlich ihren Preis. Wenn man es genau nimmt, müssten alle Lichteffekte auf Pixelbasis berechnet werden. Die Direct3D-Standardlichtquellen arbeiten hingegen auf Vertexbasis (Vertexlicht). Vereinfacht ausgedrückt, ergibt sich die Farbe eines Polygons aus dem Licht, dem seine Eckpunkte ausgesetzt sind. Und genau hier liegt auch der Schwachpunkt des Konzepts: Sind die Dreiecke, aus denen sich ein Polygon zusammensetzt, zu groß, ist es unter Umständen möglich, dass deren Eckpunkte überhaupt nicht mehr vom Licht erreicht werden. Außerdem kann es zu hässlichen Artefaktbildungen kommen. Im Multi texturing-Demoprogramm können diese Effekte ausführlich studiert werden. Von dem Problem sind natürlich nur Lichtquellen betroffen, die eine begrenzte Reichweite haben.
Für die Berechnung des Farbverlaufs eines Dreiecks (Shading) stehen verschiedene Verfahren zur Verfügung. Das Standardverfahren ist heutzutage das Gouraud- Shading. Nicht mehr auf dem neuesten Stand der Technik ist das so genannte Flat- Shading.
Natürlich lassen sich heutzutage auch Lichteffekte auf Pixelbasis in Echtzeit berechnen. Als Beispiel sei das DotProduct Texture Blending (oft auch als DotProduct3 oder Dot3 Bump Mapping bezeichnet) genannt. Hierbei wird bei Programmstart für jedes Pixel eines Polygons ein Normalenvektor vorberechnet und dieser dann in einer Textur abgespeichert. Bevor die Prozessorleistung für derartige Rechenoperationen ausreichend war, ließen sich nur statische Lichteffekte auf Pixelbasis verwenden. Bei Programmstart wurde eine so genannte Lightmap-Textur vorberechnet, die dann das gesamte Spiel über eingesetzt werden konnte. Heutzutage lassen sich Lightmaps ebenfalls dynamisch berechnen.
Vertexbasiertes Licht kontra pixelbasiertes Licht
Der klare Vorteil von vertexbasiertem Licht ist seine schnelle Berechnungsgeschwindigkeit, die sich seit der Einführung der Transform-and-Lightning-Grafikchips (TnL) noch einmal extrem erhöht hat. Für die Grundausleuchtung einer Szene reichen die Direct3D-Standardlichtquellen allemal aus. Auch lassen sich mit diesen Lichtquellen einige nette Spezialeffekte erzeugen, wie wir in Woche 3 noch sehen werden.
Im weiteren Verlauf kann man sich überlegen, wie sich die Szene durch Verwendung von pixelbasiertem Licht optisch aufwerten lässt. Dabei sollte man aber nicht den Fehler begehen, alles in Echtzeit berechnen zu wollen, nur weil es theoretisch möglich ist. Zum einen sollte ein Spiel auch auf einem durchschnittlichen Rechner ohne allzu große Ruckelarien laufen (größerer Absatzmarkt) und zum anderen sollte man auch einige Ressourcen für das eigentliche Spiel in Reserve haben.
Alle Preise verstehen sich inklusive der gesetzlichen MwSt.; Ersparnis im Vergleich zur Printversion
























