跳到主要内容

PixiJS v8 Beta! 🎉

·6 分钟阅读时长
GoodBoyDigital

我们很高兴在 PixiJS v8 Beta 版中独家展示 2D 网络图形的未来。虽然此 Beta 版本还未最终确定,但我们迫切希望你试玩一下,此版本中包含了惊人的性能提升和功能!

在十年的时间里——没错,你没有看错,就是十年!——我们对 PixiJS 引擎进行了重大的更改。但此新版本中的进步是我们所做过的最重大的进步!

有两个驱动因素促使我们重新设计 v8 中的代码库和渲染流水线

1. 😍 拥抱 WebGPU

PixiJS + webGPU = love

新秀 WebGPU 提供了比其前身 WebGL 大幅提升的性能。它将网络计算和图形推向了一个新时代,提供更有效率和健壮的 API。很快,它将成为在网络上渲染大多数 GPU 驱动内容的首选方法。

这种转变让人想起 PixiJS 的最初推出。那时候,WebGL 是新的,仅在少数桌面浏览器中提供,而 Canvas 则是无处不在。PixiJS 的突出特点是它首先尝试使用 WebGL 进行渲染,然后将 Canvas 作为备用方案。这种方式让 PixiJS 内容在 WebGL 获得广泛应用时立即受益。时至今日,WebGL 现在可以在 95% 的浏览器上使用

历史正在使用 WebGPU 重演,目前仅在少数桌面浏览器中得到支持,大约是 27% 的市场份额。然而,它普及只是时间问题。PixiJS 的目标是执行相同的回退策略,让您始终利用最好的可用技术,而无需重写代码。这正是版本 8 实现的目标,将在未来十年保护我们所做的一切 :D

2. 🚀 提升性能

bunnies

PixiJS 一直以速度和高性能图形著称。在 v8 中,我们重新构建了架构,以优化静态和动态渲染。尽管 v7 很快,但它作为一个相对“简单的”渲染器运行。

v7 方法:

  1. 遍历场景图并确保所有转换正确
  2. 第二次遍历场景图并执行以下操作
    • 构建要渲染的批次
    • 将数据上传到 GPU
    • 将批次绘制到屏幕中。

v8 方法

  1. 仅更新变更内容的转换
  2. 遍历场景图并构建一组指令。
  3. 一次性将所有场景数据上传到 GPU。
  4. 基于指令执行渲染。

此循环有三个主要更改,能给我们带来性能提升。

  • 首先,我们只更新已更改的元素。如果没有任何移动,则不会执行代码,优化计算开销。
  • 其次,如果场景图在后续帧中保持不变,我们将重复使用现有的渲染指令。这样可以避免为每帧重建这些指令的开销。
  • 第三,如果场景中没有元素改变位置,则完全跳过数据上传步骤(步骤 3),从而节省带宽并进一步减少计算工作。

这些改进的最终效果是什么?在不同的用例中实现卓越的性能提升

CPU = cpu 渲染一帧所花费的时间 GPU = gpu 渲染一帧所花费的时间

小兔子情形V7 CPUV8 CPUCPU DifV7 GPUV8 GPUGPU dif
所有 100k 个精灵都移动~50 毫秒~15 毫秒
233%
~9 毫秒~2 毫秒
350%
100k 个精灵未移动~21 毫秒~0.12 毫秒
17417%
~9 毫秒~0.5 毫秒
1700%
100k 个精灵(更改场景结构)~50 毫秒~24 毫秒
108%
~9 毫秒~2 毫秒
350%

这些基准数字基于您可以亲自尝试的 Bunnymark 测试!

请动手试试,你可以调整 url 中的参数更改小兔子的数量。我有兴趣知道你们都能看到什么数字!

最值得一提的是,这些改进适用于 WebGPU WebGL 渲染器。如同 PixiJs 的所有花招一样,这些改进都是自动进行的:D

且慢,还有更多!

虽然本次大修的两个主要驱动力是性能和可用性,但我们并未就此止步。我们抓住这个机会提升了 API,为引擎引入了大量新特性——太多,以至于一篇博文都无法囊括!

请持续关注我们的博文,我们将在其中深入探讨新增功能和 API 改进,让你能够创建更加出色的项目。如需全面了解新增功能,请不要错过发行说明

作为一项重要说明,尽管 PixiJS v8 进行了重大的内部更新,但它仍然保留了熟悉的大部分 API。我们进行这些更改是为了让 PixiJS 更健壮、更易于使用。在遇到修改时,请放心,v7 方法仍然适用——你只会看到一个弃用警告,引导你采用最佳实践。

交给你了!

在我们朝着候选版本迈进之际,现在是你们深入了解和探索 v8 的绝佳时机。你在这个阶段提供的反馈对于微调我们的引擎非常宝贵。我们邀请你分享你的想法——好坏都有——报告错误,甚至贡献代码。携手同行,我们能将 PixiJS 提升到前所未有的高度。

👇 不要等待,立即开始!在 GitHub 上探索 PixiJS v8 代码库

安装步骤:

你可以通过 npm 安装 beta 版本,如下所示

npm install pixi.js@prerelease-v8

然后你可以使用新的 autoDetectRenderer 函数创建最合适的渲染器

import { autoDetectRenderer } from "pixi.js";

async function init()
{
const renderer = await autoDetectRenderer({
// any settings
}); // will return a WebGL or WebGPU renderer
}

立即开始试用 PixiJS v8 Beta,与我们共同塑造 2D web 绘图的未来!🎉

保持联系!

"为了保持联系,我们邀请您关注 Doormat23PixiJS 的社交媒体,我们将在那里很快揭幕更多激动人心的更新。或者,您可以在 Discord 上加入我们充满活力的社区,进行直接互动和实时对话。