Gamasutra: The Art & Business of Making Gamesspacer
View All     RSS
October 25, 2014
arrowPress Releases
October 25, 2014
PR Newswire
View All
View All     Submit Event

If you enjoy reading this site, you might also want to check out these UBM Tech sites:

How to become a Graphics Programmer in the games industry
by Oliver Franzke on 07/18/14 12:01:00 pm   Expert Blogs   Featured Blogs

The following blog post, unless otherwise noted, was written by a member of Gamasutra’s community.
The thoughts and opinions expressed are those of the writer and not Gamasutra or its parent company.


As we were recently hiring a new Graphics Programmer at work I had to identify what kind of technical knowledge and skills we would expect from a potential candidate. Although this definition will be somewhat specific to what we look for in a candidate, it might still be of interest to other coders trying to score a job in the industry as a Rendering Engineer.

This post might help you to identify areas to learn about in order to get you closer to your goal of becoming a Graphics Engineer, whether you just finished your degree or perhaps have been working in the games industry in a different role. Alternately, if you are a seasoned Rendering Programmer, then you know all of this stuff and I would love to hear your comments on the topic.

Know the Hardware

Learning about the strengths and weaknesses of the hardware that will execute your code should be important for any programmer, but it's an essential skill for a Graphics Engineer. Making your game look beautiful is important; getting all of the fancy effects to run at target frame rate is often the trickier part.

Of course, it would be unrealistic to expect you to know every little detail about the underlying hardware (especially if you are just starting out) but having a good high-level understanding of what is involved to make a 3D model appear on screen is a mandatory skill, in my opinion. A candidate should definitely know about the common GPU pipeline stages (e.g. vertex- and pixel-shader, rasterizer, etc.), what their functionality is and whether or not they are programmable, configurable or fixed.

Very often, there are many ways to implement a rendering effect, so it’s important to know which solution will work best on a given target device. Nothing is worse than having to tell the artists that they will have to modify all of the existing assets, because the GPU doesn’t support a necessary feature very well.

For example, the game that I am currently working on is targeting desktop computers as well as mobile devices, which is important because mobile GPUs have very different performance characteristics compared to their desktop counterparts (check out my 5 minute micro talk on this topic if you are interested). Our team took this difference into account when making decisions about the scene complexity and what kind of effects we would be able to draw.

A great way to learn more about GPUs is to read chapter 18 of Real-Time Rendering (Third Edition), because it contains an excellent overview of the Xbox 360, Playstation 3 and Mali (mobile) rendering architectures.

Good Math Skills

Extensive knowledge of trigonometry, linear algebra and even calculus is very important for a Graphics Programmer, since a lot of the day to day work involves dealing with math problems of varying complexities.

I certainly expect a candidate to know about the dot and cross products and why they are very useful in computer graphics. In addition to that, it is essential to have an intuitive understanding for the contents of a matrix, because debugging a rendering problem can make it necessary to manually ‘decompose’ a matrix in order to identify incorrect values. For example, not that long ago I had to fix a problem in our animation system and was able to identify the source of the problem purely by looking at the joint matrices.

In my opinion, a candidate should be able to analytically calculate the intersection between a ray and a plane. Also, given an incident vector and a normal, I would expect every Rendering Engineer to be able to easily derive the reflected vector.

There are plenty of resources available on the web. You can find some good resources here. The book "3D Math Primer for Graphics and Game Development" does a great job explaining a lot of the fundamentals like vectors, matrices and quaternions to name just a few topics. I would also strongly recommend attempting to solve some of these problems on a piece of paper instead of looking at a preexisting solution. It’s actually kind of fun, so you should definitely give it a try.

Passion for Computer Graphics

An ideal candidate will keep up to date with the latest developments in computer graphics especially since the field is constantly and rapidly advancing (just compare the visual fidelity of games made 10 years ago with what is possible today).

There are plenty of fascinating research papers (e.g. current SIGGRAPH publications), developer talks (e.g. GDC presentations) and technical blogs available on the internet, so it should be pretty easy to find something that interests you. Make sure to check out the blogs of fellow Rendering Engineers for some really inspiring articles!

Of course implementing an algorithm is the best way to learn about it, plus it gives you something to talk about in an interview. Writing a cool graphics demo also helps you to practice your skills and most of all it is a lot of fun.

If you want to maximize your chances of getting a job make sure to spend some time making your demo look pretty. You may have implemented the most efficient tessellation algorithm, but if people can't see what's going on they might not be as impressed as they should be. Creating visually pleasing images is a big part of the profession, so it's generally a good idea to show that you have this skill as well.

