unity 半透明的URP Shader。
时间: 2024-06-09 07:04:52 浏览: 186
unity半透明shader,没有透视遮挡的问题,可以全透明和全不透明,支持渐隐出现和消失
5星 · 资源好评率100%
以下是一个简单的半透明的URP Shader:
```
Shader "Custom/Transparent" {
Properties {
_MainTex ("Texture", 2D) = "white" {}
_Color ("Color", Color) = (1,1,1,1)
_Alpha ("Alpha", Range(0,1)) = 0.5
_Cutoff ("Cutoff", Range(0,1)) = 0.5
}
SubShader {
Tags {"Queue"="Transparent" "RenderType"="Opaque"}
Pass {
Blend SrcAlpha OneMinusSrcAlpha
Cull Back
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct appdata {
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f {
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
sampler2D _MainTex;
float4 _MainTex_ST;
float4 _Color;
float _Alpha;
float _Cutoff;
v2f vert (appdata v) {
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
return o;
}
fixed4 frag (v2f i) : SV_Target {
fixed4 col = tex2D(_MainTex, i.uv) * _Color;
col.a *= _Alpha;
clip(col.a - _Cutoff);
return col;
}
ENDCG
}
}
FallBack "Diffuse"
}
```
这个Shader有几个属性,包括_MainTex,_Color,_Alpha和_Cutoff。_MainTex是纹理,_Color是颜色,_Alpha是透明度,_Cutoff是切割阈值。在SubShader中,我们使用了Tags来指定渲染队列和渲染类型。我们还定义了一个Pass,指定了混合模式和剔除模式。CGPROGRAM中包含了我们的顶点函数和片段函数。我们使用struct来定义appdata和v2f,appdata保存着我们的顶点信息,v2f保存着我们的顶点和纹理坐标信息。我们在vert函数中将appdata转换为v2f,并在frag函数中使用tex2D函数来获取我们的颜色,并将其乘以颜色和透明度。我们还使用clip函数来剔除我们的片段,如果它的透明度小于我们的_Cutoff值。最后,我们使用EndCG来结束我们的CGPROGRAM。
你可以将这个Shader添加到一个材质上,并将其应用到一个对象上,来看看效果。
阅读全文