低端晕影光影 – VignetteLowEndShader

12次阅读
没有评论

共计 3810 个字符,预计需要花费 10 分钟才能阅读完成。

低端晕影光影 - VignetteLowEndShader

一款轻量级、电影级的 Minecraft 光影,特色包括宝石矿石发光效果、平滑水流以及基于时间的悠然一派光照。

资源介绍

请阅读。

这是一个专为极低配置电脑设计的轻量级光影,支持树叶摇曳、水面波动、平滑光照以及水体效果。下界与末地的光照表现良好,宝石矿石(如红石、钻石、青金石、金矿)会发出辉光;其余部分未作处理,因为我并未基于方块 ID 而是依据颜色进行识别——因此,凡颜色接近上述宝石色调的物体,均会发光……您还会注意到场景四周存在一种白色墙体状结构,这也是个问题;我曾尝试修复,但效果不佳……水下可视范围清晰但较近,且带有阴影效果……您或许还会发现末影人和蜘蛛没有眼睛,其材质存在轻微贴图错乱;作者也尝试过修复,结果反而更糟;但请务必切记:不要直视末影人。此外草方块同样具有波动效果,问题在于其边缘存在漏光现象,且摇曳时会产生撕裂,导致角落处可直接透视其内部……本光影不包含华丽的云层或阳光效果,且熔岩下方亦可清晰可见……我并非模组开发者或程序员,但希望您能喜欢它……若您恰好是程序员,修复这些问题完全不成问题……我会尽量保留源代码……开发本光影的初衷源于我自身的硬件限制——我的电脑性能实在过于孱弱……全部代码均由 Gemini 编写……若您愿意施以援手,将不胜感激……感谢您的关注……

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. 消除白色地平线墙体
    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. 附魔魔法闪光效果(识别紫色 / 蓝色魔法特效并增强辉光)
    if (color.b > 0.55 && color.r > 0.40 && color.g < 0.35) {
    color.rgb *= 1.8;
    color.b += 0.2;
    }

    // 3. 昼夜色彩分级
    if (lum < 0.22) {
    color.rgb *= vec3(0.55, 0.68, 1.05); // 暗调氛围的夜晚
    } else {
    color.r *= 1.10;
    color.g *= 1.04;
    color.b *= 0.90; // 温暖电影感的白昼
    }

    // 4. 柔和对比度曲线
    color.rgb = pow(color.rgb, vec3(1.04));

    // 5. 柔和电影感暗角
    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;

    // 严格识别宝石矿石
    // 已排除铁、石英、煤炭及碎石,防止末地石、闪长岩及树木误发光。

    bool isDiamond = (texColor.b > 0.65 && texColor.g > 0.50 && texColor.r 0.65 && texColor.r < 0.15 && texColor.b 0.65 && texColor.g < 0.15 && texColor.b 0.60 && texColor.r < 0.20 && texColor.g < 0.35);

    //“texColor.b 0.70 && texColor.g > 0.60 && texColor.b < 0.15);

    // 仅当颜色完全匹配高饱和度宝石时才应用辉光效果
    if (isDiamond || isEmerald || isRedstne || isGold || isLapis) {
    // max() 确保洞穴内辉光明亮,同时避免地表过曝成刺眼纯白
    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;


  • // 严格绿色检测,确保仅树叶与草方块产生波动
    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;


  • // 识别水体:原版水具备生物群系色调(glcolor),而玻璃与冰则无。
    bool isWater = (glcolor.r < 0.99 || glcolor.g < 0.99 || glcolor.b < 0.99);

    if (isWater) {
    // 完全消除原版像素化纹理,采用纯净、平滑的电影感配色
    color.rgb = vec3(0.05, 0.40, 0.70);

    // 赋予其平滑且均匀的透明度
    color.a = 0.85;
    }

    // 应用阴影与光照(确保水体在洞穴中仍会变暗)
    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;


  • // 微妙的物理感水波
    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;

}

版本信息

资源版本 Minecraft 版本 加载器 发布时间
8533527 最新 26.1、26.1.1、26.1.2 iris、optifine、vanilla 2026-07-31 04:41
相关文件下载地址

更新日期:2026-07-31

作者信息: 资源作者

下载链接: 低端晕影光影 - VignetteLowEndShader

正文完
 0
xingmo
版权声明:本文于2026-09-15转载自资源作者,共计3810字。
转载提示:此文章非本站原创文章,若需转载请联系原作者获得转载授权。
评论(没有评论)