Demon 发表于 2023-5-21 15:24:03

[1.19.2-1.17.1][前置]Canvas Renderer

Canvas 是 Fabric 下渲染库的未来之选,旨在为 MOD 开发者提供强大的开发工具来展现他们的才能!Canvas 是 Fabric Mod开发工具链的着色方面渲染器。它支持 Fabric Rendering API 的所有功能以及 FREX 中定义的扩展。
[*]您可以将其看作 Fabric 下 Optifine 的替代品,其光影质量与性能优化远超 Optifine,但其的能力远不止这些,着色才是其最擅长的工作。
[*]通过优秀的底层设计,Canvas 能帮助开发者更好地实现图像渲染的计算,来自不同MOD的方块渲染不再因着色而冲突!
[*]Canvas 不仅能为您提供优秀的视觉效果,还提供了扩展API集来帮助MOD作者完成原版接口做不到的事!
[*]Canvas 旨在为高性能硬件提供优化,但也能够在任何支持 OpenGL 2.1 和 GLSL 的机器上运行。
[*]如果您追求最高性能的游戏体验,您不应该将 Canvas 视为一个优化MOD,钠 (Sodium) 才是追求性能的极致选择,需要注意的是,Canvas 永远不会与钠(Sodium)及高清修复(Optifine)兼容,详见常见问题。
[*]Canvas 被刻意设计为无法与现有 Optifine 光影包 兼容,但 Iris 或许能帮到您,将来其或许会成为 FREX API中的一个子集来帮助您使用 Optifine 光影包,详见常见问题。
Canvas 的意义当人们第一次听说 Canvas 时,他们经常会问这是一个优化MOD还是Optifine / Shader Mod的替代品。但 Canvas 做的远比您想的要多得多。Optifine 和 Shader Mod 主要适用于原版 Minecraft。即便它们通常能与大多数MOD兼容并正常工作,但是它们并不是为MOD开发者所设计的工具。
[*]Canvas 的主要目的是为MOD创作者提供更多控制和选项,以帮助他们更好地渲染MOD所添加的新方块。它也可以用于构建光影包,但是设计与Optifine完全不同,并且尚不支持完整的光影包实现所需的所有功能。
[*]与Optifine光影包不同,Canvas 的设计十分模块化,您甚至可以通过添加多个资源包将 Canvas光影包 混合在一起,这足矣见 Canvas 兼容性之强大。
Canvas 的性能与局限性性能表现Canvas 旨在为高性能硬件提供优化,但也能够在任何支持 OpenGL 2.1 和 GLSL 的机器上运行。如果您不想看下方的大段文字描述,那我为您总结几点:
[*]在扩充了大量功能的情况下,Canvas 仍跑得比原版游戏要快的多。
[*]相较于 Optifine 光影,Canvas 的光影实现是十分高效的,相同质量的渲染 Canvas 的 FPS 是 Optifine 的两到三倍不等。
[*]Canvas 能高效利用您的硬件资源,100%的GPU占用将是常态,这意味着您能获得最好的游戏体验。
[*]如果您想追求极致性能,请使用 钠 (Sodium) ,Canvas 应该只能成为性能和着色渲染的均衡选择。

