Navigation

Seiten der Rubrik "Bücher"


Google Anzeigen

Anzeigen

Bücher

Programming Pixel and Vertex Shaders


Statistiken
  • 14559 Aufrufe

Informationen zum Buch
  ISBN
  Autor
  Verlag
  Sprache
  Seiten
  Erscheinungsjahr
  Extras

Rezension von

Jan Rehders

Programming Pixel and Vertex Shaders Wie der Titel schon andeutet geht es in diesem Buch um die Programmierung von moderner Computergrafikhardware mit Hilfe von Shadern. Diese kleinen Programme erlauben es, die leistungsfähigen Grafikkarten heutiger Consumer PCs zu programmieren. So befreit von der starren "Fixed Function Pipeline" der Vergangenheit lassen sich zahlreiche anspruchsvolle Renderingverfahren in Echtzeit implementieren. Das Buch gibt Grafikprogrammierern einen Einblick in die Möglichkeiten der Shaderprogrammierung und vermittelt ihnen das nötige Rüstzeug um selbst anspruchsvolle Renderingverfahren zu implementieren. Es wendet sich vor allem an Programmierer welche bereits über Wissen in der Direct3D Entwicklung verfügen aber noch keine oder wenig Erfahrung in der Shaderprogrammierung haben. Vor dem Lesen sollte man bereits ein wenig Erfahrung in der 3D Programmierung mitbringen, die Grundlagen wie Transformationen, Projektion oder die Verwendung von Texturen und Vertex Buffern werden hier als bekannt voraus gesetzt. Um den Inhalt des Buches zu verstehen muss man allerdings kein DirectX Experte sein, auch für Programmierer denen bisher vor allem OpenGL bekannt war ist alles gut nachvollziehbar. In der Regel werden Algorithmen beschrieben und nicht eine bestimmte API, auch wenn sie stets am Beispiel von Direct3D demonstriert werden. Das Buch beginnt mit einer Einführung in die wichtigsten Tools der DirectX Shader Programmierung. Die Benutzung des HLSL Compilers und Debugger werden detailliert beschrieben, aber auch Shader Entwicklungswerkzeuge wie ATIs "RenderMonkey" und Nvidias "FX Composer" werden erwähnt. An dieser Stelle wird der Leser auch gleich bei der Installation und Einrichtung der Tools an die Hand genommen, wer dies alleine hinbekommt kann einfach ein paar Seiten überspringen. Als nächstes folgt eine kurze Einführung in die Architektur und Renderingpipeline von Direct3D. Hier wird vor allem auf die Unterschiede zur Fixed Function Pipeline eingegangen und aufgezeigt welche Teile der Pipeline programmierbar sind. Es folgt eine ausführliche Beschreibung der DirectX "High Level Shading Language", kurz HLSL. Diese taugt auch später noch zum schnellen Nachschlagen. Darauf folgt dann etwas überraschend ein Kapitel zur Optimierung von Shadern. Dieses Kapitel dürfte für den Leser welcher gerade erst die Sprache erlernt hat ein wenig früh sein, das Thema hätte wohl besser in den Anhang gepasst. Im folgenden geht es dann zuerst um das für Shader zentrale Thema der Beleuchtung. Zum Einstieg wird gezeigt wie man die Beleuchtungsalgorithmen der Fixed Function Pipeline mit Shadern nachbilden kann. Darauf wird dem Leser dann diverse aufwendigere Verfahren vorgestellt. Dabei wird der Stand der Technik recht gut abgedeckt. Von grundlegenden Techniken wie Bump- und Parallaxmapping bis zu komplexen Lichtmodellen von Cook-Torrance, Ward, Oren-Nayar und Ashikhmin-Shirley ist alles dabei. Auf dieses Kerngebiet der Shaderprogrammierung folgt die Vorstellung verschiedener Renderingverfahren. Die Verwendung von Cube Mapping zur Implementation von dynamischen Reflektionen und Brechungen der Umgebung der Szene wird genau so vorgestellt wie das "High Dynamic Range" Rendering und damit verbundene Verfahren wie Tone Mapping. Es folgt ein Kapitel über die Generierung von Schatten mit Hilfe von Shadow Volumes und Shadow Mapping. Dabei werden ausser der Theorie und Umsetzung auch Ausblicke auf verschiedene Techniken zur Verbesserung der Qualität gegeben. Zum Abschluss der Renderingverfahren folgt noch ein Kapitel zu Displacement Mapping in Vertex Shadern und ein kurzer Anriss von Geometry Images. Dem Buch liegt eine CD bei. Diese enthält alle Screenshots und Abbildungen des Buches in Farbe, diese sind im Buch leider nur in Graustufen abgedruckt. Bei den Beleuchtungsmodellen und vor allem dem High Dynamic Range Rendering gerät dies manchmal zum Nachteil, da man in Schwarz-Weiss nicht alles erkennen kann. Alle Beispiele des Buches sind als fertige Projekte für Visual Studio vorhanden, so dass man sie sofort ausprobieren kann. Einem schnellen Experimentieren mit den vorgestellten Rendering Verfahren steht damit nichts im Wege. Insgesamt gibt "Programming Vertex and Pixel Shaders" ein recht gutes Bild ab. Das Buch bietet einem eine solide Einführung und einen recht vollständigen Überblick über die Shaderentwicklung und bietet darüber hinaus noch einiges an Rüstzeug um aktuelle Entwicklungen im 3D Echtzeitrendering verstehen zu können. Es bietet einem damit auf bestehenden Vorkenntnissen der Fixed Function Pipeline aufbauend eine solide Grundlage für die praktische Seite der Shaderprogrammierung. Alle vorgestellten Beispiele sind sehr praxisnah gehalten, leider heisst das auch dass die mathematische Seite des ganzen auf die Angabe einiger Formeln reduziert wird. Wer eine ausführliche Erklärung oder Herleitung der Formeln haben will, der muss woanders suchen. Vor allem bei den fortgeschrittenen Techniken hätte man gerne noch etwas mehr in die Tiefe gehen können. So gibt sich am Ende das Bild eines sehr gelungenen Einsteigerwerkes. Wer eine solide Einführung in die Shaderprogrammierung mit Verweisen auf fortgeschrittene Techniken sucht, der wird hier fündig.

