/
fx_blur.dei
65 lines (60 loc) · 2.72 KB
/
fx_blur.dei
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
group fx.blur {
# The same vertex shader is used for both blur steps.
vertexShader = """
uniform mat4 uMvpMatrix;
uniform vec4 uColor;
uniform vec4 uWindow;
DE_ATTRIB vec4 aVertex;
DE_ATTRIB vec2 aUV;
DE_ATTRIB vec4 aColor;
DE_VAR vec2 vUV;
DE_VAR vec4 vColor;
void main(void) {
gl_Position = uMvpMatrix * aVertex;
vUV = uWindow.xy + aUV * uWindow.zw;
vColor = aColor * uColor;
}"""
shader horizontal {
vertex $= fx.blur.vertexShader
fragment = "
uniform sampler2D uTex;
uniform vec2 uBlurStep;
DE_VAR vec2 vUV;
DE_VAR vec4 vColor;
void main(void) {
vec4 sum = vec4(0.0);
sum += texture(uTex, vec2(vUV.s - 4.0 * uBlurStep.s, vUV.t)) * 0.05;
sum += texture(uTex, vec2(vUV.s - 3.0 * uBlurStep.s, vUV.t)) * 0.09;
sum += texture(uTex, vec2(vUV.s - 2.0 * uBlurStep.s, vUV.t)) * 0.123;
sum += texture(uTex, vec2(vUV.s - uBlurStep.s, vUV.t)) * 0.154;
sum += texture(uTex, vUV) * 0.165;
sum += texture(uTex, vec2(vUV.s + uBlurStep.s, vUV.t)) * 0.154;
sum += texture(uTex, vec2(vUV.s + 2.0 * uBlurStep.s, vUV.t)) * 0.123;
sum += texture(uTex, vec2(vUV.s + 3.0 * uBlurStep.s, vUV.t)) * 0.09;
sum += texture(uTex, vec2(vUV.s + 4.0 * uBlurStep.s, vUV.t)) * 0.05;
out_FragColor = sum;
out_FragColor.a = 1.0;
}"
}
shader vertical {
vertex $= fx.blur.vertexShader
fragment = "
uniform sampler2D uTex;
uniform vec2 uBlurStep;
DE_VAR vec2 vUV;
DE_VAR vec4 vColor;
void main(void) {
vec4 sum = vec4(0.0);
sum += texture(uTex, vec2(vUV.s, vUV.t - 4.0 * uBlurStep.t)) * 0.05;
sum += texture(uTex, vec2(vUV.s, vUV.t - 3.0 * uBlurStep.t)) * 0.09;
sum += texture(uTex, vec2(vUV.s, vUV.t - 2.0 * uBlurStep.t)) * 0.123;
sum += texture(uTex, vec2(vUV.s, vUV.t - uBlurStep.t )) * 0.154;
sum += texture(uTex, vUV) * 0.165;
sum += texture(uTex, vec2(vUV.s, vUV.t + uBlurStep.t )) * 0.154;
sum += texture(uTex, vec2(vUV.s, vUV.t + 2.0 * uBlurStep.t)) * 0.123;
sum += texture(uTex, vec2(vUV.s, vUV.t + 3.0 * uBlurStep.t)) * 0.09;
sum += texture(uTex, vec2(vUV.s, vUV.t + 4.0 * uBlurStep.t)) * 0.05;
out_FragColor = sum * vColor;
}"
}
}