欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

笑容逐渐消失? shader 编程入门实战 ! Cocos Creator!

程序员文章站 2022-07-14 11:41:58
...

笑容逐渐消失? shader 编程入门实战 ! Cocos Creator!

编程斗图!随手拈来!文章底部获取完整代码!

笑容逐渐消失? shader 编程入门实战 ! Cocos Creator!

效果预览

笑容逐渐消失? shader 编程入门实战 ! Cocos Creator!

为了实现这个效果,需要准备两张相近的图片。

笑容逐渐消失? shader 编程入门实战 ! Cocos Creator!

在 Cocos Creator 编辑器中,新建一个材质 MaterialEffect 选择为 gradient,拖入两张图片。

笑容逐渐消失? shader 编程入门实战 ! Cocos Creator!

新建一个 Sprite 节点,拖入材质。

笑容逐渐消失? shader 编程入门实战 ! Cocos Creator!

接着再写个脚本,定时控制 Sprite 材质中的混合因子。

update(dt) {
  // sp :cc.Sprite
  let material = sp['sharedMaterials'][0];
  if (material) {
      this._gradient_value = (this._gradient_value + 0.003) % 1;
      material.setProperty('gradient_value', this._gradient_value);
  }
}

那么shader effect是如何实现的呢?

片元着色器根据变化的混合因子,从两幅纹理中采样得到的颜色,按照比例混合,就能实现图片平滑过度的效果了。片元着色器代码参考如下。

void main () {
  vec4 o_first = vec4(1, 1, 1, 1);
  vec4 o_last = vec4(1, 1, 1, 1);


  #if USE_TEXTURE
    o_first *= texture2D(texture_first, v_uv0);
    o_last *= texture2D(texture_last, v_uv0);
  #endif


  o_first *= v_color;
  o_last *= v_color;


  gl_FragColor = o_first * (1.0 - gradient_value) + o_last * gradient_value;
}


以上为白玉无冰使用 Cocos Creator v2.2.2 开发"图像渐变-shader"的技术分享。有什么想法欢迎留言交流!如果这篇对你有点帮助,欢迎分享给身边的朋友。


用鼠标编辑的多边形裁剪! gizmo 插件入门 ! Cocos Creator!

使用卷积实现各种滤镜效果!shader 编程实战!Cocos Creator!

飘扬的旗帜!shader 编程实战!Cocos Creator!

如何实现高抛平抛发射?从抛物线说起!Cocos Creator!

为何你的弹球如丝般顺滑?不停歇的球!技术分享!源码相送!

2D / 3D 往期精选!附送 github 地址!Cocos Creator !

笑容逐渐消失? shader 编程入门实战 ! Cocos Creator!

原创不易!转载请保留文末二维码,以及完整代码获取方式!

完整代码:https://github.com/baiyuwubing/cocos-creator-examples/tree/master/gradient

点击阅读原文查看完整代码

我就知道你“在看”▼