Ok, en mi sombreador de fragmentos GLSL quiero poder calcular la distancia del fragmento desde una línea particular en el espacio.Cómo calcular gl_FragCoord en glsl
El resultado de esto es que estoy primero tratando de utilizar un conjunto vec2 variando en mi vertex shader para reflejar lo que termina en gl_FragCoord
:
varying vec2 fake_frag_coord;
//in vertex shader:
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
fake_frag_coord=(gl_ModelViewProjectionMatrix * gl_Vertex).xy;
Ahora en el fragment shader espero:
gl_FragCoord.xy==fake_frag_coord
Pero no es así. ¿Qué operación hace la tubería en gl_Position
para convertirla en gl_FragCoord
que no hago en fake_frag_coord
?
Estaba equivocado acerca de que estuviera equivocado, pero tiene razón al usar gl_ModelViewProjectionMatrix * gl_Vertex que podría presentar errores de cálculo. – karx11erx
Nitpick: eso realmente te dará coordenadas de espacio de clip en lugar de coordenadas de dispositivo normalizadas, ya que no estás realizando la división de perspectiva que ocurre durante el proceso de rasterización (entre el sombreador de vértices y el sombreador de fragmentos). http://www.glprogramming.com/red/chapter03.html#name1 – Pike65
@ Pike65 Eso no es solo una pequeñez, debería dar como resultado valores completamente diferentes para una proyección en perspectiva. –