You can kinda do it in the vertex shader, but the geometry would have to be very finely tessellated for the curve to look right since each individual triangle would still have straight edges. Alternatively you could raytrace the camera instead, which makes it trivial to use any projection, but that's a non-trivial departure from how most engines work. Post-process is the least intrusive way to do it.
I'm not sure what HYPER DEMON does, it's built on a custom engine so they could really specialize into the crazy FOV if they wanted to.