> but then I look around and see the cool jobs in 3D graphics, in distributed systems, in machine learning, or other "hard computer science" fields, and it feels like I will never be qualified without a graduate degree.
I think you are being too hard on yourself. You can only become a specialist in one of these fields. Even if you were to dedicate your life on doing 3D graphics, you won't easily switch to a distributed systems or machine learning type of focus. Also, working on "hard" problems in these fields primarily happens in an industry/academic research type of job - these are really niche topics you have to throw your soul at to stay up to date/ahead in.