Live data from Hacker News

How do I become a graphics programmer?

gpuopen.com

41–50 of 207 posts

Re: How do I become a graphics programmer?

#41

Earlier quoted context omitted.

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.

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, is very deeply tied to a good understanding of hardware. Especially now that the new APIs (Vulkan, Metal, D3D12) are purposely less abstracted than their predecessors.

Re: How do I become a graphics programmer?

#42

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

Being a graphics programmer is a pretty well defined category of programmers. A lot of the things you mentioned aren't graphics programming like Rig, Texture or Model, and a graphics programmer is expected to be able to run the gamut of games, 3D, 2D, tools, shaders and optimization.

Re: How do I become a graphics programmer?

#43
post #30

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…

Maybe i am wrong, but this tweet and wikipedia directly contradicts what you say (id tech does indeed use vulkan on windows): https://twitter.com/billykhan/status/1028133659168186368 I am just doing game dev on the side but i think nowadays the graphics abstractions are fairly similar in how they work (the modern abstractions, i.e. Metal, D3D12, Vulkan). Of course ideally you choose the graphics abstraction that is "…

[deleted]

Re: How do I become a graphics programmer?

#44

Earlier quoted context omitted.

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…

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

Re: How do I become a graphics programmer?

#45

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

I find this very interesting. I have been toying around how I would design a graphics 101 course myself. Should it start with putpixel style sdl code like we did in the 90s? Or start with shadertoy? Of course basic matrix math is always important. But how to teach rasterizing a triangle? Can we skip to homogenous coordinates and quad trees without going through scan lines? Should we really teach Phong shading or can we move straight to BRDFs? Some parts might be teaching "old hacks" instead of relevant skills. Statistics and sampling are way more important today. I believe graphics is getting more "mathy" every year. So learn math, teach math.

Re: How do I become a graphics programmer?

#47
post #30

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…

Maybe i am wrong, but this tweet and wikipedia directly contradicts what you say (id tech does indeed use vulkan on windows): https://twitter.com/billykhan/status/1028133659168186368 I am just doing game dev on the side but i think nowadays the graphics abstractions are fairly similar in how they work (the modern abstractions, i.e. Metal, D3D12, Vulkan). Of course ideally you choose the graphics abstraction that is "…

You are correct that idTech targets Vulkan (and they have some great GDC talks to boot)

They are however very much the minority.

I am suspect of your claim about Vulkan abstraction layers running better than DX12. If there is a performance difference, it’s likely elsewhere in the stack and just tangentially related.

Re: How do I become a graphics programmer?

#48

Earlier quoted context omitted.

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.

Hate to break it to you, but all definitions are made up. The question is whether or not the distinction is useful or not. In my opinion, it seems useful to distinguish between understanding oriented tasks and goal oriented tasks.

Re: How do I become a graphics programmer?

#49
post #9

Earlier quoted context omitted.

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

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-releases-vu... https://docs.unrealengine.com/5.3/en-US/supported-features-b...

Re: How do I become a graphics programmer?

#50

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…

Good comment, and, basically, I fully agree, except, I really dislike your attempt to appropriate the words "programming" and "coding" here. Like, can you just explain what you mean without trying to redefine terms that have broadly accepted definitions distinct from how you're trying to use them here?

(Sorry, this probably sounds more critical than I'm intending...)

Post reply on HN