Colors are derived from grayscale values using a Z-gradient shader (the sprite is tinted based on depth), with colored fog sprites layered on top using additive blending.