Order-Independent Transparency

Started by
9 comments, last by osmanb 12 years, 1 month ago
I mentioned last year that I have made a new colored shadow-mapping algorithm. I planned to have it documented long ago but I have shifted focus to so many other things. But I am almost there.


For that algorithm to work I also had to create an order-independent transparency algorithm. It was invented for the purpose of solving the last problem with my shadow-mapping routine, but it is itself a stand-alone algorithm that can be implemented into any game engine.

I planned already to write a white paper on that as well, but I was discussing it with the CEO. I didn’t explain the algorithm to him but he left me with some guidelines for deciding whether or not it is worth publishing:
#1: Is any existing technique similar?
#2: Is it valuable?

These are fairly intuitive questions to ask and I considered #1: No and #2: Yes, which is why I considered writing a white paper about it.
But from his recommendation I would like to be absolutely positive about these answers.


#1: Is any technique similar?
Sorry I don’t want to post the technique here. It will be explained in a white paper, and I guess you can understand wanting to be the one who publishes it.
So I am aware of how screen-door, depth-peeling, and GPGPU sorting work, and my technique is not similar to these at all. It works on any machine with MRT, so GPGPU’s are not necessary. Unlike with depth-peeling, it is single-pass, and while it has a small amount of run-time overhead it is still far faster than depth-peeling, and very suitable for real-time without the artifacts caused by screen-door and the need for GPGPU support. Finally, a very slight change to hardware could make it equally as efficient as just rendering transparent objects in the normal way, which would still make it faster than GPGPU sorting, although not being as accurate on the final colors, since you need to know how many layers there are in order to calculate the true final color. Current back-to-front routines have this same problem though, so the trade-off for speed is likely worth it.
If anyone knows about any other techniques, feel free to post.

#2: Is it valuable?
I am already fairly sure it is, especially for deferred rendering.
I would like to collect a list of actual examples where this type of algorithm could be of help.
It helps remove artifacts in general.
It helps with fog.
It helps with my colored shadow-mapping routine.
What else?


L. Spiro

I restore Nintendo 64 video-game OST’s into HD! https://www.youtube.com/channel/UCCtX_wedtZ5BoyQBXEhnVZw/playlists?view=1&sort=lad&flow=grid

Advertisement
Have you read the paper by Intel on Adaptive Transparency?

http://software.intel.com/en-us/articles/adaptive-transparency/

It is probably not similar to your technique, but just thought it may be worth looking at.

Anyway, can't wait for the white paper, anything that helps with multi-layered transparency is always welcome.
That was a nice read, thank you.
Luckily for me, it is indeed not similar to my technique and has the further disadvantage of requiring a GPGPU.


L. Spiro

I restore Nintendo 64 video-game OST’s into HD! https://www.youtube.com/channel/UCCtX_wedtZ5BoyQBXEhnVZw/playlists?view=1&sort=lad&flow=grid

Hi, looking forward to your paper, I hope you'll be able to finish it soon! :-)

Maybe this won't be related or you probably already read it but check this:

Multi-Layer Depth Peeling via Fragment Sort, Baoquan Liu Li-Yi Wei Ying-Qing Xu, Microsoft Research Asia

I don't have a link :-( It is rather older, it doesn't require GPGPU and I haven't really tried it :-)
Thank you for the information on the technique.

My technique is single-pass so not similar to depth-peeling, and has no sorting processing, so this technique won’t be similar.

However I have just considered the one case where my routine will produce unacceptable results, and am not sure how to handle it in the most robust way.
At least it can be handled, but I need to continue my research for a bit.



L. Spiro

I restore Nintendo 64 video-game OST’s into HD! https://www.youtube.com/channel/UCCtX_wedtZ5BoyQBXEhnVZw/playlists?view=1&sort=lad&flow=grid

You might find these interesting:

Stochastic Transparency: http://www.nvidia.com/object/nvidia_research_pub_016.html
Colored Stochastic Shadow Maps: http://research.nvidia.com/publication/hardware-accelerated-colored-stochastic-shadow-maps

The first is about doing screen-door transparency at a sub-pixel scale, using multisampling hardware, but randomizing the pattern. The second extends that for use in shadow maps. You might also find some other techniques in the related works sections of them.

It sounds like your algorithm will be very useful, and I'm looking forward to reading about it.

--Buzzy
Thank you for the links. I remember those from a long time ago when I was talking about my shadow-mapping routine and forgot.

The bad news for now is that while it would be possible for my routine to support full order-independent transparency, but with too many artifacts for practical use, or too much slow-down to make it looks nice.

However it works for both back-to-front and front-to-back, and because of the way it works I believe it still has some use with deferred shading, as it was never the fact that objects could be drawn in any order that made it useful. It was more about how the transparent objects were drawn, period.
I will have to do some more investigating to see how helpful it is with deferred shading.

Another however, front-to-back rendering is necessary for my new colored shadow-mapping routine, so my transparency routine still is necessary for me, and my colored shadow-mapping routine is still fully on track. Perhaps instead of making it a stand-alone paper I will add it to the colored shadow-mapping paper.


L. Spiro

I restore Nintendo 64 video-game OST’s into HD! https://www.youtube.com/channel/UCCtX_wedtZ5BoyQBXEhnVZw/playlists?view=1&sort=lad&flow=grid

Is it comparable to interleaved rendering, where you render transparent surfaces with a stipple pattern and use some kind of (bilateral)filter to merge them (take a look at my signature for a simple example or at drobot's page about advanced material rendering for more advanced examples).
There is a lot of existing research in this field. Look for papers on K-buffers, A-buffers, Deep Shadow Maps, Opacity Shadow Maps, Deep Opacity Maps, and Fourier Opacity Mapping. I was also reading this paper recently which uses a new approach to K-buffering.
Neither (my pseudo-OIT and colored shadow mapping algorithm) are similar to interleaved rendering or anything mentioned above, but those are some interesting techniques.
Thank you for the pointers. I want to check out that stuff more when I have time.


L. Spiro

I restore Nintendo 64 video-game OST’s into HD! https://www.youtube.com/channel/UCCtX_wedtZ5BoyQBXEhnVZw/playlists?view=1&sort=lad&flow=grid

This topic is closed to new replies.

Advertisement