暂无管理组..
暂无编辑组..
暂无开发组..
简介
Iris Shaders 是一个旨在与现有的 ShadersModCore / 高清修复 光影兼容的 Fabric 渲染模组。
Iris Shaders 使用 Mixin,致力于兼容来自 ShadersModCore / 高清修复 的光影,是 Fabric 下 OptiFabric + Optifine 光影解决方案的有效替代品。
您可以从 官网 获取安装器,该安装器已经包含了兼容的 钠 (Sodium)。注:若使用下载器安装会自动装好 钠 (Sodium),请不要再次手动安装。
Iris Shaders 的目标是使 Fabric 兼容光影,如果你正在寻求一个强大且高效的渲染管线工具,Canvas Renderer 才是 Fabric 下相关领域的未来。
加入 Iris Discord 服务器 以同社区一道讨论 Iris 的未来,并跟进最新开发进度。
当前状态
Iris Shaders 已有 1.16.5 至最新版 MC 的公共稳定版本,可以与钠的官方版本一起使用。Iris Shaders 仍在大力开发中,基本每周都有新的改进,并且进展非常快!
1.3.0 以上版本的 Iris Shaders 已支持 PBR 纹理。
Iris Shaders 目前应该与大部分遵循规范的光影兼容,请随时在 GitHub 报告您遇到的各类问题。
Iris Shaders 从未打算支持 Forge,但您可以尝试使用由第三方开发者移植的 Oculus。注:请不要向 Iris 报告 Oculus 的问题!
如果您同时安装了飞轮,请安装 Iris & Oculus Flywheel Compat,它可以强制使用飞轮的优化,但保留本模组的光影。
版本使用须知
请尽可能用最新版,无论是最早的 Patreon 内测还是现在的公开构件,他们支持的版本都是 1.16+,且旧版不会提供任何支持。
自 1.2.0 起支持对光影进行配置,更早的版本可以尝试 Justsnoopy30 的分支。
1.1.3 正式与 CaffeineMC 的 钠 (Sodium) 兼容,1.1.2 及之前需要修改版的 Sodium 分支。
1.0.0 版本之前尽量使用 Sildur's Vibrant Shaders 或 XorDev 创作的光影,这是早期版本的支持目标。
光影参考标准
随着 Iris 功能的逐渐完善,我们不再提供一个确切的支持清单,大部分遵循合理编程逻辑规范的光影都应在有限的预期内正确运行,以下光影由作者主动支持 Iris,仅供参考。
Sildur's Vibrant Shaders (Curseforge)(推荐,Iris 最初的支持对象);
BSL Shaders 及其分系 (如 Complementary Shaders);
SEUS V11 及其之后 & SEUS Renewed & SEUS PTGI(但 HRR 2.1,HRR Test 3 需要更改一些配置);
Red Hat(正在经历重写,可用旧版本);
MakeUp - Ultra Fast(只有 8.5 以上的版本可以使用);
Chocapic v4 - v6 及其分支;
目标
以下是我们为 Iris 发展制定的一些目标,这些内容可能部分实现,也可能在实现的路上。
性能提升。当与诸如钠之类的优化模块搭配时,Iris 应该能充分利用你的显卡。
稳定至上。Iris 在其代码的实施中应尽量做到无问题。
模组兼容性。Iris 应尽最大努力与修改后的环境兼容。
向后兼容性。所有现有的 ShadersMod / OptiFine 光影包应该能直接应用到 Iris,无需任何修改。只要是在光影加载的领域中,从 OptiFine 到 Iris 的过渡是无缝的。
光影包开发人员的工具。Iris 将完全支持光影渲染管线的现有功能,并无错误地合理实现。我们一直希望通过向光影渲染管线添加来扩展 Minecraft 光影包所能触及的新功能。无限的颜色缓冲区、直接体素数据访问和花哨的调试 HUD 都是我们希望在未来添加的一些功能示例。
一个具有良好数据结构的代码库。开发人员使用 Iris 代码总体上是一种愉快的体验。
向未知 Minecraft 版本迈进。这更像是一个长期目标,但如果可以让 Iris 的大部分代码从游戏版本这个框架中独立开来,那么移植到新版本应该是直接而快速的。这在理论上也适用于另一个方向,尽管因为 1.8.9(和类似的旧版本)不存在钠而导致 Iris 目前在这些版本上不是很实用,但我们在新版本上的迁移应该会比 Optifine 快很多。
Iris 到底是什么?
Iris 是在 Fabric 上加载光影包的实验。在尝试将 karyonix 的 ShadersMod 代码库移植到较新版本上取得了不值一提的进展之后,我们忍不住发问:从头开始在 Fabric 上加载基础的光影包有多难?事实证明,这比作者预期的要困难得多!因此,Iris 诞生了。
Iris 完全自由及开源,只要您遵守 GNU LGPL v3.0 (相当合理的)条款,就可以自由阅读,分发和修改代码。与 OptiFine 的闭源性质相比,这应该是相当不错的进步。
在大多数情况下,coderbot 是 Iris 的主要开发人员,开发目的是为了在编程中获得乐趣并获得更多的渲染实战经验。但是,对于使用 OptiFine 时不断出现的不兼容性和问题,作者也时常感到沮丧,而且作者也知道,他并不是唯一拥有这种经验的人。通过开发兼容的开源光影模组,其希望与一个社区建立合作关系,使玩家和开发人员不再需要担心 OptiFine 的不兼容性。
我能帮上什么忙?
Iris Discord 服务器正在寻找愿意提供支持和管理服务器的人!如果您想申请,请向 @IMS#7902 发送消息。
我们赞赏对开放 PR 的代码进行审查的行为!这有助于在作者亲自查看 PR 之前解决重要的问题。
也欢迎通过 PR 贡献代码!如果您正在开发一个 大型/重要 的功能,那么事先讨论您的计划通常是个好主意,以确保您的工作不会与现有内容冲突而导致功亏一篑。
常问问题
为什么我不直接使用 Canvas ?
Canvas 是一个由 Grondag 开发,适用于 Minecraft Fabric 且基于着色器的高级渲染器。这就提出了一个问题:为什么不为 Canvas 做贡献呢?我已经研究过这种可能性,但是 Canvas 和 Iris 的目标实际上是完全不同的。
Canvas 的目标是创建一个新的光影及渲染实现方式,以高级图形功能等特性助力模组开发者更好地发挥他们的才能,这极具前瞻性,前途可以说是十分光明的。但是,这个新的光影及渲染实现是有意设计为不能与现有的光影包一起使用。Canvas 希望摆脱加载现有光影包所带来的所有向后兼容性问题,以实现更好的性能并为模组开发者提供更丰富的功能。有关更多信息,请参见 Canvas README 的“Why”部分。
与 Canvas 不同,Iris 有一个明显不同的目标 ── 即装即用地加载现有的光影包。从理论上讲,作者可以在 Canvas 的基础上进行此工作,但其个人更喜欢着手制作一个独立的光影模组,而不是花时间尝试了解 Minecraft 和 ShadersMod / OptiFine 之外的另一个复杂的渲染系统。
Canvas 的发展非常迅速,并且对诸如天空阴影之类的东西具有实验性的支持。Lumi Lights 是适用于 Canvas 的光影包,它具有泛光,体积光,水反等功能,如果您想获得比 Iris 当前所提供的效果中更稳定的体验,那么值得一试。
作者认为 Canvas 是一个很棒的项目,有朝一日它很可能成为 Fabric 的主要光影模组。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 并将模组文件复制到 minecraft.jar 的安装经历吗?实际上,这就是启动游戏时 Optifine 都会执行的操作。这意味着它直接修补了 Minecraft 的反编译版本,然后在运行时用其自己的修改版本覆盖了普通类(代码单元)。这意味着侵入性和不兼容是并存的。也许并不奇怪,Optifine 总是以其多样的问题而臭名昭著,这里有许多,许多,许多与其他模组不兼容的示例。
另一方面,Iris 是客户端 Fabric 模组,它使用由 SpongePowered 精心制作的 Mixin 字节码修补系统驱动来实现精确代码注入。Mixin 是整个Fabric 改装社区的基础,并且是目前修补游戏的最佳方式。仅此一项就应有助于减轻困扰 OptiFine 的许多兼容性问题。
为什么 Iris 不会有兼容 Forge 的版本?
主要原因有如下几点:
Iris 的出色性能主要来源自钠,而钠的开发组并没有支持 Forge 的意向。这是一个相当有年头的故事,往简单的方向来说:当 JellySquid 为 Forge 开发优化模组时,Forge 的主要开发人员非常敌视她,甚至宣称这些优化作为 Core-Mod 是个巨大的骇入程式,从那时起 Forge 方面就没有做出任何值得信赖的举动来尝试修复与 Fabric 社区的裂痕,哪怕到目前为止,钠的光彩照人并没有让他们有承认自己错误的打算。
作者的时间有限,尝试合理地支持 Forge(以及 Forge 本身)可用的所有模组是一项巨大的工作。这意味着只能将有限的时间献给 Iris,支持 Forge 只会让有限的时间从其他更重要和更有趣的事情上转移。而且 Forge 的主要开发人员并不友善的事实在社区中早已人尽皆知,Forge 从未打算支持 Iris 所做的事情,维护 Forge 版本几乎没有道理(但 Iris 有非官方 Forge 移植版,如果你想在 Forge 上使用 Iris,可使用 Oculus)。
Forge 并非是为如同 Iris 这样需要向游戏源码打很多补丁的模组而设计的。哪怕迁移是可能的,但 Fabric 和 Quilt 更适合 Iris 这样的模组。Fabric 的出现和 OptiFine 替代品的最初出现几乎同时发生,我们相信这并非巧合。
作者为什么要制作 Iris?
Iris 的创建是为了填补作者在 Minecraft 定制和图形增强社区中看到的一个空白,即“缺乏一个开源光影模组,可以让我在较为现代的 MC 版本上加载最喜欢的光影包,并同时保持性能和模组包的兼容性。“
正如我们所知,OptiFine 是当前用于加载光影包的主要模组,但它却有相当严格的许可限制,坚决阻碍社区任何形式的修补,并且因与大量模组存在兼容性问题而臭名昭著。它也与目前存在的最佳渲染优化模组钠相互不兼容。且 ShadersMod 从未更新过 1.12,它缺乏对许多高版本流行的光影包的支持。所以作者创建了 Iris,试图解决这些问题,并尝试处理光影包渲染中很多存在已久的问题。
就这样,作者以满足自身需求为起点,随即创造了一个具有良好兼容性和修补潜力且面向性能的光影模组。在作者的机器上,Iris 与 钠配合使用时提供了出色的性能,最终使作者预见到完全有可能在钠的优化加持下使用光影包,而不是像往常一样只是定期打开光影以拍摄漂亮的游戏屏幕截图,然后在厌倦了掉帧后再将它们关闭。当然,事实证明,作者并不是唯一一个从 Iris 的开发中受益的人,这就是为什么作者决定将它作为开源模组向公众发布。
至于 Canvas ,这是另一个已经获得一些关注的图像处理工具。然而,它对作者来说最大的缺点是不支持作者想要使用的现有流行的 OptiFine 光影包。这是因为它为光影包使用了一种与现有格式不兼容的新格式,以实现其与众多模组实现渲染着色集成等许多目标。虽然 Canvas 现在有一些不错的光影包,例如 Lumi Lights,但作者仍然希望可以选择使用专为 OptiFine 设计的现有光影包。在 OptiFine 和 Canvas 之间的光影包是不可互换的,就像你不能把《最后的晚餐》的副本交给想要蒙娜丽莎副本的人一样. 它们都是伟大的艺术品,但你绝对不能只是把一个换成另一个。话虽如此,如果您喜欢 Canvas 可用的光影包,那就太好了!Canvas 和 Iris 都是在 Minecraft 享受光影的完美方式。
Iris 是如何提升你的游戏帧率的
仅原版
目前版本的 Minecraft 代码库非常古老,许多人认为其迫切需要重写,特别是图形渲染部分。1.15 中引入的 Blaze 3D 渲染引擎是对解决这个问题的一个尝试,但从许多方面上来说反而加重了问题。在 1.17 中,Minecraft 转而使用 OpenGL Core 3.2 和 Java 16,但目前并没有显著优化性能。在 1.17 以下版本中,Minecraft 并不原生支持光影,就算 1.17 版本发布以后,其对光影的支持依旧非常有限。但是,Minecraft 以其低开销极简风的画面著称,这为基于高性能着色器的画面提供了坚实基础。
原版 + Sodium
钠 (Sodium) 是一个以从未有模组尝试过的方式重写了部分原版渲染系统来优化性能的 Fabric 模组。其被积极维护和更新,旨在兼容绝大多数 Fabric 模组并尽可能提高帧率。其系列模组(注:元素周期表)锂 (Lithium)、磷 (Phosphor) 和 氢 (Hydrogen) 能和 Sodium 共同使用以优化游戏刻、光照或内存等不同方面。共同使用这些模组能将帧率提高至 150% 或更高,无论你是在追求 PVP 时的更高帧率,或是借助现有的硬件资源让你的游戏可玩。
原版 + Sodium + Iris Shaders
Iris Shaders 基于 Sodium 和原版游戏开发,其可提供从未有*独立* Fabric 模组实现的功能:支持已有的光影。正因为 Iris Shader 基于Sodium 和原版游戏开发,你能够在不使用昂贵的硬件的情况下以较高帧率使用光影。Iris Shader 执行的额外进程只会降低性能表现 10-15%,并在安装 Sodium 的情况下,其性能表现仍远高于原版!这将直接转化为光影性能,使绝大多数流行光影能稳定 60 帧以上运行,甚至是在 5~6 年前的旧平台上。
特别感谢
TheOnlyThing 和 Vaerian,创建了出色且美观的图标。
Mumfrey,参与创建了 Iris 和钠中使用到的字节修补系统(Mixin)。
Fabric 和 Quilt 项目,支撑起像 Iris 为游戏制作许多补丁这样的模组的存在。
JellySquid,创建了目前存在的 Minecraft 最佳渲染优化模组钠,并使其开源。
Dr. Rubisco,维护了目前 Iris 使用的网站。
Iris 的支持和管理团队,帮作者处理了玩家的帮助请求以便作者能全身心投入 Iris 的开发之中。
daxnitro,karyonix 和 sp614x,创建并维护类似的光影模组,给 Iris 的开发提供了参考。
以及在 Iris 发展历程中过去,现在和将来的贡献者,是他们使得这个项目能不断向前发展。