GLSL: рассчитать средний цвет ядра свертки - PullRequest
0 голосов
/ 25 января 2020

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

summedColor += texture2D(inputImageTexture, tc + (vec2(x, y) * vec2(stepW, stepH)));

Я вычислил правильную координату? (т.е. tc + current kernel coordinate multiplied for the step size calculated on image size). Я думаю, что результат выглядит правильно, но я хотел бы получить ваше подтверждение.

varying vec2 tc;
uniform sampler2D inputImageTexture;
uniform float stepW; // calculated as 1.0 / width;
uniform float stepH; // calculated as 1.0 / height;

void main() {
  vec4 summedColor = vec4(0., 0., 0., 0.);
  const int kRadius = 3;
  int pixelsCount = 0;
  for(int x = -kRadius; x <= kRadius; x++) {
    for(int y = -kRadius; y <= kRadius; y++) {
      pixelsCount++;
      summedColor += texture2D(inputImageTexture, tc + (vec2(x, y) * vec2(stepW, stepH)));
    }
  }
  vec4 averageColor = summedColor / float(pixelsCount);
}
...