Ok, w moim shaderze fragmentów GLSL chcę być w stanie obliczyć odległość fragmentu od konkretnej linii w przestrzeni.Jak obliczyć gl_FragCoord w glsl
Wynikiem tego jest to, że ja najpierw próbuje użyć zmienną zestaw vec2 w moim vertex shader do lustra, co kończy się w gl_FragCoord
:
varying vec2 fake_frag_coord;
//in vertex shader:
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
fake_frag_coord=(gl_ModelViewProjectionMatrix * gl_Vertex).xy;
Teraz w shadera fragmentów Spodziewam:
gl_FragCoord.xy==fake_frag_coord
Ale tak się nie dzieje. Jaką operację wykonuje potok na gl_Position
, aby przekształcić go w gl_FragCoord
, którego zaniedbuję w przypadku fake_frag_coord
?
Myliłem się, że się mylisz, ale masz rację, używając gl_ModelViewProjectionMatrix * gl_Vertex potencjalnie wprowadzającego błędy obliczeniowe. – karx11erx
Nitpick: to faktycznie da współrzędne przestrzeni klipu zamiast znormalizowanych współrzędnych urządzenia, ponieważ nie wykonujesz podziału perspektywy, który ma miejsce podczas procesu rasteryzacji (między modułem cieniującym wierzchołka a modułem cieniującym fragment). http://www.glprogramming.com/red/chapter03.html#name1 – Pike65
@ Pike65 To nie tylko dziurkacz, powinno to skutkować zupełnie innymi wartościami dla projekcji perspektywicznej. –