CocosCreator Shader 内发光效果

说到内发光效果,以前大多是用滤镜实现,一般场合,比如背包道具品质颜色,就够用了;
而且经常都是没做发光效果,只有颜色边框,根据品质换道具背景图就行;
但是,每个策划/ui/产品的要求都会千变万化的,而且不是所有技术平台/引擎都自带滤镜功能,咱还是多掌握一种方式比较好,所以shader内发光就来了,哈哈;

首先声明,这篇文章所有思路都是参考自简书的某篇文章,附上链接:https://www.jianshu.com/p/326b73f86ecc
作者写了一系列的shader文章,很有参考价值,推荐大家要思路可以参考作者文章;

本篇不会重复别人家的思路,只是记录一下实现别人思路时遇到的一些问题,主要是关于GLSL的初学者容易遇到:
  1. 每行代码结尾一定要写分号:这个有时候忘记了就比较浪费时间排错;因为很多语言对分号不是严格,所以养成坏习惯的要改改了
  2. float int 不可以互操作:用惯了可以互操作的语言的同学,需要一段时间适应;与float类型互操作时一定要写1.0, 0.0等;
  3. for循环语句,如果len是float类型还是别叫len了,改成maxXX什么等比较好,不然就容易把循环次数当作len,这个问题也导致我做这个内发光的时候,出现了平均透明度始终>=1的问题(当len = 1.0, i+=0.1的时候), 用float较少的人需要习惯😂

上效果


上代码?

别人家有的代码我是不会上的, 参考人家(上面的链接)的就行啦,站长本人的代码除了使用了for循环之外,与别人家没多大区别;
这篇文章主要是帮助大家踩坑、积累经验、思路;

主要思路:圆圈采样+半径采样