WebGPU 相关

// 随着图形技术的蓬勃发展,继续遵循像 OpenGL 这样的某个特定 API 标准显然是不可行的。

关注点分离,在 WebGL 中,单个上下文对象负责所有事情,并且它包含许多关联状态。 相比之下,WebGPU将它们分为多个不同的上下文:
  • GPUDevice creates resources, such as textures and buffers.
  • GPUCommandEncoder allows encoding individual commands, including render and compute passes.
  • Once done, it turns into GPUCommandBuffer object, which can be submitted to a GPUQueue for execution on the GPU.
  • We can present the result of rendering to the HTML canvas. Or multiple canvases. Or no canvas at all – using a purely computational workflow.
管道状态,WebGL 中初始化时创建的着色器程序可能需要重新编译造成卡顿,而 WebGPU 具有管道状态对象(即,GPURenderPipeline 和 GPUComputePipeline)的概念(即 API 更底层),pipeline state includes:
  • Shaders
  • Layouts of vertex buffers and attributes
  • Layouts of bind groups
  • Blending, depth, and stencil states
  • Formats of the output render targets
绑定模型,允许更快绑定的方式布置资源

WebGPU 着色语言 WHLSL:https://webkit.org/blog/8482/web-high-level-shading-language/
WebGPU 的文本着色语言被设计为 SPIR-V(中间码) 的薄层
WebGPU API(WebGL 的后续版本,区别好像就是 API 不一样而已):https://groups.google.com/a/chromium.org/forum/?hl=sq&nomobile=true#!topic/blink-dev/dxqWTSvyhDg