23 November 2024

Course "Shader Development from Scratch for Unity" by Penny de Byl

I must admit that one of the things I find most challenging to learn about game development is shaders. No matter how proficient you are in Unity, Unreal, or Godot, with shaders, you essentially have to start from scratch. They are essential for making your game’s textures and visual effects truly appealing, but to begin using them, you need to master a set of concepts that seem barely related to other disciplines. It’s no surprise that in large teams, there are people entirely specialized in this area.

However, my biggest issue isn’t learning something new but rather that all these concepts seem artificially cryptic, the documentation opaque, and the shader syntax contrived and unintuitive. I must admit that the little I’ve learned about Godot shaders seems to be the most intuitive I’ve come across so far, though even then, there are numerous “awkward” aspects. In Unity’s case, I know its shaders are extremely powerful, but everything feels rather chaotic and confusing to me.

Despite this, I’m determined to understand them and achieve a reasonable level of mastery. That’s why I’ve taken several courses on the topic, gradually making progress—though far less than their authors promised. The reason is that most courses simply list the steps to achieve a specific effect, but very few take the time to explain the concepts behind shaders that justify those steps.

Fortunately, Penny de Byl (whom I discovered through her excellent courses on game AI) makes an exceptional effort to explain these concepts in this course, "Shader Development from Scratch for Unity", available on Udemy. She doesn’t always succeed completely in explaining them, but at least she tries and does so from the most basic concepts to the more advanced ones.

The course focuses on 3D shaders, dedicating most of its time to how to apply effects to the textures of 3D objects. It avoids Unity’s visual language for shaders and instead uses the specific programming language of this engine. Contrary to what I might have expected, I’ve realized that I understand shaders much better when they’re implemented in code rather than in any of the visual languages used by game engines. Perhaps because I come from a programming background, I find it easier to read code from top to bottom than to navigate the spaghetti plate resulting from a visual language.

Out of the course’s nine sections, I think the first six are quite understandable. I found the explanation of how to use the Dot Product in shaders particularly enlightening. Sections 7 and 8 start to get tangled and seem much less well explained. As for the final section, which covers volumetric shaders, I must have been especially tired because I admit I understood very little of it. I’ll probably focus on other topics for a while and revisit that section later. Hopefully, on a second pass, when I’m fresher, what’s explained there will make more sense.

Although there are things I haven’t grasped, there are many others that I’ve encountered in other courses but only managed to understand here, thanks to Penny de Byl’s explanations. Additionally, the Q&A section for each class is almost as interesting as the class itself. I recommend reading all the questions asked by other students for each class; you’ll probably find others who’ve had the same doubts as you. The instructor is thorough and answers almost all the questions, which is very enlightening. Sometimes, she even acknowledges mistakes in the class or includes corrections and links to external resources to resolve doubts, which is especially valuable for tying all the concepts together.

Is the course worth it? Yes, without a doubt. If you find the course discounted on Udemy, I think it’s a great opportunity to dip your toes into the world of shaders and to discover an author with some truly interesting courses.