Ok, nel mio shader di frammento GLSL voglio essere in grado di calcolare la distanza del frammento da una particolare linea nello spazio.Come calcolare gl_FragCoord in glsl
Il risultato di questo è che sto prima cercando di utilizzare un set vec2 variabile nel mio vertex shader di rispecchiare ciò che finisce in gl_FragCoord
:
varying vec2 fake_frag_coord;
//in vertex shader:
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
fake_frag_coord=(gl_ModelViewProjectionMatrix * gl_Vertex).xy;
Ora nello shader frammento mi aspetto:
gl_FragCoord.xy==fake_frag_coord
Ma non è così. Che operazione fa la pipeline su gl_Position
per trasformarla in gl_FragCoord
che sto trascurando di fare su fake_frag_coord
?
Mi sbagliavo sul fatto che tu stia sbagliando, ma riguardo all'utilizzo di gl_ModelViewProjectionMatrix * gl_Vertex potrebbe potenzialmente introdurre errori di calcolo. – karx11erx
Nitpick: questo in realtà fornirà le coordinate dello spazio delle clip piuttosto che le coordinate normalizzate del dispositivo, poiché non si esegue la divisione prospettica che avviene durante il processo di rasterizzazione (tra vertex shader e framment shader). http://www.glprogramming.com/red/chapter03.html#name1 – Pike65
@ Pike65 Questo non è solo un nitpick, dovrebbe comportare valori completamente diversi per una proiezione prospettica. –