Skip to main content
added 2 characters in body
Source Link

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 techniquetechniques or rendering pipeline designdesigns that can help to solve this problem ?

Thank you for your time and help.

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 technique or rendering pipeline design that can help to solve this problem ?

Thank you for your time and help.

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.

Source Link

Cloud rendering and transparency order

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 technique or rendering pipeline design that can help to solve this problem ?

Thank you for your time and help.