采访嘉宾 | Jason Carter
采访编辑 | 闫园园
近期,微软旗下 WebGL 框架 Babylon.js 开发者之一 David Rousset 在接受采访时透漏,微软将很快披露其在元宇宙中的愿景,同时他还在访谈中谈到了自己对元宇宙的看法。根据 Rousset 的描述,未来的互联网用户应该能够从网络上的 3D 场景或网页 ( 例如用 Babylon.js 构建 ),通过 VR 中的链接,“被传送到另一个网站,该网站将处于另一个元宇宙”。
虽然这只是 Rousset 个人的设想,并不代表微软的官方说法,但外界依然从他的描述中猜测微软或将把 Web 标准纳入其元宇宙战略中。而这也意味着,Babylon.js 很大概率上会成为微软构建元宇宙的重要工具。
Babylon.js 刚刚于五月初正式发布了 5.0 版本,带来了诸多新特性,例如跨平台原生开发、Mixed Reality Toolkit 等等。那么对于 Babylon.js 团队来说,他们接下来的目标是什么?在开发支持 WebGPU 中,有没有遇见问题和挑战?又如何看待 WebVR 和元宇宙之间的联系?针对这些问题,InfoQ 有幸采访了微软 Babylon.js 的首席工程和产品负责人 Jason Carter,以下为其部分回答译文。
InfoQ:首先,请您向介绍一下自己以及您的团队目前在做的工作。
Jason Carter:大家好,我叫 Jason Carter,负责领导 Babylon.js 开发团队。Babylon.js 是一套使用 JS 的开源 Web 渲染与游戏引擎,我们的目标是把它打造成世界上最强大、最美观、最简单同时也是最开放的 Web 渲染平台之一。
InfoQ:请您讲讲 Babylon.js 开发的初衷是什么?
Jason Carter:开发 Babylon.js 的初衷,是希望帮助所有 Web 开发者在应用程序中充分运用 GPU 的强大功能。
WebGL 是一个面向浏览器的强大图形 API,目前已经得到全部主流浏览器的支持,但其本身既复杂又极具深度。很多 Web 开发者发现,直接使用 WebGL API 进行编程难度非常高。因此,Babylon.js 希望可以降低,甚至消除这种门槛。
Babylon.js 是一个非常简单的 JavaScript API,对所有开发人员都非常友好,它的意义就是简化开发流程,让更多 Web 开发者能够在自己的应用程序中利用 GPU 资源。
InfoQ:有开发者认为 Babylon.js 相较其他 WebGL 框架入门稍难,您有没有推荐新手快速上手的方法?
Jason Carter:每个人的教育背景和从业经历有所不同,这些使我们有了不同于他人的知识和技能储备。所以在学习新的技术平台时,我们总会结合自己的独特知识、经验做出判断,比如觉得它似乎很好上手,又或者不容易掌握。
Babylon.js 也不例外,有些人觉得它平易近人,但也有人觉得门槛太高。但无论大家的教育背景如何,我总会向 Babylon.js 学习者推荐三大资源:
首先是 Babylon.js playground,这里是最适合新手的入门课堂。大家可以在这里更改代码,并立即查看渲染结果,全程无需任何特殊设置。
第二个就是 Babylon.js 丰富的说明文档。Babylon.js 整个社区都在努力提供丰富、完整且易于理解的文档资源,这也是开启 Babylon.js 学习之旅的最佳起点。我们也一直在对文档内容做出改进,希望它能受到所有人,包括缺少开发经验的新手们的欢迎。就在两周之前,我们刚撰写了最新文档,题为《你的第一步》,这份新文档将提供完整引导,帮助初学者一步步打开 Playground,做出更改,下载准备就绪的托管网站,最终把成果托管并运行起来。
最后推荐给 Babylon.js 学习者们的是社区论坛。Babylon.js 论坛汇聚了世界各地友好、善良、乐于助人的贡献者们。我想把所有美好的词汇都献给我们的社区。总之,强烈建议各位学习者来看看 Babylon.js 论坛,打个招呼并开始提问。无论什么样的问题,都会有全世界最强的 Babylon 用户热情为你解答。
InfoQ:在开发 WebGPU 版本中,有没有遇见问题和挑战,是如何解决的?
Jason Carter:近两年来,我们一直致力于在 Babylon.js 中支持 WebGPU 。这是段疯狂、艰险,但又充满意义的探索。WebGPU 为 Web 开发者们带来了一系列令人难以置信的全新功能,例如使用计算着色器执行更高级的 GPU 运算。
但是想支持 WebGPU,最复杂的问题在于其中涉及一种全新的着色器语言(WGSL)。因为我们建立 Babylon.js 的目的就是发挥 WebGL 的能力,所以之前就已经完全支持 GLSL 。而这一次,我们必须考虑让 Babylon.js 支持多种着色器语言。
我们一直希望 Babylon.js 能够成为 Web 开发者访问 GPU 的唯一 API,避免纷繁复杂的底层浏览器 API(WebGL、WebGL2 或者 WebGPU )再给开发者带来额外的困扰。为此,我们决定开发一些特殊的工具,将 WGSL 着色器转换为 GLSL 着色器。
大家可以参考此处文档,了解关于这些工具的更多信息和演示案例。
InfoQ:在开发 Babylon.js 时,团队是如何平衡包体积、性能、功能等因素的?
Jason Carter:这确实是个复杂的问题,因为每位开发人员的需求各不相同。使用 Babylon.js 平台的开发者很多,所以唯一的解决方案就是提升灵活性。我们努力采用最新的 Web 标准和技术,允许大家在 Babylon.js 中进行高级摇树优化,从而在尽可能削减包大小的同时,继续保留必要的一部分功能。
如此一来,每个人都能获得最适合自身需求的 Babylon.js 定制版本。当然,如果各位想在浏览器上开发 3A 级游戏,需要使用到 Babylon.js 的全部功能,那也可以照单全收。总之,Babylon.js 的构建充分考虑到模块化设计,保证每位开发者的需求都能得到完美满足。
InfoQ:有开发者认为 Babylon.js 包体积偏大,您和团队怎么看待这个问题?
Jason Carter:大家也可以根据实际需求构建定制化 Babylon.js 包。我们已经看到不少 Web 应用程序在特定场景中使用定制化 Babylon.js 包,大小仅为 92 kb;但如果需要完整功能集,大家也可以在 Web 应用中使用完整包。
Babylon.js 具备模块化特性,能够满足所有开发人员的具体需求。关于 Babylon.js 摇树设计的更多细节信息,请参阅我们的相关文档。
InfoQ:有开发者提到,Babylon.js 面向游戏开发缺少必要的工作流和组件化设计,对此您怎么看?未来会增加必要工作流和组件化设计吗?
Jason Carter:其实这方面工作会一直持续下去。我们始终在努力为游戏开发者提供更多备受期待的现代功能和特性。我们也在 Babylon.js 身上倾注了不少野心勃勃的理想,希望能进一步降低游戏开发者的使用门槛,改进使用体验。
然而 JavaScript 仍然只支持单线程,所以 Web 游戏的开发只能依赖于一种不同于原生游戏开发的独特解决思路。但已经有不少游戏开发者利用 Babylon.js 带来了令人难以置信的精彩体验。《我的世界:经典版》、《神庙逃亡 2》等等案例都是明证,大家可以参阅此处链接。
另外,我们还使用最新的 Babylon.js 5.0 版本开发了一段全新的《太空海盗》游戏演示,大家可以看看。
InfoQ:目前 WebVR 技术的发展现状是怎样的?您认为元宇宙等概念是否会对推动其有较大的发展?
Jason Carter:WebVR 在很大程度上已经被更新的 WebXR API 所取代。Babylon.js 一直保持着对 WebXR 最新功能的跟进和支持。随着沉浸式设备在各国市场变得更便宜,普及度更高,相信人们会对创建沉浸式网络体验产生更强烈的兴趣。实际上,我们最近发现这一领域的人气和关注度已经出现了爆发式增长。
随着新冠疫情席卷全球,很多人被迫长期居家,远程办公。于是乎,很多企业开始使用 Babylon.js 构建起真实、生动的元宇宙体验。Frame 就是个很好的例子。这种令人难忘的虚拟共享与共存体验完全建立在 Babylon.js 之上,也真正展现出元宇宙的价值所在。
所以大众对于虚拟世界的关注和渴望,一定会吸引更多人投向于沉浸式共享虚拟体验的开发中来。未来,我们也会看到更多开发者在 Babylon.js 的支持下将这种灵感转化为现实。
InfoQ:Babylon.js 接下来短期目标和长期目标是什么?
Jason Carter:我们刚刚发布了迄今为止体量最大,变化最多,最雄心勃勃的 Babylon.js 版本——Babylon.js 5.0。但这并不是终点,我们已经在为下个版本积极筹备。我们目前最核心的开发目标,就是让开发者们能使用 Babylon.js API 在所有平台上(包括 Web 和原生平台)创建体验。
我们正在开发 Babylon Native 技术集合,希望让创作者们能够以 Web 优先的方式开发出跨平台体验。在这方面,我们必须想办法保证为开发者提供统一的渲染和体验效果。我们遵从社区成员们的呼吁,正在为此努力。
必须承认,大部分现代游戏和渲染解决方案在“跨平台”功能中并没有充分考虑到 Web 端的需求。但我们想要有所突破,从出色的 Web 体验起步,再慢慢通过统一的性能、沉浸效果和部署流程满足访问者的一切期待。我们正在关注并思考这个问题,Babylon Native 正是这项计划中的关键一环。
InfoQ:Three.js 和 Babylon.js 经常会拿来一起作比较,对此您怎么看?
Jason Carter:其实没啥冲突。我们也很喜欢 Three.js,欣赏那些使用 Three.js 将精彩的想法转化成现实的开发人员。我们双方相互激励,共同进步。我们有着相同 的热情,就是想把强大的 GPU 功能交付到 Web 开发者手中。
Three.js 和 Babylon.js 都在为这个目标而努力,我们也乐于看到共同的热情孕育出相似的成果,把理想中的效果鲜活展现在每个人眼前。所以两个有着共同努力方向的项目怎么会有冲突呢,我觉得双方更像是队友的关系。 😊
InfoQ:您认为 WebGL 标准的前景如何?
Jason Carter:WebGL 是个令人印象深刻的 API,而 WebGL 2 基本已经被行业视为“最终完整版”。
在 Babylon.js 上,我们期待能在支持 WebGPU 的浏览器上直接连通 GPU。我们坚信这个全新 API 能为全球 Web 开发者们解锁更多超能力,也为 Babylon.js 能够全面支持 WebGPU 感到无比自豪!
InfoQ:最后,您有没有想对中国开发者们想说的话?
Jason Carter:感谢各位中国开发者对沉浸式 Web 开发的关注,也感谢大家支持 Babylon.js。在这里,我诚邀大家加入 Babylon.js 大家庭,了解其中蕴藏的无穷可能性。请相信,这个友好、温暖、乐于互助的社区正在敞开怀抱,欢迎你来!
Jason Carter:微软 Babylon.js 负责人和技术布道者。
领取专属 10元无门槛券
私享最新 技术干货