Skip to content

Commit 0fd3508

Browse files
committedNov 18, 2023
Add code for box blur and gaussian blur.
1 parent 8809841 commit 0fd3508

File tree

1 file changed

+37
-37
lines changed

1 file changed

+37
-37
lines changed
 

‎09-gaussian-blur/shader.frag

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -15,43 +15,43 @@ void main() {
1515
// "0": "./shader-tutorials/09-gaussian-blur/mario.png",
1616
// },
1717

18-
// vec4 texture = texture2D(u_texture_0, uv);
19-
// color = texture.rgb;
20-
21-
// // vec2 imageResolution = vec2(100, 100);
22-
// // vec2 imageResolution = vec2(2832, 2744);
23-
// vec2 imageResolution = vec2(283.2, 274.4);
24-
// vec2 texelSize = 1.0 / imageResolution;
25-
26-
// // const float kernelSize = 0.0;
27-
// const float kernelSize = 1.0;
28-
// // const float kernelSize = 2.0;
29-
// // const float kernelSize = 3.0;
30-
// vec3 boxBlurColor = vec3(0.0);
31-
// // note: if kernelSize == 1.0, then boxBlurDivisor == 9.0
32-
// float boxBlurDivisor = pow(2.0 * kernelSize + 1.0, 2.0);
33-
// for (float i = -kernelSize; i <= kernelSize; i++) {
34-
// for (float j = -kernelSize; j <= kernelSize; j++) {
35-
// vec4 texture = texture2D(u_texture_0, uv + vec2(i, j) * texelSize);
36-
// boxBlurColor = boxBlurColor + texture.rgb;
37-
// }
38-
// }
39-
// boxBlurColor = boxBlurColor / boxBlurDivisor;
40-
// color = boxBlurColor;
41-
42-
// float gaussianDivisor = 16.0;
43-
// vec3 gaussianBlurColor = vec3(0.0);
44-
// gaussianBlurColor += texture2D(u_texture_0, uv + vec2(-1, 1) * texelSize).rgb * 1.0;
45-
// gaussianBlurColor += texture2D(u_texture_0, uv + vec2(0, 1) * texelSize).rgb * 2.0;
46-
// gaussianBlurColor += texture2D(u_texture_0, uv + vec2(1, 1) * texelSize).rgb * 1.0;
47-
// gaussianBlurColor += texture2D(u_texture_0, uv + vec2(-1, 0) * texelSize).rgb * 2.0;
48-
// gaussianBlurColor += texture2D(u_texture_0, uv + vec2(0, 0) * texelSize).rgb * 4.0;
49-
// gaussianBlurColor += texture2D(u_texture_0, uv + vec2(1, 0) * texelSize).rgb * 2.0;
50-
// gaussianBlurColor += texture2D(u_texture_0, uv + vec2(-1, -1) * texelSize).rgb * 1.0;
51-
// gaussianBlurColor += texture2D(u_texture_0, uv + vec2(0, -1) * texelSize).rgb * 2.0;
52-
// gaussianBlurColor += texture2D(u_texture_0, uv + vec2(1, -1) * texelSize).rgb * 1.0;
53-
// gaussianBlurColor = gaussianBlurColor / gaussianDivisor;
54-
// color = gaussianBlurColor;
18+
vec4 texture = texture2D(u_texture_0, uv);
19+
color = texture.rgb;
20+
21+
// vec2 imageResolution = vec2(100, 100);
22+
// vec2 imageResolution = vec2(2832, 2744);
23+
vec2 imageResolution = vec2(283.2, 274.4);
24+
vec2 texelSize = 1.0 / imageResolution;
25+
26+
// const float kernelSize = 0.0;
27+
const float kernelSize = 1.0;
28+
// const float kernelSize = 2.0;
29+
// const float kernelSize = 3.0;
30+
vec3 boxBlurColor = vec3(0.0);
31+
// note: if kernelSize == 1.0, then boxBlurDivisor == 9.0
32+
float boxBlurDivisor = pow(2.0 * kernelSize + 1.0, 2.0);
33+
for (float i = -kernelSize; i <= kernelSize; i++) {
34+
for (float j = -kernelSize; j <= kernelSize; j++) {
35+
vec4 texture = texture2D(u_texture_0, uv + vec2(i, j) * texelSize);
36+
boxBlurColor = boxBlurColor + texture.rgb;
37+
}
38+
}
39+
boxBlurColor = boxBlurColor / boxBlurDivisor;
40+
color = boxBlurColor;
41+
42+
float gaussianDivisor = 16.0;
43+
vec3 gaussianBlurColor = vec3(0.0);
44+
gaussianBlurColor += texture2D(u_texture_0, uv + vec2(-1, 1) * texelSize).rgb * 1.0;
45+
gaussianBlurColor += texture2D(u_texture_0, uv + vec2(0, 1) * texelSize).rgb * 2.0;
46+
gaussianBlurColor += texture2D(u_texture_0, uv + vec2(1, 1) * texelSize).rgb * 1.0;
47+
gaussianBlurColor += texture2D(u_texture_0, uv + vec2(-1, 0) * texelSize).rgb * 2.0;
48+
gaussianBlurColor += texture2D(u_texture_0, uv + vec2(0, 0) * texelSize).rgb * 4.0;
49+
gaussianBlurColor += texture2D(u_texture_0, uv + vec2(1, 0) * texelSize).rgb * 2.0;
50+
gaussianBlurColor += texture2D(u_texture_0, uv + vec2(-1, -1) * texelSize).rgb * 1.0;
51+
gaussianBlurColor += texture2D(u_texture_0, uv + vec2(0, -1) * texelSize).rgb * 2.0;
52+
gaussianBlurColor += texture2D(u_texture_0, uv + vec2(1, -1) * texelSize).rgb * 1.0;
53+
gaussianBlurColor = gaussianBlurColor / gaussianDivisor;
54+
color = gaussianBlurColor;
5555

5656
gl_FragColor = vec4(color, 1.0);
5757
}

0 commit comments

Comments
 (0)
Please sign in to comment.