Unity 3D柱状图效果

1.单个柱状效果展示

2.从上到下渐变透明材质Shader

cs 复制代码
Shader "Unlit/NewUnlitShader"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
        _Color("Color",Color) = (1,1,1,1)
        _Alpha("Alpha",Range(0,1) ) = 0.2
        _Alpha2("Alpha2",Range(0,1) ) = 0.2
        _Power("Power",range(0,10)) = 1
    }
    SubShader
    {
              Pass
        {
            Tags { "RenderType"="Transparent" }
            Cull Front
            Blend SrcAlpha One
            
            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;
            fixed4 _Color;
            float _Alpha2;
            
            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.uv, _MainTex);
                UNITY_TRANSFER_FOG(o,o.vertex);
                return o;
            }

            fixed4 frag (v2f i) : SV_Target
            {
                // sample the texture
                //fixed4 col = tex2D(_MainTex, i.uv);
                float v = i.uv.y;
                //float v = 1 - pow((1 - i.uv.y), 4);
                fixed4 c = fixed4(_Color.xyz ,v * _Alpha2);
                return c;
            }
            ENDCG
        }

        Pass
        {
            Tags { "RenderType"="Transparent" }
             Cull Back
            Blend SrcAlpha One 
            
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            // make fog work
            #pragma multi_compile_fog

            #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;
            fixed4 _Color;
            float _Alpha;


            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.uv, _MainTex);
                UNITY_TRANSFER_FOG(o,o.vertex);
                return o;
            }

            fixed4 frag (v2f i) : SV_Target
            {
                // sample the texture
                //fixed4 col = tex2D(_MainTex, i.uv);
                float y = i.uv.y;
                float v = 1 - pow(1 - (1 - y ), 4);
                fixed4 c = fixed4(_Color.xyz * _Alpha, (1 - v) *_Alpha);
                return c;
            }
            ENDCG
        }

      Pass
        {
            Tags { "RenderType"="Transparent" }
            Blend SrcAlpha One 
            
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            // make fog work
            #pragma multi_compile_fog

            #include "UnityCG.cginc"

            struct appdata
            {
                float4 vertex : POSITION;
                float3 normal : NORMAL;
                float2 uv : TEXCOORD0;
            };

            struct v2f
            {
                float2 uv : TEXCOORD0;
                float3 viewDir : TEXCOORD1;
                float4 vertex : SV_POSITION;
                float3 normal : normal;
            };

            sampler2D _MainTex;
            float4 _MainTex_ST;
            fixed4 _Color;
            float _Alpha;
            float _Power;

            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.uv, _MainTex);
                o.viewDir = ObjSpaceViewDir(v.vertex);
                o.normal = v.normal;
                UNITY_TRANSFER_FOG(o,o.vertex);
                return o;
            }


            fixed4 frag (v2f i) : SV_Target
            {
                // sample the texture
                float y2 = i.uv.y;
                float v = 1 - pow(1 - (1 - y2 ), 4);
                //float y =  i.uv.y +  _Time.y * _Speed;
                //float sy = (sin(_Time.y) + 1) / 2;
                float fresnel = pow(1 - saturate(dot(normalize(i.viewDir), normalize(i.normal))), _Power);
                for(int m = 0; m <= 10; m++)
                {
                        if(i.uv.y <= (m + 1) / 10  && i.uv.y >= m / 10)
                        {
                            return float4(_Color.rgb *_Alpha * fresnel,_Alpha * ((m + 1) / 10)) ;
                        }
                }
               
                return _Color * fresnel;
                // if(i.uv.y <= sy && i.uv.y >= sy - 0.1)
                // {
                //     return float4(_Color.rgb,_Alpha * 2) ;
                // }
                // else
                // {
                    
                //     fixed4 c = fixed4(_Color.xyz * _Alpha, (1 - v) *_Alpha);
                //     return c;
                // }
                //fixed4 col = tex2D(_MainTex, uv * _Alpha);

               
            }
            ENDCG
        }

    }
}

3.效果用例

unity 新建柱状体,赋予上面材质,调整合适参数。

相关推荐
zyh______2 小时前
C#语法糖(按照实用性排序)
unity·c#
avi91114 小时前
[AI教做人]CinemachineCamera 各项调整配置参数入门 + Profiler
unity·游戏开发·camera·cinemachine·visual camera·镜头配置
逸模4 小时前
逸模智造・BIM 效能专栏一|极速土建翻模,2D 一键跨越 3D
笔记·3d·bim·土建·翻模
陈天伟教授19 小时前
eDrawings 2026 x64 Edition-免费 3D 模型和 2D 工程图查看器
3d
郝学胜-神的一滴1 天前
[简化版 GAMES 101] 计算机图形学 16:纹理走样、Mipmap、三线性插值、各向异性过滤原理全解
unity·游戏引擎·godot·图形渲染·three.js·opengl·unreal
2301_767113982 天前
Superpowers 游戏引擎从零开发实战指南
游戏引擎
Tian_Hang2 天前
eclipse ditto 学习笔记
运维·服务器·开发语言·javascript·3d
吴梓穆2 天前
untiy TextMeshPro (TMP) text 操作 中文字符集 字体材质操作(添加纹理 添加描边 添加阴影)
unity
AI视觉网奇2 天前
BambuStudio 编译实战 2026
3d
AI前沿资讯2 天前
AI3D角色生产如何减少返工?用 V2Fun 前移建模与动画流程
人工智能·3d