Geometry Dash

Geometry Dash

Not enough ratings
Shader for menu in Geometry Dash 2.206 [Mod] [Geode SDK]
By Belja
Change the default background in the menu to beautiful shaders! Install a mod to do this.
   
Award
Favorite
Favorited
Unfavorite
Introduction
Change the default background in the menu to beautiful shaders.
To do this, install the Menu Shaders[geode-sdk.org] mod in Geode client.

Read more about Geode Istallation: Guide

What is Menu Shaders?
Replaces the background of the main menu with a custom shader, which can be customized.



To customize the shader, create a file named menu-shader.fsh in your Resources folder with the shader you want.
Installation
To install this mod, you need to install a client for mods Geode, which provides mods in the game.
See the separate Geode installation guide.

To install the mod:
  1. Open the game and open the Geode menu in the game.


  2. Go to the Featured tab and find the Menu Shaders mod manually or by searching at the top.

  3. Insatll the mod by clicking Get button. A mod window will open where you can read information about the mod, updates and more. From here you need to click the Install button to install.


  4. Next, an automatic installation of the mod will happen. After that you need to restart the game to apply the mod.

After restarting you will immediately see the changes: in the background in the menu will be the standard shader in this mod, but you can customize the shader!
If you don't see any changes, it is possible that the mod is not enabled in the Geode menu.
To enable the mod:
  1. Open Geode menu.
  2. Find the Menu Shader mod in the Installed tab.
  3. Enable the check box on the mod.
  4. Restart the game to apply changes.
Customizing
You can customize the shader in the menu with your own shaders! To do this, you need the file menu-shaders.fsh in the Resources folder of the game, which should contain the shader code. The shaders you can find on the website: www.shadertoy.com
A lot of shaders from this site don't work, so in the next chapter of this guide you can find 5 shaders that do work. However, you can find other shaders on the site.
To do this:
  1. Open the website[www.shadertoy.com].

  2. Find a shader you like and open the page by clicking on it on the site.

  3. On the right side of the site you can see the code for this shader. Copy it fully.

  4. Open a website[shadertoyporter.github.io] that will convert the code to work in the game. This is a required.

  5. Copy the output on the site.

  6. Click on the Download button below the text box. A file named menu-shader.fsh will be downloaded, which contains the converted code ready for the shader to work (you can also see the code fully in the output window).

  7. Move the downloaded file to the game Resources folder. You can go to the game resources folder via Steam: click on the game in the Steam library -> "Manage" -> "Browse Local Files" -> Resources folder.
The customization is done.
Some 5 neat shaders
5 shaders that work in game and look awesome!

Each shader will already have converted code written for it, which you can simply copy, create a file in the game resources named menu-shader.fsh, paste the code into that file, and save it.
1. Octagrams


Link: www.shadertoy.com/view/tlVGDt

