Glift: Generic Data Structures for Graphics Hardware
Total Page:16
File Type:pdf, Size:1020Kb
Glift: Generic Data Structures for Graphics Hardware By AARON ELIOT LEFOHN B.A. Chemistry (Whitman College) 1997 M.S. Physical Chemistry (University of Utah) 2001 M.S. Computer Science (University of Utah) 2004 DISSERTATION Submitted in partial satisfaction of the requirements for the degree of DOCTOR OF PHILOSOPHY in Computer Science in the OFFICE OF GRADUATE STUDIES of the UNIVERSITY OF CALIFORNIA DAVIS Approved: Committee in charge 2006 –i– Glift: Generic Data Structures for Graphics Hardware Copyright 2006 by Aaron Eliot Lefohn –ii– To Karen and Kaia. –iii– Acknowledgments I am humbled by the large number of people who have directly and indirectly contributed to this thesis. Throughout my time at UC Davis, I have had the great fortune to work with an outstand- ing collection of colleagues at UC Davis, Pixar, the University of Utah, Stanford, NVIDIA, the University of North Carolina, the University of Virginia and elsewhere. I begin by thanking my advisor, John Owens. I consider the most important traits in a graduate advisor to be trust and a passionate interest in my work. John has provided everything I needed to succeed and repeatedly put my best interests before his own. His passion for and interest in my work propelled me through the inevitable low points of research and encouraged me to take the risks required for true innovation. I cannot thank John enough for promoting my work and giving me the freedom to explore, even when it meant that I published four papers that are not part of this thesis. I also want to thank my committee members, Ken Joy, Bernd Hamann, Oliver Staadt, and Nina Amenta, for their feedback and comments. I additionally want to thank Ken Joy for his vision and continued determination to build the UC Davis Graphics Lab (officially known as the Institute for Data Analysis and Visualization, or IDAV) into a top-tier graphics and visualization research institute. Next, I would like to thank my coauthors on the work that is presented in this thesis: Joe Kniss, Shubhabrata “Shubho” Sengupta, Robert Strzodka, and Michael Kass. Joe Kniss entered my life as my GPU programming mentor at the University of Utah in 2002. Since then, Joe and I have pub- lished thirteen papers, sketches, technical reports, and conference tutorials together. Joe has been an integral part of the inspiration, design, and implementation of Glift, introduced me to generic pro- gramming and implemented most of the the octree 3D paint application. I cannot thank Joe enough for his friendship, time, and brilliance. Shubho Sengupta has morphed from beginning OpenGL programmer to an invaluable contributor of core algorithm and implementation over the course of the last two years. Shubho implemented large portions of several versions of the adaptive shadow map, resolution-matched shadow map, and hybrid parallel scan algorithms. Shubho also helped significantly with the theory section for the –iv– depth-of-field application. I thank him very much for his hard work, dedication, and insights. I want to thank Robert Strzodka at Stanford University for his rigor and being an integral part of the adaptive data structure development, especially with respect to correct filtering and the node- centered representation. Robert has been involved with the adaptive grid work from the beginning, has contributed substantially to the Glift code base, and continues to push the usage and applications of the Glift work with his research on GPU-based adaptive partial differential equation solvers. Fabio Pellacini, an assistant professor at Dartmouth University and formerly at Pixar Animation Studios, has had a large impact on the octree 3D paint and shadow applications in this thesis. It was Fabio who first pointed out that we might be able to implement adaptive shadow maps with an adaptation of our octree structure. Fabio has been a tremendous role model over the last three years, and I want to thank him for his mentorship, career advice, and research brainstorming sessions. We've mulled over many great and not-so-great ideas together, and I greatly value our time together. I am honored to have had the opportunity to work with Michael Kass at Pixar Animation Studios on the depth-of-field project. Michael is credited with the heat diffusion model for depth-of-field. I want to thank him very much for his mentorship during our collaboration. I am indebted to the other contributors to the depth-of-field project, including the following people from Pixar Animation Studios: Mark Adams built the flags and fence model, John Warren provided shots from Cars, Mark Meyer and Kiril Vidimce integrated the algorithm into Pixar's production tools, and Rob Cook and Tony DeRose supported the project from conception through completion, including the collaboration with UC Davis. In addition, I want to thank Mike Kirby at the University of Utah for valuable discussions on parallel tridiagonal solver techniques. In addition to the people mentioned so far, my colleagues at Pixar have had an enormous impact on my career and thinking. I want to thank Kiril Vidimce and Mark Leone for their support, friendship, and belief in my work during my time at Pixar. I also want to thank Dana Batali, Wayne Wooten, David Laur, Jonathan Shade, and the other members of the RenderMan team for including me in the group, supporting my work, and engaging me in wonderful arguments. I've learned a tremendous amount from working with the team and thank you very, very much for the opportunity. –v– The Glift work simply would not have been possible without the unprecedented level of support we received from NVIDIA. Nick Triantos tirelessly answered questions about GPU architecture and provided pre-release display drivers, Craig Kolb and Cass Everitt both added features to the Cg runtime for Glift and spent many extra hours providing support to the project, and David Kirk generously provided GPU hardware and was a strong advocate for my work. I want to give a special thanks to Randima Fernando at NVIDIA, the inventor of the adaptive shadow map algorithm, for being willing to answer many questions about his work and being supportive of our work. Having Randy as a resource proved absolutely invaluable as we first adapted, then revised and improved upon his groundbreaking work. In addition, a number of other people have contributed to the Glift data structure work. Ross Whitaker and Milan Ikits and the University of Utah provided early feedback and contributions to the adaptive data structure idea. James Ahrens and Patrick McCormick at the Advanced Computing Laboratory (ACL) at Los Alamos National Lab have contributed significantly to my appreciation and understanding of data-parallel algorithmic primitives. Similarly, I want to thank Mark Harris at NVIDIA for many stimulating discussions about data-parallel algorithms, data structures, and machine models. Daniel Horn at Stanford provided detailed support during our implementation of his stream compaction algorithm as well as early feedback and encouragement on our improved algorithm. I also thank Kayvon Fatahalian and Mike Houston at Stanford for their constructive crit- icism and encouragement on Glift and the adaptive/resolution-matched shadow work. I also want to thank Naga Govindaraju, at the University of North Carolina, for providing source code for a custom version of GPUSort amidst the SIGGRAPH crunch. I also thank the following additional people for providing feedback on the work throughout its development: David Blythe at Microsoft, Ian Buck at NVIDIA, Dominik Goddek¨ e at Dortmund University, Matt Papakipos at PeakStream, Matt Pharr at Neoptica, Mark Segal at ATI, Peter-Pike Sloan at Microsoft, Dan Wexler at NVIDIA, Yao Zhang at Beijing Institute of Technology, and the anonymous reviewers. I owe thanks to a number of my lab-mates in the Institution for Data Analysis and Visualization (IDAV) at UC Davis for their friendship and help throughout this work. Adam Moerschell at UC Davis selflessly agreed to make all of the movies for papers, sketches, and talks related to Glift. Yong –vi– Kil, Chris Co, Shubho Sengupta, Taylor Holliday, and Louis Feng provided various 3D models for the shadow and depth-of-field projects. I also want to thank, in no particular order, Chris Co, Yong Kil, Brian Budge, Serban Porumbescu, and Ben Gregorski for their friendship and support during my time in IDAV. A National Science Foundation (NSF) Graduate Fellowship funded all of the work presented in this dissertation. The NSF fellowship has given me pure and complete intellectual freedom throughout my Ph.D. Most of this work simply would not have been possible without the fellowship. I have truly reveled in the freedom gained by having my own research funding. Additional funding for travel, equipment, and conference costs were provided by grants from the Department of Energy, Chevron, and Los Alamos National Laboratories. Lastly, I want to thank my family. My parents, Allen and Phyllis Lefohn, continue to be my role models for living life with passion, creativity, and hard work. More than anyone else, however, I want to thank my wife, Karen, and daughter, Kaia, for their patience and support throughout this very long journey. They have sacrificed many nights without me, yet all of this would be for nothing without them. They provide me with indescribable wisdom, perspective, and love. –vii– Contents List of Figures xii List of Tables xiv Abstract xv I Introduction 1 1 Introduction 2 1.1 Graphics Processor Background . 3 1.2 Glift . 4 1.2.1 Example . 5 1.3 GPU Data Structures . 6 1.4 Applications . 6 1.4.1 Octree 3D Paint . 7 1.4.2 Adaptive Shadow Maps . 9 1.4.3 Resolution Matched Shadow Maps . 10 1.4.4 Depth Of Field . 11 1.5 Publications .