|
Name |
|
Date |
Size |
#Lines |
LOC |
| .. | | - | - |
| gen/ | H | 25-Apr-2025 | - | 31,631 | 31,175 |
| src/ | H | 25-Apr-2025 | - | 6,361 | 4,625 |
| README.md | H A D | 25-Apr-2025 | 1.7 KiB | 50 | 41 |
README.md
1# Shader Variations
2
3To build multiple variations of a shader, add a file named X.json corresponding to shader file X. A
4variation is generated by building the shader with different definitions (a la glslang_validator's
5-DName=1). These definitions come from flags and enumerations defined in the json file. Without a
6.json file, the shader is generated as is (1 variation).
7
8There are multiple possible fields in the json file:
9
10- "Description": This contains the license and other comments, which will be ignored.
11- "Flags": this is a list of flags. Each flag FLAG defines a shader variation with or without the
12 define FLAG=1.
13- other: any other field is a similar list to flags, except that each entry in this enumeration is a
14 variation. Similar to "flags", every entry ENTRY results in an ENTRY=1 define.
15
16Flags are shorthand for 2-entry enumerations. Given n flags, there are 2^n variations where every
17flag is either present or not. For enumerations, only one entry is active in any variation. Thus,
18an enumeration with n entries generates n variations.
19
20## Example
21
22Here is an example json file:
23
24{
25 "Description": [
26 "Copyright 2018 The ANGLE Project Authors. All rights reserved.",
27 "Use of this source code is governed by a BSD-style license that can be",
28 "found in the LICENSE file.",
29 "",
30 "RayTrace.comp.json: Build parameters for RayTrace.comp."
31 ],
32 "Flags": [
33 "NanFilter",
34 "WorkaroundIntelBug"
35 ],
36 "RayTraceQuality": [
37 "IsRTLowRes",
38 "IsRTHighRes",
39 "IsRTAwesome"
40 ],
41 "ImageType": [
42 "IsR",
43 "IsRG",
44 "IsRGB",
45 "IsRGBA"
46 ]
47}
48
49This will generate 2^2 * 3 * 4 shaders.
50