April 13th - 16th Announcements
A large number of announcements were made the past two days (April 13th and 14th). Here’s they are in one place.
An “Extension” to Workbook 10:
Workbook 10 assignments turned in (committed, pushed, survey complete) by the cutoff (Monday, April 24) will be considered on time (i.e. eligable for advanced points).
No other timing of the assignment is changed: assignments submitted after April 24th must still follow the very late process.
Synchronous/Asynchronous Lectures for the Week April 17-21:
(edited from an earlier announcement that was not posted)
There will be no regular Lecture 23 (April 18th) - so no 9:30am Zoom. There will be an asynchronous lecture (videos). The lecture is broken into three parts (rather than one long video):
- Lecture 23A - Aliasing - Part A: Understanding the Problem Lecture Slides: (PDF - before - parts A and B) (PDF - after with annotations - parts A and B)
- Lecture 23B - Aliasing - Part B: Anti-Aliasing Concepts Lecture Slides: (PDF - before - parts A and B) (PDF - after with annotations - parts A and B)
- Lecture 23C - Aliasing - Part C: Anti-Aliasing Shaders Lecture Slides: (PDF - before) (PDF - after)
There will be no regular Lecture 24 (April 20th) - there will be a 9:30am Zoom, but it will be for a “Q&A” session / chat. I’ll be there to talk to people, answer questions, talk about the project, chat about graphics in general, … I will not have a formally planned lecture. There will be asynchronous videos for the lecture content. If students don’t come with interesting things to talk about, the session could be over quickly.
For Lecture 24… I was going to make a set of videos. I only made the first one:
- Lecture 24A - Noise - Slides: (PDF-before) (PDF-after) Rather than re-make the video about how the pipeline works, I am going to re-use last year’s:
- 2022 Lecture 20: The Pipeline Slides: (PDF-after) Last year, the pipeline lecture happened before the shader lectures - but other to referring to shaders as “coming soon”, there isn’t too much else I would change.
The material for Lectures 23 and 24 (which will be asynchronous) is fair game for Exam 2. (this includes the 3 parts of the Aliasing video, the Noise video, and last year’s Pipeline video).
The material for Lectures 25 and 26 (the week of the exam) will be topics that are potentially useful for the projects. These topics are fair game for the final exam.
The last week’s lectures 27 and 28 (May 2 and 4) will be topics that are essential to a graphics class, but didn’t fit in to the workbooks. Things like how color works, and ray tracing. These are fair game for the final exam.
Lecture 23 (April 18th)
There will be no regular Lecture 23 (April 18th) - so no 9:30am Zoom. There will be an asynchronous lecture (videos).
The topic is aliasing and anti-aliasing (you need to understand aliasing before you can do anti-aliasing to combat it). This topic is covered a bit in Workbook 10 (which is part of the reason we extended the deadlines).
The lecture is broken into three parts (rather than one long video):
- Lecture 23A - Aliasing - Part A: Understanding the Problem Lecture Slides: (PDF - before - parts A and B) (PDF - after with annotations - parts A and B)
- Lecture 23B - Aliasing - Part B: Anti-Aliasing Concepts Lecture Slides: (PDF - before - parts A and B) (PDF - after with annotations - parts A and B)
- Lecture 23C - Aliasing - Part C: Anti-Aliasing Shaders Lecture Slides: (PDF - before) (PDF - after)
Zoom Links:
Canvas requires is to have a different Zoom link for lectures after Spring Break. Some people has tried to use the old one. Please use the new one that says “After Break”.
End of Week Surveys:
This week’s end of week survey (11) will be the last “regular” end of week survey.
Next week’s (12) survey 12 - is the “practice exam” (see below)
The following week (13) is the exam week, so our survey will be another anonymous “class feedback” survey (again, we know that you have done it, we cannot connect answers to people).
The last week (14), we’ll have another “practice exam”.
Exams, Practice Exams:
The schedule for the exams (Wednesday, April 26, Sunday May 7) has not changed. (although the final is subject to the registrar, so officially, they can do what they want).
As with Exam 1, I will give you last year’s exams for “practice” - so you can try to take an exam in a real setting. A bit of a warning: last year’s exams were based on last year’s class. This year is a little bit different. You might encounter questions on last year’s exams that are about topics we didn’t discuss this year (and topics this year, not covered by last year’s exams).
The practice exams will be available as End-of-Week Surveys 12 and 14.
Final Project Timing:
Our hope was to have the final project workbook available immediately after Workbook 10’s due date… The change to Workbook 10’s timing might delay this. Right now, the plan is to release initial information about the project on the usual workbook release schedule (so it should be released on Tuesday, April 18), and we will post updates and more details later.
The final project is due the last day of class: Thursday, May 4th May 5th. The late policy will be more strict than the workbooks (since we need to do grading quickly) - but it has not been fully determined yet. ~~For now, assume that the May 4th deadline is a hard deadline. ~~
No Office Hours April 19
I will not hold office hours on April 19th. Thursday’s class time will be for a Q&A session, so that will be a good time for discussions of general graphics topics.
Shader Demos:
The demos I showed in class are now on the web at: https://pages.graphics.cs.wisc.edu/559-sp23/Demos/Shaders/
This includes the anti-aliasing demos
Problems with Dynamic Texture/Environment Maps:
Short version: there may be problems creating multiple dynamic environment maps in the same THREE scene. If you try to do this, you might see incorrect behavior.
This problem probably doesn’t affect you. But, if you are trying to make dynamic environment maps and noticing weird behavior…
Some students noticed some subtle issues in THREE programs that use dynamic texture maps and environment maps. We (prof, TAs, peer mentors) have been able to reproduce problems independently. We’re pretty convinced something fishy is going on - but its subtle and complex enough we can’t trace it completely.
The “reliable” way to make weird stuff happen is to have multiple dynamic texture maps in the same scene. It seems that when there are multiple cameras each attached to their own render targets (the graphics term for where the results of picture making ends up), they aren’t as independent as they should be: some how, independent renderer targets and cameras seem to affect one another.
To see an example: try https://pages.graphics.cs.wisc.edu/559-sp23/Demos/AdvancedTexture/t3-dyn-env3.html Look downward at the scene (so the sphere is moving in a circle clockwise). Notice that the reflection of the cyan cube (a faint spot on the moving sphere) jumps around -this is wrong (sometimes it’s in the right place, sometimes it is in the wrong place). Yes, the problem is very subtle.
You can’t see it, but there is another shiny sphere inside of the purple sphere (click the box to move the purple sphere aside).
If we stop updating the environment map for the sphere at the center, the reflections on the moving sphere are “correct” (at least the position of the cyan dot doesn’t jump around). This is an incorrect behavior: the two environment maps (cameras, render targets) are supposed to be independent. They should not affect one another.
Although, sometimes, this all works. I made another demo that was designed to make this problem more visible, but it just seems to work correctly: https://pages.graphics.cs.wisc.edu/559-sp23/Demos/AdvancedTexture/t3-dyn-env4.html (or maybe the problems are so subtle that I cannot see them).
What to do…
These problems only seem to occur if you do dynamic environment maps and you have multiple moving maps in one scene. So, it won’t affect most students.
These problems are so subtle that a grader isn’t going to notice - when you look at the demos, the response is generally “cool - there are multiple dynamic environment maps.”
Often, we have one dynamic environment map for the whole scene (so it is only correct at the one place the camera is). I believe that if you do this everything works “correctly” (subject to the approximation that the environment map is taken from a different place). With complicated scenes, we don’t want to have to draw the whole scene so many times. Most of the time it is good enough to have the one map.
So… basically, don’t worry about this problem. If you encounter it (you see it in your own work), let us know on Piazza (the more examples we see of it, the more likely we are to trace it down). If you decide to do multiple, dynamic environment maps in your final project, you can either use the “one map” approximation, or hope that the effects are subtle enough that no one will notice (we probably won’t).
The course staff is totally baffled by this (well, at least me - although, at least two others looked into it).
WB06 and WB07 Galleries available!
Galleries of student work from Workbooks 6 and 7 are available at Workbook 6 Gallery and Workbook 7 Gallery. The code is obfuscated to prevent future students from misusing it.
You can, of course, see all the galleries to this point at Galleries.
Galleries are student work, they are different than the “Example Solutions” created by the course staff (these have the entire workbook, and we encourage you to look at the code). You can see the Workbook 6 example solution at https://cs559-spring23.github.io/Workbook06-Solution/. The Workbook 7 example solution is at: https://cs559-spring23.github.io/Workbook07-Solution/