写个好用的 可控制的半透明是Shader
时间: 2024-04-10 09:27:39 浏览: 7
以下是一个基本的可控制半透明效果的Shader示例:
```csharp
Shader "Custom/TransparentControlled" {
Properties {
_Color ("Color", Color) = (1,1,1,1)
_Transparency ("Transparency", Range(0, 1)) = 0.5
}
SubShader {
Tags { "Queue"="Transparent" "RenderType"="Transparent" }
LOD 100
CGPROGRAM
#pragma surface surf Lambert alpha
#pragma target 3.0
sampler2D _MainTex;
fixed4 _Color;
float _Transparency;
struct Input {
float2 uv_MainTex;
};
void surf (Input IN, inout SurfaceOutputAlpha o) {
fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color;
o.Albedo = c.rgb;
o.Alpha = c.a * _Transparency;
}
ENDCG
}
FallBack "Diffuse"
}
```
这个Shader具有两个可调节的属性:颜色(_Color)和透明度(_Transparency)。你可以在材质的Inspector窗口中调整这些属性。
在这个Shader中,我们使用了Lambert表面光照模型,并且在SubShader中定义了渲染队列为Transparent,以确保物体在透明队列中正确渲染。在surf函数中,我们将_MainTex纹理乘以_Color属性,并将结果应用到表面输出的Albedo通道。然后,我们还将计算出的透明度乘以_Transparency属性,***