入门 shader 中,但写了个最简单的 effect 没生效

目的是把节点渲染成绿色,但是运行后节点看不到了,还会有警告出来:

shader 是这样写的(effect.effect):

CCEffect %{
  techniques:
  - name: opaque
    passes:
    - vert: vs:vert
      frag: fs:frag
}%


CCProgram vs %{
  precision highp float;
  #include <builtin/uniforms/cc-global>
  #include <builtin/uniforms/cc-local>
  in vec3 a_position;
  
  vec4 vert() {
    vec4 pos = cc_matViewProj * cc_matWorld * vec4(a_position, 1.0);
    return  pos;
  }
}%

CCProgram fs %{
  precision highp float;

  vec4 frag() {
    return vec4(0.0, 1.0, 0.0, 1.0);
  }
}%


节点如下:

材质:

想要从最简单的形式学 CC 里的 Shader 开发,结果滑铁卢了 :scream:,求大佬指教是啥原因?

之前做过两期最简单的shader入门视频,讲了如何制作闪白特效,有兴趣可以看看
Cocos Creator 3.8 Shader新手入门 1-1 闪白特效-哔哩哔哩
Cocos Creator 3.8 Shader新手入门 1-2闪白特效-哔哩哔哩

十有■■是因为图片打包了,把那个package去掉

没有哈,看了下那个图片文件没有勾选配置为Bundle:

好的马上去看~

典中典,我之前也是这样,还发了个贴。大概率就是packable的勾选问题

1赞

不是的,找到原因了,顶点着色器得改为这样才行:

CCProgram vs %{
  precision highp float;
  #include <cc-global>
  #if USE_LOCAL
    #include <cc-local>
  #endif
  in vec3 a_position;
  
  vec4 vert() {
    vec4 pos = vec4(a_position, 1);

    #if USE_LOCAL
      pos = cc_matWorld * pos;
    #endif

    pos = cc_matViewProj * pos;
    
    return  pos;
  }
}%