简介
由 Tuinity 作者 Leaf 开发的光照优化 Fabric & Forge 通用Mod,对 MOJANG 的光照代码进行了完整的重写。
模组兼容性及相关结论
不出所料,最初为基于 Bukkit 的服务器设计的 Minecraft 的前沿变化在 Forge 和 Fabric 等平台上存在模组兼容性问题。任何依赖于直接连接到光照引擎的模组都会被 Starlight 破坏,因为 Starlight 是对引擎的完全重写。您可以在此处找到损坏的模组的活动列表:不兼容mod链接
上面的问题跟踪器当然不是 100% 完整的,因为它依赖于在那里报告这些问题的人。并且鉴于作者不太可能修复这些不兼容性问题,所以更别指望很多人会费心于提交这些问题。
Starlight 是目前 Minecraft 中最快的光照引擎。然而,这并非没有代价。它会破坏一些模组,并揭示客户端的一些光照延迟问题。
作者建议至少不要使用原版的光照引擎,因为 磷(Phosphor) 是一个经过社区验证的光照引擎修改,它修复了像 MC-162253 这样的性能问题。所以您的选择范围至少应该缩减为 磷(Phosphor) 或 Starlight。在模组兼容性方面,Phosphor 会更好,因为它只是修改了光照引擎而不是重写。不过,根据您的计算机配置和世界地形, Starlight 可能更具有优势。综上所述,作者建议测试这两者对您使用情境的影响,并根据需要选择您所钟爱的那个。
但是,对于更大规模(大量玩家区块加载)的服务器,此建议又会大相径庭。如果您意识到了光照引擎的性能问题后,你会发现,大型服务器中的很多问题都可以归因于光照之上。例如因光照引擎而引发持续不断的卡顿,或是服务器因卡顿而重新启动,而挂起的灯光更新将因此而丢失,导致照明中断。Starlight 解决了这个问题,首先是它本身的速度很快,因此不太可能造成卡顿,其次是在有待处理的光照更新时阻止保存区块。更大规模的服务器也会有更多的人在探索,这会给区块生成带来更大的压力,而 Starlight 将对此提供帮助。
所以作者认为,如果您追求高性能的 Minecraft 体验,Starlight 将更好地处理大型服务器上的光照更新,并且取决于各种因素(见本小节第一段)Phosphor 可能更适合小型和单人游戏。如需更多Mod改装体验,请仔细检查您的模组是否兼容。
开发目的
原版光照引擎的性能简直糟透了。现有的修改,例如 磷(Phosphor) 或 Paper 光照引擎修改(Paper 的部分更改包含了 Phosphor 的更改),虽有尝试但终究无力回天。
磷(Phosphor) 对现有光照引擎的优化相当出色,但是遗憾的是,它的优化将近碰到了原版代码的天花板,现如今几乎没有进一步优化的空间了。
Paper 继承了磷(Phosphor),因而也遇到了同样地问题——改无可改,所以它选择更改原版代码,然而,Paper 所作出的修改有着技术上的困难,在实际应用中,光照显得颇为间断、不连续。以下是图片:

而下图则展示了比较合理的光照样貌(使用了Starlight):

实际上,在原版代码的基础上优化光照引擎就是天方夜谭——不如推倒重写。
性能测试
伊始
数据胜于雄辩。我们将性能指标分为三种测试。[世界生成/大平台光照更新/荧石]
无论在下面哪种测试中,得益于完整重写的 Starlight ,区块生成速度都难以置信地快,远远超出磷(Phosphor)所能优化的范围。
请注意,作者认为您可能无法在此模组上看到客户端的FPS显着提升。这主要是因为由于光照引擎得到了质的飞跃,客户端每帧能渲染更多区块,而区块生成速度的提高也会对 FPS 产生负面影响。但即便如此,在不太理想的硬件上生成放大化世界时,我们还是能够看到非常显着的区块生成速度提升和FPS飞跃。
由于天空光照的控制方式不同,Starlight 将重新点亮原版光照引擎点亮的区块,并且新的天空光照数据与原版光照格式不兼容。
如果您要将 Starlight 与原版光照引擎进行比较,应注意上述几点 ── 重新加载区块总是比直接加载它们更耗时。
所以在您正式对 Starlight 的性能做出测评时,应先让区块重载一遍以适应新光照引擎的格式。
生成测试

地图种子: vanillakekw
CPU: Intel i7-8750H @ 2.20GHz (已关闭睿频加速)
从 (0,0) 开始同步生成 101x101 个区块 , 以 (-10000, -10000) 为中心预渲染 101x101 个区块
强制让光照执行器运行在单线程上,通过工具 visualvm 度量 CPU 线程时间,您可以轻松地测量出 CPU 在光照上的性能表现。
我们已经在 Tuinity 对 Starlight 进行了足够多的测试
Starlight 大约需要 7 秒才能产生光,而原版的光引擎大约需要 220 秒,磷(Phosphor) 耗时约 170 秒。
与目前可用的最佳模组 磷(Phosphor) 相比,Starlight 在为区块生成光时快约 25 倍 ,比原版光引擎快约 35 倍 。
大平台光照更新测试
以下是一个图表,详细说明了在Y = 254的大平台上破坏并将块放在y = 0的大平台上的灯光更新速度(越低越好):

荧石更新测试
以下是一个图表,详细说明了一个简单的荧石在放置/破坏后的光照更新时间(越低越好):
