实时ps混合叠加shader
前言
- 最近社区征文,很多大佬都在秀技术,我感觉自己只上一个小作文有点慌,想了想后将自己以前写的实时ps混合叠加shader上架吧。之前是因为要在游戏场景里加滤镜,需要将在游戏中按照ps里的各种叠加算法实时变化滤镜的效果,于是我就写了这个shader,它可以对精灵或spine多层叠加单色或图片,可以改变亮度对比度,叠加算法实现了变暗、正片叠底、颜色加深、线性加深、变亮、滤色、颜色减淡、线性减淡、叠加、柔光、强光、亮光、线性光、点光、实色混合、差值、排除、减去、划分。可以很高自由度的选择每层叠加的颜色值或者图片。
适用版本和渲染组件
-
目前支持creator3.3以上,以下版本会在后续添加适配支持。
-
目前支持Sprite和spine,其它渲染组件会在后续添加适配支持。
使用方法
- 将psBlendToolsSprite或psBlendToolsSpine材质加到Sprite或sp.Skeleton上,然后根据需要勾选材质上的叠加层,预设了5层叠加和两层修改亮度对比度,其中第4层叠加层是设置的叠加图片,当然如果有需要可以仿照已有叠加层增加或修改。勾选层后选择要叠加的算法,叠加算法分别为:
– 变暗(bianAn)
– 正片叠底(zhengPianDieDi)
– 颜色加深(yanSeJiaShen)
– 线性加深(xianXingJiaShen)
– 变亮(bianLiang)
– 滤色(lvSe)
– 颜色减淡(yanSeJianDan)
– 线性减淡(xianXingJianDan)
– 叠加(dieJia)
– 柔光(rouGuang)
– 强光(qiangGuang)
– 亮光(liangGuang)
– 线性光(xianXingGuang)
– 点光(dianGuang)
– 实色混合(shiSeHunHe)
– 差值(chaZhi)
– 排除(paiChu)
– 减去(jianQu)
– 划分(huaFen) - 每层可选择一个或多个叠加算法,设置叠加的颜色或纹理。如果需要修改亮度对比度可以勾选亮度对比度层,由于这里面算法名字太多要背好多单词,为了方便都是用的拼音,命名有些土大家不要介意哈哈哈。
- 然后就可以用设置开启滤镜 setProperty(“open”, 1) ,如果想要滤镜动态出现的话,再设置时间 setProperty(“time”, 0) ,时间从0到3是滤镜从屏幕中间扩散的过程。如果想要瞬间开启关闭滤镜,就将时间设置大于3就行。当然如果想要滤镜渐显渐隐之类的效果,也方便修改,在着色器的最下方代码里修改一下就行。
最终效果示例
shader以及示例demo地址
-
如果有喜欢或需要的,可以到商店给小弟我加个鸡腿哈