summaryrefslogtreecommitdiff
path: root/raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/effects/downscale.glsl
diff options
context:
space:
mode:
authorNippy <nippy@Nippy-Mac-mini.local>2026-10-09 17:23:53 +0200
committerNippy <nippy@Nippy-Mac-mini.local>2026-10-09 17:23:53 +0200
commit9d5be1660d8f74038ebed3d74fdbc809e43787ae (patch)
tree4cb46c3765be87ca4c5219f2f714425d7dfddb56 /raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/effects/downscale.glsl
parentdeb4b8a9c407832c35100a643bd7a592589c9679 (diff)
downloadRaveOS-PKGBUILD-9d5be1660d8f74038ebed3d74fdbc809e43787ae.tar.gz
RaveOS-PKGBUILD-9d5be1660d8f74038ebed3d74fdbc809e43787ae.zip
gnome fix
Diffstat (limited to 'raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/effects/downscale.glsl')
-rw-r--r--raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/effects/downscale.glsl36
1 files changed, 21 insertions, 15 deletions
diff --git a/raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/effects/downscale.glsl b/raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/effects/downscale.glsl
index 9871268..8b57367 100644
--- a/raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/effects/downscale.glsl
+++ b/raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/effects/downscale.glsl
@@ -3,13 +3,14 @@ uniform int divider;
uniform float width;
uniform float height;
uniform int downsampling_mode;
+uniform float opacity_factor;
#define CORRECTION 2.25
-#define SIZE_ADDITION 3
+#define SIZE_ADDITION 3.0
vec4 get_texture_at_position(vec2 position) {
vec2 raw_position = position + vec2(CORRECTION, CORRECTION);
- vec2 raw_uv = raw_position / vec2(width + SIZE_ADDITION, height + SIZE_ADDITION);
+ vec2 raw_uv = raw_position / vec2(max(1.0, width + SIZE_ADDITION), max(1.0, height + SIZE_ADDITION));
return texture2D(tex, raw_uv);
}
@@ -21,11 +22,14 @@ vec2 get_corrected_position() {
}
void main() {
+ vec4 source_color = texture2D(tex, cogl_tex_coord0_in.st);
+ vec4 effect_color = vec4(0.0);
ivec2 corrected_position = ivec2(get_corrected_position());
- vec2 multiplied_position = corrected_position * divider;
+ vec2 multiplied_position = vec2(corrected_position) * float(divider);
if (any(greaterThan(multiplied_position, vec2(width, height)))) {
- discard;
+ cogl_color_out = mix(source_color, effect_color, opacity_factor);
+ return;
}
// mode 0: boxcar downsampling
@@ -35,15 +39,15 @@ void main() {
int count = 0;
for (int i = 0; i < divider; i++) {
for (int j = 0; j < divider; j++) {
- vec2 lookup_position = multiplied_position + vec2(i, j);
- if (all(greaterThanEqual(lookup_position, vec2(0, 0))) &&
+ vec2 lookup_position = multiplied_position + vec2(float(i), float(j));
+ if (all(greaterThanEqual(lookup_position, vec2(0.0, 0.0))) &&
all(lessThan(lookup_position, vec2(width, height)))) {
color += get_texture_at_position(lookup_position);
count += 1;
}
}
}
- cogl_color_out = color / count;
+ effect_color = color / max(1.0, float(count));
} else
// mode 1: triangular downsampling
@@ -54,23 +58,25 @@ void main() {
int force = 1;
for (int i = 0; i < divider; i++) {
for (int j = 0; j < divider; j++) {
- vec2 lookup_position = multiplied_position + vec2(i, j);
- if (all(greaterThanEqual(lookup_position, vec2(0, 0))) &&
+ vec2 lookup_position = multiplied_position + vec2(float(i), float(j));
+ if (all(greaterThanEqual(lookup_position, vec2(0.0, 0.0))) &&
all(lessThan(lookup_position, vec2(width, height)))) {
- force = 1 + divider - int(abs(divider - i - j));
- color += get_texture_at_position(lookup_position) * force;
+ force = 1 + divider - int(abs(float(divider - i - j)));
+ color += get_texture_at_position(lookup_position) * float(force);
count += force;
}
}
}
- cogl_color_out = color / count;
+ effect_color = color / max(1.0, float(count));
} else
// mode 2: Dirac downsampling
if (downsampling_mode == 2) {
- vec2 lookup_position = min(multiplied_position + vec2(divider, divider) / 2, vec2(width - 1, height - 1));
- cogl_color_out = get_texture_at_position(lookup_position);
+ vec2 lookup_position = min(multiplied_position + vec2(float(divider)) * 0.5, vec2(width - 1.0, height - 1.0));
+ effect_color = get_texture_at_position(lookup_position);
}
-} \ No newline at end of file
+
+ cogl_color_out = mix(source_color, effect_color, opacity_factor);
+}