Live data from Hacker News

How do I become a graphics programmer?

gpuopen.com

11–20 of 207 posts

Re: How do I become a graphics programmer?

#11
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 low level code up-front and then later realize that the niche field in the wide array of industries that utilize graphics programming that you want to pursue actually only hires people who use Unity, TouchDesigner, threejs, and after effects and don't actually write a lick of C++ unless push comes to shove, and even then they might just contract an outside engineer for it.

Not to say that learning how things work on the ground level isn't immeasureably valuable, but I think trying to do that first is the slow approach. Learning is accelerated when 1) you enter the industry (so you should prioritize output up-front and let the deeper learning happen when you're earning a paycheck for it) and 2) you get a better conceptual understanding of what's happening under the hood offered by tools of abstraction like a game engine or visual programming paradigm.

This comes from someone who spent many years trying to learn cpp and opengl the hard way only to endure a long battle against an internal sunk cost fallacy I've harbored that kept me from taking the no-code approach. Don't waste your time taking this path if it doesn't help you make what you actually want to be making at the end of the day.

Re: How do I become a graphics programmer?

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

Re: How do I become a graphics programmer?

#13

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.

Re: How do I become a graphics programmer?

#15

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.

I disagree. It's good to understand what the GPU is doing at scale before jumping in too deep. It's obviously not how you do your day-to-day work, but it helps you understand what's going on at a deeper level.

Re: How do I become a graphics programmer?

#16

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.

Believe it or not, we were doing graphics without any of those things a very long time ago. Learning fundamentals is really important. You can always learn easier ways to do things later.

For example, area fill algorithms are really interesting. Etc.

Re: How do I become a graphics programmer?

#17
post #4

Ah, the AMD Game Engineering team, the same fine folks who implemented driver-level "optimizations" for Counter Strike that resulted in thousands of players getting permanently VAC banned.

The vac bans got reversed.

I fail to see how that excuses sloppy engineering.

Re: How do I become a graphics programmer?

#18
I'm on that journey myself. Two years ago I followed several tutorials and youtube videos to create my first 3D engine. It's very simple, but I like simple stuff. Right now I'm working on using this engine to create a city builder game [1]. It is a lot of fun to learn to manipulate stuff using matrix and cross products.

1 - https://www.youtube.com/watch?v=cvyrfPUpyp0

Re: How do I become a graphics programmer?

#19
post #7
post #3

This isn't hard: DirectX 12 and C++ and Visual Studio (not VSCode) and Windows on an NVIDIA card. Vulkan basically isn't relevant anymore unless you are doing Android. Metal similarly unless you are doing iOS. As a Linux user, this pains me. But it's just life. Windows-land is soooo much better for graphics programming that it's absurd.

Why is this the case?

Because the amount of resources that Microsoft and NVIDIA pour at graphics programming dwarfs the amount of resources that everybody else combined seems willing to put into it.

The implementations are better. The support is better. The ecosystem is better. The debugging tools are better.

Re: How do I become a graphics programmer?

#20
post #9
post #3

This isn't hard: DirectX 12 and C++ and Visual Studio (not VSCode) and Windows on an NVIDIA card. Vulkan basically isn't relevant anymore unless you are doing Android. Metal similarly unless you are doing iOS. As a Linux user, this pains me. But it's just life. Windows-land is soooo much better for graphics programming that it's absurd.

> Vulkan basically isn't relevant anymore unless you are doing Android. Why do you say this?

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 Tech, Frostbite, Slipspace, REDEngine, Source) target D3D exclusively. Vulkan is clearly a second-class citizen on Windows. Some engines target OpenGL, and they tend to be used in (hurriedly dashed-out) console ports, but in almost all cases they exhibit worse performance than their D3D competitors.

Vulkan is completely absent from MacOS and iOS, where Apple has pushed its own API, Metal. OpenGL on MacOS is deprecated and is stuck on 4.1, missing all the advancements in 4.6, which include mesh shader support.

Many Android games are likely still running GLES. Vulkan is pretty hard to get started with, because things that are implicitly handled by the OpenGL global state machine now have to be explicitly handled by the developer, and chances are the developers of the millions of throw-away microtransaction-laden game apps on Android aren't writing their own rendering engines in Vulkan.

Therefore, despite all the positives of Vulkan—open-source specification, cross-platform support, SPIR-V shader target allowing shaders to be written in any language (HLSL, GLSL, other esoteric languages that compile to SPIR-V), an extension mechanism allowing fast iteration and updates—it has a fairly uphill battle.

EDIT: I was incorrect, id Tech supports Vulkan exclusively. But it is a minority in a sea of D3D-first engines.

Post reply on HN