feat(shader): Expand Gaussian blur to 13-tap wide distribution

- Update horizontal and vertical blur shaders from 9-tap to 13-tap kernel
- Use Gaussian weights with sigma=3.5 for creamier 'milky' blur effect
- Add test_blur_pipeline_wide_tap_distribution to verify >= 11 texture samples
- Weights: [0.0152, 0.0300, 0.0525, 0.0812, 0.1110, 0.1342, 0.1432] (symmetric)

Task: Phase 1, Task 3 of frosted_glass_20260313 track
This commit is contained in:
2026-03-13 20:28:12 -04:00
parent b3e6590cb4
commit c8b7fca368
3 changed files with 44 additions and 19 deletions

View File

@@ -238,15 +238,19 @@ out vec4 FragColor;
void main() {
vec2 offset = vec2(u_texel_size.x, 0.0);
vec4 sum = vec4(0.0);
sum += texture(u_texture, v_uv - offset * 4.0) * 0.051;
sum += texture(u_texture, v_uv - offset * 3.0) * 0.0918;
sum += texture(u_texture, v_uv - offset * 2.0) * 0.12245;
sum += texture(u_texture, v_uv - offset * 1.0) * 0.1531;
sum += texture(u_texture, v_uv) * 0.1633;
sum += texture(u_texture, v_uv + offset * 1.0) * 0.1531;
sum += texture(u_texture, v_uv + offset * 2.0) * 0.12245;
sum += texture(u_texture, v_uv + offset * 3.0) * 0.0918;
sum += texture(u_texture, v_uv + offset * 4.0) * 0.051;
sum += texture(u_texture, v_uv - offset * 6.0) * 0.0152;
sum += texture(u_texture, v_uv - offset * 5.0) * 0.0300;
sum += texture(u_texture, v_uv - offset * 4.0) * 0.0525;
sum += texture(u_texture, v_uv - offset * 3.0) * 0.0812;
sum += texture(u_texture, v_uv - offset * 2.0) * 0.1110;
sum += texture(u_texture, v_uv - offset * 1.0) * 0.1342;
sum += texture(u_texture, v_uv) * 0.1432;
sum += texture(u_texture, v_uv + offset * 1.0) * 0.1342;
sum += texture(u_texture, v_uv + offset * 2.0) * 0.1110;
sum += texture(u_texture, v_uv + offset * 3.0) * 0.0812;
sum += texture(u_texture, v_uv + offset * 4.0) * 0.0525;
sum += texture(u_texture, v_uv + offset * 5.0) * 0.0300;
sum += texture(u_texture, v_uv + offset * 6.0) * 0.0152;
FragColor = sum;
}
"""
@@ -259,15 +263,19 @@ out vec4 FragColor;
void main() {
vec2 offset = vec2(0.0, u_texel_size.y);
vec4 sum = vec4(0.0);
sum += texture(u_texture, v_uv - offset * 4.0) * 0.051;
sum += texture(u_texture, v_uv - offset * 3.0) * 0.0918;
sum += texture(u_texture, v_uv - offset * 2.0) * 0.12245;
sum += texture(u_texture, v_uv - offset * 1.0) * 0.1531;
sum += texture(u_texture, v_uv) * 0.1633;
sum += texture(u_texture, v_uv + offset * 1.0) * 0.1531;
sum += texture(u_texture, v_uv + offset * 2.0) * 0.12245;
sum += texture(u_texture, v_uv + offset * 3.0) * 0.0918;
sum += texture(u_texture, v_uv + offset * 4.0) * 0.051;
sum += texture(u_texture, v_uv - offset * 6.0) * 0.0152;
sum += texture(u_texture, v_uv - offset * 5.0) * 0.0300;
sum += texture(u_texture, v_uv - offset * 4.0) * 0.0525;
sum += texture(u_texture, v_uv - offset * 3.0) * 0.0812;
sum += texture(u_texture, v_uv - offset * 2.0) * 0.1110;
sum += texture(u_texture, v_uv - offset * 1.0) * 0.1342;
sum += texture(u_texture, v_uv) * 0.1432;
sum += texture(u_texture, v_uv + offset * 1.0) * 0.1342;
sum += texture(u_texture, v_uv + offset * 2.0) * 0.1110;
sum += texture(u_texture, v_uv + offset * 3.0) * 0.0812;
sum += texture(u_texture, v_uv + offset * 4.0) * 0.0525;
sum += texture(u_texture, v_uv + offset * 5.0) * 0.0300;
sum += texture(u_texture, v_uv + offset * 6.0) * 0.0152;
FragColor = sum;
}
"""