Every month team at Creative Assembly debunks some common dev role myths. This month, Tamás Rábel, rendering technical director at Creative Assembly looks into the magic of graphics programming.
In my opinion, graphics programming is one of the most technical, but most rewarding disciplines. It’s the closest thing to magic for me. My job is to imagine things and make them reality.
We are creating a universe – not the actual details, but the laws of our universe. It’s not our job to fill it with life, but what we do shapes everything. It must be robust and consistent to deal with anything all the content teams, like artists and designers, populate it with.
Graphics programming has changed a lot in the past ten years or so. It’s just as technical as before, but things that used to be low-level and code-driven are transitioning to be high-level and data-driven, while new low-level challenges appear.
For example, shader programming. Graphics programmers used to do all shader programming, but now most of it is the responsibility of technical art. This means we can focus more and more on the entire framework and less on the cases specific to individual models. In my experience most people outside the industry think about technical art when talking about graphics programming.
But graphics programming is about serving all the other teams and empowering them to be able to create what they want to, within the limits of the engine. The limits are important, because at the end of the day, the game we’re making doesn’t just have to look great, it needs to run smoothly as well.
As I mentioned before, it’s not about creating the content, it’s about creating the laws for the universe where the content will go. When we fix something, we are not fixing individual pieces or meshes in the world, we are fixing the rules of the world.
So, you want to be a graphics programmer? Similar to many game development disciplines, you don’t need higher education or a perfect SAT score. It’s all down to the skills you can demonstrate.
We want you to show us your portfolio and present a clear understanding of the basic principles of rendering, starting from scratch. For example, how to set up a D3D device, how the rasteriser works or that you can program basic shadow mapping. DirectX is a must, it’s still the main platform for this discipline, unless you want to work on mobile.
You need to be able to clearly demonstrate that you have the skills to solve problems and implement those principles. We are not looking for professional experience (at least not for entry level roles), but we want to see that you know what you are talking about.
In the age of the Internet you can learn all these things by yourself. There are great blogs to follow, lots of example code and free development environments. All you need is some time and determination. If you create a few videos of your work, upload some source code and you know that graphics programming is your calling, you will already stand out from the crowd.