Live data from Hacker News

How do I become a graphics programmer?

gpuopen.com

131–140 of 207 posts

Re: How do I become a graphics programmer?

#131

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

There are a couple of excellent resources out there for implementing 3D rendering from scratch.

On that I cannot recommend enough is this github repo:

https://github.com/ssloy/tinyrenderer/wiki/Lesson-0:-getting...

If you are more of a visual learner, this guy is also a treasure trove:

https://www.youtube.com/watch?v=ih20l3pJoeU

Re: How do I become a graphics programmer?

#132
IMO the best way to start for a beginner is with Metal. It's a delightfully streamlined API that avoids the idiosyncratic complexity of DX and Vulkan, it's very quick to pick up if you already have some C++ experience, the tooling is excellent. Most importantly, you can focus on GPU programming instead of fighting the API and you get to play with all the fancy tools (mesh shading, ray tracing) with a very low barrier of entry. And all that you learn with Metal translates directly to other APIs.

Re: How do I become a graphics programmer?

#133
post #110

Earlier quoted context omitted.

I feel like better expertise targets tend to be more durable. In other words, rather than expert in a specific technology or technique, the best experts had the ability to develop expertise in any given technology within a space and often overlapped cursory knowledge with other spaces. I met plenty of graphics experts at Oculus and they didn’t care so much about whether it was D3D or Vulkan - originally they were D3D…

When people like Bjarne Stroustoup, Herb Suttter, Andrei Alexandrescu say they are by no means a C++ expert, always beware of anyone that says otherwise. Same applies to most languages, unless they are talking about toy languages. Even something like C or Go, have so much room to debunk such experts. Between compilers, versions, language evolution, runtime, standard library, OS specific behaviours,....

> When people like Bjarne Stroustoup, Herb Suttter, Andrei Alexandrescu say they are by no means a C++ expert,

Then you know something is deeply wrong with C++. If even they aren’t experts, that just means the language, despite being a human made artifact meant to encode human thought, is beyond human comprehension.

That’s kind of a problem, isn’t it?

Re: How do I become a graphics programmer?

#134

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…

Much like sorting algorithms I still think there is some value of teaching this kind of low-level programming in college. You gain a lot of theoretical knowledge as well as a lot of heavy complex algorithm training even if you never end up doing that kind of work in a real job.

With graphics it also gives you a lot of applied _math_ experience, there are a TON of fields that are desperate for people who can do math. Just my last job (software for CNC machines) we needed people who could do program the math necessary to program a drill to but a certain shape into a metal block and it was really hard to find these people. Yet, for example, cloud devops engineers, although expensive, were readily available

Re: How do I become a graphics programmer?

#135

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

My website/book/course does the same thing, and it's freeeeeee! https://www.gabrielgambetta.com/computer-graphics-from-scrat...

Re: How do I become a graphics programmer?

#136

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

There are a couple of excellent resources out there for implementing 3D rendering from scratch. On that I cannot recommend enough is this github repo: https://github.com/ssloy/tinyrenderer/wiki/Lesson-0:-getting... If you are more of a visual learner, this guy is also a treasure trove: https://www.youtube.com/watch?v=ih20l3pJoeU

Wow, that first link is fantastic, thanks for sharing!

Re: How do I become a graphics programmer?

#137
post #123

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 the classic trap that new developers step in all the time. It's not just associated with graphics programming. Youtube is full of beginner programming videos that take the developer through a journey of learning a stack of technologies in stead of focusing on something interesting to build. You end up with a lot of cargo-culting, and these massively complex Ruby Goldberg contraptions to render some text on a…

Tangent:

And if you then tell about the pattern/technique/architecture etc. to someone who’s been around for a while:

„Well, we already did that in the 80‘s, it was called Foobar. We just had to do it barefeet in the snow with our hands tied to the back.“

Re: How do I become a graphics programmer?

#138

I have the horrible feeling that, if you start to become a graphics programmer now, by the time you're done, AI will be doing it. If you want to make games, learn a game engine. The big 3D ones are Unity (not too hard), Unreal Engine (hard, used for AAA titles), and Bevy (in Rust, open source.) There are a ton of 2D engines, mostly used to do retro stuff.

AI will be doing graphics programming? Please elaborate, I have a very hard time understanding how current clunky models that cannot generatie a java class without "// here you fill in the implementation" everywhere would go about improving current PBR shader code for example

> AI will be doing graphics programming?

I doubt that. I think the bigger concern (if you could call it that) is that certain AI techniques may be able to replace entire stacks once they get advanced/stable enough. Something along the lines of this perhaps, where you render simplified geometry and let the AI fill in the blanks: https://www.youtube.com/watch?v=P1IcaBn3ej0

Even without experimental technologies, you can get a glimpse of how shipped tools like ray reconstruction can morph the field in the future, forever entrenching themselves into graphics programming one way or another.

As far as AI writing graphics code? No way, at least not in the next couple of decades. Button snippets are a far cry from rendering virtualized geometry 60 times a second.

Re: How do I become a graphics programmer?

#139
I really don't consider getting familiar with whatever minutia of C++/Vulkan throws at you graphics programming. It just presents unnecessary barrier that may change in the future without you learning any of the core skills that are purely algorithm and math based. When you learn a low-level API to talk to the GPU, or an antiquated horror-show of a language such as C++, you're not actually doing any graphics programming. Get into shaders (also compute) ASAP.

getting started:

https://www.khanacademy.org/computing/pixar (super basics)

https://iquilezles.org/articles/

https://www.shadertoy.com/

youtube/gamedev:

https://www.youtube.com/@Acerola_t

https://www.youtube.com/@crigz

research:

https://www.cs.cmu.edu/~kmcrane/

http://rgl.epfl.ch/people/wjakob

https://www.nvidia.com/en-us/research/

Re: How do I become a graphics programmer?

#140

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…

Listen to this guy, great advice. Early in my career, I set out to become an "OpenGL expert" and I'd say I mostly got there. I mean I'm no Mark Kilgard and haven't written any textbooks, but I dove super deep into the technology, and gained at least a decade of experience working on all levels of the API from the driver level to conformance tests and performance tuning, up the stack to game and application code, and…

I'll join the choir and say to not ever try to become an OpenGL expert. It's deep and kind of useless. First of all, if your application use OpenGL, either:

- you've unlimited resources for testing and vetting drivers, and you're working for huge CAO software that can tell users what to use.

- you don't have huge resources and then your only hope if to use an abstracted API like Skia, GDI, bgfx, IGL, WebGPU, anything other than using OpenGL directly.

It will just never work everywhere if you use OpenGL directly, and you won't be able to debug the driver or find all OS x drivers x GPU combination you need to debug it.

Your OpenGL-specific skills (avoiding driver bugs) will have very little value, but 3D-specific skills could. It's a waste of time that is only rivalled by learning C++. I would concentrate on abstracted API that avoid those driver bugs, or even learning a game engine to stay topdown.

Post reply on HN