const renderEngine = cc.renderer.renderEngine;
const renderer = renderEngine.renderer;
let CustomMaterial = require('CustomMaterial');
const shader = {
name: 'Laser',
params: [
{ name: 'color', type: renderer.PARAM_FLOAT3,defaultValue: new cc.Vec3(0,0,1)},
],
start() {
},
update(sprite, material) {
},
defines:[],
vert: `
uniform mat4 viewProj;
attribute vec3 a_position;
attribute vec2 a_uv0;
varying vec2 uv0;
void main () {
vec4 pos = viewProj * vec4(a_position, 1);
gl_Position = pos;
uv0 = a_uv0;
}`,
frag:`
uniform sampler2D texture;
uniform vec3 color;
varying vec2 uv0;
void main()
{
vec4 src_color = texture2D(texture, uv0);
src_color.rgb *= color.xyz;
if(uv0.x < 0.45) {
src_color.a = uv0.x;
}else if (uv0.x > 0.55) {
src_color.a = (1 - uv0.x);
}else {
src_color.r += 0.1 + uv0.x;
src_color.g += 0.1 + uv0.x;
src_color.b += 0.1 + uv0.x;
}
gl_FragColor = src_color;
}`,
};
CustomMaterial.addShader(shader);
使用了ShaderHelper的模版。
模拟器一直没问题,但是一到浏览器和真机就会失效
报错“Failed to use program: has not linked yet.”
然而我不知道如何定位这个问题,求助
,最后发现是精度问题。