added bump mapping and specular mapping, courtesy of jeromeetienne