And honestly, I don't think that your GPU doesn't support per pixel fogging. That's a feature almost as old as GPUs. What makes you think that it doesn't support it?
say my camera is placed at (0,0,0) and there is a large quad of size 20000x20000 at (0,10,0), with each vertex at the same distance to camera (at 45,135,-45,-135 degree). fog ends at 5000.
when the quad is rendered, its color is totally fog color. because all vertices have the color of fog, they make all pixels have the same color. this is the behavior of per-vertex fog.
if the 2 vertices which were behind the camera are moved forward so that they are a little bit in front of the camera, then the fog effect looks correct.
right now i am using Intel Atom Z3740D with onboard GPU.
anyway i'll try to use shader to render the quad, i did it once with other engine. i was just curious how software renderer would do in this case.