0
如何取消激活Unity中A值(ARGB)的添加?我有一個從多個部分fugurine。當部件重疊時,像圖片一樣添加不透明度。謝謝Unity 2D - 取消A值的添加
如何取消激活Unity中A值(ARGB)的添加?我有一個從多個部分fugurine。當部件重疊時,像圖片一樣添加不透明度。謝謝Unity 2D - 取消A值的添加
我發現了一個着色器基達做的工作:
Shader "Custom/FlatTransparent" {
Properties {
_Color("Main Color", Color) = (1,1,1,1)
_MainTex("Base (RGB) Trans (A)", 2D) = "white" {}
}
SubShader {
Tags{ "Queue" = "Transparent" "IgnoreProjector" = "False" "RenderType" = "Transparent" }
Pass {
ColorMask A
Blend SrcAlpha OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
fixed4 _Color;
float4 vert(float4 vertex : POSITION) : SV_POSITION {
return UnityObjectToClipPos(vertex);
}
fixed4 frag() : SV_Target {
return _Color;
}
ENDCG
}
Pass {
ColorMask RGB
Blend SrcAlpha OneMinusSrcAlpha
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
sampler2D _MainTex;
fixed4 _Color;
struct appdata {
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f {
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
v2f vert(appdata v) {
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = v.uv;
return o;
}
fixed4 frag(v2f i) : SV_Target{
fixed4 col = _Color * tex2D(_MainTex, i.uv);
return col;
}
ENDCG
}
}
Fallback "Diffuse"
}
要正常工作,三個條件必須得到滿足:
我不是很擅長着色器,所以我無法弄清楚如何沒有這兩個最終的限制。如果有人能改善它,請分享。
你需要編寫一個着色器將融入所需的方式在兩個透明物體。而且我會說實話,我不確定你是否可以。* – Draco18s
或者使用緩衝區? – Adam
你必須去除/標準化緩衝區中的alpha值,但是,這也可以。 – Draco18s