summaryrefslogtreecommitdiff
path: root/ddl/out/csharp/LambdaCube.IR.cs
diff options
context:
space:
mode:
Diffstat (limited to 'ddl/out/csharp/LambdaCube.IR.cs')
-rw-r--r--ddl/out/csharp/LambdaCube.IR.cs4058
1 files changed, 4058 insertions, 0 deletions
diff --git a/ddl/out/csharp/LambdaCube.IR.cs b/ddl/out/csharp/LambdaCube.IR.cs
new file mode 100644
index 0000000..af2a9d4
--- /dev/null
+++ b/ddl/out/csharp/LambdaCube.IR.cs
@@ -0,0 +1,4058 @@
1// generated file, do not modify!
2// 2016-11-11T11:17:02.701527000000Z
3
4using System;
5using System.Linq;
6using System.Collections.Generic;
7using Newtonsoft.Json.Linq;
8
9
10namespace LambdaCube.IR {
11 public class ArrayValue {
12 public enum Tag {
13 VBoolArray,
14 VIntArray,
15 VWordArray,
16 VFloatArray
17 };
18 public Tag tag;
19 };
20
21 namespace data {
22 public class VBoolArray : LambdaCube.IR.ArrayValue {
23 public List<bool> _0;
24 public VBoolArray() { tag = LambdaCube.IR.ArrayValue.Tag.VBoolArray; }
25 };
26 public class VIntArray : LambdaCube.IR.ArrayValue {
27 public List<int> _0;
28 public VIntArray() { tag = LambdaCube.IR.ArrayValue.Tag.VIntArray; }
29 };
30 public class VWordArray : LambdaCube.IR.ArrayValue {
31 public List<uint> _0;
32 public VWordArray() { tag = LambdaCube.IR.ArrayValue.Tag.VWordArray; }
33 };
34 public class VFloatArray : LambdaCube.IR.ArrayValue {
35 public List<float> _0;
36 public VFloatArray() { tag = LambdaCube.IR.ArrayValue.Tag.VFloatArray; }
37 };
38 }
39 public class Value {
40 public enum Tag {
41 VBool,
42 VV2B,
43 VV3B,
44 VV4B,
45 VWord,
46 VV2U,
47 VV3U,
48 VV4U,
49 VInt,
50 VV2I,
51 VV3I,
52 VV4I,
53 VFloat,
54 VV2F,
55 VV3F,
56 VV4F,
57 VM22F,
58 VM23F,
59 VM24F,
60 VM32F,
61 VM33F,
62 VM34F,
63 VM42F,
64 VM43F,
65 VM44F
66 };
67 public Tag tag;
68 };
69
70 namespace data {
71 public class VBool : LambdaCube.IR.Value {
72 public bool _0;
73 public VBool() { tag = LambdaCube.IR.Value.Tag.VBool; }
74 };
75 public class VV2B : LambdaCube.IR.Value {
76 public V2<bool> _0;
77 public VV2B() { tag = LambdaCube.IR.Value.Tag.VV2B; }
78 };
79 public class VV3B : LambdaCube.IR.Value {
80 public V3<bool> _0;
81 public VV3B() { tag = LambdaCube.IR.Value.Tag.VV3B; }
82 };
83 public class VV4B : LambdaCube.IR.Value {
84 public V4<bool> _0;
85 public VV4B() { tag = LambdaCube.IR.Value.Tag.VV4B; }
86 };
87 public class VWord : LambdaCube.IR.Value {
88 public uint _0;
89 public VWord() { tag = LambdaCube.IR.Value.Tag.VWord; }
90 };
91 public class VV2U : LambdaCube.IR.Value {
92 public V2<uint> _0;
93 public VV2U() { tag = LambdaCube.IR.Value.Tag.VV2U; }
94 };
95 public class VV3U : LambdaCube.IR.Value {
96 public V3<uint> _0;
97 public VV3U() { tag = LambdaCube.IR.Value.Tag.VV3U; }
98 };
99 public class VV4U : LambdaCube.IR.Value {
100 public V4<uint> _0;
101 public VV4U() { tag = LambdaCube.IR.Value.Tag.VV4U; }
102 };
103 public class VInt : LambdaCube.IR.Value {
104 public int _0;
105 public VInt() { tag = LambdaCube.IR.Value.Tag.VInt; }
106 };
107 public class VV2I : LambdaCube.IR.Value {
108 public V2<int> _0;
109 public VV2I() { tag = LambdaCube.IR.Value.Tag.VV2I; }
110 };
111 public class VV3I : LambdaCube.IR.Value {
112 public V3<int> _0;
113 public VV3I() { tag = LambdaCube.IR.Value.Tag.VV3I; }
114 };
115 public class VV4I : LambdaCube.IR.Value {
116 public V4<int> _0;
117 public VV4I() { tag = LambdaCube.IR.Value.Tag.VV4I; }
118 };
119 public class VFloat : LambdaCube.IR.Value {
120 public float _0;
121 public VFloat() { tag = LambdaCube.IR.Value.Tag.VFloat; }
122 };
123 public class VV2F : LambdaCube.IR.Value {
124 public V2<float> _0;
125 public VV2F() { tag = LambdaCube.IR.Value.Tag.VV2F; }
126 };
127 public class VV3F : LambdaCube.IR.Value {
128 public V3<float> _0;
129 public VV3F() { tag = LambdaCube.IR.Value.Tag.VV3F; }
130 };
131 public class VV4F : LambdaCube.IR.Value {
132 public V4<float> _0;
133 public VV4F() { tag = LambdaCube.IR.Value.Tag.VV4F; }
134 };
135 public class VM22F : LambdaCube.IR.Value {
136 public V2<V2<float>> _0;
137 public VM22F() { tag = LambdaCube.IR.Value.Tag.VM22F; }
138 };
139 public class VM23F : LambdaCube.IR.Value {
140 public V3<V2<float>> _0;
141 public VM23F() { tag = LambdaCube.IR.Value.Tag.VM23F; }
142 };
143 public class VM24F : LambdaCube.IR.Value {
144 public V4<V2<float>> _0;
145 public VM24F() { tag = LambdaCube.IR.Value.Tag.VM24F; }
146 };
147 public class VM32F : LambdaCube.IR.Value {
148 public V2<V3<float>> _0;
149 public VM32F() { tag = LambdaCube.IR.Value.Tag.VM32F; }
150 };
151 public class VM33F : LambdaCube.IR.Value {
152 public V3<V3<float>> _0;
153 public VM33F() { tag = LambdaCube.IR.Value.Tag.VM33F; }
154 };
155 public class VM34F : LambdaCube.IR.Value {
156 public V4<V3<float>> _0;
157 public VM34F() { tag = LambdaCube.IR.Value.Tag.VM34F; }
158 };
159 public class VM42F : LambdaCube.IR.Value {
160 public V2<V4<float>> _0;
161 public VM42F() { tag = LambdaCube.IR.Value.Tag.VM42F; }
162 };
163 public class VM43F : LambdaCube.IR.Value {
164 public V3<V4<float>> _0;
165 public VM43F() { tag = LambdaCube.IR.Value.Tag.VM43F; }
166 };
167 public class VM44F : LambdaCube.IR.Value {
168 public V4<V4<float>> _0;
169 public VM44F() { tag = LambdaCube.IR.Value.Tag.VM44F; }
170 };
171 }
172 public class InputType {
173 public enum Tag {
174 Bool,
175 V2B,
176 V3B,
177 V4B,
178 Word,
179 V2U,
180 V3U,
181 V4U,
182 Int,
183 V2I,
184 V3I,
185 V4I,
186 Float,
187 V2F,
188 V3F,
189 V4F,
190 M22F,
191 M23F,
192 M24F,
193 M32F,
194 M33F,
195 M34F,
196 M42F,
197 M43F,
198 M44F,
199 STexture1D,
200 STexture2D,
201 STextureCube,
202 STexture1DArray,
203 STexture2DArray,
204 STexture2DRect,
205 FTexture1D,
206 FTexture2D,
207 FTexture3D,
208 FTextureCube,
209 FTexture1DArray,
210 FTexture2DArray,
211 FTexture2DMS,
212 FTexture2DMSArray,
213 FTextureBuffer,
214 FTexture2DRect,
215 ITexture1D,
216 ITexture2D,
217 ITexture3D,
218 ITextureCube,
219 ITexture1DArray,
220 ITexture2DArray,
221 ITexture2DMS,
222 ITexture2DMSArray,
223 ITextureBuffer,
224 ITexture2DRect,
225 UTexture1D,
226 UTexture2D,
227 UTexture3D,
228 UTextureCube,
229 UTexture1DArray,
230 UTexture2DArray,
231 UTexture2DMS,
232 UTexture2DMSArray,
233 UTextureBuffer,
234 UTexture2DRect
235 };
236 public Tag tag;
237 };
238
239 namespace data {
240 }
241 public class PointSpriteCoordOrigin {
242 public enum Tag {
243 LowerLeft,
244 UpperLeft
245 };
246 public Tag tag;
247 };
248
249 namespace data {
250 }
251 public class PointSize {
252 public enum Tag {
253 PointSize,
254 ProgramPointSize
255 };
256 public Tag tag;
257 };
258
259 namespace data {
260 public class PointSize : LambdaCube.IR.PointSize {
261 public float _0;
262 public PointSize() { tag = LambdaCube.IR.PointSize.Tag.PointSize; }
263 };
264 }
265 public class PolygonOffset {
266 public enum Tag {
267 NoOffset,
268 Offset
269 };
270 public Tag tag;
271 };
272
273 namespace data {
274 public class Offset : LambdaCube.IR.PolygonOffset {
275 public float _0;
276 public float _1;
277 public Offset() { tag = LambdaCube.IR.PolygonOffset.Tag.Offset; }
278 };
279 }
280 public class FrontFace {
281 public enum Tag {
282 CCW,
283 CW
284 };
285 public Tag tag;
286 };
287
288 namespace data {
289 }
290 public class PolygonMode {
291 public enum Tag {
292 PolygonPoint,
293 PolygonLine,
294 PolygonFill
295 };
296 public Tag tag;
297 };
298
299 namespace data {
300 public class PolygonPoint : LambdaCube.IR.PolygonMode {
301 public global::LambdaCube.IR.PointSize _0;
302 public PolygonPoint() { tag = LambdaCube.IR.PolygonMode.Tag.PolygonPoint; }
303 };
304 public class PolygonLine : LambdaCube.IR.PolygonMode {
305 public float _0;
306 public PolygonLine() { tag = LambdaCube.IR.PolygonMode.Tag.PolygonLine; }
307 };
308 }
309 public class ProvokingVertex {
310 public enum Tag {
311 FirstVertex,
312 LastVertex
313 };
314 public Tag tag;
315 };
316
317 namespace data {
318 }
319 public class CullMode {
320 public enum Tag {
321 CullNone,
322 CullFront,
323 CullBack
324 };
325 public Tag tag;
326 };
327
328 namespace data {
329 public class CullFront : LambdaCube.IR.CullMode {
330 public global::LambdaCube.IR.FrontFace _0;
331 public CullFront() { tag = LambdaCube.IR.CullMode.Tag.CullFront; }
332 };
333 public class CullBack : LambdaCube.IR.CullMode {
334 public global::LambdaCube.IR.FrontFace _0;
335 public CullBack() { tag = LambdaCube.IR.CullMode.Tag.CullBack; }
336 };
337 }
338 public class ComparisonFunction {
339 public enum Tag {
340 Never,
341 Less,
342 Equal,
343 Lequal,
344 Greater,
345 Notequal,
346 Gequal,
347 Always
348 };
349 public Tag tag;
350 };
351
352 namespace data {
353 }
354 public class StencilOperation {
355 public enum Tag {
356 OpZero,
357 OpKeep,
358 OpReplace,
359 OpIncr,
360 OpIncrWrap,
361 OpDecr,
362 OpDecrWrap,
363 OpInvert
364 };
365 public Tag tag;
366 };
367
368 namespace data {
369 }
370 public class BlendEquation {
371 public enum Tag {
372 FuncAdd,
373 FuncSubtract,
374 FuncReverseSubtract,
375 Min,
376 Max
377 };
378 public Tag tag;
379 };
380
381 namespace data {
382 }
383 public class BlendingFactor {
384 public enum Tag {
385 Zero,
386 One,
387 SrcColor,
388 OneMinusSrcColor,
389 DstColor,
390 OneMinusDstColor,
391 SrcAlpha,
392 OneMinusSrcAlpha,
393 DstAlpha,
394 OneMinusDstAlpha,
395 ConstantColor,
396 OneMinusConstantColor,
397 ConstantAlpha,
398 OneMinusConstantAlpha,
399 SrcAlphaSaturate
400 };
401 public Tag tag;
402 };
403
404 namespace data {
405 }
406 public class LogicOperation {
407 public enum Tag {
408 Clear,
409 And,
410 AndReverse,
411 Copy,
412 AndInverted,
413 Noop,
414 Xor,
415 Or,
416 Nor,
417 Equiv,
418 Invert,
419 OrReverse,
420 CopyInverted,
421 OrInverted,
422 Nand,
423 Set
424 };
425 public Tag tag;
426 };
427
428 namespace data {
429 }
430 public class StencilOps {
431 public enum Tag {
432 StencilOps
433 };
434 public Tag tag;
435 };
436
437 namespace data {
438 public class StencilOps : LambdaCube.IR.StencilOps {
439 public global::LambdaCube.IR.StencilOperation frontStencilOp;
440 public global::LambdaCube.IR.StencilOperation backStencilOp;
441 public StencilOps() { tag = LambdaCube.IR.StencilOps.Tag.StencilOps; }
442 };
443 }
444 public class StencilTest {
445 public enum Tag {
446 StencilTest
447 };
448 public Tag tag;
449 };
450
451 namespace data {
452 public class StencilTest : LambdaCube.IR.StencilTest {
453 public global::LambdaCube.IR.ComparisonFunction stencilComparision;
454 public int stencilReference;
455 public uint stencilMask;
456 public StencilTest() { tag = LambdaCube.IR.StencilTest.Tag.StencilTest; }
457 };
458 }
459 public class StencilTests {
460 public enum Tag {
461 StencilTests
462 };
463 public Tag tag;
464 };
465
466 namespace data {
467 public class StencilTests : LambdaCube.IR.StencilTests {
468 public global::LambdaCube.IR.StencilTest _0;
469 public global::LambdaCube.IR.StencilTest _1;
470 public StencilTests() { tag = LambdaCube.IR.StencilTests.Tag.StencilTests; }
471 };
472 }
473 public class FetchPrimitive {
474 public enum Tag {
475 Points,
476 Lines,
477 Triangles,
478 LinesAdjacency,
479 TrianglesAdjacency
480 };
481 public Tag tag;
482 };
483
484 namespace data {
485 }
486 public class OutputPrimitive {
487 public enum Tag {
488 TrianglesOutput,
489 LinesOutput,
490 PointsOutput
491 };
492 public Tag tag;
493 };
494
495 namespace data {
496 }
497 public class ColorArity {
498 public enum Tag {
499 Red,
500 RG,
501 RGB,
502 RGBA
503 };
504 public Tag tag;
505 };
506
507 namespace data {
508 }
509 public class Blending {
510 public enum Tag {
511 NoBlending,
512 BlendLogicOp,
513 Blend
514 };
515 public Tag tag;
516 };
517
518 namespace data {
519 public class BlendLogicOp : LambdaCube.IR.Blending {
520 public global::LambdaCube.IR.LogicOperation _0;
521 public BlendLogicOp() { tag = LambdaCube.IR.Blending.Tag.BlendLogicOp; }
522 };
523 public class Blend : LambdaCube.IR.Blending {
524 public global::LambdaCube.IR.BlendEquation colorEqSrc;
525 public global::LambdaCube.IR.BlendEquation alphaEqSrc;
526 public global::LambdaCube.IR.BlendingFactor colorFSrc;
527 public global::LambdaCube.IR.BlendingFactor colorFDst;
528 public global::LambdaCube.IR.BlendingFactor alphaFSrc;
529 public global::LambdaCube.IR.BlendingFactor alphaFDst;
530 public V4<float> color;
531 public Blend() { tag = LambdaCube.IR.Blending.Tag.Blend; }
532 };
533 }
534 public class RasterContext {
535 public enum Tag {
536 PointCtx,
537 LineCtx,
538 TriangleCtx
539 };
540 public Tag tag;
541 };
542
543 namespace data {
544 public class PointCtx : LambdaCube.IR.RasterContext {
545 public global::LambdaCube.IR.PointSize _0;
546 public float _1;
547 public global::LambdaCube.IR.PointSpriteCoordOrigin _2;
548 public PointCtx() { tag = LambdaCube.IR.RasterContext.Tag.PointCtx; }
549 };
550 public class LineCtx : LambdaCube.IR.RasterContext {
551 public float _0;
552 public global::LambdaCube.IR.ProvokingVertex _1;
553 public LineCtx() { tag = LambdaCube.IR.RasterContext.Tag.LineCtx; }
554 };
555 public class TriangleCtx : LambdaCube.IR.RasterContext {
556 public global::LambdaCube.IR.CullMode _0;
557 public global::LambdaCube.IR.PolygonMode _1;
558 public global::LambdaCube.IR.PolygonOffset _2;
559 public global::LambdaCube.IR.ProvokingVertex _3;
560 public TriangleCtx() { tag = LambdaCube.IR.RasterContext.Tag.TriangleCtx; }
561 };
562 }
563 public class FragmentOperation {
564 public enum Tag {
565 DepthOp,
566 StencilOp,
567 ColorOp
568 };
569 public Tag tag;
570 };
571
572 namespace data {
573 public class DepthOp : LambdaCube.IR.FragmentOperation {
574 public global::LambdaCube.IR.ComparisonFunction _0;
575 public bool _1;
576 public DepthOp() { tag = LambdaCube.IR.FragmentOperation.Tag.DepthOp; }
577 };
578 public class StencilOp : LambdaCube.IR.FragmentOperation {
579 public global::LambdaCube.IR.StencilTests _0;
580 public global::LambdaCube.IR.StencilOps _1;
581 public global::LambdaCube.IR.StencilOps _2;
582 public StencilOp() { tag = LambdaCube.IR.FragmentOperation.Tag.StencilOp; }
583 };
584 public class ColorOp : LambdaCube.IR.FragmentOperation {
585 public global::LambdaCube.IR.Blending _0;
586 public global::LambdaCube.IR.Value _1;
587 public ColorOp() { tag = LambdaCube.IR.FragmentOperation.Tag.ColorOp; }
588 };
589 }
590 public class AccumulationContext {
591 public enum Tag {
592 AccumulationContext
593 };
594 public Tag tag;
595 };
596
597 namespace data {
598 public class AccumulationContext : LambdaCube.IR.AccumulationContext {
599 public Maybe<string> accViewportName;
600 public List<global::LambdaCube.IR.FragmentOperation> accOperations;
601 public AccumulationContext() { tag = LambdaCube.IR.AccumulationContext.Tag.AccumulationContext; }
602 };
603 }
604 public class TextureDataType {
605 public enum Tag {
606 FloatT,
607 IntT,
608 WordT,
609 ShadowT
610 };
611 public Tag tag;
612 };
613
614 namespace data {
615 public class FloatT : LambdaCube.IR.TextureDataType {
616 public global::LambdaCube.IR.ColorArity _0;
617 public FloatT() { tag = LambdaCube.IR.TextureDataType.Tag.FloatT; }
618 };
619 public class IntT : LambdaCube.IR.TextureDataType {
620 public global::LambdaCube.IR.ColorArity _0;
621 public IntT() { tag = LambdaCube.IR.TextureDataType.Tag.IntT; }
622 };
623 public class WordT : LambdaCube.IR.TextureDataType {
624 public global::LambdaCube.IR.ColorArity _0;
625 public WordT() { tag = LambdaCube.IR.TextureDataType.Tag.WordT; }
626 };
627 }
628 public class TextureType {
629 public enum Tag {
630 Texture1D,
631 Texture2D,
632 Texture3D,
633 TextureCube,
634 TextureRect,
635 Texture2DMS,
636 TextureBuffer
637 };
638 public Tag tag;
639 };
640
641 namespace data {
642 public class Texture1D : LambdaCube.IR.TextureType {
643 public global::LambdaCube.IR.TextureDataType _0;
644 public int _1;
645 public Texture1D() { tag = LambdaCube.IR.TextureType.Tag.Texture1D; }
646 };
647 public class Texture2D : LambdaCube.IR.TextureType {
648 public global::LambdaCube.IR.TextureDataType _0;
649 public int _1;
650 public Texture2D() { tag = LambdaCube.IR.TextureType.Tag.Texture2D; }
651 };
652 public class Texture3D : LambdaCube.IR.TextureType {
653 public global::LambdaCube.IR.TextureDataType _0;
654 public Texture3D() { tag = LambdaCube.IR.TextureType.Tag.Texture3D; }
655 };
656 public class TextureCube : LambdaCube.IR.TextureType {
657 public global::LambdaCube.IR.TextureDataType _0;
658 public TextureCube() { tag = LambdaCube.IR.TextureType.Tag.TextureCube; }
659 };
660 public class TextureRect : LambdaCube.IR.TextureType {
661 public global::LambdaCube.IR.TextureDataType _0;
662 public TextureRect() { tag = LambdaCube.IR.TextureType.Tag.TextureRect; }
663 };
664 public class Texture2DMS : LambdaCube.IR.TextureType {
665 public global::LambdaCube.IR.TextureDataType _0;
666 public int _1;
667 public int _2;
668 public bool _3;
669 public Texture2DMS() { tag = LambdaCube.IR.TextureType.Tag.Texture2DMS; }
670 };
671 public class TextureBuffer : LambdaCube.IR.TextureType {
672 public global::LambdaCube.IR.TextureDataType _0;
673 public TextureBuffer() { tag = LambdaCube.IR.TextureType.Tag.TextureBuffer; }
674 };
675 }
676 public class MipMap {
677 public enum Tag {
678 Mip,
679 NoMip,
680 AutoMip
681 };
682 public Tag tag;
683 };
684
685 namespace data {
686 public class Mip : LambdaCube.IR.MipMap {
687 public int _0;
688 public int _1;
689 public Mip() { tag = LambdaCube.IR.MipMap.Tag.Mip; }
690 };
691 public class AutoMip : LambdaCube.IR.MipMap {
692 public int _0;
693 public int _1;
694 public AutoMip() { tag = LambdaCube.IR.MipMap.Tag.AutoMip; }
695 };
696 }
697 public class Filter {
698 public enum Tag {
699 Nearest,
700 Linear,
701 NearestMipmapNearest,
702 NearestMipmapLinear,
703 LinearMipmapNearest,
704 LinearMipmapLinear
705 };
706 public Tag tag;
707 };
708
709 namespace data {
710 }
711 public class EdgeMode {
712 public enum Tag {
713 Repeat,
714 MirroredRepeat,
715 ClampToEdge,
716 ClampToBorder
717 };
718 public Tag tag;
719 };
720
721 namespace data {
722 }
723 public class ImageSemantic {
724 public enum Tag {
725 Depth,
726 Stencil,
727 Color
728 };
729 public Tag tag;
730 };
731
732 namespace data {
733 }
734 public class ImageRef {
735 public enum Tag {
736 TextureImage,
737 Framebuffer
738 };
739 public Tag tag;
740 };
741
742 namespace data {
743 public class TextureImage : LambdaCube.IR.ImageRef {
744 public int _0;
745 public int _1;
746 public Maybe<int> _2;
747 public TextureImage() { tag = LambdaCube.IR.ImageRef.Tag.TextureImage; }
748 };
749 public class Framebuffer : LambdaCube.IR.ImageRef {
750 public global::LambdaCube.IR.ImageSemantic _0;
751 public Framebuffer() { tag = LambdaCube.IR.ImageRef.Tag.Framebuffer; }
752 };
753 }
754 public class ClearImage {
755 public enum Tag {
756 ClearImage
757 };
758 public Tag tag;
759 };
760
761 namespace data {
762 public class ClearImage : LambdaCube.IR.ClearImage {
763 public global::LambdaCube.IR.ImageSemantic imageSemantic;
764 public global::LambdaCube.IR.Value clearValue;
765 public ClearImage() { tag = LambdaCube.IR.ClearImage.Tag.ClearImage; }
766 };
767 }
768 public class Command {
769 public enum Tag {
770 SetRasterContext,
771 SetAccumulationContext,
772 SetRenderTarget,
773 SetProgram,
774 SetSamplerUniform,
775 SetTexture,
776 SetSampler,
777 RenderSlot,
778 RenderStream,
779 ClearRenderTarget,
780 GenerateMipMap,
781 SaveImage,
782 LoadImage
783 };
784 public Tag tag;
785 };
786
787 namespace data {
788 public class SetRasterContext : LambdaCube.IR.Command {
789 public global::LambdaCube.IR.RasterContext _0;
790 public SetRasterContext() { tag = LambdaCube.IR.Command.Tag.SetRasterContext; }
791 };
792 public class SetAccumulationContext : LambdaCube.IR.Command {
793 public global::LambdaCube.IR.AccumulationContext _0;
794 public SetAccumulationContext() { tag = LambdaCube.IR.Command.Tag.SetAccumulationContext; }
795 };
796 public class SetRenderTarget : LambdaCube.IR.Command {
797 public int _0;
798 public SetRenderTarget() { tag = LambdaCube.IR.Command.Tag.SetRenderTarget; }
799 };
800 public class SetProgram : LambdaCube.IR.Command {
801 public int _0;
802 public SetProgram() { tag = LambdaCube.IR.Command.Tag.SetProgram; }
803 };
804 public class SetSamplerUniform : LambdaCube.IR.Command {
805 public string _0;
806 public int _1;
807 public SetSamplerUniform() { tag = LambdaCube.IR.Command.Tag.SetSamplerUniform; }
808 };
809 public class SetTexture : LambdaCube.IR.Command {
810 public int _0;
811 public int _1;
812 public SetTexture() { tag = LambdaCube.IR.Command.Tag.SetTexture; }
813 };
814 public class SetSampler : LambdaCube.IR.Command {
815 public int _0;
816 public Maybe<int> _1;
817 public SetSampler() { tag = LambdaCube.IR.Command.Tag.SetSampler; }
818 };
819 public class RenderSlot : LambdaCube.IR.Command {
820 public int _0;
821 public RenderSlot() { tag = LambdaCube.IR.Command.Tag.RenderSlot; }
822 };
823 public class RenderStream : LambdaCube.IR.Command {
824 public int _0;
825 public RenderStream() { tag = LambdaCube.IR.Command.Tag.RenderStream; }
826 };
827 public class ClearRenderTarget : LambdaCube.IR.Command {
828 public List<global::LambdaCube.IR.ClearImage> _0;
829 public ClearRenderTarget() { tag = LambdaCube.IR.Command.Tag.ClearRenderTarget; }
830 };
831 public class GenerateMipMap : LambdaCube.IR.Command {
832 public int _0;
833 public GenerateMipMap() { tag = LambdaCube.IR.Command.Tag.GenerateMipMap; }
834 };
835 public class SaveImage : LambdaCube.IR.Command {
836 public int _0;
837 public global::LambdaCube.IR.ImageRef _1;
838 public SaveImage() { tag = LambdaCube.IR.Command.Tag.SaveImage; }
839 };
840 public class LoadImage : LambdaCube.IR.Command {
841 public global::LambdaCube.IR.ImageRef _0;
842 public int _1;
843 public LoadImage() { tag = LambdaCube.IR.Command.Tag.LoadImage; }
844 };
845 }
846 public class SamplerDescriptor {
847 public enum Tag {
848 SamplerDescriptor
849 };
850 public Tag tag;
851 };
852
853 namespace data {
854 public class SamplerDescriptor : LambdaCube.IR.SamplerDescriptor {
855 public global::LambdaCube.IR.EdgeMode samplerWrapS;
856 public Maybe<global::LambdaCube.IR.EdgeMode> samplerWrapT;
857 public Maybe<global::LambdaCube.IR.EdgeMode> samplerWrapR;
858 public global::LambdaCube.IR.Filter samplerMinFilter;
859 public global::LambdaCube.IR.Filter samplerMagFilter;
860 public global::LambdaCube.IR.Value samplerBorderColor;
861 public Maybe<float> samplerMinLod;
862 public Maybe<float> samplerMaxLod;
863 public float samplerLodBias;
864 public Maybe<global::LambdaCube.IR.ComparisonFunction> samplerCompareFunc;
865 public SamplerDescriptor() { tag = LambdaCube.IR.SamplerDescriptor.Tag.SamplerDescriptor; }
866 };
867 }
868 public class TextureDescriptor {
869 public enum Tag {
870 TextureDescriptor
871 };
872 public Tag tag;
873 };
874
875 namespace data {
876 public class TextureDescriptor : LambdaCube.IR.TextureDescriptor {
877 public global::LambdaCube.IR.TextureType textureType;
878 public global::LambdaCube.IR.Value textureSize;
879 public global::LambdaCube.IR.ImageSemantic textureSemantic;
880 public global::LambdaCube.IR.SamplerDescriptor textureSampler;
881 public int textureBaseLevel;
882 public int textureMaxLevel;
883 public TextureDescriptor() { tag = LambdaCube.IR.TextureDescriptor.Tag.TextureDescriptor; }
884 };
885 }
886 public class Parameter {
887 public enum Tag {
888 Parameter
889 };
890 public Tag tag;
891 };
892
893 namespace data {
894 public class Parameter : LambdaCube.IR.Parameter {
895 public string name;
896 public global::LambdaCube.IR.InputType ty;
897 public Parameter() { tag = LambdaCube.IR.Parameter.Tag.Parameter; }
898 };
899 }
900 public class Program {
901 public enum Tag {
902 Program
903 };
904 public Tag tag;
905 };
906
907 namespace data {
908 public class Program : LambdaCube.IR.Program {
909 public Dictionary<string, global::LambdaCube.IR.InputType> programUniforms;
910 public Dictionary<string, global::LambdaCube.IR.Parameter> programStreams;
911 public Dictionary<string, global::LambdaCube.IR.InputType> programInTextures;
912 public List<global::LambdaCube.IR.Parameter> programOutput;
913 public string vertexShader;
914 public Maybe<string> geometryShader;
915 public string fragmentShader;
916 public Program() { tag = LambdaCube.IR.Program.Tag.Program; }
917 };
918 }
919 public class Slot {
920 public enum Tag {
921 Slot
922 };
923 public Tag tag;
924 };
925
926 namespace data {
927 public class Slot : LambdaCube.IR.Slot {
928 public string slotName;
929 public Dictionary<string, global::LambdaCube.IR.InputType> slotStreams;
930 public Dictionary<string, global::LambdaCube.IR.InputType> slotUniforms;
931 public global::LambdaCube.IR.FetchPrimitive slotPrimitive;
932 public List<int> slotPrograms;
933 public Slot() { tag = LambdaCube.IR.Slot.Tag.Slot; }
934 };
935 }
936 public class StreamData {
937 public enum Tag {
938 StreamData
939 };
940 public Tag tag;
941 };
942
943 namespace data {
944 public class StreamData : LambdaCube.IR.StreamData {
945 public Dictionary<string, global::LambdaCube.IR.ArrayValue> streamData;
946 public Dictionary<string, global::LambdaCube.IR.InputType> streamType;
947 public global::LambdaCube.IR.FetchPrimitive streamPrimitive;
948 public List<int> streamPrograms;
949 public StreamData() { tag = LambdaCube.IR.StreamData.Tag.StreamData; }
950 };
951 }
952 public class TargetItem {
953 public enum Tag {
954 TargetItem
955 };
956 public Tag tag;
957 };
958
959 namespace data {
960 public class TargetItem : LambdaCube.IR.TargetItem {
961 public global::LambdaCube.IR.ImageSemantic targetSemantic;
962 public Maybe<global::LambdaCube.IR.ImageRef> targetRef;
963 public TargetItem() { tag = LambdaCube.IR.TargetItem.Tag.TargetItem; }
964 };
965 }
966 public class RenderTarget {
967 public enum Tag {
968 RenderTarget
969 };
970 public Tag tag;
971 };
972
973 namespace data {
974 public class RenderTarget : LambdaCube.IR.RenderTarget {
975 public List<global::LambdaCube.IR.TargetItem> renderTargets;
976 public RenderTarget() { tag = LambdaCube.IR.RenderTarget.Tag.RenderTarget; }
977 };
978 }
979 public class Backend {
980 public enum Tag {
981 WebGL1,
982 OpenGL33
983 };
984 public Tag tag;
985 };
986
987 namespace data {
988 }
989 public class Pipeline {
990 public enum Tag {
991 Pipeline
992 };
993 public Tag tag;
994 };
995
996 namespace data {
997 public class Pipeline : LambdaCube.IR.Pipeline {
998 public string info;
999 public global::LambdaCube.IR.Backend backend;
1000 public List<global::LambdaCube.IR.TextureDescriptor> textures;
1001 public List<global::LambdaCube.IR.SamplerDescriptor> samplers;
1002 public List<global::LambdaCube.IR.RenderTarget> targets;
1003 public List<global::LambdaCube.IR.Program> programs;
1004 public List<global::LambdaCube.IR.Slot> slots;
1005 public List<global::LambdaCube.IR.StreamData> streams;
1006 public List<global::LambdaCube.IR.Command> commands;
1007 public Pipeline() { tag = LambdaCube.IR.Pipeline.Tag.Pipeline; }
1008 };
1009 }
1010
1011 // JSON deserializer
1012 public enum Type {
1013 Int,
1014 Int32,
1015 Word,
1016 Word32,
1017 Float,
1018 Bool,
1019 String,
1020 V2_Int,
1021 V2_Word,
1022 V2_Float,
1023 V2_Bool,
1024 V2_V2_Float,
1025 V2_V3_Float,
1026 V2_V4_Float,
1027 V3_Int,
1028 V3_Word,
1029 V3_Float,
1030 V3_Bool,
1031 V3_V2_Float,
1032 V3_V3_Float,
1033 V3_V4_Float,
1034 V4_Int,
1035 V4_Word,
1036 V4_Float,
1037 V4_Bool,
1038 V4_V2_Float,
1039 V4_V3_Float,
1040 V4_V4_Float,
1041 Array_Int,
1042 Array_Int32,
1043 Array_Word32,
1044 Array_Float,
1045 Array_Bool,
1046 Array_ClearImage,
1047 Array_Command,
1048 Array_Parameter,
1049 Array_Program,
1050 Array_RenderTarget,
1051 Array_SamplerDescriptor,
1052 Array_Slot,
1053 Array_StreamData,
1054 Array_TargetItem,
1055 Array_TextureDescriptor,
1056 List_FragmentOperation,
1057 Maybe_Int,
1058 Maybe_Float,
1059 Maybe_String,
1060 Maybe_ComparisonFunction,
1061 Maybe_EdgeMode,
1062 Maybe_ImageRef,
1063 Map_String_ArrayValue,
1064 Map_String_InputType,
1065 Map_String_Parameter,
1066 AccumulationContext,
1067 ArrayValue,
1068 Backend,
1069 BlendEquation,
1070 Blending,
1071 BlendingFactor,
1072 ClearImage,
1073 ColorArity,
1074 Command,
1075 ComparisonFunction,
1076 CullMode,
1077 EdgeMode,
1078 FetchPrimitive,
1079 Filter,
1080 FragmentOperation,
1081 FrontFace,
1082 ImageRef,
1083 ImageSemantic,
1084 InputType,
1085 LogicOperation,
1086 MipMap,
1087 OutputPrimitive,
1088 Parameter,
1089 Pipeline,
1090 PointSize,
1091 PointSpriteCoordOrigin,
1092 PolygonMode,
1093 PolygonOffset,
1094 Program,
1095 ProvokingVertex,
1096 RasterContext,
1097 RenderTarget,
1098 SamplerDescriptor,
1099 Slot,
1100 StencilOperation,
1101 StencilOps,
1102 StencilTest,
1103 StencilTests,
1104 StreamData,
1105 TargetItem,
1106 TextureDataType,
1107 TextureDescriptor,
1108 TextureType,
1109 Value
1110 }
1111
1112 public class Loader {
1113 public static object fromJSON(Type type, JToken obj) {
1114 switch (type) {
1115 case Type.Int: return (int)obj;
1116 case Type.Int32: return (int)obj;
1117 case Type.Word: return (uint)obj;
1118 case Type.Word32: return (uint)obj;
1119 case Type.Float: return (float)obj;
1120 case Type.Bool: return (bool)obj;
1121 case Type.String: return (string)obj;
1122 case Type.V2_Int:
1123 return new V2<int>
1124 { x = (int)fromJSON(Type.Int,obj["x"])
1125 , y = (int)fromJSON(Type.Int,obj["y"])
1126 };
1127 case Type.V2_Word:
1128 return new V2<uint>
1129 { x = (uint)fromJSON(Type.Word,obj["x"])
1130 , y = (uint)fromJSON(Type.Word,obj["y"])
1131 };
1132 case Type.V2_Float:
1133 return new V2<float>
1134 { x = (float)fromJSON(Type.Float,obj["x"])
1135 , y = (float)fromJSON(Type.Float,obj["y"])
1136 };
1137 case Type.V2_Bool:
1138 return new V2<bool>
1139 { x = (bool)fromJSON(Type.Bool,obj["x"])
1140 , y = (bool)fromJSON(Type.Bool,obj["y"])
1141 };
1142 case Type.V2_V2_Float:
1143 return new V2<V2<float>>
1144 { x = (V2<float>)fromJSON(Type.V2_Float,obj["x"])
1145 , y = (V2<float>)fromJSON(Type.V2_Float,obj["y"])
1146 };
1147 case Type.V2_V3_Float:
1148 return new V2<V3<float>>
1149 { x = (V3<float>)fromJSON(Type.V3_Float,obj["x"])
1150 , y = (V3<float>)fromJSON(Type.V3_Float,obj["y"])
1151 };
1152 case Type.V2_V4_Float:
1153 return new V2<V4<float>>
1154 { x = (V4<float>)fromJSON(Type.V4_Float,obj["x"])
1155 , y = (V4<float>)fromJSON(Type.V4_Float,obj["y"])
1156 };
1157 case Type.V3_Int:
1158 return new V3<int>
1159 { x = (int)fromJSON(Type.Int,obj["x"])
1160 , y = (int)fromJSON(Type.Int,obj["y"])
1161 , z = (int)fromJSON(Type.Int,obj["z"])
1162 };
1163 case Type.V3_Word:
1164 return new V3<uint>
1165 { x = (uint)fromJSON(Type.Word,obj["x"])
1166 , y = (uint)fromJSON(Type.Word,obj["y"])
1167 , z = (uint)fromJSON(Type.Word,obj["z"])
1168 };
1169 case Type.V3_Float:
1170 return new V3<float>
1171 { x = (float)fromJSON(Type.Float,obj["x"])
1172 , y = (float)fromJSON(Type.Float,obj["y"])
1173 , z = (float)fromJSON(Type.Float,obj["z"])
1174 };
1175 case Type.V3_Bool:
1176 return new V3<bool>
1177 { x = (bool)fromJSON(Type.Bool,obj["x"])
1178 , y = (bool)fromJSON(Type.Bool,obj["y"])
1179 , z = (bool)fromJSON(Type.Bool,obj["z"])
1180 };
1181 case Type.V3_V2_Float:
1182 return new V3<V2<float>>
1183 { x = (V2<float>)fromJSON(Type.V2_Float,obj["x"])
1184 , y = (V2<float>)fromJSON(Type.V2_Float,obj["y"])
1185 , z = (V2<float>)fromJSON(Type.V2_Float,obj["z"])
1186 };
1187 case Type.V3_V3_Float:
1188 return new V3<V3<float>>
1189 { x = (V3<float>)fromJSON(Type.V3_Float,obj["x"])
1190 , y = (V3<float>)fromJSON(Type.V3_Float,obj["y"])
1191 , z = (V3<float>)fromJSON(Type.V3_Float,obj["z"])
1192 };
1193 case Type.V3_V4_Float:
1194 return new V3<V4<float>>
1195 { x = (V4<float>)fromJSON(Type.V4_Float,obj["x"])
1196 , y = (V4<float>)fromJSON(Type.V4_Float,obj["y"])
1197 , z = (V4<float>)fromJSON(Type.V4_Float,obj["z"])
1198 };
1199 case Type.V4_Int:
1200 return new V4<int>
1201 { x = (int)fromJSON(Type.Int,obj["x"])
1202 , y = (int)fromJSON(Type.Int,obj["y"])
1203 , z = (int)fromJSON(Type.Int,obj["z"])
1204 , w = (int)fromJSON(Type.Int,obj["w"])
1205 };
1206 case Type.V4_Word:
1207 return new V4<uint>
1208 { x = (uint)fromJSON(Type.Word,obj["x"])
1209 , y = (uint)fromJSON(Type.Word,obj["y"])
1210 , z = (uint)fromJSON(Type.Word,obj["z"])
1211 , w = (uint)fromJSON(Type.Word,obj["w"])
1212 };
1213 case Type.V4_Float:
1214 return new V4<float>
1215 { x = (float)fromJSON(Type.Float,obj["x"])
1216 , y = (float)fromJSON(Type.Float,obj["y"])
1217 , z = (float)fromJSON(Type.Float,obj["z"])
1218 , w = (float)fromJSON(Type.Float,obj["w"])
1219 };
1220 case Type.V4_Bool:
1221 return new V4<bool>
1222 { x = (bool)fromJSON(Type.Bool,obj["x"])
1223 , y = (bool)fromJSON(Type.Bool,obj["y"])
1224 , z = (bool)fromJSON(Type.Bool,obj["z"])
1225 , w = (bool)fromJSON(Type.Bool,obj["w"])
1226 };
1227 case Type.V4_V2_Float:
1228 return new V4<V2<float>>
1229 { x = (V2<float>)fromJSON(Type.V2_Float,obj["x"])
1230 , y = (V2<float>)fromJSON(Type.V2_Float,obj["y"])
1231 , z = (V2<float>)fromJSON(Type.V2_Float,obj["z"])
1232 , w = (V2<float>)fromJSON(Type.V2_Float,obj["w"])
1233 };
1234 case Type.V4_V3_Float:
1235 return new V4<V3<float>>
1236 { x = (V3<float>)fromJSON(Type.V3_Float,obj["x"])
1237 , y = (V3<float>)fromJSON(Type.V3_Float,obj["y"])
1238 , z = (V3<float>)fromJSON(Type.V3_Float,obj["z"])
1239 , w = (V3<float>)fromJSON(Type.V3_Float,obj["w"])
1240 };
1241 case Type.V4_V4_Float:
1242 return new V4<V4<float>>
1243 { x = (V4<float>)fromJSON(Type.V4_Float,obj["x"])
1244 , y = (V4<float>)fromJSON(Type.V4_Float,obj["y"])
1245 , z = (V4<float>)fromJSON(Type.V4_Float,obj["z"])
1246 , w = (V4<float>)fromJSON(Type.V4_Float,obj["w"])
1247 };
1248 case Type.Array_Int: return ((JArray)obj).Select(x => (int)fromJSON (Type.Int, x)).ToList();
1249 case Type.Array_Int32: return ((JArray)obj).Select(x => (int)fromJSON (Type.Int32, x)).ToList();
1250 case Type.Array_Word32: return ((JArray)obj).Select(x => (uint)fromJSON (Type.Word32, x)).ToList();
1251 case Type.Array_Float: return ((JArray)obj).Select(x => (float)fromJSON (Type.Float, x)).ToList();
1252 case Type.Array_Bool: return ((JArray)obj).Select(x => (bool)fromJSON (Type.Bool, x)).ToList();
1253 case Type.Array_ClearImage: return ((JArray)obj).Select(x => (global::LambdaCube.IR.ClearImage)fromJSON (Type.ClearImage, x)).ToList();
1254 case Type.Array_Command: return ((JArray)obj).Select(x => (global::LambdaCube.IR.Command)fromJSON (Type.Command, x)).ToList();
1255 case Type.Array_Parameter: return ((JArray)obj).Select(x => (global::LambdaCube.IR.Parameter)fromJSON (Type.Parameter, x)).ToList();
1256 case Type.Array_Program: return ((JArray)obj).Select(x => (global::LambdaCube.IR.Program)fromJSON (Type.Program, x)).ToList();
1257 case Type.Array_RenderTarget: return ((JArray)obj).Select(x => (global::LambdaCube.IR.RenderTarget)fromJSON (Type.RenderTarget, x)).ToList();
1258 case Type.Array_SamplerDescriptor: return ((JArray)obj).Select(x => (global::LambdaCube.IR.SamplerDescriptor)fromJSON (Type.SamplerDescriptor, x)).ToList();
1259 case Type.Array_Slot: return ((JArray)obj).Select(x => (global::LambdaCube.IR.Slot)fromJSON (Type.Slot, x)).ToList();
1260 case Type.Array_StreamData: return ((JArray)obj).Select(x => (global::LambdaCube.IR.StreamData)fromJSON (Type.StreamData, x)).ToList();
1261 case Type.Array_TargetItem: return ((JArray)obj).Select(x => (global::LambdaCube.IR.TargetItem)fromJSON (Type.TargetItem, x)).ToList();
1262 case Type.Array_TextureDescriptor: return ((JArray)obj).Select(x => (global::LambdaCube.IR.TextureDescriptor)fromJSON (Type.TextureDescriptor, x)).ToList();
1263 case Type.List_FragmentOperation: return ((JArray)obj).Select(x => (global::LambdaCube.IR.FragmentOperation)fromJSON (Type.FragmentOperation, x)).ToList();
1264 case Type.Maybe_Int: {
1265 var m = new Maybe<int> ();
1266 if (obj == null || obj.Type == JTokenType.Null) {
1267 m.valid = false;
1268 } else {
1269 m.valid = true;
1270 m.data = (int)fromJSON (Type.Int,obj);
1271 }
1272 return m;
1273 }
1274 case Type.Maybe_Float: {
1275 var m = new Maybe<float> ();
1276 if (obj == null || obj.Type == JTokenType.Null) {
1277 m.valid = false;
1278 } else {
1279 m.valid = true;
1280 m.data = (float)fromJSON (Type.Float,obj);
1281 }
1282 return m;
1283 }
1284 case Type.Maybe_String: {
1285 var m = new Maybe<string> ();
1286 if (obj == null || obj.Type == JTokenType.Null) {
1287 m.valid = false;
1288 } else {
1289 m.valid = true;
1290 m.data = (string)fromJSON (Type.String,obj);
1291 }
1292 return m;
1293 }
1294 case Type.Maybe_ComparisonFunction: {
1295 var m = new Maybe<global::LambdaCube.IR.ComparisonFunction> ();
1296 if (obj == null || obj.Type == JTokenType.Null) {
1297 m.valid = false;
1298 } else {
1299 m.valid = true;
1300 m.data = (global::LambdaCube.IR.ComparisonFunction)fromJSON (Type.ComparisonFunction,obj);
1301 }
1302 return m;
1303 }
1304 case Type.Maybe_EdgeMode: {
1305 var m = new Maybe<global::LambdaCube.IR.EdgeMode> ();
1306 if (obj == null || obj.Type == JTokenType.Null) {
1307 m.valid = false;
1308 } else {
1309 m.valid = true;
1310 m.data = (global::LambdaCube.IR.EdgeMode)fromJSON (Type.EdgeMode,obj);
1311 }
1312 return m;
1313 }
1314 case Type.Maybe_ImageRef: {
1315 var m = new Maybe<global::LambdaCube.IR.ImageRef> ();
1316 if (obj == null || obj.Type == JTokenType.Null) {
1317 m.valid = false;
1318 } else {
1319 m.valid = true;
1320 m.data = (global::LambdaCube.IR.ImageRef)fromJSON (Type.ImageRef,obj);
1321 }
1322 return m;
1323 }
1324 case Type.Map_String_ArrayValue: {
1325 var map = new Dictionary<string, global::LambdaCube.IR.ArrayValue> ();
1326 foreach(var i in (JObject)obj) {
1327 map.Add( (string)fromJSON(Type.String,i.Key)
1328 , (global::LambdaCube.IR.ArrayValue)fromJSON(Type.ArrayValue,i.Value));
1329 }
1330 return map;
1331 }
1332 case Type.Map_String_InputType: {
1333 var map = new Dictionary<string, global::LambdaCube.IR.InputType> ();
1334 foreach(var i in (JObject)obj) {
1335 map.Add( (string)fromJSON(Type.String,i.Key)
1336 , (global::LambdaCube.IR.InputType)fromJSON(Type.InputType,i.Value));
1337 }
1338 return map;
1339 }
1340 case Type.Map_String_Parameter: {
1341 var map = new Dictionary<string, global::LambdaCube.IR.Parameter> ();
1342 foreach(var i in (JObject)obj) {
1343 map.Add( (string)fromJSON(Type.String,i.Key)
1344 , (global::LambdaCube.IR.Parameter)fromJSON(Type.Parameter,i.Value));
1345 }
1346 return map;
1347 }
1348
1349 case Type.ArrayValue: {
1350 string tag = (string)obj["tag"];
1351 switch (tag) {
1352 case "VBoolArray": {
1353 data.VBoolArray tv = new data.VBoolArray();
1354 tv._0 = (List<bool>)fromJSON(Type.Array_Bool,obj["arg0"]);
1355 return tv;
1356 }
1357 case "VIntArray": {
1358 data.VIntArray tv = new data.VIntArray();
1359 tv._0 = (List<int>)fromJSON(Type.Array_Int32,obj["arg0"]);
1360 return tv;
1361 }
1362 case "VWordArray": {
1363 data.VWordArray tv = new data.VWordArray();
1364 tv._0 = (List<uint>)fromJSON(Type.Array_Word32,obj["arg0"]);
1365 return tv;
1366 }
1367 case "VFloatArray": {
1368 data.VFloatArray tv = new data.VFloatArray();
1369 tv._0 = (List<float>)fromJSON(Type.Array_Float,obj["arg0"]);
1370 return tv;
1371 }
1372 default: throw new Exception("unknown constructor: " + tag);
1373 }
1374 }
1375 case Type.Value: {
1376 string tag = (string)obj["tag"];
1377 switch (tag) {
1378 case "VBool": {
1379 data.VBool tv = new data.VBool();
1380 tv._0 = (bool)fromJSON(Type.Bool,obj["arg0"]);
1381 return tv;
1382 }
1383 case "VV2B": {
1384 data.VV2B tv = new data.VV2B();
1385 tv._0 = (V2<bool>)fromJSON(Type.V2_Bool,obj["arg0"]);
1386 return tv;
1387 }
1388 case "VV3B": {
1389 data.VV3B tv = new data.VV3B();
1390 tv._0 = (V3<bool>)fromJSON(Type.V3_Bool,obj["arg0"]);
1391 return tv;
1392 }
1393 case "VV4B": {
1394 data.VV4B tv = new data.VV4B();
1395 tv._0 = (V4<bool>)fromJSON(Type.V4_Bool,obj["arg0"]);
1396 return tv;
1397 }
1398 case "VWord": {
1399 data.VWord tv = new data.VWord();
1400 tv._0 = (uint)fromJSON(Type.Word32,obj["arg0"]);
1401 return tv;
1402 }
1403 case "VV2U": {
1404 data.VV2U tv = new data.VV2U();
1405 tv._0 = (V2<uint>)fromJSON(Type.V2_Word,obj["arg0"]);
1406 return tv;
1407 }
1408 case "VV3U": {
1409 data.VV3U tv = new data.VV3U();
1410 tv._0 = (V3<uint>)fromJSON(Type.V3_Word,obj["arg0"]);
1411 return tv;
1412 }
1413 case "VV4U": {
1414 data.VV4U tv = new data.VV4U();
1415 tv._0 = (V4<uint>)fromJSON(Type.V4_Word,obj["arg0"]);
1416 return tv;
1417 }
1418 case "VInt": {
1419 data.VInt tv = new data.VInt();
1420 tv._0 = (int)fromJSON(Type.Int32,obj["arg0"]);
1421 return tv;
1422 }
1423 case "VV2I": {
1424 data.VV2I tv = new data.VV2I();
1425 tv._0 = (V2<int>)fromJSON(Type.V2_Int,obj["arg0"]);
1426 return tv;
1427 }
1428 case "VV3I": {
1429 data.VV3I tv = new data.VV3I();
1430 tv._0 = (V3<int>)fromJSON(Type.V3_Int,obj["arg0"]);
1431 return tv;
1432 }
1433 case "VV4I": {
1434 data.VV4I tv = new data.VV4I();
1435 tv._0 = (V4<int>)fromJSON(Type.V4_Int,obj["arg0"]);
1436 return tv;
1437 }
1438 case "VFloat": {
1439 data.VFloat tv = new data.VFloat();
1440 tv._0 = (float)fromJSON(Type.Float,obj["arg0"]);
1441 return tv;
1442 }
1443 case "VV2F": {
1444 data.VV2F tv = new data.VV2F();
1445 tv._0 = (V2<float>)fromJSON(Type.V2_Float,obj["arg0"]);
1446 return tv;
1447 }
1448 case "VV3F": {
1449 data.VV3F tv = new data.VV3F();
1450 tv._0 = (V3<float>)fromJSON(Type.V3_Float,obj["arg0"]);
1451 return tv;
1452 }
1453 case "VV4F": {
1454 data.VV4F tv = new data.VV4F();
1455 tv._0 = (V4<float>)fromJSON(Type.V4_Float,obj["arg0"]);
1456 return tv;
1457 }
1458 case "VM22F": {
1459 data.VM22F tv = new data.VM22F();
1460 tv._0 = (V2<V2<float>>)fromJSON(Type.V2_V2_Float,obj["arg0"]);
1461 return tv;
1462 }
1463 case "VM23F": {
1464 data.VM23F tv = new data.VM23F();
1465 tv._0 = (V3<V2<float>>)fromJSON(Type.V3_V2_Float,obj["arg0"]);
1466 return tv;
1467 }
1468 case "VM24F": {
1469 data.VM24F tv = new data.VM24F();
1470 tv._0 = (V4<V2<float>>)fromJSON(Type.V4_V2_Float,obj["arg0"]);
1471 return tv;
1472 }
1473 case "VM32F": {
1474 data.VM32F tv = new data.VM32F();
1475 tv._0 = (V2<V3<float>>)fromJSON(Type.V2_V3_Float,obj["arg0"]);
1476 return tv;
1477 }
1478 case "VM33F": {
1479 data.VM33F tv = new data.VM33F();
1480 tv._0 = (V3<V3<float>>)fromJSON(Type.V3_V3_Float,obj["arg0"]);
1481 return tv;
1482 }
1483 case "VM34F": {
1484 data.VM34F tv = new data.VM34F();
1485 tv._0 = (V4<V3<float>>)fromJSON(Type.V4_V3_Float,obj["arg0"]);
1486 return tv;
1487 }
1488 case "VM42F": {
1489 data.VM42F tv = new data.VM42F();
1490 tv._0 = (V2<V4<float>>)fromJSON(Type.V2_V4_Float,obj["arg0"]);
1491 return tv;
1492 }
1493 case "VM43F": {
1494 data.VM43F tv = new data.VM43F();
1495 tv._0 = (V3<V4<float>>)fromJSON(Type.V3_V4_Float,obj["arg0"]);
1496 return tv;
1497 }
1498 case "VM44F": {
1499 data.VM44F tv = new data.VM44F();
1500 tv._0 = (V4<V4<float>>)fromJSON(Type.V4_V4_Float,obj["arg0"]);
1501 return tv;
1502 }
1503 default: throw new Exception("unknown constructor: " + tag);
1504 }
1505 }
1506 case Type.InputType: {
1507 string tag = (string)obj["tag"];
1508 InputType.Tag tagType;
1509 switch (tag) {
1510 case "Bool": tagType = InputType.Tag.Bool; break;
1511 case "V2B": tagType = InputType.Tag.V2B; break;
1512 case "V3B": tagType = InputType.Tag.V3B; break;
1513 case "V4B": tagType = InputType.Tag.V4B; break;
1514 case "Word": tagType = InputType.Tag.Word; break;
1515 case "V2U": tagType = InputType.Tag.V2U; break;
1516 case "V3U": tagType = InputType.Tag.V3U; break;
1517 case "V4U": tagType = InputType.Tag.V4U; break;
1518 case "Int": tagType = InputType.Tag.Int; break;
1519 case "V2I": tagType = InputType.Tag.V2I; break;
1520 case "V3I": tagType = InputType.Tag.V3I; break;
1521 case "V4I": tagType = InputType.Tag.V4I; break;
1522 case "Float": tagType = InputType.Tag.Float; break;
1523 case "V2F": tagType = InputType.Tag.V2F; break;
1524 case "V3F": tagType = InputType.Tag.V3F; break;
1525 case "V4F": tagType = InputType.Tag.V4F; break;
1526 case "M22F": tagType = InputType.Tag.M22F; break;
1527 case "M23F": tagType = InputType.Tag.M23F; break;
1528 case "M24F": tagType = InputType.Tag.M24F; break;
1529 case "M32F": tagType = InputType.Tag.M32F; break;
1530 case "M33F": tagType = InputType.Tag.M33F; break;
1531 case "M34F": tagType = InputType.Tag.M34F; break;
1532 case "M42F": tagType = InputType.Tag.M42F; break;
1533 case "M43F": tagType = InputType.Tag.M43F; break;
1534 case "M44F": tagType = InputType.Tag.M44F; break;
1535 case "STexture1D": tagType = InputType.Tag.STexture1D; break;
1536 case "STexture2D": tagType = InputType.Tag.STexture2D; break;
1537 case "STextureCube": tagType = InputType.Tag.STextureCube; break;
1538 case "STexture1DArray": tagType = InputType.Tag.STexture1DArray; break;
1539 case "STexture2DArray": tagType = InputType.Tag.STexture2DArray; break;
1540 case "STexture2DRect": tagType = InputType.Tag.STexture2DRect; break;
1541 case "FTexture1D": tagType = InputType.Tag.FTexture1D; break;
1542 case "FTexture2D": tagType = InputType.Tag.FTexture2D; break;
1543 case "FTexture3D": tagType = InputType.Tag.FTexture3D; break;
1544 case "FTextureCube": tagType = InputType.Tag.FTextureCube; break;
1545 case "FTexture1DArray": tagType = InputType.Tag.FTexture1DArray; break;
1546 case "FTexture2DArray": tagType = InputType.Tag.FTexture2DArray; break;
1547 case "FTexture2DMS": tagType = InputType.Tag.FTexture2DMS; break;
1548 case "FTexture2DMSArray": tagType = InputType.Tag.FTexture2DMSArray; break;
1549 case "FTextureBuffer": tagType = InputType.Tag.FTextureBuffer; break;
1550 case "FTexture2DRect": tagType = InputType.Tag.FTexture2DRect; break;
1551 case "ITexture1D": tagType = InputType.Tag.ITexture1D; break;
1552 case "ITexture2D": tagType = InputType.Tag.ITexture2D; break;
1553 case "ITexture3D": tagType = InputType.Tag.ITexture3D; break;
1554 case "ITextureCube": tagType = InputType.Tag.ITextureCube; break;
1555 case "ITexture1DArray": tagType = InputType.Tag.ITexture1DArray; break;
1556 case "ITexture2DArray": tagType = InputType.Tag.ITexture2DArray; break;
1557 case "ITexture2DMS": tagType = InputType.Tag.ITexture2DMS; break;
1558 case "ITexture2DMSArray": tagType = InputType.Tag.ITexture2DMSArray; break;
1559 case "ITextureBuffer": tagType = InputType.Tag.ITextureBuffer; break;
1560 case "ITexture2DRect": tagType = InputType.Tag.ITexture2DRect; break;
1561 case "UTexture1D": tagType = InputType.Tag.UTexture1D; break;
1562 case "UTexture2D": tagType = InputType.Tag.UTexture2D; break;
1563 case "UTexture3D": tagType = InputType.Tag.UTexture3D; break;
1564 case "UTextureCube": tagType = InputType.Tag.UTextureCube; break;
1565 case "UTexture1DArray": tagType = InputType.Tag.UTexture1DArray; break;
1566 case "UTexture2DArray": tagType = InputType.Tag.UTexture2DArray; break;
1567 case "UTexture2DMS": tagType = InputType.Tag.UTexture2DMS; break;
1568 case "UTexture2DMSArray": tagType = InputType.Tag.UTexture2DMSArray; break;
1569 case "UTextureBuffer": tagType = InputType.Tag.UTextureBuffer; break;
1570 case "UTexture2DRect": tagType = InputType.Tag.UTexture2DRect; break;
1571 default: throw new Exception("unknown constructor: " + tag);
1572 }
1573 InputType o = new InputType();
1574 o.tag = tagType;
1575 return o;
1576 }
1577 case Type.PointSpriteCoordOrigin: {
1578 string tag = (string)obj["tag"];
1579 PointSpriteCoordOrigin.Tag tagType;
1580 switch (tag) {
1581 case "LowerLeft": tagType = PointSpriteCoordOrigin.Tag.LowerLeft; break;
1582 case "UpperLeft": tagType = PointSpriteCoordOrigin.Tag.UpperLeft; break;
1583 default: throw new Exception("unknown constructor: " + tag);
1584 }
1585 PointSpriteCoordOrigin o = new PointSpriteCoordOrigin();
1586 o.tag = tagType;
1587 return o;
1588 }
1589 case Type.PointSize: {
1590 string tag = (string)obj["tag"];
1591 PointSize.Tag tagType;
1592 switch (tag) {
1593 case "PointSize": {
1594 data.PointSize tv = new data.PointSize();
1595 tv._0 = (float)fromJSON(Type.Float,obj["arg0"]);
1596 return tv;
1597 }
1598 case "ProgramPointSize": tagType = PointSize.Tag.ProgramPointSize; break;
1599 default: throw new Exception("unknown constructor: " + tag);
1600 }
1601 PointSize o = new PointSize();
1602 o.tag = tagType;
1603 return o;
1604 }
1605 case Type.PolygonOffset: {
1606 string tag = (string)obj["tag"];
1607 PolygonOffset.Tag tagType;
1608 switch (tag) {
1609 case "NoOffset": tagType = PolygonOffset.Tag.NoOffset; break;
1610 case "Offset": {
1611 data.Offset tv = new data.Offset();
1612 tv._0 = (float)fromJSON(Type.Float,obj["arg0"]);
1613 tv._1 = (float)fromJSON(Type.Float,obj["arg1"]);
1614 return tv;
1615 }
1616 default: throw new Exception("unknown constructor: " + tag);
1617 }
1618 PolygonOffset o = new PolygonOffset();
1619 o.tag = tagType;
1620 return o;
1621 }
1622 case Type.FrontFace: {
1623 string tag = (string)obj["tag"];
1624 FrontFace.Tag tagType;
1625 switch (tag) {
1626 case "CCW": tagType = FrontFace.Tag.CCW; break;
1627 case "CW": tagType = FrontFace.Tag.CW; break;
1628 default: throw new Exception("unknown constructor: " + tag);
1629 }
1630 FrontFace o = new FrontFace();
1631 o.tag = tagType;
1632 return o;
1633 }
1634 case Type.PolygonMode: {
1635 string tag = (string)obj["tag"];
1636 PolygonMode.Tag tagType;
1637 switch (tag) {
1638 case "PolygonPoint": {
1639 data.PolygonPoint tv = new data.PolygonPoint();
1640 tv._0 = (global::LambdaCube.IR.PointSize)fromJSON(Type.PointSize,obj["arg0"]);
1641 return tv;
1642 }
1643 case "PolygonLine": {
1644 data.PolygonLine tv = new data.PolygonLine();
1645 tv._0 = (float)fromJSON(Type.Float,obj["arg0"]);
1646 return tv;
1647 }
1648 case "PolygonFill": tagType = PolygonMode.Tag.PolygonFill; break;
1649 default: throw new Exception("unknown constructor: " + tag);
1650 }
1651 PolygonMode o = new PolygonMode();
1652 o.tag = tagType;
1653 return o;
1654 }
1655 case Type.ProvokingVertex: {
1656 string tag = (string)obj["tag"];
1657 ProvokingVertex.Tag tagType;
1658 switch (tag) {
1659 case "FirstVertex": tagType = ProvokingVertex.Tag.FirstVertex; break;
1660 case "LastVertex": tagType = ProvokingVertex.Tag.LastVertex; break;
1661 default: throw new Exception("unknown constructor: " + tag);
1662 }
1663 ProvokingVertex o = new ProvokingVertex();
1664 o.tag = tagType;
1665 return o;
1666 }
1667 case Type.CullMode: {
1668 string tag = (string)obj["tag"];
1669 CullMode.Tag tagType;
1670 switch (tag) {
1671 case "CullNone": tagType = CullMode.Tag.CullNone; break;
1672 case "CullFront": {
1673 data.CullFront tv = new data.CullFront();
1674 tv._0 = (global::LambdaCube.IR.FrontFace)fromJSON(Type.FrontFace,obj["arg0"]);
1675 return tv;
1676 }
1677 case "CullBack": {
1678 data.CullBack tv = new data.CullBack();
1679 tv._0 = (global::LambdaCube.IR.FrontFace)fromJSON(Type.FrontFace,obj["arg0"]);
1680 return tv;
1681 }
1682 default: throw new Exception("unknown constructor: " + tag);
1683 }
1684 CullMode o = new CullMode();
1685 o.tag = tagType;
1686 return o;
1687 }
1688 case Type.ComparisonFunction: {
1689 string tag = (string)obj["tag"];
1690 ComparisonFunction.Tag tagType;
1691 switch (tag) {
1692 case "Never": tagType = ComparisonFunction.Tag.Never; break;
1693 case "Less": tagType = ComparisonFunction.Tag.Less; break;
1694 case "Equal": tagType = ComparisonFunction.Tag.Equal; break;
1695 case "Lequal": tagType = ComparisonFunction.Tag.Lequal; break;
1696 case "Greater": tagType = ComparisonFunction.Tag.Greater; break;
1697 case "Notequal": tagType = ComparisonFunction.Tag.Notequal; break;
1698 case "Gequal": tagType = ComparisonFunction.Tag.Gequal; break;
1699 case "Always": tagType = ComparisonFunction.Tag.Always; break;
1700 default: throw new Exception("unknown constructor: " + tag);
1701 }
1702 ComparisonFunction o = new ComparisonFunction();
1703 o.tag = tagType;
1704 return o;
1705 }
1706 case Type.StencilOperation: {
1707 string tag = (string)obj["tag"];
1708 StencilOperation.Tag tagType;
1709 switch (tag) {
1710 case "OpZero": tagType = StencilOperation.Tag.OpZero; break;
1711 case "OpKeep": tagType = StencilOperation.Tag.OpKeep; break;
1712 case "OpReplace": tagType = StencilOperation.Tag.OpReplace; break;
1713 case "OpIncr": tagType = StencilOperation.Tag.OpIncr; break;
1714 case "OpIncrWrap": tagType = StencilOperation.Tag.OpIncrWrap; break;
1715 case "OpDecr": tagType = StencilOperation.Tag.OpDecr; break;
1716 case "OpDecrWrap": tagType = StencilOperation.Tag.OpDecrWrap; break;
1717 case "OpInvert": tagType = StencilOperation.Tag.OpInvert; break;
1718 default: throw new Exception("unknown constructor: " + tag);
1719 }
1720 StencilOperation o = new StencilOperation();
1721 o.tag = tagType;
1722 return o;
1723 }
1724 case Type.BlendEquation: {
1725 string tag = (string)obj["tag"];
1726 BlendEquation.Tag tagType;
1727 switch (tag) {
1728 case "FuncAdd": tagType = BlendEquation.Tag.FuncAdd; break;
1729 case "FuncSubtract": tagType = BlendEquation.Tag.FuncSubtract; break;
1730 case "FuncReverseSubtract": tagType = BlendEquation.Tag.FuncReverseSubtract; break;
1731 case "Min": tagType = BlendEquation.Tag.Min; break;
1732 case "Max": tagType = BlendEquation.Tag.Max; break;
1733 default: throw new Exception("unknown constructor: " + tag);
1734 }
1735 BlendEquation o = new BlendEquation();
1736 o.tag = tagType;
1737 return o;
1738 }
1739 case Type.BlendingFactor: {
1740 string tag = (string)obj["tag"];
1741 BlendingFactor.Tag tagType;
1742 switch (tag) {
1743 case "Zero": tagType = BlendingFactor.Tag.Zero; break;
1744 case "One": tagType = BlendingFactor.Tag.One; break;
1745 case "SrcColor": tagType = BlendingFactor.Tag.SrcColor; break;
1746 case "OneMinusSrcColor": tagType = BlendingFactor.Tag.OneMinusSrcColor; break;
1747 case "DstColor": tagType = BlendingFactor.Tag.DstColor; break;
1748 case "OneMinusDstColor": tagType = BlendingFactor.Tag.OneMinusDstColor; break;
1749 case "SrcAlpha": tagType = BlendingFactor.Tag.SrcAlpha; break;
1750 case "OneMinusSrcAlpha": tagType = BlendingFactor.Tag.OneMinusSrcAlpha; break;
1751 case "DstAlpha": tagType = BlendingFactor.Tag.DstAlpha; break;
1752 case "OneMinusDstAlpha": tagType = BlendingFactor.Tag.OneMinusDstAlpha; break;
1753 case "ConstantColor": tagType = BlendingFactor.Tag.ConstantColor; break;
1754 case "OneMinusConstantColor": tagType = BlendingFactor.Tag.OneMinusConstantColor; break;
1755 case "ConstantAlpha": tagType = BlendingFactor.Tag.ConstantAlpha; break;
1756 case "OneMinusConstantAlpha": tagType = BlendingFactor.Tag.OneMinusConstantAlpha; break;
1757 case "SrcAlphaSaturate": tagType = BlendingFactor.Tag.SrcAlphaSaturate; break;
1758 default: throw new Exception("unknown constructor: " + tag);
1759 }
1760 BlendingFactor o = new BlendingFactor();
1761 o.tag = tagType;
1762 return o;
1763 }
1764 case Type.LogicOperation: {
1765 string tag = (string)obj["tag"];
1766 LogicOperation.Tag tagType;
1767 switch (tag) {
1768 case "Clear": tagType = LogicOperation.Tag.Clear; break;
1769 case "And": tagType = LogicOperation.Tag.And; break;
1770 case "AndReverse": tagType = LogicOperation.Tag.AndReverse; break;
1771 case "Copy": tagType = LogicOperation.Tag.Copy; break;
1772 case "AndInverted": tagType = LogicOperation.Tag.AndInverted; break;
1773 case "Noop": tagType = LogicOperation.Tag.Noop; break;
1774 case "Xor": tagType = LogicOperation.Tag.Xor; break;
1775 case "Or": tagType = LogicOperation.Tag.Or; break;
1776 case "Nor": tagType = LogicOperation.Tag.Nor; break;
1777 case "Equiv": tagType = LogicOperation.Tag.Equiv; break;
1778 case "Invert": tagType = LogicOperation.Tag.Invert; break;
1779 case "OrReverse": tagType = LogicOperation.Tag.OrReverse; break;
1780 case "CopyInverted": tagType = LogicOperation.Tag.CopyInverted; break;
1781 case "OrInverted": tagType = LogicOperation.Tag.OrInverted; break;
1782 case "Nand": tagType = LogicOperation.Tag.Nand; break;
1783 case "Set": tagType = LogicOperation.Tag.Set; break;
1784 default: throw new Exception("unknown constructor: " + tag);
1785 }
1786 LogicOperation o = new LogicOperation();
1787 o.tag = tagType;
1788 return o;
1789 }
1790 case Type.StencilOps: {
1791 string tag = (string)obj["tag"];
1792 switch (tag) {
1793 case "StencilOps": {
1794 data.StencilOps tv = new data.StencilOps();
1795 tv.frontStencilOp = (global::LambdaCube.IR.StencilOperation)fromJSON(Type.StencilOperation,obj["frontStencilOp"]);
1796 tv.backStencilOp = (global::LambdaCube.IR.StencilOperation)fromJSON(Type.StencilOperation,obj["backStencilOp"]);
1797 return tv;
1798 }
1799 default: throw new Exception("unknown constructor: " + tag);
1800 }
1801 }
1802 case Type.StencilTest: {
1803 string tag = (string)obj["tag"];
1804 switch (tag) {
1805 case "StencilTest": {
1806 data.StencilTest tv = new data.StencilTest();
1807 tv.stencilComparision = (global::LambdaCube.IR.ComparisonFunction)fromJSON(Type.ComparisonFunction,obj["stencilComparision"]);
1808 tv.stencilReference = (int)fromJSON(Type.Int32,obj["stencilReference"]);
1809 tv.stencilMask = (uint)fromJSON(Type.Word32,obj["stencilMask"]);
1810 return tv;
1811 }
1812 default: throw new Exception("unknown constructor: " + tag);
1813 }
1814 }
1815 case Type.StencilTests: {
1816 string tag = (string)obj["tag"];
1817 switch (tag) {
1818 case "StencilTests": {
1819 data.StencilTests tv = new data.StencilTests();
1820 tv._0 = (global::LambdaCube.IR.StencilTest)fromJSON(Type.StencilTest,obj["arg0"]);
1821 tv._1 = (global::LambdaCube.IR.StencilTest)fromJSON(Type.StencilTest,obj["arg1"]);
1822 return tv;
1823 }
1824 default: throw new Exception("unknown constructor: " + tag);
1825 }
1826 }
1827 case Type.FetchPrimitive: {
1828 string tag = (string)obj["tag"];
1829 FetchPrimitive.Tag tagType;
1830 switch (tag) {
1831 case "Points": tagType = FetchPrimitive.Tag.Points; break;
1832 case "Lines": tagType = FetchPrimitive.Tag.Lines; break;
1833 case "Triangles": tagType = FetchPrimitive.Tag.Triangles; break;
1834 case "LinesAdjacency": tagType = FetchPrimitive.Tag.LinesAdjacency; break;
1835 case "TrianglesAdjacency": tagType = FetchPrimitive.Tag.TrianglesAdjacency; break;
1836 default: throw new Exception("unknown constructor: " + tag);
1837 }
1838 FetchPrimitive o = new FetchPrimitive();
1839 o.tag = tagType;
1840 return o;
1841 }
1842 case Type.OutputPrimitive: {
1843 string tag = (string)obj["tag"];
1844 OutputPrimitive.Tag tagType;
1845 switch (tag) {
1846 case "TrianglesOutput": tagType = OutputPrimitive.Tag.TrianglesOutput; break;
1847 case "LinesOutput": tagType = OutputPrimitive.Tag.LinesOutput; break;
1848 case "PointsOutput": tagType = OutputPrimitive.Tag.PointsOutput; break;
1849 default: throw new Exception("unknown constructor: " + tag);
1850 }
1851 OutputPrimitive o = new OutputPrimitive();
1852 o.tag = tagType;
1853 return o;
1854 }
1855 case Type.ColorArity: {
1856 string tag = (string)obj["tag"];
1857 ColorArity.Tag tagType;
1858 switch (tag) {
1859 case "Red": tagType = ColorArity.Tag.Red; break;
1860 case "RG": tagType = ColorArity.Tag.RG; break;
1861 case "RGB": tagType = ColorArity.Tag.RGB; break;
1862 case "RGBA": tagType = ColorArity.Tag.RGBA; break;
1863 default: throw new Exception("unknown constructor: " + tag);
1864 }
1865 ColorArity o = new ColorArity();
1866 o.tag = tagType;
1867 return o;
1868 }
1869 case Type.Blending: {
1870 string tag = (string)obj["tag"];
1871 Blending.Tag tagType;
1872 switch (tag) {
1873 case "NoBlending": tagType = Blending.Tag.NoBlending; break;
1874 case "BlendLogicOp": {
1875 data.BlendLogicOp tv = new data.BlendLogicOp();
1876 tv._0 = (global::LambdaCube.IR.LogicOperation)fromJSON(Type.LogicOperation,obj["arg0"]);
1877 return tv;
1878 }
1879 case "Blend": {
1880 data.Blend tv = new data.Blend();
1881 tv.colorEqSrc = (global::LambdaCube.IR.BlendEquation)fromJSON(Type.BlendEquation,obj["colorEqSrc"]);
1882 tv.alphaEqSrc = (global::LambdaCube.IR.BlendEquation)fromJSON(Type.BlendEquation,obj["alphaEqSrc"]);
1883 tv.colorFSrc = (global::LambdaCube.IR.BlendingFactor)fromJSON(Type.BlendingFactor,obj["colorFSrc"]);
1884 tv.colorFDst = (global::LambdaCube.IR.BlendingFactor)fromJSON(Type.BlendingFactor,obj["colorFDst"]);
1885 tv.alphaFSrc = (global::LambdaCube.IR.BlendingFactor)fromJSON(Type.BlendingFactor,obj["alphaFSrc"]);
1886 tv.alphaFDst = (global::LambdaCube.IR.BlendingFactor)fromJSON(Type.BlendingFactor,obj["alphaFDst"]);
1887 tv.color = (V4<float>)fromJSON(Type.V4_Float,obj["color"]);
1888 return tv;
1889 }
1890 default: throw new Exception("unknown constructor: " + tag);
1891 }
1892 Blending o = new Blending();
1893 o.tag = tagType;
1894 return o;
1895 }
1896 case Type.RasterContext: {
1897 string tag = (string)obj["tag"];
1898 switch (tag) {
1899 case "PointCtx": {
1900 data.PointCtx tv = new data.PointCtx();
1901 tv._0 = (global::LambdaCube.IR.PointSize)fromJSON(Type.PointSize,obj["arg0"]);
1902 tv._1 = (float)fromJSON(Type.Float,obj["arg1"]);
1903 tv._2 = (global::LambdaCube.IR.PointSpriteCoordOrigin)fromJSON(Type.PointSpriteCoordOrigin,obj["arg2"]);
1904 return tv;
1905 }
1906 case "LineCtx": {
1907 data.LineCtx tv = new data.LineCtx();
1908 tv._0 = (float)fromJSON(Type.Float,obj["arg0"]);
1909 tv._1 = (global::LambdaCube.IR.ProvokingVertex)fromJSON(Type.ProvokingVertex,obj["arg1"]);
1910 return tv;
1911 }
1912 case "TriangleCtx": {
1913 data.TriangleCtx tv = new data.TriangleCtx();
1914 tv._0 = (global::LambdaCube.IR.CullMode)fromJSON(Type.CullMode,obj["arg0"]);
1915 tv._1 = (global::LambdaCube.IR.PolygonMode)fromJSON(Type.PolygonMode,obj["arg1"]);
1916 tv._2 = (global::LambdaCube.IR.PolygonOffset)fromJSON(Type.PolygonOffset,obj["arg2"]);
1917 tv._3 = (global::LambdaCube.IR.ProvokingVertex)fromJSON(Type.ProvokingVertex,obj["arg3"]);
1918 return tv;
1919 }
1920 default: throw new Exception("unknown constructor: " + tag);
1921 }
1922 }
1923 case Type.FragmentOperation: {
1924 string tag = (string)obj["tag"];
1925 switch (tag) {
1926 case "DepthOp": {
1927 data.DepthOp tv = new data.DepthOp();
1928 tv._0 = (global::LambdaCube.IR.ComparisonFunction)fromJSON(Type.ComparisonFunction,obj["arg0"]);
1929 tv._1 = (bool)fromJSON(Type.Bool,obj["arg1"]);
1930 return tv;
1931 }
1932 case "StencilOp": {
1933 data.StencilOp tv = new data.StencilOp();
1934 tv._0 = (global::LambdaCube.IR.StencilTests)fromJSON(Type.StencilTests,obj["arg0"]);
1935 tv._1 = (global::LambdaCube.IR.StencilOps)fromJSON(Type.StencilOps,obj["arg1"]);
1936 tv._2 = (global::LambdaCube.IR.StencilOps)fromJSON(Type.StencilOps,obj["arg2"]);
1937 return tv;
1938 }
1939 case "ColorOp": {
1940 data.ColorOp tv = new data.ColorOp();
1941 tv._0 = (global::LambdaCube.IR.Blending)fromJSON(Type.Blending,obj["arg0"]);
1942 tv._1 = (global::LambdaCube.IR.Value)fromJSON(Type.Value,obj["arg1"]);
1943 return tv;
1944 }
1945 default: throw new Exception("unknown constructor: " + tag);
1946 }
1947 }
1948 case Type.AccumulationContext: {
1949 string tag = (string)obj["tag"];
1950 switch (tag) {
1951 case "AccumulationContext": {
1952 data.AccumulationContext tv = new data.AccumulationContext();
1953 tv.accViewportName = (Maybe<string>)fromJSON(Type.Maybe_String,obj["accViewportName"]);
1954 tv.accOperations = (List<global::LambdaCube.IR.FragmentOperation>)fromJSON(Type.List_FragmentOperation,obj["accOperations"]);
1955 return tv;
1956 }
1957 default: throw new Exception("unknown constructor: " + tag);
1958 }
1959 }
1960 case Type.TextureDataType: {
1961 string tag = (string)obj["tag"];
1962 TextureDataType.Tag tagType;
1963 switch (tag) {
1964 case "FloatT": {
1965 data.FloatT tv = new data.FloatT();
1966 tv._0 = (global::LambdaCube.IR.ColorArity)fromJSON(Type.ColorArity,obj["arg0"]);
1967 return tv;
1968 }
1969 case "IntT": {
1970 data.IntT tv = new data.IntT();
1971 tv._0 = (global::LambdaCube.IR.ColorArity)fromJSON(Type.ColorArity,obj["arg0"]);
1972 return tv;
1973 }
1974 case "WordT": {
1975 data.WordT tv = new data.WordT();
1976 tv._0 = (global::LambdaCube.IR.ColorArity)fromJSON(Type.ColorArity,obj["arg0"]);
1977 return tv;
1978 }
1979 case "ShadowT": tagType = TextureDataType.Tag.ShadowT; break;
1980 default: throw new Exception("unknown constructor: " + tag);
1981 }
1982 TextureDataType o = new TextureDataType();
1983 o.tag = tagType;
1984 return o;
1985 }
1986 case Type.TextureType: {
1987 string tag = (string)obj["tag"];
1988 switch (tag) {
1989 case "Texture1D": {
1990 data.Texture1D tv = new data.Texture1D();
1991 tv._0 = (global::LambdaCube.IR.TextureDataType)fromJSON(Type.TextureDataType,obj["arg0"]);
1992 tv._1 = (int)fromJSON(Type.Int,obj["arg1"]);
1993 return tv;
1994 }
1995 case "Texture2D": {
1996 data.Texture2D tv = new data.Texture2D();
1997 tv._0 = (global::LambdaCube.IR.TextureDataType)fromJSON(Type.TextureDataType,obj["arg0"]);
1998 tv._1 = (int)fromJSON(Type.Int,obj["arg1"]);
1999 return tv;
2000 }
2001 case "Texture3D": {
2002 data.Texture3D tv = new data.Texture3D();
2003 tv._0 = (global::LambdaCube.IR.TextureDataType)fromJSON(Type.TextureDataType,obj["arg0"]);
2004 return tv;
2005 }
2006 case "TextureCube": {
2007 data.TextureCube tv = new data.TextureCube();
2008 tv._0 = (global::LambdaCube.IR.TextureDataType)fromJSON(Type.TextureDataType,obj["arg0"]);
2009 return tv;
2010 }
2011 case "TextureRect": {
2012 data.TextureRect tv = new data.TextureRect();
2013 tv._0 = (global::LambdaCube.IR.TextureDataType)fromJSON(Type.TextureDataType,obj["arg0"]);
2014 return tv;
2015 }
2016 case "Texture2DMS": {
2017 data.Texture2DMS tv = new data.Texture2DMS();
2018 tv._0 = (global::LambdaCube.IR.TextureDataType)fromJSON(Type.TextureDataType,obj["arg0"]);
2019 tv._1 = (int)fromJSON(Type.Int,obj["arg1"]);
2020 tv._2 = (int)fromJSON(Type.Int,obj["arg2"]);
2021 tv._3 = (bool)fromJSON(Type.Bool,obj["arg3"]);
2022 return tv;
2023 }
2024 case "TextureBuffer": {
2025 data.TextureBuffer tv = new data.TextureBuffer();
2026 tv._0 = (global::LambdaCube.IR.TextureDataType)fromJSON(Type.TextureDataType,obj["arg0"]);
2027 return tv;
2028 }
2029 default: throw new Exception("unknown constructor: " + tag);
2030 }
2031 }
2032 case Type.MipMap: {
2033 string tag = (string)obj["tag"];
2034 MipMap.Tag tagType;
2035 switch (tag) {
2036 case "Mip": {
2037 data.Mip tv = new data.Mip();
2038 tv._0 = (int)fromJSON(Type.Int,obj["arg0"]);
2039 tv._1 = (int)fromJSON(Type.Int,obj["arg1"]);
2040 return tv;
2041 }
2042 case "NoMip": tagType = MipMap.Tag.NoMip; break;
2043 case "AutoMip": {
2044 data.AutoMip tv = new data.AutoMip();
2045 tv._0 = (int)fromJSON(Type.Int,obj["arg0"]);
2046 tv._1 = (int)fromJSON(Type.Int,obj["arg1"]);
2047 return tv;
2048 }
2049 default: throw new Exception("unknown constructor: " + tag);
2050 }
2051 MipMap o = new MipMap();
2052 o.tag = tagType;
2053 return o;
2054 }
2055 case Type.Filter: {
2056 string tag = (string)obj["tag"];
2057 Filter.Tag tagType;
2058 switch (tag) {
2059 case "Nearest": tagType = Filter.Tag.Nearest; break;
2060 case "Linear": tagType = Filter.Tag.Linear; break;
2061 case "NearestMipmapNearest": tagType = Filter.Tag.NearestMipmapNearest; break;
2062 case "NearestMipmapLinear": tagType = Filter.Tag.NearestMipmapLinear; break;
2063 case "LinearMipmapNearest": tagType = Filter.Tag.LinearMipmapNearest; break;
2064 case "LinearMipmapLinear": tagType = Filter.Tag.LinearMipmapLinear; break;
2065 default: throw new Exception("unknown constructor: " + tag);
2066 }
2067 Filter o = new Filter();
2068 o.tag = tagType;
2069 return o;
2070 }
2071 case Type.EdgeMode: {
2072 string tag = (string)obj["tag"];
2073 EdgeMode.Tag tagType;
2074 switch (tag) {
2075 case "Repeat": tagType = EdgeMode.Tag.Repeat; break;
2076 case "MirroredRepeat": tagType = EdgeMode.Tag.MirroredRepeat; break;
2077 case "ClampToEdge": tagType = EdgeMode.Tag.ClampToEdge; break;
2078 case "ClampToBorder": tagType = EdgeMode.Tag.ClampToBorder; break;
2079 default: throw new Exception("unknown constructor: " + tag);
2080 }
2081 EdgeMode o = new EdgeMode();
2082 o.tag = tagType;
2083 return o;
2084 }
2085 case Type.ImageSemantic: {
2086 string tag = (string)obj["tag"];
2087 ImageSemantic.Tag tagType;
2088 switch (tag) {
2089 case "Depth": tagType = ImageSemantic.Tag.Depth; break;
2090 case "Stencil": tagType = ImageSemantic.Tag.Stencil; break;
2091 case "Color": tagType = ImageSemantic.Tag.Color; break;
2092 default: throw new Exception("unknown constructor: " + tag);
2093 }
2094 ImageSemantic o = new ImageSemantic();
2095 o.tag = tagType;
2096 return o;
2097 }
2098 case Type.ImageRef: {
2099 string tag = (string)obj["tag"];
2100 switch (tag) {
2101 case "TextureImage": {
2102 data.TextureImage tv = new data.TextureImage();
2103 tv._0 = (int)fromJSON(Type.Int,obj["arg0"]);
2104 tv._1 = (int)fromJSON(Type.Int,obj["arg1"]);
2105 tv._2 = (Maybe<int>)fromJSON(Type.Maybe_Int,obj["arg2"]);
2106 return tv;
2107 }
2108 case "Framebuffer": {
2109 data.Framebuffer tv = new data.Framebuffer();
2110 tv._0 = (global::LambdaCube.IR.ImageSemantic)fromJSON(Type.ImageSemantic,obj["arg0"]);
2111 return tv;
2112 }
2113 default: throw new Exception("unknown constructor: " + tag);
2114 }
2115 }
2116 case Type.ClearImage: {
2117 string tag = (string)obj["tag"];
2118 switch (tag) {
2119 case "ClearImage": {
2120 data.ClearImage tv = new data.ClearImage();
2121 tv.imageSemantic = (global::LambdaCube.IR.ImageSemantic)fromJSON(Type.ImageSemantic,obj["imageSemantic"]);
2122 tv.clearValue = (global::LambdaCube.IR.Value)fromJSON(Type.Value,obj["clearValue"]);
2123 return tv;
2124 }
2125 default: throw new Exception("unknown constructor: " + tag);
2126 }
2127 }
2128 case Type.Command: {
2129 string tag = (string)obj["tag"];
2130 switch (tag) {
2131 case "SetRasterContext": {
2132 data.SetRasterContext tv = new data.SetRasterContext();
2133 tv._0 = (global::LambdaCube.IR.RasterContext)fromJSON(Type.RasterContext,obj["arg0"]);
2134 return tv;
2135 }
2136 case "SetAccumulationContext": {
2137 data.SetAccumulationContext tv = new data.SetAccumulationContext();
2138 tv._0 = (global::LambdaCube.IR.AccumulationContext)fromJSON(Type.AccumulationContext,obj["arg0"]);
2139 return tv;
2140 }
2141 case "SetRenderTarget": {
2142 data.SetRenderTarget tv = new data.SetRenderTarget();
2143 tv._0 = (int)fromJSON(Type.Int,obj["arg0"]);
2144 return tv;
2145 }
2146 case "SetProgram": {
2147 data.SetProgram tv = new data.SetProgram();
2148 tv._0 = (int)fromJSON(Type.Int,obj["arg0"]);
2149 return tv;
2150 }
2151 case "SetSamplerUniform": {
2152 data.SetSamplerUniform tv = new data.SetSamplerUniform();
2153 tv._0 = (string)fromJSON(Type.String,obj["arg0"]);
2154 tv._1 = (int)fromJSON(Type.Int,obj["arg1"]);
2155 return tv;
2156 }
2157 case "SetTexture": {
2158 data.SetTexture tv = new data.SetTexture();
2159 tv._0 = (int)fromJSON(Type.Int,obj["arg0"]);
2160 tv._1 = (int)fromJSON(Type.Int,obj["arg1"]);
2161 return tv;
2162 }
2163 case "SetSampler": {
2164 data.SetSampler tv = new data.SetSampler();
2165 tv._0 = (int)fromJSON(Type.Int,obj["arg0"]);
2166 tv._1 = (Maybe<int>)fromJSON(Type.Maybe_Int,obj["arg1"]);
2167 return tv;
2168 }
2169 case "RenderSlot": {
2170 data.RenderSlot tv = new data.RenderSlot();
2171 tv._0 = (int)fromJSON(Type.Int,obj["arg0"]);
2172 return tv;
2173 }
2174 case "RenderStream": {
2175 data.RenderStream tv = new data.RenderStream();
2176 tv._0 = (int)fromJSON(Type.Int,obj["arg0"]);
2177 return tv;
2178 }
2179 case "ClearRenderTarget": {
2180 data.ClearRenderTarget tv = new data.ClearRenderTarget();
2181 tv._0 = (List<global::LambdaCube.IR.ClearImage>)fromJSON(Type.Array_ClearImage,obj["arg0"]);
2182 return tv;
2183 }
2184 case "GenerateMipMap": {
2185 data.GenerateMipMap tv = new data.GenerateMipMap();
2186 tv._0 = (int)fromJSON(Type.Int,obj["arg0"]);
2187 return tv;
2188 }
2189 case "SaveImage": {
2190 data.SaveImage tv = new data.SaveImage();
2191 tv._0 = (int)fromJSON(Type.Int,obj["arg0"]);
2192 tv._1 = (global::LambdaCube.IR.ImageRef)fromJSON(Type.ImageRef,obj["arg1"]);
2193 return tv;
2194 }
2195 case "LoadImage": {
2196 data.LoadImage tv = new data.LoadImage();
2197 tv._0 = (global::LambdaCube.IR.ImageRef)fromJSON(Type.ImageRef,obj["arg0"]);
2198 tv._1 = (int)fromJSON(Type.Int,obj["arg1"]);
2199 return tv;
2200 }
2201 default: throw new Exception("unknown constructor: " + tag);
2202 }
2203 }
2204 case Type.SamplerDescriptor: {
2205 string tag = (string)obj["tag"];
2206 switch (tag) {
2207 case "SamplerDescriptor": {
2208 data.SamplerDescriptor tv = new data.SamplerDescriptor();
2209 tv.samplerWrapS = (global::LambdaCube.IR.EdgeMode)fromJSON(Type.EdgeMode,obj["samplerWrapS"]);
2210 tv.samplerWrapT = (Maybe<global::LambdaCube.IR.EdgeMode>)fromJSON(Type.Maybe_EdgeMode,obj["samplerWrapT"]);
2211 tv.samplerWrapR = (Maybe<global::LambdaCube.IR.EdgeMode>)fromJSON(Type.Maybe_EdgeMode,obj["samplerWrapR"]);
2212 tv.samplerMinFilter = (global::LambdaCube.IR.Filter)fromJSON(Type.Filter,obj["samplerMinFilter"]);
2213 tv.samplerMagFilter = (global::LambdaCube.IR.Filter)fromJSON(Type.Filter,obj["samplerMagFilter"]);
2214 tv.samplerBorderColor = (global::LambdaCube.IR.Value)fromJSON(Type.Value,obj["samplerBorderColor"]);
2215 tv.samplerMinLod = (Maybe<float>)fromJSON(Type.Maybe_Float,obj["samplerMinLod"]);
2216 tv.samplerMaxLod = (Maybe<float>)fromJSON(Type.Maybe_Float,obj["samplerMaxLod"]);
2217 tv.samplerLodBias = (float)fromJSON(Type.Float,obj["samplerLodBias"]);
2218 tv.samplerCompareFunc = (Maybe<global::LambdaCube.IR.ComparisonFunction>)fromJSON(Type.Maybe_ComparisonFunction,obj["samplerCompareFunc"]);
2219 return tv;
2220 }
2221 default: throw new Exception("unknown constructor: " + tag);
2222 }
2223 }
2224 case Type.TextureDescriptor: {
2225 string tag = (string)obj["tag"];
2226 switch (tag) {
2227 case "TextureDescriptor": {
2228 data.TextureDescriptor tv = new data.TextureDescriptor();
2229 tv.textureType = (global::LambdaCube.IR.TextureType)fromJSON(Type.TextureType,obj["textureType"]);
2230 tv.textureSize = (global::LambdaCube.IR.Value)fromJSON(Type.Value,obj["textureSize"]);
2231 tv.textureSemantic = (global::LambdaCube.IR.ImageSemantic)fromJSON(Type.ImageSemantic,obj["textureSemantic"]);
2232 tv.textureSampler = (global::LambdaCube.IR.SamplerDescriptor)fromJSON(Type.SamplerDescriptor,obj["textureSampler"]);
2233 tv.textureBaseLevel = (int)fromJSON(Type.Int,obj["textureBaseLevel"]);
2234 tv.textureMaxLevel = (int)fromJSON(Type.Int,obj["textureMaxLevel"]);
2235 return tv;
2236 }
2237 default: throw new Exception("unknown constructor: " + tag);
2238 }
2239 }
2240 case Type.Parameter: {
2241 string tag = (string)obj["tag"];
2242 switch (tag) {
2243 case "Parameter": {
2244 data.Parameter tv = new data.Parameter();
2245 tv.name = (string)fromJSON(Type.String,obj["name"]);
2246 tv.ty = (global::LambdaCube.IR.InputType)fromJSON(Type.InputType,obj["ty"]);
2247 return tv;
2248 }
2249 default: throw new Exception("unknown constructor: " + tag);
2250 }
2251 }
2252 case Type.Program: {
2253 string tag = (string)obj["tag"];
2254 switch (tag) {
2255 case "Program": {
2256 data.Program tv = new data.Program();
2257 tv.programUniforms = (Dictionary<string, global::LambdaCube.IR.InputType>)fromJSON(Type.Map_String_InputType,obj["programUniforms"]);
2258 tv.programStreams = (Dictionary<string, global::LambdaCube.IR.Parameter>)fromJSON(Type.Map_String_Parameter,obj["programStreams"]);
2259 tv.programInTextures = (Dictionary<string, global::LambdaCube.IR.InputType>)fromJSON(Type.Map_String_InputType,obj["programInTextures"]);
2260 tv.programOutput = (List<global::LambdaCube.IR.Parameter>)fromJSON(Type.Array_Parameter,obj["programOutput"]);
2261 tv.vertexShader = (string)fromJSON(Type.String,obj["vertexShader"]);
2262 tv.geometryShader = (Maybe<string>)fromJSON(Type.Maybe_String,obj["geometryShader"]);
2263 tv.fragmentShader = (string)fromJSON(Type.String,obj["fragmentShader"]);
2264 return tv;
2265 }
2266 default: throw new Exception("unknown constructor: " + tag);
2267 }
2268 }
2269 case Type.Slot: {
2270 string tag = (string)obj["tag"];
2271 switch (tag) {
2272 case "Slot": {
2273 data.Slot tv = new data.Slot();
2274 tv.slotName = (string)fromJSON(Type.String,obj["slotName"]);
2275 tv.slotStreams = (Dictionary<string, global::LambdaCube.IR.InputType>)fromJSON(Type.Map_String_InputType,obj["slotStreams"]);
2276 tv.slotUniforms = (Dictionary<string, global::LambdaCube.IR.InputType>)fromJSON(Type.Map_String_InputType,obj["slotUniforms"]);
2277 tv.slotPrimitive = (global::LambdaCube.IR.FetchPrimitive)fromJSON(Type.FetchPrimitive,obj["slotPrimitive"]);
2278 tv.slotPrograms = (List<int>)fromJSON(Type.Array_Int,obj["slotPrograms"]);
2279 return tv;
2280 }
2281 default: throw new Exception("unknown constructor: " + tag);
2282 }
2283 }
2284 case Type.StreamData: {
2285 string tag = (string)obj["tag"];
2286 switch (tag) {
2287 case "StreamData": {
2288 data.StreamData tv = new data.StreamData();
2289 tv.streamData = (Dictionary<string, global::LambdaCube.IR.ArrayValue>)fromJSON(Type.Map_String_ArrayValue,obj["streamData"]);
2290 tv.streamType = (Dictionary<string, global::LambdaCube.IR.InputType>)fromJSON(Type.Map_String_InputType,obj["streamType"]);
2291 tv.streamPrimitive = (global::LambdaCube.IR.FetchPrimitive)fromJSON(Type.FetchPrimitive,obj["streamPrimitive"]);
2292 tv.streamPrograms = (List<int>)fromJSON(Type.Array_Int,obj["streamPrograms"]);
2293 return tv;
2294 }
2295 default: throw new Exception("unknown constructor: " + tag);
2296 }
2297 }
2298 case Type.TargetItem: {
2299 string tag = (string)obj["tag"];
2300 switch (tag) {
2301 case "TargetItem": {
2302 data.TargetItem tv = new data.TargetItem();
2303 tv.targetSemantic = (global::LambdaCube.IR.ImageSemantic)fromJSON(Type.ImageSemantic,obj["targetSemantic"]);
2304 tv.targetRef = (Maybe<global::LambdaCube.IR.ImageRef>)fromJSON(Type.Maybe_ImageRef,obj["targetRef"]);
2305 return tv;
2306 }
2307 default: throw new Exception("unknown constructor: " + tag);
2308 }
2309 }
2310 case Type.RenderTarget: {
2311 string tag = (string)obj["tag"];
2312 switch (tag) {
2313 case "RenderTarget": {
2314 data.RenderTarget tv = new data.RenderTarget();
2315 tv.renderTargets = (List<global::LambdaCube.IR.TargetItem>)fromJSON(Type.Array_TargetItem,obj["renderTargets"]);
2316 return tv;
2317 }
2318 default: throw new Exception("unknown constructor: " + tag);
2319 }
2320 }
2321 case Type.Backend: {
2322 string tag = (string)obj["tag"];
2323 Backend.Tag tagType;
2324 switch (tag) {
2325 case "WebGL1": tagType = Backend.Tag.WebGL1; break;
2326 case "OpenGL33": tagType = Backend.Tag.OpenGL33; break;
2327 default: throw new Exception("unknown constructor: " + tag);
2328 }
2329 Backend o = new Backend();
2330 o.tag = tagType;
2331 return o;
2332 }
2333 case Type.Pipeline: {
2334 string tag = (string)obj["tag"];
2335 switch (tag) {
2336 case "Pipeline": {
2337 data.Pipeline tv = new data.Pipeline();
2338 tv.info = (string)fromJSON(Type.String,obj["info"]);
2339 tv.backend = (global::LambdaCube.IR.Backend)fromJSON(Type.Backend,obj["backend"]);
2340 tv.textures = (List<global::LambdaCube.IR.TextureDescriptor>)fromJSON(Type.Array_TextureDescriptor,obj["textures"]);
2341 tv.samplers = (List<global::LambdaCube.IR.SamplerDescriptor>)fromJSON(Type.Array_SamplerDescriptor,obj["samplers"]);
2342 tv.targets = (List<global::LambdaCube.IR.RenderTarget>)fromJSON(Type.Array_RenderTarget,obj["targets"]);
2343 tv.programs = (List<global::LambdaCube.IR.Program>)fromJSON(Type.Array_Program,obj["programs"]);
2344 tv.slots = (List<global::LambdaCube.IR.Slot>)fromJSON(Type.Array_Slot,obj["slots"]);
2345 tv.streams = (List<global::LambdaCube.IR.StreamData>)fromJSON(Type.Array_StreamData,obj["streams"]);
2346 tv.commands = (List<global::LambdaCube.IR.Command>)fromJSON(Type.Array_Command,obj["commands"]);
2347 return tv;
2348 }
2349 default: throw new Exception("unknown constructor: " + tag);
2350 }
2351 }
2352 }
2353 throw new Exception("unknown type");
2354 return null;
2355 }
2356
2357 public static JToken toJSON(ArrayValue v) {
2358 var obj = new JObject();
2359 switch (v.tag) {
2360 case ArrayValue.Tag.VBoolArray:
2361 obj["tag"] = "VBoolArray";
2362 {
2363 var tv = (data.VBoolArray)v;
2364 obj["arg0"] = toJSON(tv._0);
2365 }
2366 break;
2367 case ArrayValue.Tag.VIntArray:
2368 obj["tag"] = "VIntArray";
2369 {
2370 var tv = (data.VIntArray)v;
2371 obj["arg0"] = toJSON(tv._0);
2372 }
2373 break;
2374 case ArrayValue.Tag.VWordArray:
2375 obj["tag"] = "VWordArray";
2376 {
2377 var tv = (data.VWordArray)v;
2378 obj["arg0"] = toJSON(tv._0);
2379 }
2380 break;
2381 case ArrayValue.Tag.VFloatArray:
2382 obj["tag"] = "VFloatArray";
2383 {
2384 var tv = (data.VFloatArray)v;
2385 obj["arg0"] = toJSON(tv._0);
2386 }
2387 break;
2388 }
2389 return obj;
2390 }
2391 public static JToken toJSON(Value v) {
2392 var obj = new JObject();
2393 switch (v.tag) {
2394 case Value.Tag.VBool:
2395 obj["tag"] = "VBool";
2396 {
2397 var tv = (data.VBool)v;
2398 obj["arg0"] = toJSON(tv._0);
2399 }
2400 break;
2401 case Value.Tag.VV2B:
2402 obj["tag"] = "VV2B";
2403 {
2404 var tv = (data.VV2B)v;
2405 obj["arg0"] = toJSON(tv._0);
2406 }
2407 break;
2408 case Value.Tag.VV3B:
2409 obj["tag"] = "VV3B";
2410 {
2411 var tv = (data.VV3B)v;
2412 obj["arg0"] = toJSON(tv._0);
2413 }
2414 break;
2415 case Value.Tag.VV4B:
2416 obj["tag"] = "VV4B";
2417 {
2418 var tv = (data.VV4B)v;
2419 obj["arg0"] = toJSON(tv._0);
2420 }
2421 break;
2422 case Value.Tag.VWord:
2423 obj["tag"] = "VWord";
2424 {
2425 var tv = (data.VWord)v;
2426 obj["arg0"] = toJSON(tv._0);
2427 }
2428 break;
2429 case Value.Tag.VV2U:
2430 obj["tag"] = "VV2U";
2431 {
2432 var tv = (data.VV2U)v;
2433 obj["arg0"] = toJSON(tv._0);
2434 }
2435 break;
2436 case Value.Tag.VV3U:
2437 obj["tag"] = "VV3U";
2438 {
2439 var tv = (data.VV3U)v;
2440 obj["arg0"] = toJSON(tv._0);
2441 }
2442 break;
2443 case Value.Tag.VV4U:
2444 obj["tag"] = "VV4U";
2445 {
2446 var tv = (data.VV4U)v;
2447 obj["arg0"] = toJSON(tv._0);
2448 }
2449 break;
2450 case Value.Tag.VInt:
2451 obj["tag"] = "VInt";
2452 {
2453 var tv = (data.VInt)v;
2454 obj["arg0"] = toJSON(tv._0);
2455 }
2456 break;
2457 case Value.Tag.VV2I:
2458 obj["tag"] = "VV2I";
2459 {
2460 var tv = (data.VV2I)v;
2461 obj["arg0"] = toJSON(tv._0);
2462 }
2463 break;
2464 case Value.Tag.VV3I:
2465 obj["tag"] = "VV3I";
2466 {
2467 var tv = (data.VV3I)v;
2468 obj["arg0"] = toJSON(tv._0);
2469 }
2470 break;
2471 case Value.Tag.VV4I:
2472 obj["tag"] = "VV4I";
2473 {
2474 var tv = (data.VV4I)v;
2475 obj["arg0"] = toJSON(tv._0);
2476 }
2477 break;
2478 case Value.Tag.VFloat:
2479 obj["tag"] = "VFloat";
2480 {
2481 var tv = (data.VFloat)v;
2482 obj["arg0"] = toJSON(tv._0);
2483 }
2484 break;
2485 case Value.Tag.VV2F:
2486 obj["tag"] = "VV2F";
2487 {
2488 var tv = (data.VV2F)v;
2489 obj["arg0"] = toJSON(tv._0);
2490 }
2491 break;
2492 case Value.Tag.VV3F:
2493 obj["tag"] = "VV3F";
2494 {
2495 var tv = (data.VV3F)v;
2496 obj["arg0"] = toJSON(tv._0);
2497 }
2498 break;
2499 case Value.Tag.VV4F:
2500 obj["tag"] = "VV4F";
2501 {
2502 var tv = (data.VV4F)v;
2503 obj["arg0"] = toJSON(tv._0);
2504 }
2505 break;
2506 case Value.Tag.VM22F:
2507 obj["tag"] = "VM22F";
2508 {
2509 var tv = (data.VM22F)v;
2510 obj["arg0"] = toJSON(tv._0);
2511 }
2512 break;
2513 case Value.Tag.VM23F:
2514 obj["tag"] = "VM23F";
2515 {
2516 var tv = (data.VM23F)v;
2517 obj["arg0"] = toJSON(tv._0);
2518 }
2519 break;
2520 case Value.Tag.VM24F:
2521 obj["tag"] = "VM24F";
2522 {
2523 var tv = (data.VM24F)v;
2524 obj["arg0"] = toJSON(tv._0);
2525 }
2526 break;
2527 case Value.Tag.VM32F:
2528 obj["tag"] = "VM32F";
2529 {
2530 var tv = (data.VM32F)v;
2531 obj["arg0"] = toJSON(tv._0);
2532 }
2533 break;
2534 case Value.Tag.VM33F:
2535 obj["tag"] = "VM33F";
2536 {
2537 var tv = (data.VM33F)v;
2538 obj["arg0"] = toJSON(tv._0);
2539 }
2540 break;
2541 case Value.Tag.VM34F:
2542 obj["tag"] = "VM34F";
2543 {
2544 var tv = (data.VM34F)v;
2545 obj["arg0"] = toJSON(tv._0);
2546 }
2547 break;
2548 case Value.Tag.VM42F:
2549 obj["tag"] = "VM42F";
2550 {
2551 var tv = (data.VM42F)v;
2552 obj["arg0"] = toJSON(tv._0);
2553 }
2554 break;
2555 case Value.Tag.VM43F:
2556 obj["tag"] = "VM43F";
2557 {
2558 var tv = (data.VM43F)v;
2559 obj["arg0"] = toJSON(tv._0);
2560 }
2561 break;
2562 case Value.Tag.VM44F:
2563 obj["tag"] = "VM44F";
2564 {
2565 var tv = (data.VM44F)v;
2566 obj["arg0"] = toJSON(tv._0);
2567 }
2568 break;
2569 }
2570 return obj;
2571 }
2572 public static JToken toJSON(InputType v) {
2573 var obj = new JObject();
2574 switch (v.tag) {
2575 case InputType.Tag.Bool:
2576 obj["tag"] = "Bool";
2577 break;
2578 case InputType.Tag.V2B:
2579 obj["tag"] = "V2B";
2580 break;
2581 case InputType.Tag.V3B:
2582 obj["tag"] = "V3B";
2583 break;
2584 case InputType.Tag.V4B:
2585 obj["tag"] = "V4B";
2586 break;
2587 case InputType.Tag.Word:
2588 obj["tag"] = "Word";
2589 break;
2590 case InputType.Tag.V2U:
2591 obj["tag"] = "V2U";
2592 break;
2593 case InputType.Tag.V3U:
2594 obj["tag"] = "V3U";
2595 break;
2596 case InputType.Tag.V4U:
2597 obj["tag"] = "V4U";
2598 break;
2599 case InputType.Tag.Int:
2600 obj["tag"] = "Int";
2601 break;
2602 case InputType.Tag.V2I:
2603 obj["tag"] = "V2I";
2604 break;
2605 case InputType.Tag.V3I:
2606 obj["tag"] = "V3I";
2607 break;
2608 case InputType.Tag.V4I:
2609 obj["tag"] = "V4I";
2610 break;
2611 case InputType.Tag.Float:
2612 obj["tag"] = "Float";
2613 break;
2614 case InputType.Tag.V2F:
2615 obj["tag"] = "V2F";
2616 break;
2617 case InputType.Tag.V3F:
2618 obj["tag"] = "V3F";
2619 break;
2620 case InputType.Tag.V4F:
2621 obj["tag"] = "V4F";
2622 break;
2623 case InputType.Tag.M22F:
2624 obj["tag"] = "M22F";
2625 break;
2626 case InputType.Tag.M23F:
2627 obj["tag"] = "M23F";
2628 break;
2629 case InputType.Tag.M24F:
2630 obj["tag"] = "M24F";
2631 break;
2632 case InputType.Tag.M32F:
2633 obj["tag"] = "M32F";
2634 break;
2635 case InputType.Tag.M33F:
2636 obj["tag"] = "M33F";
2637 break;
2638 case InputType.Tag.M34F:
2639 obj["tag"] = "M34F";
2640 break;
2641 case InputType.Tag.M42F:
2642 obj["tag"] = "M42F";
2643 break;
2644 case InputType.Tag.M43F:
2645 obj["tag"] = "M43F";
2646 break;
2647 case InputType.Tag.M44F:
2648 obj["tag"] = "M44F";
2649 break;
2650 case InputType.Tag.STexture1D:
2651 obj["tag"] = "STexture1D";
2652 break;
2653 case InputType.Tag.STexture2D:
2654 obj["tag"] = "STexture2D";
2655 break;
2656 case InputType.Tag.STextureCube:
2657 obj["tag"] = "STextureCube";
2658 break;
2659 case InputType.Tag.STexture1DArray:
2660 obj["tag"] = "STexture1DArray";
2661 break;
2662 case InputType.Tag.STexture2DArray:
2663 obj["tag"] = "STexture2DArray";
2664 break;
2665 case InputType.Tag.STexture2DRect:
2666 obj["tag"] = "STexture2DRect";
2667 break;
2668 case InputType.Tag.FTexture1D:
2669 obj["tag"] = "FTexture1D";
2670 break;
2671 case InputType.Tag.FTexture2D:
2672 obj["tag"] = "FTexture2D";
2673 break;
2674 case InputType.Tag.FTexture3D:
2675 obj["tag"] = "FTexture3D";
2676 break;
2677 case InputType.Tag.FTextureCube:
2678 obj["tag"] = "FTextureCube";
2679 break;
2680 case InputType.Tag.FTexture1DArray:
2681 obj["tag"] = "FTexture1DArray";
2682 break;
2683 case InputType.Tag.FTexture2DArray:
2684 obj["tag"] = "FTexture2DArray";
2685 break;
2686 case InputType.Tag.FTexture2DMS:
2687 obj["tag"] = "FTexture2DMS";
2688 break;
2689 case InputType.Tag.FTexture2DMSArray:
2690 obj["tag"] = "FTexture2DMSArray";
2691 break;
2692 case InputType.Tag.FTextureBuffer:
2693 obj["tag"] = "FTextureBuffer";
2694 break;
2695 case InputType.Tag.FTexture2DRect:
2696 obj["tag"] = "FTexture2DRect";
2697 break;
2698 case InputType.Tag.ITexture1D:
2699 obj["tag"] = "ITexture1D";
2700 break;
2701 case InputType.Tag.ITexture2D:
2702 obj["tag"] = "ITexture2D";
2703 break;
2704 case InputType.Tag.ITexture3D:
2705 obj["tag"] = "ITexture3D";
2706 break;
2707 case InputType.Tag.ITextureCube:
2708 obj["tag"] = "ITextureCube";
2709 break;
2710 case InputType.Tag.ITexture1DArray:
2711 obj["tag"] = "ITexture1DArray";
2712 break;
2713 case InputType.Tag.ITexture2DArray:
2714 obj["tag"] = "ITexture2DArray";
2715 break;
2716 case InputType.Tag.ITexture2DMS:
2717 obj["tag"] = "ITexture2DMS";
2718 break;
2719 case InputType.Tag.ITexture2DMSArray:
2720 obj["tag"] = "ITexture2DMSArray";
2721 break;
2722 case InputType.Tag.ITextureBuffer:
2723 obj["tag"] = "ITextureBuffer";
2724 break;
2725 case InputType.Tag.ITexture2DRect:
2726 obj["tag"] = "ITexture2DRect";
2727 break;
2728 case InputType.Tag.UTexture1D:
2729 obj["tag"] = "UTexture1D";
2730 break;
2731 case InputType.Tag.UTexture2D:
2732 obj["tag"] = "UTexture2D";
2733 break;
2734 case InputType.Tag.UTexture3D:
2735 obj["tag"] = "UTexture3D";
2736 break;
2737 case InputType.Tag.UTextureCube:
2738 obj["tag"] = "UTextureCube";
2739 break;
2740 case InputType.Tag.UTexture1DArray:
2741 obj["tag"] = "UTexture1DArray";
2742 break;
2743 case InputType.Tag.UTexture2DArray:
2744 obj["tag"] = "UTexture2DArray";
2745 break;
2746 case InputType.Tag.UTexture2DMS:
2747 obj["tag"] = "UTexture2DMS";
2748 break;
2749 case InputType.Tag.UTexture2DMSArray:
2750 obj["tag"] = "UTexture2DMSArray";
2751 break;
2752 case InputType.Tag.UTextureBuffer:
2753 obj["tag"] = "UTextureBuffer";
2754 break;
2755 case InputType.Tag.UTexture2DRect:
2756 obj["tag"] = "UTexture2DRect";
2757 break;
2758 }
2759 return obj;
2760 }
2761 public static JToken toJSON(PointSpriteCoordOrigin v) {
2762 var obj = new JObject();
2763 switch (v.tag) {
2764 case PointSpriteCoordOrigin.Tag.LowerLeft:
2765 obj["tag"] = "LowerLeft";
2766 break;
2767 case PointSpriteCoordOrigin.Tag.UpperLeft:
2768 obj["tag"] = "UpperLeft";
2769 break;
2770 }
2771 return obj;
2772 }
2773 public static JToken toJSON(PointSize v) {
2774 var obj = new JObject();
2775 switch (v.tag) {
2776 case PointSize.Tag.PointSize:
2777 obj["tag"] = "PointSize";
2778 {
2779 var tv = (data.PointSize)v;
2780 obj["arg0"] = toJSON(tv._0);
2781 }
2782 break;
2783 case PointSize.Tag.ProgramPointSize:
2784 obj["tag"] = "ProgramPointSize";
2785 break;
2786 }
2787 return obj;
2788 }
2789 public static JToken toJSON(PolygonOffset v) {
2790 var obj = new JObject();
2791 switch (v.tag) {
2792 case PolygonOffset.Tag.NoOffset:
2793 obj["tag"] = "NoOffset";
2794 break;
2795 case PolygonOffset.Tag.Offset:
2796 obj["tag"] = "Offset";
2797 {
2798 var tv = (data.Offset)v;
2799 obj["arg0"] = toJSON(tv._0);
2800 obj["arg1"] = toJSON(tv._1);
2801 }
2802 break;
2803 }
2804 return obj;
2805 }
2806 public static JToken toJSON(FrontFace v) {
2807 var obj = new JObject();
2808 switch (v.tag) {
2809 case FrontFace.Tag.CCW:
2810 obj["tag"] = "CCW";
2811 break;
2812 case FrontFace.Tag.CW:
2813 obj["tag"] = "CW";
2814 break;
2815 }
2816 return obj;
2817 }
2818 public static JToken toJSON(PolygonMode v) {
2819 var obj = new JObject();
2820 switch (v.tag) {
2821 case PolygonMode.Tag.PolygonPoint:
2822 obj["tag"] = "PolygonPoint";
2823 {
2824 var tv = (data.PolygonPoint)v;
2825 obj["arg0"] = toJSON(tv._0);
2826 }
2827 break;
2828 case PolygonMode.Tag.PolygonLine:
2829 obj["tag"] = "PolygonLine";
2830 {
2831 var tv = (data.PolygonLine)v;
2832 obj["arg0"] = toJSON(tv._0);
2833 }
2834 break;
2835 case PolygonMode.Tag.PolygonFill:
2836 obj["tag"] = "PolygonFill";
2837 break;
2838 }
2839 return obj;
2840 }
2841 public static JToken toJSON(ProvokingVertex v) {
2842 var obj = new JObject();
2843 switch (v.tag) {
2844 case ProvokingVertex.Tag.FirstVertex:
2845 obj["tag"] = "FirstVertex";
2846 break;
2847 case ProvokingVertex.Tag.LastVertex:
2848 obj["tag"] = "LastVertex";
2849 break;
2850 }
2851 return obj;
2852 }
2853 public static JToken toJSON(CullMode v) {
2854 var obj = new JObject();
2855 switch (v.tag) {
2856 case CullMode.Tag.CullNone:
2857 obj["tag"] = "CullNone";
2858 break;
2859 case CullMode.Tag.CullFront:
2860 obj["tag"] = "CullFront";
2861 {
2862 var tv = (data.CullFront)v;
2863 obj["arg0"] = toJSON(tv._0);
2864 }
2865 break;
2866 case CullMode.Tag.CullBack:
2867 obj["tag"] = "CullBack";
2868 {
2869 var tv = (data.CullBack)v;
2870 obj["arg0"] = toJSON(tv._0);
2871 }
2872 break;
2873 }
2874 return obj;
2875 }
2876 public static JToken toJSON(ComparisonFunction v) {
2877 var obj = new JObject();
2878 switch (v.tag) {
2879 case ComparisonFunction.Tag.Never:
2880 obj["tag"] = "Never";
2881 break;
2882 case ComparisonFunction.Tag.Less:
2883 obj["tag"] = "Less";
2884 break;
2885 case ComparisonFunction.Tag.Equal:
2886 obj["tag"] = "Equal";
2887 break;
2888 case ComparisonFunction.Tag.Lequal:
2889 obj["tag"] = "Lequal";
2890 break;
2891 case ComparisonFunction.Tag.Greater:
2892 obj["tag"] = "Greater";
2893 break;
2894 case ComparisonFunction.Tag.Notequal:
2895 obj["tag"] = "Notequal";
2896 break;
2897 case ComparisonFunction.Tag.Gequal:
2898 obj["tag"] = "Gequal";
2899 break;
2900 case ComparisonFunction.Tag.Always:
2901 obj["tag"] = "Always";
2902 break;
2903 }
2904 return obj;
2905 }
2906 public static JToken toJSON(StencilOperation v) {
2907 var obj = new JObject();
2908 switch (v.tag) {
2909 case StencilOperation.Tag.OpZero:
2910 obj["tag"] = "OpZero";
2911 break;
2912 case StencilOperation.Tag.OpKeep:
2913 obj["tag"] = "OpKeep";
2914 break;
2915 case StencilOperation.Tag.OpReplace:
2916 obj["tag"] = "OpReplace";
2917 break;
2918 case StencilOperation.Tag.OpIncr:
2919 obj["tag"] = "OpIncr";
2920 break;
2921 case StencilOperation.Tag.OpIncrWrap:
2922 obj["tag"] = "OpIncrWrap";
2923 break;
2924 case StencilOperation.Tag.OpDecr:
2925 obj["tag"] = "OpDecr";
2926 break;
2927 case StencilOperation.Tag.OpDecrWrap:
2928 obj["tag"] = "OpDecrWrap";
2929 break;
2930 case StencilOperation.Tag.OpInvert:
2931 obj["tag"] = "OpInvert";
2932 break;
2933 }
2934 return obj;
2935 }
2936 public static JToken toJSON(BlendEquation v) {
2937 var obj = new JObject();
2938 switch (v.tag) {
2939 case BlendEquation.Tag.FuncAdd:
2940 obj["tag"] = "FuncAdd";
2941 break;
2942 case BlendEquation.Tag.FuncSubtract:
2943 obj["tag"] = "FuncSubtract";
2944 break;
2945 case BlendEquation.Tag.FuncReverseSubtract:
2946 obj["tag"] = "FuncReverseSubtract";
2947 break;
2948 case BlendEquation.Tag.Min:
2949 obj["tag"] = "Min";
2950 break;
2951 case BlendEquation.Tag.Max:
2952 obj["tag"] = "Max";
2953 break;
2954 }
2955 return obj;
2956 }
2957 public static JToken toJSON(BlendingFactor v) {
2958 var obj = new JObject();
2959 switch (v.tag) {
2960 case BlendingFactor.Tag.Zero:
2961 obj["tag"] = "Zero";
2962 break;
2963 case BlendingFactor.Tag.One:
2964 obj["tag"] = "One";
2965 break;
2966 case BlendingFactor.Tag.SrcColor:
2967 obj["tag"] = "SrcColor";
2968 break;
2969 case BlendingFactor.Tag.OneMinusSrcColor:
2970 obj["tag"] = "OneMinusSrcColor";
2971 break;
2972 case BlendingFactor.Tag.DstColor:
2973 obj["tag"] = "DstColor";
2974 break;
2975 case BlendingFactor.Tag.OneMinusDstColor:
2976 obj["tag"] = "OneMinusDstColor";
2977 break;
2978 case BlendingFactor.Tag.SrcAlpha:
2979 obj["tag"] = "SrcAlpha";
2980 break;
2981 case BlendingFactor.Tag.OneMinusSrcAlpha:
2982 obj["tag"] = "OneMinusSrcAlpha";
2983 break;
2984 case BlendingFactor.Tag.DstAlpha:
2985 obj["tag"] = "DstAlpha";
2986 break;
2987 case BlendingFactor.Tag.OneMinusDstAlpha:
2988 obj["tag"] = "OneMinusDstAlpha";
2989 break;
2990 case BlendingFactor.Tag.ConstantColor:
2991 obj["tag"] = "ConstantColor";
2992 break;
2993 case BlendingFactor.Tag.OneMinusConstantColor:
2994 obj["tag"] = "OneMinusConstantColor";
2995 break;
2996 case BlendingFactor.Tag.ConstantAlpha:
2997 obj["tag"] = "ConstantAlpha";
2998 break;
2999 case BlendingFactor.Tag.OneMinusConstantAlpha:
3000 obj["tag"] = "OneMinusConstantAlpha";
3001 break;
3002 case BlendingFactor.Tag.SrcAlphaSaturate:
3003 obj["tag"] = "SrcAlphaSaturate";
3004 break;
3005 }
3006 return obj;
3007 }
3008 public static JToken toJSON(LogicOperation v) {
3009 var obj = new JObject();
3010 switch (v.tag) {
3011 case LogicOperation.Tag.Clear:
3012 obj["tag"] = "Clear";
3013 break;
3014 case LogicOperation.Tag.And:
3015 obj["tag"] = "And";
3016 break;
3017 case LogicOperation.Tag.AndReverse:
3018 obj["tag"] = "AndReverse";
3019 break;
3020 case LogicOperation.Tag.Copy:
3021 obj["tag"] = "Copy";
3022 break;
3023 case LogicOperation.Tag.AndInverted:
3024 obj["tag"] = "AndInverted";
3025 break;
3026 case LogicOperation.Tag.Noop:
3027 obj["tag"] = "Noop";
3028 break;
3029 case LogicOperation.Tag.Xor:
3030 obj["tag"] = "Xor";
3031 break;
3032 case LogicOperation.Tag.Or:
3033 obj["tag"] = "Or";
3034 break;
3035 case LogicOperation.Tag.Nor:
3036 obj["tag"] = "Nor";
3037 break;
3038 case LogicOperation.Tag.Equiv:
3039 obj["tag"] = "Equiv";
3040 break;
3041 case LogicOperation.Tag.Invert:
3042 obj["tag"] = "Invert";
3043 break;
3044 case LogicOperation.Tag.OrReverse:
3045 obj["tag"] = "OrReverse";
3046 break;
3047 case LogicOperation.Tag.CopyInverted:
3048 obj["tag"] = "CopyInverted";
3049 break;
3050 case LogicOperation.Tag.OrInverted:
3051 obj["tag"] = "OrInverted";
3052 break;
3053 case LogicOperation.Tag.Nand:
3054 obj["tag"] = "Nand";
3055 break;
3056 case LogicOperation.Tag.Set:
3057 obj["tag"] = "Set";
3058 break;
3059 }
3060 return obj;
3061 }
3062 public static JToken toJSON(StencilOps v) {
3063 var obj = new JObject();
3064 switch (v.tag) {
3065 case StencilOps.Tag.StencilOps:
3066 obj["tag"] = "StencilOps";
3067 {
3068 var tv = (data.StencilOps)v;
3069 obj["frontStencilOp"] = toJSON(tv.frontStencilOp);
3070 obj["backStencilOp"] = toJSON(tv.backStencilOp);
3071 }
3072 break;
3073 }
3074 return obj;
3075 }
3076 public static JToken toJSON(StencilTest v) {
3077 var obj = new JObject();
3078 switch (v.tag) {
3079 case StencilTest.Tag.StencilTest:
3080 obj["tag"] = "StencilTest";
3081 {
3082 var tv = (data.StencilTest)v;
3083 obj["stencilComparision"] = toJSON(tv.stencilComparision);
3084 obj["stencilReference"] = toJSON(tv.stencilReference);
3085 obj["stencilMask"] = toJSON(tv.stencilMask);
3086 }
3087 break;
3088 }
3089 return obj;
3090 }
3091 public static JToken toJSON(StencilTests v) {
3092 var obj = new JObject();
3093 switch (v.tag) {
3094 case StencilTests.Tag.StencilTests:
3095 obj["tag"] = "StencilTests";
3096 {
3097 var tv = (data.StencilTests)v;
3098 obj["arg0"] = toJSON(tv._0);
3099 obj["arg1"] = toJSON(tv._1);
3100 }
3101 break;
3102 }
3103 return obj;
3104 }
3105 public static JToken toJSON(FetchPrimitive v) {
3106 var obj = new JObject();
3107 switch (v.tag) {
3108 case FetchPrimitive.Tag.Points:
3109 obj["tag"] = "Points";
3110 break;
3111 case FetchPrimitive.Tag.Lines:
3112 obj["tag"] = "Lines";
3113 break;
3114 case FetchPrimitive.Tag.Triangles:
3115 obj["tag"] = "Triangles";
3116 break;
3117 case FetchPrimitive.Tag.LinesAdjacency:
3118 obj["tag"] = "LinesAdjacency";
3119 break;
3120 case FetchPrimitive.Tag.TrianglesAdjacency:
3121 obj["tag"] = "TrianglesAdjacency";
3122 break;
3123 }
3124 return obj;
3125 }
3126 public static JToken toJSON(OutputPrimitive v) {
3127 var obj = new JObject();
3128 switch (v.tag) {
3129 case OutputPrimitive.Tag.TrianglesOutput:
3130 obj["tag"] = "TrianglesOutput";
3131 break;
3132 case OutputPrimitive.Tag.LinesOutput:
3133 obj["tag"] = "LinesOutput";
3134 break;
3135 case OutputPrimitive.Tag.PointsOutput:
3136 obj["tag"] = "PointsOutput";
3137 break;
3138 }
3139 return obj;
3140 }
3141 public static JToken toJSON(ColorArity v) {
3142 var obj = new JObject();
3143 switch (v.tag) {
3144 case ColorArity.Tag.Red:
3145 obj["tag"] = "Red";
3146 break;
3147 case ColorArity.Tag.RG:
3148 obj["tag"] = "RG";
3149 break;
3150 case ColorArity.Tag.RGB:
3151 obj["tag"] = "RGB";
3152 break;
3153 case ColorArity.Tag.RGBA:
3154 obj["tag"] = "RGBA";
3155 break;
3156 }
3157 return obj;
3158 }
3159 public static JToken toJSON(Blending v) {
3160 var obj = new JObject();
3161 switch (v.tag) {
3162 case Blending.Tag.NoBlending:
3163 obj["tag"] = "NoBlending";
3164 break;
3165 case Blending.Tag.BlendLogicOp:
3166 obj["tag"] = "BlendLogicOp";
3167 {
3168 var tv = (data.BlendLogicOp)v;
3169 obj["arg0"] = toJSON(tv._0);
3170 }
3171 break;
3172 case Blending.Tag.Blend:
3173 obj["tag"] = "Blend";
3174 {
3175 var tv = (data.Blend)v;
3176 obj["colorEqSrc"] = toJSON(tv.colorEqSrc);
3177 obj["alphaEqSrc"] = toJSON(tv.alphaEqSrc);
3178 obj["colorFSrc"] = toJSON(tv.colorFSrc);
3179 obj["colorFDst"] = toJSON(tv.colorFDst);
3180 obj["alphaFSrc"] = toJSON(tv.alphaFSrc);
3181 obj["alphaFDst"] = toJSON(tv.alphaFDst);
3182 obj["color"] = toJSON(tv.color);
3183 }
3184 break;
3185 }
3186 return obj;
3187 }
3188 public static JToken toJSON(RasterContext v) {
3189 var obj = new JObject();
3190 switch (v.tag) {
3191 case RasterContext.Tag.PointCtx:
3192 obj["tag"] = "PointCtx";
3193 {
3194 var tv = (data.PointCtx)v;
3195 obj["arg0"] = toJSON(tv._0);
3196 obj["arg1"] = toJSON(tv._1);
3197 obj["arg2"] = toJSON(tv._2);
3198 }
3199 break;
3200 case RasterContext.Tag.LineCtx:
3201 obj["tag"] = "LineCtx";
3202 {
3203 var tv = (data.LineCtx)v;
3204 obj["arg0"] = toJSON(tv._0);
3205 obj["arg1"] = toJSON(tv._1);
3206 }
3207 break;
3208 case RasterContext.Tag.TriangleCtx:
3209 obj["tag"] = "TriangleCtx";
3210 {
3211 var tv = (data.TriangleCtx)v;
3212 obj["arg0"] = toJSON(tv._0);
3213 obj["arg1"] = toJSON(tv._1);
3214 obj["arg2"] = toJSON(tv._2);
3215 obj["arg3"] = toJSON(tv._3);
3216 }
3217 break;
3218 }
3219 return obj;
3220 }
3221 public static JToken toJSON(FragmentOperation v) {
3222 var obj = new JObject();
3223 switch (v.tag) {
3224 case FragmentOperation.Tag.DepthOp:
3225 obj["tag"] = "DepthOp";
3226 {
3227 var tv = (data.DepthOp)v;
3228 obj["arg0"] = toJSON(tv._0);
3229 obj["arg1"] = toJSON(tv._1);
3230 }
3231 break;
3232 case FragmentOperation.Tag.StencilOp:
3233 obj["tag"] = "StencilOp";
3234 {
3235 var tv = (data.StencilOp)v;
3236 obj["arg0"] = toJSON(tv._0);
3237 obj["arg1"] = toJSON(tv._1);
3238 obj["arg2"] = toJSON(tv._2);
3239 }
3240 break;
3241 case FragmentOperation.Tag.ColorOp:
3242 obj["tag"] = "ColorOp";
3243 {
3244 var tv = (data.ColorOp)v;
3245 obj["arg0"] = toJSON(tv._0);
3246 obj["arg1"] = toJSON(tv._1);
3247 }
3248 break;
3249 }
3250 return obj;
3251 }
3252 public static JToken toJSON(AccumulationContext v) {
3253 var obj = new JObject();
3254 switch (v.tag) {
3255 case AccumulationContext.Tag.AccumulationContext:
3256 obj["tag"] = "AccumulationContext";
3257 {
3258 var tv = (data.AccumulationContext)v;
3259 obj["accViewportName"] = toJSON(tv.accViewportName);
3260 obj["accOperations"] = toJSON(tv.accOperations);
3261 }
3262 break;
3263 }
3264 return obj;
3265 }
3266 public static JToken toJSON(TextureDataType v) {
3267 var obj = new JObject();
3268 switch (v.tag) {
3269 case TextureDataType.Tag.FloatT:
3270 obj["tag"] = "FloatT";
3271 {
3272 var tv = (data.FloatT)v;
3273 obj["arg0"] = toJSON(tv._0);
3274 }
3275 break;
3276 case TextureDataType.Tag.IntT:
3277 obj["tag"] = "IntT";
3278 {
3279 var tv = (data.IntT)v;
3280 obj["arg0"] = toJSON(tv._0);
3281 }
3282 break;
3283 case TextureDataType.Tag.WordT:
3284 obj["tag"] = "WordT";
3285 {
3286 var tv = (data.WordT)v;
3287 obj["arg0"] = toJSON(tv._0);
3288 }
3289 break;
3290 case TextureDataType.Tag.ShadowT:
3291 obj["tag"] = "ShadowT";
3292 break;
3293 }
3294 return obj;
3295 }
3296 public static JToken toJSON(TextureType v) {
3297 var obj = new JObject();
3298 switch (v.tag) {
3299 case TextureType.Tag.Texture1D:
3300 obj["tag"] = "Texture1D";
3301 {
3302 var tv = (data.Texture1D)v;
3303 obj["arg0"] = toJSON(tv._0);
3304 obj["arg1"] = toJSON(tv._1);
3305 }
3306 break;
3307 case TextureType.Tag.Texture2D:
3308 obj["tag"] = "Texture2D";
3309 {
3310 var tv = (data.Texture2D)v;
3311 obj["arg0"] = toJSON(tv._0);
3312 obj["arg1"] = toJSON(tv._1);
3313 }
3314 break;
3315 case TextureType.Tag.Texture3D:
3316 obj["tag"] = "Texture3D";
3317 {
3318 var tv = (data.Texture3D)v;
3319 obj["arg0"] = toJSON(tv._0);
3320 }
3321 break;
3322 case TextureType.Tag.TextureCube:
3323 obj["tag"] = "TextureCube";
3324 {
3325 var tv = (data.TextureCube)v;
3326 obj["arg0"] = toJSON(tv._0);
3327 }
3328 break;
3329 case TextureType.Tag.TextureRect:
3330 obj["tag"] = "TextureRect";
3331 {
3332 var tv = (data.TextureRect)v;
3333 obj["arg0"] = toJSON(tv._0);
3334 }
3335 break;
3336 case TextureType.Tag.Texture2DMS:
3337 obj["tag"] = "Texture2DMS";
3338 {
3339 var tv = (data.Texture2DMS)v;
3340 obj["arg0"] = toJSON(tv._0);
3341 obj["arg1"] = toJSON(tv._1);
3342 obj["arg2"] = toJSON(tv._2);
3343 obj["arg3"] = toJSON(tv._3);
3344 }
3345 break;
3346 case TextureType.Tag.TextureBuffer:
3347 obj["tag"] = "TextureBuffer";
3348 {
3349 var tv = (data.TextureBuffer)v;
3350 obj["arg0"] = toJSON(tv._0);
3351 }
3352 break;
3353 }
3354 return obj;
3355 }
3356 public static JToken toJSON(MipMap v) {
3357 var obj = new JObject();
3358 switch (v.tag) {
3359 case MipMap.Tag.Mip:
3360 obj["tag"] = "Mip";
3361 {
3362 var tv = (data.Mip)v;
3363 obj["arg0"] = toJSON(tv._0);
3364 obj["arg1"] = toJSON(tv._1);
3365 }
3366 break;
3367 case MipMap.Tag.NoMip:
3368 obj["tag"] = "NoMip";
3369 break;
3370 case MipMap.Tag.AutoMip:
3371 obj["tag"] = "AutoMip";
3372 {
3373 var tv = (data.AutoMip)v;
3374 obj["arg0"] = toJSON(tv._0);
3375 obj["arg1"] = toJSON(tv._1);
3376 }
3377 break;
3378 }
3379 return obj;
3380 }
3381 public static JToken toJSON(Filter v) {
3382 var obj = new JObject();
3383 switch (v.tag) {
3384 case Filter.Tag.Nearest:
3385 obj["tag"] = "Nearest";
3386 break;
3387 case Filter.Tag.Linear:
3388 obj["tag"] = "Linear";
3389 break;
3390 case Filter.Tag.NearestMipmapNearest:
3391 obj["tag"] = "NearestMipmapNearest";
3392 break;
3393 case Filter.Tag.NearestMipmapLinear:
3394 obj["tag"] = "NearestMipmapLinear";
3395 break;
3396 case Filter.Tag.LinearMipmapNearest:
3397 obj["tag"] = "LinearMipmapNearest";
3398 break;
3399 case Filter.Tag.LinearMipmapLinear:
3400 obj["tag"] = "LinearMipmapLinear";
3401 break;
3402 }
3403 return obj;
3404 }
3405 public static JToken toJSON(EdgeMode v) {
3406 var obj = new JObject();
3407 switch (v.tag) {
3408 case EdgeMode.Tag.Repeat:
3409 obj["tag"] = "Repeat";
3410 break;
3411 case EdgeMode.Tag.MirroredRepeat:
3412 obj["tag"] = "MirroredRepeat";
3413 break;
3414 case EdgeMode.Tag.ClampToEdge:
3415 obj["tag"] = "ClampToEdge";
3416 break;
3417 case EdgeMode.Tag.ClampToBorder:
3418 obj["tag"] = "ClampToBorder";
3419 break;
3420 }
3421 return obj;
3422 }
3423 public static JToken toJSON(ImageSemantic v) {
3424 var obj = new JObject();
3425 switch (v.tag) {
3426 case ImageSemantic.Tag.Depth:
3427 obj["tag"] = "Depth";
3428 break;
3429 case ImageSemantic.Tag.Stencil:
3430 obj["tag"] = "Stencil";
3431 break;
3432 case ImageSemantic.Tag.Color:
3433 obj["tag"] = "Color";
3434 break;
3435 }
3436 return obj;
3437 }
3438 public static JToken toJSON(ImageRef v) {
3439 var obj = new JObject();
3440 switch (v.tag) {
3441 case ImageRef.Tag.TextureImage:
3442 obj["tag"] = "TextureImage";
3443 {
3444 var tv = (data.TextureImage)v;
3445 obj["arg0"] = toJSON(tv._0);
3446 obj["arg1"] = toJSON(tv._1);
3447 obj["arg2"] = toJSON(tv._2);
3448 }
3449 break;
3450 case ImageRef.Tag.Framebuffer:
3451 obj["tag"] = "Framebuffer";
3452 {
3453 var tv = (data.Framebuffer)v;
3454 obj["arg0"] = toJSON(tv._0);
3455 }
3456 break;
3457 }
3458 return obj;
3459 }
3460 public static JToken toJSON(ClearImage v) {
3461 var obj = new JObject();
3462 switch (v.tag) {
3463 case ClearImage.Tag.ClearImage:
3464 obj["tag"] = "ClearImage";
3465 {
3466 var tv = (data.ClearImage)v;
3467 obj["imageSemantic"] = toJSON(tv.imageSemantic);
3468 obj["clearValue"] = toJSON(tv.clearValue);
3469 }
3470 break;
3471 }
3472 return obj;
3473 }
3474 public static JToken toJSON(Command v) {
3475 var obj = new JObject();
3476 switch (v.tag) {
3477 case Command.Tag.SetRasterContext:
3478 obj["tag"] = "SetRasterContext";
3479 {
3480 var tv = (data.SetRasterContext)v;
3481 obj["arg0"] = toJSON(tv._0);
3482 }
3483 break;
3484 case Command.Tag.SetAccumulationContext:
3485 obj["tag"] = "SetAccumulationContext";
3486 {
3487 var tv = (data.SetAccumulationContext)v;
3488 obj["arg0"] = toJSON(tv._0);
3489 }
3490 break;
3491 case Command.Tag.SetRenderTarget:
3492 obj["tag"] = "SetRenderTarget";
3493 {
3494 var tv = (data.SetRenderTarget)v;
3495 obj["arg0"] = toJSON(tv._0);
3496 }
3497 break;
3498 case Command.Tag.SetProgram:
3499 obj["tag"] = "SetProgram";
3500 {
3501 var tv = (data.SetProgram)v;
3502 obj["arg0"] = toJSON(tv._0);
3503 }
3504 break;
3505 case Command.Tag.SetSamplerUniform:
3506 obj["tag"] = "SetSamplerUniform";
3507 {
3508 var tv = (data.SetSamplerUniform)v;
3509 obj["arg0"] = toJSON(tv._0);
3510 obj["arg1"] = toJSON(tv._1);
3511 }
3512 break;
3513 case Command.Tag.SetTexture:
3514 obj["tag"] = "SetTexture";
3515 {
3516 var tv = (data.SetTexture)v;
3517 obj["arg0"] = toJSON(tv._0);
3518 obj["arg1"] = toJSON(tv._1);
3519 }
3520 break;
3521 case Command.Tag.SetSampler:
3522 obj["tag"] = "SetSampler";
3523 {
3524 var tv = (data.SetSampler)v;
3525 obj["arg0"] = toJSON(tv._0);
3526 obj["arg1"] = toJSON(tv._1);
3527 }
3528 break;
3529 case Command.Tag.RenderSlot:
3530 obj["tag"] = "RenderSlot";
3531 {
3532 var tv = (data.RenderSlot)v;
3533 obj["arg0"] = toJSON(tv._0);
3534 }
3535 break;
3536 case Command.Tag.RenderStream:
3537 obj["tag"] = "RenderStream";
3538 {
3539 var tv = (data.RenderStream)v;
3540 obj["arg0"] = toJSON(tv._0);
3541 }
3542 break;
3543 case Command.Tag.ClearRenderTarget:
3544 obj["tag"] = "ClearRenderTarget";
3545 {
3546 var tv = (data.ClearRenderTarget)v;
3547 obj["arg0"] = toJSON(tv._0);
3548 }
3549 break;
3550 case Command.Tag.GenerateMipMap:
3551 obj["tag"] = "GenerateMipMap";
3552 {
3553 var tv = (data.GenerateMipMap)v;
3554 obj["arg0"] = toJSON(tv._0);
3555 }
3556 break;
3557 case Command.Tag.SaveImage:
3558 obj["tag"] = "SaveImage";
3559 {
3560 var tv = (data.SaveImage)v;
3561 obj["arg0"] = toJSON(tv._0);
3562 obj["arg1"] = toJSON(tv._1);
3563 }
3564 break;
3565 case Command.Tag.LoadImage:
3566 obj["tag"] = "LoadImage";
3567 {
3568 var tv = (data.LoadImage)v;
3569 obj["arg0"] = toJSON(tv._0);
3570 obj["arg1"] = toJSON(tv._1);
3571 }
3572 break;
3573 }
3574 return obj;
3575 }
3576 public static JToken toJSON(SamplerDescriptor v) {
3577 var obj = new JObject();
3578 switch (v.tag) {
3579 case SamplerDescriptor.Tag.SamplerDescriptor:
3580 obj["tag"] = "SamplerDescriptor";
3581 {
3582 var tv = (data.SamplerDescriptor)v;
3583 obj["samplerWrapS"] = toJSON(tv.samplerWrapS);
3584 obj["samplerWrapT"] = toJSON(tv.samplerWrapT);
3585 obj["samplerWrapR"] = toJSON(tv.samplerWrapR);
3586 obj["samplerMinFilter"] = toJSON(tv.samplerMinFilter);
3587 obj["samplerMagFilter"] = toJSON(tv.samplerMagFilter);
3588 obj["samplerBorderColor"] = toJSON(tv.samplerBorderColor);
3589 obj["samplerMinLod"] = toJSON(tv.samplerMinLod);
3590 obj["samplerMaxLod"] = toJSON(tv.samplerMaxLod);
3591 obj["samplerLodBias"] = toJSON(tv.samplerLodBias);
3592 obj["samplerCompareFunc"] = toJSON(tv.samplerCompareFunc);
3593 }
3594 break;
3595 }
3596 return obj;
3597 }
3598 public static JToken toJSON(TextureDescriptor v) {
3599 var obj = new JObject();
3600 switch (v.tag) {
3601 case TextureDescriptor.Tag.TextureDescriptor:
3602 obj["tag"] = "TextureDescriptor";
3603 {
3604 var tv = (data.TextureDescriptor)v;
3605 obj["textureType"] = toJSON(tv.textureType);
3606 obj["textureSize"] = toJSON(tv.textureSize);
3607 obj["textureSemantic"] = toJSON(tv.textureSemantic);
3608 obj["textureSampler"] = toJSON(tv.textureSampler);
3609 obj["textureBaseLevel"] = toJSON(tv.textureBaseLevel);
3610 obj["textureMaxLevel"] = toJSON(tv.textureMaxLevel);
3611 }
3612 break;
3613 }
3614 return obj;
3615 }
3616 public static JToken toJSON(Parameter v) {
3617 var obj = new JObject();
3618 switch (v.tag) {
3619 case Parameter.Tag.Parameter:
3620 obj["tag"] = "Parameter";
3621 {
3622 var tv = (data.Parameter)v;
3623 obj["name"] = toJSON(tv.name);
3624 obj["ty"] = toJSON(tv.ty);
3625 }
3626 break;
3627 }
3628 return obj;
3629 }
3630 public static JToken toJSON(Program v) {
3631 var obj = new JObject();
3632 switch (v.tag) {
3633 case Program.Tag.Program:
3634 obj["tag"] = "Program";
3635 {
3636 var tv = (data.Program)v;
3637 obj["programUniforms"] = toJSON(tv.programUniforms);
3638 obj["programStreams"] = toJSON(tv.programStreams);
3639 obj["programInTextures"] = toJSON(tv.programInTextures);
3640 obj["programOutput"] = toJSON(tv.programOutput);
3641 obj["vertexShader"] = toJSON(tv.vertexShader);
3642 obj["geometryShader"] = toJSON(tv.geometryShader);
3643 obj["fragmentShader"] = toJSON(tv.fragmentShader);
3644 }
3645 break;
3646 }
3647 return obj;
3648 }
3649 public static JToken toJSON(Slot v) {
3650 var obj = new JObject();
3651 switch (v.tag) {
3652 case Slot.Tag.Slot:
3653 obj["tag"] = "Slot";
3654 {
3655 var tv = (data.Slot)v;
3656 obj["slotName"] = toJSON(tv.slotName);
3657 obj["slotStreams"] = toJSON(tv.slotStreams);
3658 obj["slotUniforms"] = toJSON(tv.slotUniforms);
3659 obj["slotPrimitive"] = toJSON(tv.slotPrimitive);
3660 obj["slotPrograms"] = toJSON(tv.slotPrograms);
3661 }
3662 break;
3663 }
3664 return obj;
3665 }
3666 public static JToken toJSON(StreamData v) {
3667 var obj = new JObject();
3668 switch (v.tag) {
3669 case StreamData.Tag.StreamData:
3670 obj["tag"] = "StreamData";
3671 {
3672 var tv = (data.StreamData)v;
3673 obj["streamData"] = toJSON(tv.streamData);
3674 obj["streamType"] = toJSON(tv.streamType);
3675 obj["streamPrimitive"] = toJSON(tv.streamPrimitive);
3676 obj["streamPrograms"] = toJSON(tv.streamPrograms);
3677 }
3678 break;
3679 }
3680 return obj;
3681 }
3682 public static JToken toJSON(TargetItem v) {
3683 var obj = new JObject();
3684 switch (v.tag) {
3685 case TargetItem.Tag.TargetItem:
3686 obj["tag"] = "TargetItem";
3687 {
3688 var tv = (data.TargetItem)v;
3689 obj["targetSemantic"] = toJSON(tv.targetSemantic);
3690 obj["targetRef"] = toJSON(tv.targetRef);
3691 }
3692 break;
3693 }
3694 return obj;
3695 }
3696 public static JToken toJSON(RenderTarget v) {
3697 var obj = new JObject();
3698 switch (v.tag) {
3699 case RenderTarget.Tag.RenderTarget:
3700 obj["tag"] = "RenderTarget";
3701 {
3702 var tv = (data.RenderTarget)v;
3703 obj["renderTargets"] = toJSON(tv.renderTargets);
3704 }
3705 break;
3706 }
3707 return obj;
3708 }
3709 public static JToken toJSON(Backend v) {
3710 var obj = new JObject();
3711 switch (v.tag) {
3712 case Backend.Tag.WebGL1:
3713 obj["tag"] = "WebGL1";
3714 break;
3715 case Backend.Tag.OpenGL33:
3716 obj["tag"] = "OpenGL33";
3717 break;
3718 }
3719 return obj;
3720 }
3721 public static JToken toJSON(Pipeline v) {
3722 var obj = new JObject();
3723 switch (v.tag) {
3724 case Pipeline.Tag.Pipeline:
3725 obj["tag"] = "Pipeline";
3726 {
3727 var tv = (data.Pipeline)v;
3728 obj["info"] = toJSON(tv.info);
3729 obj["backend"] = toJSON(tv.backend);
3730 obj["textures"] = toJSON(tv.textures);
3731 obj["samplers"] = toJSON(tv.samplers);
3732 obj["targets"] = toJSON(tv.targets);
3733 obj["programs"] = toJSON(tv.programs);
3734 obj["slots"] = toJSON(tv.slots);
3735 obj["streams"] = toJSON(tv.streams);
3736 obj["commands"] = toJSON(tv.commands);
3737 }
3738 break;
3739 }
3740 return obj;
3741 }
3742
3743 public static JToken toJSON(int v) { return new JValue(v); }
3744 public static JToken toJSON(uint v) { return new JValue(v); }
3745 public static JToken toJSON(float v) { return new JValue(v); }
3746 public static JToken toJSON(bool v) { return new JValue(v); }
3747 public static JToken toJSON(string v) { return new JValue(v); }
3748 public static JToken toJSON(V2<int> v) {
3749 var obj = new JObject();
3750 obj["x"] = toJSON(v.x);
3751 obj["y"] = toJSON(v.y);
3752 return obj;
3753 }
3754 public static JToken toJSON(V2<uint> v) {
3755 var obj = new JObject();
3756 obj["x"] = toJSON(v.x);
3757 obj["y"] = toJSON(v.y);
3758 return obj;
3759 }
3760 public static JToken toJSON(V2<float> v) {
3761 var obj = new JObject();
3762 obj["x"] = toJSON(v.x);
3763 obj["y"] = toJSON(v.y);
3764 return obj;
3765 }
3766 public static JToken toJSON(V2<bool> v) {
3767 var obj = new JObject();
3768 obj["x"] = toJSON(v.x);
3769 obj["y"] = toJSON(v.y);
3770 return obj;
3771 }
3772 public static JToken toJSON(V2<V2<float>> v) {
3773 var obj = new JObject();
3774 obj["x"] = toJSON(v.x);
3775 obj["y"] = toJSON(v.y);
3776 return obj;
3777 }
3778 public static JToken toJSON(V2<V3<float>> v) {
3779 var obj = new JObject();
3780 obj["x"] = toJSON(v.x);
3781 obj["y"] = toJSON(v.y);
3782 return obj;
3783 }
3784 public static JToken toJSON(V2<V4<float>> v) {
3785 var obj = new JObject();
3786 obj["x"] = toJSON(v.x);
3787 obj["y"] = toJSON(v.y);
3788 return obj;
3789 }
3790 public static JToken toJSON(V3<int> v) {
3791 var obj = new JObject();
3792 obj["x"] = toJSON(v.x);
3793 obj["y"] = toJSON(v.y);
3794 obj["z"] = toJSON(v.z);
3795 return obj;
3796 }
3797 public static JToken toJSON(V3<uint> v) {
3798 var obj = new JObject();
3799 obj["x"] = toJSON(v.x);
3800 obj["y"] = toJSON(v.y);
3801 obj["z"] = toJSON(v.z);
3802 return obj;
3803 }
3804 public static JToken toJSON(V3<float> v) {
3805 var obj = new JObject();
3806 obj["x"] = toJSON(v.x);
3807 obj["y"] = toJSON(v.y);
3808 obj["z"] = toJSON(v.z);
3809 return obj;
3810 }
3811 public static JToken toJSON(V3<bool> v) {
3812 var obj = new JObject();
3813 obj["x"] = toJSON(v.x);
3814 obj["y"] = toJSON(v.y);
3815 obj["z"] = toJSON(v.z);
3816 return obj;
3817 }
3818 public static JToken toJSON(V3<V2<float>> v) {
3819 var obj = new JObject();
3820 obj["x"] = toJSON(v.x);
3821 obj["y"] = toJSON(v.y);
3822 obj["z"] = toJSON(v.z);
3823 return obj;
3824 }
3825 public static JToken toJSON(V3<V3<float>> v) {
3826 var obj = new JObject();
3827 obj["x"] = toJSON(v.x);
3828 obj["y"] = toJSON(v.y);
3829 obj["z"] = toJSON(v.z);
3830 return obj;
3831 }
3832 public static JToken toJSON(V3<V4<float>> v) {
3833 var obj = new JObject();
3834 obj["x"] = toJSON(v.x);
3835 obj["y"] = toJSON(v.y);
3836 obj["z"] = toJSON(v.z);
3837 return obj;
3838 }
3839 public static JToken toJSON(V4<int> v) {
3840 var obj = new JObject();
3841 obj["x"] = toJSON(v.x);
3842 obj["y"] = toJSON(v.y);
3843 obj["z"] = toJSON(v.z);
3844 obj["w"] = toJSON(v.w);
3845 return obj;
3846 }
3847 public static JToken toJSON(V4<uint> v) {
3848 var obj = new JObject();
3849 obj["x"] = toJSON(v.x);
3850 obj["y"] = toJSON(v.y);
3851 obj["z"] = toJSON(v.z);
3852 obj["w"] = toJSON(v.w);
3853 return obj;
3854 }
3855 public static JToken toJSON(V4<float> v) {
3856 var obj = new JObject();
3857 obj["x"] = toJSON(v.x);
3858 obj["y"] = toJSON(v.y);
3859 obj["z"] = toJSON(v.z);
3860 obj["w"] = toJSON(v.w);
3861 return obj;
3862 }
3863 public static JToken toJSON(V4<bool> v) {
3864 var obj = new JObject();
3865 obj["x"] = toJSON(v.x);
3866 obj["y"] = toJSON(v.y);
3867 obj["z"] = toJSON(v.z);
3868 obj["w"] = toJSON(v.w);
3869 return obj;
3870 }
3871 public static JToken toJSON(V4<V2<float>> v) {
3872 var obj = new JObject();
3873 obj["x"] = toJSON(v.x);
3874 obj["y"] = toJSON(v.y);
3875 obj["z"] = toJSON(v.z);
3876 obj["w"] = toJSON(v.w);
3877 return obj;
3878 }
3879 public static JToken toJSON(V4<V3<float>> v) {
3880 var obj = new JObject();
3881 obj["x"] = toJSON(v.x);
3882 obj["y"] = toJSON(v.y);
3883 obj["z"] = toJSON(v.z);
3884 obj["w"] = toJSON(v.w);
3885 return obj;
3886 }
3887 public static JToken toJSON(V4<V4<float>> v) {
3888 var obj = new JObject();
3889 obj["x"] = toJSON(v.x);
3890 obj["y"] = toJSON(v.y);
3891 obj["z"] = toJSON(v.z);
3892 obj["w"] = toJSON(v.w);
3893 return obj;
3894 }
3895 public static JToken toJSON(List<int> v) {
3896 var obj = new JArray();
3897 foreach (var i in v) {
3898 obj.Add(toJSON(i));
3899 }
3900 return obj;
3901 }
3902 public static JToken toJSON(List<uint> v) {
3903 var obj = new JArray();
3904 foreach (var i in v) {
3905 obj.Add(toJSON(i));
3906 }
3907 return obj;
3908 }
3909 public static JToken toJSON(List<float> v) {
3910 var obj = new JArray();
3911 foreach (var i in v) {
3912 obj.Add(toJSON(i));
3913 }
3914 return obj;
3915 }
3916 public static JToken toJSON(List<bool> v) {
3917 var obj = new JArray();
3918 foreach (var i in v) {
3919 obj.Add(toJSON(i));
3920 }
3921 return obj;
3922 }
3923 public static JToken toJSON(List<global::LambdaCube.IR.ClearImage> v) {
3924 var obj = new JArray();
3925 foreach (var i in v) {
3926 obj.Add(toJSON(i));
3927 }
3928 return obj;
3929 }
3930 public static JToken toJSON(List<global::LambdaCube.IR.Command> v) {
3931 var obj = new JArray();
3932 foreach (var i in v) {
3933 obj.Add(toJSON(i));
3934 }
3935 return obj;
3936 }
3937 public static JToken toJSON(List<global::LambdaCube.IR.Parameter> v) {
3938 var obj = new JArray();
3939 foreach (var i in v) {
3940 obj.Add(toJSON(i));
3941 }
3942 return obj;
3943 }
3944 public static JToken toJSON(List<global::LambdaCube.IR.Program> v) {
3945 var obj = new JArray();
3946 foreach (var i in v) {
3947 obj.Add(toJSON(i));
3948 }
3949 return obj;
3950 }
3951 public static JToken toJSON(List<global::LambdaCube.IR.RenderTarget> v) {
3952 var obj = new JArray();
3953 foreach (var i in v) {
3954 obj.Add(toJSON(i));
3955 }
3956 return obj;
3957 }
3958 public static JToken toJSON(List<global::LambdaCube.IR.SamplerDescriptor> v) {
3959 var obj = new JArray();
3960 foreach (var i in v) {
3961 obj.Add(toJSON(i));
3962 }
3963 return obj;
3964 }
3965 public static JToken toJSON(List<global::LambdaCube.IR.Slot> v) {
3966 var obj = new JArray();
3967 foreach (var i in v) {
3968 obj.Add(toJSON(i));
3969 }
3970 return obj;
3971 }
3972 public static JToken toJSON(List<global::LambdaCube.IR.StreamData> v) {
3973 var obj = new JArray();
3974 foreach (var i in v) {
3975 obj.Add(toJSON(i));
3976 }
3977 return obj;
3978 }
3979 public static JToken toJSON(List<global::LambdaCube.IR.TargetItem> v) {
3980 var obj = new JArray();
3981 foreach (var i in v) {
3982 obj.Add(toJSON(i));
3983 }
3984 return obj;
3985 }
3986 public static JToken toJSON(List<global::LambdaCube.IR.TextureDescriptor> v) {
3987 var obj = new JArray();
3988 foreach (var i in v) {
3989 obj.Add(toJSON(i));
3990 }
3991 return obj;
3992 }
3993 public static JToken toJSON(List<global::LambdaCube.IR.FragmentOperation> v) {
3994 var obj = new JArray();
3995 foreach (var i in v) {
3996 obj.Add(toJSON(i));
3997 }
3998 return obj;
3999 }
4000 public static JToken toJSON(Maybe<int> v) {
4001 if (v.valid) {
4002 return toJSON(v.data);
4003 }
4004 return new JValue((string)null);
4005 }
4006 public static JToken toJSON(Maybe<float> v) {
4007 if (v.valid) {
4008 return toJSON(v.data);
4009 }
4010 return new JValue((string)null);
4011 }
4012 public static JToken toJSON(Maybe<string> v) {
4013 if (v.valid) {
4014 return toJSON(v.data);
4015 }
4016 return new JValue((string)null);
4017 }
4018 public static JToken toJSON(Maybe<global::LambdaCube.IR.ComparisonFunction> v) {
4019 if (v.valid) {
4020 return toJSON(v.data);
4021 }
4022 return new JValue((string)null);
4023 }
4024 public static JToken toJSON(Maybe<global::LambdaCube.IR.EdgeMode> v) {
4025 if (v.valid) {
4026 return toJSON(v.data);
4027 }
4028 return new JValue((string)null);
4029 }
4030 public static JToken toJSON(Maybe<global::LambdaCube.IR.ImageRef> v) {
4031 if (v.valid) {
4032 return toJSON(v.data);
4033 }
4034 return new JValue((string)null);
4035 }
4036 public static JToken toJSON(Dictionary<string, global::LambdaCube.IR.ArrayValue> v) {
4037 var obj = new JObject();
4038 foreach (var i in v) {
4039 obj[i.Key] = toJSON(i.Value);
4040 }
4041 return obj;
4042 }
4043 public static JToken toJSON(Dictionary<string, global::LambdaCube.IR.InputType> v) {
4044 var obj = new JObject();
4045 foreach (var i in v) {
4046 obj[i.Key] = toJSON(i.Value);
4047 }
4048 return obj;
4049 }
4050 public static JToken toJSON(Dictionary<string, global::LambdaCube.IR.Parameter> v) {
4051 var obj = new JObject();
4052 foreach (var i in v) {
4053 obj[i.Key] = toJSON(i.Value);
4054 }
4055 return obj;
4056 }
4057 }
4058}