Intro to Compute Shaders

A design and code workshop

This advanced workshop introduces compute shaders via a series of video tutorials related to biological & physical simulation. It lasts 6–8 weeks and costs $400. The recommended assignments emphasize both design and code. Each participant receives personal help and feedback. The aim is to learn to use the GPU to quickly explore algorithmic spaces in search of surprise and beauty.

Please sign up here to be notified of future sessions. Thank you for your interest.

Example material

Material may change between workshops. I can also customize based on what students are interested in.

Section

The workshop has three sections. Here is an example from the first:

Student feedback

"Wow I just watched the intro to compute shaders, and it was perfect. Nice rhythm and a lot of visual examples :) Change absolutely nothing."
"This week's Agents Intro video is fantastic! There's a story we're curious to follow, the lesson's components are chunked and connected clearly, great bits of history and credits, interesting tangents to art and nature - Really enjoyed it. Cheers!"

Assignments

Each section has 3–5 optional assignments at different levels.

Schedule

You can follow the schedule casually with a few hours a week, or in a more dedicated way with 7+ hours per week.

In general, I prefer if you have at least seven hours per week available most weeks during the workshop period.

Student work

dec workshop student work:

modified Fisch, Gravner, Griffeath 1991 https://t.co/6hrIhMtzY0

— Arsiliath (@psychobiotik) December 10, 2019

Final project

For the final project, you will bring a 2D Cellular Automata system into 3D.

automaton, constructor

(Langton '90 via G Turk) pic.twitter.com/wUSTjWLZSc

— Arsiliath (@psychobiotik) October 26, 2019

More Info

Whom is this for?

This is primarily for programmers experienced in Unity who are also interested in simulation, math, art and design. However, a wide range of others will also likely enjoy the material and be able to participate.

When is the next session?

Sessions begin on the first of every other month, but sell out some time before that. You can sign up to be notified of future sessions.

What are the prerequisites?

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. I will prioritize questions related to compute shaders and will generally expect students to figure out any Unity or general coding questions on their own.

What are the system requirements? Can I use a Mac?

If you're using Windows, your system must support DirectX 11 or higher. If you're on a Mac, it must support Metal. Please note that I won't be able to support Mac specific issues. However, nobody has run into any yet. You should have a decent graphics card.

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 workshop. 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.

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.

I don't think I'm ready yet, what would you recommend to prepare for this?

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

What is the format and schedule?

Progress during the week is self paced, but I encourage you to finish everything by the end of the week. Each week there will be:

Communication is via a Slack channel shared with other students in the session.

What topics will be covered?

Simulation topics: grid simulations (including Cellular Automata), agent simulation (including Physarum). Technical topics: introduction to compute shaders, buffers, atomics, groups and threads, debugging, and sveral advanced topics.

Can I participate from [Country x]?

Yes. The class is async.

How much time does this require?

If you follow along with the videos it will require at least –3.5 hours per week. If you also do the assignments, it will take around 7–10 hours a week total.

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.

What if I want a refund?

I am happy to offer full refunds before the workshop begins. After the workshop begins, I am unable to offer full refunds but may consider pro-rated refunds.

Can I share a space with a friend?

No, please sign up individually. I do these workshops 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 my company pay for this?

Yes, many students have had the class covered by their company. It's worth checking to see if you can do the same.

Will you do a version in [UE4, C4D, etc]?

Likely not. However, 90% of the code we write will be on the GPU and the concepts will likely apply to any gpu-compute environment.

I have another question.

Please DM or @mention me.

Thank you! If you are interested, please sign up here.