From 560a638eb6da368ea2f797ba4a73bd0ca7989cb6 Mon Sep 17 00:00:00 2001 From: Cametendo Date: Mon, 1 Jun 2026 10:39:33 +0200 Subject: [PATCH] Getting maybe closer to kuwahara --- shaders/final.fsh | 46 ++++++++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/shaders/final.fsh b/shaders/final.fsh index 29f41b0..9854d29 100644 --- a/shaders/final.fsh +++ b/shaders/final.fsh @@ -30,9 +30,9 @@ void main() { lumaSquaredSum_tr += (luma * luma); } } - vec3 mean_tr = colorSum_tr / 9.0; - float mean_luma_tr = lumaSum_tr / 9.0; - float variance_tr = (lumaSquaredSum_tr / 9.0) - (mean_luma_tr * mean_luma_tr); + vec3 mean_tr = colorSum_tr / 25.0; + float mean_luma_tr = lumaSum_tr / 25.0; + float variance_tr = (lumaSquaredSum_tr / 25.0) - (mean_luma_tr * mean_luma_tr); // ========================================================================= // QUADRANT 2: Oben-Links (Top-Left) @@ -52,9 +52,9 @@ void main() { lumaSquaredSum_tl += (luma * luma); } } - vec3 mean_tl = colorSum_tl / 9.0; - float mean_luma_tl = lumaSum_tl / 9.0; - float variance_tl = (lumaSquaredSum_tl / 9.0) - (mean_luma_tl * mean_luma_tl); + vec3 mean_tl = colorSum_tl / 25.0; + float mean_luma_tl = lumaSum_tl / 25.0; + float variance_tl = (lumaSquaredSum_tl / 25.0) - (mean_luma_tl * mean_luma_tl); // ========================================================================= // QUADRANT 3: Unten-Links (Bottom-Left) @@ -74,9 +74,9 @@ void main() { lumaSquaredSum_bl += (luma * luma); } } - vec3 mean_bl = colorSum_bl / 9.0; - float mean_luma_bl = lumaSum_bl / 9.0; - float variance_bl = (lumaSquaredSum_bl / 9.0) - (mean_luma_bl * mean_luma_bl); + vec3 mean_bl = colorSum_bl / 25.0; + float mean_luma_bl = lumaSum_bl / 25.0; + float variance_bl = (lumaSquaredSum_bl / 25.0) - (mean_luma_bl * mean_luma_bl); // ========================================================================= // QUADRANT 4: Unten-Rechts (Bottom-Right) @@ -96,29 +96,35 @@ void main() { lumaSquaredSum_br += (luma * luma); } } - vec3 mean_br = colorSum_br / 9.0; - float mean_luma_br = lumaSum_br / 9.0; - float variance_br = (lumaSquaredSum_br / 9.0) - (mean_luma_br * mean_luma_br); + vec3 mean_br = colorSum_br / 25.0; + float mean_luma_br = lumaSum_br / 25.0; + float variance_br = (lumaSquaredSum_br / 25.0) - (mean_luma_br * mean_luma_br); // ========================================================================= // FINALE AUSWAHL: Den Quadranten mit der NIEDRIGSTEN Varianz finden // ========================================================================= - float minVariance = variance_tr; +// 1. Varianzen direkt für den harten Effekt quadrieren + float v_tr = variance_tr * variance_tr; + float v_tl = variance_tl * variance_tl; + float v_bl = variance_bl * variance_bl; + float v_br = variance_br * variance_br; + + // 2. Sauberer Vergleich der quadrierten Werte + float minVariance = v_tr; vec3 finalColor = mean_tr; - if (variance_tl < minVariance) { - minVariance = variance_tl; + if (v_tl < minVariance) { + minVariance = v_tl; finalColor = mean_tl; } - if (variance_bl < minVariance) { - minVariance = variance_bl; + if (v_bl < minVariance) { + minVariance = v_bl; finalColor = mean_bl; } - if (variance_br < minVariance) { - minVariance = variance_br; + if (v_br < minVariance) { + minVariance = v_br; finalColor = mean_br; } - // Farbe auf den Bildschirm bringen! fragColor = vec4(finalColor, 1.0); } \ No newline at end of file