CPSC 8190: Physically Based Visual Effects

Spring 2021
Section(s): 8190: 001
When: MW 7-8:15pm
Where: Live online zoom sessions, recorded and posted to ensemble
Instructor: Jerry Tessendorf
Email: jtessen@clemson.edu
Office:McAdams 302
Office Hours: Wednesdays 9am-12pm, link announced each day in canvas. Also by appointment.
TA Office Hours:
TA Email:
VideosLectures are recorded and located here: https://ensemble.clemson.edu/Playlist/n9K5Zwg4


Below is the planned set of topics. However this course will be flexible, based on student feedback and performance. More topics may be included, or fewer, as needed.

Topics may include




  • Fellowship of the Ring river
  • XXX avalanche
  • Stealth jet fuel cloud
  • Golden Compass Dust
  • Golden Compass Aurora
  • A-Team clouds
  • Superman Returns & Happy Feet splashes
  • Mummy avalance
  • 2012 pyro
  • Harry Potter X
  • BattleField: Los Angeles
  • Battleship
  • Solaris & Spore
  • pretty much every frame of Avengers Infinity War (hyperbole)


At the completion of the course, students will be able to:


Monday Wednesday
Week 1 Jan 4-8 Introduction to volumes and course
Week 2 Jan 11-15 fields in theory and code implicit functions
Week 3 Jan 18-22 Gradient approximation Volume rendering
Week 4 Jan 25-29 Volume rendering & artifacts Project 1 presentations
full and sparse grids
Week 5 Feb 1-5 Interpolation lights, deep shadow maps
Week 6 Feb 8-12 Signed Distance Functions level sets
Week 7 Feb 15-19 noise
pyroclastic spheres
Project 2 Presentations
noise animation
particles with attributes
noise stamping
Week 8 Feb 22-26 SF stamping
Vector Fields
Week 9 Mar 1-5 Closest Point Transform
Nearest Point Transform
SDF for arbitrary implicit function
Project 3 Presentations
Revisit pyroclastics for arbitrary shapes
Week 10 Mar 8-12 Terrains Velocity Fields
Week 11 Mar 15-19 spring break spring break
Week 12 Mar 22-26 Incompressibility Advection schemes
Week 13 Mar 29-Apr 2 Advection
Characteristic Maps
Log Advection
Simple Smoke Simulation
Week 14 Apr 5-9 Nacelle Mapping Project 5 presentations
Project 6 description due
Week 15 Apr 12-16 Meepzoids Ginsu
Week 16 Apr 19-23 Radiative Transfer
Multiple Scattering


There are 6 projects in this class. The first 5 are worth 10 points, and project 6 is worth 20 points. There are also 20 points possible for class participation. There is a total of 90 possible points. The grade is relative to the percentage of 90 points achieved.

Grades: A > 90%; B > 80%; C > 70%; D > 60%; F < 60%

For projects 1-5, the point assignment will be based on the following considerations:

  1. Does it work and the images look good? (3)
  2. Is the code clean, organized, demonstrate pride of craftsmanship, and grokable? (3)
  3. Is the presentation organized and executed well? (2)
  4. Have you handed in the images?(2)

For project 6, the grading considerations are:

  1. Does it work and the images look good? (10)
  2. Have you handed in the images?(10)


All of the projects involve programming in C++. Work may be done on any computer supporting C++. For reference purposes, students are provided with a "starter kit" with a basic implementation of a volumetric class, which students may use as the basis of their own projects, if they choose. Students must present a live demonstration, in class, of each project in order to receive a grade for the project. The presentation must contain an examination of the code that the student has written and a demonstration of its output images. Students must also hand in the images they generated for the project. Points are awarded for the act of handing in the images, not for the creative or artist qualities of the images.

The project descriptions are not fully detailed. It is up to the students to identify any ambiguities or issues, and either resolve them or seek guideance from the instructor.

Project 1: Humanoid Avatar
Presentation date:January 27
Handin date: January 29

Use csg operations (union, intersection, cutout, and shell) and basic implicit shapes to create a figure that is humanoid. Humanoid means it has two legs, two arms, and a head. Highly realistic is nice, but so is highly artistic. Copyrighted and trademarked characters are not allowed. At least 25 implicit shapes must be used, including at least one of each of the basic shapes: sphere, ellipse, torus, cone, box, icosahedron, and steiner patch. Each of the csg operations must be used at least once. The humanoid must have at least 3 distinct colors. Generate a 120 frame render of a turntable, 1920x1080, EXR format. EXTRA CREDIT: up to 5 additional points for visual creativity, as judged purely by the instructor.

