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
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’
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.
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 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.
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
> 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. :)
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?
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.
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
Not so hypotheticals -- Heck the inputs that you want labelled could be rotation matrices. The desired output could be a rotation matrix. Generating more convenient features could be via a rotation matrix. Dimensionality reduction could be through a reduction matrix. Sparsity could be encouraged by proper use of rotation matrices. Shows up if you want to build in group theoretic invariance in your predictive model.
(*) 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.
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.
> 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.
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.
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.
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, ...
"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 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.
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.
I think graphics programmers benefit from having an artistic mindset, but they usually work so low level that it isn’t necessary to be successful.
AI changed the calculus a bit (or at least, it has the potential to) but I think that was a huge part of the whole "learn to code" movement in the mid 2000s, to start treating software development as a "feature, not a product" of existing experts in their field so that the people most familiar with their domain are actually the ones making the software instead of having to translate the requirements down to a dev team.
They needed warm bodies for their projects, as the usual source of manpower was grinding leetcode to work on bigtech at salaries that would make an accenture business type vomit in disgust.
I also have some notebooks with SymPy code examples here: https://github.com/minireference/noBSLAnotebooks
Start with just <a-box> and <a-sky>, add some animations, then add some community components if it's not enough. Still not enough then modify via ThreeJS, all the way to shaders. A-Frame is amazing so thanks for creating and maintaining it!
PS: Oh, and you can even do AR and VR with it.
This guy has some good art: https://www.khanacademy.org/profile/kaid_1019042693170894950...
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!
As a kid I wanted to make games when I got older, I always saw learning to program as a means to that end.
It wasn’t until I was deep into my career that I started developing all these preferences and ego and suddenly caring about the craft of the craft - specializing in work I never imagined spending so much time and energy on, career aspects I never meant to work into my personal identity.
Part of me feels a huge sense of relief with LLMs and image gen - because finally I don’t have to be the maniac anymore! The machine can be the machine again, I don’t have to sit at an IDE for 13 hours grinding out tedium.
Now I can make games, now I can do art.
In that sense it’s a lot like the early arts and literature movements - a renaissance - where the printing press, canvas, international finance, and the enabling of the rapid production of ideas paid off tremendously in the following decades and centuries.
We’ll get great films, games, stories, and research because of this stuff. And then great innovation - stuff we could not do without it at unimaginable scales.
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.
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.
I will definitely check out Essential Math for Games and Interactive Applications, I feel I need some solid understanding of theory to see how it all fits together.