////////////////////////////////////////////////////////////////////////////////////////////////////
// Oasis - compressed normal mapped lightmap vertex shader
////////////////////////////////////////////////////////////////////////////////////////////////////

// OpenGL ES require that precision is defined for a fragment shader
#ifndef NO_PRECISION_DEFINITION
	#ifdef GL_FRAGMENT_PRECISION_HIGH
	   precision highp float;
	#else
	   precision mediump float;
	#endif
#endif




////////////////////////////////////////////////////////////////////////////////////////////////////
uniform sampler2D     g_texture;                // PARAM_DEFAULT_TEXTURE1
uniform sampler2D     g_texture2;               // PARAM_DEFAULT_TEXTURE2
uniform sampler2D     g_texture3;               // PARAM_DEFAULT_TEXTURE3



////////////////////////////////////////////////////////////////////////////////////////////////////
varying vec4        vTexCoord;
varying vec4        vColor0;
varying vec4        vColor1;
varying vec4        vColor2;



////////////////////////////////////////////////////////////////////////////////////////////////////
void main(void)
{
    // Fetch textures   
    vec3 vDot = texture2D( g_texture, vTexCoord.xy ).rgb;
    vec3 vLuma = texture2D( g_texture2, vTexCoord.zw ).rgb;
    vec3 vAlbedo = texture2D( g_texture3, vTexCoord.xy ).rgb;
    vec3 vLumaDot = vLuma * vDot;
    
    // Sum light contributions
    vec3 vLight = vColor0.rgb * vLumaDot.r;
    vLight += vColor1.rgb * vLumaDot.g;
    vLight += vColor2.rgb * vLumaDot.b;
               
    // Attach alpha (depth) and output
    gl_FragColor = vec4( vLight * vAlbedo, vColor0.a ); 
}

