CS 491 / ECE 491: Topics in Vector Graphics Spring 2019 Computer Science Department University of New Mexico |

*Course Description*

Topics include ray-geometry intersections, viewing, lenses, local/global illumination, procedural textures/models, spline curves and surfaces, and statistical integration for realistic image synthesis. Students will write a raytracing renderer from scratch, exploring high performance implementations and realistic rendering.

*Instructor:*

Joel Castellanos ,
Department of Computer Science

Syllabus

*Textbook:*

Ray Tracing from the Ground Up
by Kevin Suffern
ISBN-13: 978-1568812724, A K Peters/CRC Press
Link contains software downloads.

*Week 1 & 2:*

- Read deeply Chapter 1: Ray Tracer Design and Programming
- Read deeply Chapter 2: Essential Mathematics
- Read deeply Chapter 3: Bare-Bones Ray Tracing
- Course Introduction, First reading assignment and first programming assignment (pdf)
- Vectors, what even are they? | Essence of linear algebra, chapter 1 by 3Blue1Brown If you are a bit rusty on vectors, watch this.
- What are quaternions, and how do you visualize them? by 3Blue1Brown If are solid on vectors, watch this (if you have already used quaternions, this is mind blowing).
- Basics us using Git and GitHub
- Using GitHub from Visual Studio 2017

- Read deeply Chapter 4: Antialiasing
- Read deeply Chapter 5: Sampling Techniques
- Read Chapter 6: Mapping Samples to a Disk
- Read Chapter 7: Mapping Samples to a Hemisphere
- Linear Transformations in 2D by 3Blue1Brown
- Matrix Multiplication as Composition by 3Blue1Brown
- Linear Transformations in 3D by 3Blue1Brown
- Bare-Bones Ray Tracer

- Read deeply Chapter 8: Perspective Viewing
- Read deeply Chapter 9: Practical Viewing System
- Fun little perspective viewing demo of a cardboard dragon
- Bare-Bones Ray Tracer in C++ using Openframeworks and Visual Studio
- Chapter 8 & 9: Perspective Viewing

- Read deeply Chapter 10: Depth of Field
- Read Chapter 11: Nonlinear Projections
- Read Chapter 12: Stereoscop
- Chapter 10: Thin Lens
- Real-time, Non-Euclidean Ray-Tracer demo This is a concept video for a first-person portal type game. Creating these effects are very easy with our ray tracer: For each ray cast from the camera, if it hits a portal, continue tracing the same ray with a new eye point and a new view direction. For each ray that hits a non-Euclidean distance region, ray trace as normal, then, after getting a hit location adjust the hit time by a scaling factor applied to the time within the non-Euclidean region.

- Read deeply Chapter 13: Theoretical Foundations of BRDFs (bidirectional reflectance distribution functions)
- Read deeply Chapter 14: Lights and Materials
- Read deeply Chapter 15: Specular Reflection
- Introduction to the Electromatic Spectrum
- Khan Academy: The nature of Light and the Ether
- 3Blue1Brown: Polarizing Filter and some Light Quantum Mechanics
- Philip Ball: Why Everything You Thought You Knew About Quantum Physics is Different This is an optional video as it gets deeper into quantum physics than we will use our ray tracer. It is, however, a very good video that it not the popular fluff, is very accurate, yet does not go into any of the math. It includes some about quantum computers and qbits.
- SIGGRAPH University: Introduction to Physically Based Shading This is a very good, full lecture covering both a nice overview and modivation as well as the most important math equations.

- teapot.html Simple JavaScript / WebGL program that reads and displays UtahTeapot.obj
- UtahTeapot.obj ASCII OBJ file of the Utah Teapot (1,024 triangles. File includes vertex normals)
- StanfordBunny.obj ASCII OBJ file of the Stanford Bunny (69,666 triangles. Vertex normals NOT given in file)