66
Screen-space Reflections

Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Screen-space Reflections

Page 2: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

SSR: ON SSR: OFF

Page 3: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

What about cubemaps?

Page 4: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Sometimes work well

Page 5: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

But no self reflection

Page 6: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Precomputed

only static reflections

Page 7: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

- Render with reflected camera?- Perfect reflections- Scales bad with scene complexity

- Scales bad with many reflective surfaces

- Only flat surfaces

- Is there another way?

Planar Reflections

Page 8: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Naive cubemapsNaive cubemapsNaive cubemapsNaive cubemaps

With cube map, reflections out of sync

Page 9: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Rerender Solution

● Render again from reflected viewpoint● Complexity scales with scene● Normally for perfectly planar surfaces

Page 10: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

What can be exploited in scene?

Page 11: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Reuse screen-space data!

Page 12: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Basic SSR Algorithm - Mirror Reflection

● For each fragment○ Compute reflection ray

○ Trace along ray direction (using depth buffer)

○ Use color of intersection point as reflection color

Page 13: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

++ +

Shaded scene Normals Depth

Shaded scene with SSR SSR

Page 14: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Linear Raymarch

Goal: Find intersection point

● At each step, check depth value● Quality depends on step size● Can be refined

Page 15: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

SSR in Frostbite

Tile classification

Ray allocation

Cheap raytracing HQ raytracing

Color resolve

Temporal filter

Page 16: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

SSR in Frostbite

Tile classification

Ray allocation

Cheap raytracing HQ raytracing

Color resolve

Temporal filter

Page 17: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Rough Surfaces

Use cheap rays

Page 18: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Smooth Surfaces

Use expensive rays

Page 19: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Hierarchical ray trace (Expensive)

Page 20: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Generate Depth Mip-Map● Use min values instead of average

Page 21: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Start at first mip level - OK!

Page 22: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Continue at next mip level

Page 23: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Intersection at 3 mip level!

Intersection!

Page 24: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Check same pixel with mip level 2

Page 25: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

No intersection at mip level 2

Page 26: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Continue with mip level 3

Intersection!

Page 27: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Check mip level 2

Still Intersection!

Page 28: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Intersection at mip level 1 DONE

Page 29: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

What's the difference?● Cannot miss tiny geometry● Mip-map hierarchy● More expensive

Page 30: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

?

Page 31: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Importance Sampling:

● BRDF● Halton sequence

Reflection direction to use

Page 32: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

SSR in Frostbite

Tile classification

Ray allocation

Cheap raytracing HQ raytracing

Color resolve

Temporal filter

Page 33: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Neighbor Rays

● Nearby pixels likely to give similar reflection

● Reuse nearby intersection points

● Need to weight accordingly

Page 34: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Weighing Neighbors● Green in formula is important part● "Variance reduction"● For each nearby hit

○ weight = fs(hit) / pk○ contribution = color(hit) * weight

● FG is precomputed BRDF factor● They use N = 4

Page 35: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

1 ray/pixel in half-resolutionNo ray reuse

Page 36: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

1 ray/pixel in half-resolution4 neighbor reuse = 4 resolve samples

Page 37: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

SSR in Frostbite

Tile classification

Ray allocation

Cheap raytracing HQ raytracing

Color resolve

Temporal filter

Page 38: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Temporal Reprojection (filtering)Reproject last frame into current frame

Page 39: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Temporal Reprojection (filtering)● Problems: smeared reflections when moving camera● Reproject ray intersection location instead of reflected surface location

Camera

Surface location Ray intersection

Page 40: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

1 ray/pixel in half-resolution, 4 resolve samplesWithout temporal filter

Page 41: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

1 ray/pixel in half-resolution, 4 resolve samplesWith temporal filter

Page 42: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

● Decouple ray tracing from color resolve

● Only do ray tracing in half resolution● Promote color resolving to full

resolution● They still use four nearby in resolve

Sparse Ray Tracing

Page 43: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Temporal filter +1 ray/pixel in half resolution +4 resolve samples in half resolution

Page 44: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Temporal filter +1 ray/pixel in half resolution +4 resolve samples in full resolution

Page 45: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Filtered Importance Sampling

● Pretend rays are cones● Wider intersection point

Page 46: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Filtered Importance Sampling● Use mipmapped values in resolve● Mip level depend on

○ Roughness○ Distance to hit

● Mix with monte carlo approach

Page 47: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Previous result (Monte carlo)

Page 48: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Mixed with cone sampling

Page 49: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Performance● PS4, 1600x900● Benchmark parameters

○ Ray trace once per half pixel○ Use four nearby rays in color resolve○ <20% HQ rays

● Takes 2.19 ms○ Most expensive step: 0.8 ms in color resolving

Page 50: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

However, screen space reflection is not perfect

Page 51: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Hidden Geometry Problem

Page 52: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Edge Cutoff

Page 53: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Edge Fading

Page 54: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Summary● Limited data, make the best of it● Many tricks and optimisations● Hiding some artifacts, can achieve useful result

Page 55: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Video

Page 56: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Bonus Slides!

Page 57: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Just Cause 3

Usage Today

Page 58: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Just Cause 3

Page 59: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Metal Gear Solid V: The Phantom Pain

Page 60: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Metal Gear Solid V: The Phantom Pain

Page 61: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Crysis 2 (introduced technique)

Page 62: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Crysis 2 (introduced technique)

Page 63: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Fallout 4

Page 64: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Fallout 4

Page 65: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Mirror’s Edge Catalyst (pre-release)

Page 66: Screen-space Reflections...SSR in Frostbite Tile classification Ray allocation Cheap raytracing HQ raytracing Color resolve Temporal filter Neighbor Rays Nearby pixels likely to give

Mirror’s Edge Catalyst (pre-release)