The purpose of glTF is to standardize Physically-Based Rendering (PBR) materials such that you can be confident your model will appear as intended in any lighting environment in any renderer. This is a very ambitious goal, as real-time rendering at this level of quality is still very much an area of active research with improvements being made constantly. This site demonstrates where we are on that path to convergence and highlights areas that could still use improvement. We are comparing the most popular real-time web renderers as well as path tracers (a rendering technique that uses far fewer approximations than are required by real-time renderers):
Name | Rendering Type | Platform |
---|---|---|
three.js (represented by <model-viewer>) | Real-Time | Web |
filament.js | Real-Time | Web, Android |
babylon.js | Real-Time | Web |
gltf-sample-viewer | Real-Time | Web |
three-gpu-pathtracer | Path Tracing | Web |
Dassault STELLAR | Path Tracing | Windows, Linux |
Chaos Group V-Ray (via vray_gltf) | Path Tracing | Linux, Windows, MacOS |
Blender Cycles | Path Tracing | Linux, Windows, MacOS |
If any other renderers would like to be included, please open a PR adding them to the glTF-Render-Fidelity repository.
The first set of scenarios are for demonstrating material capabilities, so these are primarily fidelity tests. Following these are simpler cases that test glTF spec conformance, but are not particularly interesting for fidelity. At the bottom are the Furnace Test and the Directional Light Test. The Furnace Test checks energy conservation and the correct result is the whole 7x7 grid of metal-rough spheres being invisible (indistinguishable from the background). The top (metal) and bottom (dielectric) rows are passing, while the mixtures lose some energy. The Directional Light Test checks the worst-case scenario for environmental lighting approximations: the case where a single bright pixel represents a directional light. The Filament version uses an actual directional light, so this is the ground truth.
We show a simple logarithmic metric on an average of the pixel differences, excluding the transparent background. This is not a perceptual metric, so take it with a grain of salt. It is mostly there to help us identify regressions.