Code:
uniform vec2 center; uniform vec2 resolution; uniform float time; uniform vec2 mouse; uniform float pulse1; uniform float pulse2; uniform float pulse3; precision highp float; float gTime = 0.; const float REPEAT = 5.0; mat2 rot(float a) { float c = cos(a), s = sin(a); return mat2(c,s,-s,c); } float sdBox( vec3 p, vec3 b ) { vec3 q = abs(p) - b; return length(max(q,0.0)) + min(max(q.x,max(q.y,q.z)),0.0); } float box(vec3 pos, float scale) { pos *= scale; float base = sdBox(pos, vec3(.4,.4,.1)) /1.5; pos.xy *= 5.; pos.y -= 3.5; pos.xy *= rot(.75); float result = -base; return result; } float box_set(vec3 pos, float time) { vec3 pos_origin = pos; pos = pos_origin; pos .y += sin(gTime * 0.4) * 2.5; pos.xy *= rot(.8); float box1 = box(pos,2. - abs(sin(gTime * 0.4)) * 1.5); pos = pos_origin; pos .y -=sin(gTime * 0.4) * 2.5; pos.xy *= rot(.8); float box2 = box(pos,2. - abs(sin(gTime * 0.4)) * 1.5); pos = pos_origin; pos .x +=sin(gTime * 0.4) * 2.5; pos.xy *= rot(.8); float box3 = box(pos,2. - abs(sin(gTime * 0.4)) * 1.5); pos = pos_origin; pos .x -=sin(gTime * 0.4) * 2.5; pos.xy *= rot(.8); float box4 = box(pos,2. - abs(sin(gTime * 0.4)) * 1.5); pos = pos_origin; pos.xy *= rot(.8); float box5 = box(pos,.5) * 6.; pos = pos_origin; float box6 = box(pos,.5) * 6.; float result = max(max(max(max(max(box1,box2),box3),box4),box5),box6); return result; } float map(vec3 pos, float time) { vec3 pos_origin = pos; float box_set1 = box_set(pos, time); return box_set1; } void main(){ vec2 p = (gl_FragCoord.xy * 2. - resolution.xy) / min(resolution.x, resolution.y); vec3 ro = vec3(0., -0.2 ,time * 4.); vec3 ray = normalize(vec3(p, 1.5)); ray.xy = ray.xy * rot(sin(time * .03) * 5.); ray.yz = ray.yz * rot(sin(time * .05) * .2); float t = 0.1; vec3 col = vec3(0.); float ac = 0.0; for (int i = 0; i < 99; i++){ vec3 pos = ro + ray * t; pos = mod(pos-2., 4.) -2.; gTime = time -float(i) * 0.01; float d = map(pos, time); d = max(abs(d), 0.01); ac += exp(-d*23.); t += d* 0.55; } col = vec3(ac * 0.02); col +=vec3(0.,0.2 * abs(sin(time)),0.5 + sin(time) * 0.2); gl_FragColor = vec4(col ,1.0 - t * (0.02 + 0.02 * sin (time))); }
2. Phantom Star


Link: www.shadertoy.com/view/ttKGDt

Code:

uniform vec2 center; uniform vec2 resolution; uniform float time; uniform vec2 mouse; uniform float pulse1; uniform float pulse2; uniform float pulse3; precision highp float; mat2 rot(float a) { float c = cos(a), s = sin(a); return mat2(c,s,-s,c); } const float pi = acos(-1.0); const float pi2 = pi*2.0; vec2 pmod(vec2 p, float r) { float a = atan(p.x, p.y) + pi/r; float n = pi2 / r; a = floor(a/n)*n; return p*rot(-a); } float box( vec3 p, vec3 b ) { vec3 d = abs(p) - b; return min(max(d.x,max(d.y,d.z)),0.0) + length(max(d,0.0)); } float ifsBox(vec3 p) { for (int i=0; i<5; i++) { p = abs(p) - 1.0; p.xy *= rot(time*0.3); p.xz *= rot(time*0.1); } p.xz *= rot(time); return box(p, vec3(0.4,0.8,0.3)); } float map(vec3 p, vec3 cPos) { vec3 p1 = p; p1.x = mod(p1.x-5., 10.) - 5.; p1.y = mod(p1.y-5., 10.) - 5.; p1.z = mod(p1.z, 16.)-8.; p1.xy = pmod(p1.xy, 5.0); return ifsBox(p1); } void main(){ vec2 p = (gl_FragCoord.xy * 2.0 - resolution.xy) / min(resolution.x, resolution.y); vec3 cPos = vec3(0.0,0.0, -3.0 * time); vec3 cDir = normalize(vec3(0.0, 0.0, -1.0)); vec3 cUp = vec3(sin(time), 1.0, 0.0); vec3 cSide = cross(cDir, cUp); vec3 ray = normalize(cSide * p.x + cUp * p.y + cDir); float acc = 0.0; float acc2 = 0.0; float t = 0.0; for (int i = 0; i < 99; i++) { vec3 pos = cPos + ray * t; float dist = map(pos, cPos); dist = max(abs(dist), 0.02); float a = exp(-dist*3.0); if (mod(length(pos)+24.0*time, 30.0) < 3.0) { a *= 2.0; acc2 += a; } acc += a; t += dist * 0.5; } vec3 col = vec3(acc * 0.01, acc * 0.011 + acc2*0.002, acc * 0.012+ acc2*0.005); gl_FragColor = vec4(col, 1.0 - t * 0.03); }
3. 70s Melt


Link: www.shadertoy.com/view/XsX3zl

Code:

