版本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都是先有个正常的,然后往下调一阶段就看看效果,比较容易知道哪一步引起了问题 
我问了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的文档里面也没有写的很详细




