Transparent Vertex Shader

2017/03/27

2 minute read

A game set in space should have a futuristic look and feel. And one of the most important factors in giving this sci-fi feel is the use of transparency. I would like the grid to have a transparent view, showing the beautiful stars in the horizon beneath them. After rendering the surfaces the material on these surfaces will be responsible for this transparency. More specifically the shader. The OOB shader in unity doesn’t support vertex colors so I had to dive into the mysterious world of shaders. Here is what I came up with:

Shader "Custom/Hex Surface Shader" {
    Properties {
        _Color ("Color", Color) = (1,1,1,0.5)
        _Glossiness ("Smoothness", Range(0,1)) = 0.5
        _Metallic ("Metallic", Range(0,1)) = 0.0
    }
    SubShader {
        Tags{ "Queue" = "Transparent" "RenderType" = "Transparent" }
        LOD 200
        Blend SrcAlpha OneMinusSrcAlpha
        Cull Off
        CGPROGRAM
        // Physically based Standard lighting model, and enable shadows on all light types
        #pragma surface surf Standard fullforwardshadows alpha
 
        // Use shader model 3.0 target, to get nicer looking lighting
        #pragma target 3.0
 
        sampler2D _MainTex;
 
        struct Input {
            float2 uv_MainTex;
            float4 color : COLOR;
        };
 
        half _Glossiness;
        half _Metallic;
        fixed4 _Color;
        
 
        void surf (Input IN, inout SurfaceOutputStandard o) {
 
            o.Albedo = IN.color;
            o.Metallic = _Metallic;
            o.Smoothness = _Glossiness;
            o.Alpha = IN.color.a;
        }
        ENDCG
    }
    FallBack "Diffuse"
}

Here are some different version of the grid with and without transparency