6 ms·
Learn computer graphics from scratch and for free
- yunnpp 9mo agoThe website has come a long way, a good reminder for Santa to drop a donation. 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.
- WillAdams 9mo agoI can still remember a fellow student wanting to know how to write a 3D computer game, the professor being stumped, and my chiming in w/ >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-graphics https://www.goodreads.com/book/show/5257044-computer-graphic...
- yunnpp 9mo agoYeah, that's "the mouse book" in my mind. The tiger book is also a very good compilation of topics, though it leaves things as "exercise for the reader" more often than I would like to. https://www.goodreads.com/book/show/1933732.Fundamentals_of_Computer_Graphics https://www.goodreads.com/book/show/1933732.Fundamentals_of_...
- WillAdams 9mo agoI really miss the days when folks referred to books by cover descriptor --- I still have my copies of the Red/Green/Purple/Black books for PostScript.....
- john01dav 9mo ago> New techniques are often behind proprietary gates, with shallow papers and slides that only give a hint of how things may work. 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.
- tombert 9mo agoGraphics have been a blind spot for me for pretty much my entire career. I more or less failed upward into where I am now (which ended up being a lot of data and distributed stuff). I do enjoy doing what I do and I think I'm reasonably good at it so it's hardly a "bad" thing, but I (like I think a lot of people here) got into programming because I wanted to make games. 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.
- socalgal2 9mo agoTry WebGL or better, WebGPU. It's so much easier and all the concepts you learn are applicable to other APIs. https://webgpufundamentals.org https://webgpufundamentals.org or https://webgl2fundamentals.org https://webgl2fundamentals.org I'd choose webgpu over webgl2 as it more closely resembles current mondern graphics APIs like Metal, DirectX12, Vulkan.
- tombert 9mo agoYeah you're not the first one to mention that to me. I'll probably try WebGPU or wgpu next time I decide to learn graphics. I'd probably have more fun with it than Vulkan.
- gattr 9mo agoI concur; just last month I started with `wgpu` (the Rust bindings for WebGPU) after exclusively using OpenGL (since 2000, I think? via Delphi 2). Feels a bit verbose at first (with all the pipelines/bindings setup), but once you have your first working example, it's smooth sailing from there. I kind of liked (discontinued) `glium`, but this is better.
- suioir 9mo agoI really enjoy the website content and appreciate the hard work to create it. Also, thank you to the author for taking action on the HN feedback last year about the AI thumbnails that used to be all over this site. [0] [0] https://news.ycombinator.com/item?id=40622209 https://news.ycombinator.com/item?id=40622209
- RodgerTheGreat 9mo agoThere's still an obnoxious slop image front-and-center, full of nonsense typos. Not a good look for any educational resource.
- theusus 9mo agoThis material is best one you can find out there. You can always report typos.
- suprjami 9mo agoOne of my goals this year is to write a basic software 3D renderer from first principles. No game engine, no GPU. I'm looking forward to it.
- listic 9mo agobuild-your-own-x*, a popular compilation of "well-written, step-by-step guides for re-creating our favorite technologies from scratch", contains some. * https://github.com/codecrafters-io/build-your-own-x https://github.com/codecrafters-io/build-your-own-x
- delta_p_delta_x 9mo agoHere you go: https://haqr.eu/tinyrenderer/ https://haqr.eu/tinyrenderer/
- ggambetta 9mo agoOP's link is a good one, but if you want a different perspective (heh), there's https://gabrielgambetta.com/computer-graphics-from-scratch/index.html https://gabrielgambetta.com/computer-graphics-from-scratch/i..., also from scratch, also for free. The name clash is unfortunate, I don't really know who started using it earlier :(
- rabf 9mo agohttps://www.youtube.com/watch?v=qjWkNZ0SXfo https://www.youtube.com/watch?v=qjWkNZ0SXfo One Formula That Demystifies 3D Graphics
- atan2 9mo agothis is such a a nice video. but honestly understanding perspective divide intuitively is probably less than 1% of what 3d rendering is all about.
- pixelpoet 9mo agoGood show, this is how I recommend doing it and have been teaching it for years. 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.
- neuroelectron 9mo agoJust in case NVidia stops having a monopoly of graphics APIs, and Google on the web, and AMD as the alternative that sucks and isn't maintained.
- random9749832 9mo agoYou can now post a link of a website into an LLM and turn it into an interactive resource. I did this but with a 1000 page PDF today to help me learn more about game engines. Best way to do it if you don't want it to become another PDF / bookmark that is forgotten.
- flumpcakes 9mo agoWhich LLMs have a context window big enough to fit a 1000 page PDF?
- random9749832 9mo agohttps://gemini.google/overview/long-context/ https://gemini.google/overview/long-context/
- flumpcakes 9mo agoCan you give an example of how this has helped you with graphics/gamedev? What kind of questions are you asking gemini when giving it a 1000 page book?
- robaye 9mo agoI maintain (not much anymore) a list of free resources for graphics programming that some of you might find helpful. https://gist.github.com/notnotrobby/ceef71527b4f15869133ba7b397912e9 https://gist.github.com/notnotrobby/ceef71527b4f15869133ba7b...
- reactordev 9mo agoThis is gold people. My username on here is after my (now older) game engine Reactor 3D. I taught myself this stuff back when Quake 3 took over my high school. Doom got me into computers but Quake 3 got me into 3D. I didn’t quite understand the math in the books I bought but copied the code anyway. Fast forward into my career and it’s been a pleasant blend of web and graphics. Now that WebGL/WebGPU is widely available. I taught PhD’s how to vertex pack and align and how to send structs to the GPU at my day job. I regret not continuing my studies and getting a PhD but I ended up writing Reactor 3D part time for XNA on Xbox 360 and then rewriting it half a decade later to be pure OpenGL. I still struggle with the advanced concepts but luckily there are others out there. Fun fact, I worked with the guy who wrote XNA Silverlight, which would eventually be used as the basis for MonoGame, so I’m like MonoGame’s great grand uncle half removed or something. However, Now that we have different ways of doing things, it demands a different kind of engine. So the Vulkan/Dx12/Metal way is the new jam.
- slu 9mo agoThis looks great, will have to check it out. I've always been interested in computer graphics, I even wrote a ray tracer when studying for my master. It was based on the, then, brand new book "An Introduction to Ray Tracing" by Andrew S. Glassner et al. The book is now free to download: https://www.realtimerendering.com/blog/an-introduction-to-ray-tracing-is-now-free-for-download/ https://www.realtimerendering.com/blog/an-introduction-to-ra...
- pipes 9mo agoIs this in anyway related to this: https://www.gabrielgambetta.com/computer-graphics-from-scratch/ https://www.gabrielgambetta.com/computer-graphics-from-scrat...