0922cc1d68
- Struktur gemäß §8 (Eigentumsgrenzen), PLAN.md als normative Basis - Pflichtdokumente: STATUS.md, ERRORS.md, TEST_REPORT.md, CHANGELOG.md, ADRs - ADR-0001 Python 3.13-Pin, ADR-0002 GStreamer 1.28.6-Pin (Windows), ADR-0003 IPC TCP+MessagePack v1 - Kernpakete: hms_protocol, hms_domain, hms_parameter, hms_artnet, hms_adaptive, hms_capabilities, hms_plugin_sdk - Renderer-Spike: D3D11-Primärpfad + Dev-GL-Pfad (§36 Nr. 4-5) - Control Core: FastAPI REST + WebSocket (§36 Nr. 9) - Beispielplugins: Passthrough + Gaussian Blur (3 Adaptive-Quality- Varianten, HLSL/GLSL/GLES) - Tools: Art-Net-Emulator, Fixture-Generator (Master32/Layer64-CSV), Capability-Probe - JSON-Schemas: IPC, Plugin, Projekt, Cluster - 121 Unit-/Integrationstests grün, Ruff grün Gate 0 bleibt offen: Hardwaremessungen nur auf echter Windows-Referenz- hardware gültig (§29.7, §33).
49 lines
1.3 KiB
GLSL
49 lines
1.3 KiB
GLSL
#version 100
|
||
// HMS MediaEngine – Gaussian Blur, horizontaler Pass (GLES, Raspberry Pi)
|
||
// ES 2.0: Schleifen mit konstanter Höchstgrenze; Abbruch über Bedingung.
|
||
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(1.0, 0.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;
|
||
}
|