Attribution/License
Please do not redistribute slides/source without prior written permission.
1
CS 409/509
Real-Time 3D Computer Graphics Programming
Dr. Mike Shah
2
Pre-Class Warmup (1/3)
3
Pre-Class Warmup (2/3)
4
Pre-Class Warmup (3/3)
5
You never know where your students will take you! :)
Pioneer of Computer Graphics
6
(Aside) More on Pixar
7
Note to self: Try to record lecture :)�(Someone remind me if I forget!)
8
{ Administrivia
Who am I, course structure, and logistics of the course
9
About your Instructor (1/7)
(My Story)
10
About your Instructor (2/7)
(My Story)
11
About your instructor (3/7)
12
About your instructor (4/7)
13
About your instructor (3/3)
14
Places where I worked on something “graphicsy” or performance related
(all of them)
About your instructor (6/7)
15
About your instructor (7/7)
16
And a big welcome if this happens to be your first semester here!
Let’s take a look at the Course Goals
17
Icebreaker (If we have a small enough group to do this in person :) )
Online course: See piazza post and join in the conversation!
18
Covid-19 (“The Elephant in the Room”)
19
(Transition) Some Happy Things
20
A Note on Teamwork
21
Course Hardware (1/2)
22
Course Hardware (2/2)
23
Course Text
24
OpenGL Online Resources
25
YouTube
26
Other Vetted Texts (1/2)
27
Other Vetted Texts (2/2)
28
It may be a good idea to pick up at least one of the several books recommended (Anton’s below can be purchased cheaply on Kindle)
It’s a small investment to read an entire book that could help land you a career!
Course Readings
29
Expectation on reading / learning
30
My Teaching Style
31
Fair Warning
32
Email (some stats)
33
****Piazza >>> Email****
34
This is an average day.
Piazza 0000
35
How to get help in the course (1/3)
36
How to get help in the course (2/3)
37
How to get help in the course (3/3)
38
**Words of Caution** (1/2)
39
**Words of Caution** (1/2)
40
You will be pushed this semester. This course is too important for those who really want to work in graphics for me not to push you -- some of you only get 1 graphics course before you apply for jobs.
I’ll provide as many resources as I can, but you have to put in the work.
Notes on Expectations (1/2)
41
Notes on Expectations (2/2)
42
Expectations (1/2)
43
Expectations (2/2)
44
Note: For this course we will primarily use the D language
45
D Code
Standard features
Modern C++ 20 Code
A few other notes
46
Who is this course is for?
47
One of my goals
Let me know how I can help reach your goals.
48
Intel “Graphics Engineer”
49
Rockstar Games “Graphics Engineer”
50
51
52
Alright, let’s get into it already!
First Exercise
53
Quick Individual Activity
Get Inspired
Directions
54
Introduction to Computer Graphics
APIs and OpenGL
55
“Computer Graphics is about making pretty pictures” (1/2)
56
“Computer Graphics is about making pretty pictures” (2/2)
57
A more elegant sentence about this course
“What you need to show other people your dreams” � - Paraphrase of Ken Perlin from � Marschner’s Textbook
58
Ken Perlin
Computer Graphics
59
2D image filters
3D Graphics in Unreal engine
Graphics Areas
Graphics spans multiple domains such as:
60
3D Modeling
61
(top) wings3d programmed in Erlang was the first 3D tool I felt proficient in
(top) blender3D - box modeling technique using a reference image
Rendering (Offline)
62
Rendering (Real-Time)
63
Left plane uses normal mapping technique (1 normal per pixel), right side does not (1 normal per polygon)
Here you’ll see the ‘blue-ish X’ and the normal map behind the scenes. We’ll learn about this later!
Animation
64
Animation (Particles)
65
User Interaction
66
Virtual Reality
67
Visualization | Data Visualization
68
Visualization of Queen band members involvement in various songs
Various New York Times data visualizations
Image Processing - Medical
69
Data Image Processing - Voxels
70
Image Processing 2D
71
3D Scanning
72
Computer Graphics Applications
Some of the previous domains you saw computer graphics in:
73
Real-time vs Non-Real time
Computer Graphics
74
Two Broad Categories of Computer Graphics
In this course (Computer Graphics), we are focusing in this course on real-time graphics as opposed to offline graphics (Non-Interactive Computer Graphics)
75
Interactive (Real-time) Computer Graphics
76
Offline Computer Graphics
77
3D Graphics API History
For computer graphics -- for a long time, there were no standard graphics APIs
78
A little bit of history of graphics APIs
79
1980s to early 90s in gaming
80
No GPUs
81
Example of a ‘triangle’ being rasterized in software. Our hardware now does this for us much faster!
(FYI History of GPUs here)
82
S3 in 1995 thrust itself into this new territory with its ViRGE graphics series. Playing on the hype surrounding virtual reality a decade and a half ago, ViRGE stood for Virtual Reality Graphics Engine and was one of the first 3D GPUs to take aim at the mainstream consumer.
1990s - OpenGL Graphics API
83
Modern OpenGL examples (1/2)
84
Modern OpenGL examples (2/2)
85
1990s
86
Examples of the evolution of the D3D graphics API
87
Mount&Blade II I believe uses DirectX11
Examples of the evolution of the D3D graphics API
88
Examples of the evolution of the D3D graphics API
89
DX11 versus DX12 performance (source)
90
Example showing new ray tracing tech (See mirror)
91
Vulkan example of real-time Ray Tracing
92
Which Graphics API will we learn in this course?
93
This Classes Graphics API
94
c
a
b
Real-time rendering with Modern OpenGL
95
OpenGL https://www.opengl.org/ (1/4)
96
97
98
99
OpenGL vs Direct3D
100
Programming Graphics
101
Pragmatically, how do we get started with graphics?
102
A note about this course that is a little strange...
103
Summary
104
For Your Homework
Our First Graphics Application
105
Obtaining the Course Monorepo
Steps:
106
How to use Git
107
(Useful handout for more help with git)
108
**Quick note on expectations**
109
In-Class Activity
110