WebGPU调研

734 阅读2分钟

webGPU主要功能:使得浏览器能够访问更多的GPU显卡底层功能,同时增强基于网页端的本地AI加速性能

一、Web3D渲染发展

  • 最早时期:浏览器必须使用Flash插件实现3D渲染
  • H5时期:通过Canvas组件实现一些动画效果
  • WebGL时期:利用浏览器哪盒对OpenGL打包封装,利用web环境调用底层图形学能力
  • WebGPU时期:和WebGL一样,是对原生图形API:DX12、Vulkan、Metal的打包,在浏览器里直接调用,实现高质量渲染

二、WebGPU性能提升

  • WebGL渲染过程:数据转化为图像后传至GPU,并通过getPixelsData方法同步读取从而获得canvas上的一组像素并进行渲染
  • WebGPU渲染过程:数据作为缓存传至GPU,GPU异步计算并重新转化为缓存进行渲染

WebGPU相较于WebGL无需再将数据转为图像传至GPU,而是通过缓存,性能得到显著提升;计算是异步执行的,不再阻塞JS主进程;不需要创建canvas进行渲染

Matrices multiplication WebGPU vs WebGL

WebGPU计算着色器比使用像素着色器的WebGL计算速度快 3.5 倍,同时在处理大量数据量方面表现的更强,且它阻塞主线程

WebGPU强大的性能使得浏览器能够实现视频与音频编辑工作,实时物理模拟器以及展示更逼真的视觉效果

三、兼容性

3.1操作系统

支持在所有主流操作系统上进行GPU计算

  • Vulkan:Windows7/8,Linux,Chrome OS,Android,Android WebView
  • Metal:Mac,iOS
  • Direct3D 12:Windows10/11

3.2浏览器方面

image-20230505182018455

目前正式版的Chrome已经更新为113版本且已经支持WebGPU

3.3electron版本方面

目前正式版的electron(v24.2.0)还没有支持WebGPU,但是Beta版本的electron(v25.0.0)已经支持WebGPU