Greg Humphreys |
![]() |
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
Contact
| 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 |