Live data from Hacker News

How do I become a graphics programmer?

gpuopen.com

21–30 of 207 posts

Re: How do I become a graphics programmer?

#22
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 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 more conducive to getting results quickly and efficiently.

Re: How do I become a graphics programmer?

#23

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 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 that one might move on to the next task.

Both disciplines have value. The original question was unclear about where the author hoped to end up.

To put this in a slightly different perspective, a graphics programmer can write a program to show a shaded object on any platform with a CPU and a way to display graphics. A graphics coder can write a program to show a shaded object only on those platforms where they have previously mastered the APIs for generating display graphics.

Re: How do I become a graphics programmer?

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

How does this sentiment align with the advent of WebGPU?

WebGPU is little more than a laboratory experiment right now. There are probably no industry implementations (game/graphics engine, visualisers, etc). Computer graphics is particularly industry-driven—consider the proportion of game devs who present at SIGGRAPH versus academics.

I give it at least a decade before WebGPU sees any meaningful market share.

Re: How do I become a graphics programmer?

#25

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.

It's what my graphics courses in my computer science degree did. The skills I learned have benefitted me long after (20 years), and I mostly "just" do web development.

Re: How do I become a graphics programmer?

#26
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?

[deleted]

Re: How do I become a graphics programmer?

#27
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?

IDK, all the games I try to run on Linux seem to work better in Windows/DX emulation rather than native/Vulkan.

Re: How do I become a graphics programmer?

#28

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.

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 new graphics developer.

Vertex processing, including fast, efficient file parsing, vertex data layout and storage, and optimisation.

Fast primitive assembly from vertices, including line-drawing and interpolation algorithms.

Texture mipmapping, and mapping.

The rasterisation phase itself offers tons of opportunity, from Bresenham's line drawing algorithm to supersampling, tiled rendering, parallelisation, and efficient memory layouts for cache locality.

Clipping, culling, hidden-surface removal, z-buffering, and stencil tests.

Various other algorithms that are taken for granted with a pre-existing graphics pipeline, like texture lookup, vector reflection, environment mapping.

Post-processing and miscellaneous algorithms like anisotropic filtering, multi-sample anti-aliasing, temporal anti-aliasing, and even deferred rendering.

Re: How do I become a graphics programmer?

#29

Earlier quoted context omitted.

How does this sentiment align with the advent of WebGPU?

WebGPU is little more than a laboratory experiment right now. There are probably no industry implementations (game/graphics engine, visualisers, etc). Computer graphics is particularly industry-driven—consider the proportion of game devs who present at SIGGRAPH versus academics. I give it at least a decade before WebGPU sees any meaningful market share.

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?

Re: How do I become a graphics programmer?

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

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 "native" to the platform, but vulkan seems to be supported very well on windows (many AAA game use it and it works great, many games run even better with vulkan abstraction than with their d3d12 counterpart). I use vukan so my graphics can run on windows and linux (which is why i chose vulkan instead of d3d12).

Post reply on HN