Discussion summary

The discussion covers essential topics for becoming a graphics programmer, including API knowledge, shader development, and math skills. Resources like Scratchapixel and UC Davis lectures are recommended, with some emphasizing the importance of understanding APIs like OpenGL and DirectX.

What the discussion says

  • Focus on learning graphics APIs like OpenGL, DirectX, or Vulkan.
  • Develop strong math skills, especially in linear algebra and calculus.
  • Create shaders and understand GPU programming fundamentals.
  • Utilize resources such as Scratchapixel and university lectures.
Familiarity with all GL APIs, but deep focus on 1 or 2.
playorizaya
Make awesome shaders. Check this out: https://fragcoord.xyz
playorizaya

Comments

Hacker News

I created and still maintain A-Frame (aframe.io). It’s been a gentle gateway to learn 3D graphics for a decade. Cool community if I can say so ha ha. Web is a great way to share stuff as you learn, collect feedback and get visibility. Many cases in the community of people that ended up doing 3d graphics professionally.

by dmarcos

Here's my created list I maintain: https://legends2k.github.io/note/cg_resources/ Do learn if it piques your curiosity and have the time. You're in for a blast and a lot of learning, that'll make you a better engineer, in many other fields of computer science too (you understand hardware, system programming, programmer's machine model, etc.).

Don't learn if you do it with a monetary end goal as it's fleeting, ephemeral and not guaranteed in this day and age.

by legends2k

Graphics programming in games is like playing the guitar. It's cool, but everybody wants to do it.

Make the bold choice. Be a game network programmer. Nobody wants to do it, it's really hard and it kinda sucks.

Play the accordion :)

by gafferongames

Feels like we try to turn anything we do into a career or job, especially with the odd ML angle. How about you "do graphics programming" instead of "being a graphics programmer"? Like start doing simple stuff until it clicks and you see it for being logistics to the GPU, then you can layer on top all the crazy concepts. Its like a small mountain you climb and suddenly everything clicks and you think like "oh my"... the possibilities and things to experiment with...

by mawadev

Somewhat surprising there is no mention of basic design principles, or understanding the quirks of human perception. My brother was a production artist for some well-known computer games in the '90s-'00s, and continually complained about programmers and managers with zero visual sense, or curiosity about understanding the artists' side.

Graphics aren't my specialty, but as a musician, sound designer and producer, by far the most effective/influential audio DSP coders I'm aware of understand the basics of music, the physics/acoustics of sounds, and the gotchas at the interface between discrete digital processes and how we perceive and interpret stimuli.

by SoleilAbsolu

Today, I would not recommend anybody to go into graphics programming:

I started in 2001, when NVidias first Geforce 1 ("the Gigatexl shadercard") was first announced: The field developed since then with so much speed and innovations, it blows my mind of. Compared to what we could do 25years ago, the tech today is just fu*ing impressive.

Though, with this impressiveness comes a big "but": The space is developing at a speed which is really really scary. Nvidia came up with AI-based effects to influence scene & assets on their own - back then, we wouldnt have even thought about that this will be possible some day in realtime.

I do not know if its possible at all to be a "decent pro" in this field now - let me use other words: "Where is todays Jon Carmack?" - he was famous for squeezing everything out of the hardware, using ideas very hidden in the community etc. - today, there is not any competitive moat for people like him (he actually lives on his legacy), and that is because the field is so vast and evolving so fast that there is no chance to become the next one

by KellyCriterion

Do you want to make games, or do 3D engine programming?

If you want to make games, use an existing engine. Unreal Engine, Unity, Godot, and Bevy are good choices. You'll learn the higher level issues of graphics, not how to push pixels around. The real problem is making it fun.

If you want to do 3D engine programming, be aware that there are too many bad game engines. In Rust land, where I am, there are three failed renderers, one unfinished one, and the one inside the Bevy engine. Those are the major projects. There are many other "I'm going to build a game engine" projects. Building a game engine takes about two years to get to the My First Renderer point. Getting to big, highly detailed, dynamic scenes is a much bigger job. Be aware of the scale difference between the first demo and a useful engine.

If you want a job, be aware that the game industry sucks. Pay is lousy, hours are lousy, jobs end when the project is completed, and, like Hollywood, there's an army of wannabees wanting in. Also, right now, because of the collapse of the Metaverse thing, there's a glut of experienced people.

