第 4 版采用了重新设计的方法!!
注意:本模组的配置文件名为 "sel.cfg" 或 "sel-client.toml" 在运行 Smooth Entity Light(平滑实体光照)之前,请确保 Java 至少能分配 2GB 的内存 (RAM) 第 4 版采用了重新设计的方法!! 自模组化 Minecraft 诞生以来,Atomic Stryker 的动态光照一直是事实上的实体光照系统标准。然而,在我测试新的模组包 Edge of Death 时,我注意到玩家手持火把时,随着玩家移动,光源会产生一种“闪烁/跳动”的效果(见下方的 GIF)。我将其与 Optifine 的系统进行了测试,发现其实现没有同样的问题。然而,我们无法通过 CurseForge 访问 Optifine,但我还注意到他们实现中的一个问题:他们的动态光照可以穿透实心方块!本模组以非常高效的方式解决了所有这些问题。此外,实体的计算使用 Java 的并行流 (Parallel Streams) 进行,因此如果你的 CPU 有多个核心(如今谁没有呢?),本模组的运行速度会更快! 另外,在研读源代码的过程中,我发现一种称为“四边形翻转 (Quad Flipping)”的技术从未被 Minecraft 实现。我借此机会修复了该问题(详见下方的图片解释)。 兼容性 完全兼容 Phosphor (Forge) 不兼容 Optifine。它不会导致崩溃,但如果你尝试同时使用,将会出现意外行为。 类似模组(如果以下两个都不符合你的需求,你才需要 Smooth Entity Lights) Atomic Stryker's Dynamic Lights Optifine(它也包含一种动态光照类型) 优点总结: 平滑光照(移动实体光源时无闪烁效果) 亮度取决于距光源的直线距离(而非方块跳跃次数) 光源发出圆形亮度区域(而非 Minecraft 默认的“菱形”图案) 光照遵循 Minecraft 方块不透明度值(光照无法穿透实心方块) 仅在实体移动或发生变化时才重新计算亮度(快速) 实体光照作为第三个光照贴图(叠加在天空光和方块光之上)持有,并针对区块缓存在内存中以进行快速渲染 实体每帧更新一次(以实现平滑光照),但这些更新在一个专用线程中执行。 新的游戏内配置界面(无需再编辑文本文件) v4 设计理念 每次区块重建时,区块网格都会被上传到 GPU 板载内存中。这就是为什么原版光照更新如此罕见的原因(每更新一个区块才更新一次)。这通常是好的,因为构建区块和原版光照更新既昂贵又缓慢。本模组所做的就是在普通 RAM 中持有一个光照值缓存,实时更新这些值,然后(大致)每帧将这些值直接更新到 GPU RAM 中的区块网格的正确位置。这使得场景中的光照值可以频繁更新,而无需重建整个场景或区块。网格没有移动,只有光照发生了变化! 火把光 / 手电筒光 / 泛光灯 该物品可配置,默认为末影之眼,但它会朝你注视的方向投射锥形光束。 四边形翻转 (Quad Flipping) Minecraft 一直以来的外观(所有四边形以相同方向渲染会导致阴影怪异): 根据角落的亮度翻转四边形,会使阴影渲染得稍微更正确一些: 来自方块的阴影 你可能更喜欢 Smooth Entity Light 而不是 Optifine 的一个原因: Optifine 动态光照下,盒子里的火把(当你看到问题时请留言): 下方:左侧为 Smooth Entity Light,右侧为 Dynamic Lights。这展示了“闪烁”效果的消除,这也是本模组最初的动机。 Dynamic Lights 和 Smooth Entity Light 发出的光照“形状”是不同的。以下图片演示了这种差异。在决定将哪个模组包含在你的模组包中时,请考虑你想要哪种形状。 游戏内配置 在创造模式下,使用以下命令来更新配置文件。 /sel hand 0 - 将当前手持物品设置为不发光 /sel hand 15 - 将当前手持物品设置为全亮度发光(将数字更改为 1 到 15 之间的任何整数,将改变该物品发出的光照量) /sel water - 切换当前手持物品是否“防水”。即,不会被水熄灭 /sel flood - 切换当前手持物品是否像泛光灯/手电筒一样工作 许可证 模组包作者可以自由使用从 CurseForge/Twitch 下载的 Smooth Entity Light 模组的二进制分发文件,无需额外许可。
在鱼乐云资源中心浏览该资源,登录后可一键安装到你的游戏服务器。