zaphyra's git: nixfiles

zaphyra's nixfiles

commit 2f108a6b7f8318383154b1d5d19df6060730b492
parent 080aef379155af65f1e07e4a8f272466a397e7a6
Author: Katja Ramona Sophie Kwast (zaphyra) <git@zaphyra.eu>
Date: Tue, 19 Aug 2025 12:09:47 +0200

resources/shaders: add `background1.frag`
1 file changed, 79 insertions(+), 0 deletions(-)
A
resources/shaders/background1.frag
|
79
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
diff --git a/resources/shaders/background1.frag b/resources/shaders/background1.frag
@@ -0,0 +1,78 @@
+/*** Uses noise / fbm apparatus from Clouds by iq on shadertoy ***/
+
+float pi = 3.14159;
+
+
+mat3 m = mat3( 0.0,  0.8,  0.60,
+              -0.80,  0.36, -0.48,
+              -0.60, -0.48,  0.64 );
+
+float hash( float n )
+{
+    return fract(sin(n)*43758.5453);
+}
+
+float noise( in vec3 x )
+{
+    vec3 p = floor(x);
+    vec3 f = fract(x);
+
+    f = f*f*(3.0-2.0*f);
+    float n = p.x + p.y*57.0 + 113.0*p.z;
+
+    float res = mix(mix(mix( hash(n+  0.0), hash(n+  1.0),f.x),
+                        mix( hash(n+ 57.0), hash(n+ 58.0),f.x),f.y),
+                    mix(mix( hash(n+113.0), hash(n+114.0),f.x),
+                        mix( hash(n+170.0), hash(n+171.0),f.x),f.y),f.z);
+    return 1.0 - sqrt(res);
+}
+
+float fbm( vec3 p )
+{
+    float f;
+    f  = 0.5000*noise( p ); p = m*p*2.02;
+    f += 0.2500*noise( p ); p = m*p*2.0130;
+    f += 0.1250*noise( p ); p = m*p*2.0370;
+	// enable smallest component for more wiggliness
+	// f += 0.0625*noise( p );
+	// f /= 0.9375
+    f /= 0.875;
+    return f;
+}
+
+float nat(in vec2 q, in float z, in float mx) {
+   return mx * noise(vec3(q, z)) + (1.0 - mx) * fbm(vec3(q, z));
+}
+
+void mainImage( out vec4 fragColor, in vec2 fragCoord ) {
+  vec2 mouse = vec2(1.0 - iMouse.x / iResolution.x, 1.0 - iMouse.y / iResolution.y);
+  vec3 col = vec3 (0., 0., 0.);
+  
+  float s = 1.0 / ((1.0 + mouse.y) * 45.0);
+  float fbmz = 1.0 + 0.01 * iTime;
+  vec2 p = (fragCoord.xy * s);
+
+  float as = (4.0 * (1.0 - mouse.y) + (3.0 * (1.0 - mouse.x))) + 7.5;
+  float pdir = nat(p, fbmz, mouse.x) * 2.0 * pi * as;
+  float d = as * 1.0 / length(iResolution);
+  vec2 dp = vec2(d*sin(pdir), d * cos(pdir));
+  vec2 q = p + dp;
+  vec2 q2 = p - dp;
+  float qdir = nat(q, fbmz, mouse.x) * 2.0 * pi * as;
+  pdir = nat(q2, fbmz, mouse.x) * 2.0 * pi * as;
+  vec2 c = (q2 + q) / 2.0;
+  float pql = length(q - q2);
+
+  float mdir = (pdir + qdir)/2.0;
+  float ddir = mod((qdir - pdir)/2.0, pi * 2.0);
+  float tdd = tan(ddir);
+  vec2 co = vec2(pql * sin(mdir) / tdd, pql * cos(mdir) / tdd);
+  float ro = length(q2 - c + co);
+
+  float rf = .25 + (0.2 * (1.0 - mouse.x));
+  if (ro < rf) {
+    col += normalize(vec3(cos(ro/ddir),  2.5 - sin((ro/rf) * pi/2.0), 0.9 - ro/rf/ddir));
+    col *= (1.0 - (ro/rf));
+  } 
+  fragColor = vec4(col, 1.0);
+}+
\ No newline at end of file