Performance Analysis and Optimization

One of the responsibilities of a Graphics Programmer is to profile the game in order to identify and remove rendering related bottlenecks. If you are just starting out I wouldn’t necessarily expect you to have a lot of practical experience in this area, but you should definitely know the difference between being CPU and GPU bound.

An ideal candidate will have used at least one graphics analysis tool like PIX (part of the DirectX SDK), gDEBugger or Intel’s GPA. These applications are available for free allowing you to take a closer look at what’s going on inside of a GPU, isolate bugs (e.g. incorrect render-state when drawing geometry) and identify performance problems (e.g. texture stalls, slow shaders, etc.)


The job of a Graphics Programmer is pretty awesome since you’ll be directly involved with the visual appearance of a product. The look of a game is very often the first thing a player will know about it (e.g. trailers, screenshots) which has been very gratifying for me personally.

Truth be told, you won’t be able to write fancy shaders every day. You should be prepared to work on other tasks such as: data compression (e.g. textures, meshes, animations), mathematical and geometry problems (e.g. culling, intersection computations) as well as plenty of profiling and optimizations. Especially, the latter task can be very challenging since the GPU and the associated driver cannot be modified.

To sum up, becoming Rendering Engineer requires a lot of expert knowledge, and it is certainly not the easiest way to get a foot in the proverbial games industry door, but if you are passionate about computer graphics it might be the right place for you!

The Beginner's Checklist


Note: This article was originally posted on #AltDevBlog in November 2013.

Related Jobs

Red 5 Studios
Red 5 Studios — Orange County, California, United States

Graphics Programmer
Red 5 Studios
Red 5 Studios — Orange County, California, United States

Gameplay Programmer
Gearbox Software
Gearbox Software — Plano, Texas, United States

Server Programmer
Forio — San Francisco, California, United States

Web Application Developer Team Lead


Tobias Horak
profile image
I just wanna say it's great to see some Oliver Franzke articles here on gamasutra!

Kris G
profile image
The thing is, on smaller teams the rendering engineer is often also the chief engineer who has written the core engine, so if a position is available the manager will want to see lots of shipped products on your resume. My advice is to apply for jobs on larger teams that need rendering work done in multiple areas or on multiple platforms, that's the best way to get a foot in the door.

Oliver Franzke
profile image
Good point Kris! It is definitely much easier to specialize on graphics in a bigger team.

If you are flexible about working on other aspects of the tech as well, then it'll increase your chances of getting your foot in the door (even in a smaller company).

So in a way it really depends how much you want to specialize on graphics... :)

Thanks for comment.

Michael Baxter
profile image
Thanks for the well-written article, Oliver! This is very helpful for someone like me who is trying to figure out how to become a rendering engineer, and hearing you describe the job helps affirm my passion and interest for it. Do you have any advice on the whether or not a college degree is necessary for a job as a graphics programmer. (Granted, I understand from the article and comments that a programmer probably wouldn't start out in that position.) I spent quite a while studying physics in a university before deciding to take a break from school and pursue graphics programming. I really like learning on my own from books like Real-Time Rendering, but I'm beginning to think it will be hard to get a job without a college degree, even if I can learn more on my own than from a class. Any advice? Again, thanks for the article; super helpful!

Oliver Franzke
profile image
Hi Michael. That is an excellent question!

Generally I think that a college degree is very helpful especially for a systems or graphics programmer in the games industry. You probably won't learn how to properly program games there, but the exposure to higher math and to theoretical computer science are very valuable since it'll help you to reason more methodically about your approach or problems you might run into.

In my opinion a graphics programmer has to have excellent math skills. Like I mentioned in the article a solid understanding of linear algebra is a must and ideally you would be comfortable with calculus and stochastic as well.

Having said that your case might be special, since you studied physics which relies on math and abstract thinking. So depending on how comfortable you are with that you might not need a college degree.

One thing to bear in mind though is that many job offerings will require at least a bachelor degree in computer science. Some companies are more pedantic about this requirement than others and you might be able to get an interview even without that.

If you are happy to work on other aspects of game dev, then you will have a bigger chance to get your foot in the door. In my experience it's much easier to move into a different role within a company, because they will hopefully recognize that you have a strong passion for graphics and have the skills as well.


Michael Baxter
profile image
Thanks for the reply Oliver, I really appreciate it! Very helpful in considering how to move forward.