It’s not really software vs hardware, it’s the fixed function pipeline api vs the shader api.
The fixed function pipeline api only does one thing one way with a lot of limitations while the shader pipeline can basically do anything (doesn’t even have to be rendering a 3D scene) as long as it’s fast enough for your purpose.