summaryrefslogtreecommitdiff
path: root/raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/effects/monte_carlo_blur.glsl
diff options
context:
space:
mode:
Diffstat (limited to 'raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/effects/monte_carlo_blur.glsl')
-rw-r--r--raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/effects/monte_carlo_blur.glsl52
1 files changed, 52 insertions, 0 deletions
diff --git a/raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/effects/monte_carlo_blur.glsl b/raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/effects/monte_carlo_blur.glsl
new file mode 100644
index 0000000..27b3806
--- /dev/null
+++ b/raveos-gnome-theme/theme-data/extensions/installed/blur-my-shell@aunetx/effects/monte_carlo_blur.glsl
@@ -0,0 +1,52 @@
+uniform sampler2D tex;
+uniform float radius;
+uniform int iterations;
+uniform float brightness;
+uniform float width;
+uniform float height;
+uniform bool use_base_pixel;
+uniform bool prefer_closer_pixels;
+
+float srand(vec2 a) {
+ return sin(dot(a, vec2(1233.224, 1743.335)));
+}
+
+float rand(inout float r) {
+ r = fract(3712.65 * r + 0.61432);
+ return (r - 0.5) * 2.0;
+}
+
+void main() {
+ vec2 uv = cogl_tex_coord0_in.st;
+ vec2 p = 16 * radius / vec2(width, height);
+ float r = srand(uv);
+
+ vec2 rv;
+ vec2 dir;
+ vec2 new_uv;
+ int strength;
+
+ int count = 0;
+ vec4 c = vec4(0.);
+
+ for (int i = 0; i < iterations; i++) {
+ rv.x = rand(r);
+ rv.y = rand(r) * 3.141592;
+ dir = vec2(cos(rv.y), sin(rv.y));
+ new_uv = uv + rv.x * dir * p;
+ if (new_uv.x > 2. / width && new_uv.y > 2. / height && new_uv.x < 1. - 3. / width && new_uv.y < 1. - 3. / height) {
+ strength = prefer_closer_pixels ? (iterations - i)^2 : 1;
+ c += strength * texture2D(tex, new_uv);
+ count += strength;
+ }
+ }
+
+ if (count == 0 || use_base_pixel) {
+ strength = prefer_closer_pixels ? (iterations + 1)^2 : 1;
+ c += strength * texture2D(tex, uv);
+ count += strength;
+ }
+
+ c.xyz *= brightness;
+ cogl_color_out = c / count;
+} \ No newline at end of file