What are some good graphics programming interview questions? These could be math questions, OpenGL questions, DirectX questions, shader questions, etc.
- Explain the difference between left-hand and right-hand coordinate systems. Which is better? Which does your choice of engine use?
- What are the advantages and disadvantages of quaternions?
- What are the two main types of shader, and what do they do?
- How would you apply multiple textures to a surface and control which one covers which?
This could go on for pages, frankly. Graphics programming is a complex and rich area of knowledge.
(These are OpenGL questions) To catch the basics:
- How does the OpenGL pipeline work? Which part is responsible for setting up camera parameters, and which part is responsible for placing objects in the world?
- How can you setup a perspective projection matrix, and what role do homogenous coordinates play there?
- Which is better: setting the near plane distance to be some very small value, say 0.00001 or setting it to a larger value? More importantly, why is that good or bad?
To catch basic knowledge of the fixed-function pipeline and shaders, you can always ask questions about implementing bits of the fixed-function pipeline as shaders. This is important if they have to write shaders, since fancier models are usually extensions of the basic models.
- How do you write the fog functionality in a vertex/fragment program pair?
- How do you write the standard lighting equation in a vertex/fragment program pair?
- How do you implement bump-mapping and normal mapping in a vertex/fragment program pair?
- Have you ever written a software engine? (If yes find out more!)
- Explain the hardware graphics pipeline in as much detail as you can.
- Explain why a view matrix is the inverse of the orthonormal orientation matrix of the camera.
- How would you add new features to the engine without driving everyone up the wall?
Its a hard thing to ask really. Because if you want a good graphics programmer you need someone who has a good knowledge of a lot of things.
In my opinion a programmer that can't answer 2 & 3 to a "good" standard aren't worth bothering with. If they answer yes to 1 then 2 & 3 should be a breeze but its not like anyone ever lies in an interview ( ;) ) so put them on the spot about it. If they can answer 4 well (ie you need a good conversion pipeline, pretty much, and yet can explain it well) then they are worth employing purely on that basis, IMO.
I've worked many graphics renderer jobs over the years. The biggest issues I have are people who "hack" to get good results. I can level that at a number of, supposed, "gods" of the game graphics rendering community as well. Its all well and good being able to do nifty things but, most importantly, can they produce good results on time and to the specification they laid out. Furthermore, will it actually work at an acceptable frame rate in the game and is the code in anyway readable.