It’s time to break it down. I’m not talking beats on the corner street. It’s time to dither and refract, reflect on some planar maps.
It’s the most nerdy, technical analysis of GTA 5 you’ll see around and it’s all thanks to a Tokyo-based software engineer called Adrian Courreges. He’s previously studied the post-processing, effects and visual accomplishments of games before, and now he’s turned his trained eye to Los Santos.
Courreges has dissected GTA 5’s graphics on PC in three major ways: reflections and the level of detail, the post-processing effects and the nitty gritty that goes into a single shot, which includes talking about cubemaps, compute shaders, G-buffers, lens flares, depth of field, a variety of maps (diffuse, specular and irradiance for instance), shadows, planar reflections, ambient occlusion, subsurface scattering and many, many words that are going straight over my head.
The shading of Michael’s skin is a bit off: there are very dark areas on his face, like if his body was made of thick plastic instead of flesh.
This is why a pass of SSS is performed, simulating the transport of light within the skin. Look at his ears or his lips: after the SSS pass the light is now bleeding through them, giving a red tint which is exactly what you would expect to happen in the real world.
How was the SSS applied to Michael only? First only his silhouette is extracted. This is possible thanks to the stencil buffer generated before: all of Michael’s pixels have a value of 0x89. So we can get Michael’s pixels, great, but we want to apply the SSS only to the skin, not to the clothes.
Actually, when all the G-Buffers were combined, in addition to the shading data stored in the RGB, some data was being written to the alpha channel too. More precisely, the irradiance map and the specular map alpha channels were used to create a binary mask: the pixels belonging to Michael’s skins and to some plants are set to 1 in the alpha channel. Other pixels like the clothes have an alpha of 0.
Catch all that?
It’s an incredible breakdown of everything that goes into a modern graphics engine. If you can stomach the jargon, I’d highly suggest you give it a thorough going over. Courreges’ breakdown of Supreme Commander is pretty good as well, and it might be worth a read if you’re a budding indie dev or programmer.