How to transparent Unity3D custom shader?

Your script is probably trying to access a property named _Color to set its alpha value, but there is no _Color property on this shader, so the script fails.

Also the shader is not set up to render transparency, so we’ll need to fix that.

Shader properties are kind of like the public properties you expose on C# classes: the outside world can manipulate them to change the way the shader renders.

In the fragment, we multiply the image color by the _Color property so that it can control tint and alpha.

To make your shader render transparency, you also need to add a few lines to the SubShader and the pragma.

Shader "InsideVisible" 
{
    Properties 
    {
        _MainTex ("Base (RGB)", 2D) = "white" {}
        _Color ("Color (RGBA)", Color) = (1, 1, 1, 1) // add _Color property
    }

    SubShader 
    {
        Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
        ZWrite Off
        Blend SrcAlpha OneMinusSrcAlpha
        Cull front 
        LOD 100

        Pass 
        {
            CGPROGRAM

            #pragma vertex vert alpha
            #pragma fragment frag alpha

            #include "UnityCG.cginc"

            struct appdata_t 
            {
                float4 vertex   : POSITION;
                float2 texcoord : TEXCOORD0;
            };

            struct v2f 
            {
                float4 vertex  : SV_POSITION;

Leave a Comment