Interactive Rendering using the Render Cache

28
Interactive Rendering using the Render Cache Bruce Walter, George Drettakis iMAGIS*-GRAVIR/IMAG-INRIA Steven Parker University of Utah *iMAGIS is a joint project of CNRS/IMAG/INRIA and UJF

description

Interactive Rendering using the Render Cache. Bruce Walter, George Drettakis iMAGIS*-GRAVIR/IMAG-INRIA Steven Parker University of Utah *iMAGIS is a joint project of CNRS/IMAG/INRIA and UJF. Motivation. Goal: Interactive rendering. Ray tracing. Path tracing. Motivation. - PowerPoint PPT Presentation

Transcript of Interactive Rendering using the Render Cache

Page 1: Interactive Rendering using the Render Cache

Interactive Rendering using the Render Cache

Bruce Walter, George DrettakisiMAGIS*-GRAVIR/IMAG-INRIA

Steven ParkerUniversity of Utah

*iMAGIS is a joint project of CNRS/IMAG/INRIA and UJF

Page 2: Interactive Rendering using the Render Cache

Motivation

Goal: Interactive rendering

Ray tracing Path tracing

Page 3: Interactive Rendering using the Render Cache

Motivation

High-quality renderers• Pixel based

- Ray tracing, path tracing, etc.

• Wide range of lighting effects- Reflection, refraction, global illumination, etc.

• Too slow for interactive use- Many seconds per image

- Often used only for final images

- Alternate renderers used for interactive editing

Page 4: Interactive Rendering using the Render Cache

Motivation

Interactive rendering• Rapid feedback is paramount

- High accuracy is less important

• Fast consistent framerate- Eg, > 5 fps

- Could use faster renderer• Eg, hardware accelerated scan conversion

• Use same renderer- Need to bridge framerate gap

Page 5: Interactive Rendering using the Render Cache

Visual Feedback Loop

Standard visual feedback loop• Entirely

synchronous• Framerate is

limited by the renderer

renderer

application

image

user

Page 6: Interactive Rendering using the Render Cache

Visual Feedback Loop

Modified visual feedback loop

display

application

image

userrenderer

Asynchronousinterface

Page 7: Interactive Rendering using the Render Cache

Goals

Independent display process• Works with many (pixel-based) renders

Exploit frame to frame coherence• Reproject pixels from previous frames

Fast consistent framerate• Use simple, fast methods

Concentrate rendering effort• Prioritize pixel’s need for recomputation

Page 8: Interactive Rendering using the Render Cache

Demo

Page 9: Interactive Rendering using the Render Cache

Previous Work

Approximate or progressive approaches• Progressive radiosity or ray tracing• Frameless rendering

Reprojection or warping• Image based rendering (IBR)• Ray tracing acceleration

Page 10: Interactive Rendering using the Render Cache

Previous Work

Parallel processing• Multiprocessors or distributed clusters

Intelligent display processes• Post-rendering warp• Holodeck system

Page 11: Interactive Rendering using the Render Cache

Algorithm Overview

renderer

renderer

image

Rendercache

interpolate

sampling

depth cull

project

Display process

Page 12: Interactive Rendering using the Render Cache

Image Estimation

Projection• Project cached points onto current image

- Camera transform provided by application

• Z-buffer- In case multiple points map to a pixel

Page 13: Interactive Rendering using the Render Cache

Image Estimation

Problem: visual artifacts

Original view New view

Page 14: Interactive Rendering using the Render Cache

Image Estimation

Depth cull heuristic• Problem: occluded points may be visible

- Z-buffering only works within a pixel

• Find pixels with locally inconsistent depths- Likely to be from different occluding surfaces

Raw projection After depth cull

Page 15: Interactive Rendering using the Render Cache

Image Estimation

Interpolation / smoothing• Problem: small gaps in point data• Interpolate pixel colors

- Compute locally-weighted average colors

- Currently uses 3x3 neighborhoods

After interpolationAfter depth cullRaw projection

Page 16: Interactive Rendering using the Render Cache

Image Estimation

Results after each stage

Projection Depth cull Interpolation

Page 17: Interactive Rendering using the Render Cache

Image Estimation

Problem: visual artifacts• Simple filter can remove many artifacts

Need new points from renderer• Previously invisible areas• Color changes due to non-diffuse shading

- Eg,specular highlights

• Changes due to user editing- Changes in lighting, geometry, materials

Page 18: Interactive Rendering using the Render Cache

Sampling

Generate priority image• Based on pixel’s need for re-rendering• Priority given to pixels with older points

- Render cache stores an age with each point

• Empty pixels priority based on local density- Highest priority given to regions without points

Page 19: Interactive Rendering using the Render Cache

Sampling

Choose pixels for rendering• Sampling must be sparse

- Relatively few pixels are rendered per frame

• Chosen using error-diffusion dither- Concentrates pixels in high priority regions

- Maintains good spatial distribution

• Requested pixels sent to renderer(s)- Results returned at some later frame

Page 20: Interactive Rendering using the Render Cache

Sampling

Displayed image Priority image Requested pixels

Page 21: Interactive Rendering using the Render Cache

Optimizations

Further prioritizing sampling• Identify points that are likely to be outdated

- Color change heuristic

- Renderer supplied hints

• Prematurely age these points- Forces sooner resampling of these points

Page 22: Interactive Rendering using the Render Cache

Optimizations

Moving objects• Application can supply object transforms• Applied to points in the render cache

- Improves tracking of moving objects

- Points also aged to encourage resampling

Page 23: Interactive Rendering using the Render Cache

Demo

Page 24: Interactive Rendering using the Render Cache

Results

Timing: 70.5 ms or 14 fps• 256x256 image, display process only• 195 Mhz R10K processor

Other(10%)

Point projection(47%)

Depth cull(12%)

Interpolation(20%)

Request new samples(8%)

Update render cache(4%)

Page 25: Interactive Rendering using the Render Cache

Conclusions

Greatly improved interactivity• Eg, ray tracing, path tracing

Efficient reuse of rendered pixels• Using reprojection and simple filters

Prioritized sparse sampling• Efficently uses limited rendering budget

Independent automatic display process• Can be used with many different renderers

Page 26: Interactive Rendering using the Render Cache

Future Work

Larger images• Cost scales linearly with # of pixels

Higher render ratios• Currently work well out to about 1:64

Anti-aliasing

Page 27: Interactive Rendering using the Render Cache

The End

Page 28: Interactive Rendering using the Render Cache

Overview

Cache rendered results• Stored as colored points in 3D

Estimate current image• Project points onto current image plane• Filter to reduce artifacts

Prioritize future rendering• Identify problem pixels• Sparse sampling for limited render budget