If any of these symbols are prepended to the source for the pbr shaders before shader compilation, they affect the shader's operation. This allows various models to be rendered with different combinations of settings, using the same shader.
The official viewer keeps track of a shader identifier and the defines permutation (excluding the prefix
to know if a shader for that exact permutation has been compiled and can be loaded from the shader cache.
// example args: "pbr.vert", ["NORMALS", "TANGENTS"]
Scraped using powershell in the src/shaders folder of the KhronosGroup/glTF-Sampler-Viewer repo: