Skip to content

Instantly share code, notes, and snippets.

@goodzsq
Created August 14, 2014 03:05
Show Gist options
  • Save goodzsq/acfb15f04f3d47ed2af3 to your computer and use it in GitHub Desktop.
Save goodzsq/acfb15f04f3d47ed2af3 to your computer and use it in GitHub Desktop.
[JSB]shader
if(!cc.GLProgram.createWithByteArrays){
cc.GLProgram.createWithByteArrays = function(vert, frag){
var shader = cc.GLProgram.create();
shader.initWithVertexShaderByteArray(vert, frag);
shader.link();
shader.updateUniforms();
setTimeout(function(){
shader.link();
shader.updateUniforms();
}, 0);
return shader;
}
}
var isHtml5 = (typeof document !== 'undefined');
var SHADER_POSITION_GRAY_FRAG =
"varying vec4 v_fragmentColor;\n"+
"varying vec2 v_texCoord;\n"+
(isHtml5? "uniform sampler2D CC_Texture0;\n":"")+
"void main()\n"+
"{\n"+
" vec4 v_orColor = v_fragmentColor * texture2D(CC_Texture0, v_texCoord);\n"+
" float gray = dot(v_orColor.rgb, vec3(0.299, 0.587, 0.114));\n"+
" gl_FragColor = vec4(gray, gray, gray, v_orColor.a);\n"+
"}\n";
var SHADER_POSITION_GRAY_VERT =
"attribute vec4 a_position;\n"+
"attribute vec2 a_texCoord;\n"+
"attribute vec4 a_color;\n"+
"\n"+
"varying vec4 v_fragmentColor;\n"+
"varying vec2 v_texCoord;\n"+
"\n"+
"void main()\n"+
"{\n"+
"gl_Position = "+ (isHtml5?"(CC_PMatrix * CC_MVMatrix)":"CC_PMatrix") + " * a_position;\n"+
"v_fragmentColor = a_color;\n"+
"v_texCoord = a_texCoord;\n"+
"}";
function graySprite(sprite){
var shader = cc.GLProgram.createWithByteArrays(SHADER_POSITION_GRAY_VERT, SHADER_POSITION_GRAY_FRAG);
shader.addAttribute(cc.ATTRIBUTE_NAME_POSITION, cc.VERTEX_ATTRIB_POSITION);
shader.addAttribute(cc.ATTRIBUTE_NAME_COLOR, cc.VERTEX_ATTRIB_COLOR);
shader.addAttribute(cc.ATTRIBUTE_NAME_TEX_COORD, cc.VERTEX_ATTRIB_TEX_COORDS);
sprite.setGLProgram(shader);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment