黑色與透明
今天遇到了一個問題 解決了很久。是這樣的,美術給的一張圖,黑底彩圖,RGB,沒有alpha通道,使用src:alpha dst:one的方式進行混合,法線這張圖的黑色被濾掉了,出現了alpha透明的效果。如下圖
原圖
混合後的圖
乍一看沒什麼問題,不過稍微想了一下,我的圖是不帶alpha通道的,也就是通常認為的沒有透明信息的,怎麼它就變透明了呢,應該是黑色也會疊加上才對啊。
於是一行行看shader,還是沒明白,最後還是用pix截了一幀仔細分析才看出來。
原來黑色的rgb是(0,0,0),對於一張沒有alpha通道的圖,它的a值都為1,這樣在混合的過程中,結果的RGB=1*(0,0,0)+dst=dst
也就是說對於那些黑色覆蓋的像素,直接就是原先的顏色,就是透明了!!!
發現這個問題之後 才發現原來是自己糾結了一個很蠢的問題,那就是黑色覆蓋白色不等於黑色,還是白色!這似乎是我的思維定勢了,似乎認為黑色疊加給別的表麵上會把“黑色”疊上去,其實在圖形學裏黑色是(0,0,0),疊上去什麼也沒有。這跟畫水彩畫可不一樣。在這個意義上黑色其實就等同了透明。
其實這種美術技巧應用於了很多美術場景,對於一些透明(疊加方式)的效果,美術可以直接在黑底上做畫,不用做alpha通道
那麼一個問題是,如果想要真的把“黑色”也真的疊上去該怎麼辦:一種是真的做alpha通道,混合方式使用alpha混合,一種是不做alpha通道,混合的方式采用1-dst ,dst 等混合方式,總之blend是多種多樣的,以前一直沒有細致的扣每一種方式的表現效果
最後更新:2017-04-03 12:54:23