Mineuniverse
Shaders
VignetteLowEndShader

VignetteLowEndShader

SHADER
A lightweight, cinematic Minecraft shader featuring gemstone ore glows, smooth water, and atmospheric time-based lighting.
by FORCedout
Download Claim this project
197 downloads
0 likes
Updated Oct 14, 2026
0 hypes
Fantasy Vanilla
Advertisement Remove ads with Premium →

                            please read.

its a lightweight shader for a really really low spec setup, it has waving leaves, waving water, smooth lighting and water. nether and end lighting are good, the gemstone ores glow like redstone, diamond, lapis, gold. nothing else cause i made not using bloc id but color, so you will see anything thats colored like those gemstone ill glow... you will see also there is a white wall type thing all around, thats a problem too, i tried to do something but didnt go well...... the underwater is clearly seeable but not too far, it has shadows too...... you might also find that endermen and spiders dont have eyes, the texture is glitched a little, tried to fix that too but it got worse, but alway remember to not look at endermen. and the grass is wavy too so  the problem is its edges leak light and when it waves its tore so you can see through them at the corener... no fancy cloud or sun light.. and you can see under lava... im not a modder or coder. but i hope you enjoy it... if you happen to be a coder, there is no problem fixing it..... i wil try to leave the codes..... i made it because of my own set up cause it really too dead end potato pc.. and its fully made by gemini... so if you can try to help me out.... thanks for checking.....

composite.fsh:

#version 120 uniform sampler2D colortex0; varying vec2 texcoord;

void main() { vec4 color = texture2D(colortex0, texcoord); float lum = dot(color.rgb, vec3(0.299, 0.587, 0.114));

  • // 1. Kill the White Horizon Wall if (color.r > 0.90 && color.g > 0.90 && color.b > 0.90 && texcoord.y > 0.35) { color.rgb = mix(color.rgb, vec3(0.55, 0.70, 0.90), 0.45); } // 2. Enchantment Magic Glint Hack (Detects purple/blue magic and makes it shine) if (color.b > 0.55 && color.r > 0.40 && color.g < 0.35) { color.rgb *= 1.8; color.b += 0.2; } // 3. Day vs Night Color Grading if (lum < 0.22) { color.rgb *= vec3(0.55, 0.68, 1.05); // Dark atmospheric nights } else { color.r *= 1.10; color.g *= 1.04; color.b *= 0.90; // Warm cinematic days } // 4. Soft Contrast Curve color.rgb = pow(color.rgb, vec3(1.04)); // 5. Smooth Cinematic Vignette float dist = distance(texcoord, vec2(0.5, 0.5)); float vignette = smoothstep(0.88, 0.35, dist); color.rgb *= mix(0.78, 1.0, vignette); gl_FragColor = clamp(color, 0.0, 1.0);

}

composite.vsh:

#version 120 varying vec2 texcoord;

void main() { gl_Position = ftransform(); texcoord = gl_MultiTexCoord0.st; }

gbuffers_terrain.fsh:

#version 120 uniform sampler2D texture; uniform sampler2D lightmap; varying vec2 texcoord; varying vec2 lmcoord; varying vec4 glcolor;

void main() { vec4 texColor = texture2D(texture, texcoord); vec4 color = texColor * glcolor; vec4 light = texture2D(lightmap, lmcoord);

  • vec3 finalColor = color.rgb * light.rgb; // STRICT GEMSTONE DETECTION // We removed Iron, Quartz, Coal, and Debris to stop Endstone, Diorite, and Trees from glowing. bool isDiamond = (texColor.b > 0.65 && texColor.g > 0.50 && texColor.r < 0.20); bool isEmerald = (texColor.g > 0.65 && texColor.r < 0.15 && texColor.b < 0.20); bool isRedstne = (texColor.r > 0.65 && texColor.g < 0.15 && texColor.b < 0.15); bool isLapis = (texColor.b > 0.60 && texColor.r < 0.20 && texColor.g < 0.35); // The "texColor.b < 0.15" strictly protects Endstone from glowing like a flashbang bool isGold = (texColor.r > 0.70 && texColor.g > 0.60 && texColor.b < 0.15); // Apply glow ONLY if it perfectly matches a saturated gem if (isDiamond || isEmerald || isRedstne || isGold || isLapis) { // max() ensures it glows brightly in caves, but doesn't blow out to blinding white on the surface finalColor = max(finalColor, texColor.rgb * 1.15); } gl_FragColor = vec4(finalColor, color.a);

}

