Как правильно сэмплировать вокруг текстуры Координаты в texture2D в glsl - PullRequest
1 голос
/ 26 января 2012

Я хочу сэмплировать 8 пикселей вокруг определенного пикселя и рассчитать кучу информации из этого для использования в подпрограмме порогового значения.

В iOS используется вершинный и фрагментный шейдеры glsl.

Вот мой пример кода из шейдера фрагмента:

p00 = texture2D(videoFrame, textureCoordinate+vec2(-1.0*extent, -1.0*extent)); 
p01 = texture2D(videoFrame, textureCoordinate+vec2( 0.0, -1.0*extent));
p02 = texture2D(videoFrame, textureCoordinate+vec2(+1.0*extent, -1.0*extent));
p10 = texture2D(videoFrame, textureCoordinate+vec2(-1.0*extent,  0.0));
p11 = texture2D(videoFrame, textureCoordinate);
p12 = texture2D(videoFrame, textureCoordinate+vec2(+1.0*extent,  0.0));
p20 = texture2D(videoFrame, textureCoordinate+vec2(-1.0*extent, +1.0*extent));
p21 = texture2D(videoFrame, textureCoordinate+vec2( 0.0, +1.0*extent));
p22 = texture2D(videoFrame, textureCoordinate+vec2(+1.0*extent, +1.0*extent));

экстент - это просто число, в настоящее время установлено на 20.0. Я хочу, чтобы выборка происходила достаточно локально.

Это компилируется нормально, однако, основываясь на результатах моих процедур, я подозреваю, что это не выборка пикселей вокруг текущего пикселя, скорее, это выборка пикселей, идущих вдоль строки.

Есть идеи, как мне решить эту проблему?

Другая причина, по которой я не уверен, что это работает, - в документации iOS. Apple заявляет, что это должно быть упаковано в блок изображения и что должна использоваться функция regionofинтерес. Я бы предпочел оставить все это в шейдере glsl, если это возможно.

1 Ответ

0 голосов
/ 27 января 2012

Если экстент равен 20, вы будете отбирать 8 пикселей в 8 основных направлениях вокруг текущего, но на расстоянии 20 пикселей.(Таким образом, 20 пикселей «север», 20 пикселей «северо-восток» и т. Д.) Если это 1,0, то то, что вы написали, должно сэмплировать 8 пикселей вокруг текущего пикселя.(Я также предполагаю, что textureCoordinate - это координата текущего пикселя. Убедитесь, что это так.)

...