Learn Computer Graphics From Scratch and for Free
Key topics
Diving into the world of computer graphics, enthusiasts are buzzing about a free online resource that promises to teach the subject from scratch. Commenters are sharing their personal journeys, with some recalling the classic "Foley & Van Dam" textbook, affectionately known as "the mouse book," while others are discovering newer, more accessible APIs like WebGPU and wgpu. A consensus emerges that traditional graphics learning can be daunting, with Vulkan being a particular stumbling block due to its verbosity, but alternatives like WebGPU are making it more approachable. As one commenter notes, understanding Vulkan's low-level GPU nature can help clarify its complexity, making it a valuable, if challenging, learning experience.
Snapshot generated from the HN discussion
Discussion Activity
Active discussionFirst comment
8h
Peak period
12
9-12h
Avg / period
3.9
Based on 39 loaded comments
Key moments
- 01Story posted
Dec 28, 2025 at 6:08 AM EST
5d ago
Step 01 - 02First comment
Dec 28, 2025 at 1:58 PM EST
8h after posting
Step 02 - 03Peak activity
12 comments in 9-12h
Hottest window of the conversation
Step 03 - 04Latest activity
Dec 30, 2025 at 7:29 AM EST
3d ago
Step 04
Generating AI Summary...
Analyzing up to 500 comments to identify key contributors and discussion patterns
Want the full context?
Jump to the original sources
Read the primary article or dive into the live Hacker News thread when you're ready.
Computer graphics needs more open education for sure. Traditional techniques are sealed in old books you have to go out of your way and find; Sergei Savchenko's "3D Graphics Programming Games and Beyond" is a good one. New techniques are often behind proprietary gates, with shallow papers and slides that only give a hint of how things may work. Graphics APIs, especially modern ones, make things more confusing than they need to be too. I think writing software rasterizers and ray tracers is a good starting point; forget GPUs exist.
Also, slight tangent, but there doesn't seem to be any contact method here other than Discord, which I find to be an immediate turn-off. Last time I checked, it required a phone number.
The donations page could use a link directly from the homepage too.
>Get Foley & Van Dam from the library
noting it should be available to check out, since I'd just checked it back in.
Several new editions since:
https://www.goodreads.com/book/show/5257044-computer-graphic...
https://www.goodreads.com/book/show/1933732.Fundamentals_of_...
I've been able to implement techniques based on such things without too much trouble. Also, Unreal is source available, although I haven't used its source to learn, and haven't checked the license for risks with doing so.
Outside of playing with OpenGL as a teenager to make a planet orbit around a sun, a bad space invaders clone in Flash where you shoot a bird pooping on you, a really crappy Breakout clone with Racket, and the occasional experiments with Vulkan and Metal, I never really have fulfilled the dream of being the next John Carmack or Tim Sweeney.
Every time I try and learn Vulkan I end up getting confused and annoyed about how much code I need to write and give up. I suspect it's because I don't really understand the fundamentals well enough, and as a result jumping into Vulkan I end up metaphorically "drinking from a firehose". I certainly hope this doesn't happen, but if I manage to become unemployed again maybe that could be a good excuse to finally buckle down and try and learn this.
https://webgpufundamentals.org
or
https://webgl2fundamentals.org
I'd choose webgpu over webgl2 as it more closely resembles current mondern graphics APIs like Metal, DirectX12, Vulkan.
The way I see it is that if you fail, at least some of the concepts and skills are transferable (GPU programming, probably C++ and some 3D math).
You see something like Blender, Zbrush, or Maya, and the sheer amount of engineering is amazing.
1) Implement 2D shapes and sprites with blits
With modern compute shaders, this has 95% of "How to use a GPU" while omitting 99% of the "Complicated 3D Graphics" that confuses everybody.
4 years ago I tackled exactly those courses (raytracer[0] first, then CPU rasterizer[1]) to learn the basics. And then, yes, I picked up a lib that's a thin wrapper around OpenGL (macroquad) and learned the basics of shaders.
So far this has been enough to build my prototype of a multiplayer Noita-like, with radiance-cascades-powered lighting. Still haven't learned Vulkan or WebGPU properly, though am now considering porting my game to the latter to get some modern niceties.
[0]: https://github.com/caspark/the-all-seeing-crab [1]: https://github.com/caspark/little-crab-tv
I've got inspired Zbrush and Maya, but I don't think I can learn what is necessary to build even a small clone of these gigantic pieces of software.
The performance of Zbrush is so insane that is mesmerizing. I don't think I can go deep into this while treading university.
Vulkan isn't meant for beginners. It's a lot more verbose even if you know the fundamentals. Modern OpenGL would be good enough. If you have to use Vulkan, maybe use one of the libraries built on top of it (I use SDL3 for example). You still have freedom doing whatever you want with shaders and leave most of resource management to those libraries.
[0] https://news.ycombinator.com/item?id=40622209
One Formula That Demystifies 3D Graphics
* https://github.com/codecrafters-io/build-your-own-x
It's quite unfortunate that basically everyone thinks 3D graphics necessarily implies rasterisation and using someone else's API, and I feel extremely lucky to have taught myself in a time when you could trivially display images by direct memory access (mode 13h), and to have focused on ray tracing instead of rasterisation.
https://www.gabrielgambetta.com/computer-graphics-from-scrat...