Top Banner
Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab 1 Pedro V. Sander 2 Jason Lawrence 3 Natalya Tatarchuk 4 John R. Isidoro 4 1 Princeton University 2 Hong Kong University of Science and Technology 3 University of Virginia 4 Advanced Micro Devices, Inc.
33

Accelerating Real-Time Shading with Reverse Reprojection ...jdl/papers/reproj/nehab_gh07_slides.pdf · Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab1

Sep 19, 2018

Download

Documents

hatuyen
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Accelerating Real-Time Shading with Reverse Reprojection ...jdl/papers/reproj/nehab_gh07_slides.pdf · Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab1

Accelerating Real-Time Shading withReverse Reprojection Caching

Diego Nehab1 Pedro V. Sander2 Jason Lawrence3

Natalya Tatarchuk4 John R. Isidoro4

1Princeton University2Hong Kong University of Science and Technology

3University of Virginia

4Advanced Micro Devices, Inc.

Page 2: Accelerating Real-Time Shading with Reverse Reprojection ...jdl/papers/reproj/nehab_gh07_slides.pdf · Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab1

Motivation

Page 3: Accelerating Real-Time Shading with Reverse Reprojection ...jdl/papers/reproj/nehab_gh07_slides.pdf · Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab1

Motivation

Page 4: Accelerating Real-Time Shading with Reverse Reprojection ...jdl/papers/reproj/nehab_gh07_slides.pdf · Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab1

Previous work

• Dedicated hardware

• Address Recalculation Pipeline [Regan and Pose 1994]

• Talisman [Torborg and Kajiya 1996]

• Image based rendering

• Image Warping [McMillan and Bishop 1995]

• Post Rendering 3D Warp [Mark et al. 1997]

Page 5: Accelerating Real-Time Shading with Reverse Reprojection ...jdl/papers/reproj/nehab_gh07_slides.pdf · Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab1

Previous work

• Interactivity for expensive renderers

• Frameless rendering [Bishop et al. 1994]

• Render Cache [Walter et al. 1999]

• Holodeck/Tapestry [Simmons et al. 1999/2000]

• Corrective Texturing [Stamminger et al 2000]

• Shading Cache [Tole et al. 2002]

Page 6: Accelerating Real-Time Shading with Reverse Reprojection ...jdl/papers/reproj/nehab_gh07_slides.pdf · Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab1

Our approach

• Explore coherence in real-time rendering

RecomputeRecompute

Page 7: Accelerating Real-Time Shading with Reverse Reprojection ...jdl/papers/reproj/nehab_gh07_slides.pdf · Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab1

Our approach

• Explore coherence in real-time rendering

LookupLookup Hit?Hit?

Load/ReuseLoad/Reuse

RecomputeRecompute

UpdateUpdate

Page 8: Accelerating Real-Time Shading with Reverse Reprojection ...jdl/papers/reproj/nehab_gh07_slides.pdf · Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab1

Requirements

• Load/reuse path must be cheaper

• Cache hit ratio must be high

• Lookup/update must be efficient

LookupLookup Hit?Hit?

Load/ReuseLoad/Reuse

RecomputeRecompute

UpdateUpdate

Page 9: Accelerating Real-Time Shading with Reverse Reprojection ...jdl/papers/reproj/nehab_gh07_slides.pdf · Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab1

First insight

• Cache only visible surface fragments

• Use screen space buffer to store cache

• Output sensitive memory

• Keep everything in GPU memory

• Leverage hardware Z-buffering for eviction

Page 10: Accelerating Real-Time Shading with Reverse Reprojection ...jdl/papers/reproj/nehab_gh07_slides.pdf · Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab1

Cache hit ratio

Page 11: Accelerating Real-Time Shading with Reverse Reprojection ...jdl/papers/reproj/nehab_gh07_slides.pdf · Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab1

Cache hit ratio results

Page 12: Accelerating Real-Time Shading with Reverse Reprojection ...jdl/papers/reproj/nehab_gh07_slides.pdf · Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab1

[Walter et al. 1999]

Second insight

• Use reverse mapping

• Recompute scene geometry at each frame

• Leverage hardware filtering for lookup

Page 13: Accelerating Real-Time Shading with Reverse Reprojection ...jdl/papers/reproj/nehab_gh07_slides.pdf · Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab1

Third insight

• Do not need to reproject at the pixel level

• Hard work is performed at the vertex level

Page 14: Accelerating Real-Time Shading with Reverse Reprojection ...jdl/papers/reproj/nehab_gh07_slides.pdf · Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab1

Address calculation

Time t Time t+1

Page 15: Accelerating Real-Time Shading with Reverse Reprojection ...jdl/papers/reproj/nehab_gh07_slides.pdf · Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab1

Hit or miss?

Time t Time t+1

