帮我写一个cocoscreator2.4.x的发光shader
时间: 2023-10-02 16:09:44 浏览: 235
好的,我可以为您提供一个基于 cocoscreator 2.4.x 的发光 shader。以下是代码:
CCEffect %{
techniques:
- name: glow
passes:
- vert: ccShader_PositionTextureColor_vert
frag: glow_frag
}
%}
CCProgram glow {
CCShader_PositionTextureColor_vert,
highp vec4 blurSize;
void main() {
mat4 mvp;
CC_USE_MVP(mvp);
gl_Position = mvp * vec4(a_position, 1);
v_fragmentColor = a_color;
v_texCoord = a_texCoord;
}
CCShader_Header {
uniform highp vec4 blurSize;
varying lowp vec4 v_fragmentColor;
varying mediump vec2 v_texCoord;
const highp float glowPow = 2.0;
const highp float glowStrength = 0.5;
}
CCShader glow_frag {
highp vec4 blurSize;
highp float blurRadius = 2.0;
void main() {
highp vec4 sum = vec4(0.0);
highp vec2 texcoord = v_texCoord.xy;
highp vec2 blur = blurSize.xy;
highp float strength = blurSize.z;
highp float glow = blurSize.w;
highp float samples = 8.0;
highp vec4 col = texture2D(CC_Texture0, texcoord);
for (highp float i = 0.0; i < samples; i++) {
highp float angle = i / samples * 3.14159265 * 2.0;
highp vec2 blurDirection = vec2(sin(angle), cos(angle));
highp vec4 blurCol = texture2D(CC_Texture0, texcoord + blurDirection * blurRadius * blur);
sum += blurCol;
}
highp vec4 glowCol = sum / samples;
glowCol = (glowCol - col) * glow * glowPow + col;
gl_FragColor = mix(col, glowCol, strength) * v_fragmentColor;
}
}
}
您可以将此代码添加到您的 cocoscreator 2.4.x 项目中,然后将此 shader 应用于需要发光效果的 sprite 上。希望这可以帮到您!
相关推荐


















