Cocos Creator Shader工具
来源:互联网 发布:数据库的外键怎么设置 编辑:程序博客网 时间:2024/05/25 12:22
十一就这样过去了,没什么大成就,但还是写个总结吧。前几天用Cocos Creator写一个demo,涉及到了shader开发,而cocos一直没有好用的shader工具,就心血来潮要自己开发一个。花了两天时间,模拟Unity Shader完成了一套基本的材质框架,由于不知道怎么扩展编辑器,就没写工具,后面等Cocos Creator的编辑器扩展功能更完善一些再说。
源码已经放到github了,戳这里。shader的语法类似于Unity Shader,详细的说明已经写在github项目主页了,大致如下:
Shader "SimpleShader" { Properties{ // 材质属性 _MainTex("Main Tex", texture) = ""; _Color("Main Color", color) = (1, 1, 1, 1); } SubShader{ Pass{ // 变种shader宏列表。shader会根据宏的排列组合,生成不同版本的shader variants = (ENABLE_COLOR, ENABLE_TEXTURE); // 顶点着色器源码 vsh = ` attribute vec4 a_position; attribute vec2 a_texCoord; varying vec2 v_texCoord; void main() { gl_Position = CC_PMatrix * a_position; v_texCoord = a_texCoord; } `; // 片段着色器源码 fsh = ` #ifdef GL_ES precision mediump float; #endif #ifdef ENABLE_TEXTURE varying vec2 v_texCoord; uniform sampler2D _MainTex; #endif #ifdef ENABLE_COLOR uniform vec4 _Color; #endif void main() { vec4 color = vec4(1, 1, 1, 1); #ifdef ENABLE_TEXTURE color = texture2D(_MainTex, v_texCoord); #endif #ifdef ENABLE_COLOR color *= _Color; #endif gl_FragColor = color; } `; } }}
材质格式如下:
{ "shaderPath" : "resources/shaders/simple-shader.shader", "values" : { "_MainTex" : "resources/textures/tex00.jpg", "_Color" : [1, 0, 0, 1] }, "variants" : ["ENABLE_COLOR", "ENABLE_TEXTURE"]}
源码中包含一套简单的材质框架,和一个shader(非glsl)语法解析器。工具会根据shader文件中提供的变种宏列表,生成不同的着色器对象(GLProgram),材质系统用宏列表去匹配合适的着色器对象,然后合成GLProgramState,最后赋予Node。
阅读全文
0 0
- Cocos Creator Shader工具
- cocos creator shader用法
- cocos creator 中使用自定义shader
- cocos creator 中使用自定义shader
- cocos creator http工具类
- Cocos Creator 实现按钮图标的流光特效(Shader)
- cocos 出了个新工具 cocos creator 记录下.
- cocos creator
- cocos Creator
- cocos creator发布
- Cocos Creator问题汇总
- Cocos Creator常见问题汇总
- Cocos Creator 介绍
- Cocos Creator 控制面板
- Cocos Creator 点击事件
- cocos creator关于scrollView
- Cocos Creator 自定义事件
- cocos Creator碰撞检测
- Eclipse里maven项目解决An error occurred while filtering resources错误
- 静态链表--简单操作
- 图灵奖设立50周年,向伟大的计算机科学家们致
- 常用采样方法
- Matlab、C混合编程(Matlab调用C)
- Cocos Creator Shader工具
- 【STM32小案例 07 】STM32完美可用的延时程序,自用延时程序库,直接调用
- CPU
- 关于Navicate life 修改表中字段,删除字段,修改字段无响应的处理。
- Lesson 2:作业5:描述cpu的速度与硬盘的容量
- c语言
- 2017图灵奖获得者Tim Berners-Lee:必须让全球剩下80%地区尽快上网
- jvisualvm安装visualgc插件(java.net网站已关闭)
- 剑指offer--从尾到头打印链表