Skip to content

Beginning Metal – a new course

Caroline, a good friend of mine and an awesome Metal programmer, just launched her new video course – Beginning Metal – through the website. The first 2 lessons are free, however, to watch the remaining 13 videos you’d need to purchase membership for at least one month. Each of the lessons provide the sample code used in the videos as well as challenges that you would want to solve preferably before moving on to the next lesson. At the time of writing this post, there are only 2 more videos left to be released.

The course starts with the very basics of 3D graphics, learning what the GPU does and what the graphics pipeline is. The next couple of chapters teach you how to render in 2D – your first triangle. Then, you learn about the Metal Shading Language and the shader functions – why they run on the GPU, see how they fit into the pipeline, and how to position and color vertices. Next, you’ll learn how to map textures to your geometry to make your graphics look even greater. The next couple of chapters take you through the transformation matrices to prepare you for the transition from 2D to 3D. Next, you’ll learn about the Model I/O framework and how you can easily import models from modeling programs. The next couple of chapters teach you all about basic lighting using the Phong shading model. Another couple of chapters are dedicated to learning how to build a simple game using everything you’ve learned. The final chapter summarizes everything.

I was absolutely impressed by the high quality of this course – quality which is actually the norm at to be honest. The course teaches the total beginner as well as the more advanced Metal programmer to adopt the best practices for coding in Swift and Metal. The code builds up on previous chapters and in the end you have a minimal game engine that is fully functional and makes you crave for more Metal content in future courses. And I hope they do.

Until next time!

Leave a Reply

Your email address will not be published. Required fields are marked *