Friday, May 11, 2012

Glossy Screen Space Reflections

For my Game Architecture final project (@RPI), I worked on a glossy screen space reflection (SSR) tech demo. Specular (mirror like) SSR was originally (to the best of my knowledge) brought up at beyond3d, and Crytek also had a few slides on it in their Secrets of CryENGINE 3 Graphics Technology presentation.

Implementation Details

  1. SSR image pass
    1. Pretty standard, except randomly jitter the reflection ray according to roughness
    2. I weighted every direction equally, but you can definitely weight it according to some direction generation probability density (and generate reflection directions accordingly)
  2. Blur pass
    1. Splat the reflection samples in world space based on reflection distance
      1. Convert the world space splat to screen space splat based on distance from eye to surface
    2. Can't splat (scatter) that well, so gather (essentially a bilateral blur)
    3. Weight each nearby sample by 
      1. Reflection distance (we want to blur more the longer the reflection is)
      2. Reflection distance similarity
      3. Depth similarity
      4. Normal similarity
    4. Apply Fresnel incidence effects


  • The standard issue with SSR not having enough information is present. 
  • Running on a 5850 (very unoptimized)
    • Timing information on the bottom left

No comments:

Post a Comment