两种方法实现亮度/饱和度/对比度的调整!Cocos Creator !

本文介绍了在Cocos Creator中通过uniform和assembler两种方案实现亮度/饱和度/对比度调整的方法。分别展示了新建自定义组件、自定义Assembler,以及在shader和材质中设置参数的步骤。同时强调了draw call的数量对性能的影响。
摘要由CSDN通过智能技术生成

uniform 方案和 assembler 方案的实现。

效果预览

GTAssembler 源码解读及使用 一文中提到自定义渲染可以实现很多酷炫的 shader 特效,目前常用的有两种方法:

  • 创建自定义材质,给材质增加参数。这个参数会作为 uniform 变量传入 shader 由于渲染合批要求材质参数保持一致,所以如果大量对象使用自定义材质时,并且材质参数各不相同,是无法进行合批渲染的,一个对象占一个 draw call

  • 创建自定义 assembler,在顶点数据输入渲染管道前修改它的值。

本文将用这两种方案实现亮度/饱和度/对比度的调整。(注意效果图中不同方式的draw call不同)

如何使用

uniform 方案

新建 Sprite 组件,选择材质 BrightSaturaContrastUniform.mtl ,添加用户脚本 BrightSaturaContrastUniform.ts ,调整对应参数即可。

assembler 方案

新建一个节点,添加用户脚本 BrightSaturaContrastAssemblerSprite.ts ,选择材质 BrightSaturaContrastAssembler.mtl ,调整对应参数即可。

实现步骤

调色效果的逻辑参考《Unity Shader入门精要》中的介绍。

亮度的调整只需要把原颜色乘以亮度系数 brightness 即可。然后,我们计算该像素对应的亮度值(luminance),这是通过对每个颜色分量乘以一个特定的系数再相加得到的。我们使用该亮度值创建了一个饱和度为0的颜色值,并使用saturation

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值