For models: ARGB buffers -> A - z-value, RGB - color For lights: ARGB buffers -> A - z-value, RGB - lights index Idea for lights: Render whole world at very low resolution, rendering just the volume of the lights in to the 6 cube faces, same as done for models. The light volumes might overlap, in which case a new value is made which indexes a LUT which contains a list of lights. eg: have 5 lights in scene. Start rendering and hit light 1 and store 1, at another point hit both light 1 and light 2, store a value of 6 and add to LUT an entry that contains a list with light 1 and 2 in it. At another point light 4 and 5's volumes overlap and store value of 8 and add LUT entry with light 4 and 5 in it. Obviously there are some limitations, can't have more than 2^24 combinations of light overlaps, but would need 1000s of lights and with huge amounts of overlapping for that to occur, which does not seem like a realistic case. Perhaps need to set limits on number of omni lights and limits on the falloff of the directional light. Perhaps up to 8 omni lights (really only need 1 or 2), and then 1000s of spot lights with limits on how many other lights they can overlap.