Shameless plug: If you'd like to know how to build a simpler version of THREE.js from scratch in WebGL, you can check out my book: https://www.amazon.com/Real-Time-Graphics-WebGL-interactive-...
https://www.amazon.com/Real-Time-Graphics-WebGL-interactive-...
My book on WebGL2 (500+ pages) takes you from understanding the rendering pipeline, WebGL2 API, etc. and progressively walks the reader by building a feature-rich 3D graphics engine in WebGL2 (ES6) that includes cameras, lights, shaders, post processing, OBJ models, etc. with a final project of a 3D virtual car showroom.
https://www.amazon.com/Real-Time-Graphics-WebGL-interactive-...
- (Real-Time Rendering with WebGL2) Just reached out to the publisher. Let's see what happens: https://www.amazon.com/Real-Time-Graphics-WebGL-interactive-...
If you're interested in learning about 2/3D graphics and then applying it to build a 3D graphics engine—similar to something like THREE—check out my book: https://www.amazon.com/Real-Time-Graphics-WebGL-interactive-...