Vertex programs, texture shaders and register combiners provide a way to take control of the graphics pipeline at various stages. All these pieces together enable high quality real-time per-pixel shading. In the future one can expect to get even closer to a fully hardware-accelerated RenderMan  like programmable shading. Despite the great technological progress, a few drawbacks make it difficult to develop high-quality shaders: it would be very helpful if length preserving specular interpolation would be available, since the currently supported linear interpolation leads to a number of problems and makes expensive per-pixel normalization necessary. The register combiners are a possible way to implement programmable per-pixel operations, but a more flexible shader definition language as proposed in the upcoming OpenGL 2.0 standard  would be helpful.
In our current work, the vectors used to construct the tangent space are derived from the analytical definition of the used surface. In order to make the promising results for high-quality per-pixel shading applicable to a wide range of applications these vectors should be computed from an ordinary triangle mesh. Another reasonable extension would be to apply a more realistic shading model than the currently used Blinn-Phong  shading model. For example the Cook-Torrance  model or even true BRDF distributions  could be used. Kautz  describe a very promising approach which unfortunately needs too many render passes on current hardware.