Rendering optimizations
Three.js has built-in support for other detail-related optimizations as well in order to make processing faster. Culling, the process of excluding hidden objects from rendering, is a common example. Three.js does view frustum culling based on bounding spheres, meaning it will avoid spending valuable compute time calculating visual information about objects that are off screen. It also does backface culling by default, which hides the back side of mesh faces. However, it doesn't do occlusion culling, meaning it doesn't know not to render an object that is in front of the camera but obscured by another object that is closer to the camera. The implication of these optimizations is that large meshes should often be split into several smaller ones to reduce computation if only part of the large mesh is on the screen, and you don't get any benefits by default from having short viewable distances. This simple change might be sufficient for top-down games where few objects...