Then there's mobile. Everything is a cram job. Not enough screen, not enough compute, not enough GPU, not enough battery.

This is why most indy games now are 2D. That's do-able. Often in HTML/JavaScript.

by Animats

Join the discussion

Write your take first — we'll ask for email only when you're ready to publish.

  • Hacker News
  • I created and still maintain A-Frame (aframe.io). It’s been a gentle gateway to learn 3D graphics for a decade. Cool community if I can say so ha ha. Web is a great way to share stuff as you learn, collect feedback and get visibility. Many cases in the community of people that ended up doing 3d graphics professionally.
  • Here's my created list I maintain: https://legends2k.github.io/note/cg_resources/ Do learn if it piques your curiosity and have the time. You're in for a blast and a lot of learning, that'll make you a better engineer, in many other fields of computer science too (you understand hardware, system programming, programmer's machine model, etc.).

    Don't learn if you do it with a monetary end goal as it's fleeting, ephemeral and not guaranteed in this day and age.

  • Graphics programming in games is like playing the guitar. It's cool, but everybody wants to do it.

    Make the bold choice. Be a game network programmer. Nobody wants to do it, it's really hard and it kinda sucks.

    Play the accordion :)

  • Feels like we try to turn anything we do into a career or job, especially with the odd ML angle. How about you "do graphics programming" instead of "being a graphics programmer"? Like start doing simple stuff until it clicks and you see it for being logistics to the GPU, then you can layer on top all the crazy concepts. Its like a small mountain you climb and suddenly everything clicks and you think like "oh my"... the possibilities and things to experiment with...
  • Somewhat surprising there is no mention of basic design principles, or understanding the quirks of human perception. My brother was a production artist for some well-known computer games in the '90s-'00s, and continually complained about programmers and managers with zero visual sense, or curiosity about understanding the artists' side.

    Graphics aren't my specialty, but as a musician, sound designer and producer, by far the most effective/influential audio DSP coders I'm aware of understand the basics of music, the physics/acoustics of sounds, and the gotchas at the interface between discrete digital processes and how we perceive and interpret stimuli.

  • If anyone needs a quick tutorial on linear algebra, you can check out this printabale four pager that I wrote: https://minireference.com/static/tutorials/linear_algebra_in...

    I also have some notebooks with SymPy code examples here: https://github.com/minireference/noBSLAnotebooks

  • Today, I would not recommend anybody to go into graphics programming:

    I started in 2001, when NVidias first Geforce 1 ("the Gigatexl shadercard") was first announced: The field developed since then with so much speed and innovations, it blows my mind of. Compared to what we could do 25years ago, the tech today is just fu*ing impressive.

    Though, with this impressiveness comes a big "but": The space is developing at a speed which is really really scary. Nvidia came up with AI-based effects to influence scene & assets on their own - back then, we wouldnt have even thought about that this will be possible some day in realtime.

    I do not know if its possible at all to be a "decent pro" in this field now - let me use other words: "Where is todays Jon Carmack?" - he was famous for squeezing everything out of the hardware, using ideas very hidden in the community etc. - today, there is not any competitive moat for people like him (he actually lives on his legacy), and that is because the field is so vast and evolving so fast that there is no chance to become the next one

  • Do you want to make games, or do 3D engine programming?

    If you want to make games, use an existing engine. Unreal Engine, Unity, Godot, and Bevy are good choices. You'll learn the higher level issues of graphics, not how to push pixels around. The real problem is making it fun.

    If you want to do 3D engine programming, be aware that there are too many bad game engines. In Rust land, where I am, there are three failed renderers, one unfinished one, and the one inside the Bevy engine. Those are the major projects. There are many other "I'm going to build a game engine" projects. Building a game engine takes about two years to get to the My First Renderer point. Getting to big, highly detailed, dynamic scenes is a much bigger job. Be aware of the scale difference between the first demo and a useful engine.

    If you want a job, be aware that the game industry sucks. Pay is lousy, hours are lousy, jobs end when the project is completed, and, like Hollywood, there's an army of wannabees wanting in. Also, right now, because of the collapse of the Metaverse thing, there's a glut of experienced people.

    Then there's mobile. Everything is a cram job. Not enough screen, not enough compute, not enough GPU, not enough battery.

    This is why most indy games now are 2D. That's do-able. Often in HTML/JavaScript.