Research Projects


Home


Projects

Publications

Resume

BrookGPU

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

WireGL_logo 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.
The WireGL home page.
Related publications:
Tracking Graphics State for Network Rendering
Distributed Rendering for Scalable Displays

Animated Teleconferencing

Teleconferencing Demo 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 Adam Finkelstein and David Salesin, Richard Szeliski, and Chuck Jacobs at Microsoft Research.
Related publications:
Performance-Driven Hand-Drawn Animation
Animated Teleconferencing: Video Driven Facial Animation

Interactive Face

Interactive Face picture If you have ever been to SIGGRAPH or any other video technology demo, you will often see those motion capture actors (booth bunnies, call them what you will...) wearing all black with little silver balls taped to their wrists, elbows, legs and about anywhere else. Cameras surrounding the actor will track the silver balls and animate a character in real-time.
Interactive Face was a project to show that you don't need all the black suits and silver balls to track the only thing moving in front of the camera, and you can do it without overloading the CPU, still getting 30 frames per second results. This project tracked the eyes, nose, mouth, and eyebrows and used that information to compute head tilt, expression, and gestures all on an O2 workstation and only using a third of the processor. Click here for the project report and a few mpegs of it in action: Interactive Face

Hardware Nintendo

Nintendo Tennis 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. Click here for the final report and some design diagrams: Hardware Nintendo

Turbulent Fluids Simulator

For my independent work, I worked on developing an optimized mathematical model for turbulent fluid simulation within a modeled voxel environment. Work includes rotation dynamics and auditory analysis of turbulent flow through musical instruments. Also it explores using graphics hardware to accelerate the calculations of thermal gradients. Click here for a copy of my paper: Turbulent Fluids Simulator

PDP-8 Minicomputer

PDP8 picture The goal of this project was to design and build a working PDP-8 minicomputer which was popular in the 1970's and early 80's. Completed for ELE 375 Computing Structures, a course I highly recommend, it was 100% compatible and quite a bit faster than the original PDP since it use Xlinix FPGA's and could operate up to 3Mhz. Project Partner: Amir Give'on '99. PDP-8 Minicomputer

NfsFtp

NfsFtp picture NfsFtp is a special NFS server written for Windows 95 which allows Unix users to mount FTP sites as if they were NFS directories. This project alleviated the hassle of having to ftp files back and forth from remote file systems with annoying gets and puts. Rather users could mount the FTP server as a directory on their current machine and perform all the regular shell commands, like "cp" or "ls" or even modify remote files with emacs without a hitch. This was done with Joe Corkery '98 for Computer Science 461 Distributed Computing.

VRMud

VRMud picture VRMud is a interactive modeling program that I worked on with Ken Turnbill '98 and Tom Sanocki '98. It supported the molding of non-discrete materials, like clay with tools (lathe, magnet, knife etc.) to simulate a real workshop. The final result could be exported to a ray-traceable file. Features: Dynamic mesh reallocation, multiple mud models, and a scene designer.

TheForce

TheForce picture TheForce is a term project for CS333, Advanced Programming Techniques. The goal is to create a space fighter action game similar to XWing, by Lucas Arts. Using OpenGL, Inventor, and written entirely in C++, the project six week schedule included interactive sound and multiplayer networking option. The group consists of 6 members, Drew Leamon '99, Tim Milliron '99, Philip Nickolov '99, Eric Cheng '99, Trevor Sumner '98, and myself. Rob Jensen '98 did some really cool Star Wars models.

NetherRay

NetherRay picture NetherRay is a ray tracer I wrote with Rob Jensen '98 for a COS 426 assignment. It does procedural shaders (with a shading language syntax modeled after RenderMan), stochastic depth-of-field, soft shadows (give the light a radius), plus all the usual reflections and refractions.

The Drum

Drum picture Drum was a project done for COS 496 Simulations final project. The goal was to accurately simulate the surface of a drum and study different waveform and propagation properties. The drum was simulated with a mesh surface and sound was synthesized by averaging vertex height. Some sound bytes: A simple beat and an attempt at Yankey Doodle.