惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
T
The Blog of Author Tim Ferriss
H
Help Net Security
博客园 - 叶小钗
云风的 BLOG
云风的 BLOG
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
D
DataBreaches.Net
博客园 - 聂微东
A
About on SuperTechFans
大猫的无限游戏
大猫的无限游戏
P
Proofpoint News Feed
Martin Fowler
Martin Fowler
博客园 - 【当耐特】
S
SegmentFault 最新的问题
Blog — PlanetScale
Blog — PlanetScale
酷 壳 – CoolShell
酷 壳 – CoolShell
G
Google Developers Blog
I
InfoQ
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
GbyAI
GbyAI
B
Blog
Engineering at Meta
Engineering at Meta
V
V2EX
Hugging Face - Blog
Hugging Face - Blog

陈陈菌博客

如何在 podman 容器内使用 systemd 在 podman 运行 GUI 应用的经验总结 管理 podman 容器与镜像的导入或导出 用 xdg-dbus-proxy 解决容器的文件选择器的问题 解决 VSCodium 或 Code-Server 无法安装 GitHub Copilot 问题 不可变发行版 Fedora Silverblue 的体验记录 解决 apt 或 dnf 无法 tab 补全的问题 对 (MPA) 多页面切换实现丝滑动画的探索 让服务在非 Root 权限下使用 80 或 443 端口 AppImage 应用打包快速上手 Flatpak 使用和应用打包快速上手 如何用 webSocket 实现一个实时聊天应用 Linux 内核编译 | 快速上手 | deb 使用 debootstrap 构建 Debian 系根文件系统 高度可定制的 KDE 窗口装饰器 klassy 有关 docker、podman、nspawn、bwrap 的 Linux 容器图形性能测试 创建任意 Linux 容器并支持 GUI 程序 (Docker) 创建任意 Linux 容器并支持 GUI 程序 (nspawn) 文件同步工具 rsync 的使用 玲珑 (Linyaps) 应用打包 RPM 打包指南 | 精简版 PBR 材质的各种贴图类型入门 APU | Stable-Diffusion 使用记录 Grub 主题安装与配置 Fcitx5 主题安装与自定义 不使用 Nginx 的网站开发指南 如何自制一个简易的资源监控程序 SQL 常用 CRUD 语法记录 Debian 打包入门,与需要注意的问题 在 fedora 建立一个 Arch 容器 (bwrap)
如何在 Electron 上启用 WebGPU
GlumiStudio@ · 2025-05-18 · via 陈陈菌博客

2025-05-18 09:09:40

分类: Web开发 标签: node.js,WebGPU


WebGPU 是下一代 Web 图形api,用来替代 WebGL。它可以让浏览器上使用 Directx3D / Vulkan / Metal 接口(替换老旧的OpenGL),能够更高效利用 GPU 的硬件性能,让原有游戏和3D画面帧数更高,意味着使用更好的美术资产成为可能。

为什么是 electron

现在使用 web 技术用来开发桌面软件已经非常普遍,在此基础上继续拓展,能发展出更多可能性。比如使用该技术来开发大型游戏,各类画图制作工具、或是地图软件等这些需要复杂图形的地方(用 webGPU 替换 webGL 以获得更好的性能)优化展示体验。

如果你知道如何在浏览器启用 webGPU,其实在 electron 也是非常相似和简单。 以 chrome 为例子,一般需要在 chrome://flags/ 打开 "Unsafe WebGPU Support" 选项。如果要指定图形 api 比如 vulkan 还需要打开 "Vulkan"。

如果在 electron 中,则只需要通过 app.commandLine.appendSwitch 来设置一下即可 #enable-vulkanenable-unsafe-webgpu

app.commandLine.appendSwitch('enable-vulkan')
app.commandLine.appendSwitch('enable-unsafe-webgpu')

主进程 js 代码参考:

const { app,BrowserWindow } = require('electron/main')
app.commandLine.appendSwitch('enable-vulkan')
app.commandLine.appendSwitch('enable-unsafe-webgpu')

app.on('ready',()=>{
    const win = new BrowserWindow({
        width: 1200,
        height: 800,
        webPreferences: {
            preload: path.join(__dirname,'preload.js'),
        }
    })
    win.loadFile(`./static/index.html`)
})

注意:如果是部署在 Linux 系统,最好还要在 electron 主程序启动命令中添加 --enable-features=Vulkan,否则不会起到硬件加速效果。

package.json

"scripts": {
  "play": "electron . --enable-features=Vulkan"
}

以下为测试小 demo,我是以 Linux 平台 + Vulkan,AMD Radeon 880m 核显来测试(性能大概 GTX 1650 左右) 这里我放了一个普通的天空盒并启用了 GI 和平行光,这艘船有十六万个三角面。拉近内饰的话,80~90帧左右,远一点基本能跑满 120 帧,总体性能还不错。

有关 webgpu 的库:https://www.orillusion.com/