-
Notifications
You must be signed in to change notification settings - Fork 1
/
BoxBlurShader.js
40 lines (33 loc) · 1.04 KB
/
BoxBlurShader.js
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
var BoxBlurShader = {
uniforms: {
'tDiffuse': { value: null },
'resolution': { value: null }
},
vertexShader: /* glsl */ `
varying vec2 vUv;
void main() {
vUv = uv;
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
}`,
fragmentShader: /* glsl */ `
uniform float opacity;
uniform sampler2D tDiffuse;
uniform vec2 resolution;
varying vec2 vUv;
void main() {
const float directions = 16.0;
const float quality = 3.0;
const float size = 8.0;
const float pi = 3.14159;
vec2 radius = size/resolution;
vec4 color = texture2D( tDiffuse, vUv );
for(float d =0.0; d < pi * 2.0; d+=(pi * 2.0) / directions) {
for(float i = 1.0/quality; i<=1.0; i+=1.0/quality) {
color += texture2D(tDiffuse, vUv+vec2(cos(d), sin(d)) * radius * i);
}
}
color /= quality * directions - 15.0;
gl_FragColor = color;
}`
};
export { BoxBlurShader };