Skip to main content

The Graphics Programmer

·629 words·3 mins
Engineering Roles in Game Dev - This article is part of a series.
Part 6: This Article

Overview
#

The Graphics Programmer/Rendering Programmer is responsible for making the game look as good as it possibly can, while also making sure its within the performance budget for the target hardware. This involves working closely with artists to understand the target look and quality of the game, and working to find computationally cheaper solutions that still maintain that level of quality.

As a graphics programmer you’ll become familiar with the GPU (Graphics Processing Unit) and writing programs for it, known as shaders. These come in different flavors depending on what stage of the rendering process they’re executed in. Two common shaders are vertex shaders that run for every vertex being rendered and fragment/pixel shaders that run for every pixel being rendered. You’ll find that the GPU has different strengths and weaknesses to the CPU and will learn to write code to make use of that, such as avoiding branching (expensive on the GPU!).

I asked Keith O’Conor, CTO at Romero Games and Graphics Programmer on multiple titles, for his insight into the role.

Pros
#

Why might a student want to pursue this role?

It’s a really rewarding role for those who are both strong in coding and have a good artistic eye. There is certainly an element of mathematical understanding needed, but it’s not as advanced as you might expect (certainly not compared to a physics programmer for example) - you can go a long way with relatively basic understanding of geometry, algebra and trigonometry. You can single-handedly make a big difference to how good any game looks!

Cons
#

Why might a student want to avoid this role?

Graphics programmers usually have very little interaction with the gameplay side of a game - it’s all about how a game looks, and how it performs. If the student wants to be involved in the actual game design, or the implementation of the design, it might not be the right role for them.

Example
#

Something you did in this role as an example of the kind of work you get to do?

So many cool things, that what I love about being a graphics programmer!

Far Cry Primal Mammoth

  • Working with technical artists on Far Cry Primal to get the mammoth fur looking good while being cheap to render
  • Making dynamic rain, lightning and puddle rendering for Prototype 2
  • Optimizing particle effects rendering and tools on Prototype 1 so we could show many more fire, blood and explosion effects

Lots more that I’ve already forgotten!

Student Projects
#

What kind of student projects would you recommend doing to prepare for this role?

Ray Tracing in One Weekend Render

Ray Tracing in One Weekend is a perfect starter project.

After that, a right of passage for any graphics programmer is writing a C++ program from scratch to use any graphics API (but focus on DirectX and Vulkan) to simply put a coloured triangle on the screen. Sounds easy, right?!

Resources
#

Resources/Websites/Books you would recommend.

  • Ray Tracing in One Weekend - every programmer should do this, even if they don’t want to be a graphics programmer, it’s a great project to learn about coding for 3D in general, and you end up with pretty pictures!
  • Physically Based Rendering - excellent book that goes into the mechanics of graphics, lighting, and materials. Essential reading for any graphics programmer.
  • Real-Time Rendering - another excellent book, but more focused on game/real-time rendering (the PBRT book is more about the theory).
  • Game Engine Architecture - a great book about general engine architecture. Graphics programmers also need to have a really good grasp of engine architecture, as they touch many different parts of the engine.
  • Graphics Codex - A great searchable reference for all graphics topics
  • ShaderToy - great for inspiration, seeing some mind-bending shaders, and making your own with the built-in editor.
Dave Ryley
Author
Dave Ryley
Game Developer
 Author
Author
Keith O’Conor
CTO & Technical Director at Romero Games
Engineering Roles in Game Dev - This article is part of a series.
Part 6: This Article

Related

The Audio Programmer

·807 words·4 mins
For advice on this role I reached out to Joseph Greaney, Senior Audio Programmer at Black Shamrock. The following is his insight and advice on Audio Programming for Games. What is a Game Audio Programmer? # When a sound plays we need to know “What Why When Where and How?” A sound designer might say, “A splash sound plays at the player’s foot when they step into a puddle.” Our job is to make sure it works as expected.

The AI Programmer

·551 words·3 mins
Overview # The Role of an AI Programmer is to work closely with Design and Animation to breathe life into characters that make the world come alive. Not to be confused with LLMs or Gen-AI. To achieve this, an AI Programmer will develop systems for Enemies, Allies, and other NPCs (Collectively, “Agents”). The game will often need systems for:

The UI Programmer

·986 words·5 mins
Overview # The UI Programmer works closely with Design and UI Artists, and is responsible for any and all user interfaces seen in the game. This can include, Start Screen and start game flow Settings Screens The Player HUD Weapon reticules Enemy, Item Indicators Inventory Screens Minimaps Quest/Mission logs And any other screens or widgets you can think of.