
开发快照:Godot 4.5 dev 5
哎呀,你感觉到了吗?功能冻结的冷风即将吹来,dev阶段快要结束了!虽然还没正式到来,但这很可能是我们 4.5 版本开发周期的最后一个开发快照。随着新特性的收尾,Bug 也将随之而来,因此我们非常依赖大家的 Bug 报告和反馈,以确保 Beta 阶段的顺利推进。
本期封面插图来自《Replicube》——一款由 Walaber Entertainment LLC 开发的编程解谜游戏,玩家需要编写代码来还原体素风格的物体。该游戏现已上架 Steam(开发者社交账号:Bluesky、Twitter)。
如果你之前错过了,可以回顾4.5 dev 1 、4.5 dev 2 、4.5 dev 3 、4.5 dev 4的更新说明,这些版本中引入的一些重要特性,在 dev 5 中仍可体验和测试。
原生 visionOS 支持
通常,我们在开发日志中介绍的新特性都来自长期贡献者,这也合理,毕竟他们最熟悉引擎架构。然而,这次的 visionOS 支持却来自首次提交 PR 的贡献者 Ricardo Sanchez-Saez(PR: GH-105628)!Ricardo 是 Apple visionOS 工程团队的一员,这确实让他有机会快速推动该特性落地。不过,这也标志着 Godot 引擎在近十年来首次正式支持新平台集成。
visionOS 是 Apple 的 XR 平台。虽然我们对 XR 并不陌生,但各个 XR 平台之间差异极大。visionOS 用户也表达了强烈意愿,希望能融入我们不断壮大的 XR 社区。现在,这成为了现实。
GDScript:抽象类
Godot 内部早已广泛使用抽象类(即不可实例化的类),但 GDScript 直到现在才正式引入该功能。感谢 Aaron Franke 的努力(PR: GH-67777),现在用户可以使用新关键字 abstract 来定义抽象类:
abstractclass_nameMyAbstractextendsNode
抽象类的意义在于为其他类提供统一的基类:
class_nameExtendsMyAbstractextendsMyAbstract
Shader Baker(着色器烘焙器)
ubershaders背后的两位技术大神 Darío Samo 与 Pedro J. Estébanez 又带来惊喜:着色器烘焙导出功能(PR: GH-102552)!该功能在导出时可选开启,可极大加快着色器编译速度。
它与 ubershader 自动集成,无需额外配置。强烈推荐在面向 Apple 设备或 D3D12 时启用此功能,在 TPS 示例中,加载时间可缩短 20 倍以上!
但这项优化也带来一些代价:
- 导出时间显著增加;
- 构建体积变大(因为预编译的着色器文件体积大);
- 移除了 Forward+ 渲染器中部分 MoltenVK 的 Bug 兼容逻辑,导致在 Intel Mac 上不再保证 Forward+ 正常工作,建议使用 Mobile 或 Compatibility 渲染器;
- Vulkan 可在任意设备烘焙,D3D12 必须在 Windows 上执行,Apple 的 .metallib 则需要 macOS(需安装 Xcode 或命令行工具)。
Web:支持 WebAssembly SIMD
还记得 4.0 版本初发布时默认采用多线程 Web 支持吗?虽然美好,但被现实打脸:这项技术未如预期成为主流,因此在 4.3 中恢复了对单线程构建的支持。
但单线程 ≠ 无并行!SIMD(单指令多数据)就是一项完美替代方案,已获主流浏览器广泛支持。我们的 Web 专家 Adam Scott 已将其默认集成进 Web 构建(PR: GH-106319)。
内联颜色选择器
尽管 Inspector 中可以直观看到导出的颜色变量,但有用户希望能直接在脚本编辑器中查看颜色。这将更直观地理解变量所代表的颜色,无需额外暴露。
Koliur Rahman 实现了这个令人愉悦的功能(PR: GH-105724):内联颜色选择器!现在无论颜色定义在哪,用户都能一眼看懂,不影响代码结构。
渲染改进合集
本次快照在渲染方面也收获颇丰,不是来自单一 PR,而是多个社区贡献者的合力之作:
- SMAA 1x 抗锯齿:由 Raymond DiDonato 从插件升格为引擎核心特性(PR: GH-102330);
- Bent Normal Maps:Capry 带来,用于增强高光遮蔽和间接光照(PR: GH-89988);
- 移动设备兼容性优化:Clay John 重构 Compatibility 后端以使用 fragment shader copy,解决常见采样率问题(PR: GH-106267)。
SMAA(子像素形态抗锯齿)对比:
弯曲法线贴图(Bent Normal Map)对比:
其他亮点更新
这里列出部分精选更新内容:
• 动画:AnimationPlayer 支持按字母排序(GH-103584)
• 动画:动画编辑器支持动画筛选(GH-103130)
• 音频:支持 Theora 视频文件的拖动播放,改进多声道重采样(GH-102360)
• 核心:新增 --scene 启动参数(GH-105302)
• 核心:重构资源复制逻辑(GH-100673)
• 核心:使用 Grisu2 算法改进科学计数法序列化(GH-98750)
• 编辑器:EditorResourcePicker 新增“快速加载”按钮(GH-104490)
• 编辑器:新增 PROPERTY_HINT_INPUT_NAME,用于 @export_custom 的输入绑定(GH-96611)
• 编辑器:命令面板支持命名 EditorScripts(GH-99318)
• GUI:文件对话框支持文件排序(GH-105723)
• 国际化:编辑器支持翻译预览(GH-96921)
• 导入器:ResourceImporterTexture 支持通道映射(GH-99676)
• 物理:在使用 Jolt 时提升非监视区域性能(GH-106490)
• 移植:Android 增加自定义主题属性导出选项(GH-106724)
• 移植:Android 支持 16 KB 页面大小,升级到 NDK r28b(GH-106358)
• 移植:移除 compress_native_libraries 导出选项(GH-106359)
• 移植:Web 使用真实线程池大小(GH-104458)
• 移植:Windows/macOS/Linux 默认使用 SSE 4.2 编译 Godot(GH-59595)
• 渲染:StandardMaterial 新增近景对象控制属性(GH-93142)
• 渲染:SceneTree 遍历优化(GH-106244)
已知问题
Windows 可执行文件(包括编辑器和导出模板)使用的是已过期的签名证书。在运行时,Windows Defender 的 SmartScreen 可能弹出警告,甚至阻止运行。你可以通过命令行启动 Godot 绕过这一限制(GH-106373)。我们会尽快更新证书用于后续构建。
您可以关注Godot Hub的Godot PR日报(https://pd.qq.com/s/cg2mfd19b),获取更及时的Godot引擎改进内容。本文翻译、修改自官网文章,未经授权禁止转载或使用。
文章版权声明:本文由[沫萝ㅤ]原创发布,版权所有。
未经书面授权,禁止任何单位及个人以任何方式进行转载、摘编、复制或建立镜像。违反上述声明者,将依法追究其相关法律责任。