Subsurface scattering is a term referring to the scattering and distribution of light through the (sub-) surface of objects – most commonly, that's skin. In the real world, skin is not perfectly opaque and part of each person's skin color is created through light interactions beneath the surface level. Light refracts and bounces through cells, blood vessels, veins, and parts of the body where skin is generally thinner – like ear lobes or hands. Here's an example you can conduct: Take a flashlight (or phone app) and shine it immediately under your hand. Look at the top of that hand – you should see a slight red underglow. This would be an example of subsurface scattering – light is scattering pursuant to the blood under the skin, and it's primarily obfuscated in areas of higher density (bone).
To recreate this in real-time is taxing on the GPU, but isolating sub-surface scattering to screen space assists in resource consumption. By only rendering this light approximation where it can be seen by the user (not globally, but just what's in the camera frustum), the impact of SSS is minimized without entirely axing the effect.
The advancement of game graphics in the department of “more triangles is more better” has helped tremendously with realism of models, but now we're at a stage where smaller FX – like lighting, hair, and eyes – can make or break realism. SSS sounds like such a tiny aspect of the greater picture, but that's where the industry has to focus to further game graphics.
Epic uses its Unreal Engine for control of SSS parameters. A scatter radius slider changes the distance (in centimeters) that light will proliferate through a material. Increasing the radius will create more of an unrealistic “glow” about the character, almost similar in appearance to over-exposure, and less will make for greater opacity and darker surfaces. The subsurface color is also controllable, as is overall skin tone and color; demonstrated when Parrish created a Shrek-like skin tone. The skin tweaking showed that sub-surface scattering can be tuned within Unreal to create unique tone combinations with unique lighting effects.
The sub-surface profile is the basis of sub-surface scattering within UE. Parrish explained that “light enters the surface and refracts within the surface particles,” providing examples like cells and blood vessels. “Falloff color” is another UE parameter for SSS, which offers “a channel-by-channel of how quickly the subsurface color will fade to any other color.”
Epic has made optimizations to the sub-surface algorithm for its implementation in Paragon, which is meant to be played as a “60Hz game.”
Hair Effects in UE4
Unreal Engine 4 uses a deferred renderer, so all material information is gathered and compiled prior to the application of lighting or other FX. As it pertains to lighting, hair rendering presents interesting resource limitations that confine game graphics to fewer bounces than might be found in movies.
Epic uses a physically-based material system (read about PBR here), so roughness defines characteristics of “shininess” that are visible in specular highlights. Setting the hair to fully smooth makes it appear to have a “mineral oil bath” look – as Parrish put it – and almost looks slimy. Going for a rougher surface diminishes the distance that scattered light travels and looks more realistic for this particular character. Light enters hair strands and refracts at the follicle level, then eventually exits. Upon exiting, the beam of light is colored slightly to match the color of hair it just occupied. Light scatters further in lighter hair than darker hair in the real-world, and this is reflected in Epic Games' Paragon.
Ricocheting light is presently limited to one follicle for most games, but in rendered (non-real-time) CG, it's possible to draw multiple light bounces between hair strands and follicles.
Speaking of more cinematic visuals, Epic has a cinematic model for Sparrow that's only marginally different from the real-time model. A few “flyaway” hairs are present on the head for the cinematic version, giving some extra scruffiness, but these are eliminated in-game as they become imperceptible at distance.
Check back for more content on ECGC in the immediate future. We're working on publishing an interview with Warren Spector, known for work on Deus Ex, System Shock, Ultima, and Wing Commander.
Editorial: Steve “Lelldorianx” Burke
Video Production: Andrew “ColossalCake” Coleman