Нахождение цвета пикселя в определенной координате с помощью sampler2D с использованием GLSL - PullRequest
7 голосов
/ 01 марта 2012

У меня есть 3D-объект в моей сцене, и фрагментный шейдер для этого объекта получает текстуру с тем же размером экрана.Я хочу получить координаты текущего фрагмента и найти информацию о цвете на изображении в той же позиции.Это возможно?Может ли кто-нибудь указать мне правильное направление?

1 Ответ

12 голосов
/ 01 марта 2012

Фрагментный шейдер имеет встроенное значение gl_FragCoord, которое предоставляет пиксельные координаты целевого фрагмента.Вы должны разделить это на ширину и высоту области просмотра, чтобы получить координаты текстуры для поиска.Вот краткий пример:

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 ...
}

Для полного рабочего примера попробуйте это в браузере с поддержкой WebGL:

http://glslsandbox.com/e#375.15

...