So here’s another perspective. If all you have done is web apps and Kubernetes, for example, do get into graphics programming. The feedback cycle is exhilarating, and you get to appreciate how mind boggingly fast your average computer is. You’ll get to optimize things that are ultimately unimportant because you have never learned how quick things are at the low level. There are a ton of resources and the maths is not too bad. You might find that 3D modeling is a creative outlet you didn’t know you needed. Even if completely inapplicable to your day job, you’ll find new ways to appreciate the art of programming computers, and might just decide to never touch Kubernetes again and spend the next 5 years writing your own game engine in your spare time. There are a lot of crazy people like that, and the community of hobbyists that are not ground down by life and game dev as a career is larger than you’d think. The Graphics Programming discord is a welcoming place if you want to check it out.
Go for it!
That's not the argument being made here. The field is changing. I had a good career in graphics, my life wasn't wasted at all. That doesn't mean a college student would have the same experience starting today.
The field is always changing. You could find people in the 80s saying ‘I had a good career in graphics, a college student would not have the same experience starting today’
The rapid advances, in a trend replicating throughout society, push out the middle in favor of the top.
Joking (sort of).
I can't say I know of any in the fields I'm familiar with. I've watched tech get increasingly top-heavy since the covid hiring boom and bust, although it was already trending that way.
There are a lot of fields dominated by boomers on the verge of retirement that are the safest bet for people who want to be good and make a good living but don't care to be extraordinary.
I've heard that from arborists, water treatment specialists, actuaries, a few others.
I feel more like people kept flooding into the middle and bottom, and companies that used to focus on top talent got watered down with those middle and bottom types.
A lot of the people getting laid off from Google and Meta would not have been hired at all in those places 15 years ago, for example.
I hate these people telling people who love to do a certain thing that they should just become a plumber or an electrician. Not everything is about spending your life to make as much pieces of paper the govt tells you are worth something.
I'd rather be in poverty working with computers everyday and doing what I love than make 10k a month being a plumber. I actually can't stand you people.
Which fields would you say are the best to just be mediocre in
> I actually can't stand you people.
Unnecessary. People who want a basic middle class existence are not greedy and should not receive disdain. Many have responsibilities to their elders or others, have kids or want them, etc. so avowed poverty is not realistic.
Especially when bohemian poverty is an increasingly vanishing option on a practical level.
Other people choose a job that pays enough that they do not have to live with the stresses that poverty brings. Even if they do not love it.
When I hear statements like yours, I think that they come from not actually having lived with very little money.
For example, "there's no chance to become the next one" implies it's only worth it to do something if you can become the absolute best person in the field.
It's a big world. Most of us will not be the very best at what we do. There are millions of fun games that were not written by John Carmack.
I kid, but there are many other modern Carmacks and id argue even more impressive contributions. The guy has done little since he left gaming.
I wish more people praised Alex Evans. Dreams rendering tech is still unmatched to this day and was my inspiration for graphics, not Carmack.
Given that almost everyone who wants to be a "graphics programmer" is also somehow gaming industry adjacent, it is extremely fair to ward them off from the folly. I do the same for anyone wishing to do "VLSI hardware engineering." If you have the skill to do either of those, you almost CERTAINLY have the skill to do something else that is almost as interesting and not saddled by garbage employers.
The primary problem with being a "graphics programmer" beyond a tyro is that the biggest consumer of graphics programmers is the game industry which is a notoriously shitty and wretched industry. Every ... single ... employer. So, from the point of view of future potential, "graphics programmer" has very little upside over pretty much ANY other type of programmers.
Second, "learning graphics programming" is like "learning phone programming", you spend more time fighting godawful software infrastructure more than you do actual programming. AI actually kind of helps this, but it doesn't completely remove the fact that 80% of your knowledge has a half-life of 18-24 months.
Finally, saying "I want to learn graphics programming" is like saying "I want to learn engineering." What "graphics programmer" means is vastly underspecified. 3D game rendering and 3D/2D CAD rendering and 2D vector rendering are completely different skillsets. GPUs are great at the first and kinda okay at the second and kinda lousy at the third. Which kind of "graphics programmer" are you even going to be?
What kind of knowledge are you talking about here? learnopengl.com is still relevant today for its technical knowledge of fundamental graphics techniques, in spite of OpenGL itself slowly dying. The knowledge itself is overwhelmingly transferable to whatever modern graphics API you’re using.
With mobile development, I can see that you’re mostly learning surface level tools and APIs, which get changed frequently as a new iOS version comes out. But with graphics it’s actually the opposite — most large features come with new hardware, and because most of your customers are generally using older hardware, you can’t even use those new features until the majority of users have upgraded and support it (usually with a new console generation).
Regardless of what you think of the games industry, graphics programmers are highly in demand and paid relatively very well. It’s hard and there’s a lot of surface area to cover to really be excellent, but the knowledge is relevant, longstanding, and rewarding IMO.
Actually, no. Autodesk acquired Alias, and got the Maya animation system, in 2005. Soon after, the CAD tools had cinematic quality output. The architectural people loved this - good looking, accurate architectural renders came out. They especially liked that lighting worked, and you could use the CAD system to place real-world light fixtures.
If one follows OP's advice, none at all.
> it is extremely fair to ward them off from the folly
I completely disagree with this. It is a damaging and unproductive attitude to teach beginners and young people. Who are you to say their future career prospect is a folly? The only thing that defines the talents of tomorrow is that they have ignored such advice and then pushed forward the state of the art in ways you couldn't even imagine. This is how progress works.
Someone who watched an industry chew up and spit out far too many young people. That's who and that's why I'm qualified.
> The only thing that defines the talents of tomorrow is that they have ignored such advice and then pushed forward the state of the art in ways you couldn't even imagine. This is how progress works.
You would encourage an individual to walk a path that is 90%(95%/99%) likely to damage their life horribly in the name of "progress"? Really? That's ... more than a little inhumane.
Would you encourage someone who likes writing to be a "journalist" right now? I should hope not. I wouldn't tell them to not write, but I sure would try to find a better way to channel that skill.
Or perhaps, if we substituted "pro basketball player" for "graphics programming" perhaps you could see the folly? Although, at least the individual playing basketball would gain the immediate benefits of being quite fit while the graphics programmer would enjoy no such side benefit.
Are we still talking about graphics programming? Damage one’s life horribly, really? Those poor kids you saw ‘spat out’, are they irretrievably broken? You speak as if people are single-purpose machines, and that there is nothing to learn from adversity and challenge. That skills are not transferable and there is nothing new is there to be discovered.
Turning this around, would I discourage a kid from seriously pursuit a career as an astronaut or racing driver? That has a higher likelihood than most to ‘damage one’s life horribly’.
I honestly cannot understand nor subscribe to this pessimistic worldview, the one that would tell a kid to abandon their dream and go do what they believe society needs. Bollocks to that.
I get that. In the time you'd learn about graphics programming, you could learn something else that would be able to give you a boost in the hiring market.
After all, he liked polyhedrons so much he made a living out of it. Following his dreams literally saved his life.
Another staple of HN I abhor is “don’t bother learning this cool thing unless an official IQ test says you are over 150.”
“The reasonable man adapts himself to the world; the unreasonable man persists in trying to adapt the world to himself. Therefore, all progress depends on the unreasonable man.”
— George Bernard Shaw
That being said, "nowadays" most studios just throw shit at UE5 and get it over with. It's obvious from how terrible many games run that they don't have a rendering engineer on the payroll.
> Telling people to stay away from graphics programming is not how to entice tomorrow’s John Carmack.
John Carmack was one of the _first_ graphics programmer to ever exist. The next John Carmack can't be in the same field. The same way we can't expect the next Beatles to be playing rock music. :)
Academia was never a lucrative field. For the sacrifices it requires, it will never be financially viable for me to work there. Am I wasting my time going through the Feynman Lectures nonetheless? Keeping my calculus decent? I clicked on this for the same reasons; not looking for career/financial advice, I just have a morbid curiosity about how the sausage is made.
Not to mention, of course, that skills are transferable. Philosophy students don't study Plato because his ideas are relevant to everyday life. His way of thinking/reasoning about problems given his limited means is a timeless skill. I will probably never have to use any direct fact in the Feynman Lectures in my dayjob but learning to think like Feynman is useful when reasoning about large obscure systems which I do encounter daily. FL is not so much an exercise in physics but in the application of the scientific method in general. For software engineering, it nicely compliments Skiena's "The Algorithm Design Manual" IMO.
What I expect to learn from graphics programming:
- it's a good practice for applied maths/vectors/linalg - it's a good practice to learn lowlevel APIs/programming tricks - maybe I'll make a cool game
All of which can also find application elsewhere in computing.
Ah yes:
"The ability to play chess is the sign of a gentleman. The ability to play chess well is the sign of a wasted life" [1].
I'm not a graphics programmer so I'm not in a position to gatekeep but I fully agree with the sentiment in the OP (I mean KellyCriterion's post). Do you really want to dedicate your life to an industry that will chew you up and spit you out just to release a borken AAA game that will go down in review flames for ripping its players off?
Side projects, sure. But, professionally? There's gotta be better ways to pay the bacon and bring home the bills.
____________
[1] https://www.chess.com/forum/view/general/favorite-chess-quot...
Sad though. The most fun you can have with programming is maybe the least fun programming job of all.
Quite true! Game Dev (and Graphics Programming) should be fun - though in todays environments, its everything apart from fun.
Honestly: For me today, writing boring business/workflow/CRUD/shop applications is the fun I should have had when being in GFX-programming - I do not know why its not fun to work for a game dev company.
I said the technology is accelerating at such a scary-high speed, that it is no more fun and very hard to earn any merits today, which was quite possible over the last decades.
(and for me personally: Yes, Im happy to be no more involved, though I profit from this experience very often, even if Im in a completely different sector today)
The trick there is that they both have related physical analogs, and machine learning math doesn't really (in that while you can visualize them spatially, it doesn't seem to help solve any problems in that space.)
I've been in ML for ~5 years in multiple FAANGs and I have never seen a rotation matrix.
How much do you even think about explicit matrix math when doing high-level ML?
The whole ML field is basically about starting from random points and trying to find useful shapes and constraints. Basically like trying to get object likeness in clouds
(*) If you consider Householders then even more
SVD is more complex but ultimately it’s just another useful decomposition of a matrix.
I’m not sure why you’re both negative and dismissive. Transformation matrices in graphics are a good and approachable way to get used to linear transformations, which turn out to be useful pretty much everywhere.
Whether or not that helps you with ML depends more on what you’re doing in ML. FAANG doesn’t have a monopoly on ML or on interesting work in ML.
Yes you're now the second person the literally repeat the same thing I've already stated extremely clearly and succinctly: PCA is not just rotation (hint: you also need to understand covariance).
> I’m not sure why you’re both negative and dismissive. Transformation matrices in graphics are a good and approachable way to get used to linear transformations, which turn out to be useful pretty much everywhere.
I've already literally drawn the analogy/metaphor that I've drawn: if you think 2d/3d rotation matrices as they are used in graphics is any kind of introduction to the matrices in ML (modeling linear transformations or otherwise) then you're probably the type of person that believes that cash registers any kind of introduction to finance.
My point is not that hard to understand. Graphics in no way, way, shape, or form prepares you for ML. I don't understand why this is so controversial.
Have you done any serious graphics programming? Even at the OpenGL 1.x level? What you’re saying just doesn’t make sense.
Just because you’re rotating and translating things in 3-space doesn’t negate that you have a stack of transforms that relate a point in world space to one on screen space and you want to be able to project from one to the other.
Nor does it make it any easier when you need to think about how to stack transforms to achieve effects like rendering a mirror.
I honed a lot of useful practical skill with linear algebra trying to get graphics to do what I wanted. And I say this as someone who’s spent the bulk of my career using linear algebra in the context of quantum mechanics, physical simulation, and ML-adjacent areas.
no it doesn't "negate", it's all completely orthogonal (pun) or irrelevant. like for real just please take a look at
https://docs.pytorch.org/docs/2.12/nn.html
and tell me which operators you're imagining have any resemblance with typical graphics linear algebra.
like when you people make such claims do you really have anything concrete in mind or just hype?
FWIW, since it seems like you’re unaware: most of those are used in graphics in general, and have been used since long before Torch existed. Convolution’s extremely common. Pooling is just a type of image resampling to graphics people. Non-linear activations are just response functions that graphics people use for colors for example, also volume rendering. Normalization, linear, distance, vision, and shuffle layers are all absolutely standard common operations in graphics, on everything from images to meshes to volumes to matrices.
BTW, most of those Torch layers aren’t “linear algebra” per se, they are just convenient building blocks for neural networks, many of which are also convenient building blocks for graphics… and for similar reasons.
Was your point implicitly limited to rotations or a raster pipeline’s model-view-projection matrix? That certainly does not amount to all “graphics”, right?
> Graphics in no way, way, shape, or form prepares you for ML. I don't understand why this is so controversial.
This isn’t really controversial, it’s just not particularly true as stated. Graphics is much more than 3d rotation matrices, and doing real modern graphics involves all kinds of linear algebra, with immense amounts of overlap between the linear algebra that ML and computer vision use.
Perhaps missing from this conversation is any thoughtful consideration to the history of today’s ML and the cross pollination between the fields we call graphics, vision, and ML. The implicit assumption you seem to be making that they are distinct fields without a shared history and co-development and without a shared foundation is not a good assumption.
I personally know enough ex-graphics people that transitioned to ML and were well prepared by graphics and are wildly successful in ML that it makes your claim sound somewhat ignorant of what’s happened and is happening in both graphics and ML from my perspective, for what it’s worth.
> there is absolutely no sense in which the SVD/PCA decomposition is just a rotation matrix... (hint: scaling is extremely important)
...
> SVD is the decomposition of a matrix into two rotation matrices and a scaling matrix, by definition:
yes that's exactly what i was implying when i said SVD more than just rotation, scaling is also important.
my point, which is my same original point, is that if you think learning about rotation/euler matrices is going to prepare you in any way, shape, or form for ML (vis-a-vis SVD/PCA or RoPE or anything else) you're in for a very rude awakening.
> I've been in ML for ~5 years in multiple FAANGs and I have never seen a rotation matrix.
Presumably you've used SVD, but you've never seen a rotation matrix. So something is cooked.
Maybe corollary: that FAANG job wasn't that interesting.
If anyone needs a review it's not cognoboffin.
You led with the claim you have never seen a rotation matrix in ML. I am having doubts about whether you have the ability to recognise one.
I suspect new hires get a free pass as long as they can talk a storm about backpropagation these days.
The linear algebra used in the basic raster pipeline to manage drawing a 3d unshaded mesh is pretty simple, and you can get by knowing just a little bit of linear algebra, like dot products and how to multiply matrices, and maybe what homogeneous coordinates are. But that is by no means the extent of linear algebra in all of graphics.
The linear algebra used in a basic neural network is also pretty simple, and you can get by knowing dot products and matrix multiply if you’re writing your own inference, and maybe just a tiny bit of derivative calculus if you’re writing your own backprop, but otherwise you don’t need anything else.
Students in both fields have to learn some basic linear algebra, but most people working in ML & graphics generally don’t use any linear algebra day to day, because most people aren’t writing inference/backprop and most people aren’t writing the graphics pipeline.
BTW, matrices and linear algebra are pure convenience for neural networks, and maybe for the graphics raster pipeline too. You can do both of these things without using matrices per se (though you might re-invent something equivalent and/or less efficient by avoiding matrices).
I tried my hand on hand a while ago and found out I couldn’t make out how many pixels to draw, say, a line in the 3d world. It involves a transformation to the world and another transformation to the camera, so I couldn’t make it out without any study.
This is probably very trivial so hopefully 3 days is good enough.
A lot to be learned from building a 3D engine, no doubt, but anecdotally the chances that it will lead a working game that anyone wants to play seem low. That's not a bad thing, unless they tell themselves they are going to ship a game any day now, just as soon as they do X, then Y, then Z, ...
If you're an expert as a particular programming language, for example, you may have a good mental model for what optimizations the compiler and/or runtime are able to do, and the way you write code in that language may be influenced by that deep knowledge. You may have written so much code in that language that you know all of the corner cases and foot-guns, and how to deal with them--or better yet, how to avoid them in the first place. You may even develop new/uncommon patterns or idioms that other people end up adopting.
But, if that programming language totally changes its own semantics and compiler toolchain every few months, nobody would have time to build deep intuition and expertise like that.
I think that was the point.
You don’t need to be JC to earn a decent living as a graphics/game programmer.
We see folks posting photo real, Gaussian splat FPS maps here every now and then but without also innovating on gameplay its just a tech demo. Those don't cut it these days.
It takes five minutes of trawling through the videos on the GDC Vault to see all of the clever and interesting ways modern graphics engineers are eking every bit of performance out of modern hardware. Is it as clever or innovative as Carmack's fast inverse square root? I don't know. I'm not sure how to compare those things. But there is still plenty of room for that flavor of work for those that are interested.
It was THE ressource back then! :-)
"Where is todays Jon Carmack?"
Where is the "John Carmack" of ML? Where is the John Carmack of physics? This hero worship crap needs to be left in the past. There isn't a singular active researcher you can point to and say "this person has made the field what it is today". There are very influential papers, but they all have multiple contributors. Is that really a valid reason to not engage in a particular area of research or engineering?
And who cares anyway? No matter what you choose to do with your time, chances are that you will not have that much of an impact on your chosen discipline. You should choose how to spend your time based on whether an activity genuinely interests you, not on whether you think it would be easy to get recognition.
In comparison, Carmack is grossly overhyped. He's like the Feynman of CS: A significant contributor to relatively young field, and a pretty influential communicator, but their contributions were moreso being the first to make a certain type of incremental progress than a paradigm shift.
Keep learning yung ones
Indeed "be a graphics programmer" nowadays sounds like "be an assembly programmer".
A kind of time waster for a nerd with too much time in their hands.
Maybe this is good advice for someone who's looking to transition into a new field but doesn't care about what they're actually doing. But that's not a good way to go through life; my advice to such a person is to follow what they find interesting and valuable, and constantly challenge themselves to learn new things.
By argument about not getting into graphics programming is different -- are 3D engines, with their vertices and textures, going to even exist a few years from now? Or will everything be rendered directly by an AI world model? How much code will a game contain, or will it simply exist in a series of cleverly-worded prompts?
Spinning that another way, there's Bill Gates (not sure of the authenticity though) saying something along the lines of why would he pay to spend that kind of time when CPUs/RAM/HDDs are getting faster/cheaper; users can just upgrade. If we determine which method is more successful based on their worth...
That used to work, but not anymore. Not because of hardware prices, but because of small gains that upgrading gets us nowadays.
Where are today's games with sufficient insight on their technical aspects, to the level we got with Commander Keen, Wolfenstein and Doom?
Dwarf Fortress solved some outstanding lag issues involving tracking owned objects. But if you ask a random person HOW, we don't actually have a serious clue.
Think of well known instances of big developers having their code exposed and we have... I dunno, Valve's TF2 leak and their incredibly rare Dota 2 between the lanes posts?
There is no John Carmack now. You're saying its because there's no large space to improve on like how early people had to. I say it's not because the struggles and unique problems disappeared, but because there isn't a benefit to that type of transparency anymore.
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