// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (see license.txt)

    #ifndef UNITY_LIGHTING_COMMON_INCLUDED
    #define UNITY_LIGHTING_COMMON_INCLUDED
    
    fixed4 _LightColor0;
    fixed4 _SpecColor;
    
    struct UnityLight
    {
        half3 color;
        half3 dir;
        half  ndotl; // Deprecated: Ndotl is now calculated on the fly and is no longer stored. Do not used it.
    };
    
    struct UnityIndirect
    {
        half3 diffuse;
        half3 specular;
    };
    
    struct UnityGI
    {
        UnityLight light;
        UnityIndirect indirect;
    };
    
    struct UnityGIInput
    {
        UnityLight light; // pixel light, sent from the engine
    
        float3 worldPos;
        half3 worldViewDir;
        half atten;
        half3 ambient;
    
        // interpolated lightmap UVs are passed as full float precision data to fragment shaders
        // so lightmapUV (which is used as a tmp inside of lightmap fragment shaders) should
        // also be full float precision to avoid data loss before sampling a texture.
        float4 lightmapUV; // .xy = static lightmap UV, .zw = dynamic lightmap UV
    
        #if defined(UNITY_SPECCUBE_BLENDING) || defined(UNITY_SPECCUBE_BOX_PROJECTION) || defined(UNITY_ENABLE_REFLECTION_BUFFERS)
        float4 boxMin[2];
        #endif
        #ifdef UNITY_SPECCUBE_BOX_PROJECTION
        float4 boxMax[2];
        float4 probePosition[2];
        #endif
        // HDR cubemap properties, use to decompress HDR texture
        float4 probeHDR[2];
    };
    
    #endif