I used Unity's Rendering Pipeline for near all of the effects. There are two cameras, one that renders the player's view directly to a 160×144 texture, and another camera that just renders a quad with a material containing that texture plus some other nodegroup trickery so that it maps brightness values to a 1×4 texture containing the current colors.