为什么官方默认的 effect 都显示不出来

自己写了个 shader,在编辑器能显示,运行之后就不显示。
然后就用了一下官方默认的 effect,sprite 的 package 也取消勾选了,运行之后竟然也显示不出来。
控制台:GL_INVALID_OPERATION: It is undefined behaviour to have a used but unbound uniform buffer.
这是为啥啊???????
这对于新手写cocos 的 shader 也太多坑了吧!
默认 effect:

CCEffect %{
techniques:

  • name: opaque
    passes:
    • vert: legacy/main-functions/general-vs:vert # builtin header
      frag: unlit-fs:frag
      properties: &props
      mainTexture: { value: white }
      mainColor: { value: [1, 1, 1, 1], editor: { type: color } }
  • name: transparent
    passes:
    • vert: general-vs:vert # builtin header
      frag: unlit-fs:frag
      blendState:
      targets:
      • blend: true
        blendSrc: src_alpha
        blendDst: one_minus_src_alpha
        blendSrcAlpha: src_alpha
        blendDstAlpha: one_minus_src_alpha
        properties: *props
        }%

CCProgram unlit-fs %{
precision highp float;
#include <legacy/output>
#include <legacy/fog-fs>

in vec2 v_uv;
in vec3 v_position;

uniform sampler2D mainTexture;

uniform Constant {
vec4 mainColor;
};

vec4 frag () {
vec4 col = mainColor * texture(mainTexture, v_uv);
CC_APPLY_FOG(col, v_position);
return CCFragOutput(col);
}
}%

这玩意类似计算机网络教材,你懂了就能看懂教材。你不懂就看不懂教材。至于怎么才能懂,你别问

是不是资源管理器右键创建的 effect 不是 sprite 的啊

unbound uniform buffer

mainTexture 设置了吗?

设置了的。

你这个shader给sprite用了???2d组件都不能和世界矩阵相乘的,除非你确定使用本地坐标

自己学着玩的话不都是去internal文件夹复制一个默认的材质出来自己一边改一边看效果吗 :rofl: :rofl:,default_materials了解一下朋友,2d材质了解一下 朋友:rofl: :rofl:

如果你是直接右键生成的,但是不显示,大概率是因为这段image。删掉这一段就可以了image

先一段一段代码注释掉,然后进行排查,或者让ai过一下代码,报错也说一下,看ai解决