改动对比 - Iris Shaders - MC百科

简介

Iris 是一个旨在与现有的 ShadersMod / Optifine 光影兼容的 Fabric 渲染Mod。

Iris 使用mixin,致力于兼容来自 ShadersMod/高清修复的光影,是 Fabric 下 OptiFabric + Optifine 光影解决方案的有效替代。

您可以从 官网 获取安装器,该安装器已经包含了兼容的 钠 (Sodium),如果您是从别的地方获取的 Iris,钠 (Sodium) 可能需要额外安装。

Iris 的目标是使 Fabric 兼容光影,而不是成为 Optifine 在 Fabric 下的替代品,Canvas Renderer 才是 Fabric 下渲染引擎的未来。

Iris 具有与 钠 (Sodium) 渲染优化的实验兼容实现。

加入 Iris Discord 服务器 以讨论并跟进最新开发。

当前状态

Iris 有一个 1.16 的公共稳定版本,可以与自定义版本的钠一起使用(官网发布的安装器将会帮助您自动安装 钠 (Sodium)),还有一个 1.17 的公共测试版,目前不能与钠一起使用(目前,没有 1.17 的正式版本)。Iris 仍在大力开发中,每周都有新的改进,并且进展非常快!

除了官方的版本以外,还存在一个 能配置光影的版本,官方版本也存在相关 PR。

光影包 Sildur's Vibrant Shaders 与 XorDev's shaderpack 在 Iris 的引导下能在 Fabric 使用大部分功能,并且这两个光影包一直是作者开发的实验对象。但这并不意味着 Iris 能与大部分光影包兼容,大多数其他光影要么存在严重的渲染问题,要么根本不起作用。作者目前的工作重心是使 Sildur's Vibrant Shaders 与 XorDev's shaderpack 达到100%工作的程度,然后再将重点转移到其他光影包上。但一般说来,当作者解决这些光影包中的问题时,类似的光影包很可能也会开始正常工作。

与钠的兼容性是一个正在进行的项目。在几个月的时间里,作者一直在与 JellySquid 聊关于兼容性的问题,为了更好地适应 Iris,已经在钠中实施了许多重构和改进。就目前来说,虽然仍然需要 钠的分支,但作者的目标是将来不需要它。Iris 的官方下载包括此修改版的钠,以提高性能。

目前支持的光影

XorDev's shaderpacks

Sildur's Vibrant Shaders

Sildur's Enhanced Default(暂不支持附魔光芒)

Complementary Shaders

BSL Shaders

AstraLex Shader(BSL Edit)(暂不支持水反、天气;雨天不会被正确渲染)

SEUS v11(普遍在天气方面存在漏洞,可能不兼容某些硬件)

SEUS renewed(可能不兼容某些硬件)

Skylec Shader(水下和天气有渲染bug)

未来展望

目标

这些是 Iris 的目标。尽管开发已经迈入正轨,但由于 Iris 尚未完成,这些目标并没有完全实现。

性能提升。当与诸如 钠 (Sodium) 之类的优化模块配对时,Iris 应该能充分利用您的显卡。

稳定至上。Iris 在其代码的实施中应尽量做到无问题。

模组兼容性。Iris 应尽最大努力与修改后的环境兼容。

向后兼容性。所有现有的 ShadersMod / OptiFine 光影包应该能直接应用到 Iris,无需任何修改。只要是在光影加载的领域中,从 OptiFine 到 Iris 的过渡是无缝的。

光影包开发人员的工具。一旦 Iris 完全支持光影渲染管道的现有功能并且合理地实现并没有错误,我们希望通过向光影渲染管道添加新功能来扩展 Minecraft 光影包所能触及的。无限的颜色缓冲区、直接体素数据访问和花哨的调试 HUD 是我希望在未来添加的一些功能示例。

一个具有良好数据结构的代码库。我希望使用 Iris 代码总体上是一种愉快的体验。

向未知 Minecraft 版本迈进。这更像是一个长期目标,但如果可以使大部分 Iris 从游戏版本这个框架中独立开来,那么移植到新版本应该是直接而快速的。这在理论上也适用于另一个方向,尽管因为 1.8.9(和类似的旧版本)不存在钠而导致 Iris 目前在这些版本上不是很实用,但我们在新版本上的迁移应该会比 Optifine 快很多。

开发思路

首先,Iris 打算成为一个能被正确使用且具备广泛兼容的光影mod,而这两个目标要比其他任何事情都要重要,这意味着性能方面将不会成为主要的开发内容。这并不意味着不会有对性能方面的优化,靠如今的 钠 (Sodium) 我们已经有了极好的性能表现。如今,项目已然迈入正轨,作者将开始对一些框架做出适当的取舍,以便有一个合理的,没有错误的强大光影着色实现。

其次,在保证光影能正常加载的基础上,我们将开始添加更多的光影开发工具和性能补丁,这对于我们超越 Optifine 具有重要意义,哪怕我们目前在性能和对最新版本的更新速度来看我们已然实现超越,但功能的匮乏依然是我们的短板。

Iris 到底是什么?

Iris 是在 Fabric 上加载光影包的实验。在尝试将 karyonix的 ShadersMod 代码库移植到较新版本上取得了不值一提的进展之后,我们忍不住发问:从头开始在 Fabric上加载基础的光影包有多难?事实证明,这比作者预期的要困难得多!因此,Iris 诞生了。

Iris 是完全免费的开源软件,只要您遵守 GNU LGPLv3许可 (相当合理的)条款,就可以自由阅读,分发和修改代码。与 OptiFine 的闭源性质相比,这应该是相当不错的进步。

