Добрый день!
Каким образом можно наложить такую маску:
Альфа-канал: 0.
На любую текстуру, и получить эффект по типу Bokeh:
https://en.wikipedia.org/wiki/Bokeh, все в маске прозрачно без рызмытия текстуры, иначе размытие, и необходимо сглаживать края маски
Точно решения не прошу! Хочу узнать в каком направлении идти, чтобы решить данную задачу.
Вершинный шейдер:
attribute vec4 a_Position;
void main()
{
gl_Position = a_Position;
}
Фрагметный шейдер:
precision lowp float;
uniform sampler2D u_Sampler; // текстура которую необходимо размыть по маске
uniform sampler2D u_Mask; // маска
uniform vec3 iResolution;
vec4 blur(sampler2D source, vec2 size, vec2 uv) {
vec4 C = vec4(0.0);
float width = 1.0 / size.x;
float height = 1.0 / size.y;
float divisor = 0.0;
for (float x = -25.0; x <= 25.0; x++)
{
C += texture2D(source, uv + vec2(x * width, 0.0));
C += texture2D(source, uv + vec2(0.0, x * height));
divisor++;
}
C*=0.5;
return vec4(C.r / divisor, C.g / divisor, C.b / divisor, 1.0);
}
void main()
{
vec2 uv = gl_FragCoord.xy / iResolution.xy;
vec4 videoColor = texture2D(u_Sampler, uv);
vec4 maskColor = texture2D(u_Mask, uv);
gl_FragColor = blur(u_Sampler, iResolution.xy, uv);
}
Спасибо за советы