Now, with shaders! I had to work on a custom pixel fork to allow me to bind samples to uniforms accessed by custom shaders. This let me implement “screen” and “overlay” compositions to build my light map. Lights are now an extension of entities and have their own update behaviors (such as flickering for a torch, or pulsing for the coin).