The biggest performance bottle-neck is the JS itself, specifically stock three.js is quite inefficient. However, that's just a matter of optimising three.js, or using WebGL directly if you need more fine-grained control. You can get a lot done in a browser these days.