Click the video for full-screen.

Select renderer

2d uses WebCrypto's getRandomValues, which should be random, or Math.random, which is pseudorandom. It could potentially draw all images, but it is slower than WebGL, as it uses the CPU more than the GPU.

webgl and webgl2 use a pseudorandom shader. The size of its input seed value cannot draw all possible images.