That's how vertex lighting works. The intensity of the light (from black to green in this case) is based on the angle between the vertex normals and the vector from the light to that vertex. The resulting light intensity is then interpolated across the triangle. The vertex normal is calulated as the average of the face normals of the adjacent faces. That means that the vertices with normals pointing towards the light are lit more and the vertices with normals pointing away from the light are lit less.To get something similar to what you posted, you have to move the light up and set some attenuation. It won't look as perfect as in your image, but at least more like it.