Shader and/or material disabled on bluid

Hi forum,

So I had this little alpha mask shader that I liked very much to display a procedural map in-game. Here is the view from the editor.

The problem is that, once the game is built, the exact same scene launched from the executable looks like this, as if the whole map image was disabled :

I don’t know what was lost upon build, and have no idea how to fix it… The shader was force-included in the graphic settings just in case, but to no avail.

Just in case here is the script of the shader, it works perfectly fine from the editor.

// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'

// Unlit alpha-blended shader.
// - no lighting
// - no lightmap support
// - no per-material color

Shader "Custom/AlphaMask (Ben Silvis perso)" {
Properties {
    _MainTex ("Base (RGB)", 2D) = "white" {}
    _AlphaTex ("Alpha mask (R)", 2D) = "white" {}
    _Ratio("Ratio", Range(0,1)) = 1
}

SubShader {
    Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
    LOD 100
 
    ZWrite Off
    Blend SrcAlpha OneMinusSrcAlpha
 
    Pass {
        CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
        
            #include "UnityCG.cginc"

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

            struct v2f {
                float4 vertex : SV_POSITION;
                half2 texcoord : TEXCOORD0;
            };

            sampler2D _MainTex;
            sampler2D _AlphaTex;
        
            float4 _MainTex_ST;
            float _Ratio;
        
            v2f vert (appdata_t v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);
                return o;
            }
        
            fixed4 frag (v2f i) : SV_Target
            {
                fixed4 col = tex2D(_MainTex, i.texcoord);
                fixed4 col2 = tex2D(_AlphaTex, i.texcoord);
            
                return fixed4(col.r, col.g, col.b, col.a*(1-_Ratio)+ col.a*col2.a*_Ratio);
            }
        ENDCG
    }
}

}

//https://bensilvis.com/unity3d-unlit-alpha-mask-shader/

All right, I found what was missing, it was just :
ZTest [unity_GUIZTestMode]
And probably later on :
#include "UnityUI.cginc"

So, for the sake of science, here is the refined full shader, enjoy.

Shader "Custom/AlphaMask (Ben Silvis et Ran)" {
Properties {
    [PerRendererData] _MainTex ("Base (RGB)", 2D) = "white" {}
    _AlphaTex ("Alpha mask", 2D) = "white" {}
    _Ratio("Ratio", Range(0,1)) = 1
}

SubShader {
    Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
    LOD 100
  
    ZWrite Off
    ZTest [unity_GUIZTestMode] //imitation shader natif
    Blend SrcAlpha OneMinusSrcAlpha
  
    Pass { 
        CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
          
            #include "UnityCG.cginc"
            #include "UnityUI.cginc" //imitation shader natif

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

            struct v2f {
                float4 vertex : SV_POSITION;
                half2 texcoord : TEXCOORD0;
            };

            sampler2D _MainTex;
            sampler2D _AlphaTex;
          
            float4 _MainTex_ST;
            float _Ratio;
          
            v2f vert (appdata_t v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);
                return o;
            }
          
            fixed4 frag (v2f i) : SV_Target
            {
                fixed4 col = tex2D(_MainTex, i.texcoord);
                fixed4 col2 = tex2D(_AlphaTex, i.texcoord);
              
                return fixed4(col.r, col.g, col.b, col.a*(1-_Ratio)+ col.a*col2.a*_Ratio);
            }
        ENDCG
    }
}

}

1 Like