If driver ext string reports EXT_Cg_shader you can use it. But, older cards doesn’t support fragment programs, so you are limited only for vertex programs. Even more, I think that position invariance doesn’t work well on non-FX hardware, ie… if you want multipass then forget fixed funcion pipeline and do it via vertex shaders.