The essential collection of 2D shape functions:
But "relatively cheap" is very … relative ALUs are cheaper than texture readings, that's right, but you usually need more than one shape The advantage of procedural shapes is that they can be scaled well. Always sharp, no compression artifacts. And they're a lot easier to animate. However, filtering can be a problem for a large frequency / range.
Distance field based procedures also have interesting properties when you switch between them. Basically, you're mixing distorted UV rooms and then running the threshold function to finalize a shape. I tried here: