思前想后,还是要讲一下“WebGPU Spec API”和“图形学”、“即时渲染技术”等概念的差别。
我所公布的这一系列博文,均为“WebGPU Spec API”的解读,而且是局部解读,还不肯定在概念、细节上齐全精确。只是,我喜爱吃这螃蟹,尽管确实有点扎嘴。
本篇不算教程,只能算是 WebGPU 公布拂晓前夕对规范的学习与自我演绎,心愿对你有帮忙,有概念上的错漏在劫难逃。
WebGPU 的接口、对象类型、如何组合,以及其调用 GPU 的逻辑,深得 D3D12、Metal、Vulkan 这些古代图形开发技术的启发,多多少少都有它们的影子。然而,这并不是说把 WebGPU 的接口、对象的文档背熟,晓得如何组合对象和传递数据,就能写出牛逼哄哄的渲染器、3D 编辑器、通用计算工具的,那些仍须要其余畛域的常识来辅助实现,这也阐明了 WebGPU 就是一个 API 罢了。
开发者对 WebGPU 使用得多纯熟,只能阐明此人对工具有多相熟,不肯定能拿工具雕出花来。
说实话,WebGPU 和 WebGL 一样,对一些初学者来说,是有门槛的,WebGPU 仿佛更高一些,如若再加上对即时渲染技术的掌控,对光照常识的了解,那属于难上加难,这样能劝退不少人,图形类编程技术人员是少一些。
WebGPU 是什么
一种图形规范,次要在 Web 浏览器端应用 JavaScript 编程实现,也有其余语言(例如 Rust 的 Wgpu 等)的实现。在这里以 Web 端为主,无非凡状况均指 Web 浏览器端的利用开发。
它通常会拿来与 WebGL 进行比拟,有人说它是 WebGL 的继任者,我感觉这种说法并不是很全面。
起源不同
WebGL 的爹是 OpenGL,着色器语言 GLSL 继承自 OpenGL;WebGPU 的爹是 Metal、D3D12、Vulkan,规范的推动者有苹果、谷歌、Mozilla、科纳斯组(OpenGL 也是科纳斯组的标准之一)等,其着色器语言 WGSL 也是新设计的;
设计理念不同
WebGL 是走一步算一步的 API,若应用原生 API,须要对渲染的每一步进行准确调整,而且得按程序,这意味着异步编程会比拟麻烦。
WebGPU 是当时打包好数据、设计好计算过程、约定好输入输出,最初一次编码提交才进行计算,这种带“提前设计”的思维,进步了 GPU 拜访数据的效率,缩小了 CPU 到 GPU 的过程。
这就像做菜,WebGL 有点像做到啥就拿啥调料、食材,要做下一道菜还得中途洗锅。WebGPU 则一边座着高压锅炖汤,一边炒菜,而且每一步都精心筹备好了食材配比、炒菜程序。
性能差别
WebGL 即便到了 version2,对通用计算的反对还是不太行,WebGL 的主战场还是绘图。
WebGPU 在娘胎里就设计好了,它有两大性能:绘图和通用计算。
不过, 绘图方面,在量小的时候,二者简直没有差异,WebGL 甚至写起来还快一些。
WebGL 不好吗
如果大家全副不能做封装,全副只用原生 API,那 WebGL 甚至在小场景下写起来还快一些,性能体现也没什么区别。
可问题就在于,封装能够屏蔽底层的差别,ThreeJs 和 BabylonJs 若放弃封装不变,然而底层全副改用 WebGPU,其不仅仅能够在大场景时进步性能,还能够领有 WebGPU 有然而 WebGL 没有的新个性,甚至还能扩大出通用计算接口来,应用利用级别库的开发者能享受到的益处是很大的。
那么肯定要等着这些库封装吗?不是的,理解相熟底层 API 也是有益处的。
世事无相对,只有合不合。
久远看,WebGPU 肯定会占据前端通用图形技术的一把手,WebGL 会退居二线,齐全取代不太可能。
文章目录
- WebGPU 的类型约定之 WebIDL
根底概念局部
- WebGPU 标准篇 01 根底
- WebGPU 标准篇 02 对象初始化
数据资源局部
- WebGPU 标准篇 03 缓存对象
- WebGPU 标准篇 04 纹理
- WebGPU 标准篇 05 采样器
- WebGPU 标准篇 06 资源及其打组绑定
渲染调度局部
- WebGPU 标准篇 07 着色器模块
- WebGPU 标准篇 08 管线
- WebGPU 标准篇 09 通道
- WebGPU 标准篇 10 指令编码与队列
- WebGPU 标准篇 11 Canvas 上下文
补充材料
- WebGPU 补充篇之 VertexBuffer
- WebGPU 补充篇之 Uniform
卷 II
- 猝死之前。
之后的工作
写此系列全凭一腔激情,我也发现了 WebGPU 与 WGSL 的分割之严密。
写完这个系列后,我曾经精疲力尽,打算缓缓修修补补表述,以及学习标准中的其余散碎常识,届时会以卷二持续公布。
尽管 WGSL 大略我过了一眼,然而在 WebGPU 正式登上浏览器正式版之前,我没打算在短时间内匆匆动笔。
版权与内容申明
留我个名就好了,独特学习提高。
必定会有错漏、表意不畅,心愿指出。