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;
    }
  }
}%
目录
相关文章
|
4月前
|
C# 图形学 C语言
Unity3D学习笔记3——Unity Shader的初步使用
Unity3D学习笔记3——Unity Shader的初步使用
53 0
|
6月前
|
图形学
【实现100个unity特效之2】使用shader和shader Graph实现2d图片描边效果(附源码)
【实现100个unity特效之2】使用shader和shader Graph实现2d图片描边效果(附源码)
338 0
|
7月前
|
缓存 图形学 异构计算
【#Unity Shader#Amplify Shader Editor(ASE)_第二篇】
【#Unity Shader#Amplify Shader Editor(ASE)_第二篇】
|
7月前
|
图形学
【Unity Shader 中SubShader相关介绍】
【Unity Shader 中SubShader相关介绍】
|
7月前
|
图形学
【Unity Shader 中Properties 相关介绍】
【Unity Shader 中Properties 相关介绍】
|
7月前
|
前端开发 图形学
【#Unity Shader#Amplify Shader Editor(ASE)_第一篇】
【#Unity Shader#Amplify Shader Editor(ASE)_第一篇】
|
7月前
|
计算机视觉
CocosCreator 面试题(十九) Cocos Creator 材质 shader 分别是什么?
CocosCreator 面试题(十九) Cocos Creator 材质 shader 分别是什么?
293 0
|
JavaScript
[✔️]cocos creator shader 入门教程2:webgl动起来
[✔️]cocos creator shader 入门教程2:webgl动起来
248 0
|
C++
[✔️]cocos creator shader 入门教程2:Material / Effect
[✔️]cocos creator shader 入门教程2:Material / Effect
340 0
|
前端开发 JavaScript 异构计算
cocos creator shader 入门教程1:28行代码webgl程序,带你极速入门
cocos creator shader 入门教程1:28行代码webgl程序,带你极速入门
471 0