unity透明半透明材质球

Unity中的透明效果之开启深度写入半透明效果

第一种  

shader方式

复制代码
Shader "Custom/Shadder" {
Properties{
    _Color("Color", Color) = (1,1,1,1)
    _MainTex("MainTex", 2D) = "white" {}
_AlphaScale("Alpha Scale", Range(0, 1)) = 1
}
SubShader{
    Tags{ "Queue" = "Transparent" "IngnoreProjector" = "True" "RenderType" = "Transparent" }
    LOD 200

    Pass{
        ZWrite On
        ColorMask 0
    }

    Pass{
        Tags{ "LightMode" = "ForwardBase" }

        ZWrite Off
        Blend SrcAlpha OneMinusSrcAlpha

        CGPROGRAM

        #pragma vertex vert
        #pragma fragment frag

        #include "Lighting.cginc"

        fixed4 _Color;
        sampler2D _MainTex;
        float4 _MainTex_ST;
        fixed _AlphaScale;

        struct a2v {
            float4 vertex : POSITION;
            float4 normal : NORMAL;
            float4 texcoord : TEXCOORD0;
        };

        struct v2f {
            float4 position : SV_POSITION;
            float3 worldNormal : TEXCOORD0;
            float3 worldPos : TEXCOORD1;
            float2 uv : TEXCOORD2;
        };

        v2f vert(a2v v)
        {
            v2f f;
            f.position = UnityObjectToClipPos(v.vertex);

            //计算世界空间下的法线
            f.worldNormal = UnityObjectToWorldNormal(v.normal);

            //计算世界空间下的顶点
            f.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;

            //计算变换后的纹理坐标
            f.uv = TRANSFORM_TEX(v.texcoord, _MainTex);

            return f;
        }

        fixed4 frag(v2f i) : SV_Target
        {
            //归一
            fixed3 worldNormal = normalize(i.worldNormal);
            fixed3 worldLightDir = normalize(UnityWorldSpaceLightDir(i.worldPos));

            //纹理颜色
            fixed4 textColor = tex2D(_MainTex, i.uv);


            //反射颜色
            fixed3 albedo = textColor.rgb * _Color.rgb;

            //环境光
            fixed3 ambient = UNITY_LIGHTMODEL_AMBIENT.xyz * albedo;

            //漫反射
            fixed3 diffuse = _LightColor0.rgb * albedo * max(0, dot(worldNormal, worldLightDir));

            return fixed4(ambient + diffuse, textColor.a * _AlphaScale);
        }

        ENDCG
    }
}
FallBack "Diffuse" 

}
复制代码

第二种

unity 自带的方式

创建一个材质球选择下面图片中选项 只要选择的是Transparent模式 ,里面都能透明半透明,根据需要自己选择

 

 以上仅供选择,方式有很多.

 

 

posted @   剑起苍穹  阅读(11677)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
/*鼠标点击特效*/
点击右上角即可分享
微信分享提示