在大多数情况下,coderbot 是 Iris 的主要开发人员,开发目的是为了在编程中获得乐趣并获得更多的渲染实战经验。但是,对于使用OptiFine时不断出现的不兼容性和问题,作者也时长感到沮丧,而且作者也知道,他并不是唯一拥有这种经验的人。通过开发兼容的开源光影mod,其希望与一个社区建立合作关系,使玩家和开发人员不再需要担心OptiFine的不兼容性。

我能帮上什么忙?

Iris Discord 服务器正在寻找愿意提供支持和管理服务器的人!如果您想申请,请向@IMS#7902 发送消息。

我们赞赏对开放 PR 的代码进行审查的行为!这有助于在作者亲自查看 PR 之前解决重要的问题。

也欢迎通过 PR 贡献代码!如果您正在开发一个 大型/重要 的功能,那么事先讨论您的计划通常是个好主意,以确保您的工作不会与现有内容冲突而导致功亏一篑。

常问问题

为什么我不直接使用 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 的许多兼容性问题。

为什么 Iris 不会有兼容 Forge 的版本?

主要原因有如下几点:

Iris 的出色性能主要来源自 钠 (Sodium),而 钠 (Sodium) 的开发组并没有支持 Forge 的意向。这是一个相当有年头的故事,往简单的方向来说:当 JellySquid 为 Forge 开发优化模组时,Forge 的主要开发人员非常敌视她,甚至宣称这些优化作为 Core-Mod 是个巨大的骇入程式,从那时起 Forge 方面就没有做出任何值得信赖的举动来尝试修复与 Fabric 社区的裂痕,哪怕到目前为止,钠 (Sodium) 的光彩照人并没有让他们有承认自己错误的打算。

作者的时间有限,尝试合理地支持 Forge(以及 Forge 本身)可用的所有模组是一项巨大的工作。这意味着只能将有限的时间献给 Iris,支持 Forge 只会让有限的时间从其他更重要和更有趣的事情上转移。而且 Forge的主要开发人员并不友善的事实在社区中早已人尽皆知,Forge 从未打算支持 Iris 所做的事情,维护 Forge 版本根本没有道理。与作者同样,我相信很多人不会在较为现代的高版本的游戏中使用 Forge, Forge 的蛮横霸道只会使其成为 Minecraft 社区中不断缩小的部分。

Forge 工具链并非是为如同 Iris 这样需要向游戏源码打很多补丁的模组而设计的。哪怕迁移是可能的,但 Fabric 和 Quilt 更适合 Iris 这样的模组。Fabric 的出现和 OptiFine 替代品的最初出现几乎同时发生,我们相信这并非巧合。

作者为什么要制作 Iris?

Iris 的创建是为了填补作者在 Minecraft 定制和图形增强社区中看到的一个空白:缺乏一个开源光影 mod 可以让我在较为现代的高版本游戏上加载作者最喜欢的光影包,并同时保持性能和模组包的兼容性。OptiFine 是当前用于加载光影包的主要 mod,它具有严格的许可限制,坚决阻碍任何类型的修补,并且因与作者喜欢的 mod 存在兼容性问题而臭名昭著。它也与目前存在的最佳渲染优化模组 钠 (Sodium) 相互不兼容。至于 ShadersMod 从未更新过 1.12,它缺乏对许多高版本流行的光影包的支持。所以作者创建了 Iris,试图解决这些问题,并尝试处理光影包渲染中很多存在已久的问题。

作者以满足自身需求为起点,随即创造了一个具有良好兼容性和修补潜力的面向性能的光影 mod。在作者的机器上,Iris 与 钠 (Sodium) 配合使用时提供了出色的性能,最终使作者预见到完全有可能在 钠 (Sodium) 的优化加持下使用光影包,而不是像往常一样只是定期打开光影以拍摄漂亮的游戏屏幕截图,然后在作者厌倦了丢帧后将它们关闭。当然,事实证明,作者并不是唯一一个从 Iris 的开发中受益的人,这就是为什么作者决定将它作为开源 mod 向公众发布。

Canvas 是另一个已经获得一些关注的图像处理工具。然而,它对作者来说最大的缺点是它并不支持作者想要使用的现有流行的 OptiFine 光影包。这是因为它为光影包使用了一种与现有格式不兼容的新格式,以实现其与众多mod实现渲染着色集成等许多目标。虽然 Canvas 现在有一些不错的光影包,例如Lumi Lights,但作者仍然希望可以选择使用专为 OptiFine 设计的现有光影包。在Op和Canvas之间的光影包是不可互换的,就像你不能把《最后的晚餐》的副本交给想要蒙娜丽莎副本的人一样. 它们都是伟大的艺术品,但你绝对不能只是把一个换成另一个。话虽如此,如果您喜欢 Canvas 可用的光影包,那就太好了!Canvas 和 Iris 都是使用 Minecraft 享受光影的完美方式。

特别感谢

TheOnlyThing和Vaerian,创建了出色且美观的Mod图标

Mumfrey,参与创建了 Iris 和 钠 (Sodium) 中使用到的字节修补系统

Fabric 和 Quilt 项目,支撑起像 Iris 为游戏制作许多补丁这样的 mod 的存在

JellySquid,创建了目前存在的 Minecraft 最佳渲染优化模组 钠 (Sodium),并使其开源

Dr. Rubisco,维护了目前 Iris 使用的网站

Iris 的支持和管理团队,帮作者处理了玩家的帮助请求以便作者能全身心投入 Iris 的开发之中

daxnitro,karyonix和sp614x,创建并维护当前的光影mod

JellySquid,创建了第一个实际上可行的OptiFine替代品(就优化而言)

以及在 Iris 发展历程中过去,现在和将来的贡献者,是他们使得这个项目能不断向前发展