Information and Downloads

glTF information extracted with gltf-transform.

USDZ verification and preview image created with usdchecker and usdrecord.

USD Viewer based on Autodesk's experimental USD-for-Web


This asset is part of the KhronosGroup/glTF-Sample-Models asset repository.

Description sourceAsset source

Specular Test



Rendered by the Khronos glTF Sample Viewer, using IBL "Artist Workshop" by HDRI Haven.


This model tests the KHR_materials_specular extension, which replaces the older KHR_materials_pbrSpecularGlossiness extension. The latter was a separate PBR workflow, an alternate to the core glTF metallic/roughness workflow. This newer KHR_materials_specular extension enables control over dielectric specular values from within the metal/rough workflow. The two extensions are mutually exclusive per material.

The first row tests the specularFactor parameter. This parameter influences the specular response at both normal incidence (f0) and at grazing incidence (f90). The leftmost sphere on this row should appear perfectly black.

The second row specularTexture controls the same parameter as the first row, using a texture. It should be identical to the first row.

The third and fourth rows use a factor and a texture, respectively, to control the specular color (via specularColorFactor and specularColorTexture). These rows provide a range of grayscale values, and should influence only the normal incidence (f0), not grazing incidence (f90). The centers of the spheres should darken on the left side of the row, but not the edges.

The fifth and sixth rows repeat the experiment from the third and fourth, using a yellow color at a range of brightnesses in place of the grayscale ramp. The specular response at the edges of the spheres should remain white throughout.

The final row tests what happens when specularColorFactor is allowed to be greater than 1.0. The specification allows this such that the material's IOR setting does not clamp the specular response, however energy conservation is still observed and the implementation notes indicate where to properly clamp the resulting value. The last sphere on this row should look like a mirror ball.

Common Problems


If you see purple coloring in the second row, it indicates a problem. An older version of this specification (before ratification) did not separate specularColorTexture into its own field, and some older versions of available engines may still be using this draft interpretation. The purple color is present in this model's specularTexture input on the RGB channels, which should not be used given the final specification (where color is permitted to be stored in a separate texture).

License Information

Copyright 2021 Analytical Graphics, Inc.
CC-BY 4.0
Model and textures by Ed Mackey.