Prism Dispersion: geometric optics and batched WebGL rendering
Trace refraction and total internal reflection for 2,121 rays using 2D geometric optics and Cauchy dispersion, then submit them in a single draw call through custom shaders in p5.js WebGL mode.