That laptop only has Intel GPU, albeit a good one (Iris 550, 800 GFlops).
> it shouldn't be necessary to have powerful graphics processing just in order to see a marketing website
I generally agree. If I would be making that web site, I would have tested on the slowest Intel GPU I have in this house, I think I still have a Windows tablet with Atom Z3735G somewhere in the attic. However, I’m 100% certain it’s technically possible to implement that particular thing in a way so it works even there.
One obvious improvement, merge all dots into a single immutable mesh, for mouse dragging effect displace them in vertex shader. Each dot needs 4 vertices, each vertex with XYZ relative to center of sphere, UV to apply round sprite texture, and one scalar random number for mouse drag displacements. They render 20k dots, rectangular sprites would need 80k vertices, with 6 floats per vertex that’s about 2MB of VRAM, and this way all dots will render in a single draw call. Possible to optimize further by passing less data per vertex (e.g. positions only need 2 floats for lat/lon, and texture coordinates only need 2 bits of data), and more so if WebGL supports geometry shaders in which case we only need to pass single vertex per dot without texture coordinates, and expand them into quads on GPU.
However, such low-level GPU shenanigans require skills most web developers probably don’t have.
That laptop only has Intel GPU, albeit a good one (Iris 550, 800 GFlops).
> it shouldn't be necessary to have powerful graphics processing just in order to see a marketing website
I generally agree. If I would be making that web site, I would have tested on the slowest Intel GPU I have in this house, I think I still have a Windows tablet with Atom Z3735G somewhere in the attic. However, I’m 100% certain it’s technically possible to implement that particular thing in a way so it works even there.
One obvious improvement, merge all dots into a single immutable mesh, for mouse dragging effect displace them in vertex shader. Each dot needs 4 vertices, each vertex with XYZ relative to center of sphere, UV to apply round sprite texture, and one scalar random number for mouse drag displacements. They render 20k dots, rectangular sprites would need 80k vertices, with 6 floats per vertex that’s about 2MB of VRAM, and this way all dots will render in a single draw call. Possible to optimize further by passing less data per vertex (e.g. positions only need 2 floats for lat/lon, and texture coordinates only need 2 bits of data), and more so if WebGL supports geometry shaders in which case we only need to pass single vertex per dot without texture coordinates, and expand them into quads on GPU.
However, such low-level GPU shenanigans require skills most web developers probably don’t have.