This question is more about expanding on an answer posted for an old but similar question.
Part of the answer says this:
You simply fill the sunlight from the top to the bottom, every layer is gathering light from neighbor voxels in the previous layer with attenuation. Very fast - single pass, no lists, no data structures, no recursion.
I actually am having an easier time understanding how you would flood fill light for point lights. But doing so for sunlight, in one pass with no recursions, I still can't understand how it is done step by step.
Specific questions I would like to know about this:
Do you compare lighting of neighbor voxels only to the 4 cardinal directions, or do you check the up and down neighbors too?
If you don't store data structures for the lighting algorithm, how do you check for voxels that are already visited?
If there was a diagram explaining a step by step process of a single-pass light propagation that would be helpful. It seems like it would be easier on performance than casting several rays from each voxel to see if it hits light.