Project 2: Levelsets
Presentation date: February 17
Handin date: February 19

Generate a levelset of the Stanford bunny and one of the Utah teapot. Render 120 frame turntables of each, using key, fill, and rim lights. Combine the teapot, bunny, and your humanoid using CSG operations to (1) remove the lid of the teapot and then (2) have the bunny peaking out of the teapot, so that only its head shows, and finally (3) the combined teapot and bunny are held by your humaoid. Render a 120 frame turntable using key, fill, and rim lights (for demonstration of these lights, see DPA 819 Physically Based Effects/Lighting). The frames should be 1920x1080. You can use density and color grids as you like to speed up rendering. For example, if you sample your humanoid to density and color grids, the rendering will speed up enormously. Just make sure you use sufficiently high resolution in your grids for the humanoid to still look good.

Project 3: Wedges
Presentation date: March 3
Handin date: March 5

Generate the following three wedges. Each wedge must be at least 500 frames long, 960x540 exr. The density must be lit by one key and one fill light. There must be no emission. Each wedge is based on one guide particle, and each frame is a different setting of the indicated parameters. Use a grid that is at least 500x500x500 in size. The DSM grid can be any size, but be careful about artifacts. 1. Wisp wedge, with 5 million wisp dots in each frame. Parameters to vary: octaves, freq, fjump, clump. 2. Noise wedge. Parameters to vary: octaves, freq, fjump, fade. 3. Pyroclastic wedge. Parameters to vary: octaves, freq, fjump, gamma.

Project 4: Kingdom of the Lost Implicit Function
Presentation date: None
Handin date: March 26

Build a terrain using implicit functions, level sets, noise, and any other volume tools we have discussed. The terrain should have, as a minimum:
  • mountains and valleys
  • a land bridge
  • a cave
  • a statue/monument
  • a volcano caldron
  • smoke emitting from the volcano calderon
You need only one light, overhead, and white only is ok. If you want to add lights and color, please feel free to do so without penalty. Render four views showing the entire scene, as in the examples below. 1920x1080. The examples below have artifacts, and a similar level of artifacts in your images will be acceptable, though not desireable.
For this one assignment, there will be no in-class presentations. Instead, handin your images in the usual fashion. It would be helpful, but not required, to include an image with labels of all of the features you implemented.

There are up to 5 extra credit points for implementing some of the following additional features:

  • a waterfall using wisps
  • grass in a valley
  • flowers in a valley
  • bunnies in the grass/flowers
  • a small indigineous community

There are up to 5 points of extra credit for having both smoke and waterfall, and animating their noise parameters so that they flow and look good, as shown in a 100 frame animation.

The scoring of extra credit points will be a pure judgement call on my part as to how well you implemented any of the features you attempted. If it helps, you can submit additional images that showcase these features.

Project 5: Advected Refinement
Presentation date: April 7
Handin date: April 9

1. Start with a levelset of the Stanford bunny. Add a level of pyroclastic displacement. Then gridlessly advect the density just a small amount to fluff up the displaced bunny. Render a 120 frame 1920x1080 sequence that starts with the bunny with no displacement or advection, ramps the displacement magnitude up to full value over 60 frames, then ramps advection up to full value over the remaining 60 frames.
2. Start with a levelset of the Stanford bunny. Gridlessly advect just the ears of the bunny, leaving the body untouched. Render a 120 frame 1920X1080 turntable of the density.

Project 6: The Big Final Project
Description date: April 7
Presentation date: April 21
Handin date: April 23

The final project should be a really spectacular animated scene exactly 360 frames (15 seconds) long @ 24 fps, 1920X1080 resolution, exr format. We will have a Film Festival & VFX quiz. You may work in groups of 1, 2 or 3 to build the final project, but the larger the group the better the quality expected.


