cocos creator shader 入门教程3:实现一个左右不同颜色的shader

简介: cocos creator shader 入门教程3:实现一个左右不同颜色的shader

我们先看一下本教程的目标,最终要实现的效果如下:


image.png


在一个矩形区域,左右各显示不同的颜色。


在跟着操作的时候,请在脑海中仔细回想下第一节课的webgl代码,这对你理解engine背后的实现原理非常有帮助!


准备工作


  1. 在资源管理器中,分别新建一个HelloEffectHelloMaterial


  1. image.png


  1. 修改HelloMaterial属性,选择使用HelloEffect


  1. image.png


  1. 新建一个场景,添加一个Sprite到场景中,修改Sprit的Material为HelloMaterial


image.png


经过以上的操作,我们在场景中就添加了一个Sprite,这个Sprite我们可以修改HelloEffect改变渲染逻辑,修改HelloMaterial改变渲染的参数。


让Sprite显示红色


如果你对第一节还有印象,那么我们要做的就是修改effect的fs即可


CCProgram fs %{
    void main(){
        gl_FragColor=vec4(1,0,0,1);
    }
}%


是的,就是这么暴力,没有那么多乱七八糟的代码,main中只有这一行代码足矣,此时你会在Creator中看到一个红色的矩形。


image.png


将颜色变为可配置属性


如果调整颜色每次都修改Effect,那么这个Effect就没有什么使用的价值。


想要自由调整颜色,我们就需要把这个颜色值变为参数,在Effect中我们这样书写:


CCEffect%{
  techniques:
  - pass:
    - vert: vs
      properties:
        myColor: { value: [1,1,1,1] } # 暴露给编辑器和engine
}%


CCProgram fs %{
  uniform Hello {
    vec4 myColor; // 定义同名的uniform变量
  }; // 这里的;不能少,否则报错error EFX2209
  void main(){
    gl_FragColor = myColor; 
  }
}%


如果一切顺利,在HelloMaterial中你就会看到这个"uniform参数":


image.png


你可以尝试着修改下myColor的值,场景里面会实现反馈修改后的结果,当你发生修改后,需要应用这个修改,还记得之前我们对Material的理解么,这个应用其实就是在保存配置。


左右颜色各不同shader


经过以上的学习,要实现如下的效果其实就没什么难度了。


image.png


这里我就不再仔细讲解了,仅仅贴一些关键的核心Effect代码:


CCEffect%{
  techniques:
  - pass:
    - vert: vs
      properties:
        colorLeft: { value: [0,1,0,1] } 
        colorLeft: { value: [1,0,0,1] } 
}%


CCProgram fs %{
  uniform Hello {
    vec4 colorLeft; 
    vec4 colorRight; 
  }; 
  void main(){
    if(v_uv0.x < 0.5){
        gl_FragColor = colorLeft;
    }else{
        gl_FragColor = colorRight;
    }
  }
}%
目录
相关文章
|
11天前
|
Android开发 开发者
Android开发之OpenGL的画笔工具GL10
这篇文章简述了OpenGL通过GL10进行三维图形绘制,强调颜色取值范围为0.0到1.0,背景和画笔颜色设置方法;介绍了三维坐标系及与之相关的旋转、平移和缩放操作;最后探讨了坐标矩阵变换,包括设置绘图区域、调整镜头参数和改变观测方位。示例代码展示了如何使用这些方法创建简单的三维立方体。
12 1
Android开发之OpenGL的画笔工具GL10
|
4月前
|
计算机视觉
CocosCreator 面试题(十九) Cocos Creator 材质 shader 分别是什么?
CocosCreator 面试题(十九) Cocos Creator 材质 shader 分别是什么?
|
11月前
|
JavaScript
[✔️]cocos creator shader 入门教程2:webgl动起来
[✔️]cocos creator shader 入门教程2:webgl动起来
183 0
|
11月前
|
前端开发 JavaScript 异构计算
cocos creator shader 入门教程1:28行代码webgl程序,带你极速入门
cocos creator shader 入门教程1:28行代码webgl程序,带你极速入门
319 0
|
算法 Java 程序员
Unity Shader 概述
Unity Shader 概述
159 0
Unity Shader 概述
|
机器人 C# 图形学
Unity Shader Graph 制作Dissolve溶解效果
Unity Shader Graph 制作Dissolve溶解效果
193 0
Unity Shader Graph 制作Dissolve溶解效果
|
图形学
Unity Shader Graph 制作扫光效果
Unity Shader Graph 制作扫光效果
456 0
Unity Shader Graph 制作扫光效果
|
图形学
Unity Shader Graph 制作 Fade 淡入淡出效果
Unity Shader Graph 制作 Fade 淡入淡出效果
516 1
Unity Shader Graph 制作 Fade 淡入淡出效果
|
C语言 异构计算
OpenGL shader 程序基础
Shader, 即着色器,是一种类C语法的程序,用于封装硬件相关部分的代码。与普通程序的区别在于 shader 是通过GPU来执行的。 需要给GPU而不是CPU写程序的原因是GPU在处理图形相关运算时远远快于CPU。 不同的 shader 程序在使用时编译成本机硬件支持的机器指令。
190 0
|
图形学
【Unity3D Shader】学习笔记-位移动画
Unity3D Shader学习笔记系列,由于是个人理解后写的,因此可能会出现描述错误,理解不到位的地方。另外没有完全从基础的知识开始,对于刚开始学习的同学还需要看更基础的知识进行补充。 一、顶点动画 将顶点的坐标与三角函数进行算术运算,就可以得到一个在原始位置“左右上下”来回的动画效果。还可以通过定义一个_Direction方向向量来进行来回摆动方向。
455 0
【Unity3D Shader】学习笔记-位移动画