2024年10月24日

实验性 WebGPU 原生支持

在最新版本的 Evergine 中,我们激动地宣布实验性地集成了 WebGPU。这一突破性的 API 旨在提供比其前身 WebGL 更高的性能和更先进的功能。

什么是 WebGPU?

WebGPU 是一种现代图形 API,为开发者提供对 GPU 的底层访问,从而实现高级渲染技术和计算能力。

与基于 OpenGL(该 API 现已弃用,转而采用 Vulkan 和 Metal 等更高效的替代方案)的 WebGL 不同,WebGPU 通过提供更精简、更高效的图形编程接口,解决了传统 API 的局限性。

WebGPU 相较于 WebGL 的一个关键优势是支持 计算着色器。这一能力提升了图形密集型应用的性能,并为创建复杂的视觉效果和模拟开辟了新的可能性。WebGPU 在设计时充分考虑了现代编程范式,使开发者能够编写既高性能又易于维护的代码。

WebGPU 相较于 WebGL 的优势

WebGPU 提供了多项显著优势,使其成为图形编程领域向前迈出的重要一步:

  • 更底层的 GPU 访问:WebGPU 为开发者提供了对 GPU 资源更精细的控制,从而实现更高效的渲染和计算任务。
  • 支持计算着色器:与 WebGL 不同,WebGPU 支持计算着色器,允许直接在 GPU 上进行更复杂的计算和效果处理。
  • 更佳的性能:凭借更高效的架构,WebGPU 能够利用现代硬件能力,带来更快的渲染和处理速度。

什么是 WebGPU Native?

WebGPU Native 是 WebGPU API 的一个版本,专为在 桌面 和 移动 平台上构建应用而设计。这一集成是增强 Evergine 图形能力的重要一步。通过首先支持桌面平台,我们为未来扩展到 Web 奠定了基础。

这次集成是我们未来将支持范围扩展到 Web 的第一步。通过在桌面端进行开发,我们为开发者提供了一个更直接的调试环境,并使其能够在受控环境中探索 WebGPU 的能力。

与 Evergine 的集成

WebGPU.NET,WebGPU 的 C# 绑定

WebGPU.NET 是我们的 C# 绑定,专门为将 WebGPU 集成到 Evergine 中而开发。此绑定是公开的,使开发者能够轻松利用 WebGPU 的强大功能。

使用 Naga 进行 HLSL 到 WGSL 的着色器转译

为了保持着色器开发的一致性,我们正在使用 Naga 实现一个从 HLSL 到 WGSL 的转译层。该库利用 SPIR-V 作为输入,将着色器编译为 WGSL,这是一种专为 WebGPU 设计的新语言。这种方法确保了 HLSL 仍然是 Evergine 中着色器开发的主要语言,同时使转译过程对用户透明。

当前实验阶段

在此阶段,我们的集成仍处于实验模式。然而,它已经支持了基本功能,如标准网格和材质渲染、蒙皮、变形以及基础计算任务。这些能力使开发者能够创建动态且视觉吸引力强的应用,充分利用现代 GPU 的全部能力。

开始使用 WebGPU 实验模板

要开始使用实验性的 WebGPU 集成,您可以在 Evergine 中创建一个新的 vanilla 项目,并像往常一样添加 WebGPU 配置文件:

结论:WebGPU 集成的未来

展望未来,我们的目标是使用 WASM 和 Emscripten 将 WebGPU 完全集成到 Web 环境中,从而扩大 Evergine 应用的影响范围。未来的开发将包括对现有引擎功能的进一步支持,例如更好地集成计算着色器、后处理、粒子系统,以及整体稳定性的提升。

 

随着我们不断创新和增强我们的产品,我们邀请开发者探索这一激动人心的新集成,并提供他们的使用反馈。

我们的中期计划是将Evergine的OpenGL/WebGL集成,因为浏览器和市场标准正逐步淘汰并标准化WebGPU。

David avila
作者
David Ávila
Plain Concepts Research