uniform vec2 center; uniform vec2 resolution; uniform float time; uniform vec2 mouse; uniform float pulse1; uniform float pulse2; uniform float pulse3; #ifdef GL_ES precision mediump float; #endif const int zoom = 40; const float brightness = 0.975; float fScale = 1.25; float cosRange(float amt, float range, float minimum) { return (((1.0 + cos(radians(amt))) * 0.5) * range) + minimum; } void main(){ float time = time * 1.25; vec2 uv = gl_FragCoord.xy / resolution.xy; vec2 p = (2.0*gl_FragCoord.xy-resolution.xy)/max(resolution.x,resolution.y); float ct = cosRange(time*5.0, 3.0, 1.1); float xBoost = cosRange(time*0.2, 5.0, 5.0); float yBoost = cosRange(time*0.1, 10.0, 5.0); fScale = cosRange(time * 15.5, 1.25, 0.5); for(int i=1;i<zoom;i++) { float _i = float(i); vec2 newp=p; newp.x+=0.25/_i*sin(_i*p.y+time*cos(ct)*0.5/20.0+0.005*_i)*fScale+xBoost; newp.y+=0.25/_i*sin(_i*p.x+time*ct*0.3/40.0+0.03*float(i+15))*fScale+yBoost; p=newp; } vec3 col=vec3(0.5*sin(3.0*p.x)+0.5,0.5*sin(3.0*p.y)+0.5,sin(p.x+p.y)); col *= brightness; float vigAmt = 5.0; float vignette = (1.-vigAmt*(uv.y-.5)*(uv.y-.5))*(1.-vigAmt*(uv.x-.5)*(uv.x-.5)); float extrusion = (col.x + col.y + col.z) / 4.0; extrusion *= 1.5; extrusion *= vignette; gl_FragColor = vec4(col, extrusion); }
4. Cloud


Link: www.shadertoy.com/view/WslGWl

Code:

uniform vec2 center; uniform vec2 resolution; uniform float time; uniform vec2 mouse; uniform float pulse1; uniform float pulse2; uniform float pulse3; #define USE_LIGHT 0 mat3 m = mat3( 0.00, 0.80, 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 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.03; f += 0.1250 * noise(p); return f; } float scene(in vec3 pos) { return 0.1 - length(pos) * 0.05 + fbm(pos * 0.3); } vec3 getNormal(in vec3 p) { const float e = 0.01; return normalize(vec3(scene(vec3(p.x + e, p.y, p.z)) - scene(vec3(p.x - e, p.y, p.z)), scene(vec3(p.x, p.y + e, p.z)) - scene(vec3(p.x, p.y - e, p.z)), scene(vec3(p.x, p.y, p.z + e)) - scene(vec3(p.x, p.y, p.z - e)))); } mat3 camera(vec3 ro, vec3 ta) { vec3 cw = normalize(ta - ro); vec3 cp = vec3(0.0, 1.0, 0.0); vec3 cu = cross(cw, cp); vec3 cv = cross(cu, cw); return mat3(cu, cv, cw); } void main(){ vec2 uv = (gl_FragCoord.xy * 2.0 - resolution.xy) / min(resolution.x, resolution.y); vec2 mo = vec2(time * 0.1, cos(time * 0.25) * 3.0); float camDist = 25.0; vec3 ta = vec3(0.0, 1.0, 0.0); vec3 ro = camDist * normalize(vec3(cos(2.75 - 3.0 * mo.x), 0.7 - 1.0 * (mo.y - 1.0), sin(2.75 - 3.0 * mo.x))); float targetDepth = 1.3; mat3 c = camera(ro, ta); vec3 dir = c * normalize(vec3(uv, targetDepth)); const int sampleCount = 64; const int sampleLightCount = 6; const float eps = 0.01; float zMax = 40.0; float zstep = zMax / float(sampleCount); float zMaxl = 20.0; float zstepl = zMaxl / float(sampleLightCount); vec3 p = ro; float T = 1.0; float absorption = 100.0; vec3 sun_direction = normalize(vec3(1.0, 0.0, 0.0)); vec4 color = vec4(0.0); for (int i = 0; i < sampleCount; i++) { float density = scene(p); if (density > 0.0) { float tmp = density / float(sampleCount); T *= 1.0 - (tmp * absorption); if (T <= 0.01) { break; } #if USE_LIGHT == 1 float Tl = 1.0; vec3 lp = p; for (int j = 0; j < sampleLightCount; j++) { float densityLight = scene(lp); if (densityLight > 0.0) { float tmpl = densityLight / float(sampleCount); Tl *= 1.0 - (tmpl * absorption); } if (Tl <= 0.01) { break; } lp += sun_direction * zstepl; } #endif float opaity = 50.0; float k = opaity * tmp * T; vec4 cloudColor = vec4(1.0); vec4 col1 = cloudColor * k; #if USE_LIGHT == 1 float opacityl = 30.0; float kl = opacityl * tmp * T * Tl; vec4 lightColor = vec4(1.0, 0.7, 0.9, 1.0); vec4 col2 = lightColor * kl; #else vec4 col2 = vec4(0.0); #endif color += col1 + col2; } p += dir * zstep; } vec3 bg = mix(vec3(0.3, 0.1, 0.8), vec3(0.7, 0.7, 1.0), 1.0 - (uv.y + 1.0) * 0.5); color.rgb += bg; gl_FragColor = color; }
5. Palettes


