The quick answer is no. NURBS are pretty complex, and it would be difficult to write an efficient shader that can render them on the GPU. I think it's possible, but it isn't usually done because there's a better way.
The better way is to render Bézier patches directly on the GPU, since any NURBS can be converted into a connected set of Bézier patches. To generate the patches, you perform knot insertion at every knot until it hits the same multiplicity as the degree; e.g. on a cubic NURBS, you would perform knot insertion at every knot until every knot is a triple knot. The control points of the NURBS can then be treated as a connected Bézier mesh.
There is a problem with this, specific to shaders: When you triangulate your Bézier patches, it's critical that patches which share a boundary also share the exact same tessellation settings, or there will be cracks in your NURBS surface due to tessellation mismatch. If you use fixed tessellation settings, this isn't a problem, but if you use view-dependent tessellation, then you need to make sure that each patch boundary has its "view dependent" tessellation calculated independently, so that adjacent patches will match.