#version 100 // HMS MediaEngine – Gaussian Blur, vertikaler Pass (GLES, Raspberry Pi) precision mediump float; 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; varying vec2 v_uv; void main() { float radius = max(param_radius, 0.0); vec4 src = texture2D(u_input_texture, v_uv); if (radius < 0.01) { gl_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 (int i = 0; i < 17; i++) { if (float(i) >= samples) { break; } float t = float(i) - (samples - 1.0) * 0.5; float w = exp(-(t * t) / (samples * 0.5)); acc += texture2D(u_input_texture, v_uv + texel * (t * stepSize)) * w; total += w; } gl_FragColor = acc / total; }