实时渲染管线中,有一类很麻烦的问题:带alpha的纹理边缘颜色容易受到污染。其原理可以参见这篇文章。
要修复此类问题,通常我们需要做texture bleeding处理,修改纹理素材,保留alpha通道不变的同时,修改RGB数值。
例如这张资源:
透明区域的alpha=4%,RGB都为57,也就是几乎透明的灰色。
(如果像素是全透明即alpha=0%,Photoshop还查看不了RGB值,属于软件缺陷,这一点我在StackExchange上得到过证实。不过仍然可以用本文方法查看。)
我们希望保持这些透明像素的alpha不变,只修改RGB全部变白。
对于“全部变白”的需求,用Python很好实现。例如我之前写过一个脚本,用于将一张图片的全透明像素全部刷成白色。
不过要是想人工控制不同区域的颜色,还是得借助Photoshop/Illustrator这一类图像软件。
下面我以Photoshop CC 2018英文版为例介绍操作,其他版本也应该类似。
1)选中图层,分离出alpha蒙版
图层面板可以看到RGB和Alpha被分离出来了:
2)暂时禁用alpha蒙版
3)选中图层本身,进行颜色修改
例如我们可以用Brush将图片刷成白色:
4)恢复开启alpha蒙版
可以看到,图片看上去和之前一样,但是原先的半透明像素的RGB都变成了255白色:
最后可以保存了。
实际操作中发现,对于全透明像素采用上述方法修改并保存可能无效,Photoshop会自动将全透明像素的RGB重置,猜测是又一个bug。
如果遇到此问题,建议换个软件,例如开源的GIMP(GIMP - GNU Image Manipulation Program),操作和Photoshop非常类似。