Link: https://www.shadertoy.com/view/ll2GD3 (MIT License)

Code:

uniform vec2 center; uniform vec2 resolution; uniform float time; uniform vec2 mouse; uniform float pulse1; uniform float pulse2; uniform float pulse3; vec3 pal( in float t, in vec3 a, in vec3 b, in vec3 c, in vec3 d ) { return a + b*cos( 6.28318*(c*t+d) ); } void main(){ vec2 p = gl_FragCoord.xy / resolution.xy; p.x += 0.01*time; vec3 col = pal( p.x, vec3(0.5,0.5,0.5),vec3(0.5,0.5,0.5),vec3(1.0,1.0,1.0),vec3(0.0,0.33,0.67) ); if( p.y>(1.0/7.0) ) col = pal( p.x, vec3(0.5,0.5,0.5),vec3(0.5,0.5,0.5),vec3(1.0,1.0,1.0),vec3(0.0,0.10,0.20) ); if( p.y>(2.0/7.0) ) col = pal( p.x, vec3(0.5,0.5,0.5),vec3(0.5,0.5,0.5),vec3(1.0,1.0,1.0),vec3(0.3,0.20,0.20) ); if( p.y>(3.0/7.0) ) col = pal( p.x, vec3(0.5,0.5,0.5),vec3(0.5,0.5,0.5),vec3(1.0,1.0,0.5),vec3(0.8,0.90,0.30) ); if( p.y>(4.0/7.0) ) col = pal( p.x, vec3(0.5,0.5,0.5),vec3(0.5,0.5,0.5),vec3(1.0,0.7,0.4),vec3(0.0,0.15,0.20) ); if( p.y>(5.0/7.0) ) col = pal( p.x, vec3(0.5,0.5,0.5),vec3(0.5,0.5,0.5),vec3(2.0,1.0,0.0),vec3(0.5,0.20,0.25) ); if( p.y>(6.0/7.0) ) col = pal( p.x, vec3(0.8,0.5,0.4),vec3(0.2,0.4,0.2),vec3(2.0,1.0,1.0),vec3(0.0,0.25,0.25) ); float f = fract(p.y*7.0); col *= smoothstep( 0.49, 0.47, abs(f-0.5) ); col *= 0.5 + 0.5*sqrt(4.0*f*(1.0-f)); gl_FragColor = vec4( col, 1.0 ); }
Afterwords
Keep in mind that these shaders work by processing by your GPU and CPU, so some shaders may slow down the game, however the shader does not work those menus where it does not.

This mod also works on Android.


Thanks for using this guide!
.gif]

Leave a comment! The author will answer questions ASAP.
5 Comments
lcs_910 1 Jul @ 1:16pm 
LOOOOOOOOOOOL REAL
Dan 28 Jun @ 2:16am 
ty
jvvalle800 27 Jun @ 5:39pm 
bombs
Randomyl 25 Jun @ 9:55pm 
yessir and now the icons that i can press to kill is gone
angelluvsikk 25 Jun @ 3:25pm 
good work :GDNormal: