The Evolving Khronos glTF PBR Material
By Ben Houston, 2022-10-25
What are PBR Materials?
There currently isn’t a single authoritative physically-based rendering (PBR) material definition but rather a set of similar uber material specifications oriented around:
- Reduced complexity: Artist friendly, intuitive parameters.
- Intuitive & Simple: Easy to master.
- Expressive: Covering as many material types as possible.
- Robust: Most outputs are physically plausible results.
It was formally introduced by Brent Burley of Disney in 2012 for Wreck it Ralph and then later improved in 2015 with the addition of subsurface parameters for Big Hero 6. In contrast to what came before, Disney’s PBR generally had:
- A single Uber Material instead of a Layered BSDFs (similar in spirit to alSurface)
- Roughness, Metallic instead of Shininess and Specular.
- Clearcoat as a user-friendly term for a secondary Specular Lobe.
- Sheen as a user-friendly term to express retroflection/backscatter.
This led to quick adoption, especially in the game industry. During 2013-2014 it was adopted by the real-time community including Unreal Engine (via Brain Karis), the DICE’s Frostbite Engine (via Sebastien Legarde, et al) and Killzone (via Michel Drobot.)
Specification Gap
But a major gap was the lack of a formal industry wide PBR specification, rather than just conventions. Burley was a great start but he isn’t maintaining a living specification. Many things in the original Burley are already considered to be obsolete, such as his Sheen method.
Most file formats for converting between tools only have limited support at best, as they are not prescriptive, but rather just have some slots named after the PBR parameters. There is a bit of support in the FBX format via the poorly specified Stingray PBR material. And there is an extension to OBJ/MTL that has seen some adoption. USD has the Preview Surface which supports 5 PBR parameters.
Even more recently, to deal with this lack of standards, many major companies, including Dassault System, Autodesk and Adobe have released competing specifications of their implementations of PBR in their tools sets.
glTF’s PBR Initiative
glTF, with the 2017 launch of its 2.0 version, adopted PBR with roughness & metallic parameters replacing shininess & specular. It quickly became apparent this wasn’t enough for rich material experiences but adding the other parameters was not a straightforward process.
In response, glTF launched the PBR initiative:
- A dedicated working group.
- Standardize a full PBR uber material specification.
- Incrementalist approach, splitting the problem into multiple bit-sized specifications.
- No novel research, but rather consolidate on industry best practices.
- Open fidelity testing to ensure correct implementation.
- Encourage adoption through evangelism.
- Targeting both real-time and path tracing reproduction of effects.
Fundamentally the PBR specification could even be independent of the glTF format.
The goal wasn't just a rough conversion, "hey we got the maps and the parameters across", instead glTF wants to enable a perfect visual conversion. Otherwise you need to manually touch it up everywhere to deal with the differing assumptions and quirks of each system. This also ties heavily into the 3D Commerce group at Khronos who want to ensure that 3D product experiences are color accurate.
Who is involved? A ton of major companies including Autodesk, Dassault, Unity, Microsoft, Adobe, Amazon, Epic Games, Adidas, Ikea, Meta, and Snap to name some of the biggest who are actively involved.
glTF PBR Progress
The result of this progress has been quite abundant. The following PBR extensions have been ratified:
- IOR
- Specular (tinted specular)
- Clearcoat
- Emissive Strength (allows for the emissive factor to go above 1, also to make it fully physically specified in lux.)
- Sheen
- Transmission
- Volume including support for Thin-Walled.
- Iridescence/Thin Film
And a few other important ones are close (as of Spring 2023):
- Specular Anisotropy
- Diffuse Transmission
- Subsurface Scattering
The BSDF blending tree is very similar to Autodesk Standard Surface at a high level:
Comparison to Other Models
For reference sake, I created a quick spreadsheet that compared the glTF PBR initiative with the Disney, Blender, Adobe, Autodesk and Dassault PBR models: https://docs.google.com/spreadsheets/d/1Af5Oevg-ES4aEH3BrH6tpzrUtyoPxN2O6wm5YRDgnZE/edit#gid=0
Fidelity Testing
The fidelity project is incredibly valuable as it moves from specification from just theoretical to grounded images. It is both a software unit test framework, a set of test files and a collection of reference images. It answers the question clearly, does my model look how it should in your renderer based on the specifications. It is either right or it is wrong. So much can go wrong in a complex renderer to mess up how parameters are converted into pixel colors on the screen.
https://modelviewer.dev/fidelity/