Ok, in meinem GLSL-Fragment-Shader möchte ich in der Lage sein, den Abstand des Fragments von einer bestimmten Linie im Raum zu berechnen.Wie man gl_FragCoord in glsl berechnet
Das Ergebnis davon ist, dass ich zum ersten Mal einen variierendes vec2 Satz in meinem Vertex-Shader zu verwenden ist versucht zu spiegeln, was in gl_FragCoord
up endet:
varying vec2 fake_frag_coord;
//in vertex shader:
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
fake_frag_coord=(gl_ModelViewProjectionMatrix * gl_Vertex).xy;
Jetzt im Fragment-Shader erwarte ich:
gl_FragCoord.xy==fake_frag_coord
Aber es tut es nicht. Welche Operation macht die Pipeline auf gl_Position
, um es in gl_FragCoord
zu verwandeln, die ich vernachlässige, auf fake_frag_coord
zu machen?
Ich war falsch über Sie falsch sein, aber recht gl_ModelViewProjectionMatrix * gl_Vertex mit potenziell Rechenfehler einzuführen. – karx11erx
Nitpick: das gibt Ihnen tatsächlich Clip-Space-Koordinaten anstelle von normalisierten Gerätekoordinaten, da Sie nicht die perspektivische Teilung durchführen, die während des Rasterungsprozesses (zwischen dem Vertex-Shader und dem Fragment-Shader) stattfindet. http://www.glprogramming.com/red/chapter03.html#name1 – Pike65
@ Pike65 Das ist nicht nur ein Nitpick, es sollte zu ganz anderen Werten für eine perspektivische Projektion führen. –