Creator3D:shader4_通向深渊的路

前言

看标题挺牛逼的,那么到底是个啥玩意呢。往下读

效果展示

正文

1.说明

看完效果大家知道是啥玩意了嘛。实际效果就是利用shader实现一个透明度变化的效果,变化规则是根据摄像机的距离,透明度从1到0的一个变化过程

2.实现

先给大家上代码:

CCEffect %{
  techniques:
  - name: opaque
    passes:
    - vert: general-vs:vert # builtin header
      frag: unlit-fs:frag
      properties: &props
        mainTexture:    { value: white }
        mainColor:      { value: [1, 1, 1, 1], editor: { type: color } }
  - name: transparent
    passes:
    - vert: general-vs:vert # builtin header
      frag: unlit-fs:frag
      blendState:
        targets:
        - blend: true
          blendSrc: src_alpha
          blendDst: one_minus_src_alpha
          blendSrcAlpha: src_alpha
          blendDstAlpha: one_minus_src_alpha
      properties: *props
}%

CCProgram unlit-fs %{
  precision highp float;
  #include <output>
  #include <cc-global>

  in vec2 v_uv;
  in vec3 v_position;
  uniform sampler2D mainTexture;

  uniform Constant {
    vec4 mainColor;
  };

  vec4 frag () {
    float dis=distance(cc_cameraPos.xyz,v_position);
    //随着距离增大,透明度变小
    float apha=1.0-(dis-5.0)/50.0;;
    vec3 color=mainColor.xyz;
    return CCFragOutput(vec4(color,apha) * texture(mainTexture, v_uv));
  }
}%

看完代码,是不是会发现,以上代码和你新创建的一个effec文件相比,只有4行代码不一样。

  //cc_cameraPos  creator内部提供的,相机的位置,注意需要导入#include <cc-global>
  //逐个顶点判断与摄像机的距离
  float dis=distance(cc_cameraPos.xyz,v_position);
  //随着距离增大,透明度变小
  //5.0  表示从距离摄像机5.0后开始透明度变化
  //50.0表示透明度从1-0的距离为50
  //两个参数大家都可以修改
  float apha=1.0-(dis-5.0)/50.0;;
  vec3 color=mainColor.xyz;
  return CCFragOutput(vec4(color,apha) * texture(mainTexture, v_uv));

注:
大家注意了,从代码中发现我们是有两个pass:opaque和transparent,两个的区别在于transparent继承了opaque的特性,但是transparent开启了混合模式,在这里也就是允许改变透明度,而opaque是不可以设置透明度的。

3.地址

  • gitee:
    玩游戏时发现的,不在计划之内,所以这节没有体验demo
  • 微信公众号:搬砖小菜鸟

    扫码关注公众号,更多内容任你看
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穿越的杨宗宝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值