OpenGL Fixed Function Vertex Shader klonen

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
dronus
Establishment
Beiträge: 114
Registriert: 11.01.2010, 01:53

OpenGL Fixed Function Vertex Shader klonen

Beitrag von dronus »

Hi,

hat jemand eine Idee was ich ein einen GLSL Vertexshader schreiben muss, damit er den Fixed-Function Fragmentshader so bedient wie die original Fixed-Function-Pipeline?
Benutzeravatar
Ingrater
Establishment
Beiträge: 103
Registriert: 18.04.2007, 21:52

Re: OpenGL Fixed Function Vertex Shader klonen

Beitrag von Ingrater »

Es gibt ein programm namens "ShaderGen" das dir Shader generiert die genau die ffp reproduzieren. Zu finden hier:
http://3dshaders.com/home/index.php?opt ... &Itemid=34
dronus
Establishment
Beiträge: 114
Registriert: 11.01.2010, 01:53

Re: OpenGL Fixed Function Vertex Shader klonen

Beitrag von dronus »

Wow, genau was ich suchte :-)

Läuft sogar mit Wine..


Danke.
dronus
Establishment
Beiträge: 114
Registriert: 11.01.2010, 01:53

Re: OpenGL Fixed Function Vertex Shader klonen

Beitrag von dronus »

Der zusammengeklickte Shader lief auf Anhieb :-)

Man kann offenbar jeden Teil der Fixed Pipeline mit einzeln ersetzen, das ist toll. Eigener Vertex- +Fixedfunction Fragment funzt genauso wie andersherum. Nur eine Ausnahme scheint es zu geben: Ein Geometrieshader geht nicht, wenn man keinen eigenen Vertexshader hat. Deshalb brauchte ich jetzt den Klon. Fragt sich warum?
Benutzeravatar
Ingrater
Establishment
Beiträge: 103
Registriert: 18.04.2007, 21:52

Re: OpenGL Fixed Function Vertex Shader klonen

Beitrag von Ingrater »

Weil geometry shader erst erfunden wurden als es vertex und fragment shader schon gab. Deswegen ist es logisch dass ohne vertexshader keinen geometry shader funktionieren kann. Bei FFP gab es ja keine geometry shader.
dronus
Establishment
Beiträge: 114
Registriert: 11.01.2010, 01:53

Re: OpenGL Fixed Function Vertex Shader klonen

Beitrag von dronus »

Naja, die Werte die im Geometryshader ankommen, könnten ja auch vorgegebene Fixed-Function Werte sein.
So wie der Fragmentshader halt bestimmt benannte Eingaben hat wenn man davor einen Fixed Function Vertexshader hat. Der Fixed-Function Fragmentshader geht auch mit dem Geometrieshader davor.
Benutzeravatar
Ingrater
Establishment
Beiträge: 103
Registriert: 18.04.2007, 21:52

Re: OpenGL Fixed Function Vertex Shader klonen

Beitrag von Ingrater »

Naja ich halte es sowieso für unnötig da jede Grafikkarte heutzutage mindestens Shadermodell 2.0 problemlos kann. Und wenn du geometryshader benutzten willst müssen die Grakas dann sowieso Shadermodell 4 können dann kannste auch gleich die restlichen Shader auch selber schreiben.
dronus
Establishment
Beiträge: 114
Registriert: 11.01.2010, 01:53

Re: OpenGL Fixed Function Vertex Shader klonen

Beitrag von dronus »

Ich finds aber gut in "einfachen Programmen" auch einfacheren Code schreiben zu können. Mit Fixed Function kann ich in wenigen Zeilen ein 3d-"HelloWorld" schreiben. Vis/Space (siehe Vorstellungsforum) hat sehr kompakten Code einfach weil es in Gegensatz zu den meisten Spielen eine sehr schlichte Grafik hat und die mit OpenGL auch schlichten Code hat. Darum hatte ich auch keinen Anreiz eine fertige 3d-Engine zu benutzen, die war praktisch an einem Abend programmiert. Mittlerweile ist der Code auch da etwas komplexer, viele Dinge werden aber immer noch mit OpenGL-Befehlen gerendert die man als veraltet ansehen mag, aber für dass was ich dort brauche sind sie kurz und elegant.
Benutzeravatar
Krishty
Establishment
Beiträge: 8268
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: OpenGL Fixed Function Vertex Shader klonen

Beitrag von Krishty »

dronus hat geschrieben:Ich finds aber gut in "einfachen Programmen" auch einfacheren Code schreiben zu können. Mit Fixed Function kann ich in wenigen Zeilen ein 3d-"HelloWorld" schreiben. Vis/Space (siehe Vorstellungsforum) hat sehr kompakten Code einfach weil es in Gegensatz zu den meisten Spielen eine sehr schlichte Grafik hat und die mit OpenGL auch schlichten Code hat.
Das funktioniert aber nur so lange, wie der Render-Code auch wirklich simpel bleibt. Wenn dann irgendwann eine Farbe nicht stimmt, weil man einen Render-State verpennt oder gar einen Fehler im Treiber hat, und der Renderer eine gewisse Komplexität erreicht hat, kann man sich statt dem Debugging auch gleich in die Klapse einweisen lassen.

Warum der Geoshader nicht ohne Vertex-Shader ersetzbar ist: Ich glaube, das liegt daran, dass die Output-Register vom Vertex- zum Fragment-Shader standardisiert sind (es gibt traditionsbedingte Special-Purpose-Register für Position, Farbe, Normale etc), in denen ein selbstgeschriebener Fragment-Shader seinen Input erwarten kann. Während des Designs der Geometrie-zu-Geometrie-Stufe (Vertex-zu-Geo-Shader) war absehbar, dass Special-Purpose-Register veralten (Position, Normale, Texturkoordinate usw sind nun fast gleich einsetzbar und selbst ihre Interpolationsmethode wird durch den Programmierer vorgegeben), darum ist dabei nicht vorgesehen worden, wo und wie der Fixed-Function-Vertex-Shader welche Output-Komponente für den Geo-Shader hinterlegen sollte. Davon, dass eine Mischung nicht zeitgemäß ist, mal ganz abgesehen.

Gruß, Ky
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
dronus
Establishment
Beiträge: 114
Registriert: 11.01.2010, 01:53

Re: OpenGL Fixed Function Vertex Shader klonen

Beitrag von dronus »

Krishty hat geschrieben:Davon, dass eine Mischung nicht zeitgemäß ist, mal ganz abgesehen.
"Nicht zeitgemäß" heisst aber nichts außer dass man ständig deswegen angemacht wird :-], wenns ansonsten gut funktioniert kann ich damit leben.
Antworten