Live data from Hacker News

How do I become a graphics programmer?

gpuopen.com

161–170 of 207 posts

Re: How do I become a graphics programmer?

#161
post #22

Earlier quoted context omitted.

I’m not the person you asked but my 2c (since I agree with their point on Vulkan) Very few video games are made with Vulkan. DirectX is the primary API. Android is the only place where Vulkan really has an interesting market share. For a beginner, it has an incredibly steep learning curve vs DirectX as well. So given the low usage and high friction to pick it up, you have a really poor ROI. DirectX and Metal are much…

> For a beginner, it has an incredibly steep learning curve vs DirectX as well. That's only because you refer to DirectX as a whole which includes plenty of older and APIs. If you want to start with those you can just as well start with OpenGL. if you want to jump straight into D3D 12 then that's not much differrent from Vulkan.

The topic was why not Vulkan for a beginner, and D3D12 is a lot less work than Vulkan to get the same results.

And I’d still recommend D3D11 over OpenGL for a beginner unless they really need multi platform. There are better resources, and less setup work up front.

Honestly though, if I was recommending any graphics api to start, it would be Metal. It has the best mix of ease of use to modern low overhead api.

Re: How do I become a graphics programmer?

#162
post #158
post #111

Earlier quoted context omitted.

First learn the foundations, then the language. When I started, graphics programming was all about Assembly. Then it was about Object Pascal and C, then it was about C++, now it also requires C#. And who knows, maybe in 20 years, one of the C++ wannabe replacements manages to also have a spot, or some AI driven thingie. Those will solid foundations in graphics programming algorithms, will manage regardless of the lan…

> now it also requires C#. For Unity games? What else? Just curious. I’ve been doing graphics programming for decades, and C# has never been part of it, and still isn’t on my radar.

Yes, plenty of Unity shops, and most of the companies doing VR/AR are using Unity.

Not only Unity, Capcom has their own C# toolchain.

One example of a Capcom game that makes use of it is Devil May Cry for PlayStation 5.

Unreal build system is based in C#, although here is a minor role, and naturally debatable.

Re: How do I become a graphics programmer?

#163
post #144

Earlier quoted context omitted.

While it is kind of fun bashing C++, I also noted "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,...." . Anyone that thinks otherwise, we can arrange a pub Quizz in Germany, I get the questions, audience has to give up any kind of device with Internet connection.

Many times when someone says "X-lang", they actually mean the entire ecosystem, practices, third party libraries… And for anything popular enough it is indeed impossible to be an expert in all of that. With C++ that’s still the case even if "C++" only means the language itself. I’ll concede that C with the insane breadth and (over)reach of UB, is closer to C++ than I would like. And that’s a problem too. I don’t know…

We can start with level 1 questions, "name which version where this feature came to be".

Re: How do I become a graphics programmer?

#164

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…

Well, as someone looking to get into this field, I kind of disagree. A lot (if not all) job postings about graphics programming require you to know C++ beforehand. Sure, you can have another role, like gameplay programmer, and slowly work your way in graphics, and it's probably easier to do so, but in fine, for the graphics programmer role, C++ is required. What you are describing is more about someone who wants to b…

> but it’s not graphics programming.

As someone who’s been in the field for a long time, I kind of disagree. Game engine jobs don’t define the boundaries of what “graphics programming” means. That is a very narrow and specific kind of graphics programming, and there’s lots more graphics programming than just games. I’d probably even recommend people wanting to do games graphics programming to start outside of games, because the engine consolidation with Unity and Unreal has brought with it an overall reduction in the number of people doing graphics programming for games. There’s indie games and a few studios that still do their own engines, but there are a bunch of other industries that hire graphics, for film and effects, for 3d tools, for visualization, for mobile/web/desktop applications, for science & research, for VR/AR, for industrial applications, etc., etc.

Being fluent in C++ can only help you, so do work on that. Games engines need more and more people who can do ray tracing and neural nets, and some of the old guard of raster API experts didn’t learn as much about those things, so that is one angle of attack for getting in. Another is to be very fluent in the math of graphics, and you can learn and practice that in any language, and find non-games jobs that will pay for it. Math experts are generally more valuable and hard to find than API experts.