[*]在性能方面,具有扩展功能的 Canvas 试图比 原版游戏 更快。Canvas 对 Minecraft 进行了大量优化 ── 但这些更改的目的是为了实现更好的渲染实用性,而不是成为通用性能mod。
[*]Canvas 并不是为低性能主机设计的,虽说当您关闭所有 Canvas 的增量渲染时,其有可能使您的游戏整体运行速度更快,可以作为优化MOD使用,但这远不如用 钠 (Sodium) 来得实在。
[*]Canvas 会尝试充分利用您的硬件,请不要吝啬给JVM分配资源。它至少需要4GB的内存,并将同时动员您的CPU和GPU。它将给您的计算机冷却系统带来压力。
如果您希望通过 Canvas 发挥最大性能,则配置菜单中的小提示将为您指出哪些选项对性能影响较大。在高分辨率下,Bloom(方块泛光)性能开销特别巨大,但是Bloom(方块泛光)看起来也很有趣,所以..根据自己的需要客制化您的 Canvas 体验吧。稳定的版本发布后,将添加更多优化。常见问题及解答Canvas 与 JellySquid 开发的 钠 (Sodium) 模组兼容吗?这个问题已经被提及了很多次,答案是 Canvas 和 Sodium 将永远无法实现兼容,因为它们都或多或少地重写了渲染引擎。这两个模组都能为 Minecraft 提供更优秀的渲染表现,但在大多数硬件上,Sodium 的效果更好。
[*]Sodium 和 Canvas 是为不同的目标和用户而设计的。Sodium 是一个性能模组,对游戏的渲染进行优化,同时提供了一些不错的视觉提升;而 Canvas 则是一个渲染器,在实现功能的同时,附加了一些优化从而使游戏获得更好的性能表现。
[*]Canvas 已经为 Minecraft 提供了很多的优化,并且也在持续添加更多的性能优化——但是其优化得到的增益被用于提供更多新的功能,所以如果你关掉 Canvas 的所有视觉效果,那么它的确是一个很不错的优化模组,但既然如此,为什么不选择 钠 (Sodium) ?有了 钠 (Sodium) 模组的出现,作者就能够将开发重心放在新功能的开发上而不必同时满足需要性能优化功能的用户。
如果您正在游玩一些需要用到 Fabric Rendering API 的模组,或者您希望体验 Canvas 为您准备的优秀视觉效果,那么选择 Canvas 吧(Sodium 也将会在未来实现 Fabric Rendering API ,铟 (Indium) 是暂行的解决方案)。如果您完全不需要这些,而只是想要卓越的性能,您应该选择 钠 (Sodium)。但无论如何,您都可以使用 JellySquid 的另外两个优化模组:锂 (Lithium)和磷 (Phosphor)(更推荐 星光 (Starlight) 作为磷的替代),Canvas 是与这二者完全兼容的。Canvas 允许第三方光影开发吗?当然,作者鼓励第三方开发者来为 Canvas 编写光影。但光影只是 Canvas 的附件,其代码是非常模块化的,并且安装方式也不太一样。这意味着您从前在Optifine的经验或多或少都不再使用,但我相信学习 Canvas 所带来的收益对各位开发者来说是值得的。举个例子,Canvas 允许你定义一些材质并将其绑定到物体上,既可以使用 Java 也可以通过 JSON 的 block:sprite:material 映射来完成。每一个材质都可以拥有多个分离的光影函数,这将是一个高度区域化的工作:不同的模组和资源包能够为其提供不同或部分的光影和材质映射。Canvas 将通过援引的方式选择合适的光影函数并自动将之应用到物体上。就目前而言,Lumi Lights 是 Canvas 上可用性较高的光影之一,您可以加入他们的 Discord 社区来讨论并学习更多 Canvas 渲染器的开发经验。考虑到 Canvas 目前所处的阶段,我并不期望第三方光影能在版本间很好地进行迭代,代码的大改时有发生,开发者们请做好充足的心理准备。现在有哪些可用光影?
[*]ForgetMeNot
[*]Lumi Lights (支持PBR材质)
[*]Lomo
[*]HoneyShaders
[*]以下资源包为部分第三方模组提供了支持:

[*]Canvas Mod Compatibility
[*]More Canvas Compact

模组作者和整合包作者
[*]目前还没有相关的文档,但您可以查看 Canvas 的维基页面获知更多信息,从而创建您的自定义光影:https://github.com/grondag/canvas/wiki
[*]Discord 也是一个不错的交流平台:https://discord.gg/7NaqR2e
注:此模组及其源代码在遵循 Apache license 2.0 协议下传播。下载地址**** Hidden Message *****
页: [1]
查看完整版本: [1.19.2-1.17.1][前置]Canvas Renderer