Canvas 渲染器 (Canvas Renderer) - MC百科

体育365投注官网 📅 2026-01-19 00:40:08 ✍️ admin 👁️ 5859 ❤️ 402
Canvas 渲染器 (Canvas Renderer) - MC百科

简介

Canvas 是 Fabric 下渲染库的未来之选,旨在为 MOD 开发者提供强大的开发工具来展现他们的才能!

Canvas 是 Fabric 模组开发工具链的着色方面渲染器。它支持 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 的光影

Lumi Lights。

Lumi Lights 是 Canvas 下目前较为强大的光影,借助 Canvas 所提供的工具,Lumi Lights 能完美与 MOD 方块,实体等涉及光照渲染的操作实现完全兼容,并额外实现了诸如体积光,方块表面泛光,水反等功能,下图是 Discord 中所截取的示例:

注:加载光影的方法:将光影包 [Lumi Lights] 放入主目录下 resourcepacks 文件夹是的你没有听错,在游戏“资源包”中加入,再于视频设置 — Canvas — 点击 pipeline(渲染方案)选择相应光影以及精细度。

Canvas 的意义

当人们第一次听说 Canvas 时,他们经常会问这是一个优化 MOD 还是 OptiFine / Shaders Mod 的替代品。

但 Canvas 做的远比您想的要多得多。

OptiFine 和 Shaders 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 分配资源。它至少需要 4 GB 的内存,并将同时动员您的 CPU 和 GPU。它将给您的计算机冷却系统带来压力。

如果您希望通过 Canvas 发挥最大性能,则配置菜单中的小提示将为您指出哪些选项对性能影响较大。在高分辨率下,Bloom(方块泛光)性能开销特别巨大,但是 Bloom(方块泛光)看起来也很有趣,所以... 根据自己的需要客制化您的 Canvas 体验吧。

稳定的版本发布后,将添加更多优化。

性能对比

测试环境:

Java: 17.0.1 64bit;

CPU: 8x Intel® Core™ i7-6700 CPU @ 3.40GHz;

LWJGL: 3.2.2 build 10;

OpenGL: NVIDIA GeForce GTX 1060 6GB/PCIe/SSE2 GL version 3.2.0 NVIDIA 511.65, NVIDIA Corporation;

Canvas: 1.0.2322,Sodium: 0.4.1;

游戏版本:1.18.2,Fabric Loader 0.13.3,Fabric API 0.51.1。

移动状态

结果:Canvas 全程平均 467 FPS,最高 598 FPS;Sodium全程平均帧率 361 FPS,最高 402 FPS。

平均帧率+29%

静止状态

结果:Canvas全程平均 729 FPS,最高 761 FPS;Sodium 全程平均 452 FPS,最高 477 FPS。

平均帧率+61%

局限性

Canvas 目前仍处于 Alpha 测试阶段。您应该做好充足的心理准备来面对各种问题。当前,地形渲染可与光影着色器一起使用,但物品渲染则不然(将来会实现的)。开发的重心是渲染移动过程中的方块。(沙子等方块的掉落或由活塞所推动的方块,诸如此类)

就目前开发来说,FREX 拓展,着色库,顶点格式,属性绑定和照明选项可能会在开发中发生更改,从而导致代码迭代兼容中断。如果有一个稳定的版本,作者将避免破坏发行版本中的更改。直至那时之前,实验才是常态。

常见问题及解答

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 0.6及以上的版本中,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 协议下传播。

相关推荐

😂 笑哭了 Emoji 表情符号, Click to copy!
365beat怎么下载苹果

😂 笑哭了 Emoji 表情符号, Click to copy!

📅 07-17 👁️ 3442
联动云租车价格,联动云租车多少钱一天
Microsoft 365安卓

联动云租车价格,联动云租车多少钱一天

📅 08-16 👁️ 7341
GTA 4-死机修复解决方法
体育365投注官网

GTA 4-死机修复解决方法

📅 08-21 👁️ 8037