Mam obiekt 3D w mojej scenie, a moduł cieniujący fragmentu dla tego obiektu otrzymuje teksturę o tym samym rozmiarze ekranu. Chcę uzyskać współrzędne z bieżącego fragmentu i znaleźć informacje o kolorach na obrazie w tej samej pozycji. czy to możliwe? Czy ktoś może wskazać mi właściwy kierunek?Znajdowanie koloru piksela w określonej współrzędnej z próbnika2D przy użyciu GLSL
7
A
Odpowiedz
12
Moduł cieniujący ma wbudowaną wartość o nazwie gl_FragCoord, która podaje współrzędne pikseli fragmentu docelowego. Musisz podzielić to przez szerokość i wysokość widoku, aby uzyskać współrzędne tekstury dla wyszukiwania. Oto krótki przykład:
uniform vec2 resolution;
uniform sampler2D backbuffer;
void main(void) {
vec2 position = (gl_FragCoord.xy/resolution.xy);
vec4 color = texture2D(backbuffer, position);
// ... do something with it ...
}
Pełną przykład pracy, spróbuj tego w przeglądarkę obsługującą WebGL:
Nie mogę uwierzyć, że to było takie proste, dzięki dużo @emackey , Próbowałem to zrobić od wielu dni. –