Проблемы при попытке добавить эффект размытия и эффект расширения на SurfaceView - PullRequest
0 голосов
/ 28 мая 2019

Я пытаюсь использовать Gaussian Blur для предварительного просмотра видео в реальном времени, а затем добавляю к нему эффект дилатации.

Я попытался объединить код, и он, кажется, не работает правильно.

Это просто эффект расширения, но я не вижу размытия.

// Gaussian Blur code
+"   vec2 singleStepOffset = vec2("+UNIFORM_TEXELWIDTH+", "+UNIFORM_TEXELHEIGHT+");\n"
+"   int multiplier = 0;\n"
+"   vec2 blurStep = vec2(0,0);\n"
+"   vec2 blurCoordinates[9];"
+"   for(int i = 0; i < 9; i++) {\n"
+"     multiplier = (i - 4);\n"
+"     blurStep = float(multiplier) * singleStepOffset;\n"
+"     blurCoordinates[i] = "+VARYING_TEXCOORD+".xy + blurStep;\n"
+"   }\n"
+"   vec3 sum = vec3(0,0,0);\n"
+"   vec4 color = texture2D("+UNIFORM_TEXTURE0+", blurCoordinates[4]);\n"
+"   sum += texture2D("+UNIFORM_TEXTURE0+", blurCoordinates[0]).rgb * 0.05;\n"
+"   sum += texture2D("+UNIFORM_TEXTURE0+", blurCoordinates[1]).rgb * 0.09;\n"
+"   sum += texture2D("+UNIFORM_TEXTURE0+", blurCoordinates[2]).rgb * 0.12;\n"
+"   sum += texture2D("+UNIFORM_TEXTURE0+", blurCoordinates[3]).rgb * 0.15;\n"
+"   sum += color.rgb * 0.18;\n"
+"   sum += texture2D("+UNIFORM_TEXTURE0+", blurCoordinates[5]).rgb * 0.15;\n"
+"   sum += texture2D("+UNIFORM_TEXTURE0+", blurCoordinates[6]).rgb * 0.12;\n"
+"   sum += texture2D("+UNIFORM_TEXTURE0+", blurCoordinates[7]).rgb * 0.09;\n"
+"   sum += texture2D("+UNIFORM_TEXTURE0+", blurCoordinates[8]).rgb * 0.05;\n"
+"   gl_FragColor = vec4(sum, color.a);\n"

// Dilation Effect
+"   vec2 step = vec2("+UNIFORM_TEXELWIDTH+", "+UNIFORM_TEXELHEIGHT+");\n"
+"   vec4 stepIntensity[dilationSize];\n"
+"   for(int i = 0; i < dilationSize; i++) {\n"
+"     stepIntensity[i] = texture2D("+UNIFORM_TEXTURE0+", "+VARYING_TEXCOORD+" + step * float(i - dilationRadius));\n"
+"   }\n"

+"   vec4 minValue = vec4(1.0);\n"
+"   for(int i = 0; i < dilationSize; i++) {\n"
+"     minValue = min(minValue, stepIntensity[i]);\n"
+"   }\n"
+"gl_FragColor = minValue;\n"

Я ожидал, что оно размыт, а затем расширит его, но оно только расширит изображение.

...