#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); }