具體的可以查看官方api:http://docs.unity3d.com/Manual/SL-Blend.html
還有1些不錯的文章:http://blog.csdn.net/poem_qianmo/article/details/42060963
http://blog.csdn.net/candycat1992/article/details/41599167
Blending主要用于實現半透明效果,類似于玻璃,學習Blending之前,首先要了解源和目標。
源:已計算過的色彩,形象地說,就是Blending操作之前,經過各種操作計算后的色彩。
目標:已在屏幕的色彩,由于要實現半透明效果,要把渲染隊列設為Transparent,這里的"已在屏幕的色彩"指的是在Transparent之前渲染的像素色彩,其中包括相機的背景色彩,這里可以通過測試來證明1下,看不懂的可以先跳過這個shader。其中賦值給_MainTex的是1個rgb為(1,1,1),a為0.5的tex。
SrcFactor:源因子
DstFactor:目標因子
二者可以獲得值為:
經過Blending操作后,終究的色彩=源色彩*SrcFactor+目標色彩*DstFactor,從而到達像玻璃那樣的,混合色彩的效果。
以下講授1下1個極為簡單的玻璃shader:
可以看到,大方塊擋住了紅球,但是透過大方塊卻看到了紅球,由于Blending關閉了深度緩存。其中賦值給_MainTex的是1個rgb為(1,1,1),a為0.5的tex。這里我們不想被光照模型影響,所以就不使用表面著色器了。
其中核心就是那個Blending語句了,這里是怎樣計算的呢?
結果=(1,1,1)*0.5+(1-0.5)*目標色彩,整理1下就是:灰色+0.5*目標色彩(這里的目標色彩有兩種:紅球的紅色和相機背景的藍色),在球的地方,大方塊的色彩與紅球的色彩進行混合,因而就產生了半透明的效果。
這里我們改變相機的背景色彩為黑色:
可以看到這里大方塊變成了真實的灰色了。
上一篇 const_cast的用法
下一篇 操作系統(八)―虛擬存儲管理