Fake lighting shader using Zero/SrcColor is not visible in the game view!!!

Greetings,
I have made a shader in ASE to simulate lighting on a surface by sprites,
here is the code:

Shader "Custom/FakeLightBlend"
{
    Properties
    {
        _MainTex("MainTex", 2D) = "white" {}
        _Intensity("Intensity", Float) = 5
        [HideInInspector] _texcoord( "", 2D ) = "white" {}
        [HideInInspector] __dirty( "", Int ) = 1
    }

    SubShader
    {
        Tags{ "RenderType" = "Transparent"  "Queue" = "Transparent+0" "IgnoreProjector" = "True" "IsEmissive" = "true"  }
        Cull Back
        Blend Zero SrcColor
        CGPROGRAM
        #pragma target 3.0
        #pragma exclude_renderers xbox360 xboxone ps4 psp2 n3ds wiiu
        #pragma surface surf Unlit keepalpha noshadow noambient novertexlights nolightmap  nodynlightmap nodirlightmap nofog
        struct Input
        {
            float2 uv_texcoord;
        };

        uniform sampler2D _MainTex;
        uniform float4 _MainTex_ST;
        uniform float _Intensity;

        inline half4 LightingUnlit( SurfaceOutput s, half3 lightDir, half atten )
        {
            return half4 ( 0, 0, 0, s.Alpha );
        }

        void surf( Input i , inout SurfaceOutput o )
        {
            float2 uv_MainTex = i.uv_texcoord * _MainTex_ST.xy + _MainTex_ST.zw;
            o.Emission = ( ( tex2D( _MainTex, uv_MainTex ) * _Intensity ) + float4( 1,1,1,1 ) ).rgb;
            o.Alpha = 1;
        }

        ENDCG
    }
}

The shader’s graph:

This works great in the Scene view:

but in Game view it’s invisible:

This happens as long as I use Zero/SrcColor blend.

Please help me to find a workaround :(.

Thanks a lot

That should not happen. If you change to a different blendmode (e.g. One One), it doesn’t?
Try “Blend DstColor Zero” - should have the same result as “Blend Zero SrcColor”

Unfortunately, It behaves exactly the same!
If I turn down the “Intensity” to (1) and change the “add” value to (0) it appears but not as I want it to.

The logic behind Zero/SrcColor blend in the Game view as far as I can tell is this:
The (shader pixel) gets multiplied to (zero) then (frame buffer pixel) gets multiplied to the (color of the shader) regardless of its intensity, so when I increase the “intensity” value or set the “add” value to (1) to remove black areas,
I just make the SrcColor to white, and white multiplied to any color is itself, that’s why it acts as a fully transparent shader.

However, in the Scene view the logic is like this:
The (shader pixel) gets multiplied to (zero) then (frame buffer pixel) gets multiplied to the (shader color) multiplied to its Intensity, so the output pixel is brighter.

how the scene view is rendering the scene different than a camera?!!
below is the image of different values used for Add in the shader graph,

Apparently Scene view is getting rendered in HDR!
Enabling HDR will make it appear in the game view as well
because no more clamping of frame buffer into (0-1) range happening :confused:
Is there any way to achieve it without enabling HDR??? I’m targetting mobile and HDR is heavy AFAIK

Also noticed that if you change the blend to DstColor/SrcAlpha and use 1 as the “Intensity” and remove the “Add” node aaaand manually duplicate the mesh
You get the same effect (it gets brighter with each duplication)!
which does the job but is a little bit messy.

The final sahder code:

Shader "Amplify/LightFlowMultLayer"
{
    Properties
    {
        _MainTex("MainTex", 2D) = "white" {}
        _Tint("Tint", Color) = (0,0,0,0)
        [HideInInspector] _texcoord( "", 2D ) = "white" {}
        [HideInInspector] __dirty( "", Int ) = 1
    }

    SubShader
    {
        Tags{ "RenderType" = "Transparent"  "Queue" = "Transparent+0" "IgnoreProjector" = "True" "IsEmissive" = "true"  }
        Cull Back
        ZWrite Off
        Blend DstColor SrcAlpha
        BlendOp Add
        CGPROGRAM
        #pragma target 2.0
        #pragma surface surf Unlit keepalpha noshadow
        struct Input
        {
            half2 uv_texcoord;
        };

        uniform sampler2D _MainTex;
        uniform half4 _MainTex_ST;
        uniform half4 _Tint;

        inline half4 LightingUnlit( SurfaceOutput s, half3 lightDir, half atten )
        {
            return half4 ( 0, 0, 0, s.Alpha );
        }

        void surf( Input i , inout SurfaceOutput o )
        {
            float2 uv_MainTex = i.uv_texcoord * _MainTex_ST.xy + _MainTex_ST.zw;
            half4 tex2DNode8 = tex2D( _MainTex, uv_MainTex );
            o.Emission = ( tex2DNode8 * _Tint ).rgb;
            o.Alpha = 1;
        }

        ENDCG
    }
    //CustomEditor "ASEMaterialInspector"
}

practical result:

I don’t have the knowledge, can someone please convert it to a 3 pass shader so I don’t need to duplicate the game object itself 3 times?
Thanks a lot