Real-Time Stochastic Rasterization
on Conventional GPU Architectures

in ACM SIGGRAPH/Eurographics High Performance Graphics 2010
(Best paper awards 2nd place)

Morgan McGuire, NVIDIA and Williams College
Eric Enderton, NVIDIA
Peter Shirley, NVIDIA and University of Utah
David Luebke, NVIDIA

Paper (PDF)
Talk Slides (PDF | PPT)
Source Code


This paper presents a hybrid algorithm for rendering approximate motion and defocus blur with precise stochastic visibility evaluation. It demonstrates---for the first time, with a full stochastic technique---real-time performance on conventional GPU architectures for complex scenes at 1920x1080 HD resolution. The algorithm operates on dynamic triangle meshes for which per-vertex velocity or corresponding vertices from the previous frame are available. It leverages multisample antialiasing (MSAA) and a tight space-time-aperture convex hull to efficiently evaluate visibility independently of shading. For triangles that cross z=0, it fall backs to a 2D bounding box that we hypothesize but do not prove is conservative. The algorithm further reduces sample variance within primitives by integrating textures according to ray differentials in time and aperture.


Images and Results

The following presentation images were gamma adjusted, cropped, and had resolution adjusted to print and display on screen in the PDF format. These images do not all appear in the final version of the paper.

You can also download the high-resolution images used to produce the PDF images above. Except for those that were already cropped or had insets added, these were unmodified from the output of our program and are suitable for result comparison in experiments.


Source Code

Download our source code: (29 kB)

This is a tool to help you build your own stochastic rasterization system to reproduce our published results and explore your own algorithms.

You need to write your own C++ infrastructure for loading scenes, computing shadow maps, and issuing the rendering calls. In addition, the shaders may use some features of the G3D library's GLSL preprocessor that are not standard GLSL, and were developed for NVIDIA OpenGL drivers. The files refer to some classes that are not defined within the provided code. The implementations of those classes are tied to your rendering infrastructure, not the rasterization algorithm, so you must provide your own implementations.


  author = {Morgan Mc{G}uire and Eric Enderton and Peter Shirley and David Luebke},
  title = {Real-Time Stochastic Rasterization on Conventional GPU Architectures},
  year = {2010},
  month = {June},
  booktitle = {Proceedings of High Performance Graphics 2010},
  location = {Saarbrucken, Germany},
  url = {}