Yeah, it can be done in software, you have to create all the math functions with the FPU, but it would be very slow.

It's "easier" to do it with a pixel shader, the shader-compiler provides many of the math functions . You get much faster frame rates.