pub const COMPOSITE_FRAG: &str = r#"
#version 330 core
in vec2 v_uv;
out vec4 frag_color;
uniform sampler2D u_scene;
uniform sampler2D u_bloom;
uniform float u_intensity;
void main() {
vec3 scene = texture(u_scene, v_uv).rgb;
vec3 bloom = texture(u_bloom, v_uv).rgb;
// Additive bloom blend
vec3 result = scene + bloom * u_intensity;
frag_color = vec4(result, 1.0);
}
"#;Expand description
GLSL fragment shader source for the bloom composite pass.
Expects:
u_scene: sampler2D — original scene
u_bloom: sampler2D — blurred bloom
u_intensity: float — additive blend weight
u_dirt: sampler2D — optional lens dirt mask
u_dirt_intensity: float