summaryrefslogtreecommitdiff
path: root/shaders/bloom-up.frag.glsl
blob: 368076ed1b34e5b360206e2d3f5b714cfddac008 (plain) (blame)
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
#version 450

// Bloom, up (docs/effects.md G4): one step of a dual Kawase filter back up,
// a tent of eight points over the smaller level. Float target.

layout(set = 2, binding = 0) uniform sampler2D source;
layout(std140, set = 3, binding = 0) uniform BloomStep {
    vec4 texels;
    vec4 pass;
} u;

layout(location = 0) out vec4 o_col;

void main() {
    vec2 uv = gl_FragCoord.xy * u.texels.zw;
    vec2 h = 0.5 * u.texels.xy;
    vec3 sum = texture(source, uv + vec2(-2.0 * h.x, 0.0)).rgb;
    sum += texture(source, uv + vec2(-h.x, h.y)).rgb * 2.0;
    sum += texture(source, uv + vec2(0.0, 2.0 * h.y)).rgb;
    sum += texture(source, uv + vec2(h.x, h.y)).rgb * 2.0;
    sum += texture(source, uv + vec2(2.0 * h.x, 0.0)).rgb;
    sum += texture(source, uv + vec2(h.x, -h.y)).rgb * 2.0;
    sum += texture(source, uv + vec2(0.0, -2.0 * h.y)).rgb;
    sum += texture(source, uv + vec2(-h.x, -h.y)).rgb * 2.0;
    o_col = vec4(sum / 12.0, 1.0);
}