PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Vertex Shader?


Showtime
2004-05-25, 02:44:31
Kann mir mal bitte einer erklären, was genau der Vertex Shader macht? Man bekommt andauernd Informationen über Pixel Shader und jeder redet drüber, aber über seinen Kollegen wird nie gesprochen ;)
Falls es nicht zuviele Umstände macht, (oder in der normalen Erklärung mit drin steckt) bitte auch die Unterschiede zwischen Version 1,2 und 3 aufzeigen.

D-Swat
2004-05-25, 13:18:47
VS = programmierbares T&L ( vereinfacht gesagt )

Lies dir am besten mal den VertexShader (http://www.3dconcept.ch/artikel/vertexshader/) Artikel von 3dConcept durch.
Ist zwar schon etwas älter aber ganz gut verständlich.

Corrail
2004-05-25, 13:53:00
Ein Vertex Shader ist ein Program, dass pro Eckpunkt eines Dreieckes (auf der GPU) ausgeführt wird. Darunter fallen Transformationen, ev. Belichtung und, was vorallem sehr wichtig ist, Vorberechnungen für den Pixelshader.


VS = programmierbares T&L ( vereinfacht gesagt )


Mittler Weile eher nur mehr programmierbares T(ransforming). ;) Das L(ighting) wird meist schon im Pixel Shader durchgeführt.

Showtime
2004-05-25, 18:27:49
Dank an euch beide :)

marco42
2004-05-26, 01:10:50
Original geschrieben von Corrail
Mittler Weile eher nur mehr programmierbares T(ransforming). ;) Das L(ighting) wird meist schon im Pixel Shader durchgeführt.

Das diffuse Licht wirst du eher im VS berechnen, da es nicht so sehr auffaellt, wenn es zwischen den Vertices interpoliert wird. Beim specularen haengt es von der Aufloesung der Geometry ab. :-)

Corrail
2004-05-26, 01:20:21
Original geschrieben von marco42
Das diffuse Licht wirst du eher im VS berechnen, da es nicht so sehr auffaellt, wenn es zwischen den Vertices interpoliert wird. Beim specularen haengt es von der Aufloesung der Geometry ab. :-)

Naja, erstens wirst du dir da mit komplexeren Belichtungsmethoden ein wenig schwer tun (Cook-Torrance, Ward, ...) ;)
Und zweitens hab ich im OpenGL Forum (http://www.opengl.org/discussion_boards/cgi_directory/ultimatebb.cgi?ubb=get_topic;f=11;t=000223) gelesen, dass es nicht so wenig kostet, viele Werte zu interpolieren. Und auf das eine dot-Produkt im Fragment Shader kommt es meistens auch nicht an.
Außerdem tust du dir IMHO bei Deferred Shading schwer.

marco42
2004-05-26, 16:11:25
Original geschrieben von Corrail
Naja, erstens wirst du dir da mit komplexeren Belichtungsmethoden ein wenig schwer tun (Cook-Torrance, Ward, ...) ;)
Und zweitens hab ich im OpenGL Forum (http://www.opengl.org/discussion_boards/cgi_directory/ultimatebb.cgi?ubb=get_topic;f=11;t=000223) gelesen, dass es nicht so wenig kostet, viele Werte zu interpolieren. Und auf das eine dot-Produkt im Fragment Shader kommt es meistens auch nicht an.
Außerdem tust du dir IMHO bei Deferred Shading schwer.

Das bezieht sich aber auf die begrenzten varings der FX. Wie gesagt, dass kommt immer darauf an. Du kannst bei vielen kleine Dreiecken(Renderman macht das AFAIK so) auch ganz auf Fragment Shader verzichten, bloss handelst du dir dann Aliasingprobleme ein. Bei Displacementmapping braucsht du dann aber wieder diese detaillierte Geometry.