Unity 中实现透明效果一般有两种方法
透明度测试(Alpha Test)
原理:只要片元的透明度不符合要求就直接舍弃
不关闭深度写入(ZWrite)
Shader "AlphaTest"{
Properties{
_MainTex ("Main Tex", 2D) = "white" {
}
_Color ("Color", Color) = (1, 1, 1, 1)
_Cutoff ("Alpha Cutoff", Range(0, 1)) = 0.5 //控制剔除的阈值
}
SubShader
{
Tags {
"Queue"="AlphaTest" "IgnoreProjection"="True" "RanderType"="TransparentCutout"}
Pass{
Tags {
"LightMode"="ForwardBase" }
Cull Off //用于双面渲染,不剔除背对摄像机的图元
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "Lighting.cginc"
struct appdata{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
float3 normal : NORMAL;
};
struct v2f