PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Aufbau von Shaderprogrammen


ollix
2005-01-08, 17:14:55
Hi,

ich interessiere mich, wie ein Shaderprogramm grundsätzlich arbeitet. Auf welcher Datenbasis arbeiten denn diese Programme. Eine Kollege hat mir erzählt, daß es Vertexshader Programm immer auf einem Vertex ausgeführt wird - und daß das Programm auch für jedes (!) Vertex in der Szene ausgeführt wird. Das schien mir etwas reichlich, aber okay. Analog dazu der Pixel oder Fragment schader - soll pro Pixel ausgeführt werden und dann im Endffekt den Farbwert des Pixels bestimmen.

Jetzt interessiert mich, worauf ich denn noch Zugriff habe? Welche Daten sehe ich von der Szene im Shadercode, kann ich beliebige Daten vom Programm erhalten? Weiß das Programm was das Shaderprogramm gerade macht? Muß ich mir das so vorstellen, daß ich einmal ein großes Programm in die Grafikkarte lade und auf diesen Berechnungen meine zukünftigen Bilder erzeugt werden oder wird vor jedem Frame der nötige Shadercode geladen?

Auch verstehe ich nicht ganz genau, wie das mit mehreren Renderings-passes im Shadercode gelöst ist. Weiß ich immer der wievielte Pass es ist und wie lange braucht ein Shadercode in der Ausführung? Kann der über beliebige Takte laufen - bis er eben abgearbeitet ist? Kann er auf andere Ausführungen zugreifen bzw. Informationen aus vergangen Frames erhalten?

Sorry das sind jetzt viele Fragen, habe mir auch schon einiges durchgelesen, aber verstehe den Rahmen noch nicht ganz komplett.

Wäre richtig klasse, wenn mir da jemand weiterhelfen könnte. Generell interessiere ich mich eher für die Shaderhochsprachen (so groß dürften die Unterschiede da doch nicht sein, oder?) - habe mich bisher eher an GLSL gehalten.

danke

Trap
2005-01-08, 18:27:00
Viele von deinen Fragen werden in http://opengl.org/documentation/oglsl.html im Overview-Teil beantwortet.

Mehr kann ich dir nicht helfen, hab selbst noch keine Shadersachen geschrieben.

Corrail
2005-01-08, 19:28:27
Falls du mehr Interesse an GLSL hast kann ich dir mein Tutorial bei NeHe empfehlen ;)
http://nehe.gamedev.net/data/articles/article.asp?article=21

Corrail
2005-01-19, 01:40:02
Hier gibt es auch eine nette Einführung in GLSL mit allgemeinem Wissen zu OpenGL und GLSL:
http://www.lighthouse3d.com/opengl/glsl/

Asmodeus
2005-01-19, 10:37:51
Und von mir wie immer an so einer Stelle die Empfehlung des Shaderdesigners ;) Damit kannst Du erstmal mit Shadern an sich rumspielen und experimentieren, ohne, dass Du in einer eigenen Applikation den dafür nötigen Unterbau schon haben musst. Den Designer gibt es jetzt auch für Linux.

Link (http://www.typhoonlabs.com/)

Gruss, Carsten.

MB79
2005-02-14, 12:50:24
...ich hänge mich hier mal eben dran. :)

Die Links sind sehr gut und besonders genial finde ich den ShaderDesigner. Ich bastle gerade an einigem und der hat sich wirklich als sehr hilfreich erwiesen.
:)

Was noch genial wäre: gibt es irgendeinen Debugger für GLSL Programme? Mit Breakpoints, Schritt für Schritt durch die Programme gehen und den Werteraum überwachen? Das wäre ... maximal genial. Danke!

MB79
2005-02-14, 12:55:28
Und: gibt es eine Möglichkeit eigene Modelle zu verwenden und nicht nur die Beispiele zu verwenden?

Asmodeus
2005-02-16, 18:32:21
...ich hänge mich hier mal eben dran. :)

Die Links sind sehr gut und besonders genial finde ich den ShaderDesigner. Ich bastle gerade an einigem und der hat sich wirklich als sehr hilfreich erwiesen.
:)

Was noch genial wäre: gibt es irgendeinen Debugger für GLSL Programme? Mit Breakpoints, Schritt für Schritt durch die Programme gehen und den Werteraum überwachen? Das wäre ... maximal genial. Danke!

GLIntercept könnte da vielleicht am ehesten weiterhelfen, dort kann man Shaderprogramme nicht nur rauslesen und abspeichern sondern auch den Ablauf verfolgen. Was da genau möglich ist kann ich allerdings nicht sagen, hatte noch keine Zeit das selbst mal auszuprobieren.

Link GLIntercept (http://home.swiftdsl.com.au/~radlegend/GLIntercept/index.html)

Gruss, Carsten.

Coda
2005-02-16, 19:14:57
Was noch genial wäre: gibt es irgendeinen Debugger für GLSL Programme? Mit Breakpoints, Schritt für Schritt durch die Programme gehen und den Werteraum überwachen? Das wäre ... maximal genial. Danke!Hm DirectX kann das. Allerdings nur im REF Rasterizer, was nicht gerade schnell ist.