算bug 吗?

  • 文档版本:3.8.6
    编辑器和浏览器跑出来效果不一样。以下是effect文件
    CCEffect %{
    techniques:
    • passes:
      • vert: sprite-vs:vert
        frag: sprite-fs:frag
        USE_LOCAL: true
        depthStencilState:
        depthTest: false
        depthWrite: false
        blendState:
        targets:
        • blend: true
          blendSrc: src_alpha
          blendDst: one_minus_src_alpha
          blendDstAlpha: one_minus_src_alpha
          rasterizerState:
          cullMode: none
          properties:
          u_numTiles: { value: [9,16] }
          u_reverse: { value: 0.0 }
          u_progress: { value: 0.0 }
          }%

CCProgram sprite-vs %{
precision mediump float;
#include <builtin/uniforms/cc-global>
#if USE_LOCAL
#include <builtin/uniforms/cc-local>
#endif

in vec3 a_position;
in vec2 a_texCoord;
in vec4 a_color;
out vec4 v_light;
out vec2 uv0;

vec4 vert () {
vec4 pos = vec4(a_position, 1);

pos = cc_matViewProj  * pos;

uv0 = a_texCoord;
v_light = a_color;

return pos;

}
}%

CCProgram sprite-fs %{

precision mediump float;
in vec4 v_light;
in vec2 uv0;

#pragma builtin(local)
layout(set = 2, binding = 12) uniform sampler2D cc_spriteTexture;

// Creator 自动生成 UBO,名字固定为 CCProgram 常量名
uniform Effect {
vec2 u_numTiles;
float u_reverse;
float u_progress;
};

vec4 frag () {
vec2 uv = uv0;
vec2 pointInSquare = u_numTiles * uv;
vec2 frac = fract(pointInSquare);
vec2 dis = abs(frac - 0.5);

float manhattan = dis.x + dis.y;

float cond = manhattan + uv.x + uv.y - u_progress * 3.0;

if (cond <= 0.0) discard;

vec4 tex = texture(cc_spriteTexture, uv);
tex *= v_light;

return tex;

}
}%


编辑器和浏览器跑出来效果不一样无脑怀疑Packable

我该相信哪一个,编辑器是我要的效果

image 去掉这个勾


这个面板在哪。哈哈哈


这个面板在哪

你也就遇上我这好人了,不然让你买个tgx才回答你

找到了,谢谢

点击你资源管理器的图片,不是层级管理器

哈哈哈哈哈

谢谢,可以了。学cocos shader真难啊。

(帖子被作者删除,如无标记将在 24 小时后自动删除)

有学习路径吗

没有,你得把opengl 学一遍,然后套入cocos,符合cocos的规范就可以写了,一堆名词要了解一下,比如转换,采样等等