Wie der Titel schon andeutet geht es in diesem Buch um die Programmierung von moderner Computergrafikhardware mit Hilfe von Shadern. Diese kleinen Programme erlauben es, die leistungsfähigen Grafikkarten heutiger Consumer PCs zu programmieren. So befreit von der starren "Fixed Function Pipeline" der Vergangenheit lassen sich zahlreiche anspruchsvolle Renderingverfahren in Echtzeit implementieren. Das Buch gibt Grafikprogrammierern einen Einblick in die Möglichkeiten der Shaderprogrammierung und vermittelt ihnen das nötige Rüstzeug um selbst anspruchsvolle Renderingverfahren zu implementieren.

weitere Rezensionen von Jan Rehders

#
rezensiert seit
Buchtitel

Es wendet sich vor allem an Programmierer welche bereits über Wissen in der Direct3D Entwicklung verfügen aber noch keine oder wenig Erfahrung in der Shaderprogrammierung haben. Vor dem Lesen sollte man bereits ein wenig Erfahrung in der 3D Programmierung mitbringen, die Grundlagen wie Transformationen, Projektion oder die Verwendung von Texturen und Vertex Buffern werden hier als bekannt voraus gesetzt. Um den Inhalt des Buches zu verstehen muss man allerdings kein DirectX Experte sein, auch für Programmierer denen bisher vor allem OpenGL bekannt war ist alles gut nachvollziehbar. In der Regel werden Algorithmen beschrieben und nicht eine bestimmte API, auch wenn sie stets am Beispiel von Direct3D demonstriert werden.

Das Buch beginnt mit einer Einführung in die wichtigsten Tools der DirectX Shader Programmierung. Die Benutzung des HLSL Compilers und Debugger werden detailliert beschrieben, aber auch Shader Entwicklungswerkzeuge wie ATIs "RenderMonkey" und Nvidias "FX Composer" werden erwähnt. An dieser Stelle wird der Leser auch gleich bei der Installation und Einrichtung der Tools an die Hand genommen, wer dies alleine hinbekommt kann einfach ein paar Seiten überspringen.

