To build multiple variations of a shader, add a file named X.json corresponding to shader file X. A variation is generated by building the shader with different definitions (a la glslang_validator's -DName=1). These definitions come from flags and enumerations defined in the json file. Without a .json file, the shader is generated as is (1 variation).
There are multiple possible fields in the json file:
Flags are shorthand for 2-entry enumerations. Given n flags, there are 2^n variations where every flag is either present or not. For enumerations, only one entry is active in any variation. Thus, an enumeration with n entries generates n variations.
Here is an example json file:
{ “Description”: [ “Copyright 2018 The ANGLE Project Authors. All rights reserved.”, “Use of this source code is governed by a BSD-style license that can be”, “found in the LICENSE file.”, "", “RayTrace.comp.json: Build parameters for RayTrace.comp.” ], “Flags”: [ “NanFilter”, “WorkaroundIntelBug” ], “RayTraceQuality”: [ “IsRTLowRes”, “IsRTHighRes”, “IsRTAwesome” ], “ImageType”: [ “IsR”, “IsRG”, “IsRGB”, “IsRGBA” ] }
This will generate 2^2 * 3 * 4 shaders.