Live data from Hacker News

How do I become a graphics programmer?

gpuopen.com

31–40 of 207 posts

Re: How do I become a graphics programmer?

#32
Not really sure what this website is asking. Does the person want to: Rig? Texture? Model? Write drivers? Make GUIs? Animate websites? Make graphics tools? Work with shaders? Or work with 2D photo engines? Make 2D games? Make 3D games? Write procedural scripts? Optimize graphics code?

There are hundreds of disciplines that fall under "computer graphics". The website focuses on a teensy little corner: programming graphics SDKs.

Re: How do I become a graphics programmer?

#33

Earlier quoted context omitted.

WebGPU is little more than a laboratory experiment right now. There are probably no industry implementations (game/graphics engine, visualisers, etc). Computer graphics is particularly industry-driven—consider the proportion of game devs who present at SIGGRAPH versus academics. I give it at least a decade before WebGPU sees any meaningful market share.

Bevy Engine ( https://bevyengine.org/ ) is built ontop of wgpu ( https://wgpu.rs/ ) and runs in-browser today ( https://bevyengine.org/news/bevy-webgpu/ ) Bevy is the second highest starred game engine on GitHub's Game Engine topic: https://github.com/topics/game-engine I definitely agree that it's still new, but I don't feel like it's quite as far out as you're implying. A year or two at best IMO?

GitHub stars aren't really an accurate indicator of market share. I've previously starred it, too, but I've never used it.

I'd like to draw attention to the last phrase in my comment:

> WebGPU sees any meaningful market share

I am comparing anything implemented in WebGPU to existing games that are played today by gamers.

Finally, it's using Rust, and the majority of graphics + game engines are written in C++ (with a minority in Java and C#). Despite the safety and tooling benefits, moving to Rust is still a change that companies have to implement and educate their developers on, which is going to take a lot of time. And game dev companies are fairly slow at adopting new language standards (even if they adopt new graphics APIs and hardware fairly quickly, e.g. ray-tracing).

I don't quite share your optimism; sorry.

Re: How do I become a graphics programmer?

#34
Since this is on the front page I guess I'll post the resource that the graphics programming industry actually uses (note, I'm an author): https://raytracing.github.io/

It's included in the "Useful Websites" in the article above.

Also note that graphics is large enough that there no longer exists a one-size-fits all solution to learning graphics. If you want to learn graphics I'd recommend finding a mentor.

Re: How do I become a graphics programmer?

#35

Earlier quoted context omitted.

>No GPU, no OpenGL, no DirectX! This is the opposite of what you would hope to see for learning graphics programming.

I feel like this comment perfectly captures the difference between programming and coding. Programming comes from a place of first principles, the goal being to understand what is needed completely so that a solution that meets many parallel constraints can be constructed. Coding comes from a place of completing a task, the goal being to get from the requirement to the operating task in as short a time as possible so…

I like the distinction, and I think there should exist different terms, but I don't think those two are nearly universal. Many people will use them interchangeably, others may even think other way around ("programming" as a professional discipline where you use tools to achieve an MVP most efficiently, vs "coding" as an enthusiastic activity that's more creative and open ended).

Re: How do I become a graphics programmer?

#36

Earlier quoted context omitted.

>No GPU, no OpenGL, no DirectX! This is the opposite of what you would hope to see for learning graphics programming.

Personally... I disagree. The course says: > You'll learn how a software 3D engine works under the hood, and ... write a complete software rasterizer from scratch Writing a software rasteriser is a fantastic way to learn the classic graphics pipeline, Every single aspect of said pipeline offers scope for one to learn more about how GPUs work, and the algorithms behind them. This would be immensely educational to a ne…

If you want to learn webdev you don't start by building a web browser despite the fact that building a web browser would teach you a lot.

Re: How do I become a graphics programmer?

#37

I'd recommend the Pikuma course Graphics From Scratch[0]. The first thing you do is write a set_pixel function utilizing SDL and the rest of the course is all your code, every matrix operation, every vertex transformation, every triangle rasterization. You calculate what every individual pixel should be colored. [0]: https://pikuma.com/courses/learn-3d-computer-graphics-progra...

>No GPU, no OpenGL, no DirectX! This is the opposite of what you would hope to see for learning graphics programming.

Agreed. I've seen beginners fall into the trap of spending way too much time on software rendering that won't be useful or performant later because every platform they'll ever develop for has hardware accelerated rendering. I learned how to painstakingly render scenes pixel by pixel and then had to unlearn it because graphics programming doesn't work that way anymore.

Teaching beginners to render graphics without the GPU is like teaching them to do fractional math without the FPU. It won't make their first project better and gives them the wrong idea of what to expect.

Re: How do I become a graphics programmer?

#38

Earlier quoted context omitted.

How does this sentiment align with the advent of WebGPU?

WebGPU is little more than a laboratory experiment right now. There are probably no industry implementations (game/graphics engine, visualisers, etc). Computer graphics is particularly industry-driven—consider the proportion of game devs who present at SIGGRAPH versus academics. I give it at least a decade before WebGPU sees any meaningful market share.

Chrome is switching to using Dawn (Google's WebGPU implementation) for its Skia backend. This would render all UI elements across Chrome using WebGPU. You can find plenty of projects that are using WebGPU today. In the web space, BabylonJS has had plenty of experience using it already, and you can run several demos [0]. Offline, there are games like Veloren [1] that use it exclusively as a graphics backend. Plus a number of other projects I can't talk about yet.

It's pretty obvious WebGPU is not going to replace any big engine's custom-built graphics backend, but it's already pretty capable, and I think it's going to be a good place to start for beginners for a long time.

[0] https://github.com/Popov72/OceanDemo [1] https://veloren.net/

Re: How do I become a graphics programmer?

#39

Earlier quoted context omitted.

>No GPU, no OpenGL, no DirectX! This is the opposite of what you would hope to see for learning graphics programming.

I feel like this comment perfectly captures the difference between programming and coding. Programming comes from a place of first principles, the goal being to understand what is needed completely so that a solution that meets many parallel constraints can be constructed. Coding comes from a place of completing a task, the goal being to get from the requirement to the operating task in as short a time as possible so…

Your definitions are made up.

Programming refers to the act of writing a program for a computer to follow.

Coding refers to the act of writing code for a computer.

Edit: The definitions are not commonly used this way and in fact I've heard other people even give opposite definitions to what correponds to which word.

Re: How do I become a graphics programmer?

#40

Earlier quoted context omitted.

>No GPU, no OpenGL, no DirectX! This is the opposite of what you would hope to see for learning graphics programming.

I feel like this comment perfectly captures the difference between programming and coding. Programming comes from a place of first principles, the goal being to understand what is needed completely so that a solution that meets many parallel constraints can be constructed. Coding comes from a place of completing a task, the goal being to get from the requirement to the operating task in as short a time as possible so…

2D graphics with bitblits is a completely different paradigm. If you were using 2D GPUs from the 90s, or maybe a 2D Industrial PC's GPU, sure... Learning about Bitblits and rects is good.

But if your goal is to program a modern shader on a modern platform (even if it's a 2D graphic), you should learn a modern graphics library.

-------

A modern graphics API is laid out the way it is: to maximize modern performance on modern systems. A first principles bottom up approach will absolutely cover shaders (maybe compute shaders are easiest?)

Post reply on HN