The projects are not to be handed in for offline grading. Instead, in an effort to foster better presentation and speaking skills in the students, the "hand in" process consists of giving a live ten minute demo to the class. During the demo, the presenter must be prepared to run their code and demonstrate its function live, and show relevant portions of the code written to achieve the assigned behavior. Final rendered images must be shown, either as exr frames in an appropriate viewer, or in some assignments they can be shown as short quicktime movies. The presenter should discuss which parts of the software were particularly difficult for them to create and how they overcame the problem(s), if any. The presenter should also indicate which parts of the code were easy, which parts of the assignment were vague or troublesome. Students must work independently in creating their projects, but this presentation is a useful opportunity for the presenter and the students in the audience to share ideas, successes, and failures. This sharing is one of the most effective ways of improving practical skills and experiences.

On the last day of class, we will have a film festival of all of the project 5 short films. We may also have a VFX trivia quiz. The quiz does not affect your grade, but may affect your knowledge of the VFX industry.


To help launch students into this course, a small "starter kit" is provided here. It contains some C++ code for the base class design of a volume system. This can be used to launch into the class projects. Students are free to use this starter kit in any way that helps them, or not use it all.


Assignments and projects will be handed in using the School of Computing handin mechanism https://handin.cs.clemson.edu/. The assignment needs to be encapulsated in a zip file before it is submitted. The zip file should have the very specific name

where username is YOUR username. For example, if I submit assignment 2, it should be in a zip file named jtessen.zip.


You have several choices in how you submit the assignment:

  1. Use a browser to log into the Webhandin website, handin.cs.clemson.edu, and submit the .zip file of the assignment. This can be done from any computer.
  2. Use the linux command, handin, to submit the .zip file.
Remember that you can submit to handin as many times as you like until the expiration date of the assignment. Only the last submitted version will be graded. So it is safe to submit an incomplete assignment early, just to make sure that the submission process functions, then later do it again for the version of the assignment you actually want a grade on.


Keep in mind that it is safe to hand in an assignment/project more than once before the deadline. The last submission will be the one that is graded. Handing in a partially completed assignment early is a good way to make sure that you understand the technical steps to do it, and if an unexpected crisis happens and you miss the deadline, then at least you have submitted something that gives you partial credit.


Previous Student Work

Here are some examples of previous student work in this course.


Communications between the students and instructor/TA will be via the following mechanisms:
  1. Zoom: this will be the video conference platform for live lectures and online office hours. During the live lectures, students are highly encouraged to ask questions and challenge the lectures, via direct questioning of the instructor in the video conference, or via asking questions or commenting on the chat. The instructor will monitor the chat and seek to answer any questions during the lecture. Invitations will be generated for each individual zoom session and posted on Canvas.
  2. Ensemble: Lectures will be recorded and posted to ensemble.clemson.edu at the URL listed at the top of the syllabus.
  3. Canvas: Announcements for the class will be posted to canvas, including the Zoom meeting invitations. Canvas will also be the location where assignment grades are posted.
  4. Email: This mechanism is available as a means of having one-on-one conversations if needed. In unforeseen circumstances, announcements to the class may be posted via email.
The primary tools for communications from instructor to students will be Zoom (lectures) and Canvas (announcements, grades).


Conduct Policy

Students are expected to be courteous and respectful in all interactions with fellow class members, TAs, and the instructor (whether this interaction occurs online, during class, or outside of class). Student misconduct will not be tolerated. Student misconduct includes, but not limited to, arguing with an instructor or TA about course policies, being rude or disrespectful towards a fellow class member or an instructor, sleeping in class, disrupting class, using a computer or other device during class without authorization from the instructor, showing up to class late or leaving class early without permission from the instructor, and refusing to follow course policies or instructions stated by an instructor. The instructor and TAs have the right to assign seats or to ask students to move to another seat if they feel it is necessary, and refusing to sit in an assigned seat will also be considered as an act of student misconduct. NO tobacco products or electronic cigarettes are allowed to be used during class or labs, including cigarettes, cigars, chewing tobacco, dip, etc. For the first case of student misconduct, students may have points deducted from their Quiz grades or their final grade might be lowered by one full letter grade (i.e. an A becomes a B, B becomes a C, etc.) at the instructor's discretion. In extreme cases, or if the misconduct persists, a grade of F will be assigned to the student, and the student will not be allowed to attend class thereafter.

Academic Honesty

"As members of the Clemson University community, we have inherited Thomas Green Clemson's vision of this institution as a high seminary of learning. Fundamental to this vision is a mutual commitment to truthfulness, honor, and responsibility, without which we cannot earn the trust and respect of others. Furthermore, we recognize that academic dishonesty detracts from the value of a Clemson degree. Therefore, we shall not tolerate lying, cheating, or stealing in any form."

