Greg Humphreys
humper@cs.virginia.edu

I'm a faculty member in the Computer Science Department at UVa. In my former life, I was a member of the computer graphics group at Stanford.

When I'm not living the life of the mind, I like to play tournament bridge, take pictures of things, hit golf balls, travel, play with yarn, and pretend I know how to cook.

Buy My Book!

You will surely want to buy copies of Physically Based Rendering: From Theory to Implementation, a book I wrote between 1999 and 2004 with Matt Pharr. This book presents the theory of physically based rendering, along with a complete implementation of an extensible raytracing-based rendering system. The book and the software are currently in use in courses around the world, and also support multiple active research projects in rendering. They make a great gift, especially if your loved ones enjoy high-dimensional integrals. Check out the book's official web site!


Research

My primary research interests lie in algorithms and systems for managing complexity in computer graphics. However, I'm a computer scientist first, and a graphics guy second, so I've also been known to branch out in other areas where I think I can really contribute.

Graphics

SAVE: Serving and Archiving Virtual Environments
Along with my colleagues in the Institute for Advanced Technology in the Humanities, I am exploring the need for and design of a peer-reviewed, curated, securely accessible archive of virtual heritage artifacts. Research issues include secure archival, scalable dissemination, remote visualization, new acquisition technology, peer review procedures for 3d models, etc.


Institute for Ultra-Scale Visualization
The SciDAC Ultra-Scale Visualization Institute, established on September 15, 2006, is a 5-year research and outreach effort sponsored by the DOE SciDAC program. Its mission is to address the upcoming peta-scale visualization challenges facing computational science and engineering. The Institute will foster the exchange of knowledge between universities, DOE laboratories, and industry to make advanced visualization an integrated component in scientific discovery. The Institute will revolutionize the very process of scientific discovery by equipping scientists with tools that shed light on the knowledge hidden in previously incomprehensible datasets.


Fast, Scalable 3D Scanning Using a Mobile Array of Cameras
We have built a new 3D Scanner using an array of digital SLR cameras and a novel high-resolution, time-varying, omnidirectional pattern projection system that allows us to acquire very high quality 3D scans of interior environments much faster than traditional approaches.


Precomputed Radiance Transfer using a Spectral Mesh Basis
We have extended precomputed radiance transfer to support physically based, multi-bounce indirect lighting in real-time with dynamic local lighting and editable BRDFs. Our key idea is to represent both the direct lighting and precomputed diffuse indirect transfer using a spectral mesh basis set derived from an arbitrary scene model.


Montana: Efficient handling of sparse measurements of high-dimensional functions
We are investigating new algorithms for handling measured high-dimensional functions such as spatially-varying BRDFs. In particular, we have developed algorithms for factoring scattered SVBRDF measurements directly without requiring the construction of an interpolated intermediate matrix. This allows us to consider a much larger portion of the measured data, achieving substantially more efficient algorithms.


Chromium: Cluster Rendering
Chromium is a system for manipulating streams of graphics API commands on clusters of workstations. Chromium's stream filters can be arranged to create sort-first and sort-last parallel graphics architectures that, in many cases, support the same applications while using only commodity graphics accelerators. In addition, these stream filters can be extended programmatically, allowing the user to customize the stream transformations performed by nodes in a cluster. Because this stream processing mechanism is completely general, any cluster-parallel rendering algorithm can be either implemented on top of or embedded in Chromium. We have demonstrated that real-world applications can use Chromium to achieve good scalability on clusters of workstations. By completely abstracting the underlying graphics architecture, network topology, and API command processing semantics, we allow a variety of applications to run in different environments.


Samoa: Multidimensional Adaptive Sampling
Rendering scenes with effects such as motion blur, depth of field, and glossy reflections is a Monte Carlo estimation problem in a high dimensional sample space. Most ongoing research in Monte Carlo rendering techniques seeks to improve the efficiency of this estimation process by carefully selecting sample locations. In the Samoa project, we are exploring novel adaptive sampling techniques that work by maintaining the local gradient and neighborhood structure around each sample. Our technique is unbiased, adapts quickly to a wide variety of scenes, and scales easily in the number of dimensions.


