What to learn to be a graphics programmer

atan2 293 points 154 comments July 01, 2026
blog.demofox.org · View on Hacker News

Discussion Highlights (20 comments)

SoleilAbsolu

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.

sudo_cowsay

I think that Khan Academy has a lot of graphics programmers that you might be interested in seeing. They use processing js. https://www.khanacademy.org/computing/computer-programming/b... This guy has some good art: https://www.khanacademy.org/profile/kaid_1019042693170894950...

conartist6

Immutability. Semantics.

playorizaya

1. Familiarity with all GL APIs, but deep focus on 1 or 2. If you want to work with Windows, probably DirectX. 2. Make awesome shaders. Check this out: https://fragcoord.xyz I would say being a long-time user of Photoshop and Blender helps a lot. It's not a main tool, but supplemental. Maybe AI will take over some of this though. Hell, maybe that other stuff too, hahaha!

psram1986

trigonometry->Coordinate Geometry -> Linear Algebra applied to graphics Once you have that intuition, the rest is all figuring out the stages of the graphics pipeline and the frameworks like opengl and their constituent data structures.

KellyCriterion

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

jplusequalt

I'm a graphics programmer. The most useful resources I've found for graphics are scratchapixel, UC Davis' graphics lectures, songho's articles, and Essential Math for Games and Interactive Applications. I highly recommend you read this last resource front to back. Seriously, its the best freaking math reference for graphics out there. But knowing theory is not sufficient. You also need to get your hands dirty by writing code: learn how to build a software rasterizer (check out Tiny renderer) and a ray tracer (Ray Tracing in One Weekend series). Preferably in a language like C++. Then move onto APIs. I recommend you learn OpenGL, but if you're okay with being confused as all hell try Vulkan. Or WebGPU if you're a hipster (/s). Finally, try to build some stuff. A simple engine. A non-trivial technique. A game. Whatever. Unfortunately, you're unlikely to get hired working as a rendering engineer without having serious connections, or by having adjacent experience in the industry. Doubly so now that everyone is convinced junior engineers are unnecessary.

mawadev

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...

ivansavz

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

dmarcos

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.

725686

Claude Code

nicebyte

My only additions to the article would be to study your probability/statistics (can't do efficient path tracing without it) and get comfortable with integrals, especially integrals on a sphere (physically based rendering will be a lot easier to understand).

purple-leafy

I’m not a graphics programmer but had alot of fun building a raycaster in C. Fun math and actually really simple relatively. I’m going to revisit raycasting with a browser based raycaster from scratch. I’m just finishing up a webgl + canvas game engine and game for a 2D top down grid strategy game first

ivanjermakov

I had some difficulties making sense of _color_ in context of graphics programming, especially transfer functions (sometimes misleadingly called tone mapping). Good article on color management in general, which has a great intersection with foundations needed for graphics programming: https://chrisbrejon.com/cg-cinematography/chapter-1-color-ma...

Animats

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.

smetannik

For some reason, graphics is one of most popular topics for recreational programming.

pcmaffey

I think the advent of world models is going to open up a lot of interesting 3D applications with related graphics & rendering challenges. That intersecting with WebGPU general availability across browsers IMO makes graphics programming a very interesting domain to get into now. I certainly see the need in my dayjob.

dimitrios1

My focus area in college was Computer Graphics. There is not enough focus about the math in this article, it just kind of passively mentions it. "Well you can get by with just a little bit of this and that" -- Linear Algebra is huge! So is an Engineering style Calculus course -- not your business calc. Those two require a year of their own to gain mastery. IMO, pick up: Linear Alegbra Done Right Calculus Better Explained Concrete Mathmetics. Then you can move on to the low level APIs.

gafferongames

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 :)

raincole

I still have a gripe over the fact The Book of Shaders which never gets finished [0]. Perhaps I'll write such a book... after I finish my game (dry laughter). [0]: https://thebookofshaders.com/

Semantic search powered by Rivestack pgvector
14,015 stories · 131,331 chunks indexed