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

推荐订阅源

月光博客
月光博客
Cyberwarzone
Cyberwarzone
L
LINUX DO - 最新话题
N
News and Events Feed by Topic
T
Troy Hunt's Blog
Help Net Security
Help Net Security
S
Security @ Cisco Blogs
Google DeepMind News
Google DeepMind News
Security Archives - TechRepublic
Security Archives - TechRepublic
M
MIT News - Artificial intelligence
G
Google Developers Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V2EX - 技术
V2EX - 技术
Y
Y Combinator Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
大猫的无限游戏
大猫的无限游戏
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Microsoft Security Blog
Microsoft Security Blog
Cisco Talos Blog
Cisco Talos Blog
T
Threatpost
Recent Commits to openclaw:main
Recent Commits to openclaw:main
S
SegmentFault 最新的问题
I
InfoQ
H
Hacker News: Front Page
D
Docker
Scott Helme
Scott Helme
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Blog — PlanetScale
Blog — PlanetScale
人人都是产品经理
人人都是产品经理
博客园 - 叶小钗
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
N
Netflix TechBlog - Medium
AWS News Blog
AWS News Blog
Know Your Adversary
Know Your Adversary
博客园 - 【当耐特】
T
Tor Project blog
U
Unit 42
H
Heimdal Security Blog
Microsoft Azure Blog
Microsoft Azure Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
P
Privacy & Cybersecurity Law Blog
PCI Perspectives
PCI Perspectives
美团技术团队
O
OpenAI News
T
Tailwind CSS Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
B
Blog
GbyAI
GbyAI
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
MyScale Blog
MyScale 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) 在 fedora 上建立一个 debian 容器 (bwrap) i3wm | 自制一个极简的屏幕亮度调节器 在 Linux 下启用内存压缩技术 zram 搭建一个本地轻量级聊天 Ai 我又又又重新上线了博客 如何通过命令行管理 wine 容器 (包括 proton) Btrfs 文件系统创建 swap 文件的方法 如何创建适用于 Linux 桌面的程序启动文件 在 Linux 控制 intel CPU 调度的方法 Arch Linux 的基本安装
如何在 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/