1 module shaders.mrt;
2 import sg = sokol.gfx;
3 import m = handmade.math;
4 extern(C):
5 
6 /*
7     #version:1# (machine generated, don't edit!)
8 
9     Generated by sokol-shdc (https://github.com/floooh/sokol-tools)
10 
11     Cmdline:
12         sokol-shdc -i examples/shaders/mrt.glsl -o examples/shaders/mrt.d -l glsl410:glsl300es:metal_macos:hlsl5:wgsl -f sokol_d
13 
14     Overview:
15     =========
16     Shader program: 'dbg':
17         Get shader desc: dbgShaderDesc(sg.queryBackend());
18         Vertex Shader: vs_dbg
19         Fragment Shader: fs_dbg
20         Attributes:
21             ATTR_DBG_POS => 0
22     Shader program: 'fsq':
23         Get shader desc: fsqShaderDesc(sg.queryBackend());
24         Vertex Shader: vs_fsq
25         Fragment Shader: fs_fsq
26         Attributes:
27             ATTR_FSQ_POS => 0
28     Shader program: 'offscreen':
29         Get shader desc: offscreenShaderDesc(sg.queryBackend());
30         Vertex Shader: vs_offscreen
31         Fragment Shader: fs_offscreen
32         Attributes:
33             ATTR_OFFSCREEN_POS => 0
34             ATTR_OFFSCREEN_BRIGHT0 => 1
35     Bindings:
36         Uniform block 'fsq_params':
37             D struct: FsqParams
38             Bind slot: UB_FSQ_PARAMS => 0
39         Uniform block 'offscreen_params':
40             D struct: OffscreenParams
41             Bind slot: UB_OFFSCREEN_PARAMS => 0
42         Image 'tex':
43             Image type: sg.ImageType._2d
44             Sample type: sg.ImageSampleType.Float
45             Multisampled: false
46             Bind slot: IMG_TEX => 0
47         Image 'tex0':
48             Image type: sg.ImageType._2d
49             Sample type: sg.ImageSampleType.Float
50             Multisampled: false
51             Bind slot: IMG_TEX0 => 0
52         Image 'tex1':
53             Image type: sg.ImageType._2d
54             Sample type: sg.ImageSampleType.Float
55             Multisampled: false
56             Bind slot: IMG_TEX1 => 1
57         Image 'tex2':
58             Image type: sg.ImageType._2d
59             Sample type: sg.ImageSampleType.Float
60             Multisampled: false
61             Bind slot: IMG_TEX2 => 2
62         Sampler 'smp':
63             Type: sg.SamplerType.Filtering
64             Bind slot: SMP_SMP => 0
65 */
66 enum ATTR_DBG_POS = 0;
67 enum ATTR_FSQ_POS = 0;
68 enum ATTR_OFFSCREEN_POS = 0;
69 enum ATTR_OFFSCREEN_BRIGHT0 = 1;
70 enum UB_FSQ_PARAMS = 0;
71 enum UB_OFFSCREEN_PARAMS = 0;
72 enum IMG_TEX = 0;
73 enum IMG_TEX0 = 0;
74 enum IMG_TEX1 = 1;
75 enum IMG_TEX2 = 2;
76 enum SMP_SMP = 0;
77 struct FsqParams {
78     align(16) m.Vec2 offset;
79     align(1) ubyte[8] _pad_8 = 0;
80 }
81 struct OffscreenParams {
82     align(16) m.Mat4 mvp;
83 }
84 /*
85     #version 410
86 
87     uniform vec4 offscreen_params[4];
88     layout(location = 0) in vec4 pos;
89     layout(location = 0) out float bright;
90     layout(location = 1) in float bright0;
91 
92     void main()
93     {
94         gl_Position = mat4(offscreen_params[0], offscreen_params[1], offscreen_params[2], offscreen_params[3]) * pos;
95         bright = bright0;
96     }
97 
98 */
99 __gshared char[315] VS_OFFSCREEN_SOURCE_GLSL410 = [
100     0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x31,0x30,0x0a,0x0a,0x75,0x6e,
101     0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x6f,0x66,0x66,0x73,0x63,
102     0x72,0x65,0x65,0x6e,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,0x5d,0x3b,0x0a,
103     0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,
104     0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73,
105     0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,
106     0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,
107     0x20,0x62,0x72,0x69,0x67,0x68,0x74,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,
108     0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,
109     0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x62,0x72,0x69,0x67,0x68,0x74,0x30,0x3b,0x0a,
110     0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,
111     0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,
112     0x20,0x6d,0x61,0x74,0x34,0x28,0x6f,0x66,0x66,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,
113     0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2c,0x20,0x6f,0x66,0x66,0x73,0x63,
114     0x72,0x65,0x65,0x6e,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x2c,0x20,
115     0x6f,0x66,0x66,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,
116     0x5b,0x32,0x5d,0x2c,0x20,0x6f,0x66,0x66,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x70,
117     0x61,0x72,0x61,0x6d,0x73,0x5b,0x33,0x5d,0x29,0x20,0x2a,0x20,0x70,0x6f,0x73,0x3b,
118     0x0a,0x20,0x20,0x20,0x20,0x62,0x72,0x69,0x67,0x68,0x74,0x20,0x3d,0x20,0x62,0x72,
119     0x69,0x67,0x68,0x74,0x30,0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
120 ];
121 /*
122     #version 410
123 
124     layout(location = 0) out vec4 frag_color_0;
125     layout(location = 0) in float bright;
126     layout(location = 1) out vec4 frag_color_1;
127     layout(location = 2) out vec4 frag_color_2;
128 
129     void main()
130     {
131         frag_color_0 = vec4(bright, 0.0, 0.0, 1.0);
132         frag_color_1 = vec4(0.0, bright, 0.0, 1.0);
133         frag_color_2 = vec4(0.0, 0.0, bright, 1.0);
134     }
135 
136 */
137 __gshared char[347] FS_OFFSCREEN_SOURCE_GLSL410 = [
138     0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x31,0x30,0x0a,0x0a,0x6c,0x61,
139     0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,
140     0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,
141     0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x30,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,
142     0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,
143     0x6e,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x62,0x72,0x69,0x67,0x68,0x74,0x3b,0x0a,
144     0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,
145     0x3d,0x20,0x31,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,
146     0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x31,0x3b,0x0a,0x6c,0x61,0x79,0x6f,
147     0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,
148     0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,
149     0x6f,0x6c,0x6f,0x72,0x5f,0x32,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,
150     0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,
151     0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x30,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x62,
152     0x72,0x69,0x67,0x68,0x74,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,
153     0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,
154     0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x31,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x30,
155     0x2e,0x30,0x2c,0x20,0x62,0x72,0x69,0x67,0x68,0x74,0x2c,0x20,0x30,0x2e,0x30,0x2c,
156     0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,
157     0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x32,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x30,
158     0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x62,0x72,0x69,0x67,0x68,0x74,0x2c,
159     0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
160 ];
161 /*
162     #version 410
163 
164     uniform vec4 fsq_params[1];
165     layout(location = 0) in vec2 pos;
166     layout(location = 0) out vec2 uv0;
167     layout(location = 1) out vec2 uv1;
168     layout(location = 2) out vec2 uv2;
169 
170     void main()
171     {
172         gl_Position = vec4((pos * 2.0) - vec2(1.0), 0.5, 1.0);
173         uv0 = pos + vec2(fsq_params[0].x, 0.0);
174         uv1 = pos + vec2(0.0, fsq_params[0].y);
175         uv2 = pos;
176         gl_Position.y = -gl_Position.y;
177     }
178 
179 */
180 __gshared char[398] VS_FSQ_SOURCE_GLSL410 = [
181     0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x31,0x30,0x0a,0x0a,0x75,0x6e,
182     0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x73,0x71,0x5f,0x70,
183     0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,
184     0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,
185     0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f,0x73,0x3b,0x0a,0x6c,0x61,0x79,0x6f,
186     0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,
187     0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x30,0x3b,0x0a,0x6c,
188     0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,
189     0x20,0x31,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x31,
190     0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,
191     0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32,0x20,
192     0x75,0x76,0x32,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,
193     0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,
194     0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x28,0x70,0x6f,0x73,0x20,
195     0x2a,0x20,0x32,0x2e,0x30,0x29,0x20,0x2d,0x20,0x76,0x65,0x63,0x32,0x28,0x31,0x2e,
196     0x30,0x29,0x2c,0x20,0x30,0x2e,0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,
197     0x20,0x20,0x20,0x75,0x76,0x30,0x20,0x3d,0x20,0x70,0x6f,0x73,0x20,0x2b,0x20,0x76,
198     0x65,0x63,0x32,0x28,0x66,0x73,0x71,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,
199     0x5d,0x2e,0x78,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,
200     0x76,0x31,0x20,0x3d,0x20,0x70,0x6f,0x73,0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x28,
201     0x30,0x2e,0x30,0x2c,0x20,0x66,0x73,0x71,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,
202     0x30,0x5d,0x2e,0x79,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x76,0x32,0x20,0x3d,
203     0x20,0x70,0x6f,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,
204     0x69,0x74,0x69,0x6f,0x6e,0x2e,0x79,0x20,0x3d,0x20,0x2d,0x67,0x6c,0x5f,0x50,0x6f,
205     0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x79,0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
206 ];
207 /*
208     #version 410
209 
210     uniform sampler2D tex0_smp;
211     uniform sampler2D tex1_smp;
212     uniform sampler2D tex2_smp;
213 
214     layout(location = 0) in vec2 uv0;
215     layout(location = 1) in vec2 uv1;
216     layout(location = 2) in vec2 uv2;
217     layout(location = 0) out vec4 frag_color;
218 
219     void main()
220     {
221         frag_color = vec4((texture(tex0_smp, uv0).xyz + texture(tex1_smp, uv1).xyz) + texture(tex2_smp, uv2).xyz, 1.0);
222     }
223 
224 */
225 __gshared char[378] FS_FSQ_SOURCE_GLSL410 = [
226     0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x31,0x30,0x0a,0x0a,0x75,0x6e,
227     0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,
228     0x74,0x65,0x78,0x30,0x5f,0x73,0x6d,0x70,0x3b,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,
229     0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x74,0x65,0x78,0x31,
230     0x5f,0x73,0x6d,0x70,0x3b,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,
231     0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x74,0x65,0x78,0x32,0x5f,0x73,0x6d,0x70,
232     0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,
233     0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,
234     0x75,0x76,0x30,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,
235     0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,
236     0x32,0x20,0x75,0x76,0x31,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,
237     0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x69,0x6e,0x20,0x76,
238     0x65,0x63,0x32,0x20,0x75,0x76,0x32,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,
239     0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,
240     0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,
241     0x72,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,
242     0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,
243     0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x28,0x74,0x65,0x78,0x74,0x75,0x72,0x65,
244     0x28,0x74,0x65,0x78,0x30,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x75,0x76,0x30,0x29,0x2e,
245     0x78,0x79,0x7a,0x20,0x2b,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x74,0x65,
246     0x78,0x31,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x75,0x76,0x31,0x29,0x2e,0x78,0x79,0x7a,
247     0x29,0x20,0x2b,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x74,0x65,0x78,0x32,
248     0x5f,0x73,0x6d,0x70,0x2c,0x20,0x75,0x76,0x32,0x29,0x2e,0x78,0x79,0x7a,0x2c,0x20,
249     0x31,0x2e,0x30,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
250 ];
251 /*
252     #version 410
253 
254     layout(location = 0) in vec2 pos;
255     layout(location = 0) out vec2 uv;
256 
257     void main()
258     {
259         gl_Position = vec4((pos * 2.0) - vec2(1.0), 0.5, 1.0);
260         uv = pos;
261         gl_Position.y = -gl_Position.y;
262     }
263 
264 */
265 __gshared char[210] VS_DBG_SOURCE_GLSL410 = [
266     0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x31,0x30,0x0a,0x0a,0x6c,0x61,
267     0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,
268     0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f,0x73,0x3b,0x0a,
269     0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,
270     0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,
271     0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,
272     0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,
273     0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x28,0x70,0x6f,0x73,0x20,0x2a,0x20,0x32,
274     0x2e,0x30,0x29,0x20,0x2d,0x20,0x76,0x65,0x63,0x32,0x28,0x31,0x2e,0x30,0x29,0x2c,
275     0x20,0x30,0x2e,0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,
276     0x75,0x76,0x20,0x3d,0x20,0x70,0x6f,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,
277     0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x79,0x20,0x3d,0x20,0x2d,0x67,
278     0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x79,0x3b,0x0a,0x7d,0x0a,
279     0x0a,0x00,
280 ];
281 /*
282     #version 410
283 
284     uniform sampler2D tex_smp;
285 
286     layout(location = 0) out vec4 frag_color;
287     layout(location = 0) in vec2 uv;
288 
289     void main()
290     {
291         frag_color = vec4(texture(tex_smp, uv).xyz, 1.0);
292     }
293 
294 */
295 __gshared char[190] FS_DBG_SOURCE_GLSL410 = [
296     0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x34,0x31,0x30,0x0a,0x0a,0x75,0x6e,
297     0x69,0x66,0x6f,0x72,0x6d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,
298     0x74,0x65,0x78,0x5f,0x73,0x6d,0x70,0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,
299     0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,
300     0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,
301     0x6f,0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,
302     0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,
303     0x20,0x75,0x76,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,
304     0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,
305     0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x74,0x65,0x78,0x74,0x75,0x72,
306     0x65,0x28,0x74,0x65,0x78,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x75,0x76,0x29,0x2e,0x78,
307     0x79,0x7a,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
308 ];
309 /*
310     #version 300 es
311 
312     uniform vec4 offscreen_params[4];
313     layout(location = 0) in vec4 pos;
314     out float bright;
315     layout(location = 1) in float bright0;
316 
317     void main()
318     {
319         gl_Position = mat4(offscreen_params[0], offscreen_params[1], offscreen_params[2], offscreen_params[3]) * pos;
320         bright = bright0;
321     }
322 
323 */
324 __gshared char[297] VS_OFFSCREEN_SOURCE_GLSL300ES = [
325     0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a,
326     0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x6f,0x66,
327     0x66,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x34,
328     0x5d,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,
329     0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20,
330     0x70,0x6f,0x73,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x62,
331     0x72,0x69,0x67,0x68,0x74,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,
332     0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x69,0x6e,0x20,0x66,
333     0x6c,0x6f,0x61,0x74,0x20,0x62,0x72,0x69,0x67,0x68,0x74,0x30,0x3b,0x0a,0x0a,0x76,
334     0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,
335     0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x6d,
336     0x61,0x74,0x34,0x28,0x6f,0x66,0x66,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x70,0x61,
337     0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2c,0x20,0x6f,0x66,0x66,0x73,0x63,0x72,0x65,
338     0x65,0x6e,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x2c,0x20,0x6f,0x66,
339     0x66,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x32,
340     0x5d,0x2c,0x20,0x6f,0x66,0x66,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x70,0x61,0x72,
341     0x61,0x6d,0x73,0x5b,0x33,0x5d,0x29,0x20,0x2a,0x20,0x70,0x6f,0x73,0x3b,0x0a,0x20,
342     0x20,0x20,0x20,0x62,0x72,0x69,0x67,0x68,0x74,0x20,0x3d,0x20,0x62,0x72,0x69,0x67,
343     0x68,0x74,0x30,0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
344 ];
345 /*
346     #version 300 es
347     precision mediump float;
348     precision highp int;
349 
350     layout(location = 0) out highp vec4 frag_color_0;
351     in highp float bright;
352     layout(location = 1) out highp vec4 frag_color_1;
353     layout(location = 2) out highp vec4 frag_color_2;
354 
355     void main()
356     {
357         frag_color_0 = vec4(bright, 0.0, 0.0, 1.0);
358         frag_color_1 = vec4(0.0, bright, 0.0, 1.0);
359         frag_color_2 = vec4(0.0, 0.0, bright, 1.0);
360     }
361 
362 */
363 __gshared char[399] FS_OFFSCREEN_SOURCE_GLSL300ES = [
364     0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a,
365     0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d,
366     0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69,
367     0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x6c,
368     0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,
369     0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,
370     0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x30,0x3b,
371     0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,
372     0x62,0x72,0x69,0x67,0x68,0x74,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,
373     0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x6f,0x75,0x74,
374     0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,
375     0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x31,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,
376     0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x32,0x29,0x20,0x6f,
377     0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,
378     0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x32,0x3b,0x0a,0x0a,0x76,0x6f,0x69,
379     0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,
380     0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x30,0x20,0x3d,0x20,0x76,0x65,
381     0x63,0x34,0x28,0x62,0x72,0x69,0x67,0x68,0x74,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,
382     0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,
383     0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x31,0x20,0x3d,0x20,0x76,0x65,
384     0x63,0x34,0x28,0x30,0x2e,0x30,0x2c,0x20,0x62,0x72,0x69,0x67,0x68,0x74,0x2c,0x20,
385     0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,
386     0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x32,0x20,0x3d,0x20,0x76,0x65,
387     0x63,0x34,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x62,0x72,0x69,
388     0x67,0x68,0x74,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
389 ];
390 /*
391     #version 300 es
392 
393     uniform vec4 fsq_params[1];
394     layout(location = 0) in vec2 pos;
395     out vec2 uv0;
396     out vec2 uv1;
397     out vec2 uv2;
398 
399     void main()
400     {
401         gl_Position = vec4((pos * 2.0) - vec2(1.0), 0.5, 1.0);
402         uv0 = pos + vec2(fsq_params[0].x, 0.0);
403         uv1 = pos + vec2(0.0, fsq_params[0].y);
404         uv2 = pos;
405         gl_Position.y = -gl_Position.y;
406     }
407 
408 */
409 __gshared char[338] VS_FSQ_SOURCE_GLSL300ES = [
410     0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a,
411     0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x73,
412     0x71,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x3b,0x0a,0x6c,0x61,0x79,
413     0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,
414     0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f,0x73,0x3b,0x0a,0x6f,
415     0x75,0x74,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x30,0x3b,0x0a,0x6f,0x75,0x74,
416     0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x31,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,
417     0x65,0x63,0x32,0x20,0x75,0x76,0x32,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,
418     0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,
419     0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x28,
420     0x70,0x6f,0x73,0x20,0x2a,0x20,0x32,0x2e,0x30,0x29,0x20,0x2d,0x20,0x76,0x65,0x63,
421     0x32,0x28,0x31,0x2e,0x30,0x29,0x2c,0x20,0x30,0x2e,0x35,0x2c,0x20,0x31,0x2e,0x30,
422     0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x76,0x30,0x20,0x3d,0x20,0x70,0x6f,0x73,
423     0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x28,0x66,0x73,0x71,0x5f,0x70,0x61,0x72,0x61,
424     0x6d,0x73,0x5b,0x30,0x5d,0x2e,0x78,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,
425     0x20,0x20,0x20,0x75,0x76,0x31,0x20,0x3d,0x20,0x70,0x6f,0x73,0x20,0x2b,0x20,0x76,
426     0x65,0x63,0x32,0x28,0x30,0x2e,0x30,0x2c,0x20,0x66,0x73,0x71,0x5f,0x70,0x61,0x72,
427     0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2e,0x79,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,
428     0x76,0x32,0x20,0x3d,0x20,0x70,0x6f,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,
429     0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x79,0x20,0x3d,0x20,0x2d,0x67,
430     0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x79,0x3b,0x0a,0x7d,0x0a,
431     0x0a,0x00,
432 ];
433 /*
434     #version 300 es
435     precision mediump float;
436     precision highp int;
437 
438     uniform highp sampler2D tex0_smp;
439     uniform highp sampler2D tex1_smp;
440     uniform highp sampler2D tex2_smp;
441 
442     in highp vec2 uv0;
443     in highp vec2 uv1;
444     in highp vec2 uv2;
445     layout(location = 0) out highp vec4 frag_color;
446 
447     void main()
448     {
449         frag_color = vec4((texture(tex0_smp, uv0).xyz + texture(tex1_smp, uv1).xyz) + texture(tex2_smp, uv2).xyz, 1.0);
450     }
451 
452 */
453 __gshared char[406] FS_FSQ_SOURCE_GLSL300ES = [
454     0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a,
455     0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d,
456     0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69,
457     0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x75,
458     0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d,
459     0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x74,0x65,0x78,0x30,0x5f,0x73,0x6d,0x70,0x3b,
460     0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73,
461     0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x74,0x65,0x78,0x31,0x5f,0x73,0x6d,
462     0x70,0x3b,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,
463     0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x74,0x65,0x78,0x32,0x5f,
464     0x73,0x6d,0x70,0x3b,0x0a,0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,
465     0x65,0x63,0x32,0x20,0x75,0x76,0x30,0x3b,0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68,
466     0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x31,0x3b,0x0a,0x69,0x6e,0x20,0x68,
467     0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x32,0x3b,0x0a,0x6c,
468     0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,
469     0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,
470     0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a,
471     0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,
472     0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,
473     0x65,0x63,0x34,0x28,0x28,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x74,0x65,0x78,
474     0x30,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x75,0x76,0x30,0x29,0x2e,0x78,0x79,0x7a,0x20,
475     0x2b,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x74,0x65,0x78,0x31,0x5f,0x73,
476     0x6d,0x70,0x2c,0x20,0x75,0x76,0x31,0x29,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2b,0x20,
477     0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x74,0x65,0x78,0x32,0x5f,0x73,0x6d,0x70,
478     0x2c,0x20,0x75,0x76,0x32,0x29,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x31,0x2e,0x30,0x29,
479     0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
480 ];
481 /*
482     #version 300 es
483 
484     layout(location = 0) in vec2 pos;
485     out vec2 uv;
486 
487     void main()
488     {
489         gl_Position = vec4((pos * 2.0) - vec2(1.0), 0.5, 1.0);
490         uv = pos;
491         gl_Position.y = -gl_Position.y;
492     }
493 
494 */
495 __gshared char[192] VS_DBG_SOURCE_GLSL300ES = [
496     0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a,
497     0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,
498     0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x6f,
499     0x73,0x3b,0x0a,0x6f,0x75,0x74,0x20,0x76,0x65,0x63,0x32,0x20,0x75,0x76,0x3b,0x0a,
500     0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,
501     0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,
502     0x20,0x76,0x65,0x63,0x34,0x28,0x28,0x70,0x6f,0x73,0x20,0x2a,0x20,0x32,0x2e,0x30,
503     0x29,0x20,0x2d,0x20,0x76,0x65,0x63,0x32,0x28,0x31,0x2e,0x30,0x29,0x2c,0x20,0x30,
504     0x2e,0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x76,
505     0x20,0x3d,0x20,0x70,0x6f,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,
506     0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x79,0x20,0x3d,0x20,0x2d,0x67,0x6c,0x5f,
507     0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2e,0x79,0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
508 
509 ];
510 /*
511     #version 300 es
512     precision mediump float;
513     precision highp int;
514 
515     uniform highp sampler2D tex_smp;
516 
517     layout(location = 0) out highp vec4 frag_color;
518     in highp vec2 uv;
519 
520     void main()
521     {
522         frag_color = vec4(texture(tex_smp, uv).xyz, 1.0);
523     }
524 
525 */
526 __gshared char[236] FS_DBG_SOURCE_GLSL300ES = [
527     0x23,0x76,0x65,0x72,0x73,0x69,0x6f,0x6e,0x20,0x33,0x30,0x30,0x20,0x65,0x73,0x0a,
528     0x70,0x72,0x65,0x63,0x69,0x73,0x69,0x6f,0x6e,0x20,0x6d,0x65,0x64,0x69,0x75,0x6d,
529     0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x3b,0x0a,0x70,0x72,0x65,0x63,0x69,0x73,0x69,
530     0x6f,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x69,0x6e,0x74,0x3b,0x0a,0x0a,0x75,
531     0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x73,0x61,0x6d,
532     0x70,0x6c,0x65,0x72,0x32,0x44,0x20,0x74,0x65,0x78,0x5f,0x73,0x6d,0x70,0x3b,0x0a,
533     0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,
534     0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20,
535     0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,
536     0x0a,0x69,0x6e,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x75,
537     0x76,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,
538     0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,
539     0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,
540     0x74,0x65,0x78,0x5f,0x73,0x6d,0x70,0x2c,0x20,0x75,0x76,0x29,0x2e,0x78,0x79,0x7a,
541     0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
542 ];
543 /*
544     cbuffer offscreen_params : register(b0)
545     {
546         row_major float4x4 _19_mvp : packoffset(c0);
547     };
548 
549 
550     static float4 gl_Position;
551     static float4 pos;
552     static float bright;
553     static float bright0;
554 
555     struct SPIRV_Cross_Input
556     {
557         float4 pos : TEXCOORD0;
558         float bright0 : TEXCOORD1;
559     };
560 
561     struct SPIRV_Cross_Output
562     {
563         float bright : TEXCOORD0;
564         float4 gl_Position : SV_Position;
565     };
566 
567     void vert_main()
568     {
569         gl_Position = mul(pos, _19_mvp);
570         bright = bright0;
571     }
572 
573     SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
574     {
575         pos = stage_input.pos;
576         bright0 = stage_input.bright0;
577         vert_main();
578         SPIRV_Cross_Output stage_output;
579         stage_output.gl_Position = gl_Position;
580         stage_output.bright = bright;
581         return stage_output;
582     }
583 */
584 __gshared char[736] VS_OFFSCREEN_SOURCE_HLSL5 = [
585     0x63,0x62,0x75,0x66,0x66,0x65,0x72,0x20,0x6f,0x66,0x66,0x73,0x63,0x72,0x65,0x65,
586     0x6e,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x20,0x3a,0x20,0x72,0x65,0x67,0x69,0x73,
587     0x74,0x65,0x72,0x28,0x62,0x30,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x6f,
588     0x77,0x5f,0x6d,0x61,0x6a,0x6f,0x72,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x78,0x34,
589     0x20,0x5f,0x31,0x39,0x5f,0x6d,0x76,0x70,0x20,0x3a,0x20,0x70,0x61,0x63,0x6b,0x6f,
590     0x66,0x66,0x73,0x65,0x74,0x28,0x63,0x30,0x29,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x0a,
591     0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x6c,
592     0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x73,0x74,0x61,0x74,0x69,
593     0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x70,0x6f,0x73,0x3b,0x0a,0x73,0x74,
594     0x61,0x74,0x69,0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x62,0x72,0x69,0x67,0x68,
595     0x74,0x3b,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,
596     0x62,0x72,0x69,0x67,0x68,0x74,0x30,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,
597     0x20,0x53,0x50,0x49,0x52,0x56,0x5f,0x43,0x72,0x6f,0x73,0x73,0x5f,0x49,0x6e,0x70,
598     0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,
599     0x70,0x6f,0x73,0x20,0x3a,0x20,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,0x30,0x3b,
600     0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x62,0x72,0x69,0x67,0x68,
601     0x74,0x30,0x20,0x3a,0x20,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,0x31,0x3b,0x0a,
602     0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x53,0x50,0x49,0x52,0x56,
603     0x5f,0x43,0x72,0x6f,0x73,0x73,0x5f,0x4f,0x75,0x74,0x70,0x75,0x74,0x0a,0x7b,0x0a,
604     0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x62,0x72,0x69,0x67,0x68,0x74,
605     0x20,0x3a,0x20,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,0x30,0x3b,0x0a,0x20,0x20,
606     0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,
607     0x74,0x69,0x6f,0x6e,0x20,0x3a,0x20,0x53,0x56,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,
608     0x6f,0x6e,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x76,0x65,0x72,
609     0x74,0x5f,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x67,
610     0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x6d,0x75,0x6c,
611     0x28,0x70,0x6f,0x73,0x2c,0x20,0x5f,0x31,0x39,0x5f,0x6d,0x76,0x70,0x29,0x3b,0x0a,
612     0x20,0x20,0x20,0x20,0x62,0x72,0x69,0x67,0x68,0x74,0x20,0x3d,0x20,0x62,0x72,0x69,
613     0x67,0x68,0x74,0x30,0x3b,0x0a,0x7d,0x0a,0x0a,0x53,0x50,0x49,0x52,0x56,0x5f,0x43,
614     0x72,0x6f,0x73,0x73,0x5f,0x4f,0x75,0x74,0x70,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,
615     0x28,0x53,0x50,0x49,0x52,0x56,0x5f,0x43,0x72,0x6f,0x73,0x73,0x5f,0x49,0x6e,0x70,
616     0x75,0x74,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x70,0x75,0x74,0x29,0x0a,
617     0x7b,0x0a,0x20,0x20,0x20,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x73,0x74,0x61,0x67,
618     0x65,0x5f,0x69,0x6e,0x70,0x75,0x74,0x2e,0x70,0x6f,0x73,0x3b,0x0a,0x20,0x20,0x20,
619     0x20,0x62,0x72,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,0x73,0x74,0x61,0x67,0x65,
620     0x5f,0x69,0x6e,0x70,0x75,0x74,0x2e,0x62,0x72,0x69,0x67,0x68,0x74,0x30,0x3b,0x0a,
621     0x20,0x20,0x20,0x20,0x76,0x65,0x72,0x74,0x5f,0x6d,0x61,0x69,0x6e,0x28,0x29,0x3b,
622     0x0a,0x20,0x20,0x20,0x20,0x53,0x50,0x49,0x52,0x56,0x5f,0x43,0x72,0x6f,0x73,0x73,
623     0x5f,0x4f,0x75,0x74,0x70,0x75,0x74,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x6f,0x75,
624     0x74,0x70,0x75,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,
625     0x6f,0x75,0x74,0x70,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,
626     0x6f,0x6e,0x20,0x3d,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,
627     0x3b,0x0a,0x20,0x20,0x20,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x6f,0x75,0x74,0x70,
628     0x75,0x74,0x2e,0x62,0x72,0x69,0x67,0x68,0x74,0x20,0x3d,0x20,0x62,0x72,0x69,0x67,
629     0x68,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,
630     0x74,0x61,0x67,0x65,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x00,
631 
632 ];
633 /*
634     static float4 frag_color_0;
635     static float bright;
636     static float4 frag_color_1;
637     static float4 frag_color_2;
638 
639     struct SPIRV_Cross_Input
640     {
641         float bright : TEXCOORD0;
642     };
643 
644     struct SPIRV_Cross_Output
645     {
646         float4 frag_color_0 : SV_Target0;
647         float4 frag_color_1 : SV_Target1;
648         float4 frag_color_2 : SV_Target2;
649     };
650 
651     void frag_main()
652     {
653         frag_color_0 = float4(bright, 0.0f, 0.0f, 1.0f);
654         frag_color_1 = float4(0.0f, bright, 0.0f, 1.0f);
655         frag_color_2 = float4(0.0f, 0.0f, bright, 1.0f);
656     }
657 
658     SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
659     {
660         bright = stage_input.bright;
661         frag_main();
662         SPIRV_Cross_Output stage_output;
663         stage_output.frag_color_0 = frag_color_0;
664         stage_output.frag_color_1 = frag_color_1;
665         stage_output.frag_color_2 = frag_color_2;
666         return stage_output;
667     }
668 */
669 __gshared char[804] FS_OFFSCREEN_SOURCE_HLSL5 = [
670     0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,
671     0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x30,0x3b,0x0a,0x73,0x74,0x61,0x74,
672     0x69,0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x62,0x72,0x69,0x67,0x68,0x74,0x3b,
673     0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,
674     0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x31,0x3b,0x0a,0x73,0x74,0x61,
675     0x74,0x69,0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,
676     0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x32,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,
677     0x20,0x53,0x50,0x49,0x52,0x56,0x5f,0x43,0x72,0x6f,0x73,0x73,0x5f,0x49,0x6e,0x70,
678     0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x62,
679     0x72,0x69,0x67,0x68,0x74,0x20,0x3a,0x20,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,
680     0x30,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x53,0x50,
681     0x49,0x52,0x56,0x5f,0x43,0x72,0x6f,0x73,0x73,0x5f,0x4f,0x75,0x74,0x70,0x75,0x74,
682     0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,
683     0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x30,0x20,0x3a,0x20,0x53,0x56,0x5f,
684     0x54,0x61,0x72,0x67,0x65,0x74,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,
685     0x61,0x74,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x31,
686     0x20,0x3a,0x20,0x53,0x56,0x5f,0x54,0x61,0x72,0x67,0x65,0x74,0x31,0x3b,0x0a,0x20,
687     0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,
688     0x6f,0x6c,0x6f,0x72,0x5f,0x32,0x20,0x3a,0x20,0x53,0x56,0x5f,0x54,0x61,0x72,0x67,
689     0x65,0x74,0x32,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x66,0x72,
690     0x61,0x67,0x5f,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,
691     0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x30,0x20,0x3d,0x20,0x66,
692     0x6c,0x6f,0x61,0x74,0x34,0x28,0x62,0x72,0x69,0x67,0x68,0x74,0x2c,0x20,0x30,0x2e,
693     0x30,0x66,0x2c,0x20,0x30,0x2e,0x30,0x66,0x2c,0x20,0x31,0x2e,0x30,0x66,0x29,0x3b,
694     0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,
695     0x31,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x30,0x2e,0x30,0x66,0x2c,
696     0x20,0x62,0x72,0x69,0x67,0x68,0x74,0x2c,0x20,0x30,0x2e,0x30,0x66,0x2c,0x20,0x31,
697     0x2e,0x30,0x66,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,
698     0x6f,0x6c,0x6f,0x72,0x5f,0x32,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,
699     0x30,0x2e,0x30,0x66,0x2c,0x20,0x30,0x2e,0x30,0x66,0x2c,0x20,0x62,0x72,0x69,0x67,
700     0x68,0x74,0x2c,0x20,0x31,0x2e,0x30,0x66,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x53,0x50,
701     0x49,0x52,0x56,0x5f,0x43,0x72,0x6f,0x73,0x73,0x5f,0x4f,0x75,0x74,0x70,0x75,0x74,
702     0x20,0x6d,0x61,0x69,0x6e,0x28,0x53,0x50,0x49,0x52,0x56,0x5f,0x43,0x72,0x6f,0x73,
703     0x73,0x5f,0x49,0x6e,0x70,0x75,0x74,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,
704     0x70,0x75,0x74,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x62,0x72,0x69,0x67,0x68,
705     0x74,0x20,0x3d,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x70,0x75,0x74,0x2e,
706     0x62,0x72,0x69,0x67,0x68,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,
707     0x5f,0x6d,0x61,0x69,0x6e,0x28,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x53,0x50,0x49,
708     0x52,0x56,0x5f,0x43,0x72,0x6f,0x73,0x73,0x5f,0x4f,0x75,0x74,0x70,0x75,0x74,0x20,
709     0x73,0x74,0x61,0x67,0x65,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x3b,0x0a,0x20,0x20,
710     0x20,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x2e,0x66,
711     0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x30,0x20,0x3d,0x20,0x66,0x72,
712     0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,
713     0x73,0x74,0x61,0x67,0x65,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x2e,0x66,0x72,0x61,
714     0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x31,0x20,0x3d,0x20,0x66,0x72,0x61,0x67,
715     0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x73,0x74,
716     0x61,0x67,0x65,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,
717     0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x32,0x20,0x3d,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,
718     0x6f,0x6c,0x6f,0x72,0x5f,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,
719     0x72,0x6e,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x3b,
720     0x0a,0x7d,0x0a,0x00,
721 ];
722 /*
723     cbuffer fsq_params : register(b0)
724     {
725         float2 _36_offset : packoffset(c0);
726     };
727 
728 
729     static float4 gl_Position;
730     static float2 pos;
731     static float2 uv0;
732     static float2 uv1;
733     static float2 uv2;
734 
735     struct SPIRV_Cross_Input
736     {
737         float2 pos : TEXCOORD0;
738     };
739 
740     struct SPIRV_Cross_Output
741     {
742         float2 uv0 : TEXCOORD0;
743         float2 uv1 : TEXCOORD1;
744         float2 uv2 : TEXCOORD2;
745         float4 gl_Position : SV_Position;
746     };
747 
748     void vert_main()
749     {
750         gl_Position = float4((pos * 2.0f) - 1.0f.xx, 0.5f, 1.0f);
751         uv0 = pos + float2(_36_offset.x, 0.0f);
752         uv1 = pos + float2(0.0f, _36_offset.y);
753         uv2 = pos;
754     }
755 
756     SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
757     {
758         pos = stage_input.pos;
759         vert_main();
760         SPIRV_Cross_Output stage_output;
761         stage_output.gl_Position = gl_Position;
762         stage_output.uv0 = uv0;
763         stage_output.uv1 = uv1;
764         stage_output.uv2 = uv2;
765         return stage_output;
766     }
767 */
768 __gshared char[879] VS_FSQ_SOURCE_HLSL5 = [
769     0x63,0x62,0x75,0x66,0x66,0x65,0x72,0x20,0x66,0x73,0x71,0x5f,0x70,0x61,0x72,0x61,
770     0x6d,0x73,0x20,0x3a,0x20,0x72,0x65,0x67,0x69,0x73,0x74,0x65,0x72,0x28,0x62,0x30,
771     0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,
772     0x33,0x36,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3a,0x20,0x70,0x61,0x63,0x6b,
773     0x6f,0x66,0x66,0x73,0x65,0x74,0x28,0x63,0x30,0x29,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,
774     0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,
775     0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x73,0x74,0x61,0x74,
776     0x69,0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x6f,0x73,0x3b,0x0a,0x73,
777     0x74,0x61,0x74,0x69,0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x75,0x76,0x30,
778     0x3b,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,
779     0x75,0x76,0x31,0x3b,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x66,0x6c,0x6f,0x61,
780     0x74,0x32,0x20,0x75,0x76,0x32,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,
781     0x53,0x50,0x49,0x52,0x56,0x5f,0x43,0x72,0x6f,0x73,0x73,0x5f,0x49,0x6e,0x70,0x75,
782     0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,
783     0x6f,0x73,0x20,0x3a,0x20,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,0x30,0x3b,0x0a,
784     0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x53,0x50,0x49,0x52,0x56,
785     0x5f,0x43,0x72,0x6f,0x73,0x73,0x5f,0x4f,0x75,0x74,0x70,0x75,0x74,0x0a,0x7b,0x0a,
786     0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x75,0x76,0x30,0x20,0x3a,
787     0x20,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,
788     0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x75,0x76,0x31,0x20,0x3a,0x20,0x54,0x45,0x58,
789     0x43,0x4f,0x4f,0x52,0x44,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,
790     0x74,0x32,0x20,0x75,0x76,0x32,0x20,0x3a,0x20,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,
791     0x44,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,
792     0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3a,0x20,0x53,0x56,0x5f,
793     0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x76,0x6f,
794     0x69,0x64,0x20,0x76,0x65,0x72,0x74,0x5f,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,
795     0x0a,0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,
796     0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x28,0x70,0x6f,0x73,0x20,0x2a,
797     0x20,0x32,0x2e,0x30,0x66,0x29,0x20,0x2d,0x20,0x31,0x2e,0x30,0x66,0x2e,0x78,0x78,
798     0x2c,0x20,0x30,0x2e,0x35,0x66,0x2c,0x20,0x31,0x2e,0x30,0x66,0x29,0x3b,0x0a,0x20,
799     0x20,0x20,0x20,0x75,0x76,0x30,0x20,0x3d,0x20,0x70,0x6f,0x73,0x20,0x2b,0x20,0x66,
800     0x6c,0x6f,0x61,0x74,0x32,0x28,0x5f,0x33,0x36,0x5f,0x6f,0x66,0x66,0x73,0x65,0x74,
801     0x2e,0x78,0x2c,0x20,0x30,0x2e,0x30,0x66,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,
802     0x76,0x31,0x20,0x3d,0x20,0x70,0x6f,0x73,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,
803     0x32,0x28,0x30,0x2e,0x30,0x66,0x2c,0x20,0x5f,0x33,0x36,0x5f,0x6f,0x66,0x66,0x73,
804     0x65,0x74,0x2e,0x79,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,0x76,0x32,0x20,0x3d,
805     0x20,0x70,0x6f,0x73,0x3b,0x0a,0x7d,0x0a,0x0a,0x53,0x50,0x49,0x52,0x56,0x5f,0x43,
806     0x72,0x6f,0x73,0x73,0x5f,0x4f,0x75,0x74,0x70,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,
807     0x28,0x53,0x50,0x49,0x52,0x56,0x5f,0x43,0x72,0x6f,0x73,0x73,0x5f,0x49,0x6e,0x70,
808     0x75,0x74,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x70,0x75,0x74,0x29,0x0a,
809     0x7b,0x0a,0x20,0x20,0x20,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x73,0x74,0x61,0x67,
810     0x65,0x5f,0x69,0x6e,0x70,0x75,0x74,0x2e,0x70,0x6f,0x73,0x3b,0x0a,0x20,0x20,0x20,
811     0x20,0x76,0x65,0x72,0x74,0x5f,0x6d,0x61,0x69,0x6e,0x28,0x29,0x3b,0x0a,0x20,0x20,
812     0x20,0x20,0x53,0x50,0x49,0x52,0x56,0x5f,0x43,0x72,0x6f,0x73,0x73,0x5f,0x4f,0x75,
813     0x74,0x70,0x75,0x74,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x6f,0x75,0x74,0x70,0x75,
814     0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x6f,0x75,0x74,
815     0x70,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,
816     0x3d,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,
817     0x20,0x20,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x2e,
818     0x75,0x76,0x30,0x20,0x3d,0x20,0x75,0x76,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x73,
819     0x74,0x61,0x67,0x65,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x2e,0x75,0x76,0x31,0x20,
820     0x3d,0x20,0x75,0x76,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x73,0x74,0x61,0x67,0x65,
821     0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x2e,0x75,0x76,0x32,0x20,0x3d,0x20,0x75,0x76,
822     0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x74,
823     0x61,0x67,0x65,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x00,
824 ];
825 /*
826     Texture2D<float4> tex0 : register(t0);
827     SamplerState smp : register(s0);
828     Texture2D<float4> tex1 : register(t1);
829     Texture2D<float4> tex2 : register(t2);
830 
831     static float2 uv0;
832     static float2 uv1;
833     static float2 uv2;
834     static float4 frag_color;
835 
836     struct SPIRV_Cross_Input
837     {
838         float2 uv0 : TEXCOORD0;
839         float2 uv1 : TEXCOORD1;
840         float2 uv2 : TEXCOORD2;
841     };
842 
843     struct SPIRV_Cross_Output
844     {
845         float4 frag_color : SV_Target0;
846     };
847 
848     void frag_main()
849     {
850         frag_color = float4((tex0.Sample(smp, uv0).xyz + tex1.Sample(smp, uv1).xyz) + tex2.Sample(smp, uv2).xyz, 1.0f);
851     }
852 
853     SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
854     {
855         uv0 = stage_input.uv0;
856         uv1 = stage_input.uv1;
857         uv2 = stage_input.uv2;
858         frag_main();
859         SPIRV_Cross_Output stage_output;
860         stage_output.frag_color = frag_color;
861         return stage_output;
862     }
863 */
864 __gshared char[818] FS_FSQ_SOURCE_HLSL5 = [
865     0x54,0x65,0x78,0x74,0x75,0x72,0x65,0x32,0x44,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x34,
866     0x3e,0x20,0x74,0x65,0x78,0x30,0x20,0x3a,0x20,0x72,0x65,0x67,0x69,0x73,0x74,0x65,
867     0x72,0x28,0x74,0x30,0x29,0x3b,0x0a,0x53,0x61,0x6d,0x70,0x6c,0x65,0x72,0x53,0x74,
868     0x61,0x74,0x65,0x20,0x73,0x6d,0x70,0x20,0x3a,0x20,0x72,0x65,0x67,0x69,0x73,0x74,
869     0x65,0x72,0x28,0x73,0x30,0x29,0x3b,0x0a,0x54,0x65,0x78,0x74,0x75,0x72,0x65,0x32,
870     0x44,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x34,0x3e,0x20,0x74,0x65,0x78,0x31,0x20,0x3a,
871     0x20,0x72,0x65,0x67,0x69,0x73,0x74,0x65,0x72,0x28,0x74,0x31,0x29,0x3b,0x0a,0x54,
872     0x65,0x78,0x74,0x75,0x72,0x65,0x32,0x44,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x34,0x3e,
873     0x20,0x74,0x65,0x78,0x32,0x20,0x3a,0x20,0x72,0x65,0x67,0x69,0x73,0x74,0x65,0x72,
874     0x28,0x74,0x32,0x29,0x3b,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x66,0x6c,
875     0x6f,0x61,0x74,0x32,0x20,0x75,0x76,0x30,0x3b,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,
876     0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x75,0x76,0x31,0x3b,0x0a,0x73,0x74,0x61,
877     0x74,0x69,0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x75,0x76,0x32,0x3b,0x0a,
878     0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,
879     0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,
880     0x74,0x20,0x53,0x50,0x49,0x52,0x56,0x5f,0x43,0x72,0x6f,0x73,0x73,0x5f,0x49,0x6e,
881     0x70,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,
882     0x20,0x75,0x76,0x30,0x20,0x3a,0x20,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,0x30,
883     0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x75,0x76,0x31,
884     0x20,0x3a,0x20,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,0x31,0x3b,0x0a,0x20,0x20,
885     0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x75,0x76,0x32,0x20,0x3a,0x20,0x54,
886     0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,0x32,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,
887     0x72,0x75,0x63,0x74,0x20,0x53,0x50,0x49,0x52,0x56,0x5f,0x43,0x72,0x6f,0x73,0x73,
888     0x5f,0x4f,0x75,0x74,0x70,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,
889     0x6f,0x61,0x74,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,
890     0x3a,0x20,0x53,0x56,0x5f,0x54,0x61,0x72,0x67,0x65,0x74,0x30,0x3b,0x0a,0x7d,0x3b,
891     0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x66,0x72,0x61,0x67,0x5f,0x6d,0x61,0x69,0x6e,
892     0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,
893     0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x28,0x74,0x65,
894     0x78,0x30,0x2e,0x53,0x61,0x6d,0x70,0x6c,0x65,0x28,0x73,0x6d,0x70,0x2c,0x20,0x75,
895     0x76,0x30,0x29,0x2e,0x78,0x79,0x7a,0x20,0x2b,0x20,0x74,0x65,0x78,0x31,0x2e,0x53,
896     0x61,0x6d,0x70,0x6c,0x65,0x28,0x73,0x6d,0x70,0x2c,0x20,0x75,0x76,0x31,0x29,0x2e,
897     0x78,0x79,0x7a,0x29,0x20,0x2b,0x20,0x74,0x65,0x78,0x32,0x2e,0x53,0x61,0x6d,0x70,
898     0x6c,0x65,0x28,0x73,0x6d,0x70,0x2c,0x20,0x75,0x76,0x32,0x29,0x2e,0x78,0x79,0x7a,
899     0x2c,0x20,0x31,0x2e,0x30,0x66,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x53,0x50,0x49,0x52,
900     0x56,0x5f,0x43,0x72,0x6f,0x73,0x73,0x5f,0x4f,0x75,0x74,0x70,0x75,0x74,0x20,0x6d,
901     0x61,0x69,0x6e,0x28,0x53,0x50,0x49,0x52,0x56,0x5f,0x43,0x72,0x6f,0x73,0x73,0x5f,
902     0x49,0x6e,0x70,0x75,0x74,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x70,0x75,
903     0x74,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x75,0x76,0x30,0x20,0x3d,0x20,0x73,
904     0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x70,0x75,0x74,0x2e,0x75,0x76,0x30,0x3b,0x0a,
905     0x20,0x20,0x20,0x20,0x75,0x76,0x31,0x20,0x3d,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,
906     0x69,0x6e,0x70,0x75,0x74,0x2e,0x75,0x76,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x75,
907     0x76,0x32,0x20,0x3d,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x70,0x75,0x74,
908     0x2e,0x75,0x76,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x6d,
909     0x61,0x69,0x6e,0x28,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x53,0x50,0x49,0x52,0x56,
910     0x5f,0x43,0x72,0x6f,0x73,0x73,0x5f,0x4f,0x75,0x74,0x70,0x75,0x74,0x20,0x73,0x74,
911     0x61,0x67,0x65,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,
912     0x73,0x74,0x61,0x67,0x65,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x2e,0x66,0x72,0x61,
913     0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,
914     0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,
915     0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x3b,0x0a,0x7d,
916     0x0a,0x00,
917 ];
918 /*
919     static float4 gl_Position;
920     static float2 pos;
921     static float2 uv;
922 
923     struct SPIRV_Cross_Input
924     {
925         float2 pos : TEXCOORD0;
926     };
927 
928     struct SPIRV_Cross_Output
929     {
930         float2 uv : TEXCOORD0;
931         float4 gl_Position : SV_Position;
932     };
933 
934     void vert_main()
935     {
936         gl_Position = float4((pos * 2.0f) - 1.0f.xx, 0.5f, 1.0f);
937         uv = pos;
938     }
939 
940     SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
941     {
942         pos = stage_input.pos;
943         vert_main();
944         SPIRV_Cross_Output stage_output;
945         stage_output.gl_Position = gl_Position;
946         stage_output.uv = uv;
947         return stage_output;
948     }
949 */
950 __gshared char[555] VS_DBG_SOURCE_HLSL5 = [
951     0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x6c,
952     0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x73,0x74,0x61,0x74,0x69,
953     0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x6f,0x73,0x3b,0x0a,0x73,0x74,
954     0x61,0x74,0x69,0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x75,0x76,0x3b,0x0a,
955     0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x53,0x50,0x49,0x52,0x56,0x5f,0x43,0x72,
956     0x6f,0x73,0x73,0x5f,0x49,0x6e,0x70,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,
957     0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x6f,0x73,0x20,0x3a,0x20,0x54,0x45,0x58,
958     0x43,0x4f,0x4f,0x52,0x44,0x30,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,
959     0x63,0x74,0x20,0x53,0x50,0x49,0x52,0x56,0x5f,0x43,0x72,0x6f,0x73,0x73,0x5f,0x4f,
960     0x75,0x74,0x70,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,
961     0x74,0x32,0x20,0x75,0x76,0x20,0x3a,0x20,0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,
962     0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x6c,
963     0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3a,0x20,0x53,0x56,0x5f,0x50,
964     0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x76,0x6f,0x69,
965     0x64,0x20,0x76,0x65,0x72,0x74,0x5f,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,
966     0x20,0x20,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,
967     0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x28,0x70,0x6f,0x73,0x20,0x2a,0x20,
968     0x32,0x2e,0x30,0x66,0x29,0x20,0x2d,0x20,0x31,0x2e,0x30,0x66,0x2e,0x78,0x78,0x2c,
969     0x20,0x30,0x2e,0x35,0x66,0x2c,0x20,0x31,0x2e,0x30,0x66,0x29,0x3b,0x0a,0x20,0x20,
970     0x20,0x20,0x75,0x76,0x20,0x3d,0x20,0x70,0x6f,0x73,0x3b,0x0a,0x7d,0x0a,0x0a,0x53,
971     0x50,0x49,0x52,0x56,0x5f,0x43,0x72,0x6f,0x73,0x73,0x5f,0x4f,0x75,0x74,0x70,0x75,
972     0x74,0x20,0x6d,0x61,0x69,0x6e,0x28,0x53,0x50,0x49,0x52,0x56,0x5f,0x43,0x72,0x6f,
973     0x73,0x73,0x5f,0x49,0x6e,0x70,0x75,0x74,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,
974     0x6e,0x70,0x75,0x74,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x70,0x6f,0x73,0x20,
975     0x3d,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x70,0x75,0x74,0x2e,0x70,0x6f,
976     0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x72,0x74,0x5f,0x6d,0x61,0x69,0x6e,
977     0x28,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x53,0x50,0x49,0x52,0x56,0x5f,0x43,0x72,
978     0x6f,0x73,0x73,0x5f,0x4f,0x75,0x74,0x70,0x75,0x74,0x20,0x73,0x74,0x61,0x67,0x65,
979     0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x73,0x74,0x61,
980     0x67,0x65,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73,
981     0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,
982     0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x6f,
983     0x75,0x74,0x70,0x75,0x74,0x2e,0x75,0x76,0x20,0x3d,0x20,0x75,0x76,0x3b,0x0a,0x20,
984     0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,
985     0x6f,0x75,0x74,0x70,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x00,
986 ];
987 /*
988     Texture2D<float4> tex : register(t0);
989     SamplerState smp : register(s0);
990 
991     static float4 frag_color;
992     static float2 uv;
993 
994     struct SPIRV_Cross_Input
995     {
996         float2 uv : TEXCOORD0;
997     };
998 
999     struct SPIRV_Cross_Output
1000     {
1001         float4 frag_color : SV_Target0;
1002     };
1003 
1004     void frag_main()
1005     {
1006         frag_color = float4(tex.Sample(smp, uv).xyz, 1.0f);
1007     }
1008 
1009     SPIRV_Cross_Output main(SPIRV_Cross_Input stage_input)
1010     {
1011         uv = stage_input.uv;
1012         frag_main();
1013         SPIRV_Cross_Output stage_output;
1014         stage_output.frag_color = frag_color;
1015         return stage_output;
1016     }
1017 */
1018 __gshared char[527] FS_DBG_SOURCE_HLSL5 = [
1019     0x54,0x65,0x78,0x74,0x75,0x72,0x65,0x32,0x44,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x34,
1020     0x3e,0x20,0x74,0x65,0x78,0x20,0x3a,0x20,0x72,0x65,0x67,0x69,0x73,0x74,0x65,0x72,
1021     0x28,0x74,0x30,0x29,0x3b,0x0a,0x53,0x61,0x6d,0x70,0x6c,0x65,0x72,0x53,0x74,0x61,
1022     0x74,0x65,0x20,0x73,0x6d,0x70,0x20,0x3a,0x20,0x72,0x65,0x67,0x69,0x73,0x74,0x65,
1023     0x72,0x28,0x73,0x30,0x29,0x3b,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x66,
1024     0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,
1025     0x3b,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,
1026     0x75,0x76,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x53,0x50,0x49,0x52,
1027     0x56,0x5f,0x43,0x72,0x6f,0x73,0x73,0x5f,0x49,0x6e,0x70,0x75,0x74,0x0a,0x7b,0x0a,
1028     0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x75,0x76,0x20,0x3a,0x20,
1029     0x54,0x45,0x58,0x43,0x4f,0x4f,0x52,0x44,0x30,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,
1030     0x74,0x72,0x75,0x63,0x74,0x20,0x53,0x50,0x49,0x52,0x56,0x5f,0x43,0x72,0x6f,0x73,
1031     0x73,0x5f,0x4f,0x75,0x74,0x70,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,
1032     0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,
1033     0x20,0x3a,0x20,0x53,0x56,0x5f,0x54,0x61,0x72,0x67,0x65,0x74,0x30,0x3b,0x0a,0x7d,
1034     0x3b,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20,0x66,0x72,0x61,0x67,0x5f,0x6d,0x61,0x69,
1035     0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,
1036     0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x74,0x65,
1037     0x78,0x2e,0x53,0x61,0x6d,0x70,0x6c,0x65,0x28,0x73,0x6d,0x70,0x2c,0x20,0x75,0x76,
1038     0x29,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x31,0x2e,0x30,0x66,0x29,0x3b,0x0a,0x7d,0x0a,
1039     0x0a,0x53,0x50,0x49,0x52,0x56,0x5f,0x43,0x72,0x6f,0x73,0x73,0x5f,0x4f,0x75,0x74,
1040     0x70,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x28,0x53,0x50,0x49,0x52,0x56,0x5f,0x43,
1041     0x72,0x6f,0x73,0x73,0x5f,0x49,0x6e,0x70,0x75,0x74,0x20,0x73,0x74,0x61,0x67,0x65,
1042     0x5f,0x69,0x6e,0x70,0x75,0x74,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x75,0x76,
1043     0x20,0x3d,0x20,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x70,0x75,0x74,0x2e,0x75,
1044     0x76,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x6d,0x61,0x69,0x6e,
1045     0x28,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x53,0x50,0x49,0x52,0x56,0x5f,0x43,0x72,
1046     0x6f,0x73,0x73,0x5f,0x4f,0x75,0x74,0x70,0x75,0x74,0x20,0x73,0x74,0x61,0x67,0x65,
1047     0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x73,0x74,0x61,
1048     0x67,0x65,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,
1049     0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,
1050     0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x73,0x74,
1051     0x61,0x67,0x65,0x5f,0x6f,0x75,0x74,0x70,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x00,
1052 ];
1053 /*
1054     #include <metal_stdlib>
1055     #include <simd/simd.h>
1056 
1057     using namespace metal;
1058 
1059     struct offscreen_params
1060     {
1061         float4x4 mvp;
1062     };
1063 
1064     struct main0_out
1065     {
1066         float bright [[user(locn0)]];
1067         float4 gl_Position [[position]];
1068     };
1069 
1070     struct main0_in
1071     {
1072         float4 pos [[attribute(0)]];
1073         float bright0 [[attribute(1)]];
1074     };
1075 
1076     vertex main0_out main0(main0_in in [[stage_in]], constant offscreen_params& _19 [[buffer(0)]])
1077     {
1078         main0_out out = {};
1079         out.gl_Position = _19.mvp * in.pos;
1080         out.bright = in.bright0;
1081         return out;
1082     }
1083 
1084 */
1085 __gshared char[515] VS_OFFSCREEN_SOURCE_METAL_MACOS = [
1086     0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f,
1087     0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,
1088     0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a,
1089     0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20,
1090     0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6f,
1091     0x66,0x66,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x0a,
1092     0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x78,0x34,0x20,0x6d,
1093     0x76,0x70,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,
1094     0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,
1095     0x6c,0x6f,0x61,0x74,0x20,0x62,0x72,0x69,0x67,0x68,0x74,0x20,0x5b,0x5b,0x75,0x73,
1096     0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,
1097     0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,
1098     0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x5d,0x5d,
1099     0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,
1100     0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,
1101     0x74,0x34,0x20,0x70,0x6f,0x73,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,
1102     0x74,0x65,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,
1103     0x61,0x74,0x20,0x62,0x72,0x69,0x67,0x68,0x74,0x30,0x20,0x5b,0x5b,0x61,0x74,0x74,
1104     0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x31,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,
1105     0x0a,0x76,0x65,0x72,0x74,0x65,0x78,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,
1106     0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,
1107     0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,
1108     0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x6f,0x66,0x66,0x73,0x63,
1109     0x72,0x65,0x65,0x6e,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x26,0x20,0x5f,0x31,0x39,
1110     0x20,0x5b,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x29,0x0a,
1111     0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,
1112     0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,
1113     0x74,0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,
1114     0x5f,0x31,0x39,0x2e,0x6d,0x76,0x70,0x20,0x2a,0x20,0x69,0x6e,0x2e,0x70,0x6f,0x73,
1115     0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x62,0x72,0x69,0x67,0x68,0x74,
1116     0x20,0x3d,0x20,0x69,0x6e,0x2e,0x62,0x72,0x69,0x67,0x68,0x74,0x30,0x3b,0x0a,0x20,
1117     0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,
1118     0x0a,0x0a,0x00,
1119 ];
1120 /*
1121     #include <metal_stdlib>
1122     #include <simd/simd.h>
1123 
1124     using namespace metal;
1125 
1126     struct main0_out
1127     {
1128         float4 frag_color_0 [[color(0)]];
1129         float4 frag_color_1 [[color(1)]];
1130         float4 frag_color_2 [[color(2)]];
1131     };
1132 
1133     struct main0_in
1134     {
1135         float bright [[user(locn0)]];
1136     };
1137 
1138     fragment main0_out main0(main0_in in [[stage_in]])
1139     {
1140         main0_out out = {};
1141         out.frag_color_0 = float4(in.bright, 0.0, 0.0, 1.0);
1142         out.frag_color_1 = float4(0.0, in.bright, 0.0, 1.0);
1143         out.frag_color_2 = float4(0.0, 0.0, in.bright, 1.0);
1144         return out;
1145     }
1146 
1147 */
1148 __gshared char[533] FS_OFFSCREEN_SOURCE_METAL_MACOS = [
1149     0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f,
1150     0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,
1151     0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a,
1152     0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20,
1153     0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,
1154     0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,
1155     0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,
1156     0x5f,0x30,0x20,0x5b,0x5b,0x63,0x6f,0x6c,0x6f,0x72,0x28,0x30,0x29,0x5d,0x5d,0x3b,
1157     0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,0x61,0x67,
1158     0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x31,0x20,0x5b,0x5b,0x63,0x6f,0x6c,0x6f,0x72,
1159     0x28,0x31,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,
1160     0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x32,0x20,0x5b,
1161     0x5b,0x63,0x6f,0x6c,0x6f,0x72,0x28,0x32,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,
1162     0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,
1163     0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x62,0x72,0x69,
1164     0x67,0x68,0x74,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,
1165     0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,
1166     0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,
1167     0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,
1168     0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,
1169     0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,
1170     0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,
1171     0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x30,0x20,0x3d,0x20,0x66,0x6c,0x6f,
1172     0x61,0x74,0x34,0x28,0x69,0x6e,0x2e,0x62,0x72,0x69,0x67,0x68,0x74,0x2c,0x20,0x30,
1173     0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,
1174     0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,
1175     0x72,0x5f,0x31,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x30,0x2e,0x30,
1176     0x2c,0x20,0x69,0x6e,0x2e,0x62,0x72,0x69,0x67,0x68,0x74,0x2c,0x20,0x30,0x2e,0x30,
1177     0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,
1178     0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x32,0x20,0x3d,0x20,0x66,
1179     0x6c,0x6f,0x61,0x74,0x34,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,
1180     0x69,0x6e,0x2e,0x62,0x72,0x69,0x67,0x68,0x74,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,
1181     0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,
1182     0x0a,0x7d,0x0a,0x0a,0x00,
1183 ];
1184 /*
1185     #include <metal_stdlib>
1186     #include <simd/simd.h>
1187 
1188     using namespace metal;
1189 
1190     struct fsq_params
1191     {
1192         float2 offset;
1193     };
1194 
1195     struct main0_out
1196     {
1197         float2 uv0 [[user(locn0)]];
1198         float2 uv1 [[user(locn1)]];
1199         float2 uv2 [[user(locn2)]];
1200         float4 gl_Position [[position]];
1201     };
1202 
1203     struct main0_in
1204     {
1205         float2 pos [[attribute(0)]];
1206     };
1207 
1208     vertex main0_out main0(main0_in in [[stage_in]], constant fsq_params& _36 [[buffer(0)]])
1209     {
1210         main0_out out = {};
1211         out.gl_Position = float4((in.pos * 2.0) - float2(1.0), 0.5, 1.0);
1212         out.uv0 = in.pos + float2(_36.offset.x, 0.0);
1213         out.uv1 = in.pos + float2(0.0, _36.offset.y);
1214         out.uv2 = in.pos;
1215         return out;
1216     }
1217 
1218 */
1219 __gshared char[653] VS_FSQ_SOURCE_METAL_MACOS = [
1220     0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f,
1221     0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,
1222     0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a,
1223     0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20,
1224     0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x66,
1225     0x73,0x71,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,
1226     0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x3b,0x0a,0x7d,
1227     0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,
1228     0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,
1229     0x20,0x75,0x76,0x30,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,
1230     0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,
1231     0x20,0x75,0x76,0x31,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,
1232     0x31,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,
1233     0x20,0x75,0x76,0x32,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,
1234     0x32,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,
1235     0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x5b,0x5b,0x70,
1236     0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x73,
1237     0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x0a,0x7b,
1238     0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x6f,0x73,0x20,
1239     0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,0x30,0x29,0x5d,0x5d,
1240     0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x76,0x65,0x72,0x74,0x65,0x78,0x20,0x6d,0x61,0x69,
1241     0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,
1242     0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,
1243     0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,
1244     0x66,0x73,0x71,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x26,0x20,0x5f,0x33,0x36,0x20,
1245     0x5b,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x29,0x0a,0x7b,
1246     0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,
1247     0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,
1248     0x2e,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x66,
1249     0x6c,0x6f,0x61,0x74,0x34,0x28,0x28,0x69,0x6e,0x2e,0x70,0x6f,0x73,0x20,0x2a,0x20,
1250     0x32,0x2e,0x30,0x29,0x20,0x2d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x31,0x2e,
1251     0x30,0x29,0x2c,0x20,0x30,0x2e,0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,
1252     0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x75,0x76,0x30,0x20,0x3d,0x20,0x69,0x6e,0x2e,
1253     0x70,0x6f,0x73,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x5f,0x33,0x36,
1254     0x2e,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,
1255     0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x75,0x76,0x31,0x20,0x3d,0x20,0x69,
1256     0x6e,0x2e,0x70,0x6f,0x73,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x30,
1257     0x2e,0x30,0x2c,0x20,0x5f,0x33,0x36,0x2e,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,
1258     0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x75,0x76,0x32,0x20,0x3d,
1259     0x20,0x69,0x6e,0x2e,0x70,0x6f,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,
1260     0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
1261 ];
1262 /*
1263     #include <metal_stdlib>
1264     #include <simd/simd.h>
1265 
1266     using namespace metal;
1267 
1268     struct main0_out
1269     {
1270         float4 frag_color [[color(0)]];
1271     };
1272 
1273     struct main0_in
1274     {
1275         float2 uv0 [[user(locn0)]];
1276         float2 uv1 [[user(locn1)]];
1277         float2 uv2 [[user(locn2)]];
1278     };
1279 
1280     fragment main0_out main0(main0_in in [[stage_in]], texture2d<float> tex0 [[texture(0)]], texture2d<float> tex1 [[texture(1)]], texture2d<float> tex2 [[texture(2)]], sampler smp [[sampler(0)]])
1281     {
1282         main0_out out = {};
1283         out.frag_color = float4((tex0.sample(smp, in.uv0).xyz + tex1.sample(smp, in.uv1).xyz) + tex2.sample(smp, in.uv2).xyz, 1.0);
1284         return out;
1285     }
1286 
1287 */
1288 __gshared char[616] FS_FSQ_SOURCE_METAL_MACOS = [
1289     0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f,
1290     0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,
1291     0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a,
1292     0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20,
1293     0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,
1294     0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,
1295     0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,
1296     0x20,0x5b,0x5b,0x63,0x6f,0x6c,0x6f,0x72,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,
1297     0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,
1298     0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,
1299     0x75,0x76,0x30,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,
1300     0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,
1301     0x75,0x76,0x31,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x31,
1302     0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,
1303     0x75,0x76,0x32,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x32,
1304     0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,
1305     0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,
1306     0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,
1307     0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78,0x74,
1308     0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x74,0x65,0x78,
1309     0x30,0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x30,0x29,0x5d,0x5d,
1310     0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,
1311     0x74,0x3e,0x20,0x74,0x65,0x78,0x31,0x20,0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72,
1312     0x65,0x28,0x31,0x29,0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x32,
1313     0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x74,0x65,0x78,0x32,0x20,0x5b,0x5b,
1314     0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x32,0x29,0x5d,0x5d,0x2c,0x20,0x73,0x61,
1315     0x6d,0x70,0x6c,0x65,0x72,0x20,0x73,0x6d,0x70,0x20,0x5b,0x5b,0x73,0x61,0x6d,0x70,
1316     0x6c,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,
1317     0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,
1318     0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,
1319     0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,
1320     0x28,0x74,0x65,0x78,0x30,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x73,0x6d,0x70,
1321     0x2c,0x20,0x69,0x6e,0x2e,0x75,0x76,0x30,0x29,0x2e,0x78,0x79,0x7a,0x20,0x2b,0x20,
1322     0x74,0x65,0x78,0x31,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x73,0x6d,0x70,0x2c,
1323     0x20,0x69,0x6e,0x2e,0x75,0x76,0x31,0x29,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2b,0x20,
1324     0x74,0x65,0x78,0x32,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x73,0x6d,0x70,0x2c,
1325     0x20,0x69,0x6e,0x2e,0x75,0x76,0x32,0x29,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x31,0x2e,
1326     0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,
1327     0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
1328 ];
1329 /*
1330     #include <metal_stdlib>
1331     #include <simd/simd.h>
1332 
1333     using namespace metal;
1334 
1335     struct main0_out
1336     {
1337         float2 uv [[user(locn0)]];
1338         float4 gl_Position [[position]];
1339     };
1340 
1341     struct main0_in
1342     {
1343         float2 pos [[attribute(0)]];
1344     };
1345 
1346     vertex main0_out main0(main0_in in [[stage_in]])
1347     {
1348         main0_out out = {};
1349         out.gl_Position = float4((in.pos * 2.0) - float2(1.0), 0.5, 1.0);
1350         out.uv = in.pos;
1351         return out;
1352     }
1353 
1354 */
1355 __gshared char[404] VS_DBG_SOURCE_METAL_MACOS = [
1356     0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f,
1357     0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,
1358     0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a,
1359     0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20,
1360     0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,
1361     0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,
1362     0x6c,0x6f,0x61,0x74,0x32,0x20,0x75,0x76,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,
1363     0x6c,0x6f,0x63,0x6e,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,
1364     0x6f,0x61,0x74,0x34,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,
1365     0x20,0x5b,0x5b,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x5d,0x5d,0x3b,0x0a,0x7d,
1366     0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,
1367     0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,
1368     0x70,0x6f,0x73,0x20,0x5b,0x5b,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x28,
1369     0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x76,0x65,0x72,0x74,0x65,0x78,
1370     0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,
1371     0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,
1372     0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,
1373     0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,
1374     0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x67,0x6c,0x5f,
1375     0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,
1376     0x34,0x28,0x28,0x69,0x6e,0x2e,0x70,0x6f,0x73,0x20,0x2a,0x20,0x32,0x2e,0x30,0x29,
1377     0x20,0x2d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x31,0x2e,0x30,0x29,0x2c,0x20,
1378     0x30,0x2e,0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,
1379     0x75,0x74,0x2e,0x75,0x76,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x70,0x6f,0x73,0x3b,0x0a,
1380     0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,
1381     0x7d,0x0a,0x0a,0x00,
1382 ];
1383 /*
1384     #include <metal_stdlib>
1385     #include <simd/simd.h>
1386 
1387     using namespace metal;
1388 
1389     struct main0_out
1390     {
1391         float4 frag_color [[color(0)]];
1392     };
1393 
1394     struct main0_in
1395     {
1396         float2 uv [[user(locn0)]];
1397     };
1398 
1399     fragment main0_out main0(main0_in in [[stage_in]], texture2d<float> tex [[texture(0)]], sampler smp [[sampler(0)]])
1400     {
1401         main0_out out = {};
1402         out.frag_color = float4(tex.sample(smp, in.uv).xyz, 1.0);
1403         return out;
1404     }
1405 
1406 */
1407 __gshared char[408] FS_DBG_SOURCE_METAL_MACOS = [
1408     0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x20,0x3c,0x6d,0x65,0x74,0x61,0x6c,0x5f,
1409     0x73,0x74,0x64,0x6c,0x69,0x62,0x3e,0x0a,0x23,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,
1410     0x20,0x3c,0x73,0x69,0x6d,0x64,0x2f,0x73,0x69,0x6d,0x64,0x2e,0x68,0x3e,0x0a,0x0a,
1411     0x75,0x73,0x69,0x6e,0x67,0x20,0x6e,0x61,0x6d,0x65,0x73,0x70,0x61,0x63,0x65,0x20,
1412     0x6d,0x65,0x74,0x61,0x6c,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,
1413     0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,
1414     0x6c,0x6f,0x61,0x74,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,
1415     0x20,0x5b,0x5b,0x63,0x6f,0x6c,0x6f,0x72,0x28,0x30,0x29,0x5d,0x5d,0x3b,0x0a,0x7d,
1416     0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,
1417     0x69,0x6e,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,
1418     0x75,0x76,0x20,0x5b,0x5b,0x75,0x73,0x65,0x72,0x28,0x6c,0x6f,0x63,0x6e,0x30,0x29,
1419     0x5d,0x5d,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,
1420     0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,
1421     0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,
1422     0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x74,0x65,0x78,0x74,0x75,
1423     0x72,0x65,0x32,0x64,0x3c,0x66,0x6c,0x6f,0x61,0x74,0x3e,0x20,0x74,0x65,0x78,0x20,
1424     0x5b,0x5b,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x30,0x29,0x5d,0x5d,0x2c,0x20,
1425     0x73,0x61,0x6d,0x70,0x6c,0x65,0x72,0x20,0x73,0x6d,0x70,0x20,0x5b,0x5b,0x73,0x61,
1426     0x6d,0x70,0x6c,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,
1427     0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,
1428     0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,
1429     0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,
1430     0x34,0x28,0x74,0x65,0x78,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x73,0x6d,0x70,
1431     0x2c,0x20,0x69,0x6e,0x2e,0x75,0x76,0x29,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x31,0x2e,
1432     0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,
1433     0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
1434 ];
1435 /*
1436     diagnostic(off, derivative_uniformity);
1437 
1438     struct offscreen_params {
1439       /_ @offset(0) _/
1440       mvp : mat4x4f,
1441     }
1442 
1443     @binding(0) @group(0) var<uniform> x_19 : offscreen_params;
1444 
1445     var<private> pos : vec4f;
1446 
1447     var<private> bright : f32;
1448 
1449     var<private> bright0 : f32;
1450 
1451     var<private> gl_Position : vec4f;
1452 
1453     fn main_1() {
1454       gl_Position = (x_19.mvp * pos);
1455       bright = bright0;
1456       return;
1457     }
1458 
1459     struct main_out {
1460       @builtin(position)
1461       gl_Position : vec4f,
1462       @location(0)
1463       bright_1 : f32,
1464     }
1465 
1466     @vertex
1467     fn main(@location(0) pos_param : vec4f, @location(1) bright0_param : f32) -> main_out {
1468       pos = pos_param;
1469       bright0 = bright0_param;
1470       main_1();
1471       return main_out(gl_Position, bright);
1472     }
1473 */
1474 __gshared char[662] VS_OFFSCREEN_SOURCE_WGSL = [
1475     0x64,0x69,0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x28,0x6f,0x66,0x66,0x2c,0x20,
1476     0x64,0x65,0x72,0x69,0x76,0x61,0x74,0x69,0x76,0x65,0x5f,0x75,0x6e,0x69,0x66,0x6f,
1477     0x72,0x6d,0x69,0x74,0x79,0x29,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,
1478     0x6f,0x66,0x66,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,
1479     0x20,0x7b,0x0a,0x20,0x20,0x2f,0x2a,0x20,0x40,0x6f,0x66,0x66,0x73,0x65,0x74,0x28,
1480     0x30,0x29,0x20,0x2a,0x2f,0x0a,0x20,0x20,0x6d,0x76,0x70,0x20,0x3a,0x20,0x6d,0x61,
1481     0x74,0x34,0x78,0x34,0x66,0x2c,0x0a,0x7d,0x0a,0x0a,0x40,0x62,0x69,0x6e,0x64,0x69,
1482     0x6e,0x67,0x28,0x30,0x29,0x20,0x40,0x67,0x72,0x6f,0x75,0x70,0x28,0x30,0x29,0x20,
1483     0x76,0x61,0x72,0x3c,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x3e,0x20,0x78,0x5f,0x31,
1484     0x39,0x20,0x3a,0x20,0x6f,0x66,0x66,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x70,0x61,
1485     0x72,0x61,0x6d,0x73,0x3b,0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70,0x72,0x69,0x76,0x61,
1486     0x74,0x65,0x3e,0x20,0x70,0x6f,0x73,0x20,0x3a,0x20,0x76,0x65,0x63,0x34,0x66,0x3b,
1487     0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x3e,0x20,0x62,
1488     0x72,0x69,0x67,0x68,0x74,0x20,0x3a,0x20,0x66,0x33,0x32,0x3b,0x0a,0x0a,0x76,0x61,
1489     0x72,0x3c,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x3e,0x20,0x62,0x72,0x69,0x67,0x68,
1490     0x74,0x30,0x20,0x3a,0x20,0x66,0x33,0x32,0x3b,0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70,
1491     0x72,0x69,0x76,0x61,0x74,0x65,0x3e,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,
1492     0x69,0x6f,0x6e,0x20,0x3a,0x20,0x76,0x65,0x63,0x34,0x66,0x3b,0x0a,0x0a,0x66,0x6e,
1493     0x20,0x6d,0x61,0x69,0x6e,0x5f,0x31,0x28,0x29,0x20,0x7b,0x0a,0x20,0x20,0x67,0x6c,
1494     0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x28,0x78,0x5f,0x31,
1495     0x39,0x2e,0x6d,0x76,0x70,0x20,0x2a,0x20,0x70,0x6f,0x73,0x29,0x3b,0x0a,0x20,0x20,
1496     0x62,0x72,0x69,0x67,0x68,0x74,0x20,0x3d,0x20,0x62,0x72,0x69,0x67,0x68,0x74,0x30,
1497     0x3b,0x0a,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,
1498     0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x5f,0x6f,0x75,0x74,0x20,0x7b,
1499     0x0a,0x20,0x20,0x40,0x62,0x75,0x69,0x6c,0x74,0x69,0x6e,0x28,0x70,0x6f,0x73,0x69,
1500     0x74,0x69,0x6f,0x6e,0x29,0x0a,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,
1501     0x69,0x6f,0x6e,0x20,0x3a,0x20,0x76,0x65,0x63,0x34,0x66,0x2c,0x0a,0x20,0x20,0x40,
1502     0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x28,0x30,0x29,0x0a,0x20,0x20,0x62,0x72,
1503     0x69,0x67,0x68,0x74,0x5f,0x31,0x20,0x3a,0x20,0x66,0x33,0x32,0x2c,0x0a,0x7d,0x0a,
1504     0x0a,0x40,0x76,0x65,0x72,0x74,0x65,0x78,0x0a,0x66,0x6e,0x20,0x6d,0x61,0x69,0x6e,
1505     0x28,0x40,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x28,0x30,0x29,0x20,0x70,0x6f,
1506     0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x20,0x3a,0x20,0x76,0x65,0x63,0x34,0x66,0x2c,
1507     0x20,0x40,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x28,0x31,0x29,0x20,0x62,0x72,
1508     0x69,0x67,0x68,0x74,0x30,0x5f,0x70,0x61,0x72,0x61,0x6d,0x20,0x3a,0x20,0x66,0x33,
1509     0x32,0x29,0x20,0x2d,0x3e,0x20,0x6d,0x61,0x69,0x6e,0x5f,0x6f,0x75,0x74,0x20,0x7b,
1510     0x0a,0x20,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x70,0x6f,0x73,0x5f,0x70,0x61,0x72,
1511     0x61,0x6d,0x3b,0x0a,0x20,0x20,0x62,0x72,0x69,0x67,0x68,0x74,0x30,0x20,0x3d,0x20,
1512     0x62,0x72,0x69,0x67,0x68,0x74,0x30,0x5f,0x70,0x61,0x72,0x61,0x6d,0x3b,0x0a,0x20,
1513     0x20,0x6d,0x61,0x69,0x6e,0x5f,0x31,0x28,0x29,0x3b,0x0a,0x20,0x20,0x72,0x65,0x74,
1514     0x75,0x72,0x6e,0x20,0x6d,0x61,0x69,0x6e,0x5f,0x6f,0x75,0x74,0x28,0x67,0x6c,0x5f,
1515     0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x2c,0x20,0x62,0x72,0x69,0x67,0x68,0x74,
1516     0x29,0x3b,0x0a,0x7d,0x0a,0x00,
1517 ];
1518 /*
1519     diagnostic(off, derivative_uniformity);
1520 
1521     var<private> frag_color_0 : vec4f;
1522 
1523     var<private> bright : f32;
1524 
1525     var<private> frag_color_1 : vec4f;
1526 
1527     var<private> frag_color_2 : vec4f;
1528 
1529     fn main_1() {
1530       frag_color_0 = vec4f(bright, 0.0f, 0.0f, 1.0f);
1531       frag_color_1 = vec4f(0.0f, bright, 0.0f, 1.0f);
1532       frag_color_2 = vec4f(0.0f, 0.0f, bright, 1.0f);
1533       return;
1534     }
1535 
1536     struct main_out {
1537       @location(0)
1538       frag_color_0_1 : vec4f,
1539       @location(1)
1540       frag_color_1_1 : vec4f,
1541       @location(2)
1542       frag_color_2_1 : vec4f,
1543     }
1544 
1545     @fragment
1546     fn main(@location(0) bright_param : f32) -> main_out {
1547       bright = bright_param;
1548       main_1();
1549       return main_out(frag_color_0, frag_color_1, frag_color_2);
1550     }
1551 */
1552 __gshared char[664] FS_OFFSCREEN_SOURCE_WGSL = [
1553     0x64,0x69,0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x28,0x6f,0x66,0x66,0x2c,0x20,
1554     0x64,0x65,0x72,0x69,0x76,0x61,0x74,0x69,0x76,0x65,0x5f,0x75,0x6e,0x69,0x66,0x6f,
1555     0x72,0x6d,0x69,0x74,0x79,0x29,0x3b,0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70,0x72,0x69,
1556     0x76,0x61,0x74,0x65,0x3e,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,
1557     0x5f,0x30,0x20,0x3a,0x20,0x76,0x65,0x63,0x34,0x66,0x3b,0x0a,0x0a,0x76,0x61,0x72,
1558     0x3c,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x3e,0x20,0x62,0x72,0x69,0x67,0x68,0x74,
1559     0x20,0x3a,0x20,0x66,0x33,0x32,0x3b,0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70,0x72,0x69,
1560     0x76,0x61,0x74,0x65,0x3e,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,
1561     0x5f,0x31,0x20,0x3a,0x20,0x76,0x65,0x63,0x34,0x66,0x3b,0x0a,0x0a,0x76,0x61,0x72,
1562     0x3c,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x3e,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,
1563     0x6f,0x6c,0x6f,0x72,0x5f,0x32,0x20,0x3a,0x20,0x76,0x65,0x63,0x34,0x66,0x3b,0x0a,
1564     0x0a,0x66,0x6e,0x20,0x6d,0x61,0x69,0x6e,0x5f,0x31,0x28,0x29,0x20,0x7b,0x0a,0x20,
1565     0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x30,0x20,0x3d,0x20,
1566     0x76,0x65,0x63,0x34,0x66,0x28,0x62,0x72,0x69,0x67,0x68,0x74,0x2c,0x20,0x30,0x2e,
1567     0x30,0x66,0x2c,0x20,0x30,0x2e,0x30,0x66,0x2c,0x20,0x31,0x2e,0x30,0x66,0x29,0x3b,
1568     0x0a,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x31,0x20,
1569     0x3d,0x20,0x76,0x65,0x63,0x34,0x66,0x28,0x30,0x2e,0x30,0x66,0x2c,0x20,0x62,0x72,
1570     0x69,0x67,0x68,0x74,0x2c,0x20,0x30,0x2e,0x30,0x66,0x2c,0x20,0x31,0x2e,0x30,0x66,
1571     0x29,0x3b,0x0a,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,
1572     0x32,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x66,0x28,0x30,0x2e,0x30,0x66,0x2c,0x20,
1573     0x30,0x2e,0x30,0x66,0x2c,0x20,0x62,0x72,0x69,0x67,0x68,0x74,0x2c,0x20,0x31,0x2e,
1574     0x30,0x66,0x29,0x3b,0x0a,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x3b,0x0a,0x7d,
1575     0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,0x6e,0x5f,0x6f,0x75,
1576     0x74,0x20,0x7b,0x0a,0x20,0x20,0x40,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x28,
1577     0x30,0x29,0x0a,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,
1578     0x30,0x5f,0x31,0x20,0x3a,0x20,0x76,0x65,0x63,0x34,0x66,0x2c,0x0a,0x20,0x20,0x40,
1579     0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x28,0x31,0x29,0x0a,0x20,0x20,0x66,0x72,
1580     0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x5f,0x31,0x5f,0x31,0x20,0x3a,0x20,0x76,
1581     0x65,0x63,0x34,0x66,0x2c,0x0a,0x20,0x20,0x40,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,
1582     0x6e,0x28,0x32,0x29,0x0a,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,
1583     0x72,0x5f,0x32,0x5f,0x31,0x20,0x3a,0x20,0x76,0x65,0x63,0x34,0x66,0x2c,0x0a,0x7d,
1584     0x0a,0x0a,0x40,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x0a,0x66,0x6e,0x20,0x6d,
1585     0x61,0x69,0x6e,0x28,0x40,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x28,0x30,0x29,
1586     0x20,0x62,0x72,0x69,0x67,0x68,0x74,0x5f,0x70,0x61,0x72,0x61,0x6d,0x20,0x3a,0x20,
1587     0x66,0x33,0x32,0x29,0x20,0x2d,0x3e,0x20,0x6d,0x61,0x69,0x6e,0x5f,0x6f,0x75,0x74,
1588     0x20,0x7b,0x0a,0x20,0x20,0x62,0x72,0x69,0x67,0x68,0x74,0x20,0x3d,0x20,0x62,0x72,
1589     0x69,0x67,0x68,0x74,0x5f,0x70,0x61,0x72,0x61,0x6d,0x3b,0x0a,0x20,0x20,0x6d,0x61,
1590     0x69,0x6e,0x5f,0x31,0x28,0x29,0x3b,0x0a,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,
1591     0x20,0x6d,0x61,0x69,0x6e,0x5f,0x6f,0x75,0x74,0x28,0x66,0x72,0x61,0x67,0x5f,0x63,
1592     0x6f,0x6c,0x6f,0x72,0x5f,0x30,0x2c,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,
1593     0x6f,0x72,0x5f,0x31,0x2c,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,
1594     0x5f,0x32,0x29,0x3b,0x0a,0x7d,0x0a,0x00,
1595 ];
1596 /*
1597     diagnostic(off, derivative_uniformity);
1598 
1599     struct fsq_params {
1600       /_ @offset(0) _/
1601       offset : vec2f,
1602     }
1603 
1604     var<private> pos : vec2f;
1605 
1606     var<private> uv0 : vec2f;
1607 
1608     @binding(0) @group(0) var<uniform> x_36 : fsq_params;
1609 
1610     var<private> uv1 : vec2f;
1611 
1612     var<private> uv2 : vec2f;
1613 
1614     var<private> gl_Position : vec4f;
1615 
1616     fn main_1() {
1617       let x_24 = ((pos * 2.0f) - vec2f(1.0f));
1618       gl_Position = vec4f(x_24.x, x_24.y, 0.5f, 1.0f);
1619       uv0 = (pos + vec2f(x_36.offset.x, 0.0f));
1620       uv1 = (pos + vec2f(0.0f, x_36.offset.y));
1621       uv2 = pos;
1622       return;
1623     }
1624 
1625     struct main_out {
1626       @builtin(position)
1627       gl_Position : vec4f,
1628       @location(0)
1629       uv0_1 : vec2f,
1630       @location(1)
1631       uv1_1 : vec2f,
1632       @location(2)
1633       uv2_1 : vec2f,
1634     }
1635 
1636     @vertex
1637     fn main(@location(0) pos_param : vec2f) -> main_out {
1638       pos = pos_param;
1639       main_1();
1640       return main_out(gl_Position, uv0, uv1, uv2);
1641     }
1642 */
1643 __gshared char[825] VS_FSQ_SOURCE_WGSL = [
1644     0x64,0x69,0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x28,0x6f,0x66,0x66,0x2c,0x20,
1645     0x64,0x65,0x72,0x69,0x76,0x61,0x74,0x69,0x76,0x65,0x5f,0x75,0x6e,0x69,0x66,0x6f,
1646     0x72,0x6d,0x69,0x74,0x79,0x29,0x3b,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,
1647     0x66,0x73,0x71,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x20,0x7b,0x0a,0x20,0x20,0x2f,
1648     0x2a,0x20,0x40,0x6f,0x66,0x66,0x73,0x65,0x74,0x28,0x30,0x29,0x20,0x2a,0x2f,0x0a,
1649     0x20,0x20,0x6f,0x66,0x66,0x73,0x65,0x74,0x20,0x3a,0x20,0x76,0x65,0x63,0x32,0x66,
1650     0x2c,0x0a,0x7d,0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70,0x72,0x69,0x76,0x61,0x74,0x65,
1651     0x3e,0x20,0x70,0x6f,0x73,0x20,0x3a,0x20,0x76,0x65,0x63,0x32,0x66,0x3b,0x0a,0x0a,
1652     0x76,0x61,0x72,0x3c,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x3e,0x20,0x75,0x76,0x30,
1653     0x20,0x3a,0x20,0x76,0x65,0x63,0x32,0x66,0x3b,0x0a,0x0a,0x40,0x62,0x69,0x6e,0x64,
1654     0x69,0x6e,0x67,0x28,0x30,0x29,0x20,0x40,0x67,0x72,0x6f,0x75,0x70,0x28,0x30,0x29,
1655     0x20,0x76,0x61,0x72,0x3c,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x3e,0x20,0x78,0x5f,
1656     0x33,0x36,0x20,0x3a,0x20,0x66,0x73,0x71,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x3b,
1657     0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x3e,0x20,0x75,
1658     0x76,0x31,0x20,0x3a,0x20,0x76,0x65,0x63,0x32,0x66,0x3b,0x0a,0x0a,0x76,0x61,0x72,
1659     0x3c,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x3e,0x20,0x75,0x76,0x32,0x20,0x3a,0x20,
1660     0x76,0x65,0x63,0x32,0x66,0x3b,0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70,0x72,0x69,0x76,
1661     0x61,0x74,0x65,0x3e,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,
1662     0x20,0x3a,0x20,0x76,0x65,0x63,0x34,0x66,0x3b,0x0a,0x0a,0x66,0x6e,0x20,0x6d,0x61,
1663     0x69,0x6e,0x5f,0x31,0x28,0x29,0x20,0x7b,0x0a,0x20,0x20,0x6c,0x65,0x74,0x20,0x78,
1664     0x5f,0x32,0x34,0x20,0x3d,0x20,0x28,0x28,0x70,0x6f,0x73,0x20,0x2a,0x20,0x32,0x2e,
1665     0x30,0x66,0x29,0x20,0x2d,0x20,0x76,0x65,0x63,0x32,0x66,0x28,0x31,0x2e,0x30,0x66,
1666     0x29,0x29,0x3b,0x0a,0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,
1667     0x6e,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x66,0x28,0x78,0x5f,0x32,0x34,0x2e,0x78,
1668     0x2c,0x20,0x78,0x5f,0x32,0x34,0x2e,0x79,0x2c,0x20,0x30,0x2e,0x35,0x66,0x2c,0x20,
1669     0x31,0x2e,0x30,0x66,0x29,0x3b,0x0a,0x20,0x20,0x75,0x76,0x30,0x20,0x3d,0x20,0x28,
1670     0x70,0x6f,0x73,0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x66,0x28,0x78,0x5f,0x33,0x36,
1671     0x2e,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x78,0x2c,0x20,0x30,0x2e,0x30,0x66,0x29,
1672     0x29,0x3b,0x0a,0x20,0x20,0x75,0x76,0x31,0x20,0x3d,0x20,0x28,0x70,0x6f,0x73,0x20,
1673     0x2b,0x20,0x76,0x65,0x63,0x32,0x66,0x28,0x30,0x2e,0x30,0x66,0x2c,0x20,0x78,0x5f,
1674     0x33,0x36,0x2e,0x6f,0x66,0x66,0x73,0x65,0x74,0x2e,0x79,0x29,0x29,0x3b,0x0a,0x20,
1675     0x20,0x75,0x76,0x32,0x20,0x3d,0x20,0x70,0x6f,0x73,0x3b,0x0a,0x20,0x20,0x72,0x65,
1676     0x74,0x75,0x72,0x6e,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,
1677     0x6d,0x61,0x69,0x6e,0x5f,0x6f,0x75,0x74,0x20,0x7b,0x0a,0x20,0x20,0x40,0x62,0x75,
1678     0x69,0x6c,0x74,0x69,0x6e,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x0a,
1679     0x20,0x20,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3a,0x20,
1680     0x76,0x65,0x63,0x34,0x66,0x2c,0x0a,0x20,0x20,0x40,0x6c,0x6f,0x63,0x61,0x74,0x69,
1681     0x6f,0x6e,0x28,0x30,0x29,0x0a,0x20,0x20,0x75,0x76,0x30,0x5f,0x31,0x20,0x3a,0x20,
1682     0x76,0x65,0x63,0x32,0x66,0x2c,0x0a,0x20,0x20,0x40,0x6c,0x6f,0x63,0x61,0x74,0x69,
1683     0x6f,0x6e,0x28,0x31,0x29,0x0a,0x20,0x20,0x75,0x76,0x31,0x5f,0x31,0x20,0x3a,0x20,
1684     0x76,0x65,0x63,0x32,0x66,0x2c,0x0a,0x20,0x20,0x40,0x6c,0x6f,0x63,0x61,0x74,0x69,
1685     0x6f,0x6e,0x28,0x32,0x29,0x0a,0x20,0x20,0x75,0x76,0x32,0x5f,0x31,0x20,0x3a,0x20,
1686     0x76,0x65,0x63,0x32,0x66,0x2c,0x0a,0x7d,0x0a,0x0a,0x40,0x76,0x65,0x72,0x74,0x65,
1687     0x78,0x0a,0x66,0x6e,0x20,0x6d,0x61,0x69,0x6e,0x28,0x40,0x6c,0x6f,0x63,0x61,0x74,
1688     0x69,0x6f,0x6e,0x28,0x30,0x29,0x20,0x70,0x6f,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,
1689     0x20,0x3a,0x20,0x76,0x65,0x63,0x32,0x66,0x29,0x20,0x2d,0x3e,0x20,0x6d,0x61,0x69,
1690     0x6e,0x5f,0x6f,0x75,0x74,0x20,0x7b,0x0a,0x20,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,
1691     0x70,0x6f,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x3b,0x0a,0x20,0x20,0x6d,0x61,0x69,
1692     0x6e,0x5f,0x31,0x28,0x29,0x3b,0x0a,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,
1693     0x6d,0x61,0x69,0x6e,0x5f,0x6f,0x75,0x74,0x28,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,
1694     0x74,0x69,0x6f,0x6e,0x2c,0x20,0x75,0x76,0x30,0x2c,0x20,0x75,0x76,0x31,0x2c,0x20,
1695     0x75,0x76,0x32,0x29,0x3b,0x0a,0x7d,0x0a,0x00,
1696 ];
1697 /*
1698     diagnostic(off, derivative_uniformity);
1699 
1700     @binding(64) @group(1) var tex0 : texture_2d<f32>;
1701 
1702     @binding(80) @group(1) var smp : sampler;
1703 
1704     var<private> uv0 : vec2f;
1705 
1706     @binding(65) @group(1) var tex1 : texture_2d<f32>;
1707 
1708     var<private> uv1 : vec2f;
1709 
1710     @binding(66) @group(1) var tex2 : texture_2d<f32>;
1711 
1712     var<private> uv2 : vec2f;
1713 
1714     var<private> frag_color : vec4f;
1715 
1716     fn main_1() {
1717       var c0 : vec3f;
1718       var c1 : vec3f;
1719       var c2 : vec3f;
1720       let x_23 = uv0;
1721       let x_25 = textureSample(tex0, smp, x_23);
1722       c0 = x_25.xyz;
1723       let x_33 = uv1;
1724       let x_34 = textureSample(tex1, smp, x_33);
1725       c1 = x_34.xyz;
1726       let x_42 = uv2;
1727       let x_43 = textureSample(tex2, smp, x_42);
1728       c2 = x_43.xyz;
1729       let x_51 = ((c0 + c1) + c2);
1730       frag_color = vec4f(x_51.x, x_51.y, x_51.z, 1.0f);
1731       return;
1732     }
1733 
1734     struct main_out {
1735       @location(0)
1736       frag_color_1 : vec4f,
1737     }
1738 
1739     @fragment
1740     fn main(@location(0) uv0_param : vec2f, @location(1) uv1_param : vec2f, @location(2) uv2_param : vec2f) -> main_out {
1741       uv0 = uv0_param;
1742       uv1 = uv1_param;
1743       uv2 = uv2_param;
1744       main_1();
1745       return main_out(frag_color);
1746     }
1747 */
1748 __gshared char[1050] FS_FSQ_SOURCE_WGSL = [
1749     0x64,0x69,0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x28,0x6f,0x66,0x66,0x2c,0x20,
1750     0x64,0x65,0x72,0x69,0x76,0x61,0x74,0x69,0x76,0x65,0x5f,0x75,0x6e,0x69,0x66,0x6f,
1751     0x72,0x6d,0x69,0x74,0x79,0x29,0x3b,0x0a,0x0a,0x40,0x62,0x69,0x6e,0x64,0x69,0x6e,
1752     0x67,0x28,0x36,0x34,0x29,0x20,0x40,0x67,0x72,0x6f,0x75,0x70,0x28,0x31,0x29,0x20,
1753     0x76,0x61,0x72,0x20,0x74,0x65,0x78,0x30,0x20,0x3a,0x20,0x74,0x65,0x78,0x74,0x75,
1754     0x72,0x65,0x5f,0x32,0x64,0x3c,0x66,0x33,0x32,0x3e,0x3b,0x0a,0x0a,0x40,0x62,0x69,
1755     0x6e,0x64,0x69,0x6e,0x67,0x28,0x38,0x30,0x29,0x20,0x40,0x67,0x72,0x6f,0x75,0x70,
1756     0x28,0x31,0x29,0x20,0x76,0x61,0x72,0x20,0x73,0x6d,0x70,0x20,0x3a,0x20,0x73,0x61,
1757     0x6d,0x70,0x6c,0x65,0x72,0x3b,0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70,0x72,0x69,0x76,
1758     0x61,0x74,0x65,0x3e,0x20,0x75,0x76,0x30,0x20,0x3a,0x20,0x76,0x65,0x63,0x32,0x66,
1759     0x3b,0x0a,0x0a,0x40,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x28,0x36,0x35,0x29,0x20,
1760     0x40,0x67,0x72,0x6f,0x75,0x70,0x28,0x31,0x29,0x20,0x76,0x61,0x72,0x20,0x74,0x65,
1761     0x78,0x31,0x20,0x3a,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x5f,0x32,0x64,0x3c,
1762     0x66,0x33,0x32,0x3e,0x3b,0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70,0x72,0x69,0x76,0x61,
1763     0x74,0x65,0x3e,0x20,0x75,0x76,0x31,0x20,0x3a,0x20,0x76,0x65,0x63,0x32,0x66,0x3b,
1764     0x0a,0x0a,0x40,0x62,0x69,0x6e,0x64,0x69,0x6e,0x67,0x28,0x36,0x36,0x29,0x20,0x40,
1765     0x67,0x72,0x6f,0x75,0x70,0x28,0x31,0x29,0x20,0x76,0x61,0x72,0x20,0x74,0x65,0x78,
1766     0x32,0x20,0x3a,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x5f,0x32,0x64,0x3c,0x66,
1767     0x33,0x32,0x3e,0x3b,0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70,0x72,0x69,0x76,0x61,0x74,
1768     0x65,0x3e,0x20,0x75,0x76,0x32,0x20,0x3a,0x20,0x76,0x65,0x63,0x32,0x66,0x3b,0x0a,
1769     0x0a,0x76,0x61,0x72,0x3c,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x3e,0x20,0x66,0x72,
1770     0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3a,0x20,0x76,0x65,0x63,0x34,0x66,
1771     0x3b,0x0a,0x0a,0x66,0x6e,0x20,0x6d,0x61,0x69,0x6e,0x5f,0x31,0x28,0x29,0x20,0x7b,
1772     0x0a,0x20,0x20,0x76,0x61,0x72,0x20,0x63,0x30,0x20,0x3a,0x20,0x76,0x65,0x63,0x33,
1773     0x66,0x3b,0x0a,0x20,0x20,0x76,0x61,0x72,0x20,0x63,0x31,0x20,0x3a,0x20,0x76,0x65,
1774     0x63,0x33,0x66,0x3b,0x0a,0x20,0x20,0x76,0x61,0x72,0x20,0x63,0x32,0x20,0x3a,0x20,
1775     0x76,0x65,0x63,0x33,0x66,0x3b,0x0a,0x20,0x20,0x6c,0x65,0x74,0x20,0x78,0x5f,0x32,
1776     0x33,0x20,0x3d,0x20,0x75,0x76,0x30,0x3b,0x0a,0x20,0x20,0x6c,0x65,0x74,0x20,0x78,
1777     0x5f,0x32,0x35,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x53,0x61,0x6d,
1778     0x70,0x6c,0x65,0x28,0x74,0x65,0x78,0x30,0x2c,0x20,0x73,0x6d,0x70,0x2c,0x20,0x78,
1779     0x5f,0x32,0x33,0x29,0x3b,0x0a,0x20,0x20,0x63,0x30,0x20,0x3d,0x20,0x78,0x5f,0x32,
1780     0x35,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x6c,0x65,0x74,0x20,0x78,0x5f,0x33,
1781     0x33,0x20,0x3d,0x20,0x75,0x76,0x31,0x3b,0x0a,0x20,0x20,0x6c,0x65,0x74,0x20,0x78,
1782     0x5f,0x33,0x34,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x53,0x61,0x6d,
1783     0x70,0x6c,0x65,0x28,0x74,0x65,0x78,0x31,0x2c,0x20,0x73,0x6d,0x70,0x2c,0x20,0x78,
1784     0x5f,0x33,0x33,0x29,0x3b,0x0a,0x20,0x20,0x63,0x31,0x20,0x3d,0x20,0x78,0x5f,0x33,
1785     0x34,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x6c,0x65,0x74,0x20,0x78,0x5f,0x34,
1786     0x32,0x20,0x3d,0x20,0x75,0x76,0x32,0x3b,0x0a,0x20,0x20,0x6c,0x65,0x74,0x20,0x78,
1787     0x5f,0x34,0x33,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x53,0x61,0x6d,
1788     0x70,0x6c,0x65,0x28,0x74,0x65,0x78,0x32,0x2c,0x20,0x73,0x6d,0x70,0x2c,0x20,0x78,
1789     0x5f,0x34,0x32,0x29,0x3b,0x0a,0x20,0x20,0x63,0x32,0x20,0x3d,0x20,0x78,0x5f,0x34,
1790     0x33,0x2e,0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x6c,0x65,0x74,0x20,0x78,0x5f,0x35,
1791     0x31,0x20,0x3d,0x20,0x28,0x28,0x63,0x30,0x20,0x2b,0x20,0x63,0x31,0x29,0x20,0x2b,
1792     0x20,0x63,0x32,0x29,0x3b,0x0a,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,
1793     0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x66,0x28,0x78,0x5f,0x35,0x31,0x2e,
1794     0x78,0x2c,0x20,0x78,0x5f,0x35,0x31,0x2e,0x79,0x2c,0x20,0x78,0x5f,0x35,0x31,0x2e,
1795     0x7a,0x2c,0x20,0x31,0x2e,0x30,0x66,0x29,0x3b,0x0a,0x20,0x20,0x72,0x65,0x74,0x75,
1796     0x72,0x6e,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,
1797     0x69,0x6e,0x5f,0x6f,0x75,0x74,0x20,0x7b,0x0a,0x20,0x20,0x40,0x6c,0x6f,0x63,0x61,
1798     0x74,0x69,0x6f,0x6e,0x28,0x30,0x29,0x0a,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,
1799     0x6f,0x6c,0x6f,0x72,0x5f,0x31,0x20,0x3a,0x20,0x76,0x65,0x63,0x34,0x66,0x2c,0x0a,
1800     0x7d,0x0a,0x0a,0x40,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x0a,0x66,0x6e,0x20,
1801     0x6d,0x61,0x69,0x6e,0x28,0x40,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x28,0x30,
1802     0x29,0x20,0x75,0x76,0x30,0x5f,0x70,0x61,0x72,0x61,0x6d,0x20,0x3a,0x20,0x76,0x65,
1803     0x63,0x32,0x66,0x2c,0x20,0x40,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x28,0x31,
1804     0x29,0x20,0x75,0x76,0x31,0x5f,0x70,0x61,0x72,0x61,0x6d,0x20,0x3a,0x20,0x76,0x65,
1805     0x63,0x32,0x66,0x2c,0x20,0x40,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x28,0x32,
1806     0x29,0x20,0x75,0x76,0x32,0x5f,0x70,0x61,0x72,0x61,0x6d,0x20,0x3a,0x20,0x76,0x65,
1807     0x63,0x32,0x66,0x29,0x20,0x2d,0x3e,0x20,0x6d,0x61,0x69,0x6e,0x5f,0x6f,0x75,0x74,
1808     0x20,0x7b,0x0a,0x20,0x20,0x75,0x76,0x30,0x20,0x3d,0x20,0x75,0x76,0x30,0x5f,0x70,
1809     0x61,0x72,0x61,0x6d,0x3b,0x0a,0x20,0x20,0x75,0x76,0x31,0x20,0x3d,0x20,0x75,0x76,
1810     0x31,0x5f,0x70,0x61,0x72,0x61,0x6d,0x3b,0x0a,0x20,0x20,0x75,0x76,0x32,0x20,0x3d,
1811     0x20,0x75,0x76,0x32,0x5f,0x70,0x61,0x72,0x61,0x6d,0x3b,0x0a,0x20,0x20,0x6d,0x61,
1812     0x69,0x6e,0x5f,0x31,0x28,0x29,0x3b,0x0a,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,
1813     0x20,0x6d,0x61,0x69,0x6e,0x5f,0x6f,0x75,0x74,0x28,0x66,0x72,0x61,0x67,0x5f,0x63,
1814     0x6f,0x6c,0x6f,0x72,0x29,0x3b,0x0a,0x7d,0x0a,0x00,
1815 ];
1816 /*
1817     diagnostic(off, derivative_uniformity);
1818 
1819     var<private> pos : vec2f;
1820 
1821     var<private> uv : vec2f;
1822 
1823     var<private> gl_Position : vec4f;
1824 
1825     fn main_1() {
1826       let x_24 = ((pos * 2.0f) - vec2f(1.0f));
1827       gl_Position = vec4f(x_24.x, x_24.y, 0.5f, 1.0f);
1828       uv = pos;
1829       return;
1830     }
1831 
1832     struct main_out {
1833       @builtin(position)
1834       gl_Position : vec4f,
1835       @location(0)
1836       uv_1 : vec2f,
1837     }
1838 
1839     @vertex
1840     fn main(@location(0) pos_param : vec2f) -> main_out {
1841       pos = pos_param;
1842       main_1();
1843       return main_out(gl_Position, uv);
1844     }
1845 */
1846 __gshared char[490] VS_DBG_SOURCE_WGSL = [
1847     0x64,0x69,0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x28,0x6f,0x66,0x66,0x2c,0x20,
1848     0x64,0x65,0x72,0x69,0x76,0x61,0x74,0x69,0x76,0x65,0x5f,0x75,0x6e,0x69,0x66,0x6f,
1849     0x72,0x6d,0x69,0x74,0x79,0x29,0x3b,0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70,0x72,0x69,
1850     0x76,0x61,0x74,0x65,0x3e,0x20,0x70,0x6f,0x73,0x20,0x3a,0x20,0x76,0x65,0x63,0x32,
1851     0x66,0x3b,0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x3e,
1852     0x20,0x75,0x76,0x20,0x3a,0x20,0x76,0x65,0x63,0x32,0x66,0x3b,0x0a,0x0a,0x76,0x61,
1853     0x72,0x3c,0x70,0x72,0x69,0x76,0x61,0x74,0x65,0x3e,0x20,0x67,0x6c,0x5f,0x50,0x6f,
1854     0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3a,0x20,0x76,0x65,0x63,0x34,0x66,0x3b,0x0a,
1855     0x0a,0x66,0x6e,0x20,0x6d,0x61,0x69,0x6e,0x5f,0x31,0x28,0x29,0x20,0x7b,0x0a,0x20,
1856     0x20,0x6c,0x65,0x74,0x20,0x78,0x5f,0x32,0x34,0x20,0x3d,0x20,0x28,0x28,0x70,0x6f,
1857     0x73,0x20,0x2a,0x20,0x32,0x2e,0x30,0x66,0x29,0x20,0x2d,0x20,0x76,0x65,0x63,0x32,
1858     0x66,0x28,0x31,0x2e,0x30,0x66,0x29,0x29,0x3b,0x0a,0x20,0x20,0x67,0x6c,0x5f,0x50,
1859     0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x66,0x28,
1860     0x78,0x5f,0x32,0x34,0x2e,0x78,0x2c,0x20,0x78,0x5f,0x32,0x34,0x2e,0x79,0x2c,0x20,
1861     0x30,0x2e,0x35,0x66,0x2c,0x20,0x31,0x2e,0x30,0x66,0x29,0x3b,0x0a,0x20,0x20,0x75,
1862     0x76,0x20,0x3d,0x20,0x70,0x6f,0x73,0x3b,0x0a,0x20,0x20,0x72,0x65,0x74,0x75,0x72,
1863     0x6e,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,
1864     0x6e,0x5f,0x6f,0x75,0x74,0x20,0x7b,0x0a,0x20,0x20,0x40,0x62,0x75,0x69,0x6c,0x74,
1865     0x69,0x6e,0x28,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x0a,0x20,0x20,0x67,
1866     0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x20,0x3a,0x20,0x76,0x65,0x63,
1867     0x34,0x66,0x2c,0x0a,0x20,0x20,0x40,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x28,
1868     0x30,0x29,0x0a,0x20,0x20,0x75,0x76,0x5f,0x31,0x20,0x3a,0x20,0x76,0x65,0x63,0x32,
1869     0x66,0x2c,0x0a,0x7d,0x0a,0x0a,0x40,0x76,0x65,0x72,0x74,0x65,0x78,0x0a,0x66,0x6e,
1870     0x20,0x6d,0x61,0x69,0x6e,0x28,0x40,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x28,
1871     0x30,0x29,0x20,0x70,0x6f,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x20,0x3a,0x20,0x76,
1872     0x65,0x63,0x32,0x66,0x29,0x20,0x2d,0x3e,0x20,0x6d,0x61,0x69,0x6e,0x5f,0x6f,0x75,
1873     0x74,0x20,0x7b,0x0a,0x20,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x70,0x6f,0x73,0x5f,
1874     0x70,0x61,0x72,0x61,0x6d,0x3b,0x0a,0x20,0x20,0x6d,0x61,0x69,0x6e,0x5f,0x31,0x28,
1875     0x29,0x3b,0x0a,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d,0x61,0x69,0x6e,
1876     0x5f,0x6f,0x75,0x74,0x28,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,
1877     0x2c,0x20,0x75,0x76,0x29,0x3b,0x0a,0x7d,0x0a,0x00,
1878 ];
1879 /*
1880     diagnostic(off, derivative_uniformity);
1881 
1882     var<private> frag_color : vec4f;
1883 
1884     @binding(64) @group(1) var tex : texture_2d<f32>;
1885 
1886     @binding(80) @group(1) var smp : sampler;
1887 
1888     var<private> uv : vec2f;
1889 
1890     fn main_1() {
1891       let x_23 = uv;
1892       let x_24 = textureSample(tex, smp, x_23);
1893       let x_26 = x_24.xyz;
1894       frag_color = vec4f(x_26.x, x_26.y, x_26.z, 1.0f);
1895       return;
1896     }
1897 
1898     struct main_out {
1899       @location(0)
1900       frag_color_1 : vec4f,
1901     }
1902 
1903     @fragment
1904     fn main(@location(0) uv_param : vec2f) -> main_out {
1905       uv = uv_param;
1906       main_1();
1907       return main_out(frag_color);
1908     }
1909 */
1910 __gshared char[544] FS_DBG_SOURCE_WGSL = [
1911     0x64,0x69,0x61,0x67,0x6e,0x6f,0x73,0x74,0x69,0x63,0x28,0x6f,0x66,0x66,0x2c,0x20,
1912     0x64,0x65,0x72,0x69,0x76,0x61,0x74,0x69,0x76,0x65,0x5f,0x75,0x6e,0x69,0x66,0x6f,
1913     0x72,0x6d,0x69,0x74,0x79,0x29,0x3b,0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70,0x72,0x69,
1914     0x76,0x61,0x74,0x65,0x3e,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,
1915     0x20,0x3a,0x20,0x76,0x65,0x63,0x34,0x66,0x3b,0x0a,0x0a,0x40,0x62,0x69,0x6e,0x64,
1916     0x69,0x6e,0x67,0x28,0x36,0x34,0x29,0x20,0x40,0x67,0x72,0x6f,0x75,0x70,0x28,0x31,
1917     0x29,0x20,0x76,0x61,0x72,0x20,0x74,0x65,0x78,0x20,0x3a,0x20,0x74,0x65,0x78,0x74,
1918     0x75,0x72,0x65,0x5f,0x32,0x64,0x3c,0x66,0x33,0x32,0x3e,0x3b,0x0a,0x0a,0x40,0x62,
1919     0x69,0x6e,0x64,0x69,0x6e,0x67,0x28,0x38,0x30,0x29,0x20,0x40,0x67,0x72,0x6f,0x75,
1920     0x70,0x28,0x31,0x29,0x20,0x76,0x61,0x72,0x20,0x73,0x6d,0x70,0x20,0x3a,0x20,0x73,
1921     0x61,0x6d,0x70,0x6c,0x65,0x72,0x3b,0x0a,0x0a,0x76,0x61,0x72,0x3c,0x70,0x72,0x69,
1922     0x76,0x61,0x74,0x65,0x3e,0x20,0x75,0x76,0x20,0x3a,0x20,0x76,0x65,0x63,0x32,0x66,
1923     0x3b,0x0a,0x0a,0x66,0x6e,0x20,0x6d,0x61,0x69,0x6e,0x5f,0x31,0x28,0x29,0x20,0x7b,
1924     0x0a,0x20,0x20,0x6c,0x65,0x74,0x20,0x78,0x5f,0x32,0x33,0x20,0x3d,0x20,0x75,0x76,
1925     0x3b,0x0a,0x20,0x20,0x6c,0x65,0x74,0x20,0x78,0x5f,0x32,0x34,0x20,0x3d,0x20,0x74,
1926     0x65,0x78,0x74,0x75,0x72,0x65,0x53,0x61,0x6d,0x70,0x6c,0x65,0x28,0x74,0x65,0x78,
1927     0x2c,0x20,0x73,0x6d,0x70,0x2c,0x20,0x78,0x5f,0x32,0x33,0x29,0x3b,0x0a,0x20,0x20,
1928     0x6c,0x65,0x74,0x20,0x78,0x5f,0x32,0x36,0x20,0x3d,0x20,0x78,0x5f,0x32,0x34,0x2e,
1929     0x78,0x79,0x7a,0x3b,0x0a,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,
1930     0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x66,0x28,0x78,0x5f,0x32,0x36,0x2e,0x78,
1931     0x2c,0x20,0x78,0x5f,0x32,0x36,0x2e,0x79,0x2c,0x20,0x78,0x5f,0x32,0x36,0x2e,0x7a,
1932     0x2c,0x20,0x31,0x2e,0x30,0x66,0x29,0x3b,0x0a,0x20,0x20,0x72,0x65,0x74,0x75,0x72,
1933     0x6e,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x72,0x75,0x63,0x74,0x20,0x6d,0x61,0x69,
1934     0x6e,0x5f,0x6f,0x75,0x74,0x20,0x7b,0x0a,0x20,0x20,0x40,0x6c,0x6f,0x63,0x61,0x74,
1935     0x69,0x6f,0x6e,0x28,0x30,0x29,0x0a,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,
1936     0x6c,0x6f,0x72,0x5f,0x31,0x20,0x3a,0x20,0x76,0x65,0x63,0x34,0x66,0x2c,0x0a,0x7d,
1937     0x0a,0x0a,0x40,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x0a,0x66,0x6e,0x20,0x6d,
1938     0x61,0x69,0x6e,0x28,0x40,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x28,0x30,0x29,
1939     0x20,0x75,0x76,0x5f,0x70,0x61,0x72,0x61,0x6d,0x20,0x3a,0x20,0x76,0x65,0x63,0x32,
1940     0x66,0x29,0x20,0x2d,0x3e,0x20,0x6d,0x61,0x69,0x6e,0x5f,0x6f,0x75,0x74,0x20,0x7b,
1941     0x0a,0x20,0x20,0x75,0x76,0x20,0x3d,0x20,0x75,0x76,0x5f,0x70,0x61,0x72,0x61,0x6d,
1942     0x3b,0x0a,0x20,0x20,0x6d,0x61,0x69,0x6e,0x5f,0x31,0x28,0x29,0x3b,0x0a,0x20,0x20,
1943     0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6d,0x61,0x69,0x6e,0x5f,0x6f,0x75,0x74,0x28,
1944     0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x29,0x3b,0x0a,0x7d,0x0a,0x00,
1945 
1946 ];
1947 sg.ShaderDesc dbgShaderDesc(sg.Backend backend) @trusted @nogc nothrow {
1948     sg.ShaderDesc desc;
1949     desc.label = "dbg_shader";
1950     switch (backend) {
1951         case sg.Backend.Glcore:
1952             desc.vertex_func.source = &VS_DBG_SOURCE_GLSL410[0];
1953             desc.vertex_func.entry = "main";
1954             desc.fragment_func.source = &FS_DBG_SOURCE_GLSL410[0];
1955             desc.fragment_func.entry = "main";
1956             desc.attrs[0].base_type = sg.ShaderAttrBaseType.Float;
1957             desc.attrs[0].glsl_name = "pos";
1958             desc.images[0].stage = sg.ShaderStage.Fragment;
1959             desc.images[0].multisampled = false;
1960             desc.images[0].image_type = sg.ImageType._2d;
1961             desc.images[0].sample_type = sg.ImageSampleType.Float;
1962             desc.samplers[0].stage = sg.ShaderStage.Fragment;
1963             desc.samplers[0].sampler_type = sg.SamplerType.Filtering;
1964             desc.image_sampler_pairs[0].stage = sg.ShaderStage.Fragment;
1965             desc.image_sampler_pairs[0].image_slot = 0;
1966             desc.image_sampler_pairs[0].sampler_slot = 0;
1967             desc.image_sampler_pairs[0].glsl_name = "tex_smp";
1968             break;
1969         case sg.Backend.Gles3:
1970             desc.vertex_func.source = &VS_DBG_SOURCE_GLSL300ES[0];
1971             desc.vertex_func.entry = "main";
1972             desc.fragment_func.source = &FS_DBG_SOURCE_GLSL300ES[0];
1973             desc.fragment_func.entry = "main";
1974             desc.attrs[0].base_type = sg.ShaderAttrBaseType.Float;
1975             desc.attrs[0].glsl_name = "pos";
1976             desc.images[0].stage = sg.ShaderStage.Fragment;
1977             desc.images[0].multisampled = false;
1978             desc.images[0].image_type = sg.ImageType._2d;
1979             desc.images[0].sample_type = sg.ImageSampleType.Float;
1980             desc.samplers[0].stage = sg.ShaderStage.Fragment;
1981             desc.samplers[0].sampler_type = sg.SamplerType.Filtering;
1982             desc.image_sampler_pairs[0].stage = sg.ShaderStage.Fragment;
1983             desc.image_sampler_pairs[0].image_slot = 0;
1984             desc.image_sampler_pairs[0].sampler_slot = 0;
1985             desc.image_sampler_pairs[0].glsl_name = "tex_smp";
1986             break;
1987         case sg.Backend.D3d11:
1988             desc.vertex_func.source = &VS_DBG_SOURCE_HLSL5[0];
1989             desc.vertex_func.d3d11_target = "vs_5_0";
1990             desc.vertex_func.entry = "main";
1991             desc.fragment_func.source = &FS_DBG_SOURCE_HLSL5[0];
1992             desc.fragment_func.d3d11_target = "ps_5_0";
1993             desc.fragment_func.entry = "main";
1994             desc.attrs[0].base_type = sg.ShaderAttrBaseType.Float;
1995             desc.attrs[0].hlsl_sem_name = "TEXCOORD";
1996             desc.attrs[0].hlsl_sem_index = 0;
1997             desc.images[0].stage = sg.ShaderStage.Fragment;
1998             desc.images[0].multisampled = false;
1999             desc.images[0].image_type = sg.ImageType._2d;
2000             desc.images[0].sample_type = sg.ImageSampleType.Float;
2001             desc.images[0].hlsl_register_t_n = 0;
2002             desc.samplers[0].stage = sg.ShaderStage.Fragment;
2003             desc.samplers[0].sampler_type = sg.SamplerType.Filtering;
2004             desc.samplers[0].hlsl_register_s_n = 0;
2005             desc.image_sampler_pairs[0].stage = sg.ShaderStage.Fragment;
2006             desc.image_sampler_pairs[0].image_slot = 0;
2007             desc.image_sampler_pairs[0].sampler_slot = 0;
2008             break;
2009         case sg.Backend.Metal_macos:
2010             desc.vertex_func.source = &VS_DBG_SOURCE_METAL_MACOS[0];
2011             desc.vertex_func.entry = "main0";
2012             desc.fragment_func.source = &FS_DBG_SOURCE_METAL_MACOS[0];
2013             desc.fragment_func.entry = "main0";
2014             desc.attrs[0].base_type = sg.ShaderAttrBaseType.Float;
2015             desc.images[0].stage = sg.ShaderStage.Fragment;
2016             desc.images[0].multisampled = false;
2017             desc.images[0].image_type = sg.ImageType._2d;
2018             desc.images[0].sample_type = sg.ImageSampleType.Float;
2019             desc.images[0].msl_texture_n = 0;
2020             desc.samplers[0].stage = sg.ShaderStage.Fragment;
2021             desc.samplers[0].sampler_type = sg.SamplerType.Filtering;
2022             desc.samplers[0].msl_sampler_n = 0;
2023             desc.image_sampler_pairs[0].stage = sg.ShaderStage.Fragment;
2024             desc.image_sampler_pairs[0].image_slot = 0;
2025             desc.image_sampler_pairs[0].sampler_slot = 0;
2026             break;
2027         case sg.Backend.Wgpu:
2028             desc.vertex_func.source = &VS_DBG_SOURCE_WGSL[0];
2029             desc.vertex_func.entry = "main";
2030             desc.fragment_func.source = &FS_DBG_SOURCE_WGSL[0];
2031             desc.fragment_func.entry = "main";
2032             desc.attrs[0].base_type = sg.ShaderAttrBaseType.Float;
2033             desc.images[0].stage = sg.ShaderStage.Fragment;
2034             desc.images[0].multisampled = false;
2035             desc.images[0].image_type = sg.ImageType._2d;
2036             desc.images[0].sample_type = sg.ImageSampleType.Float;
2037             desc.images[0].wgsl_group1_binding_n = 64;
2038             desc.samplers[0].stage = sg.ShaderStage.Fragment;
2039             desc.samplers[0].sampler_type = sg.SamplerType.Filtering;
2040             desc.samplers[0].wgsl_group1_binding_n = 80;
2041             desc.image_sampler_pairs[0].stage = sg.ShaderStage.Fragment;
2042             desc.image_sampler_pairs[0].image_slot = 0;
2043             desc.image_sampler_pairs[0].sampler_slot = 0;
2044             break;
2045         default: break;
2046     }
2047     return desc;
2048 }
2049 sg.ShaderDesc fsqShaderDesc(sg.Backend backend) @trusted @nogc nothrow {
2050     sg.ShaderDesc desc;
2051     desc.label = "fsq_shader";
2052     switch (backend) {
2053         case sg.Backend.Glcore:
2054             desc.vertex_func.source = &VS_FSQ_SOURCE_GLSL410[0];
2055             desc.vertex_func.entry = "main";
2056             desc.fragment_func.source = &FS_FSQ_SOURCE_GLSL410[0];
2057             desc.fragment_func.entry = "main";
2058             desc.attrs[0].base_type = sg.ShaderAttrBaseType.Float;
2059             desc.attrs[0].glsl_name = "pos";
2060             desc.uniform_blocks[0].stage = sg.ShaderStage.Vertex;
2061             desc.uniform_blocks[0].layout = sg.UniformLayout.Std140;
2062             desc.uniform_blocks[0].size = 16;
2063             desc.uniform_blocks[0].glsl_uniforms[0].type = sg.UniformType.Float4;
2064             desc.uniform_blocks[0].glsl_uniforms[0].array_count = 1;
2065             desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "fsq_params";
2066             desc.images[0].stage = sg.ShaderStage.Fragment;
2067             desc.images[0].multisampled = false;
2068             desc.images[0].image_type = sg.ImageType._2d;
2069             desc.images[0].sample_type = sg.ImageSampleType.Float;
2070             desc.images[1].stage = sg.ShaderStage.Fragment;
2071             desc.images[1].multisampled = false;
2072             desc.images[1].image_type = sg.ImageType._2d;
2073             desc.images[1].sample_type = sg.ImageSampleType.Float;
2074             desc.images[2].stage = sg.ShaderStage.Fragment;
2075             desc.images[2].multisampled = false;
2076             desc.images[2].image_type = sg.ImageType._2d;
2077             desc.images[2].sample_type = sg.ImageSampleType.Float;
2078             desc.samplers[0].stage = sg.ShaderStage.Fragment;
2079             desc.samplers[0].sampler_type = sg.SamplerType.Filtering;
2080             desc.image_sampler_pairs[0].stage = sg.ShaderStage.Fragment;
2081             desc.image_sampler_pairs[0].image_slot = 0;
2082             desc.image_sampler_pairs[0].sampler_slot = 0;
2083             desc.image_sampler_pairs[0].glsl_name = "tex0_smp";
2084             desc.image_sampler_pairs[1].stage = sg.ShaderStage.Fragment;
2085             desc.image_sampler_pairs[1].image_slot = 1;
2086             desc.image_sampler_pairs[1].sampler_slot = 0;
2087             desc.image_sampler_pairs[1].glsl_name = "tex1_smp";
2088             desc.image_sampler_pairs[2].stage = sg.ShaderStage.Fragment;
2089             desc.image_sampler_pairs[2].image_slot = 2;
2090             desc.image_sampler_pairs[2].sampler_slot = 0;
2091             desc.image_sampler_pairs[2].glsl_name = "tex2_smp";
2092             break;
2093         case sg.Backend.Gles3:
2094             desc.vertex_func.source = &VS_FSQ_SOURCE_GLSL300ES[0];
2095             desc.vertex_func.entry = "main";
2096             desc.fragment_func.source = &FS_FSQ_SOURCE_GLSL300ES[0];
2097             desc.fragment_func.entry = "main";
2098             desc.attrs[0].base_type = sg.ShaderAttrBaseType.Float;
2099             desc.attrs[0].glsl_name = "pos";
2100             desc.uniform_blocks[0].stage = sg.ShaderStage.Vertex;
2101             desc.uniform_blocks[0].layout = sg.UniformLayout.Std140;
2102             desc.uniform_blocks[0].size = 16;
2103             desc.uniform_blocks[0].glsl_uniforms[0].type = sg.UniformType.Float4;
2104             desc.uniform_blocks[0].glsl_uniforms[0].array_count = 1;
2105             desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "fsq_params";
2106             desc.images[0].stage = sg.ShaderStage.Fragment;
2107             desc.images[0].multisampled = false;
2108             desc.images[0].image_type = sg.ImageType._2d;
2109             desc.images[0].sample_type = sg.ImageSampleType.Float;
2110             desc.images[1].stage = sg.ShaderStage.Fragment;
2111             desc.images[1].multisampled = false;
2112             desc.images[1].image_type = sg.ImageType._2d;
2113             desc.images[1].sample_type = sg.ImageSampleType.Float;
2114             desc.images[2].stage = sg.ShaderStage.Fragment;
2115             desc.images[2].multisampled = false;
2116             desc.images[2].image_type = sg.ImageType._2d;
2117             desc.images[2].sample_type = sg.ImageSampleType.Float;
2118             desc.samplers[0].stage = sg.ShaderStage.Fragment;
2119             desc.samplers[0].sampler_type = sg.SamplerType.Filtering;
2120             desc.image_sampler_pairs[0].stage = sg.ShaderStage.Fragment;
2121             desc.image_sampler_pairs[0].image_slot = 0;
2122             desc.image_sampler_pairs[0].sampler_slot = 0;
2123             desc.image_sampler_pairs[0].glsl_name = "tex0_smp";
2124             desc.image_sampler_pairs[1].stage = sg.ShaderStage.Fragment;
2125             desc.image_sampler_pairs[1].image_slot = 1;
2126             desc.image_sampler_pairs[1].sampler_slot = 0;
2127             desc.image_sampler_pairs[1].glsl_name = "tex1_smp";
2128             desc.image_sampler_pairs[2].stage = sg.ShaderStage.Fragment;
2129             desc.image_sampler_pairs[2].image_slot = 2;
2130             desc.image_sampler_pairs[2].sampler_slot = 0;
2131             desc.image_sampler_pairs[2].glsl_name = "tex2_smp";
2132             break;
2133         case sg.Backend.D3d11:
2134             desc.vertex_func.source = &VS_FSQ_SOURCE_HLSL5[0];
2135             desc.vertex_func.d3d11_target = "vs_5_0";
2136             desc.vertex_func.entry = "main";
2137             desc.fragment_func.source = &FS_FSQ_SOURCE_HLSL5[0];
2138             desc.fragment_func.d3d11_target = "ps_5_0";
2139             desc.fragment_func.entry = "main";
2140             desc.attrs[0].base_type = sg.ShaderAttrBaseType.Float;
2141             desc.attrs[0].hlsl_sem_name = "TEXCOORD";
2142             desc.attrs[0].hlsl_sem_index = 0;
2143             desc.uniform_blocks[0].stage = sg.ShaderStage.Vertex;
2144             desc.uniform_blocks[0].layout = sg.UniformLayout.Std140;
2145             desc.uniform_blocks[0].size = 16;
2146             desc.uniform_blocks[0].hlsl_register_b_n = 0;
2147             desc.images[0].stage = sg.ShaderStage.Fragment;
2148             desc.images[0].multisampled = false;
2149             desc.images[0].image_type = sg.ImageType._2d;
2150             desc.images[0].sample_type = sg.ImageSampleType.Float;
2151             desc.images[0].hlsl_register_t_n = 0;
2152             desc.images[1].stage = sg.ShaderStage.Fragment;
2153             desc.images[1].multisampled = false;
2154             desc.images[1].image_type = sg.ImageType._2d;
2155             desc.images[1].sample_type = sg.ImageSampleType.Float;
2156             desc.images[1].hlsl_register_t_n = 1;
2157             desc.images[2].stage = sg.ShaderStage.Fragment;
2158             desc.images[2].multisampled = false;
2159             desc.images[2].image_type = sg.ImageType._2d;
2160             desc.images[2].sample_type = sg.ImageSampleType.Float;
2161             desc.images[2].hlsl_register_t_n = 2;
2162             desc.samplers[0].stage = sg.ShaderStage.Fragment;
2163             desc.samplers[0].sampler_type = sg.SamplerType.Filtering;
2164             desc.samplers[0].hlsl_register_s_n = 0;
2165             desc.image_sampler_pairs[0].stage = sg.ShaderStage.Fragment;
2166             desc.image_sampler_pairs[0].image_slot = 0;
2167             desc.image_sampler_pairs[0].sampler_slot = 0;
2168             desc.image_sampler_pairs[1].stage = sg.ShaderStage.Fragment;
2169             desc.image_sampler_pairs[1].image_slot = 1;
2170             desc.image_sampler_pairs[1].sampler_slot = 0;
2171             desc.image_sampler_pairs[2].stage = sg.ShaderStage.Fragment;
2172             desc.image_sampler_pairs[2].image_slot = 2;
2173             desc.image_sampler_pairs[2].sampler_slot = 0;
2174             break;
2175         case sg.Backend.Metal_macos:
2176             desc.vertex_func.source = &VS_FSQ_SOURCE_METAL_MACOS[0];
2177             desc.vertex_func.entry = "main0";
2178             desc.fragment_func.source = &FS_FSQ_SOURCE_METAL_MACOS[0];
2179             desc.fragment_func.entry = "main0";
2180             desc.attrs[0].base_type = sg.ShaderAttrBaseType.Float;
2181             desc.uniform_blocks[0].stage = sg.ShaderStage.Vertex;
2182             desc.uniform_blocks[0].layout = sg.UniformLayout.Std140;
2183             desc.uniform_blocks[0].size = 16;
2184             desc.uniform_blocks[0].msl_buffer_n = 0;
2185             desc.images[0].stage = sg.ShaderStage.Fragment;
2186             desc.images[0].multisampled = false;
2187             desc.images[0].image_type = sg.ImageType._2d;
2188             desc.images[0].sample_type = sg.ImageSampleType.Float;
2189             desc.images[0].msl_texture_n = 0;
2190             desc.images[1].stage = sg.ShaderStage.Fragment;
2191             desc.images[1].multisampled = false;
2192             desc.images[1].image_type = sg.ImageType._2d;
2193             desc.images[1].sample_type = sg.ImageSampleType.Float;
2194             desc.images[1].msl_texture_n = 1;
2195             desc.images[2].stage = sg.ShaderStage.Fragment;
2196             desc.images[2].multisampled = false;
2197             desc.images[2].image_type = sg.ImageType._2d;
2198             desc.images[2].sample_type = sg.ImageSampleType.Float;
2199             desc.images[2].msl_texture_n = 2;
2200             desc.samplers[0].stage = sg.ShaderStage.Fragment;
2201             desc.samplers[0].sampler_type = sg.SamplerType.Filtering;
2202             desc.samplers[0].msl_sampler_n = 0;
2203             desc.image_sampler_pairs[0].stage = sg.ShaderStage.Fragment;
2204             desc.image_sampler_pairs[0].image_slot = 0;
2205             desc.image_sampler_pairs[0].sampler_slot = 0;
2206             desc.image_sampler_pairs[1].stage = sg.ShaderStage.Fragment;
2207             desc.image_sampler_pairs[1].image_slot = 1;
2208             desc.image_sampler_pairs[1].sampler_slot = 0;
2209             desc.image_sampler_pairs[2].stage = sg.ShaderStage.Fragment;
2210             desc.image_sampler_pairs[2].image_slot = 2;
2211             desc.image_sampler_pairs[2].sampler_slot = 0;
2212             break;
2213         case sg.Backend.Wgpu:
2214             desc.vertex_func.source = &VS_FSQ_SOURCE_WGSL[0];
2215             desc.vertex_func.entry = "main";
2216             desc.fragment_func.source = &FS_FSQ_SOURCE_WGSL[0];
2217             desc.fragment_func.entry = "main";
2218             desc.attrs[0].base_type = sg.ShaderAttrBaseType.Float;
2219             desc.uniform_blocks[0].stage = sg.ShaderStage.Vertex;
2220             desc.uniform_blocks[0].layout = sg.UniformLayout.Std140;
2221             desc.uniform_blocks[0].size = 16;
2222             desc.uniform_blocks[0].wgsl_group0_binding_n = 0;
2223             desc.images[0].stage = sg.ShaderStage.Fragment;
2224             desc.images[0].multisampled = false;
2225             desc.images[0].image_type = sg.ImageType._2d;
2226             desc.images[0].sample_type = sg.ImageSampleType.Float;
2227             desc.images[0].wgsl_group1_binding_n = 64;
2228             desc.images[1].stage = sg.ShaderStage.Fragment;
2229             desc.images[1].multisampled = false;
2230             desc.images[1].image_type = sg.ImageType._2d;
2231             desc.images[1].sample_type = sg.ImageSampleType.Float;
2232             desc.images[1].wgsl_group1_binding_n = 65;
2233             desc.images[2].stage = sg.ShaderStage.Fragment;
2234             desc.images[2].multisampled = false;
2235             desc.images[2].image_type = sg.ImageType._2d;
2236             desc.images[2].sample_type = sg.ImageSampleType.Float;
2237             desc.images[2].wgsl_group1_binding_n = 66;
2238             desc.samplers[0].stage = sg.ShaderStage.Fragment;
2239             desc.samplers[0].sampler_type = sg.SamplerType.Filtering;
2240             desc.samplers[0].wgsl_group1_binding_n = 80;
2241             desc.image_sampler_pairs[0].stage = sg.ShaderStage.Fragment;
2242             desc.image_sampler_pairs[0].image_slot = 0;
2243             desc.image_sampler_pairs[0].sampler_slot = 0;
2244             desc.image_sampler_pairs[1].stage = sg.ShaderStage.Fragment;
2245             desc.image_sampler_pairs[1].image_slot = 1;
2246             desc.image_sampler_pairs[1].sampler_slot = 0;
2247             desc.image_sampler_pairs[2].stage = sg.ShaderStage.Fragment;
2248             desc.image_sampler_pairs[2].image_slot = 2;
2249             desc.image_sampler_pairs[2].sampler_slot = 0;
2250             break;
2251         default: break;
2252     }
2253     return desc;
2254 }
2255 sg.ShaderDesc offscreenShaderDesc(sg.Backend backend) @trusted @nogc nothrow {
2256     sg.ShaderDesc desc;
2257     desc.label = "offscreen_shader";
2258     switch (backend) {
2259         case sg.Backend.Glcore:
2260             desc.vertex_func.source = &VS_OFFSCREEN_SOURCE_GLSL410[0];
2261             desc.vertex_func.entry = "main";
2262             desc.fragment_func.source = &FS_OFFSCREEN_SOURCE_GLSL410[0];
2263             desc.fragment_func.entry = "main";
2264             desc.attrs[0].base_type = sg.ShaderAttrBaseType.Float;
2265             desc.attrs[0].glsl_name = "pos";
2266             desc.attrs[1].base_type = sg.ShaderAttrBaseType.Float;
2267             desc.attrs[1].glsl_name = "bright0";
2268             desc.uniform_blocks[0].stage = sg.ShaderStage.Vertex;
2269             desc.uniform_blocks[0].layout = sg.UniformLayout.Std140;
2270             desc.uniform_blocks[0].size = 64;
2271             desc.uniform_blocks[0].glsl_uniforms[0].type = sg.UniformType.Float4;
2272             desc.uniform_blocks[0].glsl_uniforms[0].array_count = 4;
2273             desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "offscreen_params";
2274             break;
2275         case sg.Backend.Gles3:
2276             desc.vertex_func.source = &VS_OFFSCREEN_SOURCE_GLSL300ES[0];
2277             desc.vertex_func.entry = "main";
2278             desc.fragment_func.source = &FS_OFFSCREEN_SOURCE_GLSL300ES[0];
2279             desc.fragment_func.entry = "main";
2280             desc.attrs[0].base_type = sg.ShaderAttrBaseType.Float;
2281             desc.attrs[0].glsl_name = "pos";
2282             desc.attrs[1].base_type = sg.ShaderAttrBaseType.Float;
2283             desc.attrs[1].glsl_name = "bright0";
2284             desc.uniform_blocks[0].stage = sg.ShaderStage.Vertex;
2285             desc.uniform_blocks[0].layout = sg.UniformLayout.Std140;
2286             desc.uniform_blocks[0].size = 64;
2287             desc.uniform_blocks[0].glsl_uniforms[0].type = sg.UniformType.Float4;
2288             desc.uniform_blocks[0].glsl_uniforms[0].array_count = 4;
2289             desc.uniform_blocks[0].glsl_uniforms[0].glsl_name = "offscreen_params";
2290             break;
2291         case sg.Backend.D3d11:
2292             desc.vertex_func.source = &VS_OFFSCREEN_SOURCE_HLSL5[0];
2293             desc.vertex_func.d3d11_target = "vs_5_0";
2294             desc.vertex_func.entry = "main";
2295             desc.fragment_func.source = &FS_OFFSCREEN_SOURCE_HLSL5[0];
2296             desc.fragment_func.d3d11_target = "ps_5_0";
2297             desc.fragment_func.entry = "main";
2298             desc.attrs[0].base_type = sg.ShaderAttrBaseType.Float;
2299             desc.attrs[0].hlsl_sem_name = "TEXCOORD";
2300             desc.attrs[0].hlsl_sem_index = 0;
2301             desc.attrs[1].base_type = sg.ShaderAttrBaseType.Float;
2302             desc.attrs[1].hlsl_sem_name = "TEXCOORD";
2303             desc.attrs[1].hlsl_sem_index = 1;
2304             desc.uniform_blocks[0].stage = sg.ShaderStage.Vertex;
2305             desc.uniform_blocks[0].layout = sg.UniformLayout.Std140;
2306             desc.uniform_blocks[0].size = 64;
2307             desc.uniform_blocks[0].hlsl_register_b_n = 0;
2308             break;
2309         case sg.Backend.Metal_macos:
2310             desc.vertex_func.source = &VS_OFFSCREEN_SOURCE_METAL_MACOS[0];
2311             desc.vertex_func.entry = "main0";
2312             desc.fragment_func.source = &FS_OFFSCREEN_SOURCE_METAL_MACOS[0];
2313             desc.fragment_func.entry = "main0";
2314             desc.attrs[0].base_type = sg.ShaderAttrBaseType.Float;
2315             desc.attrs[1].base_type = sg.ShaderAttrBaseType.Float;
2316             desc.uniform_blocks[0].stage = sg.ShaderStage.Vertex;
2317             desc.uniform_blocks[0].layout = sg.UniformLayout.Std140;
2318             desc.uniform_blocks[0].size = 64;
2319             desc.uniform_blocks[0].msl_buffer_n = 0;
2320             break;
2321         case sg.Backend.Wgpu:
2322             desc.vertex_func.source = &VS_OFFSCREEN_SOURCE_WGSL[0];
2323             desc.vertex_func.entry = "main";
2324             desc.fragment_func.source = &FS_OFFSCREEN_SOURCE_WGSL[0];
2325             desc.fragment_func.entry = "main";
2326             desc.attrs[0].base_type = sg.ShaderAttrBaseType.Float;
2327             desc.attrs[1].base_type = sg.ShaderAttrBaseType.Float;
2328             desc.uniform_blocks[0].stage = sg.ShaderStage.Vertex;
2329             desc.uniform_blocks[0].layout = sg.UniformLayout.Std140;
2330             desc.uniform_blocks[0].size = 64;
2331             desc.uniform_blocks[0].wgsl_group0_binding_n = 0;
2332             break;
2333         default: break;
2334     }
2335     return desc;
2336 }