《实时ps混合叠加shader | 社区征文》

实时ps混合叠加shader

QQ录屏20220323033846

前言

  • 最近社区征文,很多大佬都在秀技术,我感觉自己只上一个小作文有点慌,想了想后将自己以前写的实时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就行。当然如果想要滤镜渐显渐隐之类的效果,也方便修改,在着色器的最下方代码里修改一下就行。

最终效果示例

效果1
效果2

shader以及示例demo地址

12赞

大佬牛逼!

1赞

大佬牛逼!

1赞

大佬牛逼~

1赞

大佬流弊!

1赞

大佬牛逼~

1赞

大佬 666 :+1:

1赞

好强 之前老有设计用叠加效果导致导出来的图没法用····这个就好使了

大佬牛逼!

mark!

更新了,本次更新:

- 优化了使用体验

- shader适配了2.X

- 3.X版本增加了界面代码动态展示设置材质的宏定义和参数

- 参考渡鸦大佬的代码增加了色相饱和度明度的设置

psTools2_

自己顶一下更新。

大佬太强啦

支持v2.4.4吗

~~支持的

1赞

买了你的shader 。请问怎么怎么打开demo

在cocos Dashboard的商城里搜ps找到这个商品,点击创建新项目就可以了哈

支持3.5.1版本吗

支持,这本质就是算法代码。

不愧是你