Double sided shader lighting problem?

I added a simple cube and a directional light. You can see the front and back lighting.

Now, I added a plane. With front and back lighting.


I used this shader code on the plane:

Shader "Custom/DoubleSided2" {
    Properties {
        _Color ("Color", Color) = (1,1,1,1)
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
        _Glossiness ("Smoothness", Range(0,1)) = 0.5
        _Metallic ("Metallic", Range(0,1)) = 0.0
    }
    SubShader {
        Tags { "RenderType"="Opaque" }
        LOD 200
        Cull Off
        CGPROGRAM
        // Physically based Standard lighting model, and enable shadows on all light types
        #pragma surface surf Standard fullforwardshadows

        // Use shader model 3.0 target, to get nicer looking lighting
        #pragma target 3.0

        sampler2D _MainTex;

        struct Input {
            float2 uv_MainTex;
        };

        half _Glossiness;
        half _Metallic;
        fixed4 _Color;

        void surf (Input IN, inout SurfaceOutputStandard o) {
            // Albedo comes from a texture tinted by color
            fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
            o.Albedo = c.rgb;
            // Metallic and smoothness come from slider variables
            o.Metallic = _Metallic;
            o.Smoothness = _Glossiness;
            o.Alpha = c.a;
        }
        ENDCG
    }
    FallBack "Diffuse"
}

The problem here is, that the back side of the plane is not realistic like the cube lighting (Img. 1). It’s brighter.

What am I doing wrong?

Your problem is that Cull Off makes both front-facing and back-facing triangles be rendered, but all the lighting calculations are still only performed relative to one face. To make the back-face correctly lit, you’ll need to flip the normals and tangents in the shader as appropriate. Or, duplicate the mesh facing the other direction.

In practice, Cull Off is only really useful for materials that do not use directional lighting.