Antimony: Ultra-fast Blue Noise Generation
Sampling distributions with blue noise characteristics are widely used in computer graphics. Poisson-disc distributions are known to have blue noise characteristics but have traditionally been thought of as too expensive to generate and as an alternative many techniques have been developed for approximating or tiling precomputed such distributions. The Antimony project is exploring new, efficient methods for the direct computation of true Poisson-disc distributions. We have found a simple new algorithm for generating approximate distributions that runs in linear time. We are analyzing the spectral properties of these distributions and developing ways to further improve their blue noise spectral characteristics. One key advantage of our technique is that it permits a natural extension to support importance sampling of a given density function, along with the use of the resulting point set as a texture basis function.


Multigrid Techniques on the GPU
In this project, we looked at the application of graphics hardware to general-purpose numeric computing. Specifically, we used programmable graphics hardware to create a system that is capable of solving a variety of partial differential equations with complex boundary conditions. Many areas of graphics, simulation, and computational science require efficient techniques for solving such equations. Our system implements the multigrid method, a fast and popular approach to solving large boundary value problems. We have demonstrated the viability of this technique by using it to accelerate three applications: simulation of heat transfer, modeling of fluid mechanics, and tone mapping of high dynamic range images.


Lithium: Ludic Informatics
Lithium is a system for enhancing observation of user interactions in virtual environments. In particular, we focus on analyzing behavior patterns in the popular team-based first-person perspective game Return to Castle Wolfenstein: Enemy Territory. This game belongs to a genre characterized by two moderate-sized teams (usually 6 to 12 players each) competing over a set of objectives.

Lithium allows spectators to visualize global features, as opposed to the limited local view that traditional spectating modes provide. We also add overlay visualizations of semantic information related to the action that might be important to a spectator in order to reduce the information overload that plagues traditional overview visualizations. These overlays can visualize non-obvious information such as player distribution over time and areas of intense combat activity, and also highlight important features like player paths, fire coverage, etc. This added information allows spectators to identify important game events more easily and reveals large-scale player behaviors that might otherwise be overlooked.


Archsplit: Non-invasive Generation of Exploded Views
Archsplit is a system for interactively producing exploded views of 3D architectural environments such as multi-story buildings. These exploded views allow viewers to simultaneously see the internal and external structures of such environments. To create an exploded view, we analyze the geometry of the environment to locate individual stories. We then use clipping planes and multipass rendering to separately render each story of the environment in exploded form. Archsplit operates at the graphics driver level and therefore can be applied to existing OpenGL applications, such as first-person multiplayer video games, without modification. The resulting visualization allows users to understand the global structure of architectural environments and to observe the actions of dynamic characters and objects interacting within such environments.


TJC: Scalable, Robust Visualization of Large Trees
The TreeJuxtaposer system allowed visual comparison of large trees with guaranteed visibility of landmarks and Focus+Context navigation. While that system allowed exploration and comparison of larger datasets than previous work, it was limited to a single tree of 775,000 nodes by a large memory footprint. In this project, we designed and implemented two scalable, robust solutions to these limitations: TJC and TJC-Q. TJC is a system that supports browsing trees up to 15 million nodes by exploiting leading-edge graphics hardware while TJC-Q allows browsing trees up to 5 million nodes on commodity platforms. Both of these systems use a fast new algorithm for drawing and culling and benefit from a complete redesign of all data structures for more efficient memory usage and reduced preprocessing time.


Interactive Time-Dependent Tone Mapping on the GPU
In this project, we demonstrated that it is possible to cleanly map a state-of-the-art tone mapping algorithm to the pixel processor. This allows an interactive application to achieve higher levels of realism by rendering with physically based, unclamped lighting values and high dynamic range texture maps. We also showed that the tone mapping operator can easily be extended to include a time-dependent model, which is crucial for interactive behavior. Finally, we explored the ways in which the graphics hardware limits our ability to compress dynamic range efficiently, and experimented with modifications to the algorithm that could alleviate these problems.


