I am working on a graphics engine designed to be used in flight simulators. It therefore has to feature an advanced weather rendering system with clouds you can fly through.
For this, I implemented a particle system that renders a few hundred thousand billboards scattered in layers and in a 120km radius area. Until now, these clouds were my only transparent objects and I was relying on sorted alpha blending to get the desired result.
My engine is making some progress and I now need to be able to render different types of transparent objects. Of course, I cannot rely on sorted alpha blending anymore since these objects are too different to be handled with a uber shader.
In search for alternatives, I tried to implement a few order independent transparency techniques with inconclusive results :
Weighted Blended OIT : not working well with very contrasting objects and almost opaque objects. Hard to find a visibility function that can handle all kind of objects.
Linked List OIT / Adaptive transparency : result quality is very good but efficiency depends too much on scene complexity and a cloud rendering system involves way too much layers/overdraw.
Most OIT techniques are illustrated with simple to moderate complexity scenes. I feel like I am in a dead-end and I'm looking for new ideas.
Is there a different OIT technique that I am not aware of and that can be appropriate for such a case ?
Are there cloud rendering techniques or rendering pipeline designs that can help to solve this problem ?
Thank you for your time and help.