Note: I'm not asking for an x% faster method. Work efficiency is an objective measure, it doesn't change because of hardware.
I've got a voxel world I'm trying to render, think Minecraft, same texture resolution too. Because it's like Minecraft, all my textures use nearest filtering.
What I'd like to do is do my lighting per texel (using raytracing, but the raytracing part isn't relevant to the question).
I saw this post but their solution is not feasible for mine (so many open questions, like, I'm clearly not going to do this at the block level, which means that you've got to deal with this at the chunk level, and if the chunk size is 32^3, that's 32k blocks you have to deal with... 50,331,648 texels per chunk... more than the number of pixels in screen space)
The only other option I saw, agnostic to the scene, was to figure out the texel position and model (easy for a voxel minecraft style world) of every pixel, stream compact these texel IDs into an array (whose length is fixed to the size of the window itself, the maximum number of texels you could display at once).
Then you could take those texel positions, and continue raytracing for each unique texel position.
After that's done, you could then go back to your original screen, and reverse look up the resulting raytraced texel output.
And you could just avoid global stream compaction and focus on tiles of the screen if you wanted.
Regardless, I was wondering if there were any other work efficient methods that, given accurate texel data per pixel, could allow per texel lighting with better performance or the same, and more objectively, don't end up with the same or more calculations of light than exist pixels in a single frame.