Reverse Engineering and Security

Strontium: Secure Interactive Rendering
The Strontium project is looking at ways to secure graphics content in interactive applications. As models, textures, and shaders become important pieces of intellectual property, it is increasingly important that content creators be able to distribute manipulable versions of their 3D data while still maintaining some control on how those data can be copied or changed. We are examining systems-level, cryptographic, and perceptual approaches for securing content without relying on high-latency remote rendering.


Ahpah: Robust Software Reverse Engineering and Hardening
I was a co-founder of Ahpah Software, a startup company focused on reverse engineering technology for the Java Virtual Machine. After releasing our flagship decompiler SourceAgain, we began to research new techniques for securing executable content against reverse engineering and tampering attacks.


Compilers and Computer Architecture

Tortola: Addressing Tomorrow's Computing Challenges Through Hardware/Software Symbiosis
We generally think of computer systems in terms of logical "layers": application code, operating systems, virtual machines, microarchitecture, and circuits. Until recently, the vast majority of research efforts in optimizing computer systems have focused on a single layer in isolation. However, there is an important class of research challenges that would benefit greatly from more holistic approaches that span several layers. The Tortola project is exploring the possibility of a symbiotic relationship between a virtual machine and the host microarchitecture, and investigating how such an approach could be used to solve future challenges in the areas of power, reliability, security, and performance.

Teaching

Spring 2008 CS101: Introduction to Computer Science
Fall 2007 CS101: Introduction to Computer Science
Spring 2007 CS651: Image Synthesis
Fall 2006 CS660: Theory of Computation
Spring 2006 CS150: Introduction to Computing
Fall 2005 CS445/645: Introduction to Computer Graphics
Spring 2005 CS551/651: Image Synthesis
CS851: Foundations of Computer Graphics Research (GLunch)
Fall 2004 CS445/645: Introduction to Computer Graphics
CS851: Foundations of Computer Graphics Research (GLunch)
Spring 2004 CS660: Theory of Computation
CS851: Modern Research in Computer Graphics (GLunch)
Fall 2003 CS445/645: Introduction to Computer Graphics
CS851: Modern Research in Computer Graphics (GLunch)
Spring 2003 CS447/647: Image Synthesis
Fall 2002 CS551/851: Big Data in Computer Graphics

Publications

4D Compression and Relighting with High-Resolution Light Transport Matrices
Ewen Cheslack-Postava, Nolan Goodnight, Ren Ng, Ravi Ramamoorthi and Greg Humphreys
Proceedings of ACM Symposium on Interactive 3D Graphics, 2007

Dynamic Prediction of Architectural Vulnerability from Microarchitectural State
Kristen Walcott, Greg Humphreys and Sudhanva Gurumurthi
Proceedings of International Symposium on Computer Architecture, 2007

Efficient Basis Decomposition for Scattered Reflectance Data
R. Peter Weistroffer, Kristen Walcott, Greg Humphreys and Jason Lawrence
Proceedings of Eurographics Symposium on Rendering, 2007

Fast Omni-directional 3D Scene Acquisition with an Array of Stereo Cameras
Jiajun Zhu, Greg Humphreys, David Koller, Skip Steuart and Rui Wang
Proceedings of IEEE International Conference on 3-D Digital Imaging and Modeling, 2007

How GPUs Work
David Luebke and Greg Humphreys
IEEE Computer, 2007

Precomputed Radiance Transfer for Real-time Indirect Lighting using A Spectral Mesh Basis
Rui Wang, Jiajun Zhu and Greg Humphreys
Proceedings of Eurographics Symposium on Rendering, 2007

Small-Scale Reconfigurability for Improved Performance and Double Precision in Graphics Hardware
Kevin Dale, Jeremy Sheaffer, Vinu Vijay Kumar, David Luebke, Greg Humphreys and Kevin Skadron
International Journal of Electronics 94(5), 2007

