I've slowly been building a Javascript 2D canvas library that renders lots of well known fractals. This just demolished my motivation: 3D is just too damn sexy.
Good luck with that JS canvas raytracer that handles surface gradients from iterating arbitrary functions.
The JS library was 2D only. I have no intention of writing a ray-tracer in JS. This project erased the motivations on my original project; it didn't persuade me to play with 3D. I'll leave that to someone whose itch needs more scratching than mine.
I don't see why this should daunt your 2D efforts - it still sounds like something fun to play around with;)
Indeed -- the whole point of projects like that is they make you a better programmer. The program itself is just a nice side effect.