summaryrefslogtreecommitdiff
path: root/ddl/out/LambdaCube.IR.cs
diff options
context:
space:
mode:
Diffstat (limited to 'ddl/out/LambdaCube.IR.cs')
-rw-r--r--ddl/out/LambdaCube.IR.cs4444
1 files changed, 4444 insertions, 0 deletions
diff --git a/ddl/out/LambdaCube.IR.cs b/ddl/out/LambdaCube.IR.cs
new file mode 100644
index 0000000..3c603ca
--- /dev/null
+++ b/ddl/out/LambdaCube.IR.cs
@@ -0,0 +1,4444 @@
1// generated file, do not modify!
2// 2016-03-21T11:41:51.714241000000Z
3
4using System;
5using System.Linq;
6using System.Collections.Generic;
7using Newtonsoft.Json.Linq;
8
9
10namespace LambdaCube.IR {
11 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 class VBoolArray : LambdaCube.IR.ArrayValue {
23 public List<bool> _0;
24 public VBoolArray() { tag = LambdaCube.IR.ArrayValue.Tag.VBoolArray; }
25 };
26 class VIntArray : LambdaCube.IR.ArrayValue {
27 public List<int> _0;
28 public VIntArray() { tag = LambdaCube.IR.ArrayValue.Tag.VIntArray; }
29 };
30 class VWordArray : LambdaCube.IR.ArrayValue {
31 public List<uint> _0;
32 public VWordArray() { tag = LambdaCube.IR.ArrayValue.Tag.VWordArray; }
33 };
34 class VFloatArray : LambdaCube.IR.ArrayValue {
35 public List<float> _0;
36 public VFloatArray() { tag = LambdaCube.IR.ArrayValue.Tag.VFloatArray; }
37 };
38 }
39 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 class VBool : LambdaCube.IR.Value {
72 public bool _0;
73 public VBool() { tag = LambdaCube.IR.Value.Tag.VBool; }
74 };
75 class VV2B : LambdaCube.IR.Value {
76 public V2<bool> _0;
77 public VV2B() { tag = LambdaCube.IR.Value.Tag.VV2B; }
78 };
79 class VV3B : LambdaCube.IR.Value {
80 public V3<bool> _0;
81 public VV3B() { tag = LambdaCube.IR.Value.Tag.VV3B; }
82 };
83 class VV4B : LambdaCube.IR.Value {
84 public V4<bool> _0;
85 public VV4B() { tag = LambdaCube.IR.Value.Tag.VV4B; }
86 };
87 class VWord : LambdaCube.IR.Value {
88 public uint _0;
89 public VWord() { tag = LambdaCube.IR.Value.Tag.VWord; }
90 };
91 class VV2U : LambdaCube.IR.Value {
92 public V2<uint> _0;
93 public VV2U() { tag = LambdaCube.IR.Value.Tag.VV2U; }
94 };
95 class VV3U : LambdaCube.IR.Value {
96 public V3<uint> _0;
97 public VV3U() { tag = LambdaCube.IR.Value.Tag.VV3U; }
98 };
99 class VV4U : LambdaCube.IR.Value {
100 public V4<uint> _0;
101 public VV4U() { tag = LambdaCube.IR.Value.Tag.VV4U; }
102 };
103 class VInt : LambdaCube.IR.Value {
104 public int _0;
105 public VInt() { tag = LambdaCube.IR.Value.Tag.VInt; }
106 };
107 class VV2I : LambdaCube.IR.Value {
108 public V2<int> _0;
109 public VV2I() { tag = LambdaCube.IR.Value.Tag.VV2I; }
110 };
111 class VV3I : LambdaCube.IR.Value {
112 public V3<int> _0;
113 public VV3I() { tag = LambdaCube.IR.Value.Tag.VV3I; }
114 };
115 class VV4I : LambdaCube.IR.Value {
116 public V4<int> _0;
117 public VV4I() { tag = LambdaCube.IR.Value.Tag.VV4I; }
118 };
119 class VFloat : LambdaCube.IR.Value {
120 public float _0;
121 public VFloat() { tag = LambdaCube.IR.Value.Tag.VFloat; }
122 };
123 class VV2F : LambdaCube.IR.Value {
124 public V2<float> _0;
125 public VV2F() { tag = LambdaCube.IR.Value.Tag.VV2F; }
126 };
127 class VV3F : LambdaCube.IR.Value {
128 public V3<float> _0;
129 public VV3F() { tag = LambdaCube.IR.Value.Tag.VV3F; }
130 };
131 class VV4F : LambdaCube.IR.Value {
132 public V4<float> _0;
133 public VV4F() { tag = LambdaCube.IR.Value.Tag.VV4F; }
134 };
135 class VM22F : LambdaCube.IR.Value {
136 public V2<V2<float>> _0;
137 public VM22F() { tag = LambdaCube.IR.Value.Tag.VM22F; }
138 };
139 class VM23F : LambdaCube.IR.Value {
140 public V3<V2<float>> _0;
141 public VM23F() { tag = LambdaCube.IR.Value.Tag.VM23F; }
142 };
143 class VM24F : LambdaCube.IR.Value {
144 public V4<V2<float>> _0;
145 public VM24F() { tag = LambdaCube.IR.Value.Tag.VM24F; }
146 };
147 class VM32F : LambdaCube.IR.Value {
148 public V2<V3<float>> _0;
149 public VM32F() { tag = LambdaCube.IR.Value.Tag.VM32F; }
150 };
151 class VM33F : LambdaCube.IR.Value {
152 public V3<V3<float>> _0;
153 public VM33F() { tag = LambdaCube.IR.Value.Tag.VM33F; }
154 };
155 class VM34F : LambdaCube.IR.Value {
156 public V4<V3<float>> _0;
157 public VM34F() { tag = LambdaCube.IR.Value.Tag.VM34F; }
158 };
159 class VM42F : LambdaCube.IR.Value {
160 public V2<V4<float>> _0;
161 public VM42F() { tag = LambdaCube.IR.Value.Tag.VM42F; }
162 };
163 class VM43F : LambdaCube.IR.Value {
164 public V3<V4<float>> _0;
165 public VM43F() { tag = LambdaCube.IR.Value.Tag.VM43F; }
166 };
167 class VM44F : LambdaCube.IR.Value {
168 public V4<V4<float>> _0;
169 public VM44F() { tag = LambdaCube.IR.Value.Tag.VM44F; }
170 };
171 }
172 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 class PointSpriteCoordOrigin {
242 public enum Tag {
243 LowerLeft,
244 UpperLeft
245 };
246 public Tag tag;
247 };
248
249 namespace data {
250 }
251 class PointSize {
252 public enum Tag {
253 PointSize,
254 ProgramPointSize
255 };
256 public Tag tag;
257 };
258
259 namespace data {
260 class PointSize : LambdaCube.IR.PointSize {
261 public float _0;
262 public PointSize() { tag = LambdaCube.IR.PointSize.Tag.PointSize; }
263 };
264 }
265 class PolygonOffset {
266 public enum Tag {
267 NoOffset,
268 Offset
269 };
270 public Tag tag;
271 };
272
273 namespace data {
274 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 class FrontFace {
281 public enum Tag {
282 CCW,
283 CW
284 };
285 public Tag tag;
286 };
287
288 namespace data {
289 }
290 class PolygonMode {
291 public enum Tag {
292 PolygonPoint,
293 PolygonLine,
294 PolygonFill
295 };
296 public Tag tag;
297 };
298
299 namespace data {
300 class PolygonPoint : LambdaCube.IR.PolygonMode {
301 public global::LambdaCube.IR.PointSize _0;
302 public PolygonPoint() { tag = LambdaCube.IR.PolygonMode.Tag.PolygonPoint; }
303 };
304 class PolygonLine : LambdaCube.IR.PolygonMode {
305 public float _0;
306 public PolygonLine() { tag = LambdaCube.IR.PolygonMode.Tag.PolygonLine; }
307 };
308 }
309 class ProvokingVertex {
310 public enum Tag {
311 FirstVertex,
312 LastVertex
313 };
314 public Tag tag;
315 };
316
317 namespace data {
318 }
319 class CullMode {
320 public enum Tag {
321 CullNone,
322 CullFront,
323 CullBack
324 };
325 public Tag tag;
326 };
327
328 namespace data {
329 class CullFront : LambdaCube.IR.CullMode {
330 public global::LambdaCube.IR.FrontFace _0;
331 public CullFront() { tag = LambdaCube.IR.CullMode.Tag.CullFront; }
332 };
333 class CullBack : LambdaCube.IR.CullMode {
334 public global::LambdaCube.IR.FrontFace _0;
335 public CullBack() { tag = LambdaCube.IR.CullMode.Tag.CullBack; }
336 };
337 }
338 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 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 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 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 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 class StencilOps {
431 public enum Tag {
432 StencilOps
433 };
434 public Tag tag;
435 };
436
437 namespace data {
438 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 class StencilTest {
445 public enum Tag {
446 StencilTest
447 };
448 public Tag tag;
449 };
450
451 namespace data {
452 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 class StencilTests {
460 public enum Tag {
461 StencilTests
462 };
463 public Tag tag;
464 };
465
466 namespace data {
467 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 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 class OutputPrimitive {
487 public enum Tag {
488 TrianglesOutput,
489 LinesOutput,
490 PointsOutput
491 };
492 public Tag tag;
493 };
494
495 namespace data {
496 }
497 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 class Blending {
510 public enum Tag {
511 NoBlending,
512 BlendLogicOp,
513 Blend
514 };
515 public Tag tag;
516 };
517
518 namespace data {
519 class BlendLogicOp : LambdaCube.IR.Blending {
520 public global::LambdaCube.IR.LogicOperation _0;
521 public BlendLogicOp() { tag = LambdaCube.IR.Blending.Tag.BlendLogicOp; }
522 };
523 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 class RasterContext {
535 public enum Tag {
536 PointCtx,
537 LineCtx,
538 TriangleCtx
539 };
540 public Tag tag;
541 };
542
543 namespace data {
544 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 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 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 class FragmentOperation {
564 public enum Tag {
565 DepthOp,
566 StencilOp,
567 ColorOp
568 };
569 public Tag tag;
570 };
571
572 namespace data {
573 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 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 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 class AccumulationContext {
591 public enum Tag {
592 AccumulationContext
593 };
594 public Tag tag;
595 };
596
597 namespace data {
598 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 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 class FloatT : LambdaCube.IR.TextureDataType {
616 public global::LambdaCube.IR.ColorArity _0;
617 public FloatT() { tag = LambdaCube.IR.TextureDataType.Tag.FloatT; }
618 };
619 class IntT : LambdaCube.IR.TextureDataType {
620 public global::LambdaCube.IR.ColorArity _0;
621 public IntT() { tag = LambdaCube.IR.TextureDataType.Tag.IntT; }
622 };
623 class WordT : LambdaCube.IR.TextureDataType {
624 public global::LambdaCube.IR.ColorArity _0;
625 public WordT() { tag = LambdaCube.IR.TextureDataType.Tag.WordT; }
626 };
627 }
628 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 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 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 class Texture3D : LambdaCube.IR.TextureType {
653 public global::LambdaCube.IR.TextureDataType _0;
654 public Texture3D() { tag = LambdaCube.IR.TextureType.Tag.Texture3D; }
655 };
656 class TextureCube : LambdaCube.IR.TextureType {
657 public global::LambdaCube.IR.TextureDataType _0;
658 public TextureCube() { tag = LambdaCube.IR.TextureType.Tag.TextureCube; }
659 };
660 class TextureRect : LambdaCube.IR.TextureType {
661 public global::LambdaCube.IR.TextureDataType _0;
662 public TextureRect() { tag = LambdaCube.IR.TextureType.Tag.TextureRect; }
663 };
664 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 class TextureBuffer : LambdaCube.IR.TextureType {
672 public global::LambdaCube.IR.TextureDataType _0;
673 public TextureBuffer() { tag = LambdaCube.IR.TextureType.Tag.TextureBuffer; }
674 };
675 }
676 class MipMap {
677 public enum Tag {
678 Mip,
679 NoMip,
680 AutoMip
681 };
682 public Tag tag;
683 };
684
685 namespace data {
686 class Mip : LambdaCube.IR.MipMap {
687 public int _0;
688 public int _1;
689 public Mip() { tag = LambdaCube.IR.MipMap.Tag.Mip; }
690 };
691 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 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 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 class ImageSemantic {
724 public enum Tag {
725 Depth,
726 Stencil,
727 Color
728 };
729 public Tag tag;
730 };
731
732 namespace data {
733 }
734 class ImageRef {
735 public enum Tag {
736 TextureImage,
737 Framebuffer
738 };
739 public Tag tag;
740 };
741
742 namespace data {
743 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 class Framebuffer : LambdaCube.IR.ImageRef {
750 public global::LambdaCube.IR.ImageSemantic _0;
751 public Framebuffer() { tag = LambdaCube.IR.ImageRef.Tag.Framebuffer; }
752 };
753 }
754 class ClearImage {
755 public enum Tag {
756 ClearImage
757 };
758 public Tag tag;
759 };
760
761 namespace data {
762 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 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 class SetRasterContext : LambdaCube.IR.Command {
789 public global::LambdaCube.IR.RasterContext _0;
790 public SetRasterContext() { tag = LambdaCube.IR.Command.Tag.SetRasterContext; }
791 };
792 class SetAccumulationContext : LambdaCube.IR.Command {
793 public global::LambdaCube.IR.AccumulationContext _0;
794 public SetAccumulationContext() { tag = LambdaCube.IR.Command.Tag.SetAccumulationContext; }
795 };
796 class SetRenderTarget : LambdaCube.IR.Command {
797 public int _0;
798 public SetRenderTarget() { tag = LambdaCube.IR.Command.Tag.SetRenderTarget; }
799 };
800 class SetProgram : LambdaCube.IR.Command {
801 public int _0;
802 public SetProgram() { tag = LambdaCube.IR.Command.Tag.SetProgram; }
803 };
804 class SetSamplerUniform : LambdaCube.IR.Command {
805 public string _0;
806 public int _1;
807 public SetSamplerUniform() { tag = LambdaCube.IR.Command.Tag.SetSamplerUniform; }
808 };
809 class SetTexture : LambdaCube.IR.Command {
810 public int _0;
811 public int _1;
812 public SetTexture() { tag = LambdaCube.IR.Command.Tag.SetTexture; }
813 };
814 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 class RenderSlot : LambdaCube.IR.Command {
820 public int _0;
821 public RenderSlot() { tag = LambdaCube.IR.Command.Tag.RenderSlot; }
822 };
823 class RenderStream : LambdaCube.IR.Command {
824 public int _0;
825 public RenderStream() { tag = LambdaCube.IR.Command.Tag.RenderStream; }
826 };
827 class ClearRenderTarget : LambdaCube.IR.Command {
828 public List<global::LambdaCube.IR.ClearImage> _0;
829 public ClearRenderTarget() { tag = LambdaCube.IR.Command.Tag.ClearRenderTarget; }
830 };
831 class GenerateMipMap : LambdaCube.IR.Command {
832 public int _0;
833 public GenerateMipMap() { tag = LambdaCube.IR.Command.Tag.GenerateMipMap; }
834 };
835 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 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 class SamplerDescriptor {
847 public enum Tag {
848 SamplerDescriptor
849 };
850 public Tag tag;
851 };
852
853 namespace data {
854 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 class TextureDescriptor {
869 public enum Tag {
870 TextureDescriptor
871 };
872 public Tag tag;
873 };
874
875 namespace data {
876 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 class Parameter {
887 public enum Tag {
888 Parameter
889 };
890 public Tag tag;
891 };
892
893 namespace data {
894 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 class Program {
901 public enum Tag {
902 Program
903 };
904 public Tag tag;
905 };
906
907 namespace data {
908 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 class Slot {
920 public enum Tag {
921 Slot
922 };
923 public Tag tag;
924 };
925
926 namespace data {
927 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 class StreamData {
937 public enum Tag {
938 StreamData
939 };
940 public Tag tag;
941 };
942
943 namespace data {
944 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 class TargetItem {
953 public enum Tag {
954 TargetItem
955 };
956 public Tag tag;
957 };
958
959 namespace data {
960 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 class RenderTarget {
967 public enum Tag {
968 RenderTarget
969 };
970 public Tag tag;
971 };
972
973 namespace data {
974 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 class Backend {
980 public enum Tag {
981 WebGL1,
982 OpenGL33
983 };
984 public Tag tag;
985 };
986
987 namespace data {
988 }
989 class Pipeline {
990 public enum Tag {
991 Pipeline
992 };
993 public Tag tag;
994 };
995
996 namespace data {
997 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 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 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 => fromJSON (Type.Int, x)).ToList();
1249 case Type.Array_Int32: return ((JArray)obj).Select(x => fromJSON (Type.Int32, x)).ToList();
1250 case Type.Array_Word32: return ((JArray)obj).Select(x => fromJSON (Type.Word32, x)).ToList();
1251 case Type.Array_Float: return ((JArray)obj).Select(x => fromJSON (Type.Float, x)).ToList();
1252 case Type.Array_Bool: return ((JArray)obj).Select(x => fromJSON (Type.Bool, x)).ToList();
1253 case Type.Array_ClearImage: return ((JArray)obj).Select(x => fromJSON (Type.ClearImage, x)).ToList();
1254 case Type.Array_Command: return ((JArray)obj).Select(x => fromJSON (Type.Command, x)).ToList();
1255 case Type.Array_Parameter: return ((JArray)obj).Select(x => fromJSON (Type.Parameter, x)).ToList();
1256 case Type.Array_Program: return ((JArray)obj).Select(x => fromJSON (Type.Program, x)).ToList();
1257 case Type.Array_RenderTarget: return ((JArray)obj).Select(x => fromJSON (Type.RenderTarget, x)).ToList();
1258 case Type.Array_SamplerDescriptor: return ((JArray)obj).Select(x => fromJSON (Type.SamplerDescriptor, x)).ToList();
1259 case Type.Array_Slot: return ((JArray)obj).Select(x => fromJSON (Type.Slot, x)).ToList();
1260 case Type.Array_StreamData: return ((JArray)obj).Select(x => fromJSON (Type.StreamData, x)).ToList();
1261 case Type.Array_TargetItem: return ((JArray)obj).Select(x => fromJSON (Type.TargetItem, x)).ToList();
1262 case Type.Array_TextureDescriptor: return ((JArray)obj).Select(x => fromJSON (Type.TextureDescriptor, x)).ToList();
1263 case Type.List_FragmentOperation: return ((JArray)obj).Select(x => 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 ArrayValue.Tag tagType;
1352 if (tag == "VBoolArray") {
1353 tagType = ArrayValue.Tag.VBoolArray;
1354 data.VBoolArray tv = new data.VBoolArray();
1355 tv._0 = (List<bool>)fromJSON(Type.Array_Bool,obj["arg0"]);
1356 return tv;
1357 }
1358 else if (tag == "VIntArray") {
1359 tagType = ArrayValue.Tag.VIntArray;
1360 data.VIntArray tv = new data.VIntArray();
1361 tv._0 = (List<int>)fromJSON(Type.Array_Int32,obj["arg0"]);
1362 return tv;
1363 }
1364 else if (tag == "VWordArray") {
1365 tagType = ArrayValue.Tag.VWordArray;
1366 data.VWordArray tv = new data.VWordArray();
1367 tv._0 = (List<uint>)fromJSON(Type.Array_Word32,obj["arg0"]);
1368 return tv;
1369 }
1370 else if (tag == "VFloatArray") {
1371 tagType = ArrayValue.Tag.VFloatArray;
1372 data.VFloatArray tv = new data.VFloatArray();
1373 tv._0 = (List<float>)fromJSON(Type.Array_Float,obj["arg0"]);
1374 return tv;
1375 }
1376 else throw new Exception("unknown constructor: " + tag);
1377 ArrayValue o = new ArrayValue();
1378 o.tag = tagType;
1379 return o;
1380 }
1381 case Type.Value: {
1382 string tag = (string)obj["tag"];
1383 Value.Tag tagType;
1384 if (tag == "VBool") {
1385 tagType = Value.Tag.VBool;
1386 data.VBool tv = new data.VBool();
1387 tv._0 = (bool)fromJSON(Type.Bool,obj["arg0"]);
1388 return tv;
1389 }
1390 else if (tag == "VV2B") {
1391 tagType = Value.Tag.VV2B;
1392 data.VV2B tv = new data.VV2B();
1393 tv._0 = (V2<bool>)fromJSON(Type.V2_Bool,obj["arg0"]);
1394 return tv;
1395 }
1396 else if (tag == "VV3B") {
1397 tagType = Value.Tag.VV3B;
1398 data.VV3B tv = new data.VV3B();
1399 tv._0 = (V3<bool>)fromJSON(Type.V3_Bool,obj["arg0"]);
1400 return tv;
1401 }
1402 else if (tag == "VV4B") {
1403 tagType = Value.Tag.VV4B;
1404 data.VV4B tv = new data.VV4B();
1405 tv._0 = (V4<bool>)fromJSON(Type.V4_Bool,obj["arg0"]);
1406 return tv;
1407 }
1408 else if (tag == "VWord") {
1409 tagType = Value.Tag.VWord;
1410 data.VWord tv = new data.VWord();
1411 tv._0 = (uint)fromJSON(Type.Word32,obj["arg0"]);
1412 return tv;
1413 }
1414 else if (tag == "VV2U") {
1415 tagType = Value.Tag.VV2U;
1416 data.VV2U tv = new data.VV2U();
1417 tv._0 = (V2<uint>)fromJSON(Type.V2_Word,obj["arg0"]);
1418 return tv;
1419 }
1420 else if (tag == "VV3U") {
1421 tagType = Value.Tag.VV3U;
1422 data.VV3U tv = new data.VV3U();
1423 tv._0 = (V3<uint>)fromJSON(Type.V3_Word,obj["arg0"]);
1424 return tv;
1425 }
1426 else if (tag == "VV4U") {
1427 tagType = Value.Tag.VV4U;
1428 data.VV4U tv = new data.VV4U();
1429 tv._0 = (V4<uint>)fromJSON(Type.V4_Word,obj["arg0"]);
1430 return tv;
1431 }
1432 else if (tag == "VInt") {
1433 tagType = Value.Tag.VInt;
1434 data.VInt tv = new data.VInt();
1435 tv._0 = (int)fromJSON(Type.Int32,obj["arg0"]);
1436 return tv;
1437 }
1438 else if (tag == "VV2I") {
1439 tagType = Value.Tag.VV2I;
1440 data.VV2I tv = new data.VV2I();
1441 tv._0 = (V2<int>)fromJSON(Type.V2_Int,obj["arg0"]);
1442 return tv;
1443 }
1444 else if (tag == "VV3I") {
1445 tagType = Value.Tag.VV3I;
1446 data.VV3I tv = new data.VV3I();
1447 tv._0 = (V3<int>)fromJSON(Type.V3_Int,obj["arg0"]);
1448 return tv;
1449 }
1450 else if (tag == "VV4I") {
1451 tagType = Value.Tag.VV4I;
1452 data.VV4I tv = new data.VV4I();
1453 tv._0 = (V4<int>)fromJSON(Type.V4_Int,obj["arg0"]);
1454 return tv;
1455 }
1456 else if (tag == "VFloat") {
1457 tagType = Value.Tag.VFloat;
1458 data.VFloat tv = new data.VFloat();
1459 tv._0 = (float)fromJSON(Type.Float,obj["arg0"]);
1460 return tv;
1461 }
1462 else if (tag == "VV2F") {
1463 tagType = Value.Tag.VV2F;
1464 data.VV2F tv = new data.VV2F();
1465 tv._0 = (V2<float>)fromJSON(Type.V2_Float,obj["arg0"]);
1466 return tv;
1467 }
1468 else if (tag == "VV3F") {
1469 tagType = Value.Tag.VV3F;
1470 data.VV3F tv = new data.VV3F();
1471 tv._0 = (V3<float>)fromJSON(Type.V3_Float,obj["arg0"]);
1472 return tv;
1473 }
1474 else if (tag == "VV4F") {
1475 tagType = Value.Tag.VV4F;
1476 data.VV4F tv = new data.VV4F();
1477 tv._0 = (V4<float>)fromJSON(Type.V4_Float,obj["arg0"]);
1478 return tv;
1479 }
1480 else if (tag == "VM22F") {
1481 tagType = Value.Tag.VM22F;
1482 data.VM22F tv = new data.VM22F();
1483 tv._0 = (V2<V2<float>>)fromJSON(Type.V2_V2_Float,obj["arg0"]);
1484 return tv;
1485 }
1486 else if (tag == "VM23F") {
1487 tagType = Value.Tag.VM23F;
1488 data.VM23F tv = new data.VM23F();
1489 tv._0 = (V3<V2<float>>)fromJSON(Type.V3_V2_Float,obj["arg0"]);
1490 return tv;
1491 }
1492 else if (tag == "VM24F") {
1493 tagType = Value.Tag.VM24F;
1494 data.VM24F tv = new data.VM24F();
1495 tv._0 = (V4<V2<float>>)fromJSON(Type.V4_V2_Float,obj["arg0"]);
1496 return tv;
1497 }
1498 else if (tag == "VM32F") {
1499 tagType = Value.Tag.VM32F;
1500 data.VM32F tv = new data.VM32F();
1501 tv._0 = (V2<V3<float>>)fromJSON(Type.V2_V3_Float,obj["arg0"]);
1502 return tv;
1503 }
1504 else if (tag == "VM33F") {
1505 tagType = Value.Tag.VM33F;
1506 data.VM33F tv = new data.VM33F();
1507 tv._0 = (V3<V3<float>>)fromJSON(Type.V3_V3_Float,obj["arg0"]);
1508 return tv;
1509 }
1510 else if (tag == "VM34F") {
1511 tagType = Value.Tag.VM34F;
1512 data.VM34F tv = new data.VM34F();
1513 tv._0 = (V4<V3<float>>)fromJSON(Type.V4_V3_Float,obj["arg0"]);
1514 return tv;
1515 }
1516 else if (tag == "VM42F") {
1517 tagType = Value.Tag.VM42F;
1518 data.VM42F tv = new data.VM42F();
1519 tv._0 = (V2<V4<float>>)fromJSON(Type.V2_V4_Float,obj["arg0"]);
1520 return tv;
1521 }
1522 else if (tag == "VM43F") {
1523 tagType = Value.Tag.VM43F;
1524 data.VM43F tv = new data.VM43F();
1525 tv._0 = (V3<V4<float>>)fromJSON(Type.V3_V4_Float,obj["arg0"]);
1526 return tv;
1527 }
1528 else if (tag == "VM44F") {
1529 tagType = Value.Tag.VM44F;
1530 data.VM44F tv = new data.VM44F();
1531 tv._0 = (V4<V4<float>>)fromJSON(Type.V4_V4_Float,obj["arg0"]);
1532 return tv;
1533 }
1534 else throw new Exception("unknown constructor: " + tag);
1535 Value o = new Value();
1536 o.tag = tagType;
1537 return o;
1538 }
1539 case Type.InputType: {
1540 string tag = (string)obj["tag"];
1541 InputType.Tag tagType;
1542 if (tag == "Bool") {
1543 tagType = InputType.Tag.Bool;
1544 }
1545 else if (tag == "V2B") {
1546 tagType = InputType.Tag.V2B;
1547 }
1548 else if (tag == "V3B") {
1549 tagType = InputType.Tag.V3B;
1550 }
1551 else if (tag == "V4B") {
1552 tagType = InputType.Tag.V4B;
1553 }
1554 else if (tag == "Word") {
1555 tagType = InputType.Tag.Word;
1556 }
1557 else if (tag == "V2U") {
1558 tagType = InputType.Tag.V2U;
1559 }
1560 else if (tag == "V3U") {
1561 tagType = InputType.Tag.V3U;
1562 }
1563 else if (tag == "V4U") {
1564 tagType = InputType.Tag.V4U;
1565 }
1566 else if (tag == "Int") {
1567 tagType = InputType.Tag.Int;
1568 }
1569 else if (tag == "V2I") {
1570 tagType = InputType.Tag.V2I;
1571 }
1572 else if (tag == "V3I") {
1573 tagType = InputType.Tag.V3I;
1574 }
1575 else if (tag == "V4I") {
1576 tagType = InputType.Tag.V4I;
1577 }
1578 else if (tag == "Float") {
1579 tagType = InputType.Tag.Float;
1580 }
1581 else if (tag == "V2F") {
1582 tagType = InputType.Tag.V2F;
1583 }
1584 else if (tag == "V3F") {
1585 tagType = InputType.Tag.V3F;
1586 }
1587 else if (tag == "V4F") {
1588 tagType = InputType.Tag.V4F;
1589 }
1590 else if (tag == "M22F") {
1591 tagType = InputType.Tag.M22F;
1592 }
1593 else if (tag == "M23F") {
1594 tagType = InputType.Tag.M23F;
1595 }
1596 else if (tag == "M24F") {
1597 tagType = InputType.Tag.M24F;
1598 }
1599 else if (tag == "M32F") {
1600 tagType = InputType.Tag.M32F;
1601 }
1602 else if (tag == "M33F") {
1603 tagType = InputType.Tag.M33F;
1604 }
1605 else if (tag == "M34F") {
1606 tagType = InputType.Tag.M34F;
1607 }
1608 else if (tag == "M42F") {
1609 tagType = InputType.Tag.M42F;
1610 }
1611 else if (tag == "M43F") {
1612 tagType = InputType.Tag.M43F;
1613 }
1614 else if (tag == "M44F") {
1615 tagType = InputType.Tag.M44F;
1616 }
1617 else if (tag == "STexture1D") {
1618 tagType = InputType.Tag.STexture1D;
1619 }
1620 else if (tag == "STexture2D") {
1621 tagType = InputType.Tag.STexture2D;
1622 }
1623 else if (tag == "STextureCube") {
1624 tagType = InputType.Tag.STextureCube;
1625 }
1626 else if (tag == "STexture1DArray") {
1627 tagType = InputType.Tag.STexture1DArray;
1628 }
1629 else if (tag == "STexture2DArray") {
1630 tagType = InputType.Tag.STexture2DArray;
1631 }
1632 else if (tag == "STexture2DRect") {
1633 tagType = InputType.Tag.STexture2DRect;
1634 }
1635 else if (tag == "FTexture1D") {
1636 tagType = InputType.Tag.FTexture1D;
1637 }
1638 else if (tag == "FTexture2D") {
1639 tagType = InputType.Tag.FTexture2D;
1640 }
1641 else if (tag == "FTexture3D") {
1642 tagType = InputType.Tag.FTexture3D;
1643 }
1644 else if (tag == "FTextureCube") {
1645 tagType = InputType.Tag.FTextureCube;
1646 }
1647 else if (tag == "FTexture1DArray") {
1648 tagType = InputType.Tag.FTexture1DArray;
1649 }
1650 else if (tag == "FTexture2DArray") {
1651 tagType = InputType.Tag.FTexture2DArray;
1652 }
1653 else if (tag == "FTexture2DMS") {
1654 tagType = InputType.Tag.FTexture2DMS;
1655 }
1656 else if (tag == "FTexture2DMSArray") {
1657 tagType = InputType.Tag.FTexture2DMSArray;
1658 }
1659 else if (tag == "FTextureBuffer") {
1660 tagType = InputType.Tag.FTextureBuffer;
1661 }
1662 else if (tag == "FTexture2DRect") {
1663 tagType = InputType.Tag.FTexture2DRect;
1664 }
1665 else if (tag == "ITexture1D") {
1666 tagType = InputType.Tag.ITexture1D;
1667 }
1668 else if (tag == "ITexture2D") {
1669 tagType = InputType.Tag.ITexture2D;
1670 }
1671 else if (tag == "ITexture3D") {
1672 tagType = InputType.Tag.ITexture3D;
1673 }
1674 else if (tag == "ITextureCube") {
1675 tagType = InputType.Tag.ITextureCube;
1676 }
1677 else if (tag == "ITexture1DArray") {
1678 tagType = InputType.Tag.ITexture1DArray;
1679 }
1680 else if (tag == "ITexture2DArray") {
1681 tagType = InputType.Tag.ITexture2DArray;
1682 }
1683 else if (tag == "ITexture2DMS") {
1684 tagType = InputType.Tag.ITexture2DMS;
1685 }
1686 else if (tag == "ITexture2DMSArray") {
1687 tagType = InputType.Tag.ITexture2DMSArray;
1688 }
1689 else if (tag == "ITextureBuffer") {
1690 tagType = InputType.Tag.ITextureBuffer;
1691 }
1692 else if (tag == "ITexture2DRect") {
1693 tagType = InputType.Tag.ITexture2DRect;
1694 }
1695 else if (tag == "UTexture1D") {
1696 tagType = InputType.Tag.UTexture1D;
1697 }
1698 else if (tag == "UTexture2D") {
1699 tagType = InputType.Tag.UTexture2D;
1700 }
1701 else if (tag == "UTexture3D") {
1702 tagType = InputType.Tag.UTexture3D;
1703 }
1704 else if (tag == "UTextureCube") {
1705 tagType = InputType.Tag.UTextureCube;
1706 }
1707 else if (tag == "UTexture1DArray") {
1708 tagType = InputType.Tag.UTexture1DArray;
1709 }
1710 else if (tag == "UTexture2DArray") {
1711 tagType = InputType.Tag.UTexture2DArray;
1712 }
1713 else if (tag == "UTexture2DMS") {
1714 tagType = InputType.Tag.UTexture2DMS;
1715 }
1716 else if (tag == "UTexture2DMSArray") {
1717 tagType = InputType.Tag.UTexture2DMSArray;
1718 }
1719 else if (tag == "UTextureBuffer") {
1720 tagType = InputType.Tag.UTextureBuffer;
1721 }
1722 else if (tag == "UTexture2DRect") {
1723 tagType = InputType.Tag.UTexture2DRect;
1724 }
1725 else throw new Exception("unknown constructor: " + tag);
1726 InputType o = new InputType();
1727 o.tag = tagType;
1728 return o;
1729 }
1730 case Type.PointSpriteCoordOrigin: {
1731 string tag = (string)obj["tag"];
1732 PointSpriteCoordOrigin.Tag tagType;
1733 if (tag == "LowerLeft") {
1734 tagType = PointSpriteCoordOrigin.Tag.LowerLeft;
1735 }
1736 else if (tag == "UpperLeft") {
1737 tagType = PointSpriteCoordOrigin.Tag.UpperLeft;
1738 }
1739 else throw new Exception("unknown constructor: " + tag);
1740 PointSpriteCoordOrigin o = new PointSpriteCoordOrigin();
1741 o.tag = tagType;
1742 return o;
1743 }
1744 case Type.PointSize: {
1745 string tag = (string)obj["tag"];
1746 PointSize.Tag tagType;
1747 if (tag == "PointSize") {
1748 tagType = PointSize.Tag.PointSize;
1749 data.PointSize tv = new data.PointSize();
1750 tv._0 = (float)fromJSON(Type.Float,obj["arg0"]);
1751 return tv;
1752 }
1753 else if (tag == "ProgramPointSize") {
1754 tagType = PointSize.Tag.ProgramPointSize;
1755 }
1756 else throw new Exception("unknown constructor: " + tag);
1757 PointSize o = new PointSize();
1758 o.tag = tagType;
1759 return o;
1760 }
1761 case Type.PolygonOffset: {
1762 string tag = (string)obj["tag"];
1763 PolygonOffset.Tag tagType;
1764 if (tag == "NoOffset") {
1765 tagType = PolygonOffset.Tag.NoOffset;
1766 }
1767 else if (tag == "Offset") {
1768 tagType = PolygonOffset.Tag.Offset;
1769 data.Offset tv = new data.Offset();
1770 tv._0 = (float)fromJSON(Type.Float,obj["arg0"]);
1771 tv._1 = (float)fromJSON(Type.Float,obj["arg1"]);
1772 return tv;
1773 }
1774 else throw new Exception("unknown constructor: " + tag);
1775 PolygonOffset o = new PolygonOffset();
1776 o.tag = tagType;
1777 return o;
1778 }
1779 case Type.FrontFace: {
1780 string tag = (string)obj["tag"];
1781 FrontFace.Tag tagType;
1782 if (tag == "CCW") {
1783 tagType = FrontFace.Tag.CCW;
1784 }
1785 else if (tag == "CW") {
1786 tagType = FrontFace.Tag.CW;
1787 }
1788 else throw new Exception("unknown constructor: " + tag);
1789 FrontFace o = new FrontFace();
1790 o.tag = tagType;
1791 return o;
1792 }
1793 case Type.PolygonMode: {
1794 string tag = (string)obj["tag"];
1795 PolygonMode.Tag tagType;
1796 if (tag == "PolygonPoint") {
1797 tagType = PolygonMode.Tag.PolygonPoint;
1798 data.PolygonPoint tv = new data.PolygonPoint();
1799 tv._0 = (global::LambdaCube.IR.PointSize)fromJSON(Type.PointSize,obj["arg0"]);
1800 return tv;
1801 }
1802 else if (tag == "PolygonLine") {
1803 tagType = PolygonMode.Tag.PolygonLine;
1804 data.PolygonLine tv = new data.PolygonLine();
1805 tv._0 = (float)fromJSON(Type.Float,obj["arg0"]);
1806 return tv;
1807 }
1808 else if (tag == "PolygonFill") {
1809 tagType = PolygonMode.Tag.PolygonFill;
1810 }
1811 else throw new Exception("unknown constructor: " + tag);
1812 PolygonMode o = new PolygonMode();
1813 o.tag = tagType;
1814 return o;
1815 }
1816 case Type.ProvokingVertex: {
1817 string tag = (string)obj["tag"];
1818 ProvokingVertex.Tag tagType;
1819 if (tag == "FirstVertex") {
1820 tagType = ProvokingVertex.Tag.FirstVertex;
1821 }
1822 else if (tag == "LastVertex") {
1823 tagType = ProvokingVertex.Tag.LastVertex;
1824 }
1825 else throw new Exception("unknown constructor: " + tag);
1826 ProvokingVertex o = new ProvokingVertex();
1827 o.tag = tagType;
1828 return o;
1829 }
1830 case Type.CullMode: {
1831 string tag = (string)obj["tag"];
1832 CullMode.Tag tagType;
1833 if (tag == "CullNone") {
1834 tagType = CullMode.Tag.CullNone;
1835 }
1836 else if (tag == "CullFront") {
1837 tagType = CullMode.Tag.CullFront;
1838 data.CullFront tv = new data.CullFront();
1839 tv._0 = (global::LambdaCube.IR.FrontFace)fromJSON(Type.FrontFace,obj["arg0"]);
1840 return tv;
1841 }
1842 else if (tag == "CullBack") {
1843 tagType = CullMode.Tag.CullBack;
1844 data.CullBack tv = new data.CullBack();
1845 tv._0 = (global::LambdaCube.IR.FrontFace)fromJSON(Type.FrontFace,obj["arg0"]);
1846 return tv;
1847 }
1848 else throw new Exception("unknown constructor: " + tag);
1849 CullMode o = new CullMode();
1850 o.tag = tagType;
1851 return o;
1852 }
1853 case Type.ComparisonFunction: {
1854 string tag = (string)obj["tag"];
1855 ComparisonFunction.Tag tagType;
1856 if (tag == "Never") {
1857 tagType = ComparisonFunction.Tag.Never;
1858 }
1859 else if (tag == "Less") {
1860 tagType = ComparisonFunction.Tag.Less;
1861 }
1862 else if (tag == "Equal") {
1863 tagType = ComparisonFunction.Tag.Equal;
1864 }
1865 else if (tag == "Lequal") {
1866 tagType = ComparisonFunction.Tag.Lequal;
1867 }
1868 else if (tag == "Greater") {
1869 tagType = ComparisonFunction.Tag.Greater;
1870 }
1871 else if (tag == "Notequal") {
1872 tagType = ComparisonFunction.Tag.Notequal;
1873 }
1874 else if (tag == "Gequal") {
1875 tagType = ComparisonFunction.Tag.Gequal;
1876 }
1877 else if (tag == "Always") {
1878 tagType = ComparisonFunction.Tag.Always;
1879 }
1880 else throw new Exception("unknown constructor: " + tag);
1881 ComparisonFunction o = new ComparisonFunction();
1882 o.tag = tagType;
1883 return o;
1884 }
1885 case Type.StencilOperation: {
1886 string tag = (string)obj["tag"];
1887 StencilOperation.Tag tagType;
1888 if (tag == "OpZero") {
1889 tagType = StencilOperation.Tag.OpZero;
1890 }
1891 else if (tag == "OpKeep") {
1892 tagType = StencilOperation.Tag.OpKeep;
1893 }
1894 else if (tag == "OpReplace") {
1895 tagType = StencilOperation.Tag.OpReplace;
1896 }
1897 else if (tag == "OpIncr") {
1898 tagType = StencilOperation.Tag.OpIncr;
1899 }
1900 else if (tag == "OpIncrWrap") {
1901 tagType = StencilOperation.Tag.OpIncrWrap;
1902 }
1903 else if (tag == "OpDecr") {
1904 tagType = StencilOperation.Tag.OpDecr;
1905 }
1906 else if (tag == "OpDecrWrap") {
1907 tagType = StencilOperation.Tag.OpDecrWrap;
1908 }
1909 else if (tag == "OpInvert") {
1910 tagType = StencilOperation.Tag.OpInvert;
1911 }
1912 else throw new Exception("unknown constructor: " + tag);
1913 StencilOperation o = new StencilOperation();
1914 o.tag = tagType;
1915 return o;
1916 }
1917 case Type.BlendEquation: {
1918 string tag = (string)obj["tag"];
1919 BlendEquation.Tag tagType;
1920 if (tag == "FuncAdd") {
1921 tagType = BlendEquation.Tag.FuncAdd;
1922 }
1923 else if (tag == "FuncSubtract") {
1924 tagType = BlendEquation.Tag.FuncSubtract;
1925 }
1926 else if (tag == "FuncReverseSubtract") {
1927 tagType = BlendEquation.Tag.FuncReverseSubtract;
1928 }
1929 else if (tag == "Min") {
1930 tagType = BlendEquation.Tag.Min;
1931 }
1932 else if (tag == "Max") {
1933 tagType = BlendEquation.Tag.Max;
1934 }
1935 else throw new Exception("unknown constructor: " + tag);
1936 BlendEquation o = new BlendEquation();
1937 o.tag = tagType;
1938 return o;
1939 }
1940 case Type.BlendingFactor: {
1941 string tag = (string)obj["tag"];
1942 BlendingFactor.Tag tagType;
1943 if (tag == "Zero") {
1944 tagType = BlendingFactor.Tag.Zero;
1945 }
1946 else if (tag == "One") {
1947 tagType = BlendingFactor.Tag.One;
1948 }
1949 else if (tag == "SrcColor") {
1950 tagType = BlendingFactor.Tag.SrcColor;
1951 }
1952 else if (tag == "OneMinusSrcColor") {
1953 tagType = BlendingFactor.Tag.OneMinusSrcColor;
1954 }
1955 else if (tag == "DstColor") {
1956 tagType = BlendingFactor.Tag.DstColor;
1957 }
1958 else if (tag == "OneMinusDstColor") {
1959 tagType = BlendingFactor.Tag.OneMinusDstColor;
1960 }
1961 else if (tag == "SrcAlpha") {
1962 tagType = BlendingFactor.Tag.SrcAlpha;
1963 }
1964 else if (tag == "OneMinusSrcAlpha") {
1965 tagType = BlendingFactor.Tag.OneMinusSrcAlpha;
1966 }
1967 else if (tag == "DstAlpha") {
1968 tagType = BlendingFactor.Tag.DstAlpha;
1969 }
1970 else if (tag == "OneMinusDstAlpha") {
1971 tagType = BlendingFactor.Tag.OneMinusDstAlpha;
1972 }
1973 else if (tag == "ConstantColor") {
1974 tagType = BlendingFactor.Tag.ConstantColor;
1975 }
1976 else if (tag == "OneMinusConstantColor") {
1977 tagType = BlendingFactor.Tag.OneMinusConstantColor;
1978 }
1979 else if (tag == "ConstantAlpha") {
1980 tagType = BlendingFactor.Tag.ConstantAlpha;
1981 }
1982 else if (tag == "OneMinusConstantAlpha") {
1983 tagType = BlendingFactor.Tag.OneMinusConstantAlpha;
1984 }
1985 else if (tag == "SrcAlphaSaturate") {
1986 tagType = BlendingFactor.Tag.SrcAlphaSaturate;
1987 }
1988 else throw new Exception("unknown constructor: " + tag);
1989 BlendingFactor o = new BlendingFactor();
1990 o.tag = tagType;
1991 return o;
1992 }
1993 case Type.LogicOperation: {
1994 string tag = (string)obj["tag"];
1995 LogicOperation.Tag tagType;
1996 if (tag == "Clear") {
1997 tagType = LogicOperation.Tag.Clear;
1998 }
1999 else if (tag == "And") {
2000 tagType = LogicOperation.Tag.And;
2001 }
2002 else if (tag == "AndReverse") {
2003 tagType = LogicOperation.Tag.AndReverse;
2004 }
2005 else if (tag == "Copy") {
2006 tagType = LogicOperation.Tag.Copy;
2007 }
2008 else if (tag == "AndInverted") {
2009 tagType = LogicOperation.Tag.AndInverted;
2010 }
2011 else if (tag == "Noop") {
2012 tagType = LogicOperation.Tag.Noop;
2013 }
2014 else if (tag == "Xor") {
2015 tagType = LogicOperation.Tag.Xor;
2016 }
2017 else if (tag == "Or") {
2018 tagType = LogicOperation.Tag.Or;
2019 }
2020 else if (tag == "Nor") {
2021 tagType = LogicOperation.Tag.Nor;
2022 }
2023 else if (tag == "Equiv") {
2024 tagType = LogicOperation.Tag.Equiv;
2025 }
2026 else if (tag == "Invert") {
2027 tagType = LogicOperation.Tag.Invert;
2028 }
2029 else if (tag == "OrReverse") {
2030 tagType = LogicOperation.Tag.OrReverse;
2031 }
2032 else if (tag == "CopyInverted") {
2033 tagType = LogicOperation.Tag.CopyInverted;
2034 }
2035 else if (tag == "OrInverted") {
2036 tagType = LogicOperation.Tag.OrInverted;
2037 }
2038 else if (tag == "Nand") {
2039 tagType = LogicOperation.Tag.Nand;
2040 }
2041 else if (tag == "Set") {
2042 tagType = LogicOperation.Tag.Set;
2043 }
2044 else throw new Exception("unknown constructor: " + tag);
2045 LogicOperation o = new LogicOperation();
2046 o.tag = tagType;
2047 return o;
2048 }
2049 case Type.StencilOps: {
2050 string tag = (string)obj["tag"];
2051 StencilOps.Tag tagType;
2052 if (tag == "StencilOps") {
2053 tagType = StencilOps.Tag.StencilOps;
2054 data.StencilOps tv = new data.StencilOps();
2055 tv.frontStencilOp = (global::LambdaCube.IR.StencilOperation)fromJSON(Type.StencilOperation,obj["frontStencilOp"]);
2056 tv.backStencilOp = (global::LambdaCube.IR.StencilOperation)fromJSON(Type.StencilOperation,obj["backStencilOp"]);
2057 return tv;
2058 }
2059 else throw new Exception("unknown constructor: " + tag);
2060 StencilOps o = new StencilOps();
2061 o.tag = tagType;
2062 return o;
2063 }
2064 case Type.StencilTest: {
2065 string tag = (string)obj["tag"];
2066 StencilTest.Tag tagType;
2067 if (tag == "StencilTest") {
2068 tagType = StencilTest.Tag.StencilTest;
2069 data.StencilTest tv = new data.StencilTest();
2070 tv.stencilComparision = (global::LambdaCube.IR.ComparisonFunction)fromJSON(Type.ComparisonFunction,obj["stencilComparision"]);
2071 tv.stencilReference = (int)fromJSON(Type.Int32,obj["stencilReference"]);
2072 tv.stencilMask = (uint)fromJSON(Type.Word32,obj["stencilMask"]);
2073 return tv;
2074 }
2075 else throw new Exception("unknown constructor: " + tag);
2076 StencilTest o = new StencilTest();
2077 o.tag = tagType;
2078 return o;
2079 }
2080 case Type.StencilTests: {
2081 string tag = (string)obj["tag"];
2082 StencilTests.Tag tagType;
2083 if (tag == "StencilTests") {
2084 tagType = StencilTests.Tag.StencilTests;
2085 data.StencilTests tv = new data.StencilTests();
2086 tv._0 = (global::LambdaCube.IR.StencilTest)fromJSON(Type.StencilTest,obj["arg0"]);
2087 tv._1 = (global::LambdaCube.IR.StencilTest)fromJSON(Type.StencilTest,obj["arg1"]);
2088 return tv;
2089 }
2090 else throw new Exception("unknown constructor: " + tag);
2091 StencilTests o = new StencilTests();
2092 o.tag = tagType;
2093 return o;
2094 }
2095 case Type.FetchPrimitive: {
2096 string tag = (string)obj["tag"];
2097 FetchPrimitive.Tag tagType;
2098 if (tag == "Points") {
2099 tagType = FetchPrimitive.Tag.Points;
2100 }
2101 else if (tag == "Lines") {
2102 tagType = FetchPrimitive.Tag.Lines;
2103 }
2104 else if (tag == "Triangles") {
2105 tagType = FetchPrimitive.Tag.Triangles;
2106 }
2107 else if (tag == "LinesAdjacency") {
2108 tagType = FetchPrimitive.Tag.LinesAdjacency;
2109 }
2110 else if (tag == "TrianglesAdjacency") {
2111 tagType = FetchPrimitive.Tag.TrianglesAdjacency;
2112 }
2113 else throw new Exception("unknown constructor: " + tag);
2114 FetchPrimitive o = new FetchPrimitive();
2115 o.tag = tagType;
2116 return o;
2117 }
2118 case Type.OutputPrimitive: {
2119 string tag = (string)obj["tag"];
2120 OutputPrimitive.Tag tagType;
2121 if (tag == "TrianglesOutput") {
2122 tagType = OutputPrimitive.Tag.TrianglesOutput;
2123 }
2124 else if (tag == "LinesOutput") {
2125 tagType = OutputPrimitive.Tag.LinesOutput;
2126 }
2127 else if (tag == "PointsOutput") {
2128 tagType = OutputPrimitive.Tag.PointsOutput;
2129 }
2130 else throw new Exception("unknown constructor: " + tag);
2131 OutputPrimitive o = new OutputPrimitive();
2132 o.tag = tagType;
2133 return o;
2134 }
2135 case Type.ColorArity: {
2136 string tag = (string)obj["tag"];
2137 ColorArity.Tag tagType;
2138 if (tag == "Red") {
2139 tagType = ColorArity.Tag.Red;
2140 }
2141 else if (tag == "RG") {
2142 tagType = ColorArity.Tag.RG;
2143 }
2144 else if (tag == "RGB") {
2145 tagType = ColorArity.Tag.RGB;
2146 }
2147 else if (tag == "RGBA") {
2148 tagType = ColorArity.Tag.RGBA;
2149 }
2150 else throw new Exception("unknown constructor: " + tag);
2151 ColorArity o = new ColorArity();
2152 o.tag = tagType;
2153 return o;
2154 }
2155 case Type.Blending: {
2156 string tag = (string)obj["tag"];
2157 Blending.Tag tagType;
2158 if (tag == "NoBlending") {
2159 tagType = Blending.Tag.NoBlending;
2160 }
2161 else if (tag == "BlendLogicOp") {
2162 tagType = Blending.Tag.BlendLogicOp;
2163 data.BlendLogicOp tv = new data.BlendLogicOp();
2164 tv._0 = (global::LambdaCube.IR.LogicOperation)fromJSON(Type.LogicOperation,obj["arg0"]);
2165 return tv;
2166 }
2167 else if (tag == "Blend") {
2168 tagType = Blending.Tag.Blend;
2169 data.Blend tv = new data.Blend();
2170 tv.colorEqSrc = (global::LambdaCube.IR.BlendEquation)fromJSON(Type.BlendEquation,obj["colorEqSrc"]);
2171 tv.alphaEqSrc = (global::LambdaCube.IR.BlendEquation)fromJSON(Type.BlendEquation,obj["alphaEqSrc"]);
2172 tv.colorFSrc = (global::LambdaCube.IR.BlendingFactor)fromJSON(Type.BlendingFactor,obj["colorFSrc"]);
2173 tv.colorFDst = (global::LambdaCube.IR.BlendingFactor)fromJSON(Type.BlendingFactor,obj["colorFDst"]);
2174 tv.alphaFSrc = (global::LambdaCube.IR.BlendingFactor)fromJSON(Type.BlendingFactor,obj["alphaFSrc"]);
2175 tv.alphaFDst = (global::LambdaCube.IR.BlendingFactor)fromJSON(Type.BlendingFactor,obj["alphaFDst"]);
2176 tv.color = (V4<float>)fromJSON(Type.V4_Float,obj["color"]);
2177 return tv;
2178 }
2179 else throw new Exception("unknown constructor: " + tag);
2180 Blending o = new Blending();
2181 o.tag = tagType;
2182 return o;
2183 }
2184 case Type.RasterContext: {
2185 string tag = (string)obj["tag"];
2186 RasterContext.Tag tagType;
2187 if (tag == "PointCtx") {
2188 tagType = RasterContext.Tag.PointCtx;
2189 data.PointCtx tv = new data.PointCtx();
2190 tv._0 = (global::LambdaCube.IR.PointSize)fromJSON(Type.PointSize,obj["arg0"]);
2191 tv._1 = (float)fromJSON(Type.Float,obj["arg1"]);
2192 tv._2 = (global::LambdaCube.IR.PointSpriteCoordOrigin)fromJSON(Type.PointSpriteCoordOrigin,obj["arg2"]);
2193 return tv;
2194 }
2195 else if (tag == "LineCtx") {
2196 tagType = RasterContext.Tag.LineCtx;
2197 data.LineCtx tv = new data.LineCtx();
2198 tv._0 = (float)fromJSON(Type.Float,obj["arg0"]);
2199 tv._1 = (global::LambdaCube.IR.ProvokingVertex)fromJSON(Type.ProvokingVertex,obj["arg1"]);
2200 return tv;
2201 }
2202 else if (tag == "TriangleCtx") {
2203 tagType = RasterContext.Tag.TriangleCtx;
2204 data.TriangleCtx tv = new data.TriangleCtx();
2205 tv._0 = (global::LambdaCube.IR.CullMode)fromJSON(Type.CullMode,obj["arg0"]);
2206 tv._1 = (global::LambdaCube.IR.PolygonMode)fromJSON(Type.PolygonMode,obj["arg1"]);
2207 tv._2 = (global::LambdaCube.IR.PolygonOffset)fromJSON(Type.PolygonOffset,obj["arg2"]);
2208 tv._3 = (global::LambdaCube.IR.ProvokingVertex)fromJSON(Type.ProvokingVertex,obj["arg3"]);
2209 return tv;
2210 }
2211 else throw new Exception("unknown constructor: " + tag);
2212 RasterContext o = new RasterContext();
2213 o.tag = tagType;
2214 return o;
2215 }
2216 case Type.FragmentOperation: {
2217 string tag = (string)obj["tag"];
2218 FragmentOperation.Tag tagType;
2219 if (tag == "DepthOp") {
2220 tagType = FragmentOperation.Tag.DepthOp;
2221 data.DepthOp tv = new data.DepthOp();
2222 tv._0 = (global::LambdaCube.IR.ComparisonFunction)fromJSON(Type.ComparisonFunction,obj["arg0"]);
2223 tv._1 = (bool)fromJSON(Type.Bool,obj["arg1"]);
2224 return tv;
2225 }
2226 else if (tag == "StencilOp") {
2227 tagType = FragmentOperation.Tag.StencilOp;
2228 data.StencilOp tv = new data.StencilOp();
2229 tv._0 = (global::LambdaCube.IR.StencilTests)fromJSON(Type.StencilTests,obj["arg0"]);
2230 tv._1 = (global::LambdaCube.IR.StencilOps)fromJSON(Type.StencilOps,obj["arg1"]);
2231 tv._2 = (global::LambdaCube.IR.StencilOps)fromJSON(Type.StencilOps,obj["arg2"]);
2232 return tv;
2233 }
2234 else if (tag == "ColorOp") {
2235 tagType = FragmentOperation.Tag.ColorOp;
2236 data.ColorOp tv = new data.ColorOp();
2237 tv._0 = (global::LambdaCube.IR.Blending)fromJSON(Type.Blending,obj["arg0"]);
2238 tv._1 = (global::LambdaCube.IR.Value)fromJSON(Type.Value,obj["arg1"]);
2239 return tv;
2240 }
2241 else throw new Exception("unknown constructor: " + tag);
2242 FragmentOperation o = new FragmentOperation();
2243 o.tag = tagType;
2244 return o;
2245 }
2246 case Type.AccumulationContext: {
2247 string tag = (string)obj["tag"];
2248 AccumulationContext.Tag tagType;
2249 if (tag == "AccumulationContext") {
2250 tagType = AccumulationContext.Tag.AccumulationContext;
2251 data.AccumulationContext tv = new data.AccumulationContext();
2252 tv.accViewportName = (Maybe<string>)fromJSON(Type.Maybe_String,obj["accViewportName"]);
2253 tv.accOperations = (List<global::LambdaCube.IR.FragmentOperation>)fromJSON(Type.List_FragmentOperation,obj["accOperations"]);
2254 return tv;
2255 }
2256 else throw new Exception("unknown constructor: " + tag);
2257 AccumulationContext o = new AccumulationContext();
2258 o.tag = tagType;
2259 return o;
2260 }
2261 case Type.TextureDataType: {
2262 string tag = (string)obj["tag"];
2263 TextureDataType.Tag tagType;
2264 if (tag == "FloatT") {
2265 tagType = TextureDataType.Tag.FloatT;
2266 data.FloatT tv = new data.FloatT();
2267 tv._0 = (global::LambdaCube.IR.ColorArity)fromJSON(Type.ColorArity,obj["arg0"]);
2268 return tv;
2269 }
2270 else if (tag == "IntT") {
2271 tagType = TextureDataType.Tag.IntT;
2272 data.IntT tv = new data.IntT();
2273 tv._0 = (global::LambdaCube.IR.ColorArity)fromJSON(Type.ColorArity,obj["arg0"]);
2274 return tv;
2275 }
2276 else if (tag == "WordT") {
2277 tagType = TextureDataType.Tag.WordT;
2278 data.WordT tv = new data.WordT();
2279 tv._0 = (global::LambdaCube.IR.ColorArity)fromJSON(Type.ColorArity,obj["arg0"]);
2280 return tv;
2281 }
2282 else if (tag == "ShadowT") {
2283 tagType = TextureDataType.Tag.ShadowT;
2284 }
2285 else throw new Exception("unknown constructor: " + tag);
2286 TextureDataType o = new TextureDataType();
2287 o.tag = tagType;
2288 return o;
2289 }
2290 case Type.TextureType: {
2291 string tag = (string)obj["tag"];
2292 TextureType.Tag tagType;
2293 if (tag == "Texture1D") {
2294 tagType = TextureType.Tag.Texture1D;
2295 data.Texture1D tv = new data.Texture1D();
2296 tv._0 = (global::LambdaCube.IR.TextureDataType)fromJSON(Type.TextureDataType,obj["arg0"]);
2297 tv._1 = (int)fromJSON(Type.Int,obj["arg1"]);
2298 return tv;
2299 }
2300 else if (tag == "Texture2D") {
2301 tagType = TextureType.Tag.Texture2D;
2302 data.Texture2D tv = new data.Texture2D();
2303 tv._0 = (global::LambdaCube.IR.TextureDataType)fromJSON(Type.TextureDataType,obj["arg0"]);
2304 tv._1 = (int)fromJSON(Type.Int,obj["arg1"]);
2305 return tv;
2306 }
2307 else if (tag == "Texture3D") {
2308 tagType = TextureType.Tag.Texture3D;
2309 data.Texture3D tv = new data.Texture3D();
2310 tv._0 = (global::LambdaCube.IR.TextureDataType)fromJSON(Type.TextureDataType,obj["arg0"]);
2311 return tv;
2312 }
2313 else if (tag == "TextureCube") {
2314 tagType = TextureType.Tag.TextureCube;
2315 data.TextureCube tv = new data.TextureCube();
2316 tv._0 = (global::LambdaCube.IR.TextureDataType)fromJSON(Type.TextureDataType,obj["arg0"]);
2317 return tv;
2318 }
2319 else if (tag == "TextureRect") {
2320 tagType = TextureType.Tag.TextureRect;
2321 data.TextureRect tv = new data.TextureRect();
2322 tv._0 = (global::LambdaCube.IR.TextureDataType)fromJSON(Type.TextureDataType,obj["arg0"]);
2323 return tv;
2324 }
2325 else if (tag == "Texture2DMS") {
2326 tagType = TextureType.Tag.Texture2DMS;
2327 data.Texture2DMS tv = new data.Texture2DMS();
2328 tv._0 = (global::LambdaCube.IR.TextureDataType)fromJSON(Type.TextureDataType,obj["arg0"]);
2329 tv._1 = (int)fromJSON(Type.Int,obj["arg1"]);
2330 tv._2 = (int)fromJSON(Type.Int,obj["arg2"]);
2331 tv._3 = (bool)fromJSON(Type.Bool,obj["arg3"]);
2332 return tv;
2333 }
2334 else if (tag == "TextureBuffer") {
2335 tagType = TextureType.Tag.TextureBuffer;
2336 data.TextureBuffer tv = new data.TextureBuffer();
2337 tv._0 = (global::LambdaCube.IR.TextureDataType)fromJSON(Type.TextureDataType,obj["arg0"]);
2338 return tv;
2339 }
2340 else throw new Exception("unknown constructor: " + tag);
2341 TextureType o = new TextureType();
2342 o.tag = tagType;
2343 return o;
2344 }
2345 case Type.MipMap: {
2346 string tag = (string)obj["tag"];
2347 MipMap.Tag tagType;
2348 if (tag == "Mip") {
2349 tagType = MipMap.Tag.Mip;
2350 data.Mip tv = new data.Mip();
2351 tv._0 = (int)fromJSON(Type.Int,obj["arg0"]);
2352 tv._1 = (int)fromJSON(Type.Int,obj["arg1"]);
2353 return tv;
2354 }
2355 else if (tag == "NoMip") {
2356 tagType = MipMap.Tag.NoMip;
2357 }
2358 else if (tag == "AutoMip") {
2359 tagType = MipMap.Tag.AutoMip;
2360 data.AutoMip tv = new data.AutoMip();
2361 tv._0 = (int)fromJSON(Type.Int,obj["arg0"]);
2362 tv._1 = (int)fromJSON(Type.Int,obj["arg1"]);
2363 return tv;
2364 }
2365 else throw new Exception("unknown constructor: " + tag);
2366 MipMap o = new MipMap();
2367 o.tag = tagType;
2368 return o;
2369 }
2370 case Type.Filter: {
2371 string tag = (string)obj["tag"];
2372 Filter.Tag tagType;
2373 if (tag == "Nearest") {
2374 tagType = Filter.Tag.Nearest;
2375 }
2376 else if (tag == "Linear") {
2377 tagType = Filter.Tag.Linear;
2378 }
2379 else if (tag == "NearestMipmapNearest") {
2380 tagType = Filter.Tag.NearestMipmapNearest;
2381 }
2382 else if (tag == "NearestMipmapLinear") {
2383 tagType = Filter.Tag.NearestMipmapLinear;
2384 }
2385 else if (tag == "LinearMipmapNearest") {
2386 tagType = Filter.Tag.LinearMipmapNearest;
2387 }
2388 else if (tag == "LinearMipmapLinear") {
2389 tagType = Filter.Tag.LinearMipmapLinear;
2390 }
2391 else throw new Exception("unknown constructor: " + tag);
2392 Filter o = new Filter();
2393 o.tag = tagType;
2394 return o;
2395 }
2396 case Type.EdgeMode: {
2397 string tag = (string)obj["tag"];
2398 EdgeMode.Tag tagType;
2399 if (tag == "Repeat") {
2400 tagType = EdgeMode.Tag.Repeat;
2401 }
2402 else if (tag == "MirroredRepeat") {
2403 tagType = EdgeMode.Tag.MirroredRepeat;
2404 }
2405 else if (tag == "ClampToEdge") {
2406 tagType = EdgeMode.Tag.ClampToEdge;
2407 }
2408 else if (tag == "ClampToBorder") {
2409 tagType = EdgeMode.Tag.ClampToBorder;
2410 }
2411 else throw new Exception("unknown constructor: " + tag);
2412 EdgeMode o = new EdgeMode();
2413 o.tag = tagType;
2414 return o;
2415 }
2416 case Type.ImageSemantic: {
2417 string tag = (string)obj["tag"];
2418 ImageSemantic.Tag tagType;
2419 if (tag == "Depth") {
2420 tagType = ImageSemantic.Tag.Depth;
2421 }
2422 else if (tag == "Stencil") {
2423 tagType = ImageSemantic.Tag.Stencil;
2424 }
2425 else if (tag == "Color") {
2426 tagType = ImageSemantic.Tag.Color;
2427 }
2428 else throw new Exception("unknown constructor: " + tag);
2429 ImageSemantic o = new ImageSemantic();
2430 o.tag = tagType;
2431 return o;
2432 }
2433 case Type.ImageRef: {
2434 string tag = (string)obj["tag"];
2435 ImageRef.Tag tagType;
2436 if (tag == "TextureImage") {
2437 tagType = ImageRef.Tag.TextureImage;
2438 data.TextureImage tv = new data.TextureImage();
2439 tv._0 = (int)fromJSON(Type.Int,obj["arg0"]);
2440 tv._1 = (int)fromJSON(Type.Int,obj["arg1"]);
2441 tv._2 = (Maybe<int>)fromJSON(Type.Maybe_Int,obj["arg2"]);
2442 return tv;
2443 }
2444 else if (tag == "Framebuffer") {
2445 tagType = ImageRef.Tag.Framebuffer;
2446 data.Framebuffer tv = new data.Framebuffer();
2447 tv._0 = (global::LambdaCube.IR.ImageSemantic)fromJSON(Type.ImageSemantic,obj["arg0"]);
2448 return tv;
2449 }
2450 else throw new Exception("unknown constructor: " + tag);
2451 ImageRef o = new ImageRef();
2452 o.tag = tagType;
2453 return o;
2454 }
2455 case Type.ClearImage: {
2456 string tag = (string)obj["tag"];
2457 ClearImage.Tag tagType;
2458 if (tag == "ClearImage") {
2459 tagType = ClearImage.Tag.ClearImage;
2460 data.ClearImage tv = new data.ClearImage();
2461 tv.imageSemantic = (global::LambdaCube.IR.ImageSemantic)fromJSON(Type.ImageSemantic,obj["imageSemantic"]);
2462 tv.clearValue = (global::LambdaCube.IR.Value)fromJSON(Type.Value,obj["clearValue"]);
2463 return tv;
2464 }
2465 else throw new Exception("unknown constructor: " + tag);
2466 ClearImage o = new ClearImage();
2467 o.tag = tagType;
2468 return o;
2469 }
2470 case Type.Command: {
2471 string tag = (string)obj["tag"];
2472 Command.Tag tagType;
2473 if (tag == "SetRasterContext") {
2474 tagType = Command.Tag.SetRasterContext;
2475 data.SetRasterContext tv = new data.SetRasterContext();
2476 tv._0 = (global::LambdaCube.IR.RasterContext)fromJSON(Type.RasterContext,obj["arg0"]);
2477 return tv;
2478 }
2479 else if (tag == "SetAccumulationContext") {
2480 tagType = Command.Tag.SetAccumulationContext;
2481 data.SetAccumulationContext tv = new data.SetAccumulationContext();
2482 tv._0 = (global::LambdaCube.IR.AccumulationContext)fromJSON(Type.AccumulationContext,obj["arg0"]);
2483 return tv;
2484 }
2485 else if (tag == "SetRenderTarget") {
2486 tagType = Command.Tag.SetRenderTarget;
2487 data.SetRenderTarget tv = new data.SetRenderTarget();
2488 tv._0 = (int)fromJSON(Type.Int,obj["arg0"]);
2489 return tv;
2490 }
2491 else if (tag == "SetProgram") {
2492 tagType = Command.Tag.SetProgram;
2493 data.SetProgram tv = new data.SetProgram();
2494 tv._0 = (int)fromJSON(Type.Int,obj["arg0"]);
2495 return tv;
2496 }
2497 else if (tag == "SetSamplerUniform") {
2498 tagType = Command.Tag.SetSamplerUniform;
2499 data.SetSamplerUniform tv = new data.SetSamplerUniform();
2500 tv._0 = (string)fromJSON(Type.String,obj["arg0"]);
2501 tv._1 = (int)fromJSON(Type.Int,obj["arg1"]);
2502 return tv;
2503 }
2504 else if (tag == "SetTexture") {
2505 tagType = Command.Tag.SetTexture;
2506 data.SetTexture tv = new data.SetTexture();
2507 tv._0 = (int)fromJSON(Type.Int,obj["arg0"]);
2508 tv._1 = (int)fromJSON(Type.Int,obj["arg1"]);
2509 return tv;
2510 }
2511 else if (tag == "SetSampler") {
2512 tagType = Command.Tag.SetSampler;
2513 data.SetSampler tv = new data.SetSampler();
2514 tv._0 = (int)fromJSON(Type.Int,obj["arg0"]);
2515 tv._1 = (Maybe<int>)fromJSON(Type.Maybe_Int,obj["arg1"]);
2516 return tv;
2517 }
2518 else if (tag == "RenderSlot") {
2519 tagType = Command.Tag.RenderSlot;
2520 data.RenderSlot tv = new data.RenderSlot();
2521 tv._0 = (int)fromJSON(Type.Int,obj["arg0"]);
2522 return tv;
2523 }
2524 else if (tag == "RenderStream") {
2525 tagType = Command.Tag.RenderStream;
2526 data.RenderStream tv = new data.RenderStream();
2527 tv._0 = (int)fromJSON(Type.Int,obj["arg0"]);
2528 return tv;
2529 }
2530 else if (tag == "ClearRenderTarget") {
2531 tagType = Command.Tag.ClearRenderTarget;
2532 data.ClearRenderTarget tv = new data.ClearRenderTarget();
2533 tv._0 = (List<global::LambdaCube.IR.ClearImage>)fromJSON(Type.Array_ClearImage,obj["arg0"]);
2534 return tv;
2535 }
2536 else if (tag == "GenerateMipMap") {
2537 tagType = Command.Tag.GenerateMipMap;
2538 data.GenerateMipMap tv = new data.GenerateMipMap();
2539 tv._0 = (int)fromJSON(Type.Int,obj["arg0"]);
2540 return tv;
2541 }
2542 else if (tag == "SaveImage") {
2543 tagType = Command.Tag.SaveImage;
2544 data.SaveImage tv = new data.SaveImage();
2545 tv._0 = (int)fromJSON(Type.Int,obj["arg0"]);
2546 tv._1 = (global::LambdaCube.IR.ImageRef)fromJSON(Type.ImageRef,obj["arg1"]);
2547 return tv;
2548 }
2549 else if (tag == "LoadImage") {
2550 tagType = Command.Tag.LoadImage;
2551 data.LoadImage tv = new data.LoadImage();
2552 tv._0 = (global::LambdaCube.IR.ImageRef)fromJSON(Type.ImageRef,obj["arg0"]);
2553 tv._1 = (int)fromJSON(Type.Int,obj["arg1"]);
2554 return tv;
2555 }
2556 else throw new Exception("unknown constructor: " + tag);
2557 Command o = new Command();
2558 o.tag = tagType;
2559 return o;
2560 }
2561 case Type.SamplerDescriptor: {
2562 string tag = (string)obj["tag"];
2563 SamplerDescriptor.Tag tagType;
2564 if (tag == "SamplerDescriptor") {
2565 tagType = SamplerDescriptor.Tag.SamplerDescriptor;
2566 data.SamplerDescriptor tv = new data.SamplerDescriptor();
2567 tv.samplerWrapS = (global::LambdaCube.IR.EdgeMode)fromJSON(Type.EdgeMode,obj["samplerWrapS"]);
2568 tv.samplerWrapT = (Maybe<global::LambdaCube.IR.EdgeMode>)fromJSON(Type.Maybe_EdgeMode,obj["samplerWrapT"]);
2569 tv.samplerWrapR = (Maybe<global::LambdaCube.IR.EdgeMode>)fromJSON(Type.Maybe_EdgeMode,obj["samplerWrapR"]);
2570 tv.samplerMinFilter = (global::LambdaCube.IR.Filter)fromJSON(Type.Filter,obj["samplerMinFilter"]);
2571 tv.samplerMagFilter = (global::LambdaCube.IR.Filter)fromJSON(Type.Filter,obj["samplerMagFilter"]);
2572 tv.samplerBorderColor = (global::LambdaCube.IR.Value)fromJSON(Type.Value,obj["samplerBorderColor"]);
2573 tv.samplerMinLod = (Maybe<float>)fromJSON(Type.Maybe_Float,obj["samplerMinLod"]);
2574 tv.samplerMaxLod = (Maybe<float>)fromJSON(Type.Maybe_Float,obj["samplerMaxLod"]);
2575 tv.samplerLodBias = (float)fromJSON(Type.Float,obj["samplerLodBias"]);
2576 tv.samplerCompareFunc = (Maybe<global::LambdaCube.IR.ComparisonFunction>)fromJSON(Type.Maybe_ComparisonFunction,obj["samplerCompareFunc"]);
2577 return tv;
2578 }
2579 else throw new Exception("unknown constructor: " + tag);
2580 SamplerDescriptor o = new SamplerDescriptor();
2581 o.tag = tagType;
2582 return o;
2583 }
2584 case Type.TextureDescriptor: {
2585 string tag = (string)obj["tag"];
2586 TextureDescriptor.Tag tagType;
2587 if (tag == "TextureDescriptor") {
2588 tagType = TextureDescriptor.Tag.TextureDescriptor;
2589 data.TextureDescriptor tv = new data.TextureDescriptor();
2590 tv.textureType = (global::LambdaCube.IR.TextureType)fromJSON(Type.TextureType,obj["textureType"]);
2591 tv.textureSize = (global::LambdaCube.IR.Value)fromJSON(Type.Value,obj["textureSize"]);
2592 tv.textureSemantic = (global::LambdaCube.IR.ImageSemantic)fromJSON(Type.ImageSemantic,obj["textureSemantic"]);
2593 tv.textureSampler = (global::LambdaCube.IR.SamplerDescriptor)fromJSON(Type.SamplerDescriptor,obj["textureSampler"]);
2594 tv.textureBaseLevel = (int)fromJSON(Type.Int,obj["textureBaseLevel"]);
2595 tv.textureMaxLevel = (int)fromJSON(Type.Int,obj["textureMaxLevel"]);
2596 return tv;
2597 }
2598 else throw new Exception("unknown constructor: " + tag);
2599 TextureDescriptor o = new TextureDescriptor();
2600 o.tag = tagType;
2601 return o;
2602 }
2603 case Type.Parameter: {
2604 string tag = (string)obj["tag"];
2605 Parameter.Tag tagType;
2606 if (tag == "Parameter") {
2607 tagType = Parameter.Tag.Parameter;
2608 data.Parameter tv = new data.Parameter();
2609 tv.name = (string)fromJSON(Type.String,obj["name"]);
2610 tv.ty = (global::LambdaCube.IR.InputType)fromJSON(Type.InputType,obj["ty"]);
2611 return tv;
2612 }
2613 else throw new Exception("unknown constructor: " + tag);
2614 Parameter o = new Parameter();
2615 o.tag = tagType;
2616 return o;
2617 }
2618 case Type.Program: {
2619 string tag = (string)obj["tag"];
2620 Program.Tag tagType;
2621 if (tag == "Program") {
2622 tagType = Program.Tag.Program;
2623 data.Program tv = new data.Program();
2624 tv.programUniforms = (Dictionary<string, global::LambdaCube.IR.InputType>)fromJSON(Type.Map_String_InputType,obj["programUniforms"]);
2625 tv.programStreams = (Dictionary<string, global::LambdaCube.IR.Parameter>)fromJSON(Type.Map_String_Parameter,obj["programStreams"]);
2626 tv.programInTextures = (Dictionary<string, global::LambdaCube.IR.InputType>)fromJSON(Type.Map_String_InputType,obj["programInTextures"]);
2627 tv.programOutput = (List<global::LambdaCube.IR.Parameter>)fromJSON(Type.Array_Parameter,obj["programOutput"]);
2628 tv.vertexShader = (string)fromJSON(Type.String,obj["vertexShader"]);
2629 tv.geometryShader = (Maybe<string>)fromJSON(Type.Maybe_String,obj["geometryShader"]);
2630 tv.fragmentShader = (string)fromJSON(Type.String,obj["fragmentShader"]);
2631 return tv;
2632 }
2633 else throw new Exception("unknown constructor: " + tag);
2634 Program o = new Program();
2635 o.tag = tagType;
2636 return o;
2637 }
2638 case Type.Slot: {
2639 string tag = (string)obj["tag"];
2640 Slot.Tag tagType;
2641 if (tag == "Slot") {
2642 tagType = Slot.Tag.Slot;
2643 data.Slot tv = new data.Slot();
2644 tv.slotName = (string)fromJSON(Type.String,obj["slotName"]);
2645 tv.slotStreams = (Dictionary<string, global::LambdaCube.IR.InputType>)fromJSON(Type.Map_String_InputType,obj["slotStreams"]);
2646 tv.slotUniforms = (Dictionary<string, global::LambdaCube.IR.InputType>)fromJSON(Type.Map_String_InputType,obj["slotUniforms"]);
2647 tv.slotPrimitive = (global::LambdaCube.IR.FetchPrimitive)fromJSON(Type.FetchPrimitive,obj["slotPrimitive"]);
2648 tv.slotPrograms = (List<int>)fromJSON(Type.Array_Int,obj["slotPrograms"]);
2649 return tv;
2650 }
2651 else throw new Exception("unknown constructor: " + tag);
2652 Slot o = new Slot();
2653 o.tag = tagType;
2654 return o;
2655 }
2656 case Type.StreamData: {
2657 string tag = (string)obj["tag"];
2658 StreamData.Tag tagType;
2659 if (tag == "StreamData") {
2660 tagType = StreamData.Tag.StreamData;
2661 data.StreamData tv = new data.StreamData();
2662 tv.streamData = (Dictionary<string, global::LambdaCube.IR.ArrayValue>)fromJSON(Type.Map_String_ArrayValue,obj["streamData"]);
2663 tv.streamType = (Dictionary<string, global::LambdaCube.IR.InputType>)fromJSON(Type.Map_String_InputType,obj["streamType"]);
2664 tv.streamPrimitive = (global::LambdaCube.IR.FetchPrimitive)fromJSON(Type.FetchPrimitive,obj["streamPrimitive"]);
2665 tv.streamPrograms = (List<int>)fromJSON(Type.Array_Int,obj["streamPrograms"]);
2666 return tv;
2667 }
2668 else throw new Exception("unknown constructor: " + tag);
2669 StreamData o = new StreamData();
2670 o.tag = tagType;
2671 return o;
2672 }
2673 case Type.TargetItem: {
2674 string tag = (string)obj["tag"];
2675 TargetItem.Tag tagType;
2676 if (tag == "TargetItem") {
2677 tagType = TargetItem.Tag.TargetItem;
2678 data.TargetItem tv = new data.TargetItem();
2679 tv.targetSemantic = (global::LambdaCube.IR.ImageSemantic)fromJSON(Type.ImageSemantic,obj["targetSemantic"]);
2680 tv.targetRef = (Maybe<global::LambdaCube.IR.ImageRef>)fromJSON(Type.Maybe_ImageRef,obj["targetRef"]);
2681 return tv;
2682 }
2683 else throw new Exception("unknown constructor: " + tag);
2684 TargetItem o = new TargetItem();
2685 o.tag = tagType;
2686 return o;
2687 }
2688 case Type.RenderTarget: {
2689 string tag = (string)obj["tag"];
2690 RenderTarget.Tag tagType;
2691 if (tag == "RenderTarget") {
2692 tagType = RenderTarget.Tag.RenderTarget;
2693 data.RenderTarget tv = new data.RenderTarget();
2694 tv.renderTargets = (List<global::LambdaCube.IR.TargetItem>)fromJSON(Type.Array_TargetItem,obj["renderTargets"]);
2695 return tv;
2696 }
2697 else throw new Exception("unknown constructor: " + tag);
2698 RenderTarget o = new RenderTarget();
2699 o.tag = tagType;
2700 return o;
2701 }
2702 case Type.Backend: {
2703 string tag = (string)obj["tag"];
2704 Backend.Tag tagType;
2705 if (tag == "WebGL1") {
2706 tagType = Backend.Tag.WebGL1;
2707 }
2708 else if (tag == "OpenGL33") {
2709 tagType = Backend.Tag.OpenGL33;
2710 }
2711 else throw new Exception("unknown constructor: " + tag);
2712 Backend o = new Backend();
2713 o.tag = tagType;
2714 return o;
2715 }
2716 case Type.Pipeline: {
2717 string tag = (string)obj["tag"];
2718 Pipeline.Tag tagType;
2719 if (tag == "Pipeline") {
2720 tagType = Pipeline.Tag.Pipeline;
2721 data.Pipeline tv = new data.Pipeline();
2722 tv.info = (string)fromJSON(Type.String,obj["info"]);
2723 tv.backend = (global::LambdaCube.IR.Backend)fromJSON(Type.Backend,obj["backend"]);
2724 tv.textures = (List<global::LambdaCube.IR.TextureDescriptor>)fromJSON(Type.Array_TextureDescriptor,obj["textures"]);
2725 tv.samplers = (List<global::LambdaCube.IR.SamplerDescriptor>)fromJSON(Type.Array_SamplerDescriptor,obj["samplers"]);
2726 tv.targets = (List<global::LambdaCube.IR.RenderTarget>)fromJSON(Type.Array_RenderTarget,obj["targets"]);
2727 tv.programs = (List<global::LambdaCube.IR.Program>)fromJSON(Type.Array_Program,obj["programs"]);
2728 tv.slots = (List<global::LambdaCube.IR.Slot>)fromJSON(Type.Array_Slot,obj["slots"]);
2729 tv.streams = (List<global::LambdaCube.IR.StreamData>)fromJSON(Type.Array_StreamData,obj["streams"]);
2730 tv.commands = (List<global::LambdaCube.IR.Command>)fromJSON(Type.Array_Command,obj["commands"]);
2731 return tv;
2732 }
2733 else throw new Exception("unknown constructor: " + tag);
2734 Pipeline o = new Pipeline();
2735 o.tag = tagType;
2736 return o;
2737 }
2738 }
2739 throw new Exception("unknown type");
2740 return null;
2741 }
2742
2743 JToken toJSON(ArrayValue v) {
2744 var obj = new JObject();
2745 switch (v.tag) {
2746 case ArrayValue.Tag.VBoolArray:
2747 obj["tag"] = "VBoolArray";
2748 {
2749 var tv = (data.VBoolArray)v;
2750 obj["arg0"] = toJSON(tv._0);
2751 }
2752 break;
2753 case ArrayValue.Tag.VIntArray:
2754 obj["tag"] = "VIntArray";
2755 {
2756 var tv = (data.VIntArray)v;
2757 obj["arg0"] = toJSON(tv._0);
2758 }
2759 break;
2760 case ArrayValue.Tag.VWordArray:
2761 obj["tag"] = "VWordArray";
2762 {
2763 var tv = (data.VWordArray)v;
2764 obj["arg0"] = toJSON(tv._0);
2765 }
2766 break;
2767 case ArrayValue.Tag.VFloatArray:
2768 obj["tag"] = "VFloatArray";
2769 {
2770 var tv = (data.VFloatArray)v;
2771 obj["arg0"] = toJSON(tv._0);
2772 }
2773 break;
2774 }
2775 return obj;
2776 }
2777 JToken toJSON(Value v) {
2778 var obj = new JObject();
2779 switch (v.tag) {
2780 case Value.Tag.VBool:
2781 obj["tag"] = "VBool";
2782 {
2783 var tv = (data.VBool)v;
2784 obj["arg0"] = toJSON(tv._0);
2785 }
2786 break;
2787 case Value.Tag.VV2B:
2788 obj["tag"] = "VV2B";
2789 {
2790 var tv = (data.VV2B)v;
2791 obj["arg0"] = toJSON(tv._0);
2792 }
2793 break;
2794 case Value.Tag.VV3B:
2795 obj["tag"] = "VV3B";
2796 {
2797 var tv = (data.VV3B)v;
2798 obj["arg0"] = toJSON(tv._0);
2799 }
2800 break;
2801 case Value.Tag.VV4B:
2802 obj["tag"] = "VV4B";
2803 {
2804 var tv = (data.VV4B)v;
2805 obj["arg0"] = toJSON(tv._0);
2806 }
2807 break;
2808 case Value.Tag.VWord:
2809 obj["tag"] = "VWord";
2810 {
2811 var tv = (data.VWord)v;
2812 obj["arg0"] = toJSON(tv._0);
2813 }
2814 break;
2815 case Value.Tag.VV2U:
2816 obj["tag"] = "VV2U";
2817 {
2818 var tv = (data.VV2U)v;
2819 obj["arg0"] = toJSON(tv._0);
2820 }
2821 break;
2822 case Value.Tag.VV3U:
2823 obj["tag"] = "VV3U";
2824 {
2825 var tv = (data.VV3U)v;
2826 obj["arg0"] = toJSON(tv._0);
2827 }
2828 break;
2829 case Value.Tag.VV4U:
2830 obj["tag"] = "VV4U";
2831 {
2832 var tv = (data.VV4U)v;
2833 obj["arg0"] = toJSON(tv._0);
2834 }
2835 break;
2836 case Value.Tag.VInt:
2837 obj["tag"] = "VInt";
2838 {
2839 var tv = (data.VInt)v;
2840 obj["arg0"] = toJSON(tv._0);
2841 }
2842 break;
2843 case Value.Tag.VV2I:
2844 obj["tag"] = "VV2I";
2845 {
2846 var tv = (data.VV2I)v;
2847 obj["arg0"] = toJSON(tv._0);
2848 }
2849 break;
2850 case Value.Tag.VV3I:
2851 obj["tag"] = "VV3I";
2852 {
2853 var tv = (data.VV3I)v;
2854 obj["arg0"] = toJSON(tv._0);
2855 }
2856 break;
2857 case Value.Tag.VV4I:
2858 obj["tag"] = "VV4I";
2859 {
2860 var tv = (data.VV4I)v;
2861 obj["arg0"] = toJSON(tv._0);
2862 }
2863 break;
2864 case Value.Tag.VFloat:
2865 obj["tag"] = "VFloat";
2866 {
2867 var tv = (data.VFloat)v;
2868 obj["arg0"] = toJSON(tv._0);
2869 }
2870 break;
2871 case Value.Tag.VV2F:
2872 obj["tag"] = "VV2F";
2873 {
2874 var tv = (data.VV2F)v;
2875 obj["arg0"] = toJSON(tv._0);
2876 }
2877 break;
2878 case Value.Tag.VV3F:
2879 obj["tag"] = "VV3F";
2880 {
2881 var tv = (data.VV3F)v;
2882 obj["arg0"] = toJSON(tv._0);
2883 }
2884 break;
2885 case Value.Tag.VV4F:
2886 obj["tag"] = "VV4F";
2887 {
2888 var tv = (data.VV4F)v;
2889 obj["arg0"] = toJSON(tv._0);
2890 }
2891 break;
2892 case Value.Tag.VM22F:
2893 obj["tag"] = "VM22F";
2894 {
2895 var tv = (data.VM22F)v;
2896 obj["arg0"] = toJSON(tv._0);
2897 }
2898 break;
2899 case Value.Tag.VM23F:
2900 obj["tag"] = "VM23F";
2901 {
2902 var tv = (data.VM23F)v;
2903 obj["arg0"] = toJSON(tv._0);
2904 }
2905 break;
2906 case Value.Tag.VM24F:
2907 obj["tag"] = "VM24F";
2908 {
2909 var tv = (data.VM24F)v;
2910 obj["arg0"] = toJSON(tv._0);
2911 }
2912 break;
2913 case Value.Tag.VM32F:
2914 obj["tag"] = "VM32F";
2915 {
2916 var tv = (data.VM32F)v;
2917 obj["arg0"] = toJSON(tv._0);
2918 }
2919 break;
2920 case Value.Tag.VM33F:
2921 obj["tag"] = "VM33F";
2922 {
2923 var tv = (data.VM33F)v;
2924 obj["arg0"] = toJSON(tv._0);
2925 }
2926 break;
2927 case Value.Tag.VM34F:
2928 obj["tag"] = "VM34F";
2929 {
2930 var tv = (data.VM34F)v;
2931 obj["arg0"] = toJSON(tv._0);
2932 }
2933 break;
2934 case Value.Tag.VM42F:
2935 obj["tag"] = "VM42F";
2936 {
2937 var tv = (data.VM42F)v;
2938 obj["arg0"] = toJSON(tv._0);
2939 }
2940 break;
2941 case Value.Tag.VM43F:
2942 obj["tag"] = "VM43F";
2943 {
2944 var tv = (data.VM43F)v;
2945 obj["arg0"] = toJSON(tv._0);
2946 }
2947 break;
2948 case Value.Tag.VM44F:
2949 obj["tag"] = "VM44F";
2950 {
2951 var tv = (data.VM44F)v;
2952 obj["arg0"] = toJSON(tv._0);
2953 }
2954 break;
2955 }
2956 return obj;
2957 }
2958 JToken toJSON(InputType v) {
2959 var obj = new JObject();
2960 switch (v.tag) {
2961 case InputType.Tag.Bool:
2962 obj["tag"] = "Bool";
2963 break;
2964 case InputType.Tag.V2B:
2965 obj["tag"] = "V2B";
2966 break;
2967 case InputType.Tag.V3B:
2968 obj["tag"] = "V3B";
2969 break;
2970 case InputType.Tag.V4B:
2971 obj["tag"] = "V4B";
2972 break;
2973 case InputType.Tag.Word:
2974 obj["tag"] = "Word";
2975 break;
2976 case InputType.Tag.V2U:
2977 obj["tag"] = "V2U";
2978 break;
2979 case InputType.Tag.V3U:
2980 obj["tag"] = "V3U";
2981 break;
2982 case InputType.Tag.V4U:
2983 obj["tag"] = "V4U";
2984 break;
2985 case InputType.Tag.Int:
2986 obj["tag"] = "Int";
2987 break;
2988 case InputType.Tag.V2I:
2989 obj["tag"] = "V2I";
2990 break;
2991 case InputType.Tag.V3I:
2992 obj["tag"] = "V3I";
2993 break;
2994 case InputType.Tag.V4I:
2995 obj["tag"] = "V4I";
2996 break;
2997 case InputType.Tag.Float:
2998 obj["tag"] = "Float";
2999 break;
3000 case InputType.Tag.V2F:
3001 obj["tag"] = "V2F";
3002 break;
3003 case InputType.Tag.V3F:
3004 obj["tag"] = "V3F";
3005 break;
3006 case InputType.Tag.V4F:
3007 obj["tag"] = "V4F";
3008 break;
3009 case InputType.Tag.M22F:
3010 obj["tag"] = "M22F";
3011 break;
3012 case InputType.Tag.M23F:
3013 obj["tag"] = "M23F";
3014 break;
3015 case InputType.Tag.M24F:
3016 obj["tag"] = "M24F";
3017 break;
3018 case InputType.Tag.M32F:
3019 obj["tag"] = "M32F";
3020 break;
3021 case InputType.Tag.M33F:
3022 obj["tag"] = "M33F";
3023 break;
3024 case InputType.Tag.M34F:
3025 obj["tag"] = "M34F";
3026 break;
3027 case InputType.Tag.M42F:
3028 obj["tag"] = "M42F";
3029 break;
3030 case InputType.Tag.M43F:
3031 obj["tag"] = "M43F";
3032 break;
3033 case InputType.Tag.M44F:
3034 obj["tag"] = "M44F";
3035 break;
3036 case InputType.Tag.STexture1D:
3037 obj["tag"] = "STexture1D";
3038 break;
3039 case InputType.Tag.STexture2D:
3040 obj["tag"] = "STexture2D";
3041 break;
3042 case InputType.Tag.STextureCube:
3043 obj["tag"] = "STextureCube";
3044 break;
3045 case InputType.Tag.STexture1DArray:
3046 obj["tag"] = "STexture1DArray";
3047 break;
3048 case InputType.Tag.STexture2DArray:
3049 obj["tag"] = "STexture2DArray";
3050 break;
3051 case InputType.Tag.STexture2DRect:
3052 obj["tag"] = "STexture2DRect";
3053 break;
3054 case InputType.Tag.FTexture1D:
3055 obj["tag"] = "FTexture1D";
3056 break;
3057 case InputType.Tag.FTexture2D:
3058 obj["tag"] = "FTexture2D";
3059 break;
3060 case InputType.Tag.FTexture3D:
3061 obj["tag"] = "FTexture3D";
3062 break;
3063 case InputType.Tag.FTextureCube:
3064 obj["tag"] = "FTextureCube";
3065 break;
3066 case InputType.Tag.FTexture1DArray:
3067 obj["tag"] = "FTexture1DArray";
3068 break;
3069 case InputType.Tag.FTexture2DArray:
3070 obj["tag"] = "FTexture2DArray";
3071 break;
3072 case InputType.Tag.FTexture2DMS:
3073 obj["tag"] = "FTexture2DMS";
3074 break;
3075 case InputType.Tag.FTexture2DMSArray:
3076 obj["tag"] = "FTexture2DMSArray";
3077 break;
3078 case InputType.Tag.FTextureBuffer:
3079 obj["tag"] = "FTextureBuffer";
3080 break;
3081 case InputType.Tag.FTexture2DRect:
3082 obj["tag"] = "FTexture2DRect";
3083 break;
3084 case InputType.Tag.ITexture1D:
3085 obj["tag"] = "ITexture1D";
3086 break;
3087 case InputType.Tag.ITexture2D:
3088 obj["tag"] = "ITexture2D";
3089 break;
3090 case InputType.Tag.ITexture3D:
3091 obj["tag"] = "ITexture3D";
3092 break;
3093 case InputType.Tag.ITextureCube:
3094 obj["tag"] = "ITextureCube";
3095 break;
3096 case InputType.Tag.ITexture1DArray:
3097 obj["tag"] = "ITexture1DArray";
3098 break;
3099 case InputType.Tag.ITexture2DArray:
3100 obj["tag"] = "ITexture2DArray";
3101 break;
3102 case InputType.Tag.ITexture2DMS:
3103 obj["tag"] = "ITexture2DMS";
3104 break;
3105 case InputType.Tag.ITexture2DMSArray:
3106 obj["tag"] = "ITexture2DMSArray";
3107 break;
3108 case InputType.Tag.ITextureBuffer:
3109 obj["tag"] = "ITextureBuffer";
3110 break;
3111 case InputType.Tag.ITexture2DRect:
3112 obj["tag"] = "ITexture2DRect";
3113 break;
3114 case InputType.Tag.UTexture1D:
3115 obj["tag"] = "UTexture1D";
3116 break;
3117 case InputType.Tag.UTexture2D:
3118 obj["tag"] = "UTexture2D";
3119 break;
3120 case InputType.Tag.UTexture3D:
3121 obj["tag"] = "UTexture3D";
3122 break;
3123 case InputType.Tag.UTextureCube:
3124 obj["tag"] = "UTextureCube";
3125 break;
3126 case InputType.Tag.UTexture1DArray:
3127 obj["tag"] = "UTexture1DArray";
3128 break;
3129 case InputType.Tag.UTexture2DArray:
3130 obj["tag"] = "UTexture2DArray";
3131 break;
3132 case InputType.Tag.UTexture2DMS:
3133 obj["tag"] = "UTexture2DMS";
3134 break;
3135 case InputType.Tag.UTexture2DMSArray:
3136 obj["tag"] = "UTexture2DMSArray";
3137 break;
3138 case InputType.Tag.UTextureBuffer:
3139 obj["tag"] = "UTextureBuffer";
3140 break;
3141 case InputType.Tag.UTexture2DRect:
3142 obj["tag"] = "UTexture2DRect";
3143 break;
3144 }
3145 return obj;
3146 }
3147 JToken toJSON(PointSpriteCoordOrigin v) {
3148 var obj = new JObject();
3149 switch (v.tag) {
3150 case PointSpriteCoordOrigin.Tag.LowerLeft:
3151 obj["tag"] = "LowerLeft";
3152 break;
3153 case PointSpriteCoordOrigin.Tag.UpperLeft:
3154 obj["tag"] = "UpperLeft";
3155 break;
3156 }
3157 return obj;
3158 }
3159 JToken toJSON(PointSize v) {
3160 var obj = new JObject();
3161 switch (v.tag) {
3162 case PointSize.Tag.PointSize:
3163 obj["tag"] = "PointSize";
3164 {
3165 var tv = (data.PointSize)v;
3166 obj["arg0"] = toJSON(tv._0);
3167 }
3168 break;
3169 case PointSize.Tag.ProgramPointSize:
3170 obj["tag"] = "ProgramPointSize";
3171 break;
3172 }
3173 return obj;
3174 }
3175 JToken toJSON(PolygonOffset v) {
3176 var obj = new JObject();
3177 switch (v.tag) {
3178 case PolygonOffset.Tag.NoOffset:
3179 obj["tag"] = "NoOffset";
3180 break;
3181 case PolygonOffset.Tag.Offset:
3182 obj["tag"] = "Offset";
3183 {
3184 var tv = (data.Offset)v;
3185 obj["arg0"] = toJSON(tv._0);
3186 obj["arg1"] = toJSON(tv._1);
3187 }
3188 break;
3189 }
3190 return obj;
3191 }
3192 JToken toJSON(FrontFace v) {
3193 var obj = new JObject();
3194 switch (v.tag) {
3195 case FrontFace.Tag.CCW:
3196 obj["tag"] = "CCW";
3197 break;
3198 case FrontFace.Tag.CW:
3199 obj["tag"] = "CW";
3200 break;
3201 }
3202 return obj;
3203 }
3204 JToken toJSON(PolygonMode v) {
3205 var obj = new JObject();
3206 switch (v.tag) {
3207 case PolygonMode.Tag.PolygonPoint:
3208 obj["tag"] = "PolygonPoint";
3209 {
3210 var tv = (data.PolygonPoint)v;
3211 obj["arg0"] = toJSON(tv._0);
3212 }
3213 break;
3214 case PolygonMode.Tag.PolygonLine:
3215 obj["tag"] = "PolygonLine";
3216 {
3217 var tv = (data.PolygonLine)v;
3218 obj["arg0"] = toJSON(tv._0);
3219 }
3220 break;
3221 case PolygonMode.Tag.PolygonFill:
3222 obj["tag"] = "PolygonFill";
3223 break;
3224 }
3225 return obj;
3226 }
3227 JToken toJSON(ProvokingVertex v) {
3228 var obj = new JObject();
3229 switch (v.tag) {
3230 case ProvokingVertex.Tag.FirstVertex:
3231 obj["tag"] = "FirstVertex";
3232 break;
3233 case ProvokingVertex.Tag.LastVertex:
3234 obj["tag"] = "LastVertex";
3235 break;
3236 }
3237 return obj;
3238 }
3239 JToken toJSON(CullMode v) {
3240 var obj = new JObject();
3241 switch (v.tag) {
3242 case CullMode.Tag.CullNone:
3243 obj["tag"] = "CullNone";
3244 break;
3245 case CullMode.Tag.CullFront:
3246 obj["tag"] = "CullFront";
3247 {
3248 var tv = (data.CullFront)v;
3249 obj["arg0"] = toJSON(tv._0);
3250 }
3251 break;
3252 case CullMode.Tag.CullBack:
3253 obj["tag"] = "CullBack";
3254 {
3255 var tv = (data.CullBack)v;
3256 obj["arg0"] = toJSON(tv._0);
3257 }
3258 break;
3259 }
3260 return obj;
3261 }
3262 JToken toJSON(ComparisonFunction v) {
3263 var obj = new JObject();
3264 switch (v.tag) {
3265 case ComparisonFunction.Tag.Never:
3266 obj["tag"] = "Never";
3267 break;
3268 case ComparisonFunction.Tag.Less:
3269 obj["tag"] = "Less";
3270 break;
3271 case ComparisonFunction.Tag.Equal:
3272 obj["tag"] = "Equal";
3273 break;
3274 case ComparisonFunction.Tag.Lequal:
3275 obj["tag"] = "Lequal";
3276 break;
3277 case ComparisonFunction.Tag.Greater:
3278 obj["tag"] = "Greater";
3279 break;
3280 case ComparisonFunction.Tag.Notequal:
3281 obj["tag"] = "Notequal";
3282 break;
3283 case ComparisonFunction.Tag.Gequal:
3284 obj["tag"] = "Gequal";
3285 break;
3286 case ComparisonFunction.Tag.Always:
3287 obj["tag"] = "Always";
3288 break;
3289 }
3290 return obj;
3291 }
3292 JToken toJSON(StencilOperation v) {
3293 var obj = new JObject();
3294 switch (v.tag) {
3295 case StencilOperation.Tag.OpZero:
3296 obj["tag"] = "OpZero";
3297 break;
3298 case StencilOperation.Tag.OpKeep:
3299 obj["tag"] = "OpKeep";
3300 break;
3301 case StencilOperation.Tag.OpReplace:
3302 obj["tag"] = "OpReplace";
3303 break;
3304 case StencilOperation.Tag.OpIncr:
3305 obj["tag"] = "OpIncr";
3306 break;
3307 case StencilOperation.Tag.OpIncrWrap:
3308 obj["tag"] = "OpIncrWrap";
3309 break;
3310 case StencilOperation.Tag.OpDecr:
3311 obj["tag"] = "OpDecr";
3312 break;
3313 case StencilOperation.Tag.OpDecrWrap:
3314 obj["tag"] = "OpDecrWrap";
3315 break;
3316 case StencilOperation.Tag.OpInvert:
3317 obj["tag"] = "OpInvert";
3318 break;
3319 }
3320 return obj;
3321 }
3322 JToken toJSON(BlendEquation v) {
3323 var obj = new JObject();
3324 switch (v.tag) {
3325 case BlendEquation.Tag.FuncAdd:
3326 obj["tag"] = "FuncAdd";
3327 break;
3328 case BlendEquation.Tag.FuncSubtract:
3329 obj["tag"] = "FuncSubtract";
3330 break;
3331 case BlendEquation.Tag.FuncReverseSubtract:
3332 obj["tag"] = "FuncReverseSubtract";
3333 break;
3334 case BlendEquation.Tag.Min:
3335 obj["tag"] = "Min";
3336 break;
3337 case BlendEquation.Tag.Max:
3338 obj["tag"] = "Max";
3339 break;
3340 }
3341 return obj;
3342 }
3343 JToken toJSON(BlendingFactor v) {
3344 var obj = new JObject();
3345 switch (v.tag) {
3346 case BlendingFactor.Tag.Zero:
3347 obj["tag"] = "Zero";
3348 break;
3349 case BlendingFactor.Tag.One:
3350 obj["tag"] = "One";
3351 break;
3352 case BlendingFactor.Tag.SrcColor:
3353 obj["tag"] = "SrcColor";
3354 break;
3355 case BlendingFactor.Tag.OneMinusSrcColor:
3356 obj["tag"] = "OneMinusSrcColor";
3357 break;
3358 case BlendingFactor.Tag.DstColor:
3359 obj["tag"] = "DstColor";
3360 break;
3361 case BlendingFactor.Tag.OneMinusDstColor:
3362 obj["tag"] = "OneMinusDstColor";
3363 break;
3364 case BlendingFactor.Tag.SrcAlpha:
3365 obj["tag"] = "SrcAlpha";
3366 break;
3367 case BlendingFactor.Tag.OneMinusSrcAlpha:
3368 obj["tag"] = "OneMinusSrcAlpha";
3369 break;
3370 case BlendingFactor.Tag.DstAlpha:
3371 obj["tag"] = "DstAlpha";
3372 break;
3373 case BlendingFactor.Tag.OneMinusDstAlpha:
3374 obj["tag"] = "OneMinusDstAlpha";
3375 break;
3376 case BlendingFactor.Tag.ConstantColor:
3377 obj["tag"] = "ConstantColor";
3378 break;
3379 case BlendingFactor.Tag.OneMinusConstantColor:
3380 obj["tag"] = "OneMinusConstantColor";
3381 break;
3382 case BlendingFactor.Tag.ConstantAlpha:
3383 obj["tag"] = "ConstantAlpha";
3384 break;
3385 case BlendingFactor.Tag.OneMinusConstantAlpha:
3386 obj["tag"] = "OneMinusConstantAlpha";
3387 break;
3388 case BlendingFactor.Tag.SrcAlphaSaturate:
3389 obj["tag"] = "SrcAlphaSaturate";
3390 break;
3391 }
3392 return obj;
3393 }
3394 JToken toJSON(LogicOperation v) {
3395 var obj = new JObject();
3396 switch (v.tag) {
3397 case LogicOperation.Tag.Clear:
3398 obj["tag"] = "Clear";
3399 break;
3400 case LogicOperation.Tag.And:
3401 obj["tag"] = "And";
3402 break;
3403 case LogicOperation.Tag.AndReverse:
3404 obj["tag"] = "AndReverse";
3405 break;
3406 case LogicOperation.Tag.Copy:
3407 obj["tag"] = "Copy";
3408 break;
3409 case LogicOperation.Tag.AndInverted:
3410 obj["tag"] = "AndInverted";
3411 break;
3412 case LogicOperation.Tag.Noop:
3413 obj["tag"] = "Noop";
3414 break;
3415 case LogicOperation.Tag.Xor:
3416 obj["tag"] = "Xor";
3417 break;
3418 case LogicOperation.Tag.Or:
3419 obj["tag"] = "Or";
3420 break;
3421 case LogicOperation.Tag.Nor:
3422 obj["tag"] = "Nor";
3423 break;
3424 case LogicOperation.Tag.Equiv:
3425 obj["tag"] = "Equiv";
3426 break;
3427 case LogicOperation.Tag.Invert:
3428 obj["tag"] = "Invert";
3429 break;
3430 case LogicOperation.Tag.OrReverse:
3431 obj["tag"] = "OrReverse";
3432 break;
3433 case LogicOperation.Tag.CopyInverted:
3434 obj["tag"] = "CopyInverted";
3435 break;
3436 case LogicOperation.Tag.OrInverted:
3437 obj["tag"] = "OrInverted";
3438 break;
3439 case LogicOperation.Tag.Nand:
3440 obj["tag"] = "Nand";
3441 break;
3442 case LogicOperation.Tag.Set:
3443 obj["tag"] = "Set";
3444 break;
3445 }
3446 return obj;
3447 }
3448 JToken toJSON(StencilOps v) {
3449 var obj = new JObject();
3450 switch (v.tag) {
3451 case StencilOps.Tag.StencilOps:
3452 obj["tag"] = "StencilOps";
3453 {
3454 var tv = (data.StencilOps)v;
3455 obj["frontStencilOp"] = toJSON(tv.frontStencilOp);
3456 obj["backStencilOp"] = toJSON(tv.backStencilOp);
3457 }
3458 break;
3459 }
3460 return obj;
3461 }
3462 JToken toJSON(StencilTest v) {
3463 var obj = new JObject();
3464 switch (v.tag) {
3465 case StencilTest.Tag.StencilTest:
3466 obj["tag"] = "StencilTest";
3467 {
3468 var tv = (data.StencilTest)v;
3469 obj["stencilComparision"] = toJSON(tv.stencilComparision);
3470 obj["stencilReference"] = toJSON(tv.stencilReference);
3471 obj["stencilMask"] = toJSON(tv.stencilMask);
3472 }
3473 break;
3474 }
3475 return obj;
3476 }
3477 JToken toJSON(StencilTests v) {
3478 var obj = new JObject();
3479 switch (v.tag) {
3480 case StencilTests.Tag.StencilTests:
3481 obj["tag"] = "StencilTests";
3482 {
3483 var tv = (data.StencilTests)v;
3484 obj["arg0"] = toJSON(tv._0);
3485 obj["arg1"] = toJSON(tv._1);
3486 }
3487 break;
3488 }
3489 return obj;
3490 }
3491 JToken toJSON(FetchPrimitive v) {
3492 var obj = new JObject();
3493 switch (v.tag) {
3494 case FetchPrimitive.Tag.Points:
3495 obj["tag"] = "Points";
3496 break;
3497 case FetchPrimitive.Tag.Lines:
3498 obj["tag"] = "Lines";
3499 break;
3500 case FetchPrimitive.Tag.Triangles:
3501 obj["tag"] = "Triangles";
3502 break;
3503 case FetchPrimitive.Tag.LinesAdjacency:
3504 obj["tag"] = "LinesAdjacency";
3505 break;
3506 case FetchPrimitive.Tag.TrianglesAdjacency:
3507 obj["tag"] = "TrianglesAdjacency";
3508 break;
3509 }
3510 return obj;
3511 }
3512 JToken toJSON(OutputPrimitive v) {
3513 var obj = new JObject();
3514 switch (v.tag) {
3515 case OutputPrimitive.Tag.TrianglesOutput:
3516 obj["tag"] = "TrianglesOutput";
3517 break;
3518 case OutputPrimitive.Tag.LinesOutput:
3519 obj["tag"] = "LinesOutput";
3520 break;
3521 case OutputPrimitive.Tag.PointsOutput:
3522 obj["tag"] = "PointsOutput";
3523 break;
3524 }
3525 return obj;
3526 }
3527 JToken toJSON(ColorArity v) {
3528 var obj = new JObject();
3529 switch (v.tag) {
3530 case ColorArity.Tag.Red:
3531 obj["tag"] = "Red";
3532 break;
3533 case ColorArity.Tag.RG:
3534 obj["tag"] = "RG";
3535 break;
3536 case ColorArity.Tag.RGB:
3537 obj["tag"] = "RGB";
3538 break;
3539 case ColorArity.Tag.RGBA:
3540 obj["tag"] = "RGBA";
3541 break;
3542 }
3543 return obj;
3544 }
3545 JToken toJSON(Blending v) {
3546 var obj = new JObject();
3547 switch (v.tag) {
3548 case Blending.Tag.NoBlending:
3549 obj["tag"] = "NoBlending";
3550 break;
3551 case Blending.Tag.BlendLogicOp:
3552 obj["tag"] = "BlendLogicOp";
3553 {
3554 var tv = (data.BlendLogicOp)v;
3555 obj["arg0"] = toJSON(tv._0);
3556 }
3557 break;
3558 case Blending.Tag.Blend:
3559 obj["tag"] = "Blend";
3560 {
3561 var tv = (data.Blend)v;
3562 obj["colorEqSrc"] = toJSON(tv.colorEqSrc);
3563 obj["alphaEqSrc"] = toJSON(tv.alphaEqSrc);
3564 obj["colorFSrc"] = toJSON(tv.colorFSrc);
3565 obj["colorFDst"] = toJSON(tv.colorFDst);
3566 obj["alphaFSrc"] = toJSON(tv.alphaFSrc);
3567 obj["alphaFDst"] = toJSON(tv.alphaFDst);
3568 obj["color"] = toJSON(tv.color);
3569 }
3570 break;
3571 }
3572 return obj;
3573 }
3574 JToken toJSON(RasterContext v) {
3575 var obj = new JObject();
3576 switch (v.tag) {
3577 case RasterContext.Tag.PointCtx:
3578 obj["tag"] = "PointCtx";
3579 {
3580 var tv = (data.PointCtx)v;
3581 obj["arg0"] = toJSON(tv._0);
3582 obj["arg1"] = toJSON(tv._1);
3583 obj["arg2"] = toJSON(tv._2);
3584 }
3585 break;
3586 case RasterContext.Tag.LineCtx:
3587 obj["tag"] = "LineCtx";
3588 {
3589 var tv = (data.LineCtx)v;
3590 obj["arg0"] = toJSON(tv._0);
3591 obj["arg1"] = toJSON(tv._1);
3592 }
3593 break;
3594 case RasterContext.Tag.TriangleCtx:
3595 obj["tag"] = "TriangleCtx";
3596 {
3597 var tv = (data.TriangleCtx)v;
3598 obj["arg0"] = toJSON(tv._0);
3599 obj["arg1"] = toJSON(tv._1);
3600 obj["arg2"] = toJSON(tv._2);
3601 obj["arg3"] = toJSON(tv._3);
3602 }
3603 break;
3604 }
3605 return obj;
3606 }
3607 JToken toJSON(FragmentOperation v) {
3608 var obj = new JObject();
3609 switch (v.tag) {
3610 case FragmentOperation.Tag.DepthOp:
3611 obj["tag"] = "DepthOp";
3612 {
3613 var tv = (data.DepthOp)v;
3614 obj["arg0"] = toJSON(tv._0);
3615 obj["arg1"] = toJSON(tv._1);
3616 }
3617 break;
3618 case FragmentOperation.Tag.StencilOp:
3619 obj["tag"] = "StencilOp";
3620 {
3621 var tv = (data.StencilOp)v;
3622 obj["arg0"] = toJSON(tv._0);
3623 obj["arg1"] = toJSON(tv._1);
3624 obj["arg2"] = toJSON(tv._2);
3625 }
3626 break;
3627 case FragmentOperation.Tag.ColorOp:
3628 obj["tag"] = "ColorOp";
3629 {
3630 var tv = (data.ColorOp)v;
3631 obj["arg0"] = toJSON(tv._0);
3632 obj["arg1"] = toJSON(tv._1);
3633 }
3634 break;
3635 }
3636 return obj;
3637 }
3638 JToken toJSON(AccumulationContext v) {
3639 var obj = new JObject();
3640 switch (v.tag) {
3641 case AccumulationContext.Tag.AccumulationContext:
3642 obj["tag"] = "AccumulationContext";
3643 {
3644 var tv = (data.AccumulationContext)v;
3645 obj["accViewportName"] = toJSON(tv.accViewportName);
3646 obj["accOperations"] = toJSON(tv.accOperations);
3647 }
3648 break;
3649 }
3650 return obj;
3651 }
3652 JToken toJSON(TextureDataType v) {
3653 var obj = new JObject();
3654 switch (v.tag) {
3655 case TextureDataType.Tag.FloatT:
3656 obj["tag"] = "FloatT";
3657 {
3658 var tv = (data.FloatT)v;
3659 obj["arg0"] = toJSON(tv._0);
3660 }
3661 break;
3662 case TextureDataType.Tag.IntT:
3663 obj["tag"] = "IntT";
3664 {
3665 var tv = (data.IntT)v;
3666 obj["arg0"] = toJSON(tv._0);
3667 }
3668 break;
3669 case TextureDataType.Tag.WordT:
3670 obj["tag"] = "WordT";
3671 {
3672 var tv = (data.WordT)v;
3673 obj["arg0"] = toJSON(tv._0);
3674 }
3675 break;
3676 case TextureDataType.Tag.ShadowT:
3677 obj["tag"] = "ShadowT";
3678 break;
3679 }
3680 return obj;
3681 }
3682 JToken toJSON(TextureType v) {
3683 var obj = new JObject();
3684 switch (v.tag) {
3685 case TextureType.Tag.Texture1D:
3686 obj["tag"] = "Texture1D";
3687 {
3688 var tv = (data.Texture1D)v;
3689 obj["arg0"] = toJSON(tv._0);
3690 obj["arg1"] = toJSON(tv._1);
3691 }
3692 break;
3693 case TextureType.Tag.Texture2D:
3694 obj["tag"] = "Texture2D";
3695 {
3696 var tv = (data.Texture2D)v;
3697 obj["arg0"] = toJSON(tv._0);
3698 obj["arg1"] = toJSON(tv._1);
3699 }
3700 break;
3701 case TextureType.Tag.Texture3D:
3702 obj["tag"] = "Texture3D";
3703 {
3704 var tv = (data.Texture3D)v;
3705 obj["arg0"] = toJSON(tv._0);
3706 }
3707 break;
3708 case TextureType.Tag.TextureCube:
3709 obj["tag"] = "TextureCube";
3710 {
3711 var tv = (data.TextureCube)v;
3712 obj["arg0"] = toJSON(tv._0);
3713 }
3714 break;
3715 case TextureType.Tag.TextureRect:
3716 obj["tag"] = "TextureRect";
3717 {
3718 var tv = (data.TextureRect)v;
3719 obj["arg0"] = toJSON(tv._0);
3720 }
3721 break;
3722 case TextureType.Tag.Texture2DMS:
3723 obj["tag"] = "Texture2DMS";
3724 {
3725 var tv = (data.Texture2DMS)v;
3726 obj["arg0"] = toJSON(tv._0);
3727 obj["arg1"] = toJSON(tv._1);
3728 obj["arg2"] = toJSON(tv._2);
3729 obj["arg3"] = toJSON(tv._3);
3730 }
3731 break;
3732 case TextureType.Tag.TextureBuffer:
3733 obj["tag"] = "TextureBuffer";
3734 {
3735 var tv = (data.TextureBuffer)v;
3736 obj["arg0"] = toJSON(tv._0);
3737 }
3738 break;
3739 }
3740 return obj;
3741 }
3742 JToken toJSON(MipMap v) {
3743 var obj = new JObject();
3744 switch (v.tag) {
3745 case MipMap.Tag.Mip:
3746 obj["tag"] = "Mip";
3747 {
3748 var tv = (data.Mip)v;
3749 obj["arg0"] = toJSON(tv._0);
3750 obj["arg1"] = toJSON(tv._1);
3751 }
3752 break;
3753 case MipMap.Tag.NoMip:
3754 obj["tag"] = "NoMip";
3755 break;
3756 case MipMap.Tag.AutoMip:
3757 obj["tag"] = "AutoMip";
3758 {
3759 var tv = (data.AutoMip)v;
3760 obj["arg0"] = toJSON(tv._0);
3761 obj["arg1"] = toJSON(tv._1);
3762 }
3763 break;
3764 }
3765 return obj;
3766 }
3767 JToken toJSON(Filter v) {
3768 var obj = new JObject();
3769 switch (v.tag) {
3770 case Filter.Tag.Nearest:
3771 obj["tag"] = "Nearest";
3772 break;
3773 case Filter.Tag.Linear:
3774 obj["tag"] = "Linear";
3775 break;
3776 case Filter.Tag.NearestMipmapNearest:
3777 obj["tag"] = "NearestMipmapNearest";
3778 break;
3779 case Filter.Tag.NearestMipmapLinear:
3780 obj["tag"] = "NearestMipmapLinear";
3781 break;
3782 case Filter.Tag.LinearMipmapNearest:
3783 obj["tag"] = "LinearMipmapNearest";
3784 break;
3785 case Filter.Tag.LinearMipmapLinear:
3786 obj["tag"] = "LinearMipmapLinear";
3787 break;
3788 }
3789 return obj;
3790 }
3791 JToken toJSON(EdgeMode v) {
3792 var obj = new JObject();
3793 switch (v.tag) {
3794 case EdgeMode.Tag.Repeat:
3795 obj["tag"] = "Repeat";
3796 break;
3797 case EdgeMode.Tag.MirroredRepeat:
3798 obj["tag"] = "MirroredRepeat";
3799 break;
3800 case EdgeMode.Tag.ClampToEdge:
3801 obj["tag"] = "ClampToEdge";
3802 break;
3803 case EdgeMode.Tag.ClampToBorder:
3804 obj["tag"] = "ClampToBorder";
3805 break;
3806 }
3807 return obj;
3808 }
3809 JToken toJSON(ImageSemantic v) {
3810 var obj = new JObject();
3811 switch (v.tag) {
3812 case ImageSemantic.Tag.Depth:
3813 obj["tag"] = "Depth";
3814 break;
3815 case ImageSemantic.Tag.Stencil:
3816 obj["tag"] = "Stencil";
3817 break;
3818 case ImageSemantic.Tag.Color:
3819 obj["tag"] = "Color";
3820 break;
3821 }
3822 return obj;
3823 }
3824 JToken toJSON(ImageRef v) {
3825 var obj = new JObject();
3826 switch (v.tag) {
3827 case ImageRef.Tag.TextureImage:
3828 obj["tag"] = "TextureImage";
3829 {
3830 var tv = (data.TextureImage)v;
3831 obj["arg0"] = toJSON(tv._0);
3832 obj["arg1"] = toJSON(tv._1);
3833 obj["arg2"] = toJSON(tv._2);
3834 }
3835 break;
3836 case ImageRef.Tag.Framebuffer:
3837 obj["tag"] = "Framebuffer";
3838 {
3839 var tv = (data.Framebuffer)v;
3840 obj["arg0"] = toJSON(tv._0);
3841 }
3842 break;
3843 }
3844 return obj;
3845 }
3846 JToken toJSON(ClearImage v) {
3847 var obj = new JObject();
3848 switch (v.tag) {
3849 case ClearImage.Tag.ClearImage:
3850 obj["tag"] = "ClearImage";
3851 {
3852 var tv = (data.ClearImage)v;
3853 obj["imageSemantic"] = toJSON(tv.imageSemantic);
3854 obj["clearValue"] = toJSON(tv.clearValue);
3855 }
3856 break;
3857 }
3858 return obj;
3859 }
3860 JToken toJSON(Command v) {
3861 var obj = new JObject();
3862 switch (v.tag) {
3863 case Command.Tag.SetRasterContext:
3864 obj["tag"] = "SetRasterContext";
3865 {
3866 var tv = (data.SetRasterContext)v;
3867 obj["arg0"] = toJSON(tv._0);
3868 }
3869 break;
3870 case Command.Tag.SetAccumulationContext:
3871 obj["tag"] = "SetAccumulationContext";
3872 {
3873 var tv = (data.SetAccumulationContext)v;
3874 obj["arg0"] = toJSON(tv._0);
3875 }
3876 break;
3877 case Command.Tag.SetRenderTarget:
3878 obj["tag"] = "SetRenderTarget";
3879 {
3880 var tv = (data.SetRenderTarget)v;
3881 obj["arg0"] = toJSON(tv._0);
3882 }
3883 break;
3884 case Command.Tag.SetProgram:
3885 obj["tag"] = "SetProgram";
3886 {
3887 var tv = (data.SetProgram)v;
3888 obj["arg0"] = toJSON(tv._0);
3889 }
3890 break;
3891 case Command.Tag.SetSamplerUniform:
3892 obj["tag"] = "SetSamplerUniform";
3893 {
3894 var tv = (data.SetSamplerUniform)v;
3895 obj["arg0"] = toJSON(tv._0);
3896 obj["arg1"] = toJSON(tv._1);
3897 }
3898 break;
3899 case Command.Tag.SetTexture:
3900 obj["tag"] = "SetTexture";
3901 {
3902 var tv = (data.SetTexture)v;
3903 obj["arg0"] = toJSON(tv._0);
3904 obj["arg1"] = toJSON(tv._1);
3905 }
3906 break;
3907 case Command.Tag.SetSampler:
3908 obj["tag"] = "SetSampler";
3909 {
3910 var tv = (data.SetSampler)v;
3911 obj["arg0"] = toJSON(tv._0);
3912 obj["arg1"] = toJSON(tv._1);
3913 }
3914 break;
3915 case Command.Tag.RenderSlot:
3916 obj["tag"] = "RenderSlot";
3917 {
3918 var tv = (data.RenderSlot)v;
3919 obj["arg0"] = toJSON(tv._0);
3920 }
3921 break;
3922 case Command.Tag.RenderStream:
3923 obj["tag"] = "RenderStream";
3924 {
3925 var tv = (data.RenderStream)v;
3926 obj["arg0"] = toJSON(tv._0);
3927 }
3928 break;
3929 case Command.Tag.ClearRenderTarget:
3930 obj["tag"] = "ClearRenderTarget";
3931 {
3932 var tv = (data.ClearRenderTarget)v;
3933 obj["arg0"] = toJSON(tv._0);
3934 }
3935 break;
3936 case Command.Tag.GenerateMipMap:
3937 obj["tag"] = "GenerateMipMap";
3938 {
3939 var tv = (data.GenerateMipMap)v;
3940 obj["arg0"] = toJSON(tv._0);
3941 }
3942 break;
3943 case Command.Tag.SaveImage:
3944 obj["tag"] = "SaveImage";
3945 {
3946 var tv = (data.SaveImage)v;
3947 obj["arg0"] = toJSON(tv._0);
3948 obj["arg1"] = toJSON(tv._1);
3949 }
3950 break;
3951 case Command.Tag.LoadImage:
3952 obj["tag"] = "LoadImage";
3953 {
3954 var tv = (data.LoadImage)v;
3955 obj["arg0"] = toJSON(tv._0);
3956 obj["arg1"] = toJSON(tv._1);
3957 }
3958 break;
3959 }
3960 return obj;
3961 }
3962 JToken toJSON(SamplerDescriptor v) {
3963 var obj = new JObject();
3964 switch (v.tag) {
3965 case SamplerDescriptor.Tag.SamplerDescriptor:
3966 obj["tag"] = "SamplerDescriptor";
3967 {
3968 var tv = (data.SamplerDescriptor)v;
3969 obj["samplerWrapS"] = toJSON(tv.samplerWrapS);
3970 obj["samplerWrapT"] = toJSON(tv.samplerWrapT);
3971 obj["samplerWrapR"] = toJSON(tv.samplerWrapR);
3972 obj["samplerMinFilter"] = toJSON(tv.samplerMinFilter);
3973 obj["samplerMagFilter"] = toJSON(tv.samplerMagFilter);
3974 obj["samplerBorderColor"] = toJSON(tv.samplerBorderColor);
3975 obj["samplerMinLod"] = toJSON(tv.samplerMinLod);
3976 obj["samplerMaxLod"] = toJSON(tv.samplerMaxLod);
3977 obj["samplerLodBias"] = toJSON(tv.samplerLodBias);
3978 obj["samplerCompareFunc"] = toJSON(tv.samplerCompareFunc);
3979 }
3980 break;
3981 }
3982 return obj;
3983 }
3984 JToken toJSON(TextureDescriptor v) {
3985 var obj = new JObject();
3986 switch (v.tag) {
3987 case TextureDescriptor.Tag.TextureDescriptor:
3988 obj["tag"] = "TextureDescriptor";
3989 {
3990 var tv = (data.TextureDescriptor)v;
3991 obj["textureType"] = toJSON(tv.textureType);
3992 obj["textureSize"] = toJSON(tv.textureSize);
3993 obj["textureSemantic"] = toJSON(tv.textureSemantic);
3994 obj["textureSampler"] = toJSON(tv.textureSampler);
3995 obj["textureBaseLevel"] = toJSON(tv.textureBaseLevel);
3996 obj["textureMaxLevel"] = toJSON(tv.textureMaxLevel);
3997 }
3998 break;
3999 }
4000 return obj;
4001 }
4002 JToken toJSON(Parameter v) {
4003 var obj = new JObject();
4004 switch (v.tag) {
4005 case Parameter.Tag.Parameter:
4006 obj["tag"] = "Parameter";
4007 {
4008 var tv = (data.Parameter)v;
4009 obj["name"] = toJSON(tv.name);
4010 obj["ty"] = toJSON(tv.ty);
4011 }
4012 break;
4013 }
4014 return obj;
4015 }
4016 JToken toJSON(Program v) {
4017 var obj = new JObject();
4018 switch (v.tag) {
4019 case Program.Tag.Program:
4020 obj["tag"] = "Program";
4021 {
4022 var tv = (data.Program)v;
4023 obj["programUniforms"] = toJSON(tv.programUniforms);
4024 obj["programStreams"] = toJSON(tv.programStreams);
4025 obj["programInTextures"] = toJSON(tv.programInTextures);
4026 obj["programOutput"] = toJSON(tv.programOutput);
4027 obj["vertexShader"] = toJSON(tv.vertexShader);
4028 obj["geometryShader"] = toJSON(tv.geometryShader);
4029 obj["fragmentShader"] = toJSON(tv.fragmentShader);
4030 }
4031 break;
4032 }
4033 return obj;
4034 }
4035 JToken toJSON(Slot v) {
4036 var obj = new JObject();
4037 switch (v.tag) {
4038 case Slot.Tag.Slot:
4039 obj["tag"] = "Slot";
4040 {
4041 var tv = (data.Slot)v;
4042 obj["slotName"] = toJSON(tv.slotName);
4043 obj["slotStreams"] = toJSON(tv.slotStreams);
4044 obj["slotUniforms"] = toJSON(tv.slotUniforms);
4045 obj["slotPrimitive"] = toJSON(tv.slotPrimitive);
4046 obj["slotPrograms"] = toJSON(tv.slotPrograms);
4047 }
4048 break;
4049 }
4050 return obj;
4051 }
4052 JToken toJSON(StreamData v) {
4053 var obj = new JObject();
4054 switch (v.tag) {
4055 case StreamData.Tag.StreamData:
4056 obj["tag"] = "StreamData";
4057 {
4058 var tv = (data.StreamData)v;
4059 obj["streamData"] = toJSON(tv.streamData);
4060 obj["streamType"] = toJSON(tv.streamType);
4061 obj["streamPrimitive"] = toJSON(tv.streamPrimitive);
4062 obj["streamPrograms"] = toJSON(tv.streamPrograms);
4063 }
4064 break;
4065 }
4066 return obj;
4067 }
4068 JToken toJSON(TargetItem v) {
4069 var obj = new JObject();
4070 switch (v.tag) {
4071 case TargetItem.Tag.TargetItem:
4072 obj["tag"] = "TargetItem";
4073 {
4074 var tv = (data.TargetItem)v;
4075 obj["targetSemantic"] = toJSON(tv.targetSemantic);
4076 obj["targetRef"] = toJSON(tv.targetRef);
4077 }
4078 break;
4079 }
4080 return obj;
4081 }
4082 JToken toJSON(RenderTarget v) {
4083 var obj = new JObject();
4084 switch (v.tag) {
4085 case RenderTarget.Tag.RenderTarget:
4086 obj["tag"] = "RenderTarget";
4087 {
4088 var tv = (data.RenderTarget)v;
4089 obj["renderTargets"] = toJSON(tv.renderTargets);
4090 }
4091 break;
4092 }
4093 return obj;
4094 }
4095 JToken toJSON(Backend v) {
4096 var obj = new JObject();
4097 switch (v.tag) {
4098 case Backend.Tag.WebGL1:
4099 obj["tag"] = "WebGL1";
4100 break;
4101 case Backend.Tag.OpenGL33:
4102 obj["tag"] = "OpenGL33";
4103 break;
4104 }
4105 return obj;
4106 }
4107 JToken toJSON(Pipeline v) {
4108 var obj = new JObject();
4109 switch (v.tag) {
4110 case Pipeline.Tag.Pipeline:
4111 obj["tag"] = "Pipeline";
4112 {
4113 var tv = (data.Pipeline)v;
4114 obj["info"] = toJSON(tv.info);
4115 obj["backend"] = toJSON(tv.backend);
4116 obj["textures"] = toJSON(tv.textures);
4117 obj["samplers"] = toJSON(tv.samplers);
4118 obj["targets"] = toJSON(tv.targets);
4119 obj["programs"] = toJSON(tv.programs);
4120 obj["slots"] = toJSON(tv.slots);
4121 obj["streams"] = toJSON(tv.streams);
4122 obj["commands"] = toJSON(tv.commands);
4123 }
4124 break;
4125 }
4126 return obj;
4127 }
4128
4129 JToken toJSON(int v) { return new JValue(v); }
4130 JToken toJSON(uint v) { return new JValue(v); }
4131 JToken toJSON(float v) { return new JValue(v); }
4132 JToken toJSON(bool v) { return new JValue(v); }
4133 JToken toJSON(string v) { return new JValue(v); }
4134 JToken toJSON(V2<int> v) {
4135 var obj = new JObject();
4136 obj["x"] = toJSON(v.x);
4137 obj["y"] = toJSON(v.y);
4138 return obj;
4139 }
4140 JToken toJSON(V2<uint> v) {
4141 var obj = new JObject();
4142 obj["x"] = toJSON(v.x);
4143 obj["y"] = toJSON(v.y);
4144 return obj;
4145 }
4146 JToken toJSON(V2<float> v) {
4147 var obj = new JObject();
4148 obj["x"] = toJSON(v.x);
4149 obj["y"] = toJSON(v.y);
4150 return obj;
4151 }
4152 JToken toJSON(V2<bool> v) {
4153 var obj = new JObject();
4154 obj["x"] = toJSON(v.x);
4155 obj["y"] = toJSON(v.y);
4156 return obj;
4157 }
4158 JToken toJSON(V2<V2<float>> v) {
4159 var obj = new JObject();
4160 obj["x"] = toJSON(v.x);
4161 obj["y"] = toJSON(v.y);
4162 return obj;
4163 }
4164 JToken toJSON(V2<V3<float>> v) {
4165 var obj = new JObject();
4166 obj["x"] = toJSON(v.x);
4167 obj["y"] = toJSON(v.y);
4168 return obj;
4169 }
4170 JToken toJSON(V2<V4<float>> v) {
4171 var obj = new JObject();
4172 obj["x"] = toJSON(v.x);
4173 obj["y"] = toJSON(v.y);
4174 return obj;
4175 }
4176 JToken toJSON(V3<int> v) {
4177 var obj = new JObject();
4178 obj["x"] = toJSON(v.x);
4179 obj["y"] = toJSON(v.y);
4180 obj["z"] = toJSON(v.z);
4181 return obj;
4182 }
4183 JToken toJSON(V3<uint> v) {
4184 var obj = new JObject();
4185 obj["x"] = toJSON(v.x);
4186 obj["y"] = toJSON(v.y);
4187 obj["z"] = toJSON(v.z);
4188 return obj;
4189 }
4190 JToken toJSON(V3<float> v) {
4191 var obj = new JObject();
4192 obj["x"] = toJSON(v.x);
4193 obj["y"] = toJSON(v.y);
4194 obj["z"] = toJSON(v.z);
4195 return obj;
4196 }
4197 JToken toJSON(V3<bool> v) {
4198 var obj = new JObject();
4199 obj["x"] = toJSON(v.x);
4200 obj["y"] = toJSON(v.y);
4201 obj["z"] = toJSON(v.z);
4202 return obj;
4203 }
4204 JToken toJSON(V3<V2<float>> v) {
4205 var obj = new JObject();
4206 obj["x"] = toJSON(v.x);
4207 obj["y"] = toJSON(v.y);
4208 obj["z"] = toJSON(v.z);
4209 return obj;
4210 }
4211 JToken toJSON(V3<V3<float>> v) {
4212 var obj = new JObject();
4213 obj["x"] = toJSON(v.x);
4214 obj["y"] = toJSON(v.y);
4215 obj["z"] = toJSON(v.z);
4216 return obj;
4217 }
4218 JToken toJSON(V3<V4<float>> v) {
4219 var obj = new JObject();
4220 obj["x"] = toJSON(v.x);
4221 obj["y"] = toJSON(v.y);
4222 obj["z"] = toJSON(v.z);
4223 return obj;
4224 }
4225 JToken toJSON(V4<int> v) {
4226 var obj = new JObject();
4227 obj["x"] = toJSON(v.x);
4228 obj["y"] = toJSON(v.y);
4229 obj["z"] = toJSON(v.z);
4230 obj["w"] = toJSON(v.w);
4231 return obj;
4232 }
4233 JToken toJSON(V4<uint> v) {
4234 var obj = new JObject();
4235 obj["x"] = toJSON(v.x);
4236 obj["y"] = toJSON(v.y);
4237 obj["z"] = toJSON(v.z);
4238 obj["w"] = toJSON(v.w);
4239 return obj;
4240 }
4241 JToken toJSON(V4<float> v) {
4242 var obj = new JObject();
4243 obj["x"] = toJSON(v.x);
4244 obj["y"] = toJSON(v.y);
4245 obj["z"] = toJSON(v.z);
4246 obj["w"] = toJSON(v.w);
4247 return obj;
4248 }
4249 JToken toJSON(V4<bool> v) {
4250 var obj = new JObject();
4251 obj["x"] = toJSON(v.x);
4252 obj["y"] = toJSON(v.y);
4253 obj["z"] = toJSON(v.z);
4254 obj["w"] = toJSON(v.w);
4255 return obj;
4256 }
4257 JToken toJSON(V4<V2<float>> v) {
4258 var obj = new JObject();
4259 obj["x"] = toJSON(v.x);
4260 obj["y"] = toJSON(v.y);
4261 obj["z"] = toJSON(v.z);
4262 obj["w"] = toJSON(v.w);
4263 return obj;
4264 }
4265 JToken toJSON(V4<V3<float>> v) {
4266 var obj = new JObject();
4267 obj["x"] = toJSON(v.x);
4268 obj["y"] = toJSON(v.y);
4269 obj["z"] = toJSON(v.z);
4270 obj["w"] = toJSON(v.w);
4271 return obj;
4272 }
4273 JToken toJSON(V4<V4<float>> v) {
4274 var obj = new JObject();
4275 obj["x"] = toJSON(v.x);
4276 obj["y"] = toJSON(v.y);
4277 obj["z"] = toJSON(v.z);
4278 obj["w"] = toJSON(v.w);
4279 return obj;
4280 }
4281 JToken toJSON(List<int> v) {
4282 var obj = new JArray();
4283 foreach (var i in v) {
4284 obj.Add(toJSON(i));
4285 }
4286 return obj;
4287 }
4288 JToken toJSON(List<uint> v) {
4289 var obj = new JArray();
4290 foreach (var i in v) {
4291 obj.Add(toJSON(i));
4292 }
4293 return obj;
4294 }
4295 JToken toJSON(List<float> v) {
4296 var obj = new JArray();
4297 foreach (var i in v) {
4298 obj.Add(toJSON(i));
4299 }
4300 return obj;
4301 }
4302 JToken toJSON(List<bool> v) {
4303 var obj = new JArray();
4304 foreach (var i in v) {
4305 obj.Add(toJSON(i));
4306 }
4307 return obj;
4308 }
4309 JToken toJSON(List<global::LambdaCube.IR.ClearImage> v) {
4310 var obj = new JArray();
4311 foreach (var i in v) {
4312 obj.Add(toJSON(i));
4313 }
4314 return obj;
4315 }
4316 JToken toJSON(List<global::LambdaCube.IR.Command> v) {
4317 var obj = new JArray();
4318 foreach (var i in v) {
4319 obj.Add(toJSON(i));
4320 }
4321 return obj;
4322 }
4323 JToken toJSON(List<global::LambdaCube.IR.Parameter> v) {
4324 var obj = new JArray();
4325 foreach (var i in v) {
4326 obj.Add(toJSON(i));
4327 }
4328 return obj;
4329 }
4330 JToken toJSON(List<global::LambdaCube.IR.Program> v) {
4331 var obj = new JArray();
4332 foreach (var i in v) {
4333 obj.Add(toJSON(i));
4334 }
4335 return obj;
4336 }
4337 JToken toJSON(List<global::LambdaCube.IR.RenderTarget> v) {
4338 var obj = new JArray();
4339 foreach (var i in v) {
4340 obj.Add(toJSON(i));
4341 }
4342 return obj;
4343 }
4344 JToken toJSON(List<global::LambdaCube.IR.SamplerDescriptor> v) {
4345 var obj = new JArray();
4346 foreach (var i in v) {
4347 obj.Add(toJSON(i));
4348 }
4349 return obj;
4350 }
4351 JToken toJSON(List<global::LambdaCube.IR.Slot> v) {
4352 var obj = new JArray();
4353 foreach (var i in v) {
4354 obj.Add(toJSON(i));
4355 }
4356 return obj;
4357 }
4358 JToken toJSON(List<global::LambdaCube.IR.StreamData> v) {
4359 var obj = new JArray();
4360 foreach (var i in v) {
4361 obj.Add(toJSON(i));
4362 }
4363 return obj;
4364 }
4365 JToken toJSON(List<global::LambdaCube.IR.TargetItem> v) {
4366 var obj = new JArray();
4367 foreach (var i in v) {
4368 obj.Add(toJSON(i));
4369 }
4370 return obj;
4371 }
4372 JToken toJSON(List<global::LambdaCube.IR.TextureDescriptor> v) {
4373 var obj = new JArray();
4374 foreach (var i in v) {
4375 obj.Add(toJSON(i));
4376 }
4377 return obj;
4378 }
4379 JToken toJSON(List<global::LambdaCube.IR.FragmentOperation> v) {
4380 var obj = new JArray();
4381 foreach (var i in v) {
4382 obj.Add(toJSON(i));
4383 }
4384 return obj;
4385 }
4386 JToken toJSON(Maybe<int> v) {
4387 if (v.valid) {
4388 return toJSON(v.data);
4389 }
4390 return new JValue((string)null);
4391 }
4392 JToken toJSON(Maybe<float> v) {
4393 if (v.valid) {
4394 return toJSON(v.data);
4395 }
4396 return new JValue((string)null);
4397 }
4398 JToken toJSON(Maybe<string> v) {
4399 if (v.valid) {
4400 return toJSON(v.data);
4401 }
4402 return new JValue((string)null);
4403 }
4404 JToken toJSON(Maybe<global::LambdaCube.IR.ComparisonFunction> v) {
4405 if (v.valid) {
4406 return toJSON(v.data);
4407 }
4408 return new JValue((string)null);
4409 }
4410 JToken toJSON(Maybe<global::LambdaCube.IR.EdgeMode> v) {
4411 if (v.valid) {
4412 return toJSON(v.data);
4413 }
4414 return new JValue((string)null);
4415 }
4416 JToken toJSON(Maybe<global::LambdaCube.IR.ImageRef> v) {
4417 if (v.valid) {
4418 return toJSON(v.data);
4419 }
4420 return new JValue((string)null);
4421 }
4422 JToken toJSON(Dictionary<string, global::LambdaCube.IR.ArrayValue> v) {
4423 var obj = new JObject();
4424 foreach (var i in v) {
4425 obj[i.Key] = toJSON(i.Value);
4426 }
4427 return obj;
4428 }
4429 JToken toJSON(Dictionary<string, global::LambdaCube.IR.InputType> v) {
4430 var obj = new JObject();
4431 foreach (var i in v) {
4432 obj[i.Key] = toJSON(i.Value);
4433 }
4434 return obj;
4435 }
4436 JToken toJSON(Dictionary<string, global::LambdaCube.IR.Parameter> v) {
4437 var obj = new JObject();
4438 foreach (var i in v) {
4439 obj[i.Key] = toJSON(i.Value);
4440 }
4441 return obj;
4442 }
4443 }
4444}