通过shader可以更换图片颜色么?

使用shader可以办得到把灰色的更换成红色的么?
image
image

1赞

可以,只需要确定灰色颜色区间,在这个区间类改变成你需要的颜色.

这个把blue和green强制设置为0就行了吧

简单改了改,测试了一下

噗,抱歉,是我的锅,忘了分享这类文章。

换色基本步骤:

  • 1、求出原图灰度
  • 2、灰度乘以目标颜色

假如要更换的目标颜色为:

vec3 targetColor = ....;

//计算原图灰度
float gray = o.r * 0.299 + o.b * 0.587 + o.g * 0.114;

//目标颜色乘以灰度
o.rgb = targetColor.rgb * gray;

友情提示:targetColor是目标颜色,想换什么色就是什么色,不受原图颜色影响。

6赞

另外,你演示的这个效果,不是换色。而是颜色叠加。。
如果你是想要这个效果,应当用乘法。。 原图颜色 * 上面这层红色。

如果你是在Photoshop中用的OVERLAY,那情况还要复杂些。简单的乘还不行。 找了张公式对应表给你:
image

6赞

o.g * 0.114

哈哈,谢谢指正。已修复。

谢谢,这里是全部代码了么

谢谢回复,没接触过shader,研究一下先

可以出个demo之类的学习一下么?之前没接触过shader,正好想学习一下了

简单点,一个 add 搞定 …

意思是红色加强,强度可以调整color的 r 分量值

收徒不?? 学shader

收啊,欢迎加入。 关注Cocos官方公众号和视频号,我会在上面分享 Shader 相关教程。