Как использовать шейдеры GLSL для видеофильтра / манипуляции в Android - PullRequest
0 голосов
/ 19 января 2019

Я работаю над обработкой видео Android Project As My School Project.У меня есть поиск в Google по поводу обработки видео.И обнаружил, что большинство разработчиков используют файл GLSL для манипуляции видео / изображениями в Android.они используют векторные шейдеры и фрагментные шейдеры, но я не понял этот код.Может ли кто-нибудь объяснить код glsl.

Я не получил этот код:

precision highp float;
    uniform sampler2D  inputImageTexture; 
    uniform sampler2D inputImageTexture2; 
    varying vec2 textureCoordinate;
    void main()
    {
      vec4 video = texture2D(inputImageTexture, textureCoordinate);
      vec4 mv    = texture2D(inputImageTexture2, textureCoordinate);
      gl_FragColor = video + mv;
    }

precision highp float;
uniform sampler2D inputImageTexture;
uniform sampler2D inputImageTexture2;    
uniform sampler2D inputImageTexture3; 
varying highp vec2 blurCoordinates[5];

void main()
{
  lowp vec4 sum = vec4(0.0);
  sum += texture2D(inputImageTexture, blurCoordinates[0]) * 0.204164;
  sum += texture2D(inputImageTexture, blurCoordinates[1]) * 0.304005;
  sum += texture2D(inputImageTexture, blurCoordinates[2]) * 0.304005;
  sum += texture2D(inputImageTexture, blurCoordinates[3]) * 0.093913;
  sum += texture2D(inputImageTexture, blurCoordinates[4]) * 0.093913;
  vec3 texel = texture2D(inputImageTexture, blurCoordinates[0]).rgb;
  vec2 tc = (2.0 * blurCoordinates[0]) - 1.0;   
  float d = dot(tc, tc);
  vec2 lookup = vec2(d, texel.r);
  texel.r = texture2D(inputImageTexture3, lookup).r;
  lookup.y = texel.g;
  texel.g = texture2D(inputImageTexture3, lookup).g;
  lookup.y = texel.b;
  texel.b     = texture2D(inputImageTexture3, lookup).b;
  vec2 red = vec2(texel.r, 0.16666);
  vec2 green = vec2(texel.g, 0.5);
  vec2 blue = vec2(texel.b, .83333);
  float r = texture2D(inputImageTexture2, red).r;
  float g = texture2D(inputImageTexture2, green).g;
  float b = texture2D(inputImageTexture2, blue).b;
  lowp vec4 sharpImageColor = vec4(r,g,b,1.0);
  lowp vec4 blurredImageColor = sum;
  highp float distanceFromCenter = distance(vec2(0.5,0.5), blurCoordinates[0]);
  gl_FragColor = mix(sharpImageColor, blurredImageColor, smoothstep(0.4, 0.5, distanceFromCenter));
}

, и я не понял, как использовать этот код в Android

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...