Challenges of Subsurface Scattering in glTF
Subsurface scattering (SSS) is an essential optical phenomenon for rendering realistic translucent materials like skin, wax, jade, and marble, yet it remains difficult to represent within standardized glTF. This article examines the core technical hurdles preventing SSS from becoming a standardized glTF extension, including divergent real-time rendering algorithms, high computational costs, material parameterization conflicts, and the fundamental glTF requirement for predictable cross-platform consistency.
Non-Local Light Transport Versus Real-Time Performance
glTF was created as an efficient, runtime-ready transmission format—often called the "JPEG of 3D." Its core Physically Based Rendering (PBR) model relies on local reflection models (BRDFs), where the light hitting a single point on a surface is reflected from that exact same point.
Subsurface scattering, by contrast, requires a Bidirectional Scattering-Surface Reflectance Distribution Function (BSSRDF). Light enters the material at one point, bounces internally through a medium, and exits at a different point. Calculating this non-local transport requires evaluating spatial relationships across surfaces or volumes. In offline rendering, this is solved with computationally heavy path tracing, but glTF targets real-time web engines, mobile devices, and low-power hardware that cannot afford full volumetric simulation.
Lack of a Unified Real-Time Algorithm
Standardizing a feature in glTF requires that diverse runtime engines (such as Three.js, Babylon.js, Unreal Engine, and Unity) can implement the feature with visual consistency. For SSS, no single real-time technique dominates the industry:
- Screen-Space Subsurface Scattering (SSSS): Blurs lighting information in post-processing across screen pixels based on depth buffers. It is efficient but suffers from edge artifacts and cannot calculate light entering from behind an object.
- Pre-Integrated Skin Shading: Uses look-up textures parameterized by surface curvature. It works well for humanoid faces but fails on complex geometries or thin structures.
- Texture-Space Diffusion: Bakes lighting into UV space and applies a blur kernel. This avoids screen-space artifacts but requires unique UV unwrapping and increases memory usage.
- Ray-Marched Volumetrics: Produces the most accurate results for translucent objects but is too demanding for real-time mobile and WebGL applications.
Because each runtime relies on different rendering architectures, defining a single standardized workflow that looks identical across all viewers is currently unattainable.
Parameterization Difficulties
A standardized material model requires an intuitive and mathematically sound set of parameters. Physical parameters—such as the scattering coefficient, absorption coefficient, phase function, and mean free path—are accurate for scientific rendering, but they are difficult for real-time rasterizers to interpret efficiently.
Conversely, artist-friendly parameters (such as scatter color, radius, and thickness maps) are heavily tied to specific shader implementations. If two different engines interpret these simplified parameters using different underlying math, the model will look radically different depending on where it is loaded. This visual disparity contradicts the Khronos Group's primary objective for glTF: guaranteed visual parity across platforms.
Limitations of Current Workarounds
The Khronos Group has introduced extensions such as
KHR_materials_transmission and
KHR_materials_volume. These extensions allow for realistic
glass, liquids, and rough plastics by modeling surface refraction and
volumetric absorption (Beer-Lambert law). However, absorption merely
attenuates light as it travels along a direct path; it does not model
the multi-directional internal scattering that gives materials like milk
or human skin their soft, diffused appearance.
Until the 3D graphics community converges on a hardware-agnostic, low-overhead approximation for BSSRDF evaluation that works reliably across WebGL, WebGPU, and native APIs, subsurface scattering will remain an elusive target for the core glTF standard.