When, in the opinion of a course instructor, there is evidence that a student has committed an act of academic dishonesty, the instructor must make a formal written charge of academic dishonesty, including a description of the misconduct to Dr. Jeff Appling, Associate Dean of Undergraduate Studies. The reporting instructor may, at his/her discretion, inform each involved student privately of the nature of the alleged charge. In cases of plagiarism (I.B.2.) instructors may use the Plagiarism Resolution Form available from the Office of Undergraduate Studies.

Steps to help prevent academic dishonesty are:

  1. Familiarize yourself with the regulations.
  2. Refuse to assist students who want to cheat.
  3. Protect your work! Do not allow anyone to copy any part of your work, and report anyone who tries to copy from you to the instructor or TA.
  4. Do not copy any code from any unauthorized source. An unauthorized source includes, but not limited to, any webpage, online source, document, book, or person not affiliated with our course.
  5. If you have any doubt about what constitutes academic dishonesty, ask your instructor before you turn in an assignment.

Furthermore, selling, posting, or giving away course content such as slides, notes, or any information about exams, quizzes, assignments, projects, or lectures is considered an act of academic dishonesty (unauthorized assistance) unless you have written permission from the instructor. All work submitted for grades should be your own work, and you cannot copy, paraphrase, or modify any work from any source not explicitly permitted by the instructor. The instructor has the right to run programs to detect evidence of unauthorized assistance (usually in the form of copying from another person or unauthorized source) in any assignment submitted by a student in this semester, previous semesters, or future semesters. Cheating has severe consequences, please do your own work!

Class Accommodation and Accessibility

Clemson University values the diversity of our student body as a strength and a critical component of our dynamic community. Students with disabilities or temporary injuries/conditions may require accommodations due to barriers in the structure of facilities, course design, technology used for curricular purposes, or other campus resources. Students who experience a barrier to full access to a class should let the professor know, and make an appointment to meet with a staff member in Student Accessibility Services as soon as possible. You can make an appointment by calling 864- 656-6848, by emailing studentaccess@lists.clemson.edu, or by visiting Suite 239 in the Academic Success Center building. Appointments are strongly encouraged, drop-ins will be seen if possible, but there could be a significant wait due to scheduled appointments. Students who receive Academic Access Letters are strongly encouraged to request, obtain and present these to their professors as early in the semester as possible so that accommodations can be made in a timely manner. It is the student's responsibility to follow this process each semester. You can access further information here: http://www.clemson.edu/campus-life/campus-services/sds/.

Inclement Weather Policy

If a class is cancelled due to inclement weather, the instructor will make alternative arrangements for submitting work that was due that day. Usually the work will be due the next class, unless specified otherwise. i

Academic Continuity Plan for this course

Clemson has developed an Academic Continuity Plan for academic operations. Should university administration officially determine that the physical classroom facility is not available to conduct classes in, class will be conducted in a virtual (online) format. The University issues official disruption notifications through email /www /text notification/Social Media. When notified, students will use Clemson Canvas to find important information about the class. Teachers will also provide students with information on what to do in this case.

Late Instructor Policy

If the instructor or a lab instructor is late to class or labs, then students should wait at least 15 minutes and check the course announcements before leaving.

Clemson University Title IX (Sexual Harassment)

Clemson University is committed to a policy of equal opportunity for all persons and does not discriminate on the basis of race, color, religion, sex, sexual orientation, gender, pregnancy, national origin, age, disability, veteran's status, genetic information or protected activity in employment, educational programs and activities, admissions and financial aid. This includes a prohibition against sexual harassment and sexual violence as mandated by Title IX of the Education Amendments of 1972. This policy is located at http://www.clemson.edu/campus-life/campus-services/access/title-ix/. Ms. Alesia Smith is the Clemson University Title IX Coordinator and the Executive Director of Equity Compliance. Her office is located at 110 Holtzendorff Hall, 864.656.3181 (voice) or 864.656.0899 (TDD).

Syllabus Policy

Students are responsible for learning and following all policies stated in this syllabus. This course syllabus is a general plan for the course; deviations announced to the class by the instructor may be necessary. Tentative course schedule will be frequently updated.