Live data from Hacker News

What to learn to be a graphics programmer

blog.demofox.org

151–160 of 251 posts

Re: What to learn to be a graphics programmer

#151
post #125

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…

The amount of otherwise decent games that run poorly due to Unity or UE is very unfortunate. I wish people would stop recommending this stuff. I do hope Godot and Bevy are better, but I'm not sure if they are. To name some games with very bad perf issues that I've played in the last couple years: Core Keeper (Unity), WORMHOLE (Unity, mostly see the lag in endless mode), Crab Champions (UE4, have to use nonsense upsca…

> The amount of otherwise decent games that run poorly due to Unity or UE is very unfortunate

The amount is approximately zero. If someone write badly optimized code with Unity they have 200% chance to write badly optimized code with their own engine.

Re: What to learn to be a graphics programmer

#152

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…

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

Most indie games are definitely not in HTML/JavaScript unless you count vibe coded ones.

Re: What to learn to be a graphics programmer

#154
post #75
post #67

Earlier quoted context omitted.

> 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 advi…

> Who are you to say their future career prospect is a folly? 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…

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

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.

Re: What to learn to be a graphics programmer

#155
I love @Animats comment!

I come from reading about CRDTs from Evan Wallace and also having built a product used by >40M users.

It applies to software products too!

In their words…

If you want to build products, use React or even vibecode; you will learn higher-level issues of solutions to problems (i.e. people problems rather than machine problems), not how to push data/state/computation around. The problem is solving a need.

Neither is good nor bad; just be clear about your goals and then it’ll be easy to decide if you want to follow Zynga’s cofounder, Jonathan Blow, or Notch! And before you rush to answer… consider whether any of them are happy.

For people who recommend against learning these skills because “what Carmack did is not possible anymore.”… well, if what you look for is money then yeah! But, if you just want to learn for the love of the game, then that would be a very bad advice!

Re: What to learn to be a graphics programmer

#156

Earlier quoted context omitted.

This is like saying being a cashier prepares you for a job in high-finance because both involve arithmetic on dollars and cents. I've been in ML for ~5 years in multiple FAANGs and I have never seen a rotation matrix .

Is the linear algebra of machine learning more complicated than that of graphics?

Both are large fields with many varied applications of linear algebra (and non-linear math too), and many people trying a lot of interesting & complicated ideas. The question is way too vague to answer meaningfully, it depends on what you mean by ‘graphics’ and by ‘machine learning’ and by ‘linear algebra’ and by ‘more complicated’. ;)

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

Re: What to learn to be a graphics programmer

#157

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…

> "Where is todays Jon Carmack?" - he was famous for squeezing everything out of the hardware, 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...

> users can just upgrade

That used to work, but not anymore. Not because of hardware prices, but because of small gains that upgrading gets us nowadays.

Re: What to learn to be a graphics programmer

#158

Earlier quoted context omitted.

> My point is not that hard to understand. 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 e…

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

> tell me which operators you’re imagining have any resemblance with typical graphics linear algebra

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.

Re: What to learn to be a graphics programmer

#159

Earlier quoted context omitted.

This is a really bad take, sorry. 1. Engine choice is only a factor in performance. If you build an unoptimised game it will run poorly. Doesn't matter if you do it in Unity or your own engine. 2. Terraria, etc did not succeed because they use their own engines. 3. Those bad performance games have bad performance and happen to use an engine, not the other way round. 4. The quality of your game has a lot more to do wi…

I always argued for custom game engines not for performance but so your game “feels” unique. I can spot a unity or unreal game from miles away. They have a smell if you will that is very hard to escape. Every game that has a custom engine just feels unique and interesting in a different way. I think this is why people likely push the custom engine. Any game that passes the finish line on a custom engine often has a l…

I have to disagree again sorry. I can't speak to being able to "spot a unity or unreal game from miles away," but if you want to make a game, make the damn game not an engine.

I get the feeling there is a serious survivor bias happening here. Individuals who are talented and knowledgable enough to roll their own engine, make it well and quick enough, maintain motivation AND cross the finish line to actually make a game likely make a pretty good game. Now consider all the other people who tried this path and got stuck along the way. Now you're gonna recommend all that complexity and difficulty to someone because you think games should "feel" unique. Like, its just not based in reality sorry.

I think there are 2 reasons to roll your own game engine

1. Making a game isn't your top priority and you're interested in game engines

2. No existing game engine does what you need it to do and you have enough experience/knowledge to know where you're going

If you're decision is based on "I want my game to feel unique", "it might not be performance enough" or some other immaterial and ethereal concept I fear you're gonna be set up for failure.

Noita is a perfect example of when to roll your own. They push the boundaries so much that they absolutely need a custom engine. Path of Exile, another example where their vision REQUIRED a custom game engine.

Re: What to learn to be a graphics programmer

#160
post #118

Earlier quoted context omitted.

Two years? Why does it take two years?

Unless you’ve written one before, it’s the natural learning curve. You can always generate one using LLM if you don’t care about how it actually works.

And if you have written one before, it might take five years. ;)

At least, that was my actual experience at a game studio. The engine team wanted to rewrite the engine but underestimated how much was there, how much was worth keeping, and how much work needed to be done. But that was a long time ago, and the studio’s now on Unreal.

Post reply on HN