Thanks a lot! That was my goal. It's a trick I learned: if you zoom in from a distance, everything appears flat. The effect is achieved by zooming out while simultaneously moving the camera closer to the subject!
I love how that transition is relative to the scroll position rather than working off a breakpoint. Did you consider doing the same thing with the first bar chart? I think it would be nice to slowly reveal the standings :)
Yes, I could have been using THREE.OrthographicCamera(), however, it makes the effect way less cinematic, and most importantly, it makes the depth harder to see (particularly for a scatter plot).
Author here. I'm using Svelte, which is great for interactive applications. For the event handling I'm very influenced by what https://mlu-explain.github.io/ does.
The 3d plot is made with Threejs through the Threlte wrapper. One challenge was animating the 20k points in the 3d plot, which is handled by a custom vertex shader.
That's really nice to hear and it gives motivation to continue! Next article will probably go 3D, but it adds a lot of difficulties. I still need to find out a good small-scale but playful shader project to cover!
Indeed it's a simplification! You can use buffers to keep information from previous states or share state between pixels (for both fragment and compute shaders). Though it can greatly reduce the performance sometimes.
For an intro however, I think it's simpler to assume no memory nor shared state.