Intro to Compute Shaders

A design and code class

This advanced class introduces compute shaders via a series of video tutorials related to biological simulation.

It lasts 6–8 weeks. There are three two-week units. Each unit has a few hours of tutorials, as well as an optional assignment. The assignments emphasize both design and code.

All content and chat is based in Discord. Lessons are asynchronous.

The aim is to learn to use the GPU to quickly explore algorithmic spaces in search of surprise and beauty.

Class Outline

Section 1 introduces compute shaders and basic GPU concepts. Here is a sample video. The videos walk you through implementing cyclic cellular automata.

Section 2 covers automonous agent simulations. The tutorials walk you through implementing a physarum simulation. This also helps us learn about GPU compute buffers, passing data to the gpu, and other compute shader techniques.

Section 3 introduces many ways to bring your simulations into 3D, including working with Unity's shader graph and VFX graph, as well as GPU instancing.

By the end of the workshop, students have a strong foundation in compute shaders, biological simulation methods, and the basics of parallel programming.

By the end of the class, students are able to implement something similar to this post:

Student Work

Past cohorts have included students who work at The Mill, Apple, Oculus, Unity, Google, Future Deluxe, and many game studios.

More , student , work , here.

Prerequisites

This is primarily for experienced programmers who are also interested in simulation, math, art and design.

However, the tutorials are done such that students of almost any level can follow along.

If you are an experienced programmer, the tutorials might take you 2-4 hours a week. If you are newer to programming you can still attend the class, but it might require up to 6-20 hours a week.

Ideally you should either have completed a significant project using Unity and C# or have a strong CS or technical art (e.g. Houdini) background and be willing to wade through the Unity parts. Unity is primarily used as an interface to the GPU, so the actual C# we write is quite simple.

Do I need to have experience with fragment or vertex shaders?

No. But you may want to go through The Book of Shaders and Shader School prior to beginning this class. They are both quite fun.

What if I have limited or no prior coding experience?

GPU code can be quite painful to debug, so I would recommend starting with something that is a bit simpler.

In addition to core programming classes, I would suggest Catlike Coding's Unity tutorials, as well as The Book of Shaders and Shader School.

Must I be good at math?

No. If you would like to fully understand how some equations work, it is helpful to know (or be willing to learn) a bit of college-level math — however this is not essential. For example, one can implement and explore Grey Scott reaction diffusion without understanding the math.

Can I participate from [Country x]?

Yes. The class is async, so time-zone does not matter.

How much time does this require?

For the cohort based class, please be able to do at least 7 hours a week during the workshop cohort.

Each unit is two weeks and includes a week for tutorials and a week for an assignment. There are two catch up weeks. Assignements are due Sunday evenings. Many students are able to complete the class by allocating Sundays to it. Depending on your experience level and how much time you spend on the artistic aspects of the assginments, the course takes 4-18 hours a week.

Will lectures be recorded?

Yes. Due to time zones and the challenges of live-coding, all lectures will be pre-recorded rather than live-streamed.

Why are there limited spaces?

A small group creates a more friendly environment and allows me to give individual feedback.

Can I share a space with a friend?

No, please sign up individually. I do these classes in lieu of taking on additional contracts, so your money goes directly towards supporting me eating while making more of this work. If you would like to take the course at the same time as a friend, please DM me, and I can try to get both of you into the same session.

Can I use Touch Designer, UE4, or Houdini?

Several students have completed the course using touchdesigner. Many of the principles are the same, but there are several aspects that you will have to figure out on your own (e.g. working in 3D in TD is different to Unity).

UE4, as of when I developed the course, did not have compute shader support that was as easy to use as Unity. However, if you are a UE expert, it should be straihgtforward to convert the material to UE.

Houdini has a feature where you can use the GPU, but it will also be very difficult unless you are very advanced in Houdini.

In all cases, I recommend following along in Unity first, and then attempting in your preferred framework.

Other questions

Please DM or @mention me.

Thank you!

If you are interested, you can sign up here.