Remix.run Logo
brcmthrowaway 15 hours ago

What books does one read to get this level of graphics programming knowledge?

fsloth 12 hours ago | parent | next [-]

Graphics is not an academic body of knowledge as such. It's a bag of tricks developed over 50 years, going hand in hand with industrial hardware development.

There _is_ deep and rich academic framework around the subject, but I think to understand "why this" you need to program to understand the problem space since it's not really anything you could derive from first principles. I mean you get the rendering equation and so on, but the graphics knowledge portrayed in the article comes from understanding the three pillars of real time rendering.

It's about delicate interaction between human visual system (how to fool it), algorithms, and the hardware capabilities.

In general you need to program graphics, not read it. I mean I'm in the "reading" category myself and the people who've focused on programming are much better than myself.

Real time rendering by Akenine-Möller, Haines et all is the standard entry reference. Now in it's fourth edition. It's really good and dense.

If someone wants a simple recipe how to learn real time graphics alone in their cellar, nowadays I would recommend getting Real Time Rendering and going through https://learnopengl.com/.

After that you just continue... continue ... continue.

There are some people who understand everything about the topic instantly intuitively apparently but that's very, very unique. For the rest of us it's a life long adventure facing our own limitations and trying to get better, one program after another.

Speaking as graphics/geometry dev for 20 years now.

fhd2 13 hours ago | parent | prev [-]

As an amateur game programmer, I found nothing too advanced in there. A classic book series would be Game/Programming/GPU Gems, about as old as Max Payne. But frankly, you'd run into most of these concepts attempting to make a 3D game with Godot or something. That's the nice thing to take away from TFA in my opinion: They made a very nice looking game (for the time) with largely pretty simple techniques used cleverly.

sho_hn 12 hours ago | parent [-]

A lot of what is shown here comes down to the people in the art asset and level pipeline.

The real story to tell would be what tooling was used to pre-bake the lighing in the textures, e.g. if they used a seperate rendering package or mostly painted by hand, or in what mix.

Also what guidelines they used to make sure the baked-in reflections would match the use and environmental lighing of objects in the scene, e.g. just general constraints or how much customization there was for important unique arrangements. Is it done by the same person in a tight loop or did it involve hand-ofs, etc.

The excellence of the result is down to a lot of tasteful choices in how to blend these techniques, achieved either from experience or iteration.

As programmers we tend to focus a lot on the raw rendering techniques, but there's a whole systematic practice around art direction and how to achieve and maintain quality in it that feels I guess softer and less deterministic but is still worth talking at length about.

This especially struck me when the reviewer here recommended using multiple stacked texture planes and parallax mapping to improve things. I know a handful of games that have done this, and unless used exceedingly sparingly (e.g. mesh fence over pipes or something, where the foreground isn't expected to have a lot of depth) in my experience it very quickly gives away the illusion and looks very hokey. Humans are good at telling it's planes sliding over each other and doesn't correspond to their experience with depth perception. It also makes a scene a lot busier as the camera is moved, firing "something is changing here!" perceptual sinals all over the screen (note how all the lavish particle effects are about feedback instead), and is not the atmosphere Max Payne was trying to achieve.

In other words, sometimes it's about knowing what possible thing not to do, too. And a lot of magic happens when disciplines meet.

gary_0 11 hours ago | parent [-]

> e.g. if they used a seperate rendering package or mostly painted by hand

IIRC Max Payne was one of the earlier games to rely heavily on photo-reference textures (instead of hand drawing or computer generating them). Keep in mind that in 2001 digital cameras were rare, expensive, and low-res, so people often just used film cameras and scanned in the physical photo with a flatbed scanner. Max Payne was far from the first, though; even 1998's Half-Life used some photo-ref textures.

The lighting in Max Payne's textures was probably mostly just the lighting from the original photo. Every texture had to be hand-manipulated to make it usable on 3D models, so changing the lighting would have added even more work and would have looked less realistic.