#version 330 core // HMS MediaEngine – Gaussian Blur, vertikaler Pass (GLSL, Linux x64) uniform sampler2D u_input_texture; uniform vec2 u_resolution; uniform float u_time_seconds; uniform float u_delta_seconds; uniform float u_frame_index; uniform float u_layer_opacity; uniform float u_audio_rms; uniform float u_audio_peak; uniform float u_audio_bass; uniform float u_audio_mid; uniform float u_audio_treble; uniform float u_audio_beat; uniform float param_radius; uniform float u_quality_samples; in vec2 v_uv; out vec4 fragColor; void main() { float radius = max(param_radius, 0.0); vec4 src = texture(u_input_texture, v_uv); if (radius < 0.01) { fragColor = src; return; } float samples = clamp(u_quality_samples, 1.0, 17.0); float stepSize = radius / max(samples - 1.0, 1.0); vec2 texel = vec2(0.0, 1.0) / u_resolution; vec4 acc = vec4(0.0); float total = 0.0; for (float i = 0.0; i < samples; i += 1.0) { float t = i - (samples - 1.0) * 0.5; float w = exp(-(t * t) / (samples * 0.5)); acc += texture(u_input_texture, v_uv + texel * (t * stepSize)) * w; total += w; } fragColor = acc / total; }