Welcome to these online lectures for the foundations of computer graphics. I am Ravi Ramamoorthi. I am a professor at the University of California at Berkeley and over the next several lecture segments, we are going to study some of the beauties of computer graphics, some of the ways in which 3D computer graphics are created and we will be doing some interesting assignments that will enable you to create your own computer graphics programs. Let me first say a little bit about myself, and then I'll say a little bit about the course itself. I obtained my PhD from Stanford in 2002, and my PhD thesis developed the methods of spherical harmonic lighting. Now you can today do a Google search for spherical harmonic lighting and you'll find more than 25,000 hits. It's a technique that's very widely used today in 3D computer graphics and most recent video games, and many recent movies utilize some versions of that. It's also being used for example by Adobe for relighting and trying to relight images. I've included the link to my web page, if you want to know more about me and my work, and you have links to several videos, several papers that may be of interest. Now after getting my PhD I spent 6.5 years at Columbia University. And since January 2009 I've been on the faculty at UC Berkeley. My work at both Columbia and Berkeley has focused on a variety of topics. So it's included computer graphics image synthesis, how do you create realistic images: a process known as rendering, that's been my main area of interest. Also how do you acquire images from the real world, you start to create realistic visual appearance of objects. And broadly I've been interested in how do you simulate the realistic beauty and appearance of the real world. I have been fortunate to receive a number of awards for my research work. And including the ACM SIGGRAPH significant new researcher award in 2007, which is given to one young computer graphics researcher a year. I've included a link there to the video that was produced for my award. And if you're interested in looking at that and getting an idea of the kinds of things I do, you're welcome to do so. I was also fortunate to be honored by the White House with the Presidential Early Career Award for Scientists and Engineers or PECASE award in 2008. Most relevant to these lectures, I've taught computer graphics at Stanford, Columbia and UC Berkeley. I've taught it a total of more than 10 times and, the course you're going to get is updated to cover the real basics and foundations of computer graphics and also to take advantage of recent developments in computer graphics, such as the use of graphics programming units, the use programmable shaders and it's really a modern introduction to many of the fundamental topics in 3D computer graphics. The goals of the course. So there are two main goals. First you need to be able to write systems. So this is really a course that teaches you how to program 3D computer graphics and write your own 3D graphics programs. So you will be writing both real-time graphics programs using OpenGL, which is a graphics API. And, the OpenGL shading language. In particular, you will be building a real time scene viewer. You will also develop programs off line for a technique known as ray tracing, which will enable you to create realistic images of 3D scenes. Along with the systems, the goal of the course is to understand the theory of computer graphics, and in particular the mathematical techniques and the algorithms that underlie most of modern 3D graphics systems. I should mention that this is not a course about the specifics of a particular 3D graphics programming environment like Maya, DirectX etc. However, in order to understand the concepts you will be writing programs and so you will have a great deal of facility in writing 3D graphics programs in Open GL and the GL shading language. This should be portable to other systems if you so desire at a later time. Let me give you a little bit of a hint of the kinds of things you'll be able to do in this course. This is a collage of the some of the images produced by the ray tracer when I taught this course 5 years ago. And if you look at the web sites for more recent instances of the local course at Berkeley, you can see other types of images that people have been able to produce. And you notice that these images show some of the beauties of 3D graphics and ray tracing. So you can see the nice reflections or refractions through the glass spheres. The way the chess pieces cause their reflections on the chess boards. And you can do all of this by the end of the course. The purpose of this initial segment is to also motivate you and so one of the questions is why do we study 3D computer graphics? And for 2 real reasons, one is there are number of applications that have significant impact on our lives, and second is because it's really an intellectually, exciting and challenging field, which is one of the most interesting intellectual areas to pursue. I've listed here a number of applications. Perhaps the one that is most apparent to you is in movies. And all of you have perhaps seen Pixar's recent Brave film. A number of other movies are completely computer generated nowadays. 1995 Toy Story by Pixar was the first completely computer graphics movie. Today, almost every movie produced has significant computer graphics effects. 3D video games are again another popular area, and over the years we've seen their visual quality increased to the point that many times they are now close to movie quality in some ways. But one of the earliest applications of computer graphics was in computer aided design. Today if you consider a Boeing airplane, it's made completely on the computer, computer aided design. Different parts of it may be made in different continents and they come together, they work perfectly. Lighting simulation is one very important area in computer graphics and it's an aspect of realistic image synthesis. So, lighting simulation is important to create realistic simulations of how the interiors of buildings, interiors of rooms will look. How an automobile will look in an outdoor lighting environment. And computer graphics is used for all of these applications. It can be used for scientific visualization as well as medical visualization. We have the Visible Human Project. Many other projects where computer graphics is really critical for visualization. And of course in virtual reality systems where you combine the real with the virtual. And these have been critical since the very early days of computer graphics. Things like flight simulators and so forth. Of course, today we are surrounded by digital visual media, of which computer graphics is an integral part. And if you think about the types of visual media we've consumed, even on the internet, it's gone from text, to images, to video. And perhaps the next wave in media is 3D geometric models. And the real basics or real foundations of computer graphics. But of course even before that, computer graphics is essential to image and video processing and photography. Adobe was one of the first graphics companies that was started, and is really foundational to the way we handle images and video. Visual media are so prevalent. We have Flickr. YouTube. WebGL. All ways in which we can consume visual media online. And even the distinction between real and virtual worlds begins to blur with ideas like Google Earth, Second Life where you can have very realistic flythroughs of the real world. You can have completely virtual worlds in which actors and people actually work. Electronic publishing, online gaming is nowadays a huge market and is perhaps the biggest driver of games. And even going further, we are now seeing a vast revolution in 3D printers and fabrication, where we will be able to print real 3D objects, perhaps with realistic material properties. It's an area in which I am actually interested in research. Visual media are now a really prevalent part of our lives, and over the next 5 to 10 years, we can expect to see dramatic advances. Those are motivations in terms of the applications and the utility to our daily lives. But going well beyond that, computer graphics is also a field of interest because of its intellectual vitality. There are fundamental intellectual challenges. How do we create and interact with realistic virtual worlds? One of the goals in computer graphics is to simulate and build virtual worlds that behave much the way as the real worlds. How do we do this? And in creating a realistic virtual world you need to understand all aspects of the physical world. Beyond this we need to be able to understand new computing methods, new display technologies, we've seen great advances in all of these areas. And there are technical and intellectual challenges. How do we understand the mathematics required to do 3D computer graphics? How do I take an object and position it correctly on the screen? How do I draw surfaces that can be used in 3D computer graphics and will be starting the mathematics for all of these different aspects. How do I light an object correctly? How do I place the highlights of it properly? How do I place the smooth shading on it properly? This requires an understanding of the physics of lighting and shading. How are objects lit in the real world? And there are deep system challenges. How do we build 3D graphics programming software and hardware? And in fact, over the years, we have seen the 3D graphics hardware graphic processors have become useful even widely beyond the need of computer graphics. So, what we have seen here is that computer graphics has numerous applications and it involves fundamental intellectual and technical challenges which make it one of the most exciting areas to study and I hope you will join us in this course.