须知:
模组目前无光影配置功能,但 Iris 的第三方分支 Iris-Starline 中带有内建的光影配置功能(稳定性不佳)。注意:第三方分支均遵循 LGPL-3.0 协议,请勿向官方反馈任何第三方分支的问题。
简介
Iris 是一个旨在与现有的 ShadersMod / Optifine 光影兼容的 Fabric 渲染Mod。
Iris 使用mixin,致力于兼容来自 ShadersMod/高清修复的光影,是 Fabric 下 OptiFabric + Optifine 光影解决方案的有效替代。
Iris 目前仍极具实验性,处于alpha阶段,如果您不是开发人员或不熟悉从源码编译Mod,那我们更推荐您使用 高清修复。
Iris 的目标是使 Fabric 兼容光影,而不是成为 Optifine 在 Fabric 下的替代品,Canvas Renderer 才是 Fabric 下渲染引擎的未来。
Iris 具有与 钠 (Sodium) 渲染优化的实验兼容实现。
加入 Iris Discord 服务器 以讨论并跟进最新开发。
当前状态
光影包 Sildur's Vibrant Shaders 与 XorDev's shaderpack 在 Iris 的引导下能在 Fabric 使用大部分功能,并且这两个光影包一直是作者开发的实验对象。但这并不意味着 Iris 能与大部分光影包兼容,大多数其他光影要么存在严重的渲染问题,要么根本不起作用。作者目前的工作重心是使 Sildur's Vibrant Shaders 与 XorDev's shaderpack 达到100%工作的程度,然后再将重点转移到其他光影包上。但一般说来,当作者解决这些光影包中的问题时,类似的光影包很可能也会开始正常工作。
作者正在与 JellySquid 合作,以使 钠 (Sodium) 和 Iris 兼容。到目前为止,在 自定义Sodium分支 和 实验性Iris分支 上有关于 Iris / 钠 (Sodium) 兼容实现的理论证明。尽管此理论已被证明可以使用并作为兼容性工作的参考,但将来可能会用更稳定的代码代替它。
未来展望
可期目标
首先,Iris 打算成为一个能被正确使用且具备广泛兼容的光影mod,而这两个目标要比其他任何事情都要重要,哪怕是性能体验也不在例外。这并不意味着不会有对性能方面的优化,优化肯定是被安排好了的,但就目前来说它们只是次要的。然而,在项目的早期阶段,作者完全愿意在各处牺牲一些框架,以便有一个合理的,没有错误的强大光影着色实现。
Iris 还打算效仿 OptiFine 光影包并实现完全相同的功能。在可期的未来当中,您应该能够通过 Iris 使用任意 Optifine 兼容的光影。
目前无意的开发方向
目前,作者无意添加 OptiFine 光影包的其他特性。其主要目标是与 OptiFine 达到功能同等的地位,也就是说,只要是在光影加载的领域中,从 OptiFine 到 Iris 的过渡是无缝的。
Iris 永远不会支持 Forge。作者只能将有限的时间献给 Iris,支持 Forge 只会让有限的时间从其他更重要和更有趣的事情上转移。而且 Forge的主要开发人员并不友善的事实在社区中早已人尽皆知,Forge 从未打算支持 Iris 所做的事情,维护 Forge 版本根本没有道理。
Iris 到底是什么?
Iris 是在 Fabric 上加载光影包的实验。在尝试将 karyonix的 ShadersMod 代码库移植到较新版本上取得了不值一提的进展之后,我们忍不住发问:从头开始在 Fabric上加载基础的光影包有多难?事实证明,这比作者预期的要困难得多!因此,Iris 诞生了。
Iris 是完全免费的开源软件,只要您遵守 GNU LGPLv3许可 (相当合理的)条款,就可以自由阅读,分发和修改代码。与 OptiFine 的闭源性质相比,这应该是相当不错的进步。
在大多数情况下,coderbot 是 Iris 的主要开发人员,开发目的是为了在编程中获得乐趣并获得更多的渲染实战经验。但是,对于使用OptiFine时不断出现的不兼容性和问题,作者也时长感到沮丧,而且作者也知道,他并不是唯一拥有这种经验的人。通过开发兼容的开源光影mod,其希望与一个社区建立合作关系,使玩家和开发人员不再需要担心OptiFine的不兼容性。
我能帮上什么忙?
目前,贡献代码的选择较为有限,而且作者还没有任何正式的系统。但是,如果您拥有一些渲染或光影着色知识,您也可以自由地创建项目并提交合并请求(Pull Request)。
常问问题
为什么我不直接使用 Canvas ?
Canvas 是一个由 Grondag 开发,适用于 Minecraft Fabric 且基于着色器的高级渲染器。这就提出了一个常见的问题:为什么不为 Canvas 做贡献呢?我已经研究过这种可能性,但是 Canvas 和 Iris 的目标实际上是完全不同的。
Canvas 的目标是创建一个新的光影及渲染实现方式,以高级图形功能等特性助力Mod开发者更好地发挥他们的才能,这极具前瞻性,前途可以说是十分光明的。但是,这个新的光影及渲染实现是有意设计为不能与现有的光影包一起使用。Canvas 希望摆脱加载现有光影包所带来的所有向后兼容性问题,以实现更好的性能并为Mod开发者提供更丰富的功能。有关更多信息,请参见 Canvas README 的“Why”部分。
与 Canvas 不同,Iris 有一个明显不同的目标 ── 即装即用地加载现有的光影包。从理论上讲,作者可以在 Canvas 的基础上进行此工作,但其个人更喜欢着手制作一个独立的光影模组,而不是花时间尝试了解 Minecraft 和 ShadersMod / OptiFine 之外的另一个复杂的渲染系统。
Canvas 的发展非常迅速,并且对诸如天空阴影之类的东西具有实验性的支持。Lumi Lights 是适用于 Canvas 的光影包,它具有泛光,体积光,水反等功能,如果您想获得比 Iris 当前所提供的效果中更稳定的体验,那么值得一试。
作者认为 Canvas 是一个很棒的项目,有朝一日它很可能成为 Fabric 的主要光影mod。Iris 是为仍希望使用现有 OptiFine光影包 的用户而设计的,哪怕有朝一日 Canvas 光影变得更加普及,我们也将始终有旧式光影包内容可用。
从长远来看,如果我们最终让 Iris 和 Canvas 竞争而不是 OptiFine 和 Canvas 竞争对每个人都更好,因为 Iris 和 Canvas 都来源自 Fabric 这个和谐的开源社区,至少在 Iris 和 Canvas 之间存在协作与互相帮扶的机会,这样的可能性根本不存在于 OptiFine。并且 Iris 也很有可能成为 Grondag 所开发的 FREX API 的一个子项目,这肯定会使 FREX 被越来越广泛的应用。
为什么我不应该使用现有的 OptiFabric + Optifine ?
另一个疑问是:由于 OptiFabric 和 Optifine 已经存在并且(看起来)工作正常,因此进行所有这些工作的意义何在?
OptiFabric 有着根本的缺陷 ── 它是一个巨大的骇入程式。作者将其称为传统意义上的骇客:OptiFabric 在实施上非常聪明,但它最终也只是一种优雅且较为临时的解决方案。实际上,OptiFabric 的大多数问题都是 OptiFine 本身的问题,无论 OptiFabric 多么出色,它都永远无法解决 OptiFine 的这些基础架构问题。
OptiFine 被创建为“ jar mod”。大家应该还记得大约十年前删除 META-INF 并将 mod 文件复制到 minecraft.jar 的安装经历吗?实际上,这就是每次您启动游戏时 Optifine 都会执行的操作。这意味着它直接修补了 Minecraft 的反编译版本,然后在运行时用其自己的修改版本覆盖了普通类(代码单元)。这意味着侵入性和不兼容是并存的。也许并不奇怪,Optifine 总是以其多样的问题而臭名昭著,这里有许多,许多,许多与其他mod不兼容的示例。
另一方面,Iris 是本机 Fabric Mod,它使用由 SpongePowered 精心制作的 Mixin 字节码修补系统驱动来实现精确代码注入。Mixin 是整个Fabric 改装社区的基础,并且是目前修补游戏的最佳方式。仅此一项就应有助于减轻困扰 OptiFine 的许多兼容性问题。
特别感谢
Vaerian,创建了出色且美观的Mod图标
daxnitro,karyonix和sp614x,创建并维护当前的光影mod
Mumfrey,参与创建了作者曾使用过的最好字节码修改工具
Fabric社区,用于提供支持和出色的工具
JellySquid,创建了第一个实际上可行的OptiFine替代品(就优化而言)
以及在 Iris 发展历程中过去,现在和将来的贡献者,是他们使得这个项目能不断向前发展