Live data from Hacker News

How do I become a graphics programmer?

gpuopen.com

51–60 of 207 posts

Re: How do I become a graphics programmer?

#52

I would suggest that beginners not lead with "which tools should I capitalize on" and instead, take a step back and ask "what do I want to make"? Don't lose focus on the final output as you make your first steps. In the world of computer graphics today there are so many tools that abstract away various steps in the process of drawing pixels to the screen that you could very easily waste too much time suffering with l…

This is great advice. I think it’s a common trap when I see questions like “what language should I learn/what language is the best”, which skip the point of “what would you like to build”. The tools change with time, and the best engineers in my experience generally know how to use a variety of tools with varying degrees of skill rather than be super deep in a single one.

Re: How do I become a graphics programmer?

#53
As a graphics programmer i think its good to have a well rounded idea about how graphics works. Here are some things I would expect a good graphics programmer to know, beyond just programming and an API:

-Rotation view and projection matrices, and general vector math.

-Shader programming.

-Procedural primitives like voronoi, SDF and perlin.

-Image Compositing.

-Forward and deferred rendering.

-Various sampling techniques.

-Shadow and lighting techniques.

-Knowing a bit about how the art pipeline works and how to get data out of 3D apps.

-Being comfortable using a profiler and debugger.

-Capable of reading Siggraph papers.

-Knowing various spacial partitioning and volume hierarchy techniques.

-Being able to build a simple raytracer.

-Good understanding of primitives, like sprites, triangles n-gons and so on.

-Some particle and simulation experience.

Re: How do I become a graphics programmer?

#54
post #49

Earlier quoted context omitted.

I'm not the parent commenter, but I'd like to explain their logic, which has at least a modicum of reason to it. About 99% of desktop video games (by far the largest clients of graphics APIs) target Windows, and therefore target either Direct3D 11 or Direct3D 12. This includes free-to-use game engines including CryEngine, Unity, Unreal, and Ren'Py. Almost all the famous, proprietary, high-performance game engines (id…

iD Tech, Source 2, Unreal, and Unity support Vulkan. iD Tech targets Vulkan exclusively on PC: https://twitter.com/billykhan/status/1028133659168186368 Other points are also blatantly untrue, but I think I have made my point. At this point, targeting only DirectX is shooting yourself in the foot. Other references: https://docs.unity3d.com/Manual/GraphicsAPIs.html https://www.khronos.org/news/press/khronos-group-relea…

While I was incorrect about id Tech (and have edited my comment), I never made the point that any of the other engines didn't target Vulkan.

Where else is my comment untrue? Many engines and rendering back-ends have only recently completed a Vulkan-based implementation. I am confident in my assessment that the large majority of existing implementations are still running OpenGL and/or Direct3D, if on Windows.

Re: How do I become a graphics programmer?

#55
For complete beginners looking to get a good conceptual understanding of what shaders are actually doing, I would highly recommend this course: https://github.com/ssloy/tinyrenderer

In the course you will build a purely CPU-based renderer that simulates the way OpenGL shaders work. I found it to be incredibly useful for understanding shaders.

Re: How do I become a graphics programmer?

#56

Earlier quoted context omitted.

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.

Web dev is sufficiently abstracted from the browser and the hardware that a skilled web developer doesn't really need to know the internals of the V8 engine or how a browser works. A web back-end developer probably doesn't need to deal with the browser at all. Graphics programming skill (by 'skill', I mean being able to write a shader pipeline that both satisfies the art direction and performs well), on the contrary,…

All programmers at a certain level must understand the lower levels of the stack they are building upon. I think most people can get by with just learning the abstractions that are provided to them. With time people can learn more and more about lower levels as they specialize. Most people who become graphics programmers don't need to know the low levels of how a GPU works, so I personally do not think that is a good place to start for people who want to get into graphics programming.

Re: How do I become a graphics programmer?

#57

Earlier quoted context omitted.

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…

Well, I'm writing a game intended for the web using Bevy right now, so I'm clearly biased :) There are also some industry veterans building games using it. https://www.mobygames.com/person/6108/brandon-reinhart/ to name one specifically. You can just use FFI if you want to integrate C crates with Rust, it's not that bad. Figma uses a mixture of Rust and C++ in the WASM that they ship. Guess we'll see what the future…

All the best. I'll be happy to eat my words.

Rust is a great language (although I don't use it myself), and WebGPU is pretty interesting as well.

Re: How do I become a graphics programmer?

#58
If you’re teaching yourself, it might be nice to have an early win. Something like unreals material editor or shader graph might be a nice start. Lots of tutorials around. Then, when you go to write actual shaders. You’ll know what logically you intend to do, and all you have to do is learn the syntax of whatever graphics language/api you choose

Tangent: Learning the syntax for OpenGL is hellish, and there’s a lack of great resources on it, at least as of several years ago.

Then, after you understand shaders a little, go and make your game engine (physics will be its own beast)

Re: How do I become a graphics programmer?

#59

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.

Great stuff! I especially agree with teaching math via raytracing first instead of APIs.
Post reply on HN