Какое свойство мне нужно изменить, чтобы шейдеры работали? - PullRequest
1 голос

Я сделал шейдер для работы с контурами, но когда я помещаю его в компонент (например, куб), шейдер меняет все компоненты. Я просто хочу изменить контур, а шейдер - весь цвет на черный.

Вот код:

Shader "Unlit/GlowShader"
{
    Properties
    {
        _Color("Main Color", Color) =   (0,0,0,0)
        //_MainTex ("Texture", 2D) = "white" {}
        _OutlineColor("Outline color", Color) = (0,0,0,1)
        _OutlineWidth("Outline Width", Range(1.0,5.0)) = 1.01
    }

    CGINCLUDE
    #include "UnityCG.cginc"
    struct appdata {
        float4 vertex : POSITION;
        float3 normal : NORMAL;
    };

    struct v2f {
        float4 pos : POSITION;
        float3 normal : NORMAL;
    };

    float _OutlineWidth;
    float4 _OutlineColor;

    v2f vert(appdata v)
    {
        v.vertex.xyz *= _OutlineWidth;
        v2f o;
        o.pos = UnityObjectToClipPos(v.vertex);
        return o;
    }

    ENDCG

    SubShader
    {
        Tags{"Queue" = "3000"}

        Pass //Render the Outline
        {
            ZWrite Off 

            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag

            half4 frag(v2f i) : COLOR
            {
                return _OutlineColor;
            }

            ENDCG
        }

        Pass //Normal render
        {
            ZWrite On
            Material
            {
                Diffuse[_Color]
                Ambient[_Color]
            }
            Lighting On
            SetTexture[_MainText]
            {
                ConstantColor[_Color]
            }
            SetTexture[_MainText]
            {
                Combine previous * primary DOUBLE
            }
        }

    }
}
...