Say something about homework Note about today: I'd rather make sense than noise! 3D Graphics: I brought my laptop for this It has a Quadro RTX 5000 Unlike the classroom computer This includes dedicated video memory and shaders In this context, shader = compute unit I can install whatever I like on it As in, development tools Also unlike the classroom computer Let's talk about the problem a minute: We have vertices that must be placed in 3D space Then in 2D space given a camera position Given this, we must decide what color each pixel should be "shaders": Can also mean "program that runs on a GPU compute unit" Kinda like the term server They come in types Let's look at a basic one: For the house thing Can we change it? Only if I got Vulkan development working on Shulker! Vertex shader for placing 3D points Fragment shader for colors of pixels OpenGL comes with a pipeline created already Handy, no? In contrast to Vulkan Only Vulkan supports RTX DirectX has a similar split, hidden in versions 11 vs. 12 Either way, the CPU side of the world has to: Move the vertices onto the video card Move anything else needed (texture, etc) onto the video card Compile the shaders and move them to the card Do anything the operating system needs to make a window and drawing context Babysit the frame drawing process ...and more stuff I haven't mentioned This takes a lot more lines of code in Vulkan than OpenGL So let's move to OpenGL, and try more types of shaders simple_demo.c: Short version of everything, but doesn't load models We can change where we are, etc. Other types of shaders: round_cube demo Shaders: Vertex Tesselation Control Tesselation Evaluation Geometry Fragment (For completeness: There are also compute shaders) If we can briefly understand all of these, we're good