Page 16: Accelerating Real-Time Shading with Reverse Reprojection ...jdl/papers/reproj/nehab_gh07_slides.pdf · Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab1

Hit or miss?

cached depth

Time t

• Load cached depth

• Compare withexpected depth

expected depth

Page 17: Accelerating Real-Time Shading with Reverse Reprojection ...jdl/papers/reproj/nehab_gh07_slides.pdf · Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab1

Third insight

• Do not need to reproject at the pixel level

• Hard work is performed at the vertex level

• Pass old vertex coords as texture coords

• Leverage perspective-correct interpolation

• One single final division within pixel shader

Page 18: Accelerating Real-Time Shading with Reverse Reprojection ...jdl/papers/reproj/nehab_gh07_slides.pdf · Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab1

What to cache?

• Slow varying, expensive computations

• procedural albedo

• Values required in multiple passes

• color in depth of field or motion blur

• Samples within a sampling process

• amortized shadow map tests

Page 19: Accelerating Real-Time Shading with Reverse Reprojection ...jdl/papers/reproj/nehab_gh07_slides.pdf · Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab1

Refreshing the cache

• Cached entries become stale with time• View dependent effects, repeated resampling

• Implicit (multipass algorithms)• Flush entire cache each time step

• Random updates• Refresh random fraction of pixels

• Amortized update• Combine cache with new values at each frame

Page 20: Accelerating Real-Time Shading with Reverse Reprojection ...jdl/papers/reproj/nehab_gh07_slides.pdf · Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab1

Motion blur

60fps brute force

3 passes

Page 21: Accelerating Real-Time Shading with Reverse Reprojection ...jdl/papers/reproj/nehab_gh07_slides.pdf · Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab1

Reuse albedo in multipass

• For each time step

• Fully compute albedo in first pass

• For each remaining pass

• Lookup into first pass and try to reuse

Page 22: Accelerating Real-Time Shading with Reverse Reprojection ...jdl/papers/reproj/nehab_gh07_slides.pdf · Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab1

Motion blur

60fps brute force

3 passes

Page 23: Accelerating Real-Time Shading with Reverse Reprojection ...jdl/papers/reproj/nehab_gh07_slides.pdf · Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab1

Motion blur

60fps cached30fps brute force

6 passes

Page 24: Accelerating Real-Time Shading with Reverse Reprojection ...jdl/papers/reproj/nehab_gh07_slides.pdf · Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab1

Motion blur

30fps cached14 passes

Page 25: Accelerating Real-Time Shading with Reverse Reprojection ...jdl/papers/reproj/nehab_gh07_slides.pdf · Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab1

Randomly distributed refresh

1/4th updated

Error plot

Page 26: Accelerating Real-Time Shading with Reverse Reprojection ...jdl/papers/reproj/nehab_gh07_slides.pdf · Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab1

Amortized super-sampling

• Cache updated by recursive filter rule

• Lambda controls variance reduction...

• ...but also the lifespan

Page 27: Accelerating Real-Time Shading with Reverse Reprojection ...jdl/papers/reproj/nehab_gh07_slides.pdf · Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab1

Trade-offs

VarianceLifespan

Page 28: Accelerating Real-Time Shading with Reverse Reprojection ...jdl/papers/reproj/nehab_gh07_slides.pdf · Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab1

Variance reduction at work

4 tap PCF16 tap PCF

Page 29: Accelerating Real-Time Shading with Reverse Reprojection ...jdl/papers/reproj/nehab_gh07_slides.pdf · Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab1

Reusing shadow map tests

• At each frame, perform new shadow tests

• Read running sum from cache

• Blend the two values

• Update cache and display results

Page 30: Accelerating Real-Time Shading with Reverse Reprojection ...jdl/papers/reproj/nehab_gh07_slides.pdf · Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab1

Variance reduction at work

4 tap PCF16 tap PCF

Page 31: Accelerating Real-Time Shading with Reverse Reprojection ...jdl/papers/reproj/nehab_gh07_slides.pdf · Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab1

Variance reduction at work

16 tap PCF 4 tap amortized

Page 32: Accelerating Real-Time Shading with Reverse Reprojection ...jdl/papers/reproj/nehab_gh07_slides.pdf · Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab1

Conclusions

• Shading every frame anew is wasteful

• We can reuse some of the shadingcomputations from previous frames

• Use reverse reprojection caching to do thatin real-time rendering applications

• Less work per frame = faster rendering

Page 33: Accelerating Real-Time Shading with Reverse Reprojection ...jdl/papers/reproj/nehab_gh07_slides.pdf · Accelerating Real-Time Shading with Reverse Reprojection Caching Diego Nehab1

Future work

• Track surface points and select shaderlevel of detail based on screenspace speed

• Change refresh rate per pixel based onrate of cached value change

• Use code analysis to automatically selectappropriate values to cache