I am working on a web-based molecular visualization program for a research project (e.g., one that can display XYZ and PDB files). The current options are outdated (for instance, Jmol uses Java). My advisor uses MDL Chime but almost no browser supports that plugin nowadays.
My idea has been to use modern web tools so the visualization program is future-proof for a while. I'm using WebGL through Three.js and it seems to be working pretty well.
However, I'm already running up against some performance bottlenecks. I need to be able to display systems of 500,000 to 2,000,000 atoms in realtime (60 fps). These systems should be rotatable/zoomable/etc.
The entire system is fed into WebGL as one geometry using a BufferGeometry.
500,000 atoms * 24 triangles per sphere * 60 = 720 million triangles per second
My MBP-retina (GT 650m) chokes on this, so I have no doubt most people's computer would do the same.
However, the MDL Chime program I mentioned before renders this scene fine on my advisor's 10 year old laptop without using the GPU. What kind of trick could it be using to achieve this performance? The spheres don't look low-quality; there's no way it could be rendering that many triangles per second, right?