--- cvsroot/libgender/material.C 2004/10/31 22:55:23 1.24 +++ cvsroot/libgender/material.C 2004/11/01 01:57:03 1.25 @@ -100,8 +100,10 @@ vout.position = wpos; vout.tex_coord[0] = vin.tex_coord[0]; - vout.tex_coord[1] = model_view_matrix * shader::compile::vec4 (x(vin.normal), y(vin.normal), z(vin.normal), 0); - vout.tex_coord[2] = lightpos - model_view_matrix * vin.vertex; + xyz (vout.tex_coord[1]) = normal_matrix * vin.normal; + xyz (vout.tex_coord[2]) = xyz (lightpos - model_view_matrix * vin.vertex); + w (vout.tex_coord[2]) = 1.; + xw (vout.tex_coord[3]) = shader::compile::vec2 (length (xyz (vout.tex_coord[2])), 1.); p.vsh->end (); p.vsh->compile (); @@ -109,22 +111,18 @@ p.fsh->start (); temp_1f fac; - temp_2f disp; - temp_1f dx, dy; - temp_1f bumpnormal; - dx = dFdx (texture_2d (normvar, fin.tex_coord[0])); - dy = dFdy (texture_2d (normvar, fin.tex_coord[0])); + temp_1f dist; - disp = shader::compile::vec2 (dx, dy) * 0.1; + dist = min (x(fin.tex_coord[3]), 100.); - fac = dot (normalize (fin.tex_coord[1]), normalize (fin.tex_coord[2])); + fac = dot (normalize (xyz (fin.tex_coord[1])), xyz (normalize (fin.tex_coord[2]))); //fac = dot (shader::compile::vec3 (normalize (fin.tex_coord[1]) + normalize (fin.tex_coord[2])) * 0.5, bumpnormal); //fac = dot (bumpnormal, normalize (fin.tex_coord[2])); //fac = pow (max (fac, 0.0), 8); - xyz (fout.frag_color) = (texture_2d (texvar, fin.tex_coord[0] - disp) + 0.1) * max (fac, 0.0); + xyz (fout.frag_color) = (texture_2d (texvar, fin.tex_coord[0] - disp)) * max (fac, 1.2 * (1 - dist / 100.)); p.fsh->end (); p.fsh->compile ();