透明物体的shader
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
Shader "Unlit/NewUnlitShader"
{
Properties{
_AlphaScale("AlphaScale",Range(0,1)) = 0.2
}
SubShader
{
Tags { "Queue"="AlphaTest" "IgnoreProjector"="True" "RenderType"="TransparentCutout" }
Pass
{
Tags { "LightMode"="ForwardBase" }
ZWrite Off // 关闭深度写入
Blend SrcAlpha OneMinusSrcAlpha // 开启混合模式。SrcAlpha:源颜色混合因子,OneMinusSrcAlpha:已存在颜色混合因子
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
struct v2f {
float2 uv : TEXCOORD0;
float4 pos : SV_POSITION;
};
fixed _AlphaScale;
v2f vert (
float4 vertex : POSITION,
float2 uv : TEXCOORD0
)
{
v2f o;
o.pos = UnityObjectToClipPos(vertex);
o.uv = uv;
return o;
}
fixed4 frag (v2f i) : SV_Target
{
return fixed4(i.uv, 0, _AlphaScale);
}
ENDCG
}
}
}
效果
alpha 混合的话
Pass
{
Tags{"Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" "DisableBatching" = "True" }
// ZWrite Off
Blend SrcAlpha OneMinusSrcAlpha
Cull Off //关闭剔除功能
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
// make fog work
#pragma multi_compile_fwdbase