#version 300 es

// A very cut down variant of Unity's directional lightmap;
// has an inline medium precision matrix constructor,
// but even if dirBasis is declared as mediump
// some code was promoting it to high precision.

out mediump vec4 _glesFragData;

mat3 transposem3(mat3 m) {
  return mat3( m[0][0], m[1][0], m[2][0],
               m[0][1], m[1][1], m[2][1],
               m[0][2], m[1][2], m[2][2]);
}

in mediump vec3 inNormal;

void main()
{
    mediump mat3 dirBasis = transposem3(mat3(
        vec3( 0.8164966, 0.0, 0.5773503),
        vec3( -0.4082483, 0.7071068, 0.5773503),
        vec3( -0.4082483, -0.7071068, 0.5773503)));
    mediump vec4 c;
    c.xyz = dirBasis * inNormal;
    c.w = 0.0;
    _glesFragData = c;
}