gbuffers_terrain.vsh:

#version 120 varying vec2 texcoord; varying vec2 lmcoord; varying vec4 glcolor; uniform float frameTimeCounter;

void main() { vec4 position = gl_Vertex;

  • // Strict green check so only leaves and grass wave bool isTrueLeaf = (gl_Color.g > gl_Color.r * 1.30) && (gl_Color.g > gl_Color.b * 1.20) && (gl_Color.g > 0.30); if (isTrueLeaf) { float wave = sin(frameTimeCounter * 1.8 + position.x * 1.2 + position.z * 1.2) * 0.025; position.x += wave; position.z += wave * 0.5; } gl_Position = gl_ModelViewProjectionMatrix * position; texcoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; lmcoord = (gl_TextureMatrix[1] * gl_MultiTexCoord1).xy; glcolor = gl_Color;

}

gbuffers_water.fsh:

#version 120 uniform sampler2D texture; uniform sampler2D lightmap; varying vec2 texcoord; varying vec2 lmcoord; varying vec4 glcolor;

void main() { vec4 texColor = texture2D(texture, texcoord); vec4 light = texture2D(lightmap, lmcoord); vec4 color = texColor * glcolor;

  • // Detect Water: Vanilla water has a biome tint (glcolor), glass and ice do not. bool isWater = (glcolor.r < 0.99 || glcolor.g < 0.99 || glcolor.b < 0.99); if (isWater) { // 100% erase the pixelated vanilla texture and use a pure, smooth cinematic color color.rgb = vec3(0.05, 0.40, 0.70); // Give it a smooth, perfectly even transparency color.a = 0.85; } // Apply shadows and lighting (so water still gets dark in caves) color.rgb *= light.rgb; gl_FragColor = color;

}

gbuffers_water.vsh:

#version 120 varying vec2 texcoord; varying vec2 lmcoord; varying vec4 glcolor; uniform float frameTimeCounter;

void main() { vec4 position = gl_Vertex;

  • // Subtle physical water wave float wave = sin(frameTimeCounter * 2.2 + position.x * 1.8 + position.z * 1.8) * 0.03; position.y += wave; gl_Position = gl_ModelViewProjectionMatrix * position; texcoord = (gl_TextureMatrix[0] * gl_MultiTexCoord0).xy; lmcoord = (gl_TextureMatrix[1] * gl_MultiTexCoord1).xy; glcolor = gl_Color;

}

if you want to help me you can... thanks

VignetteLowEndShader.zip
MC Vanilla, OptiFine, Iris, 26.1, 26.1.1, 26.1.2
Release 2026-07-29 Get

Requirements & install

How to use this shader in Minecraft
Shader loader
Iris OptiFine
Minecraft
26.1 – 26.1.2
Install folder
.minecraft/shaderpacks

How to install shaders

  1. Install a shader loader for your Minecraft version: Iris (with Sodium) or OptiFine.
  2. Download the shader pack .zip file (do not extract it).
  3. Put the .zip into the shaderpacks folder (.minecraft/shaderpacks).
  4. In game open Options → Video Settings → Shader Packs, select the pack and apply it.
Browse more: Iris shaders OptiFine shaders Shaders for 26.1.2 All shaders
Advertisement Remove ads with Premium →

You Might Also Like