Dan Ginsburg

Vulkan, OpenGL, and OpenGL ES renderers for the Source 2 engine used by games such as Dota 2, Artifact, and Dota Underlords

10 out of 40

To go...

F   11/17      Volume Rendering

M   11/20      Atacama.bio Guest Lecture

W   11/22      WebGPU

F   11/24      No class (Thanksgiving Recess)

M   11/27      Final Project Fast Forward (60 seconds each!)

W   11/29      Field Trip / Outside Lecture

F   12/01     glTF / WebGPU II

M   12/04     Final Project Presentations I

W   12/06     Final Project Presentations II

F   12/08     Skybox

M   12/11       Final Project Presentations III

W   12/13       Final Recap and Last Lecture!

F   12/22       Final Project Submission

Fieldtrip!

11 / 29

+

3D model

Assignment 5

Bonus

Due Tonight!

For real!

Light Simulations

N (x, y, z)

Material

Scattering

controls the physical appearance

+ Light

Physically Based Rendering

Shadowing

Shading

Two things control the color of an object

Material

Light

+

Color

Direction

Color

Orientation

Reflections

var color = 0xFFFFFF;
var intensity = 1;
var light = new THREE.AmbientLight(color, intensity);
scene.add(light);
var skyColor = 0xB1E1FF;  // light blue
var groundColor = 0xB97A20;  // brownish orange
var intensity = 1;
var light = new THREE.HemisphereLight(skyColor, groundColor, intensity);
scene.add(light);
var color = 0xFFFFFF;
var intensity = 1;
var light = new THREE.DirectionalLight(color, intensity);
light.position.set(0, 10, 0);
light.target.position.set(-5, 0, 0);
scene.add(light);
scene.add(light.target);
var color = 0xFFFFFF;
var intensity = 1;
var light = new THREE.DirectionalLight(color, intensity);
light.position.set(0, 10, 0);
light.target.position.set(-5, 0, 0);
scene.add(light);
scene.add(light.target);

var helper = new THREE.DirectionalLightHelper(light);
scene.add(helper);
var color = 0xFFFFFF;
var intensity = 1;
var light = new THREE.PointLight(color, intensity);
light.position.set(0, 10, 0);
scene.add(light);

//...
gui.add(light, 'distance', 0, 40)
var color = 0xFFFFFF;
var intensity = 1;
var light = new THREE.SpotLight(color, intensity);
light.position.set(0, 10, 0);
light.target.position.set(-5, 0, 0);
scene.add(light);
scene.add(light.target);

//...
gui.add(new DegRadHelper(light, 'angle'), 'value', 0, 90).name('angle');
var color = 0xFFFFFF;
var intensity = 5;
var width = 12;
var height = 4;
var light = new THREE.RectAreaLight(color, intensity, width, height);
light.position.set(0, 10, 0);
light.rotation.x = THREE.Math.degToRad(-90);
scene.add(light);

This was shading.

What about shadows?!

Depth Testing / z-Buffer

Depth Testing first to skip

invisible objects in the fragment shader

Anti-Aliasing

Do people use super sampling?

Final Project!

counts as 40% of your grade!

#finalproject

submit your music

Lecture 30

By Daniel Haehn

Lecture 30

Slides for CS460 Computer Graphics at UMass Boston. See https://cs460.org!

  • 690