#ifndef HEADER_TXT
#define HEADER_TXT
#ifdef UBO_DISABLED
uniform mat4 ViewMatrix;
uniform mat4 ProjectionMatrix;
uniform mat4 InverseViewMatrix;
uniform mat4 InverseProjectionMatrix;
uniform mat4 ProjectionViewMatrix;
uniform vec2 screen;

uniform vec3 sun_direction;
uniform vec3 sun_col;
uniform float sun_angle;
uniform float blueLmn[9];
uniform float greenLmn[9];
uniform float redLmn[9];

#else

layout (std140) uniform Matrices
{
    mat4 u_view_matrix;
    mat4 u_projection_matrix;
    mat4 u_inverse_view_matrix;
    mat4 u_inverse_projection_matrix;
    mat4 u_projection_view_matrix;
    mat4 u_shadow_projection_view_matrices[4];
    vec2 u_screen;
};

// Expand because of catalyst (14.12) not correctly associating array in UBO
layout (std140) uniform LightingData
{
    vec3 sun_direction;
    vec3 sun_col;
    float sun_angle;
    float bL00;
    float bL1m1;
    float bL10;
    float bL11;
    float bL2m2;
    float bL2m1;
    float bL20;
    float bL21;
    float bL22;

    float gL00;
    float gL1m1;
    float gL10;
    float gL11;
    float gL2m2;
    float gL2m1;
    float gL20;
    float gL21;
    float gL22;

    float rL00;
    float rL1m1;
    float rL10;
    float rL11;
    float rL2m2;
    float rL2m1;
    float rL20;
    float rL21;
    float rL22;
};

layout (std140) uniform SPFogData
{
    // x: fog_start, y: fog_end, z: fog_max, w: fog_density
    vec4 u_fog_data;
    vec4 u_fog_color;
};

#endif
#endif // HEADER_TXT