實時渲染管線中,有一類很麻煩的問題:帶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非常類似。