antvis / g-webgl-compute

A GPGPU implementation based on WebGL.
MIT License
144 stars 15 forks source link

Fallback to WebGL #6

Open xiaoiver opened 4 years ago

xiaoiver commented 4 years ago

很多特性都与底层渲染 API (WebGPU/WebGL) 无关,例如:

因此如果能自动检测如果不支持 WebGPU 就 fallback 到 WebGL 就好了。

事实上 Babylon.js 也是这么做的,WebGPURenderer 兼容了全部 Renderer 接口。

但在实现中也存在以下难点:

  1. Shader 语法难以兼容。WebGPU Chrome 实现版本使用 GLSL 4.5,而 WebGL 1 停留在 GLSL 1.0。
  2. Compute Shader 实现。WebGL 当然也可以通过渲染到纹理实现(GPU.js 就是这么做的)。
xiaoiver commented 4 years ago

在 WebGL 1 中“模拟”实现 Compute Shader 时,有以下限制:

  1. 由于只能输出到一个 FrameBuffer 中,因此只支持输出一份数据
  2. 无法实现共享内存以及同步方法