BrookGPU is a compiler and runtime implementation of the Brook
stream programming language which provides an easy, C-like programming
environment for today's GPU. As the programmability and performance
of modern GPUs continues to increase, many researchers are looking to
graphics hardware to solve problems previously performed on general
purpose CPUs. In many cases, performing general purpose computation on
graphics hardware can provide a significant advantage over
implementations on traditional CPUs.
WireGL is a distributed network graphics driver for driving OpenGL
applications seamlessly across a PC rendering cluster. It allows for
unmodified graphics applications to render to large tiled display or
for a parallel graphics application to merge independent graphics
streams into a single output. Some of its other features include:
State and Geometry bucketing which is the ability to send only
primatives and state commands to servers which will render them;
Software context switching which allows for multiple graphics contexts
to share a single hardware context with the switching done in
software; Scalability up to 32 rendering nodes. This work is being
done with Pat Hanrahan, Greg Humphreys, and Matthew Eldridge.
My undergraduate thesis at Princeton University explored the
fesability of doing real-time teleconferencing with animated
characters instead of live video. Transmitting live video over the
web presents a host of problems given the limited bandwidth of the
internet. This project demonstrated that you can use a small
assortment of hand drawn images and which can be morphed to match the
user's expression in real-time. This required implemented a high
speed facial tracker, the development of a image morphing algorithm,
and a facial classifier to determine user expression. All of these
tasked were performed in 1/30 of a second. This work was done at
Princeton University with Alison Klein, Adam Finkelstein, David
Salesin, Richard Szeliski, and Chuck Jacobs.
My interests in hardware
design, especially in graphics, led me to do a semester of independent
work on graphics consoles. Hardware Nintendo
was a project
which I designed and implemented a hardware design of a 1985 Nintendo
game console which included the MOS 6502 processor and Picture
Processing Unit. The image shown above of Nintendo Tennis was created
by letting the hardware simulation software run overnight executing
over one million instructions to generate the splash screen. The
project included all the steps of hardware design from
register-transfer to actual VHDL coding.
Stream Computing on Graphics Hardware
Brook for GPUs: Stream Computing on Graphics Hardware
Ian Buck, Tim Foley, Daniel Horn, Jeremy Sugerman, Kayvon Fatahalian,
Mike Houston, and Pat Hanrahan
Proceedings of SIGGRAPH 2004
Los Angeles, California. August 8-12, 2004.
A Toolkit for Computation on GPUs
Ian Buck, Tim Purcell
Chapter 37, GPUGems: Programming Techniques,
Tips and Tricks for Real-Time Graphics
Published March 2004
Merrimac: Supercomputing with Streams
William J. Dally, Patrick Hanrahan, Mattan Erez, Timothy J. Knight, François Labonté,
Nuwan Jayasena, Ujval J. Kapasi, Abhishek Das, Jayanth Gummaraju, and Ian Buck
Phoenix, Arizona, November 2003
Ray Tracing on Programmable Graphics Hardware
Tim Purcell, Ian Buck, Bill Mark, Pat Hanrahan
Proceedings of SIGGRAPH 2002
San Antonio, Texas. July 22-26, 2002.
WireGL: A Scalable Graphics System for Clusters
Greg Humphreys, Matthew Eldridge, Ian Buck, Gordon Stoll,
Matthew Everett, and Pat Hanrahan
Proceedings of the SIGGRAPH 2001
Los Angeles, California. August 12-17, 2001.
Tracking Graphics State For Networked Rendering
Ian Buck, Greg Humphreys, and Pat Hanrahan
Proceedings of the 2000 Eurographics/SIGGRAPH Workshop on
Graphics Hardware Conference
Interlocken, Switzerland. August 21-22, 2000.
Distributed Rendering for Scalable Displays
Greg Humphreys, Ian Buck, Mathew Eldridge, and Pat Hanrahan
Dallas, Texas. November 4-10, 2000.
Performance-Driven Hand-Drawn Animation
Ian Buck, Adam Finkelstein, Charles Jacob, Allison Klein,
David H. Salesin, Joshua Seim, Richard Szeliski, Kentaro Toyama
The First International Symposium on Non Photorealistic Animation and Rendering
Annecy, France. June 5-7, 2000.
Animated Teleconferencing: Video Driven Facial Animation
Princeton University, Department of Computer Science, B.S.E. Undergraduate Thesis.
Accepted June, 1999.