您好,登錄后才能下訂單哦!
目標:兩個cube,一個在前一個在后,前面的半透,透過前面可以看到后面的,而且顏色是有疊加的
如下圖:
后一個cube就是默認的材質,不用變化,主要看前一個cube
這個shader很簡單
Shader代碼:
Shader "Custom/TestTransShader" {
Properties{
_Alpha("Alpha",range(0,1)) = 0.5 //1.
}
SubShader {
tags{ "queue" = "transparent" } //2.
pass {
blend srcalpha oneminus srcalpha //3.
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "unitycg.cginc"
float _Alpha;
struct v2f {
float4 pos:POSITION;
};
v2f vert(appdata_base v)
{
v2f o;
o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
return o;
}
fixed4 frag(v2f IN):COLOR
{
return fixed4(1,0,0,_Alpha);
}
ENDCG
}
}
}
簡化,最終就固定的返回紅色,只用這個_Alpha來控制透明度
tags{ "queue" = "transparent" } //2.
在subshader中,pass外,寫上這個tags,表示這個shader要透明
試過把它寫在pass中,不報錯,但也不實現透明效果
blend srcalpha oneminus srcalpha //3.
Alpha混合
srcalpha:源透明值
oneminusalpha:1-源透明值
最終顏色 = 源顏色 * 源透明值 + 目標顏色*(1 - 源透明值)
注:oneminus srcalpha中間是沒有空格的,因為此網站將艾斯艾斯啊當做禁語,所以只好空一格來寫
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。