Show HN: M. C. Escher spiral in WebGL inspired by 3Blue1Brown

laszlokorte 48 points 8 comments April 04, 2026
static.laszlokorte.de · View on Hacker News

The latest 3Blue1Brown video [1] about the M. C. Escher print gallery effect inspired me to re-implement the effect as WebGL fragment shader on my own. [1]: https://www.youtube.com/watch?v=ldxFjLJ3rVY

Discussion Highlights (7 comments)

sgbeal

Note to other viewers: getting the Escher-esque effect requires tapping a checkbox at the top of the page (easy to miss on a large monitor).

crazygringo

Very cool! However, it took me a while to figure out how this was supposed to be used. For others: On desktop, at least, you need to click and drag up/down on the left-hand control that says "swipe" with two arrows. Or click "Autoplay". laszlokorte -- can I suggest that the up/down icons should also be clickable/holdable? Since they're icons, they look like buttons, not a "swipe area". And also, maybe default to having autoplay on (but still with the controls visible)? Because it was not clear to me, at first, that the whole point of the site is infinite zoom.

djmips

Why not include the Print Gallery image? Or - if worried about copyright, the ability to load an image.

nvme0n1p1

This is awesome! I'd love to be able to upload a custom image too.

breakyerself

This is awesome. I'd love to see the original escher image scroll through there.

Panzerschrek

I did my own version too: https://www.youtube.com/watch?v=xxLfDHe93_M

vivzkestrel

stupid question to webgl experts here? - can you build an entire fps shooter game using web gl? how is physics handled? how is collision detection, enemy AI handled? what kind of frame rate can you expect from a counter strike game made in web gl? - what is the difference between webgl and threejs and babylonjs? - what is the man hour effort involved for doing something like this assuming you know html, css and js pretty well but not familiar with gamedev - is open gl the non web version of web gl? or are they completely different?

Semantic search powered by Rivestack pgvector
3,558 stories · 33,161 chunks indexed