The 2024 Wheel Reinvention Jam just concluded. See the results.

Recommendations for Specializing in Ray Tracing (or not ?) for Career

For the past year or so since I discovered HMH and this community, I have been thinking of becoming a graphics programmer. I am currently attending a university, and it is my last year. The problem is, I have nothing interesting to show in my resume because school was very difficult for me (for various reasons) and it ended up taking all of my attention and energy. But this time I am planning on taking this seriously and try and make an actual program (or two) that could impress people and get me an internship, and potentially a job in the industry.

Instead of making many small projects that showcase a lot of different techniques, which is probably still better for learning, I have been leaning towards making a single really solid project/tech-demo that showcases a certain technique. Something that can make people think "If this person can do this, they can probably learn to do other things as well.". I don't know if this reasoning is sound, but I do have a time constraint of 3-4 months to find an internship, and I am afraid if I goof around too much I won't be able to find one. It doesn't have to be strictly a "single technique" of course but doing at least the most major ones is probably important.

So far, my plan is to finish Casey's videos up until day 25, which seems to be the last video before he starts making the actual game, and start learning DirectX11 to make a ray tracing program. I would like to clarify that I have already done a ray tracing program without using a graphics api, which is why I am rushing to implement it with one. From this point onwards, my idea is to make it look as realistic and performant as possible. Maybe even switch to DX12 if I need to. My real question is, whether specializing in ray tracing this much is overkill or not ? If so, where do you think I should stop and do something else ? If it is not, what are some of the resources that worked for you when you were trying to do something similar (these do not have to be objectively good resources, just stuff that helped you out) ?

Sorry for the rambling and the wall of text, I know that most of what I'm asking for could be found with a google search, but I wanted this community's opinion specifically.

Thank you in advance.

There are a lot more people on the discord server, so you're more likely to get an answer there.

Look at job postings for jobs you'd like to do, then target the tech they're using. For example, I looked up a graphics programmer job at ZeniMax https://jobs.zenimax.com/requisitions/view/308 and it says the responsibilities are

  1. Improve and maintain the rendering modules of the game engine
  2. Develop shaders and quality effects to support the Art direction and unique visual style of the game
  3. Optimize the rendering code to get the best performance on all platforms
  4. Write clear, maintenable, portable C++ code
  5. Write and maintain custom shaders across a range of hardware
  6. Work well with other engineers, artists and designers
  7. Strong knowledge of C/C++
  8. Strong interest in rendering algorithms
  9. Good knowledge of all low-level graphics APIs
  10. Ability to debug graphics using pix, renderdoc or similar tools
  11. Strong understanding of real-time and multi-threaded systems

So trying to make some generalizations for a tech demo -

  1. write a wide range of shader effects
  2. write shaders in different languages (HLSL, GLSL)
  3. write C++ code (most jobs want C++ not just C so use features from C++)
  4. implement rendering algorithms (Cascade Shadow Maps, Phong lighting, PBR lighting, Ray tracing (in context of a game engine), deferred vs forward render, Global Illumination, Anti-Aliasing algorithms, AO algorithms)
  5. Port you're renderer to range of API's (OpenGL, D3D, Vulkan)
  6. Multi-thread some part of your renderer
  7. Show you know renderdoc or pix.

You could make a graphics demo with all the techniques from https://learnopengl.com/ and more. People do this with the Sponza 3d model and have a GUI to turn on/off different parts of the renderer.

Write a blog post about each topic you implemented and host a github pages website with this tech demo, blog posts & about me page.


Edited by Oliver Marsh on