WebGPU 目前是可以运作的吗?

  • Creator 版本:3.8.8
  • 目标平台: web预览就无法显示
  • 重现方式:画面放一个sprite,feature打开WebGPU
  • 首个报错:没报错,但画面的sprite没显示
  • 之前哪个版本是正常的:无
  • 编辑器操作系统: macos 15.7
  • 重现概率:必现

我有试着修改引擎中的顶点画出边框
atlas的画不出来,但单张sprite可以画出来
但不知为何内容就是无法显示

有可能是纹理格式问题

1赞

追了一下代码发现是
rendering/custom/web-program-library.ts
findBinding(shaderInfo,name)
这边绑定的问题

把代码改成

    let lastMatch: { set: number, binding: number } | null = null;
    for (const v of shaderInfo.blocks) {
        if (v.name === name) lastMatch = { set: v.set, binding: v.binding };
    }
    if (lastMatch) return lastMatch;
    for (const v of shaderInfo.buffers) {
        if (v.name === name) lastMatch = { set: v.set, binding: v.binding };
    }
    if (lastMatch) return lastMatch;
    for (const v of shaderInfo.samplerTextures) {
        if (v.name === name) lastMatch = { set: v.set, binding: v.binding };
    }
    if (lastMatch) return lastMatch;
    for (const v of shaderInfo.samplers) {
        if (v.name === name) lastMatch = { set: v.set, binding: v.binding };
    }
    if (lastMatch) return lastMatch;
    for (const v of shaderInfo.textures) {
        if (v.name === name) lastMatch = { set: v.set, binding: v.binding };
    }
    if (lastMatch) return lastMatch;
    for (const v of shaderInfo.images) {
        if (v.name === name) lastMatch = { set: v.set, binding: v.binding };
    }
    if (lastMatch) return lastMatch;
    for (const v of shaderInfo.subpassInputs) {
        if (v.name === name) lastMatch = { set: v.set, binding: v.binding };
    }
    if (lastMatch) return lastMatch;

这样就可以跑起来

但是跟现有的机制太多不相容了
跟我的pipeline组合起来也会导致其他问题…

看来这边还处于开发中阶段…只能暂时放弃了