I've been looking through several different Order Independent Transparency algorithms. But very few of them seem to answer a few things.
I understand that the idea of OIT is to not worry so much about ordering. But does it still matter in some cases? And is there a way to preserve it if a certain ordering is desired?
For starters, does presorting impact OIT in any way? Such as speeding it up, or producing different visual results?
And is lighting still handled per pixel as normal when you submit your geometry to be rendered. Or does it happen defacto?
A few algorithms I have been looking at.
Depth Peeling. Can't find a good link.
And then Depth Weighted blending. Which seems to produce muddy results with layers. Linky
I guess I should also ask how necessary, and how fast is this. My main issue isn't layer's of transparent objects with overlaps. Things like holograms and layers upon layers of glass are likely to be rare. But mostly with particles and their drawing order from different particle systems, and them interacting with other transparent objects correctly.
Currently... the engine treats a particle engine like one complete object, and renders them directly to the backbuffer on the transparency pass. Though because the particles are volumes... it causes some graphical errors. For example if there was a huge explosion that covers a massive chunk of land... there will be a random stack of smoke that renders on top of it.
And I don't want to break up all the particle instancing to batch them with the rest of the geometry... as it would likely massively raise the draw calls for every break.
I currently can't provide any pictures right now. The engine is undergoing a serious rewrite to get it more usable. So a good portion of the code is slashed out. I'm just trying to solve problems I have noticed in my first right up.