Baseline is three.js r186 LDrawLoader configured as on evanbacon.dev/lego: smoothNormals = false, then every mesh merged per material with mergeGeometries; parts come from one pre-packed MPD (LDrawLoader's fastest path, no per-file requests). ldr fetches the .ldr and only the parts it uses from the hosted parts CDN, then draws them instanced with hidden-stud culling. Both: MeshStandardMaterial, no edge lines, no shadows. Load = start to first finished frame. Frame = GPU-bound time per frame (uncapped, 20 back-to-back renders). Memory = vertex/index/instance buffers uploaded to the GPU, plus JS heap growth in Chrome.