I am in the middle of implementing stochastic screen space reflection based on frostbite presentation here. On page number 39, it is stated that we need to reproject the ray intersection location instead of the reflected surface location. I don't really get what's the difference between the two. Isn't ray intersection location the same as the reflected surface location. Can someone explain this?

And then in another ppt, they mention that

I mentioned temporal reprojection, so let’s have a quick look at it now. The idea is simple: given a pixel’s 3D coordinate, check where it was in the previous frame, project it, and we have the texcoord to sample.

… except when we move the viewport, reflections exhibit parallax. That is, the reflected objects move according to their depth, not the depth of the surface which reflects them. Attempting to reproject reflections using the closer depth results in smearing. So we calculate the average depth of the reflected objects, and reproject using that. This results in much reduced smearing.

Again I don't understand this at all.


1 Answer 1


Usual reprojection finds UV of current visible point into previous frame. For diffuse and rough objects it simply adds motion vector: vec2 UV_reprojected = UV + motion;

But for mirror-like surfaces it doesn't work, because we see not object (mirror) itself but what reflects in mirror (virtual object). The general idea to reproject reflected point is:

  1. Find world space position for reflected point visible in reflector (Here we need to know reflected path length).
  2. Substract world space delta between frames, so we found previous world position.
  3. Project this point into reflector using previous camera position.
  4. Project world space reflector point back to the screen.

The most hardest part is p.3, and is not easy analytically find this point, because reflector can change normal. Some interesting links about this topic:

  • Reflection reprojection in Uncharted. Here we assume that reflector is plane that changes transform, both camera and receiver are also dynamic.
  • Ray Tracing Gems chapter 32. (32.4.3) Theoretical approach that finds reflector position in terms of least squares. And interesting geometrical optic approach (here we assume that reflector point is locally sphere-like).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.