Как сделать чтобы текстура для шейдера бралась не из буфера, а каждый раз брала свой дефолтный цвет

У меня есть 2 шейдера:

  1. Шейдер Masked Он является background текстурой на которой я вырезаю цвет (как ластиком) 2 шейдером
Shader "IndieYP/UIMasked"
{
    Properties
    {
        [PerRendererData] _MainTex("Sprite", 2D) = "white" {}
        _Color("Tint", Color) = (1,1,1,1)
        [MaterialToggle] PixelSnap("PixelSnap", Float) = 0
    }

        SubShader
        {
            Tags
        {
            "Queue" = "Transparent+2"
            "IgnoreProjector" = "True"
            "RenderType" = "Transparent"
            "PreviewType" = "Plane"
            "CanUseSpriteAtlas" = "True"
        }

            //Cull Off
            Lighting Off
            ZWrite Off
            Fog
            {
                Mode Off
            }
            Blend One OneMinusSrcAlpha
            Pass
    {

            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #include "UnityCG.cginc"

            fixed4 _Color;
            sampler2D _MainTex;

            struct v2f 
            {
                float4 pos : SV_POSITION;
                float2 uv : TEXCOORD0;
            };

            float4 _MainTex_ST;

            v2f vert(appdata_base v)
            {
                v2f o;
                o.pos = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);
                return o;
            }

            fixed4 frag(v2f i) : SV_Target
            {
                fixed4 texcol = tex2D(_MainTex, i.uv);
                return texcol * _Color;
            }
            ENDCG
            }
    }

}
  1. Шейдер Mask, которой я вырезаю цвет из 1го
Shader "IndieYP/UIMask" 
{
   Properties
   {
       _MainTex("MainTex", 2D) = "white" {}
       _Cutoff("Cutoff", Range(0, 1)) = 0
   }

   SubShader
   {
       Tags{
           "Queue" = "Transparent+1"
           "RenderType" = "Transparent"
           "PreviewType" = "Plane"
       }
       Offset -1, -1
       Zwrite On
       //ColorMask 0
       Pass
       {
           AlphaTest Greater[_Cutoff]
           Blend SrcAlpha SrcAlpha
           SetTexture[_MainTex] {
               combine texture * primary, texture
           }
       }
   }
}

И если не отключать пост процессинг, а потом не включать заново на следующий кадр. ТО после нескольких итераций будет куча дырок. Как сделать чтобы текстура шейдера Masked всегда обновлялась сама, заливая себя дефолтным цветом, который я выставил в материале?
И нужно чтобы это могла работать на устройствах с версией OpenGLS 3


Ответы (0 шт):