
/* CgFX 1.4 file for bumpdemo effect. */

uniform sampler2D texture;
uniform sampler2D texture_shadow_map;

float obj_w;
float obj_h;
float obj_z;

float obj_sw;
float obj_sh;


float screen_x;
float screen_y;
float screen_w;
float screen_h;

float scale;

struct PS_OUTPUT
{
    float4 color : COLOR0;
};

PS_OUTPUT ps_main(float2 normalMapTexCoord : TEXCOORD0)
{
    PS_OUTPUT Out;
    float4 color;
    float4 shadow_color;
    float2 screen_pos;

    color = tex2D(texture, normalMapTexCoord);

    int new_z, ng, nr;
    new_z = ((color.r*255.0 + color.g*255.0*255.0)*scale) + obj_z;
    ng = new_z / 255.0;
    nr = new_z-ng*255.0;
    color.r = nr/255.0;
    color.g = ng/255.0;

    screen_pos.x = (screen_x+normalMapTexCoord.x*obj_w*scale)/screen_w;
    screen_pos.y = 1.0-(((screen_y+(1.0-normalMapTexCoord.y)*obj_h*scale))/screen_h);

    shadow_color = tex2D(texture_shadow_map, screen_pos);
    if (((shadow_color.r*255.0 + shadow_color.g*255.0*255.0)) > new_z) Out.color = shadow_color;
    else Out.color = color;

    return Out;
}

technique shadow {
  pass {
    FragmentProgram = compile glslf ps_main();
    VertexProgram = NULL;
  }
}

