刚接触shader遇到了问题求大佬们帮忙

版本3.4.1,按照ai写了个流光特效,但是放到sprite上之后sprite直接看不到了

CCEffect %{

techniques:

  • name: flowlight

    passes:

    • vert: flowlight-vs

      frag: flowlight-fs

}%

CCProgram flowlight-vs %{

precision highp float;

uniform UniformBlock {

mat4 cc_matWorld;

mat4 cc_matViewProj;

float cc_time;

};

in vec3 a_position;

in vec2 a_uv0;

in vec4 a_color;

out vec2 v_uv0;

out vec4 v_color;

vec4 vert() {

vec4 pos = vec4(a_position, 1.0);

pos = cc_matWorld * pos;

pos = cc_matViewProj * pos;

v_uv0 = a_uv0;

v_color = a_color;

return pos;

}

void main() {

gl_Position = vert();

}

}%

CCProgram flowlight-fs %{

precision highp float;

uniform UniformBlock {

mat4 cc_matWorld;

mat4 cc_matViewProj;

float cc_time;

};

uniform sampler2D mainTexture;

in vec2 v_uv0;

in vec4 v_color;

layout(location = 0) out vec4 fragColor;

uniform Properties {

vec4 mainColor; // 默认值应在材质中设置

vec4 flowColor; // 默认值应在材质中设置

vec2 flowDirection;

float flowSpeed;

float flowWidth;

float flowIntensity;

float flowFrequency;

};

vec4 frag() {

vec4 baseColor = vec4(texture(mainTexture, v_uv0).rgb, 1.0) * mainColor * v_color;

vec2 dir = normalize(flowDirection);

if (length(flowDirection) == 0.0) {

    dir = vec2(1.0, 0.0);

}

float proj = dot(v_uv0, dir);

float stripe = sin(proj * flowFrequency + cc_time * flowSpeed);

float flowMask = smoothstep(0.0, flowWidth, stripe);

// 调试输出 flowMask 的值

return vec4(vec3(flowMask), 1.0);

}

void main() {

fragColor = frag();

}

}%

这个到底哪里出了问题

现在只要把这个拖进去sprite就会消失,刚开始学shader不知道哪出问题了

AI两下子都给你解决了

对shader不太懂啊,随便说说
我调shader都是先有个正常的,然后往下调一阶段就看看效果,比较容易知道哪一步引起了问题 :sweat_smile:

我问了ai,ai一直在说Alpha值的问题,我这边设置了没有修改Alpha的地方还是不行,我打印的rgba都是255

我在编辑器里看的预览就是一个纯黑的图

这是复制了cocos的内置精灵effect吗,默认的怎么也不应该会把深度测试那些打开的,blend既不是预乘alpha也不是标准叠加.

不是复制的,是我新建了一个然后让ai给我写的,刚开始接触shader不会调就让ai帮忙了

复制内部的,然后让ai改,它可能分不清版本

按照我以往的经验。需要将素材纹理的动态合图勾选去除。很多刚开始使用cocos creator中的都是遇到这个问题。

取消勾选spriteframe的packable


我取消勾选了还是不行

我取消勾选了还是不行

我扫了一眼的你shader代码。 有问题。 和cocos creator的shader规范有出入。 ai我之前也试过,它总是会用glsl的那套去写,没有照着cocoscreator的标准来。

大佬能指点一下哪里的问题吗,我刚接触不太懂这个

我看了cocos的文档里面也没有写的很详细