- 文档版本: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 }
}%
- blend: true
- vert: sprite-vs:vert
- passes:
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;
}
}%


去掉这个勾