【cocos2d-x 2.x 学习与应用总结】12: cocos2d-x预定义shader源码
来源:互联网 发布:云梦网络建站怎么样 编辑:程序博客网 时间:2024/04/30 21:01
前言
本文把cocos2d-x 2.x版本中预定义的所有shader源码贴出来,便于集中参考。作者的引擎版本是2.2.3.
下面以ccShaders.h中定义的片段着色器变量名作为标题,逐条列出。(为什么不用顶点着色器的变量名,因为有几个shader只有片段着色器变量名)
ccPosition_uColor_frag
ccShader_Position_uColor_vert.h
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
#ifdef GL_ES precision lowp float; #endif varying vec4 v_fragmentColor; void main() { gl_FragColor = v_fragmentColor; }
ccPositionColor_frag
ccShader_PositionColor_vert.h
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
#ifdef GL_ES precision lowp float; #endif varying vec4 v_fragmentColor; void main() { gl_FragColor = v_fragmentColor; }
ccPositionTexture_frag
ccShader_PositionTexture_vert.h
attribute vec4 a_position; attribute vec2 a_texCoord; #ifdef GL_ES varying 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
#ifdef GL_ES precision lowp float; #endif varying vec2 v_texCoord; uniform sampler2D CC_Texture0; void main() { gl_FragColor = texture2D(CC_Texture0, v_texCoord); }
ccPositionTextureA8Color_frag
ccShader_PositionTextureA8Color_vert.h
attribute vec4 a_position; attribute vec2 a_texCoord; attribute vec4 a_color; #ifdef GL_ES varying lowp vec4 v_fragmentColor; varying 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
#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 ); }
ccPositionTextureColor_frag
ccShader_PositionTextureColor_vert.h
attribute vec4 a_position; attribute vec2 a_texCoord; attribute vec4 a_color; #ifdef GL_ES varying lowp vec4 v_fragmentColor; varying 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
#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);}
ccPositionTextureColorAlphaTest_frag
ccShader_PositionTextureColorAlphaTest_frag.h
#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; }
ccPositionTexture_uColor_frag
ccShader_PositionTexture_uColor_vert.h
attribute vec4 a_position; attribute vec2 a_texCoord; #ifdef GL_ES varying 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
#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;}
ccExSwitchMask_frag
ccShaderEx_SwitchMask_frag.h
#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; }
ccPositionColorLengthTexture_frag
ccShader_PositionColorLengthTexture_vert.h
#ifdef GL_ES attribute mediump vec4 a_position; attribute mediump vec2 a_texcoord; attribute mediump vec4 a_color; varying mediump vec4 v_color; varying 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
#ifdef GL_ES // #extension GL_OES_standard_derivatives : enable varying mediump vec4 v_color; varying 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 }
作者水平有限,对相关知识的理解和总结难免有错误,还望给予指正,非常感谢!
在这里也能看到这篇文章:github博客, CSDN博客, 欢迎访问
- 【cocos2d-x 2.x 学习与应用总结】12: cocos2d-x预定义shader源码
- 【cocos2d-x 2.x 学习与应用总结】10: cocos2d-x自带的shader及其使用
- 【cocos2d-x 2.x 学习与应用总结】14: 自定义shader绘制混合颜色的矩形
- 【cocos2d-x 3.x 学习与应用总结】2: 在cocos2d-x中使用ccbi
- cocos2d-x 学习应用
- 【cocos2d-x 学习与应用总结】最近一段时间使用cocos2d-x lua的总结
- Cocos2d-x shader学习1: 灰度shader
- Cocos2d-x shader学习1: 灰度shader
- 【cocos2d-x 2.x 学习与应用总结】11: 理解CCGLProgram
- 【cocos2d-x 2.x 学习与应用总结】13: 借助CCGLProgram实现自定义绘制
- cocos2d-x shader
- Cocos2d-X的shader
- 【cocos2d-x 源码解析】shader 实现
- cocos2d-x,CCArray源码学习
- Cocos2d-x shader学习2: 模糊(Blur)
- cocos2d-x shader(1)-基本概念与使用
- 【cocos2d-x 3.x 学习与应用总结】3: CallFunc系列
- 【cocos2d-x 3.x 学习与应用总结】4: 理解CC_CALLBACK_0, CC_CALLBACK_1, CC_CALLBACK_2, CC_CALLBACK_3
- CSS之基础知识
- mysql 的表
- javax.el.PropertyNotFoundException: Property 'name' not found on type java.lang.String
- win10清理自带xbox,天气等应用
- 视频播放器
- 【cocos2d-x 2.x 学习与应用总结】12: cocos2d-x预定义shader源码
- Scala函数(一)
- 基于RSA算法实现软件注册码原理初讨
- 【JavaWeb Structs2学习】 result设置以及默认Action设置
- Eclipse开发JAVA中如何Debug
- xshell工具介绍
- linux who命令
- 矩阵相似的意义和解释
- HDU1242 Rescue(BFS松弛)