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
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