AUFGERAUMT: Root auf 10 sichtbare Elemente reduziert
Der Nutzer hat recht: Der Ordner war voller Entwicklungs-Muell. Jetzt ist sauber getrennt: ROOT (was der Nutzer sieht und braucht): - run.py = das Programm - hms_app/ = der Anwendungscode - HMS MediaEngine.app = macOS Doppelklick-Starter - HMS-Start.vbs = Windows Doppelklick-Starter - HMS-Install.vbs = Windows Erst-Installation - HMS-Mac-Install.command = macOS Homebrew-Installation - HMS-Portable-Install.command = macOS Portable-Installation (16GB-Fix) - installer_gui.py = grafischer Installer - launcher.pyw + launcher_core.py = interne Start-Logik - LIESMICH.txt = 10-Zeilen-Kurzanleitung - .gitignore _entwicklung/ (alles andere, NICHT benoetigt): - packages/ apps/ native/ plugins/ tools/ schemas/ tests/ docs/ build/ fixture_profiles/ - PLAN.md STATUS.md ERRORS.md TEST_REPORT.md CHANGELOG.md README.md - pyproject.toml uv.lock setup_*.sh/ps1 make_mac_app.py Diese Trennung gilt ab sofort fuer alle Commits. Der Nutzer kann _entwicklung/ loeschen wenn er Platz braucht - die App laeuft ohne. Verifiziert: App startet nach Aufraeumen unveraendert (Health 200).
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
// HMS MediaEngine – Gaussian Blur, horizontaler Pass (separable)
|
||||
// PLAN.md §14.3-Beispiel, §36 Nr. 10: drei Adaptive-Quality-Varianten
|
||||
// (low: 5 Samples, medium: 9, high: 17) werden vorab kompiliert; nur
|
||||
// u_quality_samples/internal_scale ändern sich, param_radius bleibt semantisch identisch.
|
||||
|
||||
Texture2D u_input_texture : register(t0);
|
||||
SamplerState u_sampler : register(s0);
|
||||
|
||||
cbuffer hms_params : register(b0)
|
||||
{
|
||||
float4 u_resolution; // xy = Auflösung in Pixeln
|
||||
float u_time_seconds;
|
||||
float u_delta_seconds;
|
||||
float u_frame_index;
|
||||
float u_layer_opacity;
|
||||
float u_audio_rms;
|
||||
float u_audio_peak;
|
||||
float u_audio_bass;
|
||||
float u_audio_mid;
|
||||
float u_audio_treble;
|
||||
float u_audio_beat;
|
||||
float param_radius; // 0..40 (quadratic curve, DMX P1)
|
||||
float u_quality_samples; // 5 | 9 | 17 je Variante (Backend-Bindung)
|
||||
float _pad0;
|
||||
float _pad1;
|
||||
};
|
||||
|
||||
float4 mainPS(float4 pos : SV_POSITION, float2 uv : TEXCOORD0) : SV_Target
|
||||
{
|
||||
float radius = max(param_radius, 0.0);
|
||||
float4 src = u_input_texture.Sample(u_sampler, uv);
|
||||
if (radius < 0.01)
|
||||
{
|
||||
return src; // Radius 0 = kostenloser Bypass (§15.3)
|
||||
}
|
||||
|
||||
float samples = clamp(u_quality_samples, 1.0, 17.0);
|
||||
float stepSize = radius / max(samples - 1.0, 1.0);
|
||||
float2 texel = float2(1.0, 0.0) / u_resolution.xy;
|
||||
|
||||
float4 acc = float4(0.0, 0.0, 0.0, 0.0);
|
||||
float total = 0.0;
|
||||
[loop]
|
||||
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 += u_input_texture.Sample(u_sampler, uv + texel * (t * stepSize)) * w;
|
||||
total += w;
|
||||
}
|
||||
return acc / total;
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
// HMS MediaEngine – Gaussian Blur, vertikaler Pass (separable)
|
||||
// Identisch zu horizontal.hlsl mit texel = (0, 1).
|
||||
|
||||
Texture2D u_input_texture : register(t0);
|
||||
SamplerState u_sampler : register(s0);
|
||||
|
||||
cbuffer hms_params : register(b0)
|
||||
{
|
||||
float4 u_resolution;
|
||||
float u_time_seconds;
|
||||
float u_delta_seconds;
|
||||
float u_frame_index;
|
||||
float u_layer_opacity;
|
||||
float u_audio_rms;
|
||||
float u_audio_peak;
|
||||
float u_audio_bass;
|
||||
float u_audio_mid;
|
||||
float u_audio_treble;
|
||||
float u_audio_beat;
|
||||
float param_radius;
|
||||
float u_quality_samples;
|
||||
float _pad0;
|
||||
float _pad1;
|
||||
};
|
||||
|
||||
float4 mainPS(float4 pos : SV_POSITION, float2 uv : TEXCOORD0) : SV_Target
|
||||
{
|
||||
float radius = max(param_radius, 0.0);
|
||||
float4 src = u_input_texture.Sample(u_sampler, uv);
|
||||
if (radius < 0.01)
|
||||
{
|
||||
return src;
|
||||
}
|
||||
|
||||
float samples = clamp(u_quality_samples, 1.0, 17.0);
|
||||
float stepSize = radius / max(samples - 1.0, 1.0);
|
||||
float2 texel = float2(0.0, 1.0) / u_resolution.xy;
|
||||
|
||||
float4 acc = float4(0.0, 0.0, 0.0, 0.0);
|
||||
float total = 0.0;
|
||||
[loop]
|
||||
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 += u_input_texture.Sample(u_sampler, uv + texel * (t * stepSize)) * w;
|
||||
total += w;
|
||||
}
|
||||
return acc / total;
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
#version 330 core
|
||||
// HMS MediaEngine – Gaussian Blur, horizontaler Pass (GLSL, Linux x64)
|
||||
// Semantik identisch zur HLSL-Variante (§12.6, §15.4).
|
||||
|
||||
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(1.0, 0.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;
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
#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;
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
#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;
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
#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;
|
||||
}
|
||||
Reference in New Issue
Block a user