FWIW, my path was graphics in school, undergrad + MS, then scientific visualization for a university, then C programming for a CG movie studio, then I was hired to do games engine graphics programming (precisely what you’re talking about) and I moved into a tools generalist and gameplay lead role instead (which was more fun than wrangling shader compilation), then I went to a web app company and did 2d graphics while learning JavaScript & WebGL, then started my own web app company using javascript & WebGL, and then switched to doing CUDA and ray tracing with OptiX. Along the way, lots of fun graphics projects in Python. All of this involved real “graphics programming”, and almost all of it is outside the boundary line you drew. I say this not for argument’s sake, but to ideally give you more hope, and to help you & others see there’s a wider range of options to get into game graphics than ‘learn C++ & DX’.

Re: How do I become a graphics programmer?

#165
post #163

Earlier quoted context omitted.

Many times when someone says "X-lang", they actually mean the entire ecosystem, practices, third party libraries… And for anything popular enough it is indeed impossible to be an expert in all of that. With C++ that’s still the case even if "C++" only means the language itself. I’ll concede that C with the insane breadth and (over)reach of UB, is closer to C++ than I would like. And that’s a problem too. I don’t know…

We can start with level 1 questions, "name which version where this feature came to be".

Okay, you could… and if you’re honest enough to accept answers like "it’s over 20 years old" I guess any expert could answer that. My main point remains though: if even Stroustrup or Stutter can’t answer 95%+ questions of this kind, it would show beyond a doubt that C++’s complexity got completely out of hand.

Even Stroustrup’s humble bragging about being a "7" at C++ looks real bad. If I’m not a 10 at a language I created and maintained my whole life, I’ve birthed a monster.

Re: How do I become a graphics programmer?

#166
post #110

Earlier quoted context omitted.

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

I get the overall point, but this humility makes it difficult to use some kind of grading/levels. Take e.g. MS Office as an example of a large C++ project. Certainly, there are developers with just "average" knowledge of C++ working there. Then there are people having strong/advanced C++ knowledge. But in a project like MS Office there are certainly devs who are still much stronger in the language, best in the projec…

Humility regarding on how much one actually knows, is a common trait in senior developers.

So when one sells themselves as über expert, that is already a kind of red flag.

Re: How do I become a graphics programmer?

#167

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

Do you know how one can get a job as a graphics developer if they know most of these? I do Graphics programming as a hobby, and I learned a lot of what you mentioned here. But since I don't have any job experience, I never really get any interviews.

Re: How do I become a graphics programmer?

#168
post #163

Earlier quoted context omitted.

We can start with level 1 questions, "name which version where this feature came to be".

Okay, you could… and if you’re honest enough to accept answers like "it’s over 20 years old" I guess any expert could answer that. My main point remains though: if even Stroustrup or Stutter can’t answer 95%+ questions of this kind, it would show beyond a doubt that C++’s complexity got completely out of hand. Even Stroustrup’s humble bragging about being a "7" at C++ looks real bad. If I’m not a 10 at a language I c…

My example question was actually in regards to Go, made public in 2009, with 14 years of history.

The bonus round of the same question would be, "name one feature that was removed before 1.0".

We could make this question even more fun, if taking into account gccgo specific extensions, or runtime changes as well.

To put it bluntly, if someone shows up calling themselves an expert, I expect World Cup skills towards the language they are an expert on, across all levels.

Re: How do I become a graphics programmer?

#169

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…

>It's a career-limiting niche.

This depends on your career aspiration. There are not as many companies hiring graphics programmers as there are shops who need "front end" or whatever they call scripting web pages nowadays but the barrier to entry is rather high so there are plenty of jobs in every FAANG plus Microsoft, Tesla, self-driving shops (I even have been approached by self-flying robots startups couple of times), training (from military to oil rigs), of course, the every game studio (which may or may not pay little and force you to work overtime, I am pretty sure a graphics programmer at, say, Roblox has better compensation and working condition than a front-end developer at Amazon, for example), and yes, the 5 or 6 companies that need drivers (Apple, NVidia, AMD, Qualcomm, Samsung, ARM, Intel, etc).

Re: How do I become a graphics programmer?

#170

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

Do you know how one can get a job as a graphics developer if they know most of these? I do Graphics programming as a hobby, and I learned a lot of what you mentioned here. But since I don't have any job experience, I never really get any interviews.

Always hard to get a foot in the door into a new role when one doesn't have direct company experience in the role on a resume.

The best thing I can think of would be to work on some independent projects (eg. some mod of a game, some indie game or graphics related app itself) and have that work be part of a portfolio.

The other approach that I've seen work is to get into a games company as it is significantly expanding and make it known that you want to do rendering work in the future. At an old company I was at a Gameplay Programmer pivoted to being a Graphics Programmer as the graphics team needed more help and was expanding, and I see via linked in that he's continued in that path.

Post reply on HN