 I am mainly going to get into this in the next lectures, but um let me just give a little bit of a introduction today um rendering and I mean the visual part because you might remember that early on in the course I um I talked about rendering and displays for other senses right it could be for audio could be for haptic or touch. So, in this case we are talking about um the most complex part and the most common part for virtual reality which is visual rendering. If you are following along in the um in the textbook I suggest looking at ah Shirley at all chapters ah 4 and 8 before the next lecture. So, you might recall we did this thing called the chain of transformations and that was so that we could transform a point on a body into the world and then eventually into the appropriate place in pixel coordinates right. So, we went through that whole chain of transformations um we finished without a few lectures ago. We ended up with something that looked like this we had the overall transformation is equal to T viewport T canonical view T I and T rigid body and I went through all these transformations in detail I even inserted for stereo T left and T right in here or I might have combined them into making um right eye and left eye transformations here by replacing this matrix. I also talked about optical distortion transformation out here um, but what was important about the previous transformations was that I was just telling you how the geometry gets transformed. So, that we could figure out what the coordinates are starting from my initial objects that I define in their own body frames and I put them all together in the same world frame I just want to figure out where everything ends up when it needs to be rendered on the screen, but I did not talk about how the pixels are actually supposed to be set. So, now I want to get to that part I want to talk about how should the pixels be set what information needs to be sent out to the display. Remember we also talked about display issues when we were talking about eye movements and we were talking about perception of motion um and we went into discussions of frame rates and resolutions photo receptor density all these things are coming together now. So, when I cover visual rendering I am mainly going to be covering for you what are standard um computer graphics techniques that have been known for decades. However, we should look at them from the perspective of virtual reality developers and how these methods may in some cases be adequate for what we want to achieve in virtual reality and how in other cases they may be quite inadequate and if they are inadequate what do we need to do about it right. So, that is the next problem this was pure geometry right of the mathematics of transformations. So, the next part is um next problem how to set the RGB values values of each pixel. There are two general approaches that emerge and again this is a standard computer graphics there is what is called image order rendering put it here image order rendering versus object oriented rendering sorry object order rendering I said object oriented because we we think like that in computer science but object order rendering. So, an image order rendering and I should say to make the distinction between the two of these you have to think about what the outermost loop is going to do in the computations. So, the outermost loop in image order rendering is to go pixel by pixel. So, it is for all pixels and then inside of that I figure out how to color that particular pixel by doing a bunch of work. So, this is going to be pixel by pixel the main method inside of this is called ray tracing. So, you figure out what ray of light in the in a in a um virtual camera imaging model that pixel corresponds to and then you do a bunch of computations about how all of the light would be propagating from fictitious sources in order to eventually enter or arrive at that pixel. So, ray tracing um this is I would say easier to implement and if those of you who have had a computer graphics courses before you may have had to implement a ray tracer as a class project. So, it is a very reasonable kind of assignment um overall though the performance is usually slower. So, nice from an academic standpoint and um in terms of easy to learn and implement, but often ends up being slower. Object oriented which the particular objects that we are going to use in this class are triangles just the basic primitives when we talked about models I mentioned triangles is the most common primitives. So, this will be triangle by triangle order. So, in other words I start with thinking about my model of the geometry and I just go triangle by triangle it is composed of triangles. So, I go in that way that is the outermost loop instead of pixel by pixel. So, I focus on each triangle and then I do what is called rasterization which is figuring out what pixels are covered by that triangle right. So, after these transformations have been applied right these transformations have been applied to the triangle from the original um body frame that was given in or it may have been given in the world frame if it were stationary. Where does it end up on the screen? We perform some kind of pixelation of it um in a process called rasterization. This is much harder to implement, but is what is used by modern GPUs graphical processing units. So, these have the the whole um graphics pipeline has been optimized for triangle by triangle computations quick rasterization and um fast operations by these processing units. So, this ends up usually being faster and so, what I want to do for next time is to give you an overview of how these kinds of methods work and then we will get into a kind of critique of the um the problems that arise in the context of virtual reality. There may have been some methods or assumptions that worked fine for um for rendering graphics onto a screen when you are just sitting looking at the screen that is what all of this was designed for primarily, but when we just adapt it over to virtual reality I want you to have an understanding of what may go wrong. So, are there any questions about this up up to now? Alright so, let us let us finish for this time. Thanks.