Today we have tools such as Nvidia's CUDA and OpenCL to perform general purpose computing on the GPU (GPGPU). Seeing that traditional shaders are specifically used for generating graphics by filling a frame buffer with pixel values, are there any examples of graphics shaders being used for non-graphics computing prior to the modern GPGPU capability?
Shaders can take input parameter values sent from the CPU, and the GPU can be told to render to a texture buffer instead of the screen. With this in mind, I feel like someone could send in values for computation, compute them using the vertex and/or pixel shaders, and encode the results in the output pixel values which can be read by the CPU from the target buffer.