Als nächstes folgt eine kurze Einführung in die Architektur und Renderingpipeline von Direct3D. Hier wird vor allem auf die Unterschiede zur Fixed Function Pipeline eingegangen und aufgezeigt welche Teile der Pipeline programmierbar sind. Es folgt eine ausführliche Beschreibung der DirectX "High Level Shading Language", kurz HLSL. Diese taugt auch später noch zum schnellen Nachschlagen. Darauf folgt dann etwas überraschend ein Kapitel zur Optimierung von Shadern. Dieses Kapitel dürfte für den Leser welcher gerade erst die Sprache erlernt hat ein wenig früh sein, das Thema hätte wohl besser in den Anhang gepasst.

Im folgenden geht es dann zuerst um das für Shader zentrale Thema der Beleuchtung. Zum Einstieg wird gezeigt wie man die Beleuchtungsalgorithmen der Fixed Function Pipeline mit Shadern nachbilden kann. Darauf wird dem Leser dann diverse aufwendigere Verfahren vorgestellt. Dabei wird der Stand der Technik recht gut abgedeckt. Von grundlegenden Techniken wie Bump- und Parallaxmapping bis zu komplexen Lichtmodellen von Cook-Torrance, Ward, Oren-Nayar und Ashikhmin-Shirley ist alles dabei.

Auf dieses Kerngebiet der Shaderprogrammierung folgt die Vorstellung verschiedener Renderingverfahren. Die Verwendung von Cube Mapping zur Implementation von dynamischen Reflektionen und Brechungen der Umgebung der Szene wird genau so vorgestellt wie das "High Dynamic Range" Rendering und damit verbundene Verfahren wie Tone Mapping. Es folgt ein Kapitel über die Generierung von Schatten mit Hilfe von Shadow Volumes und Shadow Mapping. Dabei werden ausser der Theorie und Umsetzung auch Ausblicke auf verschiedene Techniken zur Verbesserung der Qualität gegeben. Zum Abschluss der Renderingverfahren folgt noch ein Kapitel zu Displacement Mapping in Vertex Shadern und ein kurzer Anriss von Geometry Images.

Dem Buch liegt eine CD bei. Diese enthält alle Screenshots und Abbildungen des Buches in Farbe, diese sind im Buch leider nur in Graustufen abgedruckt. Bei den Beleuchtungsmodellen und vor allem dem High Dynamic Range Rendering gerät dies manchmal zum Nachteil, da man in Schwarz-Weiss nicht alles erkennen kann. Alle Beispiele des Buches sind als fertige Projekte für Visual Studio vorhanden, so dass man sie sofort ausprobieren kann. Einem schnellen Experimentieren mit den vorgestellten Rendering Verfahren steht damit nichts im Wege.

Insgesamt gibt "Programming Vertex and Pixel Shaders" ein recht gutes Bild ab. Das Buch bietet einem eine solide Einführung und einen recht vollständigen Überblick über die Shaderentwicklung und bietet darüber hinaus noch einiges an Rüstzeug um aktuelle Entwicklungen im 3D Echtzeitrendering verstehen zu können. Es bietet einem damit auf bestehenden Vorkenntnissen der Fixed Function Pipeline aufbauend eine solide Grundlage für die praktische Seite der Shaderprogrammierung. Alle vorgestellten Beispiele sind sehr praxisnah gehalten, leider heisst das auch dass die mathematische Seite des ganzen auf die Angabe einiger Formeln reduziert wird. Wer eine ausführliche Erklärung oder Herleitung der Formeln haben will, der muss woanders suchen. Vor allem bei den fortgeschrittenen Techniken hätte man gerne noch etwas mehr in die Tiefe gehen können. So gibt sich am Ende das Bild eines sehr gelungenen Einsteigerwerkes. Wer eine solide Einführung in die Shaderprogrammierung mit Verweisen auf fortgeschrittene Techniken sucht, der wird hier fündig.

geschrieben am 27.07.2006 | 734 Wörter | 4468 Zeichen

Kommentare lesen Kommentar schreiben

Kommentare zur Rezension (0)

Platz für Anregungen und Ergänzungen