大佬教程收集整理的这篇文章主要介绍了【cocos2d-x 2.x 学习与应用总结】12: cocos2d-x预定义shader源码,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
本文把cocos2d-x 2.x版本中预定义的所有shader源码贴出来,便于集中参考。作者的引擎版本是2.2.3.
下面以ccShaders.h中定义的片段着色器变量名作为标题,逐条列出。(为什么不用顶点着色器的变量名,因为有几个shader只有片段着色器变量名)
ccShader_Position_uColor_vert.h@H_616_11@
attribute vec4 a_position;
uniform vec4 u_color;
uniform float u_pointSize;
#ifdef GL_ES
varying lowp vec4 v_fragmentColor;
#else
varying vec4 v_fragmentColor;
#endif
void main()
{
gl_Position = CC_MVPMatrix * a_position;
gl_PointSize = u_pointSize;
v_fragmentColor = u_color;
}
ccShader_Position_uColor_frag.h@H_616_11@
#ifdef GL_ES
precision lowp float;
#endif
varying vec4 v_fragmentColor;
void main()
{
gl_FragColor = v_fragmentColor;
}
ccShader_PositionColor_vert.h@H_616_11@
attribute vec4 a_position;
attribute vec4 a_color;
#ifdef GL_ES
varying lowp vec4 v_fragmentColor;
#else
varying vec4 v_fragmentColor;
#endif
void main()
{
gl_Position = CC_MVPMatrix * a_position;
v_fragmentColor = a_color;
}
ccShader_PositionColor_frag.h@H_616_11@
#ifdef GL_ES
precision lowp float;
#endif
varying vec4 v_fragmentColor;
void main()
{
gl_FragColor = v_fragmentColor;
}
ccShader_Positiontexture_vert.h@H_616_11@
attribute vec4 a_position;
attribute vec2 a_texCoord;
#ifdef GL_ES
varying @H_178_14@mediump vec2 v_texCoord;
#else
varying vec2 v_texCoord;
#endif
void main()
{
gl_Position = CC_MVPMatrix * a_position;
v_texCoord = a_texCoord;
}
ccShader_Positiontexture_frag.h@H_616_11@
#ifdef GL_ES
precision lowp float;
#endif
varying vec2 v_texCoord;
uniform sampler2D CC_Texture0;
void main()
{
gl_FragColor = texture2D(CC_Texture0,v_texCoord);
}
ccShader_PositiontextureA8Color_vert.h@H_616_11@
attribute vec4 a_position;
attribute vec2 a_texCoord;
attribute vec4 a_color;
#ifdef GL_ES
varying lowp vec4 v_fragmentColor;
varying @H_178_14@mediump vec2 v_texCoord;
#else
varying vec4 v_fragmentColor;
varying vec2 v_texCoord;
#endif
void main()
{
gl_Position = CC_MVPMatrix * a_position;
v_fragmentColor = a_color;
v_texCoord = a_texCoord;
}
ccShader_PositiontextureA8Color_frag.h@H_616_11@
#ifdef GL_ES
precision lowp float;
#endif
varying vec4 v_fragmentColor;
varying vec2 v_texCoord;
uniform sampler2D CC_Texture0;
void main()
{
gl_FragColor = vec4( v_fragmentColor.rgb,// RGB from uniform
v_fragmentColor.a * texture2D(CC_Texture0,v_texCoord).a // A from texture & uniform
);
}
ccShader_PositiontextureColor_vert.h@H_616_11@
attribute vec4 a_position;
attribute vec2 a_texCoord;
attribute vec4 a_color;
#ifdef GL_ES
varying lowp vec4 v_fragmentColor;
varying @H_178_14@mediump vec2 v_texCoord;
#else
varying vec4 v_fragmentColor;
varying vec2 v_texCoord;
#endif
void main()
{
gl_Position = CC_MVPMatrix * a_position;
v_fragmentColor = a_color;
v_texCoord = a_texCoord;
}
ccShader_PositiontextureColor_frag.h@H_616_11@
#ifdef GL_ES
precision lowp float;
#endif
varying vec4 v_fragmentColor;
varying vec2 v_texCoord;
uniform sampler2D CC_Texture0;
void main()
{
gl_FragColor = v_fragmentColor * texture2D(CC_Texture0,v_texCoord);
}
ccShader_PositiontextureColorAlphatest_frag.h@H_616_11@
#ifdef GL_ES
precision lowp float;
#endif
varying vec4 v_fragmentColor;
varying vec2 v_texCoord;
uniform sampler2D CC_Texture0;
uniform float CC_alpha_value;
void main()
{
vec4 texColor = texture2D(CC_Texture0,v_texCoord);
// mimic: glAlphaFunc(GL_GREATER)
// pass if ( incoming_pixel >= CC_alpha_value ) => fail if incoming_pixel < CC_alpha_value
if ( texColor.a <= CC_alpha_value )
discard;
gl_FragColor = texColor * v_fragmentColor;
}
ccShader_Positiontexture_uColor_vert.h@H_616_11@
attribute vec4 a_position;
attribute vec2 a_texCoord;
#ifdef GL_ES
varying @H_178_14@mediump vec2 v_texCoord;
#else
varying vec2 v_texCoord;
#endif
void main()
{
gl_Position = CC_MVPMatrix * a_position;
v_texCoord = a_texCoord;
}
ccShader_Positiontexture_uColor_frag.h@H_616_11@
#ifdef GL_ES
precision lowp float;
#endif
uniform vec4 u_color;
varying vec2 v_texCoord;
uniform sampler2D CC_Texture0;
void main()
{
gl_FragColor = texture2D(CC_Texture0,v_texCoord) * u_color;
}
@H_696_494@ccExSwitchMask_frag
ccShaderEx_SwitchMask_frag.h@H_616_11@
#ifdef GL_ES
precision lowp float;
#endif
varying vec4 v_fragmentColor;
varying vec2 v_texCoord;
uniform sampler2D u_texture;
uniform sampler2D u_mask;
void main()
{
vec4 texColor = texture2D(u_texture,v_texCoord);
vec4 maskColor = texture2D(u_mask,v_texCoord);
vec4 finalColor = vec4(texColor.r,texColor.g,texColor.b,maskColor.a * texColor.a);
gl_FragColor = v_fragmentColor * finalColor;
}
ccShader_PositionColorLengthTexture_vert.h@H_616_11@
#ifdef GL_ES
attribute @H_178_14@mediump vec4 a_position;
attribute @H_178_14@mediump vec2 a_texcoord;
attribute @H_178_14@mediump vec4 a_color;
varying @H_178_14@mediump vec4 v_color;
varying @H_178_14@mediump vec2 v_texcoord;
#else
attribute vec4 a_position;
attribute vec2 a_texcoord;
attribute vec4 a_color;
varying vec4 v_color;
varying vec2 v_texcoord;
#endif
void main()
{
v_color = vec4(a_color.rgb * a_color.a,a_color.a);
v_texcoord = a_texcoord;
gl_Position = CC_MVPMatrix * a_position;
}
ccShader_PositionColorLengthTexture_frag.h@H_616_11@
#ifdef GL_ES
// #extension GL_OES_standard_derivatives : enable
varying @H_178_14@mediump vec4 v_color;
varying @H_178_14@mediump vec2 v_texcoord;
#else
varying vec4 v_color;
varying vec2 v_texcoord;
#endif
void main()
{
// #if Defined GL_OES_standard_derivatives
// gl_FragColor = v_color*smoothstep(0.0,length(fwidth(v_texcoord)),1.0 - length(v_texcoord));
// #else
gl_FragColor = v_color*step(0.0,1.0 - length(v_texcoord));
// #endif
}
作者水平有限,对相关知识的理解和总结难免有错误,还望给予指正,非常感谢!@H_616_11@
以上是大佬教程为你收集整理的【cocos2d-x 2.x 学习与应用总结】12: cocos2d-x预定义shader源码全部内容,希望文章能够帮你解决【cocos2d-x 2.x 学习与应用总结】12: cocos2d-x预定义shader源码所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。