A Spatial Data Structure for Fast Poisson-Disk Sample Generation
Daniel Dunbar and Greg Humphreys
ACM Transactions on Graphics (Proceedings of SIGGRAPH) 25(3), 2006

Applications of Small-Scale Reconfigurability to Graphics Processors
Kevin Dale, Jeremy Sheaffer, Vinu Vijay Kumar, David Luebke, Greg Humphreys and Kevin Skadron
Proceedings of International Workshop on Applied Reconfigurable Computing, 2006

Efficient Wavelet Rotation for Environment Map Rendering
Rui Wang, Ren Ng, David Luebke and Greg Humphreys
Proceedings of Eurographics Symposium on Rendering, 2006

Computation on Programmable Graphics Hardware
Rui Wang, Nolan Goodnight and Greg Humphreys
IEEE Computer Graphics and Applications, 2005

Scalable, Robust Visualization of Large Trees
Dale Beermann, Tamara Munzner and Greg Humphreys
IEEE Computer Graphics and Applications, 2005

Visualizing Competitive Behaviors in Multi-User Virtual Environments
Nathan Hoobler, Greg Humphreys and Maneesh Agrawala
Proceedings of IEEE Visualization, 2004

Visualizing Dynamic Architectural Environments
Mike Houston, Christopher Niederauer, Maneesh Agrawala and Greg Humphreys
Communications of the ACM, 2004

A Multigrid Solver for Boundary Value Problems Using Programmable Graphics Hardware
Nolan Goodnight, Cliff Woolley, Greg Lewin, David Luebke and Greg Humphreys
Proceedings of Graphics Hardware, 2003

Interactive Time-Dependent Tone Mapping Using Programmable Graphics Hardware
Nolan Goodnight, Rui Wang, Cliff Woolley and Greg Humphreys
Proceedings of Eurographics Symposium on Rendering, 2003

Non-Invasive Interactive Visualization of Dynamic Architectural Environments
Christopher Niederauer, Mike Houston, Maneesh Agrawala and Greg Humphreys
Proceedings of ACM Symposium on Interactive 3D Graphics, 2003

Sort-First, Distributed Memory Parallel Visualization and Rendering
E. Wes Bethel, Greg Humphreys, Brian Paul and J. Dean Brederson
Proceedings of IEEE Symposium on Parallel and Large Data Visualization and Graphics, 2003

A Stream Processing Approach to Interactive Graphics on Clusters of Workstations
Greg Humphreys
Ph.D. Dissertation, Stanford University, 2002

Chromium: A Stream Processing Framework for Interactive Rendering on Clusters of Workstations
Greg Humphreys, Mike Houston, Ren Ng, Randall Frank, Sean Ahern, Peter Kirchner and James T. Klosowski
ACM Transactions on Graphics (Proceedings of SIGGRAPH) 21(3), 2002

WireGL: A Scalable Graphics System for Clusters
Greg Humphreys, Matthew Eldridge, Ian Buck, Gordon Stoll, Matthew Everett and Pat Hanrahan
Proceedings of ACM SIGGRAPH, 2001

Distributed Rendering for Scalable Displays
Greg Humphreys, Ian Buck, Matthew Eldridge and Pat Hanrahan
Proceedings of IEEE Supercomputing, 2000

Tracking Graphics State For Networked Rendering
Ian Buck, Greg Humphreys and Pat Hanrahan
Proceedings of Eurographics / SIGGRAPH Workshop on Graphics Hardware, 2000

A Distributed Graphics System for Large Tiled Displays
Greg Humphreys and Pat Hanrahan
Proceedings of IEEE Visualization, 1999

Contact

Email humper@cs.virginia.edu
Office (434) 982-2220
Fax (434) 982-2214
Slow Department of Computer Science
School of Engineering and Applied Science
University of Virginia
151 Engineer's Way, P.O. Box 400740
Charlottesville, VA 22904-4740