Advertisement Jump to content
Sign in to follow this  

Realtime dynamic reflections/refractions

This topic is 2496 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hello again, dear forum :-)

I've been searching a lot recently and haven't really seen any citations of this interesting 2005 paper:
Approximate Ray-Tracing on the GPU with Distance Impostors. by Szirmay-Kalos et. al, which became foundation of GPU Gems 3 ch. 17 (http://http.develope...gems3_ch17.html).

I will sum it up for everyone: Whole scene is rendered from the centre of a reflecting/refracting object into layered cube-maps using depth-peeling, each layer contains several cube-map textures: normal, depth and some material properties (color, transparency, reflectivity, index of refraction, etc). Many layers might be necessary (5-8 or more). This gives us, ideally, the total scene geometric and surface information stored in usual textures that can be used for... you guess right - RAY TRACING! smile.png The uses are (multiple) reflections/refractions and possibly caustics and possibly far more. It is very simple and does indeed work with completely dynamic scenes where anything can reflect and refract anything at interactive rates (simpler scenes very real-time).

This method is particulary suitable for the project I'm working on, I was excited to see this and I was really wondering why I haven't really seen this anywhere... So I sat down and implemented it - a general version, with arbitrarily multi-layered dynamic depth-peeling (unlike the simplified GPU Gems version with fixed layers) and multiple bounces... and artefacts began popping up - especially depth discontinutity problems and depth-acne (similar to shadowmap acne). Of course, dudes didn't mention virtually any them but they must have got them as well :-) I want to discuss these problems...

Nevertheless, now I have the realtime GPU ray-tracing functionality up and running (with some artefacts) and it was as simple as the article suggested. It can be used in a real-time project, too, especially if the scene can be layered and simplified into layers manually (as in the article - it is from 2005!).

Here, I want to go into details if anyone shows up, who is interested and has read this. Anyone? smile.png I've already got many ideas how to speed up the depth-peeling (build) on SM5 class HW (don't let me fool you here - the algorithm does run nicely on SM3 class HW!) but there is no point if the ray-tracing (shading) has severe glitches which nobody seems to mention in papers.

Thanks for discussion! smile.png

Share this post

Link to post
Share on other sites
Sign in to follow this  

  • Advertisement

Important Information

By using, you agree to our community Guidelines, Terms of Use, and Privacy Policy. is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!