summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lc/Builtins.lc11
-rw-r--r--src/LambdaCube/Compiler/Infer.hs13
-rw-r--r--testdata/accept/Builtins.out1342
-rw-r--r--testdata/accept/Graphics.out2
-rw-r--r--testdata/accept/HyperbolicParaboloic.out2
-rw-r--r--testdata/accept/Hyperboloid.out2
-rw-r--r--testdata/accept/NewStyle.out2
-rw-r--r--testdata/accept/Prelude.out3
-rw-r--r--testdata/accept/PrimReduce.out2
-rw-r--r--testdata/accept/Spiral.out2
-rw-r--r--testdata/accept/example06.out2
-rw-r--r--testdata/accept/example07.out2
-rw-r--r--testdata/accept/example08.out2
-rw-r--r--testdata/accept/fetcharrays01.out2
-rw-r--r--testdata/accept/fragment01.out2
-rw-r--r--testdata/accept/fragment03swizzling.out2
-rw-r--r--testdata/accept/fragment04ifthenelse.out2
-rw-r--r--testdata/accept/fragment07let.out2
-rw-r--r--testdata/accept/gfx02.out2
-rw-r--r--testdata/accept/gfx03.out2
-rw-r--r--testdata/accept/gfx04.out2
-rw-r--r--testdata/accept/gfx05.out2
-rw-r--r--testdata/accept/heartbeat01.out2
-rw-r--r--testdata/accept/helloWorld.lc2
-rw-r--r--testdata/accept/helloWorld.out2
-rw-r--r--testdata/accept/line01.out2
-rw-r--r--testdata/accept/point01.out2
-rw-r--r--testdata/accept/record01.out2
-rw-r--r--testdata/accept/recursivetexture02.out2
-rw-r--r--testdata/accept/reduce01.out2
-rw-r--r--testdata/accept/reduce05.out2
-rw-r--r--testdata/accept/simple02.out2
-rw-r--r--testdata/accept/simple03.out2
-rw-r--r--testdata/accept/texture01.out2
-rw-r--r--testdata/accept/texture02.out2
-rw-r--r--testdata/accept/typeclass.out5
-rw-r--r--testdata/accept/uniformparam01.out2
-rw-r--r--testdata/accept/uniformparam02.out2
-rw-r--r--testdata/accept/uniformparam03.out2
39 files changed, 758 insertions, 684 deletions
diff --git a/lc/Builtins.lc b/lc/Builtins.lc
index 9886b177..aac7fd8e 100644
--- a/lc/Builtins.lc
+++ b/lc/Builtins.lc
@@ -462,8 +462,17 @@ type family TFFrameBuffer a {-where
462-} 462-}
463type family SameLayerCounts a 463type family SameLayerCounts a
464 464
465class DefaultFragOp a where defaultFragOp :: FragmentOperation a
466instance DefaultFragOp (Color (VecS Float 4)) where defaultFragOp = ColorOp NoBlending (V4 True True True True)
467instance DefaultFragOp (Depth Float) where defaultFragOp = DepthOp Less True
468{-
469class DefaultFragOps a where defaultFragOps :: a
470instance (DefaultFragOp a, DefaultFragOp b) => DefaultFragOps (FragmentOperation a, FragmentOperation b) where
471 defaultFragOps = -- (undefined @(), undefined)
472 (defaultFragOp @a @_, defaultFragOp @b @_)
473-}
465data FrameBuffer (n :: Nat) b where 474data FrameBuffer (n :: Nat) b where
466 Accumulate :: ({-x ~ FragOps' b, -}b ~ FragOps x) => x -> Stream (Fragment n d (RemSemantics b)) -> FrameBuffer n b -> FrameBuffer n b 475 Accumulate :: FragOps' b -> Stream (Fragment n d (RemSemantics b)) -> FrameBuffer n b -> FrameBuffer n b
467 FrameBuffer :: (ValidFrameBuffer b, SameLayerCounts a, FrameBuffer n b ~ TFFrameBuffer a) => a -> FrameBuffer n b 476 FrameBuffer :: (ValidFrameBuffer b, SameLayerCounts a, FrameBuffer n b ~ TFFrameBuffer a) => a -> FrameBuffer n b
468 477
469accumulate ctx fshader fstr fb = Accumulate ctx (mapFragments fshader fstr) fb 478accumulate ctx fshader fstr fb = Accumulate ctx (mapFragments fshader fstr) fb
diff --git a/src/LambdaCube/Compiler/Infer.hs b/src/LambdaCube/Compiler/Infer.hs
index bd361a1d..15c9e9dc 100644
--- a/src/LambdaCube/Compiler/Infer.hs
+++ b/src/LambdaCube/Compiler/Infer.hs
@@ -713,6 +713,8 @@ cstrT_ typ = cstr__ []
713 cstr_ [] t@(TTyCon0 n) (UL (FunN "'VecScalar" [a, b])) | isElemTy n = t2 (cstrT TNat a (NatE 1)) (cstr__ [] b t) 713 cstr_ [] t@(TTyCon0 n) (UL (FunN "'VecScalar" [a, b])) | isElemTy n = t2 (cstrT TNat a (NatE 1)) (cstr__ [] b t)
714 cstr_ ns@[] (UL (FunN "'TFMat" [x, y])) (TyConN "'Mat" [i, j, a]) = t2 (cstr__ ns x (TVec i a)) (cstr__ ns y (TVec j a)) 714 cstr_ ns@[] (UL (FunN "'TFMat" [x, y])) (TyConN "'Mat" [i, j, a]) = t2 (cstr__ ns x (TVec i a)) (cstr__ ns y (TVec j a))
715 cstr_ ns@[] (TyConN "'Tuple2" [x, y]) (UL (FunN "'JoinTupleType" [x', y'])) = t2 (cstr__ ns x x') (cstr__ ns y y') 715 cstr_ ns@[] (TyConN "'Tuple2" [x, y]) (UL (FunN "'JoinTupleType" [x', y'])) = t2 (cstr__ ns x x') (cstr__ ns y y')
716 cstr_ ns@[] (UL (FunN "'FragOps'" [a])) (TyConN "'FragmentOperation" [x]) = cstr__ ns a x
717 cstr_ ns@[] (UL (FunN "'FragOps'" [a])) (TyConN "'Tuple2" [TyConN "'FragmentOperation" [x], TyConN "'FragmentOperation" [y]]) = cstr__ ns a $ tTuple2 x y
716 cstr_ ns@[] (UL (FunN "'JoinTupleType" [x', y'])) (TyConN "'Tuple2" [x, y]) = t2 (cstr__ ns x' x) (cstr__ ns y' y) 718 cstr_ ns@[] (UL (FunN "'JoinTupleType" [x', y'])) (TyConN "'Tuple2" [x, y]) = t2 (cstr__ ns x' x) (cstr__ ns y' y)
717 cstr_ ns@[] (UL (FunN "'JoinTupleType" [x', y'])) x@NoTup = t2 (cstr__ ns x' x) (cstr__ ns y' TTuple0) 719 cstr_ ns@[] (UL (FunN "'JoinTupleType" [x', y'])) x@NoTup = t2 (cstr__ ns x' x) (cstr__ ns y' TTuple0)
718 cstr_ ns@[] (x@NoTup) (UL (FunN "'InterpolatedType" [x'])) = cstr__ ns (TInterpolated x) x' 720 cstr_ ns@[] (x@NoTup) (UL (FunN "'InterpolatedType" [x'])) = cstr__ ns (TInterpolated x) x'
@@ -1666,17 +1668,18 @@ compileFunAlts :: Bool -> (SExp -> SExp) -> (SExp -> SExp) -> GlobalEnv' -> [Stm
1666compileFunAlts par ulend lend ge ds = \case 1668compileFunAlts par ulend lend ge ds = \case
1667 [Instance{}] -> [] 1669 [Instance{}] -> []
1668 [Class n ps ms] -> compileFunAlts' SLabelEnd ge $ 1670 [Class n ps ms] -> compileFunAlts' SLabelEnd ge $
1669 [ FunAlt n (map noTA ps) Nothing $ foldr ST2 (SGlobal (fst n', "'Unit")) cstrs | Instance n' ps cstrs _ <- ds, n == n' ] 1671 [ TypeAnn n $ foldr (SPi Visible) SType $ replicate (length ps) $ Wildcard SType ]
1672 ++ [ FunAlt n (map noTA ps) Nothing $ foldr ST2 (SGlobal (fst n', "'Unit")) cstrs | Instance n' ps cstrs _ <- ds, n == n' ]
1670 ++ [ FunAlt n (map noTA $ replicate (length ps) (PVar (debugSI "compileFunAlts1", "generated_name0"))) Nothing $ SGlobal (debugSI "compileFunAlts2","'Empty") `SAppV` sLit noSI (LString $ "no instance of " ++ snd n ++ " on ???")] 1673 ++ [ FunAlt n (map noTA $ replicate (length ps) (PVar (debugSI "compileFunAlts1", "generated_name0"))) Nothing $ SGlobal (debugSI "compileFunAlts2","'Empty") `SAppV` sLit noSI (LString $ "no instance of " ++ snd n ++ " on ???")]
1671 ++ concat 1674 ++ concat
1672 [ TypeAnn (debugSI "compileFunAlts3", m) (addParamsS (map ((,) Hidden) ps) $ SPi Hidden (foldl SAppV (SGlobal n) $ downToS 0 $ length ps) $ upS t) 1675 [ TypeAnn m (addParamsS (map ((,) Hidden) ps) $ SPi Hidden (foldl SAppV (SGlobal n) $ downToS 0 $ length ps) $ upS t)
1673 : [ FunAlt (si,m) p Nothing $ {- SLam Hidden (Wildcard SType) $ upS $ -} substS 0 (Var ic) $ upS__ (ic+1) 1 e 1676 : [ FunAlt m p Nothing $ {- SLam Hidden (Wildcard SType) $ upS $ -} substS 0 (Var ic) $ upS__ (ic+1) 1 e
1674 | Instance n' i cstrs alts <- ds, n' == n 1677 | Instance n' i cstrs alts <- ds, n' == n
1675 , Let (_,m') ~Nothing ~Nothing ar e <- alts, m' == m 1678 , Let m' ~Nothing ~Nothing ar e <- alts, m' == m
1676 , let p = zip ((,) Hidden <$> ps) i -- ++ ((Hidden, Wildcard SType), PVar): [] 1679 , let p = zip ((,) Hidden <$> ps) i -- ++ ((Hidden, Wildcard SType), PVar): []
1677 , let ic = sum $ map varP i 1680 , let ic = sum $ map varP i
1678 ] 1681 ]
1679 | ((si, m), t) <- ms 1682 | (m, t) <- ms
1680 , let ts = fst $ getParamsS $ upS t 1683 , let ts = fst $ getParamsS $ upS t
1681 ] 1684 ]
1682 [TypeAnn n t] -> [Primitive n Nothing t | all (/= snd n) [n' | FunAlt (_, n') _ _ _ <- ds]] 1685 [TypeAnn n t] -> [Primitive n Nothing t | all (/= snd n) [n' | FunAlt (_, n') _ _ _ <- ds]]
diff --git a/testdata/accept/Builtins.out b/testdata/accept/Builtins.out
index 529cf76d..9fd0a762 100644
--- a/testdata/accept/Builtins.out
+++ b/testdata/accept/Builtins.out
@@ -39,10 +39,13 @@ tooltips:
39./testdata/accept/Builtins.lc 23:25-23:31 Type 39./testdata/accept/Builtins.lc 23:25-23:31 Type
40./testdata/accept/Builtins.lc 23:25-23:31 Type -> Type->Type 40./testdata/accept/Builtins.lc 23:25-23:31 Type -> Type->Type
41./testdata/accept/Builtins.lc 19:5-19:18 Type -> Type->Type 41./testdata/accept/Builtins.lc 19:5-19:18 Type -> Type->Type
42./testdata/accept/Builtins.lc 26:10-26:24 V0->Type
42./testdata/accept/Builtins.lc 26:10-26:24 Type 43./testdata/accept/Builtins.lc 26:10-26:24 Type
43./testdata/accept/Builtins.lc 25:7-25:21 {a} -> a->Type 44./testdata/accept/Builtins.lc 25:7-25:21 {a} -> a->Type
45./testdata/accept/Builtins.lc 28:10-28:21 V0->Type
44./testdata/accept/Builtins.lc 28:10-28:21 Type 46./testdata/accept/Builtins.lc 28:10-28:21 Type
45./testdata/accept/Builtins.lc 27:7-27:18 {a} -> a->Type 47./testdata/accept/Builtins.lc 27:7-27:18 {a} -> a->Type
48./testdata/accept/Builtins.lc 30:10-30:26 V0->Type
46./testdata/accept/Builtins.lc 30:10-30:26 Type 49./testdata/accept/Builtins.lc 30:10-30:26 Type
47./testdata/accept/Builtins.lc 29:7-29:23 {a} -> a->Type 50./testdata/accept/Builtins.lc 29:7-29:23 {a} -> a->Type
48./testdata/accept/Builtins.lc 32:17-32:21 Type 51./testdata/accept/Builtins.lc 32:17-32:21 Type
@@ -403,7 +406,8 @@ tooltips:
403./testdata/accept/Builtins.lc 102:30-102:31 'VecS V1 V0 406./testdata/accept/Builtins.lc 102:30-102:31 'VecS V1 V0
404./testdata/accept/Builtins.lc 102:30-102:31 'VecS V6 V5 407./testdata/accept/Builtins.lc 102:30-102:31 'VecS V6 V5
405./testdata/accept/Builtins.lc 102:1-102:12 {a} -> {b:'Nat} -> {c:'Nat} -> 'VecS a b -> 'VecS 'Swizz c -> 'VecS a c 408./testdata/accept/Builtins.lc 102:1-102:12 {a} -> {b:'Nat} -> {c:'Nat} -> 'VecS a b -> 'VecS 'Swizz c -> 'VecS a c
406./testdata/accept/Builtins.lc 109:10-109:16 V0 409./testdata/accept/Builtins.lc 109:10-110:30 V0->Type
410./testdata/accept/Builtins.lc 109:10-110:30 Type
407./testdata/accept/Builtins.lc 109:10-109:16 Type 411./testdata/accept/Builtins.lc 109:10-109:16 Type
408./testdata/accept/Builtins.lc 109:25-109:28 Type 412./testdata/accept/Builtins.lc 109:25-109:28 Type
409./testdata/accept/Builtins.lc 109:25-109:28 V1 413./testdata/accept/Builtins.lc 109:25-109:28 V1
@@ -411,7 +415,8 @@ tooltips:
411./testdata/accept/Builtins.lc 110:10-110:16 Type 415./testdata/accept/Builtins.lc 110:10-110:16 Type
412./testdata/accept/Builtins.lc 110:25-110:30 Type 416./testdata/accept/Builtins.lc 110:25-110:30 Type
413./testdata/accept/Builtins.lc 107:7-107:13 Type->Type 417./testdata/accept/Builtins.lc 107:7-107:13 Type->Type
414./testdata/accept/Builtins.lc 117:10-117:13 V0 418./testdata/accept/Builtins.lc 117:10-125:19 V0->Type
419./testdata/accept/Builtins.lc 117:10-125:19 Type
415./testdata/accept/Builtins.lc 117:10-117:13 Type 420./testdata/accept/Builtins.lc 117:10-117:13 Type
416./testdata/accept/Builtins.lc 117:14-117:17 Type 421./testdata/accept/Builtins.lc 117:14-117:17 Type
417./testdata/accept/Builtins.lc 117:14-117:17 V1 422./testdata/accept/Builtins.lc 117:14-117:17 V1
@@ -470,7 +475,8 @@ tooltips:
470./testdata/accept/Builtins.lc 128:12-128:27 {a:'Unit} -> 'Float->'Float 475./testdata/accept/Builtins.lc 128:12-128:27 {a:'Unit} -> 'Float->'Float
471./testdata/accept/Builtins.lc 128:12-128:27 'Float->'Float 476./testdata/accept/Builtins.lc 128:12-128:27 'Float->'Float
472./testdata/accept/Builtins.lc 115:3-115:9 {a} -> {b : 'Num a} -> a->a 477./testdata/accept/Builtins.lc 115:3-115:9 {a} -> {b : 'Num a} -> a->a
473./testdata/accept/Builtins.lc 138:10-138:19 V0 478./testdata/accept/Builtins.lc 138:10-184:19 V0->Type
479./testdata/accept/Builtins.lc 138:10-184:19 Type
474./testdata/accept/Builtins.lc 138:10-138:19 Type 480./testdata/accept/Builtins.lc 138:10-138:19 Type
475./testdata/accept/Builtins.lc 138:20-138:24 Type 481./testdata/accept/Builtins.lc 138:20-138:24 Type
476./testdata/accept/Builtins.lc 138:20-138:24 V1 482./testdata/accept/Builtins.lc 138:20-138:24 V1
@@ -827,7 +833,8 @@ tooltips:
827./testdata/accept/Builtins.lc 189:26-189:30 'Bool 833./testdata/accept/Builtins.lc 189:26-189:30 'Bool
828./testdata/accept/Builtins.lc 189:31-189:35 'Bool 834./testdata/accept/Builtins.lc 189:31-189:35 'Bool
829./testdata/accept/Builtins.lc 135:3-135:10 {a} -> {b : 'Component a}->a 835./testdata/accept/Builtins.lc 135:3-135:10 {a} -> {b : 'Component a}->a
830./testdata/accept/Builtins.lc 193:10-193:18 V0 836./testdata/accept/Builtins.lc 193:10-194:29 V0->Type
837./testdata/accept/Builtins.lc 193:10-194:29 Type
831./testdata/accept/Builtins.lc 193:10-193:18 Type 838./testdata/accept/Builtins.lc 193:10-193:18 Type
832./testdata/accept/Builtins.lc 193:25-193:28 Type 839./testdata/accept/Builtins.lc 193:25-193:28 Type
833./testdata/accept/Builtins.lc 193:25-193:28 V1 840./testdata/accept/Builtins.lc 193:25-193:28 V1
@@ -835,7 +842,8 @@ tooltips:
835./testdata/accept/Builtins.lc 194:10-194:18 Type 842./testdata/accept/Builtins.lc 194:10-194:18 Type
836./testdata/accept/Builtins.lc 194:25-194:29 Type 843./testdata/accept/Builtins.lc 194:25-194:29 Type
837./testdata/accept/Builtins.lc 191:7-191:15 Type->Type 844./testdata/accept/Builtins.lc 191:7-191:15 Type->Type
838./testdata/accept/Builtins.lc 198:10-198:18 V0 845./testdata/accept/Builtins.lc 198:10-210:18 V0->Type
846./testdata/accept/Builtins.lc 198:10-210:18 Type
839./testdata/accept/Builtins.lc 198:10-198:18 Type 847./testdata/accept/Builtins.lc 198:10-198:18 Type
840./testdata/accept/Builtins.lc 198:25-198:30 Type 848./testdata/accept/Builtins.lc 198:25-198:30 Type
841./testdata/accept/Builtins.lc 198:25-198:30 V1 849./testdata/accept/Builtins.lc 198:25-198:30 V1
@@ -1454,652 +1462,704 @@ tooltips:
1454./testdata/accept/Builtins.lc 453:1-453:13 {a} -> {b} -> {c:'Nat} -> {d:'DepthHandler} -> a->b -> 'Stream ('Fragment c d a) -> 'Stream ('Fragment c d b) 1462./testdata/accept/Builtins.lc 453:1-453:13 {a} -> {b} -> {c:'Nat} -> {d:'DepthHandler} -> a->b -> 'Stream ('Fragment c d a) -> 'Stream ('Fragment c d b)
1455./testdata/accept/Builtins.lc 458:13-458:26 Type->Type 1463./testdata/accept/Builtins.lc 458:13-458:26 Type->Type
1456./testdata/accept/Builtins.lc 463:13-463:28 Type->Type 1464./testdata/accept/Builtins.lc 463:13-463:28 Type->Type
1457./testdata/accept/Builtins.lc 465:24-465:27 Type 1465./testdata/accept/Builtins.lc 466:10-467:36 V0->Type
1458./testdata/accept/Builtins.lc 465:6-465:17 'Nat -> Type->Type 1466./testdata/accept/Builtins.lc 466:10-467:36 Type
1459./testdata/accept/Builtins.lc 466:40-466:139 Type 1467./testdata/accept/Builtins.lc 466:10-466:23 Type->Type
1460./testdata/accept/Builtins.lc 466:40-466:41 Type 1468./testdata/accept/Builtins.lc 466:10-466:23 Type
1461./testdata/accept/Builtins.lc 466:44-466:51 Type->Type 1469./testdata/accept/Builtins.lc 466:10-466:23 Type -> 'Nat->Type
1462./testdata/accept/Builtins.lc 466:40-466:139 V3 1470./testdata/accept/Builtins.lc 466:10-466:23 'Nat->Type
1463./testdata/accept/Builtins.lc 466:63-466:69 Type->Type 1471./testdata/accept/Builtins.lc 466:37-466:44 Type
1464./testdata/accept/Builtins.lc 466:71-466:79 'Nat -> 'DepthHandler -> Type->Type 1472./testdata/accept/Builtins.lc 466:37-466:44 V1
1465./testdata/accept/Builtins.lc 466:80-466:81 'Nat 1473./testdata/accept/Builtins.lc 467:10-467:36 Type
1466./testdata/accept/Builtins.lc 466:40-466:139 'DepthHandler 1474./testdata/accept/Builtins.lc 467:10-467:23 Type->Type
1467./testdata/accept/Builtins.lc 466:85-466:99 Type 1475./testdata/accept/Builtins.lc 467:10-467:23 Type
1468./testdata/accept/Builtins.lc 466:85-466:97 Type->Type 1476./testdata/accept/Builtins.lc 467:31-467:36 Type
1469./testdata/accept/Builtins.lc 466:98-466:99 Type 1477./testdata/accept/Builtins.lc 465:7-465:20 Type->Type
1470./testdata/accept/Builtins.lc 466:105-466:139 Type 1478./testdata/accept/Builtins.lc 465:7-465:65 Type
1471./testdata/accept/Builtins.lc 466:105-466:116 'Nat -> Type->Type 1479./testdata/accept/Builtins.lc 465:46-465:65 Type
1472./testdata/accept/Builtins.lc 466:117-466:118 'Nat 1480./testdata/accept/Builtins.lc 465:46-465:63 Type->Type
1473./testdata/accept/Builtins.lc 466:119-466:120 Type 1481./testdata/accept/Builtins.lc 465:64-465:65 Type
1474./testdata/accept/Builtins.lc 466:124-466:139 Type 1482./testdata/accept/Builtins.lc 466:37-467:77 {a} -> {b : 'DefaultFragOp a} -> 'FragmentOperation a
1475./testdata/accept/Builtins.lc 466:124-466:135 'Nat -> Type->Type 1483./testdata/accept/Builtins.lc 466:37-467:77 {a : 'DefaultFragOp V0} -> 'FragmentOperation V1
1476./testdata/accept/Builtins.lc 466:136-466:137 'Nat 1484./testdata/accept/Builtins.lc 466:69-466:111 a:Type -> {b : 'DefaultFragOp ('Color a)} -> 'FragmentOperation ('Color a)
1477./testdata/accept/Builtins.lc 466:138-466:139 Type 1485./testdata/accept/Builtins.lc 466:69-466:111 {a : 'DefaultFragOp ('Color V0)} -> 'FragmentOperation ('Color V1)
1478./testdata/accept/Builtins.lc 466:3-466:13 {a:'Nat} -> {b} -> {c} -> {d:'DepthHandler} -> {e : b ~ 'FragOps c} -> c -> 'Stream ('Fragment a d ('RemSemantics b)) -> 'FrameBuffer a b -> 'FrameBuffer a b 1486./testdata/accept/Builtins.lc 466:69-466:111 a:Type -> b:'Nat -> {c : 'DefaultFragOp ('Color ('VecS a b))} -> 'FragmentOperation ('Color ('VecS a b))
1479./testdata/accept/Builtins.lc 467:20-467:117 Type 1487./testdata/accept/Builtins.lc 466:69-466:111 a:'Nat -> {b : 'DefaultFragOp ('Color ('VecS V1 a))} -> 'FragmentOperation ('Color ('VecS V2 a))
1480./testdata/accept/Builtins.lc 467:20-467:36 {a} -> a->Type 1488./testdata/accept/Builtins.lc 466:69-466:111 {a : 'DefaultFragOp ('Color ('VecS V1 V0))} -> 'FragmentOperation ('Color ('VecS V2 V1))
1481./testdata/accept/Builtins.lc 467:37-467:38 V0 1489./testdata/accept/Builtins.lc 466:69-466:111 {a : 'DefaultFragOp ('Color ('VecS 'Float V0))} -> 'FragmentOperation ('Color ('VecS 'Float V1))
1482./testdata/accept/Builtins.lc 467:37-467:38 Type 1490./testdata/accept/Builtins.lc 466:69-466:111 a:'Nat -> {b : 'DefaultFragOp ('Color ('VecS 'Float (Succ a)))} -> 'FragmentOperation ('Color ('VecS 'Float (Succ a)))
1483./testdata/accept/Builtins.lc 467:40-467:55 Type->Type 1491./testdata/accept/Builtins.lc 466:69-466:111 {a : 'DefaultFragOp ('Color ('VecS 'Float (Succ V0)))} -> 'FragmentOperation ('Color ('VecS 'Float (Succ V1)))
1484./testdata/accept/Builtins.lc 467:20-467:117 V2 1492./testdata/accept/Builtins.lc 466:69-466:111 a:'Nat -> {b : 'DefaultFragOp ('Color ('VecS 'Float (Succ (Succ a))))} -> 'FragmentOperation ('Color ('VecS 'Float (Succ (Succ a))))
1485./testdata/accept/Builtins.lc 467:59-467:74 Type 1493./testdata/accept/Builtins.lc 466:69-466:111 {a : 'DefaultFragOp ('Color ('VecS 'Float (Succ (Succ V0))))} -> 'FragmentOperation ('Color ('VecS 'Float (Succ (Succ V1))))
1486./testdata/accept/Builtins.lc 467:59-467:70 'Nat -> Type->Type 1494./testdata/accept/Builtins.lc 466:69-466:111 a:'Nat -> {b : 'DefaultFragOp ('Color ('VecS 'Float (Succ (Succ (Succ a)))))} -> 'FragmentOperation ('Color ('VecS 'Float (Succ (Succ (Succ a)))))
1487./testdata/accept/Builtins.lc 467:71-467:72 'Nat 1495./testdata/accept/Builtins.lc 466:69-466:111 {a : 'DefaultFragOp ('Color ('VecS 'Float (Succ (Succ (Succ V0)))))} -> 'FragmentOperation ('Color ('VecS 'Float (Succ (Succ (Succ V1)))))
1488./testdata/accept/Builtins.lc 467:73-467:74 Type 1496./testdata/accept/Builtins.lc 466:69-466:111 a:'Nat -> {b : 'DefaultFragOp ('Color ('VecS 'Float (Succ (Succ (Succ (Succ a))))))} -> 'FragmentOperation ('Color ('VecS 'Float (Succ (Succ (Succ (Succ a))))))
1489./testdata/accept/Builtins.lc 467:77-467:90 Type->Type 1497./testdata/accept/Builtins.lc 466:69-466:111 {a : 'DefaultFragOp ('Color ('VecS 'Float (Succ (Succ (Succ (Succ V0))))))} -> 'FragmentOperation ('Color ('VecS 'Float (Succ (Succ (Succ (Succ V1))))))
1490./testdata/accept/Builtins.lc 467:102-467:117 Type 1498./testdata/accept/Builtins.lc 466:69-466:111 {a:'Unit} -> 'FragmentOperation ('Color ('VecS 'Float (Succ (Succ (Succ (Succ Zero))))))
1491./testdata/accept/Builtins.lc 467:102-467:113 'Nat -> Type->Type 1499./testdata/accept/Builtins.lc 466:69-466:76 {a} -> {b:'Nat} -> {c} -> {d} -> {e : a ~ 'VecScalar b 'Bool} -> {f : c ~ 'VecScalar b d} -> {g : 'Num d} -> 'Blending d -> a -> 'FragmentOperation ('Color c)
1492./testdata/accept/Builtins.lc 467:114-467:115 'Nat 1500./testdata/accept/Builtins.lc 466:77-466:87 'Blending V1
1493./testdata/accept/Builtins.lc 467:116-467:117 Type 1501./testdata/accept/Builtins.lc 466:77-466:87 {a} -> 'Blending a
1494./testdata/accept/Builtins.lc 467:3-467:14 {a:'Nat} -> {b} -> {c} -> {d : 'SameLayerCounts c} -> {e : 'FrameBuffer a b ~ 'TFFrameBuffer c} -> c -> 'FrameBuffer a b 1502./testdata/accept/Builtins.lc 466:89-466:111 'VecScalar V2 'Bool
1495./testdata/accept/Builtins.lc 469:34-469:44 {a:'Nat} -> {b} -> {c} -> {d:'DepthHandler} -> {e : b ~ 'FragOps c} -> c -> 'Stream ('Fragment a d ('RemSemantics b)) -> 'FrameBuffer a b -> 'FrameBuffer a b 1503./testdata/accept/Builtins.lc 466:89-466:91 {a} -> a -> a -> a -> a -> 'VecS a (Succ (Succ (Succ (Succ Zero))))
1496./testdata/accept/Builtins.lc 469:50-469:62 'Stream ('Fragment V1 V0 ('RemSemantics ('FragOps V9))) 1504./testdata/accept/Builtins.lc 466:92-466:96 V0
1497./testdata/accept/Builtins.lc 469:50-469:62 {a} -> {b} -> {c:'Nat} -> {d:'DepthHandler} -> a->b -> 'Stream ('Fragment c d a) -> 'Stream ('Fragment c d b) 1505./testdata/accept/Builtins.lc 466:92-466:96 'Bool
1498./testdata/accept/Builtins.lc 469:1-469:11 {a} -> {b:'Nat} -> {c:'DepthHandler} -> {d} -> a -> (d -> 'RemSemantics ('FragOps a)) -> 'Stream ('Fragment b c d) -> 'FrameBuffer b ('FragOps a) -> 'FrameBuffer b ('FragOps a) 1506./testdata/accept/Builtins.lc 466:97-466:101 'Bool
1499./testdata/accept/Builtins.lc 471:1-471:20 {a} -> a->a 1507./testdata/accept/Builtins.lc 466:102-466:106 'Bool
1500./testdata/accept/Builtins.lc 473:15-473:18 Type 1508./testdata/accept/Builtins.lc 466:107-466:111 'Bool
1501./testdata/accept/Builtins.lc 473:22-473:34 Type 1509./testdata/accept/Builtins.lc 467:31-467:77 {a : 'DefaultFragOp V1} -> 'FragmentOperation V2
1502./testdata/accept/Builtins.lc 473:22-473:26 Type 1510./testdata/accept/Builtins.lc 467:60-467:77 a:Type -> {b : 'DefaultFragOp ('Depth a)} -> 'FragmentOperation ('Depth a)
1503./testdata/accept/Builtins.lc 473:30-473:34 Type 1511./testdata/accept/Builtins.lc 467:60-467:77 {a : 'DefaultFragOp ('Depth V0)} -> 'FragmentOperation ('Depth V1)
1504./testdata/accept/Builtins.lc 473:6-473:11 'Nat -> Type->Type 1512./testdata/accept/Builtins.lc 467:60-467:77 {a:'Unit} -> 'FragmentOperation ('Depth 'Float)
1505./testdata/accept/Builtins.lc 474:48-475:56 Type 1513./testdata/accept/Builtins.lc 467:60-467:67 'ComparisonFunction -> 'Bool -> 'FragmentOperation ('Depth 'Float)
1506./testdata/accept/Builtins.lc 474:48-474:51 Type->Type 1514./testdata/accept/Builtins.lc 467:68-467:72 'ComparisonFunction
1507./testdata/accept/Builtins.lc 474:52-474:53 Type 1515./testdata/accept/Builtins.lc 467:73-467:77 'Bool
1508./testdata/accept/Builtins.lc 474:52-474:53 V3 1516./testdata/accept/Builtins.lc 465:29-465:42 {a} -> {b} -> {c : 'DefaultFragOp b} -> 'FragmentOperation b
1509./testdata/accept/Builtins.lc 474:55-475:56 Type 1517./testdata/accept/Builtins.lc 474:24-474:27 Type
1510./testdata/accept/Builtins.lc 474:55-474:60 Type 1518./testdata/accept/Builtins.lc 474:6-474:17 'Nat -> Type->Type
1511./testdata/accept/Builtins.lc 474:55-474:60 V2 1519./testdata/accept/Builtins.lc 475:19-475:109 Type
1512./testdata/accept/Builtins.lc 474:63-474:76 Type 1520./testdata/accept/Builtins.lc 475:19-475:27 Type->Type
1513./testdata/accept/Builtins.lc 474:63-474:72 'Nat -> Type->Type 1521./testdata/accept/Builtins.lc 475:28-475:29 Type
1514./testdata/accept/Builtins.lc 474:73-474:74 'Nat 1522./testdata/accept/Builtins.lc 475:33-475:39 Type->Type
1515./testdata/accept/Builtins.lc 474:73-474:74 V4 1523./testdata/accept/Builtins.lc 475:41-475:49 'Nat -> 'DepthHandler -> Type->Type
1516./testdata/accept/Builtins.lc 474:75-474:76 Type 1524./testdata/accept/Builtins.lc 475:50-475:51 'Nat
1517./testdata/accept/Builtins.lc 475:26-475:56 Type 1525./testdata/accept/Builtins.lc 475:19-475:109 'DepthHandler
1518./testdata/accept/Builtins.lc 475:26-475:31 Type 1526./testdata/accept/Builtins.lc 475:19-475:109 V2
1519./testdata/accept/Builtins.lc 475:36-475:56 Type 1527./testdata/accept/Builtins.lc 475:55-475:69 Type
1520./testdata/accept/Builtins.lc 475:36-475:41 'Nat -> Type->Type 1528./testdata/accept/Builtins.lc 475:55-475:67 Type->Type
1521./testdata/accept/Builtins.lc 475:42-475:43 'Nat 1529./testdata/accept/Builtins.lc 475:68-475:69 Type
1522./testdata/accept/Builtins.lc 475:42-475:43 V7 1530./testdata/accept/Builtins.lc 475:75-475:109 Type
1523./testdata/accept/Builtins.lc 475:45-475:56 Type 1531./testdata/accept/Builtins.lc 475:75-475:86 'Nat -> Type->Type
1524./testdata/accept/Builtins.lc 475:45-475:50 Type->Type 1532./testdata/accept/Builtins.lc 475:87-475:88 'Nat
1525./testdata/accept/Builtins.lc 475:51-475:56 Type 1533./testdata/accept/Builtins.lc 475:89-475:90 Type
1526./testdata/accept/Builtins.lc 474:3-474:13 {a:'Nat} -> {b:'Nat} -> {c} -> {d} -> {e : 'Num c} -> {f : d ~ 'VecScalar b c} -> d -> 'Image a ('Color d) 1534./testdata/accept/Builtins.lc 475:94-475:109 Type
1527./testdata/accept/Builtins.lc 476:37-476:67 Type 1535./testdata/accept/Builtins.lc 475:94-475:105 'Nat -> Type->Type
1528./testdata/accept/Builtins.lc 476:37-476:42 Type 1536./testdata/accept/Builtins.lc 475:106-475:107 'Nat
1529./testdata/accept/Builtins.lc 476:47-476:67 Type 1537./testdata/accept/Builtins.lc 475:108-475:109 Type
1530./testdata/accept/Builtins.lc 476:47-476:52 'Nat -> Type->Type 1538./testdata/accept/Builtins.lc 475:3-475:13 {a:'Nat} -> {b} -> {c:'DepthHandler} -> 'FragOps' b -> 'Stream ('Fragment a c ('RemSemantics b)) -> 'FrameBuffer a b -> 'FrameBuffer a b
1531./testdata/accept/Builtins.lc 476:53-476:54 'Nat 1539./testdata/accept/Builtins.lc 476:20-476:117 Type
1532./testdata/accept/Builtins.lc 476:53-476:54 V2 1540./testdata/accept/Builtins.lc 476:20-476:36 {a} -> a->Type
1533./testdata/accept/Builtins.lc 476:56-476:67 Type 1541./testdata/accept/Builtins.lc 476:37-476:38 V0
1534./testdata/accept/Builtins.lc 476:56-476:61 Type->Type 1542./testdata/accept/Builtins.lc 476:37-476:38 Type
1535./testdata/accept/Builtins.lc 476:62-476:67 Type 1543./testdata/accept/Builtins.lc 476:40-476:55 Type->Type
1536./testdata/accept/Builtins.lc 476:3-476:13 {a:'Nat} -> 'Float -> 'Image a ('Depth 'Float) 1544./testdata/accept/Builtins.lc 476:20-476:117 V2
1537./testdata/accept/Builtins.lc 477:37-477:67 Type 1545./testdata/accept/Builtins.lc 476:59-476:74 Type
1538./testdata/accept/Builtins.lc 477:37-477:40 Type 1546./testdata/accept/Builtins.lc 476:59-476:70 'Nat -> Type->Type
1539./testdata/accept/Builtins.lc 477:47-477:67 Type 1547./testdata/accept/Builtins.lc 476:71-476:72 'Nat
1540./testdata/accept/Builtins.lc 477:47-477:52 'Nat -> Type->Type 1548./testdata/accept/Builtins.lc 476:73-476:74 Type
1541./testdata/accept/Builtins.lc 477:53-477:54 'Nat 1549./testdata/accept/Builtins.lc 476:77-476:90 Type->Type
1542./testdata/accept/Builtins.lc 477:53-477:54 V2 1550./testdata/accept/Builtins.lc 476:102-476:117 Type
1543./testdata/accept/Builtins.lc 477:56-477:67 Type 1551./testdata/accept/Builtins.lc 476:102-476:113 'Nat -> Type->Type
1544./testdata/accept/Builtins.lc 477:56-477:63 Type->Type 1552./testdata/accept/Builtins.lc 476:114-476:115 'Nat
1545./testdata/accept/Builtins.lc 477:64-477:67 Type 1553./testdata/accept/Builtins.lc 476:116-476:117 Type
1546./testdata/accept/Builtins.lc 477:3-477:15 {a:'Nat} -> 'Int -> 'Image a ('Stencil 'Int) 1554./testdata/accept/Builtins.lc 476:3-476:14 {a:'Nat} -> {b} -> {c} -> {d : 'SameLayerCounts c} -> {e : 'FrameBuffer a b ~ 'TFFrameBuffer c} -> c -> 'FrameBuffer a b
1547./testdata/accept/Builtins.lc 480:26-480:54 Type 1555./testdata/accept/Builtins.lc 478:34-478:44 {a:'Nat} -> {b} -> {c:'DepthHandler} -> 'FragOps' b -> 'Stream ('Fragment a c ('RemSemantics b)) -> 'FrameBuffer a b -> 'FrameBuffer a b
1548./testdata/accept/Builtins.lc 480:26-480:37 'Nat -> Type->Type 1556./testdata/accept/Builtins.lc 478:50-478:62 'Stream ('Fragment V2 V0 ('RemSemantics V1))
1549./testdata/accept/Builtins.lc 480:26-480:54 V1 1557./testdata/accept/Builtins.lc 478:50-478:62 {a} -> {b} -> {c:'Nat} -> {d:'DepthHandler} -> a->b -> 'Stream ('Fragment c d a) -> 'Stream ('Fragment c d b)
1550./testdata/accept/Builtins.lc 480:45-480:50 'Nat -> Type->Type 1558./testdata/accept/Builtins.lc 478:1-478:11 {a:'Nat} -> {b} -> {c:'DepthHandler} -> {d} -> 'FragOps' b -> (d -> 'RemSemantics b) -> 'Stream ('Fragment a c d) -> 'FrameBuffer a b -> 'FrameBuffer a b
1551./testdata/accept/Builtins.lc 480:3-480:11 {a} -> 'FrameBuffer (Succ Zero) a -> 'Image (Succ Zero) a 1559./testdata/accept/Builtins.lc 480:1-480:20 {a} -> a->a
1552./testdata/accept/Builtins.lc 481:26-481:37 'Nat -> Type->Type 1560./testdata/accept/Builtins.lc 482:15-482:18 Type
1553./testdata/accept/Builtins.lc 481:40-481:74 Type 1561./testdata/accept/Builtins.lc 482:22-482:34 Type
1554./testdata/accept/Builtins.lc 481:40-481:74 Type -> Type->Type 1562./testdata/accept/Builtins.lc 482:22-482:26 Type
1555./testdata/accept/Builtins.lc 481:41-481:52 Type 1563./testdata/accept/Builtins.lc 482:30-482:34 Type
1556./testdata/accept/Builtins.lc 481:41-481:46 Type->Type 1564./testdata/accept/Builtins.lc 482:6-482:11 'Nat -> Type->Type
1557./testdata/accept/Builtins.lc 481:47-481:52 Type 1565./testdata/accept/Builtins.lc 483:48-484:56 Type
1558./testdata/accept/Builtins.lc 481:54-481:72 Type 1566./testdata/accept/Builtins.lc 483:48-483:51 Type->Type
1559./testdata/accept/Builtins.lc 481:54-481:59 Type->Type 1567./testdata/accept/Builtins.lc 483:52-483:53 Type
1560./testdata/accept/Builtins.lc 481:61-481:72 Type 1568./testdata/accept/Builtins.lc 483:52-483:53 V3
1561./testdata/accept/Builtins.lc 481:61-481:64 'Nat -> Type->Type 1569./testdata/accept/Builtins.lc 483:55-484:56 Type
1562./testdata/accept/Builtins.lc 481:67-481:72 Type 1570./testdata/accept/Builtins.lc 483:55-483:60 Type
1563./testdata/accept/Builtins.lc 481:78-481:105 Type 1571./testdata/accept/Builtins.lc 483:55-483:60 V2
1564./testdata/accept/Builtins.lc 481:78-481:83 'Nat -> Type->Type 1572./testdata/accept/Builtins.lc 483:63-483:76 Type
1565./testdata/accept/Builtins.lc 481:87-481:105 Type 1573./testdata/accept/Builtins.lc 483:63-483:72 'Nat -> Type->Type
1566./testdata/accept/Builtins.lc 481:87-481:92 Type->Type 1574./testdata/accept/Builtins.lc 483:73-483:74 'Nat
1567./testdata/accept/Builtins.lc 481:94-481:105 Type 1575./testdata/accept/Builtins.lc 483:73-483:74 V4
1568./testdata/accept/Builtins.lc 481:94-481:97 'Nat -> Type->Type 1576./testdata/accept/Builtins.lc 483:75-483:76 Type
1569./testdata/accept/Builtins.lc 481:100-481:105 Type 1577./testdata/accept/Builtins.lc 484:26-484:56 Type
1570./testdata/accept/Builtins.lc 481:3-481:16 'FrameBuffer (Succ Zero) ('Tuple2 ('Depth 'Float) ('Color ('VecS 'Float (Succ (Succ (Succ (Succ Zero))))))) -> 'Image (Succ Zero) ('Color ('VecS 'Float (Succ (Succ (Succ (Succ Zero)))))) 1578./testdata/accept/Builtins.lc 484:26-484:31 Type
1571./testdata/accept/Builtins.lc 475:42-481:105 Type 1579./testdata/accept/Builtins.lc 484:36-484:56 Type
1572./testdata/accept/Builtins.lc 475:42-475:56 Type 1580./testdata/accept/Builtins.lc 484:36-484:41 'Nat -> Type->Type
1573./testdata/accept/Builtins.lc 476:53-481:105 Type 1581./testdata/accept/Builtins.lc 484:42-484:43 'Nat
1574./testdata/accept/Builtins.lc 476:53-476:67 Type 1582./testdata/accept/Builtins.lc 484:42-484:43 V7
1575./testdata/accept/Builtins.lc 477:53-481:105 Type 1583./testdata/accept/Builtins.lc 484:45-484:56 Type
1576./testdata/accept/Builtins.lc 477:53-477:67 Type 1584./testdata/accept/Builtins.lc 484:45-484:50 Type->Type
1577./testdata/accept/Builtins.lc 480:26-481:105 Type 1585./testdata/accept/Builtins.lc 484:51-484:56 Type
1578./testdata/accept/Builtins.lc 483:6-483:12 Type 1586./testdata/accept/Builtins.lc 483:3-483:13 {a:'Nat} -> {b:'Nat} -> {c} -> {d} -> {e : 'Num c} -> {f : d ~ 'VecScalar b c} -> d -> 'Image a ('Color d)
1579./testdata/accept/Builtins.lc 484:26-484:51 Type 1587./testdata/accept/Builtins.lc 485:37-485:67 Type
1580./testdata/accept/Builtins.lc 484:26-484:37 'Nat -> Type->Type 1588./testdata/accept/Builtins.lc 485:37-485:42 Type
1581./testdata/accept/Builtins.lc 484:26-484:51 'Nat 1589./testdata/accept/Builtins.lc 485:47-485:67 Type
1582./testdata/accept/Builtins.lc 484:26-484:51 V3 1590./testdata/accept/Builtins.lc 485:47-485:52 'Nat -> Type->Type
1583./testdata/accept/Builtins.lc 484:26-484:51 V1 1591./testdata/accept/Builtins.lc 485:53-485:54 'Nat
1584./testdata/accept/Builtins.lc 484:45-484:51 Type 1592./testdata/accept/Builtins.lc 485:53-485:54 V2
1585./testdata/accept/Builtins.lc 484:3-484:12 {a:'Nat} -> {b} -> 'FrameBuffer a b -> 'Output 1593./testdata/accept/Builtins.lc 485:56-485:67 Type
1586./testdata/accept/Builtins.lc 490:34-490:73 Type 1594./testdata/accept/Builtins.lc 485:56-485:61 Type->Type
1587./testdata/accept/Builtins.lc 490:34-490:37 Type->Type 1595./testdata/accept/Builtins.lc 485:62-485:67 Type
1588./testdata/accept/Builtins.lc 490:39-490:55 Type->Type 1596./testdata/accept/Builtins.lc 485:3-485:13 {a:'Nat} -> 'Float -> 'Image a ('Depth 'Float)
1589./testdata/accept/Builtins.lc 490:34-490:73 V1 1597./testdata/accept/Builtins.lc 486:37-486:67 Type
1590./testdata/accept/Builtins.lc 490:1-490:8 {a} -> {b : 'Num ('MatVecScalarElem a)} -> a -> a->a 1598./testdata/accept/Builtins.lc 486:37-486:40 Type
1591./testdata/accept/Builtins.lc 490:10-490:17 {a} -> {b : 'Num ('MatVecScalarElem a)} -> a -> a->a 1599./testdata/accept/Builtins.lc 486:47-486:67 Type
1592./testdata/accept/Builtins.lc 490:19-490:26 {a} -> {b : 'Num ('MatVecScalarElem a)} -> a -> a->a 1600./testdata/accept/Builtins.lc 486:47-486:52 'Nat -> Type->Type
1593./testdata/accept/Builtins.lc 491:35-491:80 Type 1601./testdata/accept/Builtins.lc 486:53-486:54 'Nat
1594./testdata/accept/Builtins.lc 491:35-491:80 V3 1602./testdata/accept/Builtins.lc 486:53-486:54 V2
1595./testdata/accept/Builtins.lc 491:39-491:55 Type->Type 1603./testdata/accept/Builtins.lc 486:56-486:67 Type
1596./testdata/accept/Builtins.lc 491:35-491:80 V1 1604./testdata/accept/Builtins.lc 486:56-486:63 Type->Type
1597./testdata/accept/Builtins.lc 491:59-491:62 Type->Type 1605./testdata/accept/Builtins.lc 486:64-486:67 Type
1598./testdata/accept/Builtins.lc 491:1-491:9 {a} -> {b} -> {c : a ~ 'MatVecScalarElem b} -> {d : 'Num a} -> b -> a->b 1606./testdata/accept/Builtins.lc 486:3-486:15 {a:'Nat} -> 'Int -> 'Image a ('Stencil 'Int)
1599./testdata/accept/Builtins.lc 491:11-491:19 {a} -> {b} -> {c : a ~ 'MatVecScalarElem b} -> {d : 'Num a} -> b -> a->b 1607./testdata/accept/Builtins.lc 489:26-489:54 Type
1600./testdata/accept/Builtins.lc 491:21-491:29 {a} -> {b} -> {c : a ~ 'MatVecScalarElem b} -> {d : 'Num a} -> b -> a->b 1608./testdata/accept/Builtins.lc 489:26-489:37 'Nat -> Type->Type
1601./testdata/accept/Builtins.lc 492:35-492:75 Type 1609./testdata/accept/Builtins.lc 489:26-489:54 V1
1602./testdata/accept/Builtins.lc 492:35-492:38 Type->Type 1610./testdata/accept/Builtins.lc 489:45-489:50 'Nat -> Type->Type
1603./testdata/accept/Builtins.lc 492:35-492:75 V5 1611./testdata/accept/Builtins.lc 489:3-489:11 {a} -> 'FrameBuffer (Succ Zero) a -> 'Image (Succ Zero) a
1604./testdata/accept/Builtins.lc 492:35-492:75 V4 1612./testdata/accept/Builtins.lc 490:26-490:37 'Nat -> Type->Type
1605./testdata/accept/Builtins.lc 492:46-492:55 'Nat -> Type->Type 1613./testdata/accept/Builtins.lc 490:40-490:74 Type
1606./testdata/accept/Builtins.lc 492:35-492:75 'Nat 1614./testdata/accept/Builtins.lc 490:40-490:74 Type -> Type->Type
1607./testdata/accept/Builtins.lc 492:35-492:75 V2 1615./testdata/accept/Builtins.lc 490:41-490:52 Type
1608./testdata/accept/Builtins.lc 492:1-492:8 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> b->b 1616./testdata/accept/Builtins.lc 490:41-490:46 Type->Type
1609./testdata/accept/Builtins.lc 492:10-492:17 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> b->b 1617./testdata/accept/Builtins.lc 490:47-490:52 Type
1610./testdata/accept/Builtins.lc 493:35-493:75 Type 1618./testdata/accept/Builtins.lc 490:54-490:72 Type
1611./testdata/accept/Builtins.lc 493:35-493:38 Type->Type 1619./testdata/accept/Builtins.lc 490:54-490:59 Type->Type
1612./testdata/accept/Builtins.lc 493:35-493:75 V5 1620./testdata/accept/Builtins.lc 490:61-490:72 Type
1613./testdata/accept/Builtins.lc 493:35-493:75 V4 1621./testdata/accept/Builtins.lc 490:61-490:64 'Nat -> Type->Type
1614./testdata/accept/Builtins.lc 493:46-493:55 'Nat -> Type->Type 1622./testdata/accept/Builtins.lc 490:67-490:72 Type
1615./testdata/accept/Builtins.lc 493:35-493:75 'Nat 1623./testdata/accept/Builtins.lc 490:78-490:105 Type
1616./testdata/accept/Builtins.lc 493:35-493:75 V2 1624./testdata/accept/Builtins.lc 490:78-490:83 'Nat -> Type->Type
1617./testdata/accept/Builtins.lc 493:1-493:9 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> a->b 1625./testdata/accept/Builtins.lc 490:87-490:105 Type
1618./testdata/accept/Builtins.lc 493:11-493:19 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> a->b 1626./testdata/accept/Builtins.lc 490:87-490:92 Type->Type
1619./testdata/accept/Builtins.lc 494:34-494:71 Type 1627./testdata/accept/Builtins.lc 490:94-490:105 Type
1620./testdata/accept/Builtins.lc 494:34-494:40 Type->Type 1628./testdata/accept/Builtins.lc 490:94-490:97 'Nat -> Type->Type
1621./testdata/accept/Builtins.lc 494:42-494:58 Type->Type 1629./testdata/accept/Builtins.lc 490:100-490:105 Type
1622./testdata/accept/Builtins.lc 494:34-494:71 V1 1630./testdata/accept/Builtins.lc 490:3-490:16 'FrameBuffer (Succ Zero) ('Tuple2 ('Depth 'Float) ('Color ('VecS 'Float (Succ (Succ (Succ (Succ Zero))))))) -> 'Image (Succ Zero) ('Color ('VecS 'Float (Succ (Succ (Succ (Succ Zero))))))
1623./testdata/accept/Builtins.lc 494:1-494:8 {a} -> {b : 'Signed ('MatVecScalarElem a)} -> a->a 1631./testdata/accept/Builtins.lc 484:42-490:105 Type
1624./testdata/accept/Builtins.lc 496:35-496:80 Type 1632./testdata/accept/Builtins.lc 484:42-484:56 Type
1625./testdata/accept/Builtins.lc 496:35-496:43 Type->Type 1633./testdata/accept/Builtins.lc 485:53-490:105 Type
1626./testdata/accept/Builtins.lc 496:35-496:80 V5 1634./testdata/accept/Builtins.lc 485:53-485:67 Type
1627./testdata/accept/Builtins.lc 496:35-496:80 V4 1635./testdata/accept/Builtins.lc 486:53-490:105 Type
1628./testdata/accept/Builtins.lc 496:51-496:60 'Nat -> Type->Type 1636./testdata/accept/Builtins.lc 486:53-486:67 Type
1629./testdata/accept/Builtins.lc 496:35-496:80 'Nat 1637./testdata/accept/Builtins.lc 489:26-490:105 Type
1630./testdata/accept/Builtins.lc 496:35-496:80 V2 1638./testdata/accept/Builtins.lc 492:6-492:12 Type
1631./testdata/accept/Builtins.lc 496:1-496:9 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b -> b->b 1639./testdata/accept/Builtins.lc 493:26-493:51 Type
1632./testdata/accept/Builtins.lc 496:11-496:18 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b -> b->b 1640./testdata/accept/Builtins.lc 493:26-493:37 'Nat -> Type->Type
1633./testdata/accept/Builtins.lc 496:20-496:28 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b -> b->b 1641./testdata/accept/Builtins.lc 493:26-493:51 'Nat
1634./testdata/accept/Builtins.lc 497:35-497:80 Type 1642./testdata/accept/Builtins.lc 493:26-493:51 V3
1635./testdata/accept/Builtins.lc 497:35-497:43 Type->Type 1643./testdata/accept/Builtins.lc 493:26-493:51 V1
1636./testdata/accept/Builtins.lc 497:35-497:80 V5 1644./testdata/accept/Builtins.lc 493:45-493:51 Type
1637./testdata/accept/Builtins.lc 497:35-497:80 V4 1645./testdata/accept/Builtins.lc 493:3-493:12 {a:'Nat} -> {b} -> 'FrameBuffer a b -> 'Output
1638./testdata/accept/Builtins.lc 497:51-497:60 'Nat -> Type->Type 1646./testdata/accept/Builtins.lc 499:34-499:73 Type
1639./testdata/accept/Builtins.lc 497:35-497:80 'Nat 1647./testdata/accept/Builtins.lc 499:34-499:37 Type->Type
1640./testdata/accept/Builtins.lc 497:35-497:80 V2 1648./testdata/accept/Builtins.lc 499:39-499:55 Type->Type
1641./testdata/accept/Builtins.lc 497:1-497:10 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b -> a->b 1649./testdata/accept/Builtins.lc 499:34-499:73 V1
1642./testdata/accept/Builtins.lc 497:12-497:20 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b -> a->b 1650./testdata/accept/Builtins.lc 499:1-499:8 {a} -> {b : 'Num ('MatVecScalarElem a)} -> a -> a->a
1643./testdata/accept/Builtins.lc 497:22-497:31 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b -> a->b 1651./testdata/accept/Builtins.lc 499:10-499:17 {a} -> {b : 'Num ('MatVecScalarElem a)} -> a -> a->a
1644./testdata/accept/Builtins.lc 498:35-498:75 Type 1652./testdata/accept/Builtins.lc 499:19-499:26 {a} -> {b : 'Num ('MatVecScalarElem a)} -> a -> a->a
1645./testdata/accept/Builtins.lc 498:35-498:43 Type->Type 1653./testdata/accept/Builtins.lc 500:35-500:80 Type
1646./testdata/accept/Builtins.lc 498:35-498:75 V5 1654./testdata/accept/Builtins.lc 500:35-500:80 V3
1647./testdata/accept/Builtins.lc 498:35-498:75 V4 1655./testdata/accept/Builtins.lc 500:39-500:55 Type->Type
1648./testdata/accept/Builtins.lc 498:51-498:60 'Nat -> Type->Type 1656./testdata/accept/Builtins.lc 500:35-500:80 V1
1649./testdata/accept/Builtins.lc 498:35-498:75 'Nat 1657./testdata/accept/Builtins.lc 500:59-500:62 Type->Type
1650./testdata/accept/Builtins.lc 498:35-498:75 V2 1658./testdata/accept/Builtins.lc 500:1-500:9 {a} -> {b} -> {c : a ~ 'MatVecScalarElem b} -> {d : 'Num a} -> b -> a->b
1651./testdata/accept/Builtins.lc 498:1-498:9 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b->b 1659./testdata/accept/Builtins.lc 500:11-500:19 {a} -> {b} -> {c : a ~ 'MatVecScalarElem b} -> {d : 'Num a} -> b -> a->b
1652./testdata/accept/Builtins.lc 499:35-499:102 Type 1660./testdata/accept/Builtins.lc 500:21-500:29 {a} -> {b} -> {c : a ~ 'MatVecScalarElem b} -> {d : 'Num a} -> b -> a->b
1653./testdata/accept/Builtins.lc 499:35-499:43 Type->Type 1661./testdata/accept/Builtins.lc 501:35-501:75 Type
1654./testdata/accept/Builtins.lc 499:35-499:102 V7 1662./testdata/accept/Builtins.lc 501:35-501:38 Type->Type
1655./testdata/accept/Builtins.lc 499:35-499:102 V6 1663./testdata/accept/Builtins.lc 501:35-501:75 V5
1656./testdata/accept/Builtins.lc 499:51-499:60 'Nat -> Type->Type 1664./testdata/accept/Builtins.lc 501:35-501:75 V4
1657./testdata/accept/Builtins.lc 499:35-499:102 'Nat 1665./testdata/accept/Builtins.lc 501:46-501:55 'Nat -> Type->Type
1658./testdata/accept/Builtins.lc 499:35-499:102 V4 1666./testdata/accept/Builtins.lc 501:35-501:75 'Nat
1659./testdata/accept/Builtins.lc 499:35-499:102 V3 1667./testdata/accept/Builtins.lc 501:35-501:75 V2
1660./testdata/accept/Builtins.lc 499:70-499:79 'Nat -> Type->Type 1668./testdata/accept/Builtins.lc 501:1-501:8 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> b->b
1661./testdata/accept/Builtins.lc 499:82-499:86 Type 1669./testdata/accept/Builtins.lc 501:10-501:17 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> b->b
1662./testdata/accept/Builtins.lc 499:1-499:12 {a} -> {b} -> {c:'Nat} -> {d} -> {e : 'Integral a} -> {f : b ~ 'VecScalar c a} -> {g : d ~ 'VecScalar c 'Word} -> b -> d->b 1670./testdata/accept/Builtins.lc 502:35-502:75 Type
1663./testdata/accept/Builtins.lc 499:14-499:25 {a} -> {b} -> {c:'Nat} -> {d} -> {e : 'Integral a} -> {f : b ~ 'VecScalar c a} -> {g : d ~ 'VecScalar c 'Word} -> b -> d->b 1671./testdata/accept/Builtins.lc 502:35-502:38 Type->Type
1664./testdata/accept/Builtins.lc 500:35-500:83 Type 1672./testdata/accept/Builtins.lc 502:35-502:75 V5
1665./testdata/accept/Builtins.lc 500:35-500:43 Type->Type 1673./testdata/accept/Builtins.lc 502:35-502:75 V4
1666./testdata/accept/Builtins.lc 500:35-500:83 V5 1674./testdata/accept/Builtins.lc 502:46-502:55 'Nat -> Type->Type
1667./testdata/accept/Builtins.lc 500:35-500:83 V4 1675./testdata/accept/Builtins.lc 502:35-502:75 'Nat
1668./testdata/accept/Builtins.lc 500:51-500:60 'Nat -> Type->Type 1676./testdata/accept/Builtins.lc 502:35-502:75 V2
1669./testdata/accept/Builtins.lc 500:35-500:83 'Nat 1677./testdata/accept/Builtins.lc 502:1-502:9 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> a->b
1670./testdata/accept/Builtins.lc 500:35-500:83 V2 1678./testdata/accept/Builtins.lc 502:11-502:19 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> a->b
1671./testdata/accept/Builtins.lc 500:74-500:78 Type 1679./testdata/accept/Builtins.lc 503:34-503:71 Type
1672./testdata/accept/Builtins.lc 500:1-500:13 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b -> 'Word->b 1680./testdata/accept/Builtins.lc 503:34-503:40 Type->Type
1673./testdata/accept/Builtins.lc 500:15-500:27 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b -> 'Word->b 1681./testdata/accept/Builtins.lc 503:42-503:58 Type->Type
1674./testdata/accept/Builtins.lc 502:34-502:38 Type 1682./testdata/accept/Builtins.lc 503:34-503:71 V1
1675./testdata/accept/Builtins.lc 502:42-502:54 Type 1683./testdata/accept/Builtins.lc 503:1-503:8 {a} -> {b : 'Signed ('MatVecScalarElem a)} -> a->a
1676./testdata/accept/Builtins.lc 502:42-502:46 Type 1684./testdata/accept/Builtins.lc 505:35-505:80 Type
1677./testdata/accept/Builtins.lc 502:50-502:54 Type 1685./testdata/accept/Builtins.lc 505:35-505:43 Type->Type
1678./testdata/accept/Builtins.lc 502:1-502:8 'Bool -> 'Bool->'Bool 1686./testdata/accept/Builtins.lc 505:35-505:80 V5
1679./testdata/accept/Builtins.lc 502:10-502:16 'Bool -> 'Bool->'Bool 1687./testdata/accept/Builtins.lc 505:35-505:80 V4
1680./testdata/accept/Builtins.lc 502:18-502:25 'Bool -> 'Bool->'Bool 1688./testdata/accept/Builtins.lc 505:51-505:60 'Nat -> Type->Type
1681./testdata/accept/Builtins.lc 503:35-503:66 Type 1689./testdata/accept/Builtins.lc 505:35-505:80 'Nat
1682./testdata/accept/Builtins.lc 503:35-503:66 V3 1690./testdata/accept/Builtins.lc 505:35-505:80 V2
1683./testdata/accept/Builtins.lc 503:39-503:48 'Nat -> Type->Type 1691./testdata/accept/Builtins.lc 505:1-505:9 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b -> b->b
1684./testdata/accept/Builtins.lc 503:35-503:66 'Nat 1692./testdata/accept/Builtins.lc 505:11-505:18 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b -> b->b
1685./testdata/accept/Builtins.lc 503:35-503:66 V1 1693./testdata/accept/Builtins.lc 505:20-505:28 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b -> b->b
1686./testdata/accept/Builtins.lc 503:51-503:55 Type 1694./testdata/accept/Builtins.lc 506:35-506:80 Type
1687./testdata/accept/Builtins.lc 503:1-503:8 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Bool} -> a->a 1695./testdata/accept/Builtins.lc 506:35-506:43 Type->Type
1688./testdata/accept/Builtins.lc 504:34-504:58 Type 1696./testdata/accept/Builtins.lc 506:35-506:80 V5
1689./testdata/accept/Builtins.lc 504:34-504:43 'Nat -> Type->Type 1697./testdata/accept/Builtins.lc 506:35-506:80 V4
1690./testdata/accept/Builtins.lc 504:34-504:58 'Nat 1698./testdata/accept/Builtins.lc 506:51-506:60 'Nat -> Type->Type
1691./testdata/accept/Builtins.lc 504:34-504:58 V1 1699./testdata/accept/Builtins.lc 506:35-506:80 'Nat
1692./testdata/accept/Builtins.lc 504:46-504:50 Type 1700./testdata/accept/Builtins.lc 506:35-506:80 V2
1693./testdata/accept/Builtins.lc 504:54-504:58 Type 1701./testdata/accept/Builtins.lc 506:1-506:10 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b -> a->b
1694./testdata/accept/Builtins.lc 504:1-504:8 {a:'Nat} -> 'VecScalar a 'Bool -> 'Bool 1702./testdata/accept/Builtins.lc 506:12-506:20 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b -> a->b
1695./testdata/accept/Builtins.lc 504:10-504:17 {a:'Nat} -> 'VecScalar a 'Bool -> 'Bool 1703./testdata/accept/Builtins.lc 506:22-506:31 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b -> a->b
1696./testdata/accept/Builtins.lc 508:35-508:67 Type 1704./testdata/accept/Builtins.lc 507:35-507:75 Type
1697./testdata/accept/Builtins.lc 508:35-508:67 V3 1705./testdata/accept/Builtins.lc 507:35-507:43 Type->Type
1698./testdata/accept/Builtins.lc 508:39-508:48 'Nat -> Type->Type 1706./testdata/accept/Builtins.lc 507:35-507:75 V5
1699./testdata/accept/Builtins.lc 508:35-508:67 'Nat 1707./testdata/accept/Builtins.lc 507:35-507:75 V4
1700./testdata/accept/Builtins.lc 508:35-508:67 V1 1708./testdata/accept/Builtins.lc 507:51-507:60 'Nat -> Type->Type
1701./testdata/accept/Builtins.lc 508:51-508:56 Type 1709./testdata/accept/Builtins.lc 507:35-507:75 'Nat
1702./testdata/accept/Builtins.lc 507:1-507:9 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1710./testdata/accept/Builtins.lc 507:35-507:75 V2
1703./testdata/accept/Builtins.lc 507:11-507:20 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1711./testdata/accept/Builtins.lc 507:1-507:9 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b->b
1704./testdata/accept/Builtins.lc 507:22-507:30 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1712./testdata/accept/Builtins.lc 508:35-508:102 Type
1705./testdata/accept/Builtins.lc 507:32-507:41 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1713./testdata/accept/Builtins.lc 508:35-508:43 Type->Type
1706./testdata/accept/Builtins.lc 507:43-507:51 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1714./testdata/accept/Builtins.lc 508:35-508:102 V7
1707./testdata/accept/Builtins.lc 507:53-507:62 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1715./testdata/accept/Builtins.lc 508:35-508:102 V6
1708./testdata/accept/Builtins.lc 507:64-507:71 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1716./testdata/accept/Builtins.lc 508:51-508:60 'Nat -> Type->Type
1709./testdata/accept/Builtins.lc 507:73-507:81 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1717./testdata/accept/Builtins.lc 508:35-508:102 'Nat
1710./testdata/accept/Builtins.lc 507:83-507:94 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1718./testdata/accept/Builtins.lc 508:35-508:102 V4
1711./testdata/accept/Builtins.lc 507:96-507:107 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1719./testdata/accept/Builtins.lc 508:35-508:102 V3
1712./testdata/accept/Builtins.lc 507:109-507:116 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1720./testdata/accept/Builtins.lc 508:70-508:79 'Nat -> Type->Type
1713./testdata/accept/Builtins.lc 507:118-507:126 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1721./testdata/accept/Builtins.lc 508:82-508:86 Type
1714./testdata/accept/Builtins.lc 507:128-507:135 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1722./testdata/accept/Builtins.lc 508:1-508:12 {a} -> {b} -> {c:'Nat} -> {d} -> {e : 'Integral a} -> {f : b ~ 'VecScalar c a} -> {g : d ~ 'VecScalar c 'Word} -> b -> d->b
1715./testdata/accept/Builtins.lc 507:137-507:145 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1723./testdata/accept/Builtins.lc 508:14-508:25 {a} -> {b} -> {c:'Nat} -> {d} -> {e : 'Integral a} -> {f : b ~ 'VecScalar c a} -> {g : d ~ 'VecScalar c 'Word} -> b -> d->b
1716./testdata/accept/Builtins.lc 507:147-507:154 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1724./testdata/accept/Builtins.lc 509:35-509:83 Type
1717./testdata/accept/Builtins.lc 507:156-507:163 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1725./testdata/accept/Builtins.lc 509:35-509:43 Type->Type
1718./testdata/accept/Builtins.lc 507:165-507:173 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1726./testdata/accept/Builtins.lc 509:35-509:83 V5
1719./testdata/accept/Builtins.lc 507:175-507:183 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1727./testdata/accept/Builtins.lc 509:35-509:83 V4
1720./testdata/accept/Builtins.lc 507:185-507:193 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1728./testdata/accept/Builtins.lc 509:51-509:60 'Nat -> Type->Type
1721./testdata/accept/Builtins.lc 507:195-507:206 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1729./testdata/accept/Builtins.lc 509:35-509:83 'Nat
1722./testdata/accept/Builtins.lc 509:35-509:72 Type 1730./testdata/accept/Builtins.lc 509:35-509:83 V2
1723./testdata/accept/Builtins.lc 509:35-509:72 V3 1731./testdata/accept/Builtins.lc 509:74-509:78 Type
1724./testdata/accept/Builtins.lc 509:39-509:48 'Nat -> Type->Type 1732./testdata/accept/Builtins.lc 509:1-509:13 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b -> 'Word->b
1725./testdata/accept/Builtins.lc 509:35-509:72 'Nat 1733./testdata/accept/Builtins.lc 509:15-509:27 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b -> 'Word->b
1726./testdata/accept/Builtins.lc 509:35-509:72 V1 1734./testdata/accept/Builtins.lc 511:34-511:38 Type
1727./testdata/accept/Builtins.lc 509:51-509:56 Type 1735./testdata/accept/Builtins.lc 511:42-511:54 Type
1728./testdata/accept/Builtins.lc 509:1-509:8 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a->a 1736./testdata/accept/Builtins.lc 511:42-511:46 Type
1729./testdata/accept/Builtins.lc 509:10-509:19 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a->a 1737./testdata/accept/Builtins.lc 511:50-511:54 Type
1730./testdata/accept/Builtins.lc 512:35-512:67 Type 1738./testdata/accept/Builtins.lc 511:1-511:8 'Bool -> 'Bool->'Bool
1731./testdata/accept/Builtins.lc 512:35-512:67 V3 1739./testdata/accept/Builtins.lc 511:10-511:16 'Bool -> 'Bool->'Bool
1740./testdata/accept/Builtins.lc 511:18-511:25 'Bool -> 'Bool->'Bool
1741./testdata/accept/Builtins.lc 512:35-512:66 Type
1742./testdata/accept/Builtins.lc 512:35-512:66 V3
1732./testdata/accept/Builtins.lc 512:39-512:48 'Nat -> Type->Type 1743./testdata/accept/Builtins.lc 512:39-512:48 'Nat -> Type->Type
1733./testdata/accept/Builtins.lc 512:35-512:67 'Nat 1744./testdata/accept/Builtins.lc 512:35-512:66 'Nat
1734./testdata/accept/Builtins.lc 512:35-512:67 V1 1745./testdata/accept/Builtins.lc 512:35-512:66 V1
1735./testdata/accept/Builtins.lc 512:51-512:56 Type 1746./testdata/accept/Builtins.lc 512:51-512:55 Type
1736./testdata/accept/Builtins.lc 511:1-511:10 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1747./testdata/accept/Builtins.lc 512:1-512:8 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Bool} -> a->a
1737./testdata/accept/Builtins.lc 511:12-511:21 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1748./testdata/accept/Builtins.lc 513:34-513:58 Type
1738./testdata/accept/Builtins.lc 511:23-511:32 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1749./testdata/accept/Builtins.lc 513:34-513:43 'Nat -> Type->Type
1739./testdata/accept/Builtins.lc 511:34-511:47 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1750./testdata/accept/Builtins.lc 513:34-513:58 'Nat
1740./testdata/accept/Builtins.lc 511:49-511:57 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1751./testdata/accept/Builtins.lc 513:34-513:58 V1
1741./testdata/accept/Builtins.lc 511:59-511:68 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1752./testdata/accept/Builtins.lc 513:46-513:50 Type
1742./testdata/accept/Builtins.lc 513:35-513:75 Type 1753./testdata/accept/Builtins.lc 513:54-513:58 Type
1743./testdata/accept/Builtins.lc 513:35-513:38 Type->Type 1754./testdata/accept/Builtins.lc 513:1-513:8 {a:'Nat} -> 'VecScalar a 'Bool -> 'Bool
1744./testdata/accept/Builtins.lc 513:35-513:75 V5 1755./testdata/accept/Builtins.lc 513:10-513:17 {a:'Nat} -> 'VecScalar a 'Bool -> 'Bool
1745./testdata/accept/Builtins.lc 513:35-513:75 V4 1756./testdata/accept/Builtins.lc 517:35-517:67 Type
1746./testdata/accept/Builtins.lc 513:46-513:55 'Nat -> Type->Type 1757./testdata/accept/Builtins.lc 517:35-517:67 V3
1747./testdata/accept/Builtins.lc 513:35-513:75 'Nat
1748./testdata/accept/Builtins.lc 513:35-513:75 V2
1749./testdata/accept/Builtins.lc 513:1-513:8 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> b->b
1750./testdata/accept/Builtins.lc 513:10-513:17 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> b->b
1751./testdata/accept/Builtins.lc 514:35-514:75 Type
1752./testdata/accept/Builtins.lc 514:35-514:38 Type->Type
1753./testdata/accept/Builtins.lc 514:35-514:75 V5
1754./testdata/accept/Builtins.lc 514:35-514:75 V4
1755./testdata/accept/Builtins.lc 514:46-514:55 'Nat -> Type->Type
1756./testdata/accept/Builtins.lc 514:35-514:75 'Nat
1757./testdata/accept/Builtins.lc 514:35-514:75 V2
1758./testdata/accept/Builtins.lc 514:1-514:9 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> a->b
1759./testdata/accept/Builtins.lc 514:11-514:19 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> a->b
1760./testdata/accept/Builtins.lc 515:35-515:89 Type
1761./testdata/accept/Builtins.lc 515:35-515:89 V5
1762./testdata/accept/Builtins.lc 515:39-515:48 'Nat -> Type->Type
1763./testdata/accept/Builtins.lc 515:35-515:89 'Nat
1764./testdata/accept/Builtins.lc 515:35-515:89 V3
1765./testdata/accept/Builtins.lc 515:51-515:56 Type
1766./testdata/accept/Builtins.lc 515:35-515:89 V2
1767./testdata/accept/Builtins.lc 515:62-515:71 'Nat -> Type->Type
1768./testdata/accept/Builtins.lc 515:74-515:78 Type
1769./testdata/accept/Builtins.lc 515:1-515:10 {a} -> {b:'Nat} -> {c} -> {d : a ~ 'VecScalar b 'Float} -> {e : c ~ 'VecScalar b 'Bool} -> a->c
1770./testdata/accept/Builtins.lc 515:12-515:21 {a} -> {b:'Nat} -> {c} -> {d : a ~ 'VecScalar b 'Float} -> {e : c ~ 'VecScalar b 'Bool} -> a->c
1771./testdata/accept/Builtins.lc 516:35-516:73 Type
1772./testdata/accept/Builtins.lc 516:35-516:41 Type->Type
1773./testdata/accept/Builtins.lc 516:35-516:73 V5
1774./testdata/accept/Builtins.lc 516:35-516:73 V4
1775./testdata/accept/Builtins.lc 516:49-516:58 'Nat -> Type->Type
1776./testdata/accept/Builtins.lc 516:35-516:73 'Nat
1777./testdata/accept/Builtins.lc 516:35-516:73 V2
1778./testdata/accept/Builtins.lc 516:1-516:8 {a} -> {b} -> {c:'Nat} -> {d : 'Signed a} -> {e : b ~ 'VecScalar c a} -> b->b
1779./testdata/accept/Builtins.lc 516:10-516:18 {a} -> {b} -> {c:'Nat} -> {d : 'Signed a} -> {e : b ~ 'VecScalar c a} -> b->b
1780./testdata/accept/Builtins.lc 517:35-517:72 Type
1781./testdata/accept/Builtins.lc 517:35-517:72 V3
1782./testdata/accept/Builtins.lc 517:39-517:48 'Nat -> Type->Type 1758./testdata/accept/Builtins.lc 517:39-517:48 'Nat -> Type->Type
1783./testdata/accept/Builtins.lc 517:35-517:72 'Nat 1759./testdata/accept/Builtins.lc 517:35-517:67 'Nat
1784./testdata/accept/Builtins.lc 517:35-517:72 V1 1760./testdata/accept/Builtins.lc 517:35-517:67 V1
1785./testdata/accept/Builtins.lc 517:51-517:56 Type 1761./testdata/accept/Builtins.lc 517:51-517:56 Type
1786./testdata/accept/Builtins.lc 517:66-517:72 Type -> Type->Type 1762./testdata/accept/Builtins.lc 516:1-516:9 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1787./testdata/accept/Builtins.lc 517:1-517:9 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> 'Tuple2 a a 1763./testdata/accept/Builtins.lc 516:11-516:20 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1788./testdata/accept/Builtins.lc 518:35-518:80 Type 1764./testdata/accept/Builtins.lc 516:22-516:30 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1789./testdata/accept/Builtins.lc 518:35-518:38 Type->Type 1765./testdata/accept/Builtins.lc 516:32-516:41 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1790./testdata/accept/Builtins.lc 518:35-518:80 V5 1766./testdata/accept/Builtins.lc 516:43-516:51 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1791./testdata/accept/Builtins.lc 518:35-518:80 V4 1767./testdata/accept/Builtins.lc 516:53-516:62 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1792./testdata/accept/Builtins.lc 518:46-518:55 'Nat -> Type->Type 1768./testdata/accept/Builtins.lc 516:64-516:71 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1793./testdata/accept/Builtins.lc 518:35-518:80 'Nat 1769./testdata/accept/Builtins.lc 516:73-516:81 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1794./testdata/accept/Builtins.lc 518:35-518:80 V2 1770./testdata/accept/Builtins.lc 516:83-516:94 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1795./testdata/accept/Builtins.lc 518:1-518:10 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> b -> b->b 1771./testdata/accept/Builtins.lc 516:96-516:107 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1796./testdata/accept/Builtins.lc 519:35-519:80 Type 1772./testdata/accept/Builtins.lc 516:109-516:116 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1797./testdata/accept/Builtins.lc 519:35-519:38 Type->Type 1773./testdata/accept/Builtins.lc 516:118-516:126 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1798./testdata/accept/Builtins.lc 519:35-519:80 V5 1774./testdata/accept/Builtins.lc 516:128-516:135 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1799./testdata/accept/Builtins.lc 519:35-519:80 V4 1775./testdata/accept/Builtins.lc 516:137-516:145 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1800./testdata/accept/Builtins.lc 519:46-519:55 'Nat -> Type->Type 1776./testdata/accept/Builtins.lc 516:147-516:154 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1801./testdata/accept/Builtins.lc 519:35-519:80 'Nat 1777./testdata/accept/Builtins.lc 516:156-516:163 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1802./testdata/accept/Builtins.lc 519:35-519:80 V2 1778./testdata/accept/Builtins.lc 516:165-516:173 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1803./testdata/accept/Builtins.lc 519:1-519:11 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> a -> a->b 1779./testdata/accept/Builtins.lc 516:175-516:183 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1804./testdata/accept/Builtins.lc 520:35-520:77 Type 1780./testdata/accept/Builtins.lc 516:185-516:193 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1805./testdata/accept/Builtins.lc 520:35-520:77 V3 1781./testdata/accept/Builtins.lc 516:195-516:206 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1806./testdata/accept/Builtins.lc 520:39-520:48 'Nat -> Type->Type 1782./testdata/accept/Builtins.lc 518:35-518:72 Type
1807./testdata/accept/Builtins.lc 520:35-520:77 'Nat 1783./testdata/accept/Builtins.lc 518:35-518:72 V3
1808./testdata/accept/Builtins.lc 520:35-520:77 V1 1784./testdata/accept/Builtins.lc 518:39-518:48 'Nat -> Type->Type
1809./testdata/accept/Builtins.lc 520:51-520:56 Type 1785./testdata/accept/Builtins.lc 518:35-518:72 'Nat
1810./testdata/accept/Builtins.lc 520:1-520:8 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a -> a->a 1786./testdata/accept/Builtins.lc 518:35-518:72 V1
1811./testdata/accept/Builtins.lc 521:35-521:81 Type 1787./testdata/accept/Builtins.lc 518:51-518:56 Type
1812./testdata/accept/Builtins.lc 521:35-521:81 V3 1788./testdata/accept/Builtins.lc 518:1-518:8 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a->a
1789./testdata/accept/Builtins.lc 518:10-518:19 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a->a
1790./testdata/accept/Builtins.lc 521:35-521:67 Type
1791./testdata/accept/Builtins.lc 521:35-521:67 V3
1813./testdata/accept/Builtins.lc 521:39-521:48 'Nat -> Type->Type 1792./testdata/accept/Builtins.lc 521:39-521:48 'Nat -> Type->Type
1814./testdata/accept/Builtins.lc 521:35-521:81 'Nat 1793./testdata/accept/Builtins.lc 521:35-521:67 'Nat
1815./testdata/accept/Builtins.lc 521:35-521:81 V1 1794./testdata/accept/Builtins.lc 521:35-521:67 V1
1816./testdata/accept/Builtins.lc 521:51-521:56 Type 1795./testdata/accept/Builtins.lc 521:51-521:56 Type
1817./testdata/accept/Builtins.lc 521:71-521:76 Type 1796./testdata/accept/Builtins.lc 520:1-520:10 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1818./testdata/accept/Builtins.lc 521:1-521:9 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a -> 'Float->a 1797./testdata/accept/Builtins.lc 520:12-520:21 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1819./testdata/accept/Builtins.lc 522:35-522:99 Type 1798./testdata/accept/Builtins.lc 520:23-520:32 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1820./testdata/accept/Builtins.lc 522:35-522:99 V5 1799./testdata/accept/Builtins.lc 520:34-520:47 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1821./testdata/accept/Builtins.lc 522:39-522:48 'Nat -> Type->Type 1800./testdata/accept/Builtins.lc 520:49-520:57 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1822./testdata/accept/Builtins.lc 522:35-522:99 'Nat 1801./testdata/accept/Builtins.lc 520:59-520:68 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1823./testdata/accept/Builtins.lc 522:35-522:99 V3 1802./testdata/accept/Builtins.lc 522:35-522:75 Type
1824./testdata/accept/Builtins.lc 522:51-522:56 Type 1803./testdata/accept/Builtins.lc 522:35-522:38 Type->Type
1825./testdata/accept/Builtins.lc 522:35-522:99 V2 1804./testdata/accept/Builtins.lc 522:35-522:75 V5
1826./testdata/accept/Builtins.lc 522:62-522:71 'Nat -> Type->Type 1805./testdata/accept/Builtins.lc 522:35-522:75 V4
1827./testdata/accept/Builtins.lc 522:74-522:78 Type 1806./testdata/accept/Builtins.lc 522:46-522:55 'Nat -> Type->Type
1828./testdata/accept/Builtins.lc 522:1-522:9 {a} -> {b:'Nat} -> {c} -> {d : a ~ 'VecScalar b 'Float} -> {e : c ~ 'VecScalar b 'Bool} -> a -> a -> c->a 1807./testdata/accept/Builtins.lc 522:35-522:75 'Nat
1829./testdata/accept/Builtins.lc 523:35-523:68 Type 1808./testdata/accept/Builtins.lc 522:35-522:75 V2
1830./testdata/accept/Builtins.lc 523:35-523:68 V3 1809./testdata/accept/Builtins.lc 522:1-522:8 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> b->b
1831./testdata/accept/Builtins.lc 523:39-523:44 'Nat -> Type->Type 1810./testdata/accept/Builtins.lc 522:10-522:17 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> b->b
1832./testdata/accept/Builtins.lc 523:35-523:68 'Nat 1811./testdata/accept/Builtins.lc 523:35-523:75 Type
1833./testdata/accept/Builtins.lc 523:35-523:68 V1 1812./testdata/accept/Builtins.lc 523:35-523:38 Type->Type
1834./testdata/accept/Builtins.lc 523:47-523:52 Type 1813./testdata/accept/Builtins.lc 523:35-523:75 V5
1835./testdata/accept/Builtins.lc 523:1-523:9 {a} -> {b:'Nat} -> {c : a ~ 'VecS 'Float b} -> a -> a->a 1814./testdata/accept/Builtins.lc 523:35-523:75 V4
1836./testdata/accept/Builtins.lc 524:35-524:76 Type 1815./testdata/accept/Builtins.lc 523:46-523:55 'Nat -> Type->Type
1837./testdata/accept/Builtins.lc 524:35-524:76 V3 1816./testdata/accept/Builtins.lc 523:35-523:75 'Nat
1817./testdata/accept/Builtins.lc 523:35-523:75 V2
1818./testdata/accept/Builtins.lc 523:1-523:9 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> a->b
1819./testdata/accept/Builtins.lc 523:11-523:19 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> a->b
1820./testdata/accept/Builtins.lc 524:35-524:89 Type
1821./testdata/accept/Builtins.lc 524:35-524:89 V5
1838./testdata/accept/Builtins.lc 524:39-524:48 'Nat -> Type->Type 1822./testdata/accept/Builtins.lc 524:39-524:48 'Nat -> Type->Type
1839./testdata/accept/Builtins.lc 524:35-524:76 'Nat 1823./testdata/accept/Builtins.lc 524:35-524:89 'Nat
1840./testdata/accept/Builtins.lc 524:35-524:76 V1 1824./testdata/accept/Builtins.lc 524:35-524:89 V3
1841./testdata/accept/Builtins.lc 524:51-524:56 Type 1825./testdata/accept/Builtins.lc 524:51-524:56 Type
1842./testdata/accept/Builtins.lc 524:61-524:66 Type 1826./testdata/accept/Builtins.lc 524:35-524:89 V2
1843./testdata/accept/Builtins.lc 524:1-524:10 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> 'Float -> a->a 1827./testdata/accept/Builtins.lc 524:62-524:71 'Nat -> Type->Type
1828./testdata/accept/Builtins.lc 524:74-524:78 Type
1829./testdata/accept/Builtins.lc 524:1-524:10 {a} -> {b:'Nat} -> {c} -> {d : a ~ 'VecScalar b 'Float} -> {e : c ~ 'VecScalar b 'Bool} -> a->c
1830./testdata/accept/Builtins.lc 524:12-524:21 {a} -> {b:'Nat} -> {c} -> {d : a ~ 'VecScalar b 'Float} -> {e : c ~ 'VecScalar b 'Bool} -> a->c
1844./testdata/accept/Builtins.lc 525:35-525:73 Type 1831./testdata/accept/Builtins.lc 525:35-525:73 Type
1845./testdata/accept/Builtins.lc 525:35-525:73 V3 1832./testdata/accept/Builtins.lc 525:35-525:41 Type->Type
1846./testdata/accept/Builtins.lc 525:39-525:44 'Nat -> Type->Type 1833./testdata/accept/Builtins.lc 525:35-525:73 V5
1834./testdata/accept/Builtins.lc 525:35-525:73 V4
1835./testdata/accept/Builtins.lc 525:49-525:58 'Nat -> Type->Type
1847./testdata/accept/Builtins.lc 525:35-525:73 'Nat 1836./testdata/accept/Builtins.lc 525:35-525:73 'Nat
1848./testdata/accept/Builtins.lc 525:35-525:73 V1 1837./testdata/accept/Builtins.lc 525:35-525:73 V2
1849./testdata/accept/Builtins.lc 525:47-525:52 Type 1838./testdata/accept/Builtins.lc 525:1-525:8 {a} -> {b} -> {c:'Nat} -> {d : 'Signed a} -> {e : b ~ 'VecScalar c a} -> b->b
1850./testdata/accept/Builtins.lc 525:1-525:15 {a} -> {b:'Nat} -> {c : a ~ 'VecS 'Float b} -> a -> a -> a->a 1839./testdata/accept/Builtins.lc 525:10-525:18 {a} -> {b} -> {c:'Nat} -> {d : 'Signed a} -> {e : b ~ 'VecScalar c a} -> b->b
1851./testdata/accept/Builtins.lc 526:35-526:85 Type 1840./testdata/accept/Builtins.lc 526:35-526:72 Type
1852./testdata/accept/Builtins.lc 526:35-526:85 V3 1841./testdata/accept/Builtins.lc 526:35-526:72 V3
1853./testdata/accept/Builtins.lc 526:39-526:48 'Nat -> Type->Type 1842./testdata/accept/Builtins.lc 526:39-526:48 'Nat -> Type->Type
1854./testdata/accept/Builtins.lc 526:35-526:85 'Nat 1843./testdata/accept/Builtins.lc 526:35-526:72 'Nat
1855./testdata/accept/Builtins.lc 526:35-526:85 V1 1844./testdata/accept/Builtins.lc 526:35-526:72 V1
1856./testdata/accept/Builtins.lc 526:51-526:56 Type 1845./testdata/accept/Builtins.lc 526:51-526:56 Type
1857./testdata/accept/Builtins.lc 526:61-526:66 Type 1846./testdata/accept/Builtins.lc 526:66-526:72 Type -> Type->Type
1858./testdata/accept/Builtins.lc 526:70-526:75 Type 1847./testdata/accept/Builtins.lc 526:1-526:9 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> 'Tuple2 a a
1859./testdata/accept/Builtins.lc 526:1-526:16 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> 'Float -> 'Float -> a->a 1848./testdata/accept/Builtins.lc 527:35-527:80 Type
1860./testdata/accept/Builtins.lc 529:34-529:70 Type 1849./testdata/accept/Builtins.lc 527:35-527:38 Type->Type
1861./testdata/accept/Builtins.lc 529:34-529:43 'Nat -> Type->Type 1850./testdata/accept/Builtins.lc 527:35-527:80 V5
1862./testdata/accept/Builtins.lc 529:34-529:70 'Nat 1851./testdata/accept/Builtins.lc 527:35-527:80 V4
1863./testdata/accept/Builtins.lc 529:34-529:70 V1 1852./testdata/accept/Builtins.lc 527:46-527:55 'Nat -> Type->Type
1864./testdata/accept/Builtins.lc 529:46-529:51 Type 1853./testdata/accept/Builtins.lc 527:35-527:80 'Nat
1865./testdata/accept/Builtins.lc 529:55-529:64 'Nat -> Type->Type 1854./testdata/accept/Builtins.lc 527:35-527:80 V2
1866./testdata/accept/Builtins.lc 529:67-529:70 Type 1855./testdata/accept/Builtins.lc 527:1-527:10 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> b -> b->b
1867./testdata/accept/Builtins.lc 529:1-529:19 {a:'Nat} -> 'VecScalar a 'Float -> 'VecScalar a 'Int 1856./testdata/accept/Builtins.lc 528:35-528:80 Type
1868./testdata/accept/Builtins.lc 530:34-530:71 Type 1857./testdata/accept/Builtins.lc 528:35-528:38 Type->Type
1869./testdata/accept/Builtins.lc 530:34-530:43 'Nat -> Type->Type 1858./testdata/accept/Builtins.lc 528:35-528:80 V5
1870./testdata/accept/Builtins.lc 530:34-530:71 'Nat 1859./testdata/accept/Builtins.lc 528:35-528:80 V4
1871./testdata/accept/Builtins.lc 530:34-530:71 V1 1860./testdata/accept/Builtins.lc 528:46-528:55 'Nat -> Type->Type
1872./testdata/accept/Builtins.lc 530:46-530:51 Type 1861./testdata/accept/Builtins.lc 528:35-528:80 'Nat
1873./testdata/accept/Builtins.lc 530:55-530:64 'Nat -> Type->Type 1862./testdata/accept/Builtins.lc 528:35-528:80 V2
1874./testdata/accept/Builtins.lc 530:67-530:71 Type 1863./testdata/accept/Builtins.lc 528:1-528:11 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> a -> a->b
1875./testdata/accept/Builtins.lc 530:1-530:20 {a:'Nat} -> 'VecScalar a 'Float -> 'VecScalar a 'Word 1864./testdata/accept/Builtins.lc 529:35-529:77 Type
1876./testdata/accept/Builtins.lc 531:34-531:72 Type 1865./testdata/accept/Builtins.lc 529:35-529:77 V3
1877./testdata/accept/Builtins.lc 531:34-531:43 'Nat -> Type->Type 1866./testdata/accept/Builtins.lc 529:39-529:48 'Nat -> Type->Type
1878./testdata/accept/Builtins.lc 531:34-531:72 'Nat 1867./testdata/accept/Builtins.lc 529:35-529:77 'Nat
1879./testdata/accept/Builtins.lc 531:34-531:72 V1 1868./testdata/accept/Builtins.lc 529:35-529:77 V1
1880./testdata/accept/Builtins.lc 531:46-531:49 Type 1869./testdata/accept/Builtins.lc 529:51-529:56 Type
1881./testdata/accept/Builtins.lc 531:55-531:64 'Nat -> Type->Type 1870./testdata/accept/Builtins.lc 529:1-529:8 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a -> a->a
1882./testdata/accept/Builtins.lc 531:67-531:72 Type 1871./testdata/accept/Builtins.lc 530:35-530:81 Type
1883./testdata/accept/Builtins.lc 531:1-531:19 {a:'Nat} -> 'VecScalar a 'Int -> 'VecScalar a 'Float 1872./testdata/accept/Builtins.lc 530:35-530:81 V3
1884./testdata/accept/Builtins.lc 532:34-532:72 Type 1873./testdata/accept/Builtins.lc 530:39-530:48 'Nat -> Type->Type
1885./testdata/accept/Builtins.lc 532:34-532:43 'Nat -> Type->Type 1874./testdata/accept/Builtins.lc 530:35-530:81 'Nat
1886./testdata/accept/Builtins.lc 532:34-532:72 'Nat 1875./testdata/accept/Builtins.lc 530:35-530:81 V1
1887./testdata/accept/Builtins.lc 532:34-532:72 V1 1876./testdata/accept/Builtins.lc 530:51-530:56 Type
1888./testdata/accept/Builtins.lc 532:46-532:50 Type 1877./testdata/accept/Builtins.lc 530:71-530:76 Type
1889./testdata/accept/Builtins.lc 532:55-532:64 'Nat -> Type->Type 1878./testdata/accept/Builtins.lc 530:1-530:9 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a -> 'Float->a
1890./testdata/accept/Builtins.lc 532:67-532:72 Type 1879./testdata/accept/Builtins.lc 531:35-531:99 Type
1891./testdata/accept/Builtins.lc 532:1-532:20 {a:'Nat} -> 'VecScalar a 'Word -> 'VecScalar a 'Float 1880./testdata/accept/Builtins.lc 531:35-531:99 V5
1892./testdata/accept/Builtins.lc 534:35-534:71 Type 1881./testdata/accept/Builtins.lc 531:39-531:48 'Nat -> Type->Type
1893./testdata/accept/Builtins.lc 534:35-534:71 V3 1882./testdata/accept/Builtins.lc 531:35-531:99 'Nat
1894./testdata/accept/Builtins.lc 534:39-534:48 'Nat -> Type->Type 1883./testdata/accept/Builtins.lc 531:35-531:99 V3
1895./testdata/accept/Builtins.lc 534:35-534:71 'Nat 1884./testdata/accept/Builtins.lc 531:51-531:56 Type
1896./testdata/accept/Builtins.lc 534:35-534:71 V1 1885./testdata/accept/Builtins.lc 531:35-531:99 V2
1897./testdata/accept/Builtins.lc 534:51-534:56 Type 1886./testdata/accept/Builtins.lc 531:62-531:71 'Nat -> Type->Type
1898./testdata/accept/Builtins.lc 534:66-534:71 Type 1887./testdata/accept/Builtins.lc 531:74-531:78 Type
1899./testdata/accept/Builtins.lc 534:1-534:11 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->'Float 1888./testdata/accept/Builtins.lc 531:1-531:9 {a} -> {b:'Nat} -> {c} -> {d : a ~ 'VecScalar b 'Float} -> {e : c ~ 'VecScalar b 'Bool} -> a -> a -> c->a
1900./testdata/accept/Builtins.lc 535:35-535:76 Type 1889./testdata/accept/Builtins.lc 532:35-532:68 Type
1901./testdata/accept/Builtins.lc 535:35-535:76 V3 1890./testdata/accept/Builtins.lc 532:35-532:68 V3
1891./testdata/accept/Builtins.lc 532:39-532:44 'Nat -> Type->Type
1892./testdata/accept/Builtins.lc 532:35-532:68 'Nat
1893./testdata/accept/Builtins.lc 532:35-532:68 V1
1894./testdata/accept/Builtins.lc 532:47-532:52 Type
1895./testdata/accept/Builtins.lc 532:1-532:9 {a} -> {b:'Nat} -> {c : a ~ 'VecS 'Float b} -> a -> a->a
1896./testdata/accept/Builtins.lc 533:35-533:76 Type
1897./testdata/accept/Builtins.lc 533:35-533:76 V3
1898./testdata/accept/Builtins.lc 533:39-533:48 'Nat -> Type->Type
1899./testdata/accept/Builtins.lc 533:35-533:76 'Nat
1900./testdata/accept/Builtins.lc 533:35-533:76 V1
1901./testdata/accept/Builtins.lc 533:51-533:56 Type
1902./testdata/accept/Builtins.lc 533:61-533:66 Type
1903./testdata/accept/Builtins.lc 533:1-533:10 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> 'Float -> a->a
1904./testdata/accept/Builtins.lc 534:35-534:73 Type
1905./testdata/accept/Builtins.lc 534:35-534:73 V3
1906./testdata/accept/Builtins.lc 534:39-534:44 'Nat -> Type->Type
1907./testdata/accept/Builtins.lc 534:35-534:73 'Nat
1908./testdata/accept/Builtins.lc 534:35-534:73 V1
1909./testdata/accept/Builtins.lc 534:47-534:52 Type
1910./testdata/accept/Builtins.lc 534:1-534:15 {a} -> {b:'Nat} -> {c : a ~ 'VecS 'Float b} -> a -> a -> a->a
1911./testdata/accept/Builtins.lc 535:35-535:85 Type
1912./testdata/accept/Builtins.lc 535:35-535:85 V3
1902./testdata/accept/Builtins.lc 535:39-535:48 'Nat -> Type->Type 1913./testdata/accept/Builtins.lc 535:39-535:48 'Nat -> Type->Type
1903./testdata/accept/Builtins.lc 535:35-535:76 'Nat 1914./testdata/accept/Builtins.lc 535:35-535:85 'Nat
1904./testdata/accept/Builtins.lc 535:35-535:76 V1 1915./testdata/accept/Builtins.lc 535:35-535:85 V1
1905./testdata/accept/Builtins.lc 535:51-535:56 Type 1916./testdata/accept/Builtins.lc 535:51-535:56 Type
1906./testdata/accept/Builtins.lc 535:71-535:76 Type 1917./testdata/accept/Builtins.lc 535:61-535:66 Type
1907./testdata/accept/Builtins.lc 535:1-535:13 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a->'Float 1918./testdata/accept/Builtins.lc 535:70-535:75 Type
1908./testdata/accept/Builtins.lc 535:15-535:22 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a->'Float 1919./testdata/accept/Builtins.lc 535:1-535:16 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> 'Float -> 'Float -> a->a
1909./testdata/accept/Builtins.lc 536:35-536:72 Type 1920./testdata/accept/Builtins.lc 538:34-538:70 Type
1910./testdata/accept/Builtins.lc 536:35-536:72 V1 1921./testdata/accept/Builtins.lc 538:34-538:43 'Nat -> Type->Type
1911./testdata/accept/Builtins.lc 536:39-536:56 Type 1922./testdata/accept/Builtins.lc 538:34-538:70 'Nat
1912./testdata/accept/Builtins.lc 536:39-536:48 'Nat -> Type->Type 1923./testdata/accept/Builtins.lc 538:34-538:70 V1
1913./testdata/accept/Builtins.lc 536:51-536:56 Type 1924./testdata/accept/Builtins.lc 538:46-538:51 Type
1914./testdata/accept/Builtins.lc 536:1-536:10 {a} -> {b : a ~ 'VecS 'Float (Succ (Succ (Succ Zero)))} -> a -> a->a 1925./testdata/accept/Builtins.lc 538:55-538:64 'Nat -> Type->Type
1915./testdata/accept/Builtins.lc 537:35-537:67 Type 1926./testdata/accept/Builtins.lc 538:67-538:70 Type
1916./testdata/accept/Builtins.lc 537:35-537:67 V3 1927./testdata/accept/Builtins.lc 538:1-538:19 {a:'Nat} -> 'VecScalar a 'Float -> 'VecScalar a 'Int
1917./testdata/accept/Builtins.lc 537:39-537:48 'Nat -> Type->Type 1928./testdata/accept/Builtins.lc 539:34-539:71 Type
1918./testdata/accept/Builtins.lc 537:35-537:67 'Nat 1929./testdata/accept/Builtins.lc 539:34-539:43 'Nat -> Type->Type
1919./testdata/accept/Builtins.lc 537:35-537:67 V1 1930./testdata/accept/Builtins.lc 539:34-539:71 'Nat
1920./testdata/accept/Builtins.lc 537:51-537:56 Type 1931./testdata/accept/Builtins.lc 539:34-539:71 V1
1921./testdata/accept/Builtins.lc 537:1-537:14 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1932./testdata/accept/Builtins.lc 539:46-539:51 Type
1922./testdata/accept/Builtins.lc 538:35-538:77 Type 1933./testdata/accept/Builtins.lc 539:55-539:64 'Nat -> Type->Type
1923./testdata/accept/Builtins.lc 538:35-538:77 V3 1934./testdata/accept/Builtins.lc 539:67-539:71 Type
1924./testdata/accept/Builtins.lc 538:39-538:48 'Nat -> Type->Type 1935./testdata/accept/Builtins.lc 539:1-539:20 {a:'Nat} -> 'VecScalar a 'Float -> 'VecScalar a 'Word
1925./testdata/accept/Builtins.lc 538:35-538:77 'Nat 1936./testdata/accept/Builtins.lc 540:34-540:72 Type
1926./testdata/accept/Builtins.lc 538:35-538:77 V1 1937./testdata/accept/Builtins.lc 540:34-540:43 'Nat -> Type->Type
1927./testdata/accept/Builtins.lc 538:51-538:56 Type 1938./testdata/accept/Builtins.lc 540:34-540:72 'Nat
1928./testdata/accept/Builtins.lc 538:1-538:16 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a -> a->a 1939./testdata/accept/Builtins.lc 540:34-540:72 V1
1929./testdata/accept/Builtins.lc 538:18-538:29 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a -> a->a 1940./testdata/accept/Builtins.lc 540:46-540:49 Type
1930./testdata/accept/Builtins.lc 539:35-539:72 Type 1941./testdata/accept/Builtins.lc 540:55-540:64 'Nat -> Type->Type
1931./testdata/accept/Builtins.lc 539:35-539:72 V3 1942./testdata/accept/Builtins.lc 540:67-540:72 Type
1932./testdata/accept/Builtins.lc 539:39-539:48 'Nat -> Type->Type 1943./testdata/accept/Builtins.lc 540:1-540:19 {a:'Nat} -> 'VecScalar a 'Int -> 'VecScalar a 'Float
1933./testdata/accept/Builtins.lc 539:35-539:72 'Nat 1944./testdata/accept/Builtins.lc 541:34-541:72 Type
1934./testdata/accept/Builtins.lc 539:35-539:72 V1 1945./testdata/accept/Builtins.lc 541:34-541:43 'Nat -> Type->Type
1935./testdata/accept/Builtins.lc 539:51-539:56 Type 1946./testdata/accept/Builtins.lc 541:34-541:72 'Nat
1936./testdata/accept/Builtins.lc 539:1-539:12 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a->a 1947./testdata/accept/Builtins.lc 541:34-541:72 V1
1937./testdata/accept/Builtins.lc 541:34-541:57 Type 1948./testdata/accept/Builtins.lc 541:46-541:50 Type
1938./testdata/accept/Builtins.lc 541:34-541:39 Type -> Type->Type 1949./testdata/accept/Builtins.lc 541:55-541:64 'Nat -> Type->Type
1939./testdata/accept/Builtins.lc 541:34-541:57 V3 1950./testdata/accept/Builtins.lc 541:67-541:72 Type
1940./testdata/accept/Builtins.lc 541:34-541:57 V1 1951./testdata/accept/Builtins.lc 541:1-541:20 {a:'Nat} -> 'VecScalar a 'Word -> 'VecScalar a 'Float
1941./testdata/accept/Builtins.lc 541:48-541:53 Type -> Type->Type 1952./testdata/accept/Builtins.lc 543:35-543:71 Type
1942./testdata/accept/Builtins.lc 541:1-541:14 {a} -> {b} -> 'TFMat a b -> 'TFMat b a 1953./testdata/accept/Builtins.lc 543:35-543:71 V3
1943./testdata/accept/Builtins.lc 542:34-542:53 Type 1954./testdata/accept/Builtins.lc 543:39-543:48 'Nat -> Type->Type
1944./testdata/accept/Builtins.lc 542:34-542:39 Type -> Type->Type 1955./testdata/accept/Builtins.lc 543:35-543:71 'Nat
1945./testdata/accept/Builtins.lc 542:34-542:53 V1 1956./testdata/accept/Builtins.lc 543:35-543:71 V1
1946./testdata/accept/Builtins.lc 542:48-542:53 Type 1957./testdata/accept/Builtins.lc 543:51-543:56 Type
1947./testdata/accept/Builtins.lc 542:1-542:16 {a} -> 'TFMat a a -> 'Float 1958./testdata/accept/Builtins.lc 543:66-543:71 Type
1948./testdata/accept/Builtins.lc 543:34-543:57 Type 1959./testdata/accept/Builtins.lc 543:1-543:11 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->'Float
1949./testdata/accept/Builtins.lc 543:34-543:39 Type -> Type->Type 1960./testdata/accept/Builtins.lc 544:35-544:76 Type
1950./testdata/accept/Builtins.lc 543:34-543:57 V1 1961./testdata/accept/Builtins.lc 544:35-544:76 V3
1951./testdata/accept/Builtins.lc 543:48-543:53 Type -> Type->Type 1962./testdata/accept/Builtins.lc 544:39-544:48 'Nat -> Type->Type
1952./testdata/accept/Builtins.lc 543:1-543:12 {a} -> 'TFMat a a -> 'TFMat a a 1963./testdata/accept/Builtins.lc 544:35-544:76 'Nat
1953./testdata/accept/Builtins.lc 544:34-544:71 Type 1964./testdata/accept/Builtins.lc 544:35-544:76 V1
1954./testdata/accept/Builtins.lc 544:34-544:71 V3 1965./testdata/accept/Builtins.lc 544:51-544:56 Type
1955./testdata/accept/Builtins.lc 544:34-544:71 V2 1966./testdata/accept/Builtins.lc 544:71-544:76 Type
1956./testdata/accept/Builtins.lc 544:62-544:67 Type -> Type->Type 1967./testdata/accept/Builtins.lc 544:1-544:13 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a->'Float
1957./testdata/accept/Builtins.lc 544:1-544:17 {a} -> {b} -> a -> b -> 'TFMat b a 1968./testdata/accept/Builtins.lc 544:15-544:22 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a->'Float
1958./testdata/accept/Builtins.lc 545:34-545:63 Type 1969./testdata/accept/Builtins.lc 545:35-545:72 Type
1959./testdata/accept/Builtins.lc 545:34-545:39 Type -> Type->Type 1970./testdata/accept/Builtins.lc 545:35-545:72 V1
1960./testdata/accept/Builtins.lc 545:34-545:63 V3 1971./testdata/accept/Builtins.lc 545:39-545:56 Type
1961./testdata/accept/Builtins.lc 545:34-545:63 V1 1972./testdata/accept/Builtins.lc 545:39-545:48 'Nat -> Type->Type
1962./testdata/accept/Builtins.lc 545:1-545:14 {a} -> {b} -> 'TFMat a b -> b->a 1973./testdata/accept/Builtins.lc 545:51-545:56 Type
1963./testdata/accept/Builtins.lc 546:34-546:63 Type 1974./testdata/accept/Builtins.lc 545:1-545:10 {a} -> {b : a ~ 'VecS 'Float (Succ (Succ (Succ Zero)))} -> a -> a->a
1964./testdata/accept/Builtins.lc 546:34-546:63 V3 1975./testdata/accept/Builtins.lc 546:35-546:67 Type
1965./testdata/accept/Builtins.lc 546:48-546:53 Type -> Type->Type 1976./testdata/accept/Builtins.lc 546:35-546:67 V3
1966./testdata/accept/Builtins.lc 546:34-546:63 V2 1977./testdata/accept/Builtins.lc 546:39-546:48 'Nat -> Type->Type
1967./testdata/accept/Builtins.lc 546:1-546:14 {a} -> {b} -> a -> 'TFMat a b -> b 1978./testdata/accept/Builtins.lc 546:35-546:67 'Nat
1968./testdata/accept/Builtins.lc 547:34-547:71 Type 1979./testdata/accept/Builtins.lc 546:35-546:67 V1
1969./testdata/accept/Builtins.lc 547:34-547:39 Type -> Type->Type 1980./testdata/accept/Builtins.lc 546:51-546:56 Type
1970./testdata/accept/Builtins.lc 547:34-547:71 V5 1981./testdata/accept/Builtins.lc 546:1-546:14 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1971./testdata/accept/Builtins.lc 547:34-547:71 V3 1982./testdata/accept/Builtins.lc 547:35-547:77 Type
1972./testdata/accept/Builtins.lc 547:48-547:53 Type -> Type->Type 1983./testdata/accept/Builtins.lc 547:35-547:77 V3
1973./testdata/accept/Builtins.lc 547:34-547:71 V2 1984./testdata/accept/Builtins.lc 547:39-547:48 'Nat -> Type->Type
1974./testdata/accept/Builtins.lc 547:62-547:67 Type -> Type->Type 1985./testdata/accept/Builtins.lc 547:35-547:77 'Nat
1975./testdata/accept/Builtins.lc 547:1-547:14 {a} -> {b} -> {c} -> 'TFMat a b -> 'TFMat b c -> 'TFMat a c 1986./testdata/accept/Builtins.lc 547:35-547:77 V1
1976./testdata/accept/Builtins.lc 550:35-550:97 Type 1987./testdata/accept/Builtins.lc 547:51-547:56 Type
1977./testdata/accept/Builtins.lc 550:35-550:38 Type->Type 1988./testdata/accept/Builtins.lc 547:1-547:16 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a -> a->a
1978./testdata/accept/Builtins.lc 550:35-550:97 V7 1989./testdata/accept/Builtins.lc 547:18-547:29 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a -> a->a
1979./testdata/accept/Builtins.lc 550:35-550:97 V6 1990./testdata/accept/Builtins.lc 548:35-548:72 Type
1980./testdata/accept/Builtins.lc 550:46-550:55 'Nat -> Type->Type 1991./testdata/accept/Builtins.lc 548:35-548:72 V3
1981./testdata/accept/Builtins.lc 550:35-550:97 'Nat 1992./testdata/accept/Builtins.lc 548:39-548:48 'Nat -> Type->Type
1982./testdata/accept/Builtins.lc 550:35-550:97 V4 1993./testdata/accept/Builtins.lc 548:35-548:72 'Nat
1983./testdata/accept/Builtins.lc 550:35-550:97 V3 1994./testdata/accept/Builtins.lc 548:35-548:72 V1
1984./testdata/accept/Builtins.lc 550:65-550:74 'Nat -> Type->Type 1995./testdata/accept/Builtins.lc 548:51-548:56 Type
1985./testdata/accept/Builtins.lc 550:77-550:81 Type 1996./testdata/accept/Builtins.lc 548:1-548:12 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a->a
1986./testdata/accept/Builtins.lc 549:1-549:13 {a} -> {b} -> {c:'Nat} -> {d} -> {e : 'Num a} -> {f : b ~ 'VecScalar c a} -> {g : d ~ 'VecScalar c 'Bool} -> b -> b->d 1997./testdata/accept/Builtins.lc 550:34-550:57 Type
1987./testdata/accept/Builtins.lc 549:15-549:32 {a} -> {b} -> {c:'Nat} -> {d} -> {e : 'Num a} -> {f : b ~ 'VecScalar c a} -> {g : d ~ 'VecScalar c 'Bool} -> b -> b->d 1998./testdata/accept/Builtins.lc 550:34-550:39 Type -> Type->Type
1988./testdata/accept/Builtins.lc 549:34-549:49 {a} -> {b} -> {c:'Nat} -> {d} -> {e : 'Num a} -> {f : b ~ 'VecScalar c a} -> {g : d ~ 'VecScalar c 'Bool} -> b -> b->d 1999./testdata/accept/Builtins.lc 550:34-550:57 V3
1989./testdata/accept/Builtins.lc 549:51-549:71 {a} -> {b} -> {c:'Nat} -> {d} -> {e : 'Num a} -> {f : b ~ 'VecScalar c a} -> {g : d ~ 'VecScalar c 'Bool} -> b -> b->d 2000./testdata/accept/Builtins.lc 550:34-550:57 V1
1990./testdata/accept/Builtins.lc 549:73-549:83 {a} -> {b} -> {c:'Nat} -> {d} -> {e : 'Num a} -> {f : b ~ 'VecScalar c a} -> {g : d ~ 'VecScalar c 'Bool} -> b -> b->d 2001./testdata/accept/Builtins.lc 550:48-550:53 Type -> Type->Type
1991./testdata/accept/Builtins.lc 549:85-549:98 {a} -> {b} -> {c:'Nat} -> {d} -> {e : 'Num a} -> {f : b ~ 'VecScalar c a} -> {g : d ~ 'VecScalar c 'Bool} -> b -> b->d 2002./testdata/accept/Builtins.lc 550:1-550:14 {a} -> {b} -> 'TFMat a b -> 'TFMat b a
1992./testdata/accept/Builtins.lc 551:35-551:76 Type 2003./testdata/accept/Builtins.lc 551:34-551:53 Type
1993./testdata/accept/Builtins.lc 551:35-551:76 V3 2004./testdata/accept/Builtins.lc 551:34-551:39 Type -> Type->Type
1994./testdata/accept/Builtins.lc 551:39-551:55 Type->Type 2005./testdata/accept/Builtins.lc 551:34-551:53 V1
1995./testdata/accept/Builtins.lc 551:35-551:76 V1 2006./testdata/accept/Builtins.lc 551:48-551:53 Type
1996./testdata/accept/Builtins.lc 551:72-551:76 Type 2007./testdata/accept/Builtins.lc 551:1-551:16 {a} -> 'TFMat a a -> 'Float
1997./testdata/accept/Builtins.lc 551:1-551:10 {a} -> {b} -> {c : a ~ 'MatVecScalarElem b} -> b -> b->'Bool 2008./testdata/accept/Builtins.lc 552:34-552:57 Type
1998./testdata/accept/Builtins.lc 551:12-551:24 {a} -> {b} -> {c : a ~ 'MatVecScalarElem b} -> b -> b->'Bool 2009./testdata/accept/Builtins.lc 552:34-552:39 Type -> Type->Type
1999./testdata/accept/Builtins.lc 554:35-554:67 Type 2010./testdata/accept/Builtins.lc 552:34-552:57 V1
2000./testdata/accept/Builtins.lc 554:35-554:67 V3 2011./testdata/accept/Builtins.lc 552:48-552:53 Type -> Type->Type
2001./testdata/accept/Builtins.lc 554:39-554:48 'Nat -> Type->Type 2012./testdata/accept/Builtins.lc 552:1-552:12 {a} -> 'TFMat a a -> 'TFMat a a
2002./testdata/accept/Builtins.lc 554:35-554:67 'Nat 2013./testdata/accept/Builtins.lc 553:34-553:71 Type
2003./testdata/accept/Builtins.lc 554:35-554:67 V1 2014./testdata/accept/Builtins.lc 553:34-553:71 V3
2004./testdata/accept/Builtins.lc 554:51-554:56 Type 2015./testdata/accept/Builtins.lc 553:34-553:71 V2
2005./testdata/accept/Builtins.lc 553:1-553:9 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 2016./testdata/accept/Builtins.lc 553:62-553:67 Type -> Type->Type
2006./testdata/accept/Builtins.lc 553:11-553:19 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 2017./testdata/accept/Builtins.lc 553:1-553:17 {a} -> {b} -> a -> b -> 'TFMat b a
2007./testdata/accept/Builtins.lc 553:21-553:31 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 2018./testdata/accept/Builtins.lc 554:34-554:63 Type
2008./testdata/accept/Builtins.lc 556:34-556:60 Type 2019./testdata/accept/Builtins.lc 554:34-554:39 Type -> Type->Type
2009./testdata/accept/Builtins.lc 556:34-556:43 'Nat -> Type->Type 2020./testdata/accept/Builtins.lc 554:34-554:63 V3
2010./testdata/accept/Builtins.lc 556:34-556:60 'Nat 2021./testdata/accept/Builtins.lc 554:34-554:63 V1
2011./testdata/accept/Builtins.lc 556:34-556:60 V1 2022./testdata/accept/Builtins.lc 554:1-554:14 {a} -> {b} -> 'TFMat a b -> b->a
2012./testdata/accept/Builtins.lc 556:46-556:51 Type 2023./testdata/accept/Builtins.lc 555:34-555:63 Type
2013./testdata/accept/Builtins.lc 556:55-556:60 Type 2024./testdata/accept/Builtins.lc 555:34-555:63 V3
2014./testdata/accept/Builtins.lc 556:1-556:11 {a:'Nat} -> 'VecScalar a 'Float -> 'Float 2025./testdata/accept/Builtins.lc 555:48-555:53 Type -> Type->Type
2015./testdata/accept/Builtins.lc 557:34-557:66 Type 2026./testdata/accept/Builtins.lc 555:34-555:63 V2
2016./testdata/accept/Builtins.lc 557:34-557:43 'Nat -> Type->Type 2027./testdata/accept/Builtins.lc 555:1-555:14 {a} -> {b} -> a -> 'TFMat a b -> b
2017./testdata/accept/Builtins.lc 557:34-557:66 'Nat 2028./testdata/accept/Builtins.lc 556:34-556:71 Type
2018./testdata/accept/Builtins.lc 557:34-557:66 V1 2029./testdata/accept/Builtins.lc 556:34-556:39 Type -> Type->Type
2019./testdata/accept/Builtins.lc 557:46-557:51 Type 2030./testdata/accept/Builtins.lc 556:34-556:71 V5
2020./testdata/accept/Builtins.lc 557:55-557:66 Type 2031./testdata/accept/Builtins.lc 556:34-556:71 V3
2021./testdata/accept/Builtins.lc 557:55-557:58 'Nat -> Type->Type 2032./testdata/accept/Builtins.lc 556:48-556:53 Type -> Type->Type
2022./testdata/accept/Builtins.lc 557:61-557:66 Type 2033./testdata/accept/Builtins.lc 556:34-556:71 V2
2023./testdata/accept/Builtins.lc 557:1-557:11 {a:'Nat} -> 'VecScalar a 'Float -> 'VecS 'Float (Succ (Succ Zero)) 2034./testdata/accept/Builtins.lc 556:62-556:67 Type -> Type->Type
2024./testdata/accept/Builtins.lc 558:34-558:66 Type 2035./testdata/accept/Builtins.lc 556:1-556:14 {a} -> {b} -> {c} -> 'TFMat a b -> 'TFMat b c -> 'TFMat a c
2025./testdata/accept/Builtins.lc 558:34-558:43 'Nat -> Type->Type 2036./testdata/accept/Builtins.lc 559:35-559:97 Type
2026./testdata/accept/Builtins.lc 558:34-558:66 'Nat 2037./testdata/accept/Builtins.lc 559:35-559:38 Type->Type
2027./testdata/accept/Builtins.lc 558:34-558:66 V1 2038./testdata/accept/Builtins.lc 559:35-559:97 V7
2028./testdata/accept/Builtins.lc 558:46-558:51 Type 2039./testdata/accept/Builtins.lc 559:35-559:97 V6
2029./testdata/accept/Builtins.lc 558:55-558:66 Type 2040./testdata/accept/Builtins.lc 559:46-559:55 'Nat -> Type->Type
2030./testdata/accept/Builtins.lc 558:55-558:58 'Nat -> Type->Type 2041./testdata/accept/Builtins.lc 559:35-559:97 'Nat
2031./testdata/accept/Builtins.lc 558:61-558:66 Type 2042./testdata/accept/Builtins.lc 559:35-559:97 V4
2032./testdata/accept/Builtins.lc 558:1-558:11 {a:'Nat} -> 'VecScalar a 'Float -> 'VecS 'Float (Succ (Succ (Succ Zero))) 2043./testdata/accept/Builtins.lc 559:35-559:97 V3
2033./testdata/accept/Builtins.lc 559:34-559:66 Type 2044./testdata/accept/Builtins.lc 559:65-559:74 'Nat -> Type->Type
2034./testdata/accept/Builtins.lc 559:34-559:43 'Nat -> Type->Type 2045./testdata/accept/Builtins.lc 559:77-559:81 Type
2035./testdata/accept/Builtins.lc 559:34-559:66 'Nat 2046./testdata/accept/Builtins.lc 558:1-558:13 {a} -> {b} -> {c:'Nat} -> {d} -> {e : 'Num a} -> {f : b ~ 'VecScalar c a} -> {g : d ~ 'VecScalar c 'Bool} -> b -> b->d
2036./testdata/accept/Builtins.lc 559:34-559:66 V1 2047./testdata/accept/Builtins.lc 558:15-558:32 {a} -> {b} -> {c:'Nat} -> {d} -> {e : 'Num a} -> {f : b ~ 'VecScalar c a} -> {g : d ~ 'VecScalar c 'Bool} -> b -> b->d
2037./testdata/accept/Builtins.lc 559:46-559:51 Type 2048./testdata/accept/Builtins.lc 558:34-558:49 {a} -> {b} -> {c:'Nat} -> {d} -> {e : 'Num a} -> {f : b ~ 'VecScalar c a} -> {g : d ~ 'VecScalar c 'Bool} -> b -> b->d
2038./testdata/accept/Builtins.lc 559:55-559:66 Type 2049./testdata/accept/Builtins.lc 558:51-558:71 {a} -> {b} -> {c:'Nat} -> {d} -> {e : 'Num a} -> {f : b ~ 'VecScalar c a} -> {g : d ~ 'VecScalar c 'Bool} -> b -> b->d
2039./testdata/accept/Builtins.lc 559:55-559:58 'Nat -> Type->Type 2050./testdata/accept/Builtins.lc 558:73-558:83 {a} -> {b} -> {c:'Nat} -> {d} -> {e : 'Num a} -> {f : b ~ 'VecScalar c a} -> {g : d ~ 'VecScalar c 'Bool} -> b -> b->d
2040./testdata/accept/Builtins.lc 559:61-559:66 Type 2051./testdata/accept/Builtins.lc 558:85-558:98 {a} -> {b} -> {c:'Nat} -> {d} -> {e : 'Num a} -> {f : b ~ 'VecScalar c a} -> {g : d ~ 'VecScalar c 'Bool} -> b -> b->d
2041./testdata/accept/Builtins.lc 559:1-559:11 {a:'Nat} -> 'VecScalar a 'Float -> 'VecS 'Float (Succ (Succ (Succ (Succ Zero)))) 2052./testdata/accept/Builtins.lc 560:35-560:76 Type
2042./testdata/accept/Builtins.lc 575:6-575:13 Type 2053./testdata/accept/Builtins.lc 560:35-560:76 V3
2043./testdata/accept/Builtins.lc 576:20-576:26 Type 2054./testdata/accept/Builtins.lc 560:39-560:55 Type->Type
2044./testdata/accept/Builtins.lc 577:20-577:27 Type 2055./testdata/accept/Builtins.lc 560:35-560:76 V1
2045./testdata/accept/Builtins.lc 576:3-576:16 'String->'Texture 2056./testdata/accept/Builtins.lc 560:72-560:76 Type
2046./testdata/accept/Builtins.lc 579:20-579:23 'Nat -> Type->Type 2057./testdata/accept/Builtins.lc 560:1-560:10 {a} -> {b} -> {c : a ~ 'MatVecScalarElem b} -> b -> b->'Bool
2047./testdata/accept/Builtins.lc 579:26-579:29 Type 2058./testdata/accept/Builtins.lc 560:12-560:24 {a} -> {b} -> {c : a ~ 'MatVecScalarElem b} -> b -> b->'Bool
2048./testdata/accept/Builtins.lc 580:20-581:27 Type 2059./testdata/accept/Builtins.lc 563:35-563:67 Type
2049./testdata/accept/Builtins.lc 580:20-580:25 'Nat -> Type->Type 2060./testdata/accept/Builtins.lc 563:35-563:67 V3
2050./testdata/accept/Builtins.lc 580:29-580:47 Type 2061./testdata/accept/Builtins.lc 563:39-563:48 'Nat -> Type->Type
2051./testdata/accept/Builtins.lc 580:29-580:34 Type->Type 2062./testdata/accept/Builtins.lc 563:35-563:67 'Nat
2052./testdata/accept/Builtins.lc 580:36-580:47 Type 2063./testdata/accept/Builtins.lc 563:35-563:67 V1
2053./testdata/accept/Builtins.lc 580:36-580:39 'Nat -> Type->Type 2064./testdata/accept/Builtins.lc 563:51-563:56 Type
2054./testdata/accept/Builtins.lc 580:42-580:47 Type 2065./testdata/accept/Builtins.lc 562:1-562:9 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
2055./testdata/accept/Builtins.lc 581:20-581:27 Type 2066./testdata/accept/Builtins.lc 562:11-562:19 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
2056./testdata/accept/Builtins.lc 579:3-579:12 'VecS 'Int (Succ (Succ Zero)) -> 'Image (Succ Zero) ('Color ('VecS 'Float (Succ (Succ (Succ (Succ Zero)))))) -> 'Texture 2067./testdata/accept/Builtins.lc 562:21-562:31 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
2057./testdata/accept/Builtins.lc 583:6-583:12 Type 2068./testdata/accept/Builtins.lc 565:34-565:60 Type
2058./testdata/accept/Builtins.lc 584:5-584:16 'Filter 2069./testdata/accept/Builtins.lc 565:34-565:43 'Nat -> Type->Type
2059./testdata/accept/Builtins.lc 585:5-585:17 'Filter 2070./testdata/accept/Builtins.lc 565:34-565:60 'Nat
2060./testdata/accept/Builtins.lc 587:6-587:14 Type 2071./testdata/accept/Builtins.lc 565:34-565:60 V1
2061./testdata/accept/Builtins.lc 588:5-588:11 'EdgeMode 2072./testdata/accept/Builtins.lc 565:46-565:51 Type
2062./testdata/accept/Builtins.lc 589:5-589:19 'EdgeMode 2073./testdata/accept/Builtins.lc 565:55-565:60 Type
2063./testdata/accept/Builtins.lc 590:5-590:16 'EdgeMode 2074./testdata/accept/Builtins.lc 565:1-565:11 {a:'Nat} -> 'VecScalar a 'Float -> 'Float
2064./testdata/accept/Builtins.lc 592:6-592:13 Type 2075./testdata/accept/Builtins.lc 566:34-566:66 Type
2065./testdata/accept/Builtins.lc 592:24-592:30 Type 2076./testdata/accept/Builtins.lc 566:34-566:43 'Nat -> Type->Type
2066./testdata/accept/Builtins.lc 592:6-592:47 Type 2077./testdata/accept/Builtins.lc 566:34-566:66 'Nat
2067./testdata/accept/Builtins.lc 592:31-592:39 Type 2078./testdata/accept/Builtins.lc 566:34-566:66 V1
2068./testdata/accept/Builtins.lc 592:40-592:47 Type 2079./testdata/accept/Builtins.lc 566:46-566:51 Type
2069./testdata/accept/Builtins.lc 592:16-592:23 'Filter -> 'EdgeMode -> 'Texture->'Sampler 2080./testdata/accept/Builtins.lc 566:55-566:66 Type
2070./testdata/accept/Builtins.lc 595:14-595:21 Type 2081./testdata/accept/Builtins.lc 566:55-566:58 'Nat -> Type->Type
2071./testdata/accept/Builtins.lc 595:25-595:51 Type 2082./testdata/accept/Builtins.lc 566:61-566:66 Type
2072./testdata/accept/Builtins.lc 595:25-595:28 'Nat -> Type->Type 2083./testdata/accept/Builtins.lc 566:1-566:11 {a:'Nat} -> 'VecScalar a 'Float -> 'VecS 'Float (Succ (Succ Zero))
2073./testdata/accept/Builtins.lc 595:31-595:36 Type 2084./testdata/accept/Builtins.lc 567:34-567:66 Type
2074./testdata/accept/Builtins.lc 595:40-595:51 Type 2085./testdata/accept/Builtins.lc 567:34-567:43 'Nat -> Type->Type
2075./testdata/accept/Builtins.lc 595:40-595:43 'Nat -> Type->Type 2086./testdata/accept/Builtins.lc 567:34-567:66 'Nat
2076./testdata/accept/Builtins.lc 595:46-595:51 Type 2087./testdata/accept/Builtins.lc 567:34-567:66 V1
2077./testdata/accept/Builtins.lc 595:1-595:10 'Sampler -> 'VecS 'Float (Succ (Succ Zero)) -> 'VecS 'Float (Succ (Succ (Succ (Succ Zero)))) 2088./testdata/accept/Builtins.lc 567:46-567:51 Type
2078./testdata/accept/Builtins.lc 598:30-598:39 {a} -> {b} -> a->b -> 'Stream a -> 'Stream b 2089./testdata/accept/Builtins.lc 567:55-567:66 Type
2079./testdata/accept/Builtins.lc 598:41-598:60 V1->V1 2090./testdata/accept/Builtins.lc 567:55-567:58 'Nat -> Type->Type
2080./testdata/accept/Builtins.lc 598:41-598:51 {a} -> {b} -> {c} -> {d:'PrimitiveType} -> {e : a ~ 'InterpolatedType b} -> {f : c ~ 'JoinTupleType ('VecS 'Float (Succ (Succ (Succ (Succ Zero))))) a} -> c->'Float -> b -> 'RasterContext d -> 'Primitive d c -> 'Fragment (Succ Zero) DefinedDepth a 2091./testdata/accept/Builtins.lc 567:61-567:66 Type
2081./testdata/accept/Builtins.lc 598:53-598:60 'JoinTupleType ('VecS 'Float (Succ (Succ (Succ (Succ Zero))))) ('InterpolatedType V1) -> 'Float 2092./testdata/accept/Builtins.lc 567:1-567:11 {a:'Nat} -> 'VecScalar a 'Float -> 'VecS 'Float (Succ (Succ (Succ Zero)))
2082./testdata/accept/Builtins.lc 598:59-598:60 'Float 2093./testdata/accept/Builtins.lc 568:34-568:66 Type
2083./testdata/accept/Builtins.lc 598:59-598:60 'Int 2094./testdata/accept/Builtins.lc 568:34-568:43 'Nat -> Type->Type
2084./testdata/accept/Builtins.lc 598:1-598:20 {a} -> {b:'PrimitiveType} -> 'RasterContext b -> a -> 'Stream ('Primitive b ('JoinTupleType ('VecS 'Float (Succ (Succ (Succ (Succ Zero))))) ('InterpolatedType a))) -> 'Stream ('Fragment (Succ Zero) DefinedDepth ('InterpolatedType a)) 2095./testdata/accept/Builtins.lc 568:34-568:66 'Nat
2085./testdata/accept/Builtins.lc 599:46-599:55 {a} -> {b} -> a->b -> 'Stream a -> 'Stream b 2096./testdata/accept/Builtins.lc 568:34-568:66 V1
2086./testdata/accept/Builtins.lc 599:57-599:67 V1->V1 2097./testdata/accept/Builtins.lc 568:46-568:51 Type
2087./testdata/accept/Builtins.lc 599:57-599:67 {a} -> {b} -> {c} -> {d:'PrimitiveType} -> {e : a ~ 'InterpolatedType b} -> {f : c ~ 'JoinTupleType ('VecS 'Float (Succ (Succ (Succ (Succ Zero))))) a} -> c->'Float -> b -> 'RasterContext d -> 'Primitive d c -> 'Fragment (Succ Zero) DefinedDepth a 2098./testdata/accept/Builtins.lc 568:55-568:66 Type
2088./testdata/accept/Builtins.lc 599:1-599:33 {a} -> {b:'PrimitiveType} -> 'RasterContext b -> ('JoinTupleType ('VecS 'Float (Succ (Succ (Succ (Succ Zero))))) ('InterpolatedType a) -> 'Float) -> a -> 'Stream ('Primitive b ('JoinTupleType ('VecS 'Float (Succ (Succ (Succ (Succ Zero))))) ('InterpolatedType a))) -> 'Stream ('Fragment (Succ Zero) DefinedDepth ('InterpolatedType a)) 2099./testdata/accept/Builtins.lc 568:55-568:58 'Nat -> Type->Type
2089./testdata/accept/Builtins.lc 600:24-600:32 {a} -> {b} -> a -> b -> 'Tuple2 a b 2100./testdata/accept/Builtins.lc 568:61-568:66 Type
2090./testdata/accept/Builtins.lc 600:1-600:15 {a} -> {b} -> a -> b -> 'Tuple2 a b 2101./testdata/accept/Builtins.lc 568:1-568:11 {a:'Nat} -> 'VecScalar a 'Float -> 'VecS 'Float (Succ (Succ (Succ (Succ Zero))))
2091./testdata/accept/Builtins.lc 601:25-601:35 V2 -> V2->V2 2102./testdata/accept/Builtins.lc 584:6-584:13 Type
2092./testdata/accept/Builtins.lc 601:25-601:35 V2->V2 2103./testdata/accept/Builtins.lc 585:20-585:26 Type
2093./testdata/accept/Builtins.lc 601:25-601:35 V2 2104./testdata/accept/Builtins.lc 586:20-586:27 Type
2094./testdata/accept/Builtins.lc 601:25-601:35 {a:'Nat} -> {b} -> {c} -> {d:'DepthHandler} -> {e : b ~ 'FragOps c} -> c -> 'Stream ('Fragment a d ('RemSemantics b)) -> 'FrameBuffer a b -> 'FrameBuffer a b 2105./testdata/accept/Builtins.lc 585:3-585:16 'String->'Texture
2095./testdata/accept/Builtins.lc 601:13-601:21 'Tuple2 V2 ('Stream ('Fragment V1 V0 ('RemSemantics ('FragOps V2)))) 2106./testdata/accept/Builtins.lc 588:20-588:23 'Nat -> Type->Type
2096./testdata/accept/Builtins.lc 601:13-601:21 V4 2107./testdata/accept/Builtins.lc 588:26-588:29 Type
2097./testdata/accept/Builtins.lc 601:1-601:8 {a} -> {b:'Nat} -> {c:'DepthHandler} -> 'FrameBuffer b ('FragOps a) -> 'Tuple2 a ('Stream ('Fragment b c ('RemSemantics ('FragOps a)))) -> 'FrameBuffer b ('FragOps a) 2108./testdata/accept/Builtins.lc 589:20-590:27 Type
2098./testdata/accept/Builtins.lc 602:15-602:24 {a:'Nat} -> {b} -> 'FrameBuffer a b -> 'Output 2109./testdata/accept/Builtins.lc 589:20-589:25 'Nat -> Type->Type
2099./testdata/accept/Builtins.lc 602:1-602:12 {a:'Nat} -> {b} -> 'FrameBuffer a b -> 'Output 2110./testdata/accept/Builtins.lc 589:29-589:47 Type
2100./testdata/accept/Builtins.lc 603:14-603:25 {a:'Nat} -> {b} -> {c} -> {d : 'SameLayerCounts c} -> {e : 'FrameBuffer a b ~ 'TFFrameBuffer c} -> c -> 'FrameBuffer a b 2111./testdata/accept/Builtins.lc 589:29-589:34 Type->Type
2101./testdata/accept/Builtins.lc 603:1-603:11 {a:'Nat} -> {b} -> {c} -> {d : 'SameLayerCounts c} -> {e : 'FrameBuffer a b ~ 'TFFrameBuffer c} -> c -> 'FrameBuffer a b 2112./testdata/accept/Builtins.lc 589:36-589:47 Type
2102./testdata/accept/Builtins.lc 604:19-604:29 {a:'Nat} -> 'Float -> 'Image a ('Depth 'Float) 2113./testdata/accept/Builtins.lc 589:36-589:39 'Nat -> Type->Type
2103./testdata/accept/Builtins.lc 604:1-604:16 'Float -> 'Image (Succ Zero) ('Depth 'Float) 2114./testdata/accept/Builtins.lc 589:42-589:47 Type
2104./testdata/accept/Builtins.lc 605:19-605:29 {a:'Nat} -> {b:'Nat} -> {c} -> {d} -> {e : 'Num c} -> {f : d ~ 'VecScalar b c} -> d -> 'Image a ('Color d) 2115./testdata/accept/Builtins.lc 590:20-590:27 Type
2105./testdata/accept/Builtins.lc 605:1-605:16 {a:'Nat} -> {b} -> {c} -> {d : 'Num b} -> {e : c ~ 'VecScalar a b} -> c -> 'Image (Succ Zero) ('Color c) 2116./testdata/accept/Builtins.lc 588:3-588:12 'VecS 'Int (Succ (Succ Zero)) -> 'Image (Succ Zero) ('Color ('VecS 'Float (Succ (Succ (Succ (Succ Zero)))))) -> 'Texture
2117./testdata/accept/Builtins.lc 592:6-592:12 Type
2118./testdata/accept/Builtins.lc 593:5-593:16 'Filter
2119./testdata/accept/Builtins.lc 594:5-594:17 'Filter
2120./testdata/accept/Builtins.lc 596:6-596:14 Type
2121./testdata/accept/Builtins.lc 597:5-597:11 'EdgeMode
2122./testdata/accept/Builtins.lc 598:5-598:19 'EdgeMode
2123./testdata/accept/Builtins.lc 599:5-599:16 'EdgeMode
2124./testdata/accept/Builtins.lc 601:6-601:13 Type
2125./testdata/accept/Builtins.lc 601:24-601:30 Type
2126./testdata/accept/Builtins.lc 601:6-601:47 Type
2127./testdata/accept/Builtins.lc 601:31-601:39 Type
2128./testdata/accept/Builtins.lc 601:40-601:47 Type
2129./testdata/accept/Builtins.lc 601:16-601:23 'Filter -> 'EdgeMode -> 'Texture->'Sampler
2130./testdata/accept/Builtins.lc 604:14-604:21 Type
2131./testdata/accept/Builtins.lc 604:25-604:51 Type
2132./testdata/accept/Builtins.lc 604:25-604:28 'Nat -> Type->Type
2133./testdata/accept/Builtins.lc 604:31-604:36 Type
2134./testdata/accept/Builtins.lc 604:40-604:51 Type
2135./testdata/accept/Builtins.lc 604:40-604:43 'Nat -> Type->Type
2136./testdata/accept/Builtins.lc 604:46-604:51 Type
2137./testdata/accept/Builtins.lc 604:1-604:10 'Sampler -> 'VecS 'Float (Succ (Succ Zero)) -> 'VecS 'Float (Succ (Succ (Succ (Succ Zero))))
2138./testdata/accept/Builtins.lc 607:30-607:39 {a} -> {b} -> a->b -> 'Stream a -> 'Stream b
2139./testdata/accept/Builtins.lc 607:41-607:60 V1->V1
2140./testdata/accept/Builtins.lc 607:41-607:51 {a} -> {b} -> {c} -> {d:'PrimitiveType} -> {e : a ~ 'InterpolatedType b} -> {f : c ~ 'JoinTupleType ('VecS 'Float (Succ (Succ (Succ (Succ Zero))))) a} -> c->'Float -> b -> 'RasterContext d -> 'Primitive d c -> 'Fragment (Succ Zero) DefinedDepth a
2141./testdata/accept/Builtins.lc 607:53-607:60 'JoinTupleType ('VecS 'Float (Succ (Succ (Succ (Succ Zero))))) ('InterpolatedType V1) -> 'Float
2142./testdata/accept/Builtins.lc 607:59-607:60 'Float
2143./testdata/accept/Builtins.lc 607:59-607:60 'Int
2144./testdata/accept/Builtins.lc 607:1-607:20 {a} -> {b:'PrimitiveType} -> 'RasterContext b -> a -> 'Stream ('Primitive b ('JoinTupleType ('VecS 'Float (Succ (Succ (Succ (Succ Zero))))) ('InterpolatedType a))) -> 'Stream ('Fragment (Succ Zero) DefinedDepth ('InterpolatedType a))
2145./testdata/accept/Builtins.lc 608:46-608:55 {a} -> {b} -> a->b -> 'Stream a -> 'Stream b
2146./testdata/accept/Builtins.lc 608:57-608:67 V1->V1
2147./testdata/accept/Builtins.lc 608:57-608:67 {a} -> {b} -> {c} -> {d:'PrimitiveType} -> {e : a ~ 'InterpolatedType b} -> {f : c ~ 'JoinTupleType ('VecS 'Float (Succ (Succ (Succ (Succ Zero))))) a} -> c->'Float -> b -> 'RasterContext d -> 'Primitive d c -> 'Fragment (Succ Zero) DefinedDepth a
2148./testdata/accept/Builtins.lc 608:1-608:33 {a} -> {b:'PrimitiveType} -> 'RasterContext b -> ('JoinTupleType ('VecS 'Float (Succ (Succ (Succ (Succ Zero))))) ('InterpolatedType a) -> 'Float) -> a -> 'Stream ('Primitive b ('JoinTupleType ('VecS 'Float (Succ (Succ (Succ (Succ Zero))))) ('InterpolatedType a))) -> 'Stream ('Fragment (Succ Zero) DefinedDepth ('InterpolatedType a))
2149./testdata/accept/Builtins.lc 609:24-609:32 {a} -> {b} -> a -> b -> 'Tuple2 a b
2150./testdata/accept/Builtins.lc 609:1-609:15 {a} -> {b} -> a -> b -> 'Tuple2 a b
2151./testdata/accept/Builtins.lc 610:25-610:35 V2 -> V2->V2
2152./testdata/accept/Builtins.lc 610:25-610:35 V2->V2
2153./testdata/accept/Builtins.lc 610:25-610:35 V2
2154./testdata/accept/Builtins.lc 610:25-610:35 {a:'Nat} -> {b} -> {c:'DepthHandler} -> 'FragOps' b -> 'Stream ('Fragment a c ('RemSemantics b)) -> 'FrameBuffer a b -> 'FrameBuffer a b
2155./testdata/accept/Builtins.lc 610:13-610:21 'Tuple2 ('FragOps' V1) ('Stream ('Fragment V2 V0 ('RemSemantics V1)))
2156./testdata/accept/Builtins.lc 610:13-610:21 V4
2157./testdata/accept/Builtins.lc 610:1-610:8 {a:'Nat} -> {b} -> {c:'DepthHandler} -> 'FrameBuffer a b -> 'Tuple2 ('FragOps' b) ('Stream ('Fragment a c ('RemSemantics b))) -> 'FrameBuffer a b
2158./testdata/accept/Builtins.lc 611:15-611:24 {a:'Nat} -> {b} -> 'FrameBuffer a b -> 'Output
2159./testdata/accept/Builtins.lc 611:1-611:12 {a:'Nat} -> {b} -> 'FrameBuffer a b -> 'Output
2160./testdata/accept/Builtins.lc 612:14-612:25 {a:'Nat} -> {b} -> {c} -> {d : 'SameLayerCounts c} -> {e : 'FrameBuffer a b ~ 'TFFrameBuffer c} -> c -> 'FrameBuffer a b
2161./testdata/accept/Builtins.lc 612:1-612:11 {a:'Nat} -> {b} -> {c} -> {d : 'SameLayerCounts c} -> {e : 'FrameBuffer a b ~ 'TFFrameBuffer c} -> c -> 'FrameBuffer a b
2162./testdata/accept/Builtins.lc 613:19-613:29 {a:'Nat} -> 'Float -> 'Image a ('Depth 'Float)
2163./testdata/accept/Builtins.lc 613:1-613:16 'Float -> 'Image (Succ Zero) ('Depth 'Float)
2164./testdata/accept/Builtins.lc 614:19-614:29 {a:'Nat} -> {b:'Nat} -> {c} -> {d} -> {e : 'Num c} -> {f : d ~ 'VecScalar b c} -> d -> 'Image a ('Color d)
2165./testdata/accept/Builtins.lc 614:1-614:16 {a:'Nat} -> {b} -> {c} -> {d : 'Num b} -> {e : c ~ 'VecScalar a b} -> c -> 'Image (Succ Zero) ('Color c)
diff --git a/testdata/accept/Graphics.out b/testdata/accept/Graphics.out
index 2d2849e6..32488ea3 100644
--- a/testdata/accept/Graphics.out
+++ b/testdata/accept/Graphics.out
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("viewProj",M44F),("worldMat",M44F)], programStreams = fromList [("q2",Parameter {name = "position", ty = V3F}),("r2",Parameter {name = "color", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 viewProj ;\nuniform mat4 worldMat ;\nin vec3 q2 ;\nin vec4 r2 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = r2;\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( q2 ).x,( q2 ).y,( q2 ).z,1.0 ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = vec4 ( ( 1.0 ) - ( ( v0 ).x ),( 1.0 ) - ( ( v0 ).y ),( 1.0 ) - ( ( v0 ).z ),1.0 );\n}\n"},Program {programUniforms = fromList [("viewProj",M44F),("worldMat",M44F)], programStreams = fromList [("t5",Parameter {name = "position", ty = V3F}),("u5",Parameter {name = "color", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 viewProj ;\nuniform mat4 worldMat ;\nin vec3 t5 ;\nin vec4 u5 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( ( u5 ).x,( u5 ).y,( u5 ).z,0.5 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( t5 ).x,( t5 ).y,( t5 ).z,1.0 ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"},Program {programUniforms = fromList [("LightMap",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], programStreams = fromList [("c10",Parameter {name = "position", ty = V3F}),("d10",Parameter {name = "normal", ty = V3F}),("e10",Parameter {name = "diffuseUV", ty = V2F}),("f10",Parameter {name = "lightmapUV", ty = V2F}),("g10",Parameter {name = "color", ty = V4F})], programInTextures = fromList [("LightMap",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float identityLight ;\nuniform mat4 viewProj ;\nuniform mat4 worldMat ;\nin vec3 c10 ;\nin vec3 d10 ;\nin vec2 e10 ;\nin vec2 f10 ;\nin vec4 g10 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = f10;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( c10 ).x,( c10 ).y,( c10 ).z,1.0 ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D LightMap ;\nsmooth in vec2 v0 ;\nsmooth in vec4 v1 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v1 ) * ( texture2D ( LightMap,v0 ) );\n}\n"},Program {programUniforms = fromList [("Tex_961527291",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], programStreams = fromList [("k14",Parameter {name = "position", ty = V3F}),("l14",Parameter {name = "normal", ty = V3F}),("m14",Parameter {name = "diffuseUV", ty = V2F}),("n14",Parameter {name = "lightmapUV", ty = V2F}),("o14",Parameter {name = "color", ty = V4F})], programInTextures = fromList [("Tex_961527291",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float identityLight ;\nuniform mat4 viewProj ;\nuniform mat4 worldMat ;\nin vec3 k14 ;\nin vec3 l14 ;\nin vec2 m14 ;\nin vec2 n14 ;\nin vec4 o14 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = m14;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( k14 ).x,( k14 ).y,( k14 ).z,1.0 ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D Tex_961527291 ;\nsmooth in vec2 v0 ;\nsmooth in vec4 v1 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v1 ) * ( texture2D ( Tex_961527291,v0 ) );\n}\n"},Program {programUniforms = fromList [("LightMap",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], programStreams = fromList [("a19",Parameter {name = "position", ty = V3F}),("b19",Parameter {name = "normal", ty = V3F}),("c19",Parameter {name = "diffuseUV", ty = V2F}),("d19",Parameter {name = "lightmapUV", ty = V2F}),("e19",Parameter {name = "color", ty = V4F})], programInTextures = fromList [("LightMap",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float identityLight ;\nuniform mat4 viewProj ;\nuniform mat4 worldMat ;\nin vec3 a19 ;\nin vec3 b19 ;\nin vec2 c19 ;\nin vec2 d19 ;\nin vec4 e19 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = d19;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( a19 ).x,( a19 ).y,( a19 ).z,1.0 ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D LightMap ;\nsmooth in vec2 v0 ;\nsmooth in vec4 v1 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v1 ) * ( texture2D ( LightMap,v0 ) );\n}\n"},Program {programUniforms = fromList [("Tex_1201212243",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], programStreams = fromList [("i23",Parameter {name = "position", ty = V3F}),("j23",Parameter {name = "normal", ty = V3F}),("k23",Parameter {name = "diffuseUV", ty = V2F}),("l23",Parameter {name = "lightmapUV", ty = V2F}),("m23",Parameter {name = "color", ty = V4F})], programInTextures = fromList [("Tex_1201212243",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float identityLight ;\nuniform mat4 viewProj ;\nuniform mat4 worldMat ;\nin vec3 i23 ;\nin vec3 j23 ;\nin vec2 k23 ;\nin vec2 l23 ;\nin vec4 m23 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = k23;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( i23 ).x,( i23 ).y,( i23 ).z,1.0 ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D Tex_1201212243 ;\nsmooth in vec2 v0 ;\nsmooth in vec4 v1 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v1 ) * ( texture2D ( Tex_1201212243,v0 ) );\n}\n"},Program {programUniforms = fromList [("LightMap",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], programStreams = fromList [("a28",Parameter {name = "diffuseUV", ty = V2F}),("b28",Parameter {name = "lightmapUV", ty = V2F}),("c28",Parameter {name = "color", ty = V4F}),("y27",Parameter {name = "position", ty = V3F}),("z27",Parameter {name = "normal", ty = V3F})], programInTextures = fromList [("LightMap",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float identityLight ;\nuniform mat4 viewProj ;\nuniform mat4 worldMat ;\nin vec3 y27 ;\nin vec3 z27 ;\nin vec2 a28 ;\nin vec2 b28 ;\nin vec4 c28 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = b28;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( y27 ).x,( y27 ).y,( y27 ).z,1.0 ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D LightMap ;\nsmooth in vec2 v0 ;\nsmooth in vec4 v1 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v1 ) * ( texture2D ( LightMap,v0 ) );\n}\n"},Program {programUniforms = fromList [("Tex_2073154888",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], programStreams = fromList [("g32",Parameter {name = "position", ty = V3F}),("h32",Parameter {name = "normal", ty = V3F}),("i32",Parameter {name = "diffuseUV", ty = V2F}),("j32",Parameter {name = "lightmapUV", ty = V2F}),("k32",Parameter {name = "color", ty = V4F})], programInTextures = fromList [("Tex_2073154888",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float identityLight ;\nuniform mat4 viewProj ;\nuniform mat4 worldMat ;\nin vec3 g32 ;\nin vec3 h32 ;\nin vec2 i32 ;\nin vec2 j32 ;\nin vec4 k32 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = i32;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( g32 ).x,( g32 ).y,( g32 ).z,1.0 ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D Tex_2073154888 ;\nsmooth in vec2 v0 ;\nsmooth in vec4 v1 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v1 ) * ( texture2D ( Tex_2073154888,v0 ) );\n}\n"},Program {programUniforms = fromList [("LightMap",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], programStreams = fromList [("a37",Parameter {name = "color", ty = V4F}),("w36",Parameter {name = "position", ty = V3F}),("x36",Parameter {name = "normal", ty = V3F}),("y36",Parameter {name = "diffuseUV", ty = V2F}),("z36",Parameter {name = "lightmapUV", ty = V2F})], programInTextures = fromList [("LightMap",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float identityLight ;\nuniform mat4 viewProj ;\nuniform mat4 worldMat ;\nin vec3 w36 ;\nin vec3 x36 ;\nin vec2 y36 ;\nin vec2 z36 ;\nin vec4 a37 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = z36;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( w36 ).x,( w36 ).y,( w36 ).z,1.0 ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D LightMap ;\nsmooth in vec2 v0 ;\nsmooth in vec4 v1 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v1 ) * ( texture2D ( LightMap,v0 ) );\n}\n"},Program {programUniforms = fromList [("Tex_3700433555",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], programStreams = fromList [("e41",Parameter {name = "position", ty = V3F}),("f41",Parameter {name = "normal", ty = V3F}),("g41",Parameter {name = "diffuseUV", ty = V2F}),("h41",Parameter {name = "lightmapUV", ty = V2F}),("i41",Parameter {name = "color", ty = V4F})], programInTextures = fromList [("Tex_3700433555",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float identityLight ;\nuniform mat4 viewProj ;\nuniform mat4 worldMat ;\nin vec3 e41 ;\nin vec3 f41 ;\nin vec2 g41 ;\nin vec2 h41 ;\nin vec4 i41 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = g41;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( e41 ).x,( e41 ).y,( e41 ).z,1.0 ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D Tex_3700433555 ;\nsmooth in vec2 v0 ;\nsmooth in vec4 v1 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v1 ) * ( texture2D ( Tex_3700433555,v0 ) );\n}\n"},Program {programUniforms = fromList [("LightMap",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], programStreams = fromList [("u45",Parameter {name = "position", ty = V3F}),("v45",Parameter {name = "normal", ty = V3F}),("w45",Parameter {name = "diffuseUV", ty = V2F}),("x45",Parameter {name = "lightmapUV", ty = V2F}),("y45",Parameter {name = "color", ty = V4F})], programInTextures = fromList [("LightMap",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float identityLight ;\nuniform mat4 viewProj ;\nuniform mat4 worldMat ;\nin vec3 u45 ;\nin vec3 v45 ;\nin vec2 w45 ;\nin vec2 x45 ;\nin vec4 y45 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = x45;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( u45 ).x,( u45 ).y,( u45 ).z,1.0 ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D LightMap ;\nsmooth in vec2 v0 ;\nsmooth in vec4 v1 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v1 ) * ( texture2D ( LightMap,v0 ) );\n}\n"},Program {programUniforms = fromList [("Tex_3768122504",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], programStreams = fromList [("c50",Parameter {name = "position", ty = V3F}),("d50",Parameter {name = "normal", ty = V3F}),("e50",Parameter {name = "diffuseUV", ty = V2F}),("f50",Parameter {name = "lightmapUV", ty = V2F}),("g50",Parameter {name = "color", ty = V4F})], programInTextures = fromList [("Tex_3768122504",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float identityLight ;\nuniform mat4 viewProj ;\nuniform mat4 worldMat ;\nin vec3 c50 ;\nin vec3 d50 ;\nin vec2 e50 ;\nin vec2 f50 ;\nin vec4 g50 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = e50;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( c50 ).x,( c50 ).y,( c50 ).z,1.0 ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D Tex_3768122504 ;\nsmooth in vec2 v0 ;\nsmooth in vec4 v1 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v1 ) * ( texture2D ( Tex_3768122504,v0 ) );\n}\n"},Program {programUniforms = fromList [("LightMap",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], programStreams = fromList [("s54",Parameter {name = "position", ty = V3F}),("t54",Parameter {name = "normal", ty = V3F}),("u54",Parameter {name = "diffuseUV", ty = V2F}),("v54",Parameter {name = "lightmapUV", ty = V2F}),("w54",Parameter {name = "color", ty = V4F})], programInTextures = fromList [("LightMap",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float identityLight ;\nuniform mat4 viewProj ;\nuniform mat4 worldMat ;\nin vec3 s54 ;\nin vec3 t54 ;\nin vec2 u54 ;\nin vec2 v54 ;\nin vec4 w54 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = v54;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( s54 ).x,( s54 ).y,( s54 ).z,1.0 ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D LightMap ;\nsmooth in vec2 v0 ;\nsmooth in vec4 v1 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v1 ) * ( texture2D ( LightMap,v0 ) );\n}\n"},Program {programUniforms = fromList [("Tex_3071107621",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], programStreams = fromList [("a59",Parameter {name = "position", ty = V3F}),("b59",Parameter {name = "normal", ty = V3F}),("c59",Parameter {name = "diffuseUV", ty = V2F}),("d59",Parameter {name = "lightmapUV", ty = V2F}),("e59",Parameter {name = "color", ty = V4F})], programInTextures = fromList [("Tex_3071107621",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float identityLight ;\nuniform mat4 viewProj ;\nuniform mat4 worldMat ;\nin vec3 a59 ;\nin vec3 b59 ;\nin vec2 c59 ;\nin vec2 d59 ;\nin vec4 e59 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = c59;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( a59 ).x,( a59 ).y,( a59 ).z,1.0 ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D Tex_3071107621 ;\nsmooth in vec2 v0 ;\nsmooth in vec4 v1 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v1 ) * ( texture2D ( Tex_3071107621,v0 ) );\n}\n"}], slots = [Slot {slotName = "missing shader", slotStreams = fromList [("color",V4F),("position",V3F)], slotUniforms = fromList [("viewProj",M44F),("worldMat",M44F)], slotPrimitive = Triangles, slotPrograms = [0,1]},Slot {slotName = "textures/gothic_door/km_arena1archfinalc", slotStreams = fromList [("color",V4F),("diffuseUV",V2F),("lightmapUV",V2F),("normal",V3F),("position",V3F)], slotUniforms = fromList [("LightMap",FTexture2D),("Tex_961527291",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], slotPrimitive = Triangles, slotPrograms = [2,3]},Slot {slotName = "textures/gothic_door/km_arena1archfinald_bot", slotStreams = fromList [("color",V4F),("diffuseUV",V2F),("lightmapUV",V2F),("normal",V3F),("position",V3F)], slotUniforms = fromList [("LightMap",FTexture2D),("Tex_1201212243",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], slotPrimitive = Triangles, slotPrograms = [4,5]},Slot {slotName = "textures/gothic_door/km_arena1archfinalc_mid", slotStreams = fromList [("color",V4F),("diffuseUV",V2F),("lightmapUV",V2F),("normal",V3F),("position",V3F)], slotUniforms = fromList [("LightMap",FTexture2D),("Tex_2073154888",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], slotPrimitive = Triangles, slotPrograms = [6,7]},Slot {slotName = "textures/gothic_door/km_arena1archfinalc_bot", slotStreams = fromList [("color",V4F),("diffuseUV",V2F),("lightmapUV",V2F),("normal",V3F),("position",V3F)], slotUniforms = fromList [("LightMap",FTexture2D),("Tex_3700433555",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], slotPrimitive = Triangles, slotPrograms = [8,9]},Slot {slotName = "textures/gothic_door/km_arena1archfinald_mid", slotStreams = fromList [("color",V4F),("diffuseUV",V2F),("lightmapUV",V2F),("normal",V3F),("position",V3F)], slotUniforms = fromList [("LightMap",FTexture2D),("Tex_3768122504",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], slotPrimitive = Triangles, slotPrograms = [10,11]},Slot {slotName = "textures/gothic_door/km_arena1archfinalc_top", slotStreams = fromList [("color",V4F),("diffuseUV",V2F),("lightmapUV",V2F),("normal",V3F),("position",V3F)], slotUniforms = fromList [("LightMap",FTexture2D),("Tex_3071107621",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], slotPrimitive = Triangles, slotPrograms = [12,13]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.0 0.0)}],SetProgram 13,SetSamplerUniform "Tex_3071107621" 0,SetRasterContext (TriangleCtx (CullFront CCW) PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Lequal True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 6,SetProgram 12,SetSamplerUniform "LightMap" 0,SetRasterContext (TriangleCtx (CullFront CCW) PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Lequal True,ColorOp (Blend {colorEqSrc = FuncAdd, alphaEqSrc = FuncAdd, colorFSrc = DstColor, colorFDst = Zero, alphaFSrc = DstColor, alphaFDst = Zero, color = V4 1.0 1.0 1.0 1.0}) (VV4B (V4 True True True True))]}),RenderSlot 6,SetProgram 11,SetSamplerUniform "Tex_3768122504" 0,SetRasterContext (TriangleCtx (CullFront CCW) PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Lequal True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 5,SetProgram 10,SetSamplerUniform "LightMap" 0,SetRasterContext (TriangleCtx (CullFront CCW) PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Lequal True,ColorOp (Blend {colorEqSrc = FuncAdd, alphaEqSrc = FuncAdd, colorFSrc = DstColor, colorFDst = Zero, alphaFSrc = DstColor, alphaFDst = Zero, color = V4 1.0 1.0 1.0 1.0}) (VV4B (V4 True True True True))]}),RenderSlot 5,SetProgram 9,SetSamplerUniform "Tex_3700433555" 0,SetRasterContext (TriangleCtx (CullFront CCW) PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Lequal True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 4,SetProgram 8,SetSamplerUniform "LightMap" 0,SetRasterContext (TriangleCtx (CullFront CCW) PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Lequal True,ColorOp (Blend {colorEqSrc = FuncAdd, alphaEqSrc = FuncAdd, colorFSrc = DstColor, colorFDst = Zero, alphaFSrc = DstColor, alphaFDst = Zero, color = V4 1.0 1.0 1.0 1.0}) (VV4B (V4 True True True True))]}),RenderSlot 4,SetProgram 7,SetSamplerUniform "Tex_2073154888" 0,SetRasterContext (TriangleCtx (CullFront CCW) PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Lequal True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 3,SetProgram 6,SetSamplerUniform "LightMap" 0,SetRasterContext (TriangleCtx (CullFront CCW) PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Lequal True,ColorOp (Blend {colorEqSrc = FuncAdd, alphaEqSrc = FuncAdd, colorFSrc = DstColor, colorFDst = Zero, alphaFSrc = DstColor, alphaFDst = Zero, color = V4 1.0 1.0 1.0 1.0}) (VV4B (V4 True True True True))]}),RenderSlot 3,SetProgram 5,SetSamplerUniform "Tex_1201212243" 0,SetRasterContext (TriangleCtx (CullFront CCW) PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Lequal True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 2,SetProgram 4,SetSamplerUniform "LightMap" 0,SetRasterContext (TriangleCtx (CullFront CCW) PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Lequal True,ColorOp (Blend {colorEqSrc = FuncAdd, alphaEqSrc = FuncAdd, colorFSrc = DstColor, colorFDst = Zero, alphaFSrc = DstColor, alphaFDst = Zero, color = V4 1.0 1.0 1.0 1.0}) (VV4B (V4 True True True True))]}),RenderSlot 2,SetProgram 3,SetSamplerUniform "Tex_961527291" 0,SetRasterContext (TriangleCtx (CullFront CCW) PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Lequal True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 1,SetProgram 2,SetSamplerUniform "LightMap" 0,SetRasterContext (TriangleCtx (CullFront CCW) PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Lequal True,ColorOp (Blend {colorEqSrc = FuncAdd, alphaEqSrc = FuncAdd, colorFSrc = DstColor, colorFDst = Zero, alphaFSrc = DstColor, alphaFDst = Zero, color = V4 1.0 1.0 1.0 1.0}) (VV4B (V4 True True True True))]}),RenderSlot 1,SetProgram 1,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less False,ColorOp (Blend {colorEqSrc = FuncAdd, alphaEqSrc = Min, colorFSrc = One, colorFDst = One, alphaFSrc = One, alphaFDst = One, color = V4 1.0 1.0 1.0 1.0}) (VV4B (V4 True True True True))]}),RenderSlot 0,SetProgram 0,SetRasterContext (TriangleCtx CullNone (PolygonLine 1.0) NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Lequal True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("viewProj",M44F),("worldMat",M44F)], programStreams = fromList [("o2",Parameter {name = "position", ty = V3F}),("p2",Parameter {name = "color", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 viewProj ;\nuniform mat4 worldMat ;\nin vec3 o2 ;\nin vec4 p2 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = p2;\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( o2 ).x,( o2 ).y,( o2 ).z,1.0 ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = vec4 ( ( 1.0 ) - ( ( v0 ).x ),( 1.0 ) - ( ( v0 ).y ),( 1.0 ) - ( ( v0 ).z ),1.0 );\n}\n"},Program {programUniforms = fromList [("viewProj",M44F),("worldMat",M44F)], programStreams = fromList [("p5",Parameter {name = "position", ty = V3F}),("q5",Parameter {name = "color", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 viewProj ;\nuniform mat4 worldMat ;\nin vec3 p5 ;\nin vec4 q5 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( ( q5 ).x,( q5 ).y,( q5 ).z,0.5 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( p5 ).x,( p5 ).y,( p5 ).z,1.0 ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"},Program {programUniforms = fromList [("LightMap",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], programStreams = fromList [("a10",Parameter {name = "color", ty = V4F}),("w9",Parameter {name = "position", ty = V3F}),("x9",Parameter {name = "normal", ty = V3F}),("y9",Parameter {name = "diffuseUV", ty = V2F}),("z9",Parameter {name = "lightmapUV", ty = V2F})], programInTextures = fromList [("LightMap",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float identityLight ;\nuniform mat4 viewProj ;\nuniform mat4 worldMat ;\nin vec3 w9 ;\nin vec3 x9 ;\nin vec2 y9 ;\nin vec2 z9 ;\nin vec4 a10 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = z9;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( w9 ).x,( w9 ).y,( w9 ).z,1.0 ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D LightMap ;\nsmooth in vec2 v0 ;\nsmooth in vec4 v1 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v1 ) * ( texture2D ( LightMap,v0 ) );\n}\n"},Program {programUniforms = fromList [("Tex_961527291",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], programStreams = fromList [("c14",Parameter {name = "position", ty = V3F}),("d14",Parameter {name = "normal", ty = V3F}),("e14",Parameter {name = "diffuseUV", ty = V2F}),("f14",Parameter {name = "lightmapUV", ty = V2F}),("g14",Parameter {name = "color", ty = V4F})], programInTextures = fromList [("Tex_961527291",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float identityLight ;\nuniform mat4 viewProj ;\nuniform mat4 worldMat ;\nin vec3 c14 ;\nin vec3 d14 ;\nin vec2 e14 ;\nin vec2 f14 ;\nin vec4 g14 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = e14;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( c14 ).x,( c14 ).y,( c14 ).z,1.0 ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D Tex_961527291 ;\nsmooth in vec2 v0 ;\nsmooth in vec4 v1 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v1 ) * ( texture2D ( Tex_961527291,v0 ) );\n}\n"},Program {programUniforms = fromList [("LightMap",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], programStreams = fromList [("q18",Parameter {name = "position", ty = V3F}),("r18",Parameter {name = "normal", ty = V3F}),("s18",Parameter {name = "diffuseUV", ty = V2F}),("t18",Parameter {name = "lightmapUV", ty = V2F}),("u18",Parameter {name = "color", ty = V4F})], programInTextures = fromList [("LightMap",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float identityLight ;\nuniform mat4 viewProj ;\nuniform mat4 worldMat ;\nin vec3 q18 ;\nin vec3 r18 ;\nin vec2 s18 ;\nin vec2 t18 ;\nin vec4 u18 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = t18;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( q18 ).x,( q18 ).y,( q18 ).z,1.0 ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D LightMap ;\nsmooth in vec2 v0 ;\nsmooth in vec4 v1 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v1 ) * ( texture2D ( LightMap,v0 ) );\n}\n"},Program {programUniforms = fromList [("Tex_1201212243",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], programStreams = fromList [("a23",Parameter {name = "color", ty = V4F}),("w22",Parameter {name = "position", ty = V3F}),("x22",Parameter {name = "normal", ty = V3F}),("y22",Parameter {name = "diffuseUV", ty = V2F}),("z22",Parameter {name = "lightmapUV", ty = V2F})], programInTextures = fromList [("Tex_1201212243",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float identityLight ;\nuniform mat4 viewProj ;\nuniform mat4 worldMat ;\nin vec3 w22 ;\nin vec3 x22 ;\nin vec2 y22 ;\nin vec2 z22 ;\nin vec4 a23 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = y22;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( w22 ).x,( w22 ).y,( w22 ).z,1.0 ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D Tex_1201212243 ;\nsmooth in vec2 v0 ;\nsmooth in vec4 v1 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v1 ) * ( texture2D ( Tex_1201212243,v0 ) );\n}\n"},Program {programUniforms = fromList [("LightMap",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], programStreams = fromList [("k27",Parameter {name = "position", ty = V3F}),("l27",Parameter {name = "normal", ty = V3F}),("m27",Parameter {name = "diffuseUV", ty = V2F}),("n27",Parameter {name = "lightmapUV", ty = V2F}),("o27",Parameter {name = "color", ty = V4F})], programInTextures = fromList [("LightMap",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float identityLight ;\nuniform mat4 viewProj ;\nuniform mat4 worldMat ;\nin vec3 k27 ;\nin vec3 l27 ;\nin vec2 m27 ;\nin vec2 n27 ;\nin vec4 o27 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = n27;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( k27 ).x,( k27 ).y,( k27 ).z,1.0 ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D LightMap ;\nsmooth in vec2 v0 ;\nsmooth in vec4 v1 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v1 ) * ( texture2D ( LightMap,v0 ) );\n}\n"},Program {programUniforms = fromList [("Tex_2073154888",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], programStreams = fromList [("q31",Parameter {name = "position", ty = V3F}),("r31",Parameter {name = "normal", ty = V3F}),("s31",Parameter {name = "diffuseUV", ty = V2F}),("t31",Parameter {name = "lightmapUV", ty = V2F}),("u31",Parameter {name = "color", ty = V4F})], programInTextures = fromList [("Tex_2073154888",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float identityLight ;\nuniform mat4 viewProj ;\nuniform mat4 worldMat ;\nin vec3 q31 ;\nin vec3 r31 ;\nin vec2 s31 ;\nin vec2 t31 ;\nin vec4 u31 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = s31;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( q31 ).x,( q31 ).y,( q31 ).z,1.0 ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D Tex_2073154888 ;\nsmooth in vec2 v0 ;\nsmooth in vec4 v1 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v1 ) * ( texture2D ( Tex_2073154888,v0 ) );\n}\n"},Program {programUniforms = fromList [("LightMap",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], programStreams = fromList [("e36",Parameter {name = "position", ty = V3F}),("f36",Parameter {name = "normal", ty = V3F}),("g36",Parameter {name = "diffuseUV", ty = V2F}),("h36",Parameter {name = "lightmapUV", ty = V2F}),("i36",Parameter {name = "color", ty = V4F})], programInTextures = fromList [("LightMap",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float identityLight ;\nuniform mat4 viewProj ;\nuniform mat4 worldMat ;\nin vec3 e36 ;\nin vec3 f36 ;\nin vec2 g36 ;\nin vec2 h36 ;\nin vec4 i36 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = h36;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( e36 ).x,( e36 ).y,( e36 ).z,1.0 ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D LightMap ;\nsmooth in vec2 v0 ;\nsmooth in vec4 v1 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v1 ) * ( texture2D ( LightMap,v0 ) );\n}\n"},Program {programUniforms = fromList [("Tex_3700433555",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], programStreams = fromList [("k40",Parameter {name = "position", ty = V3F}),("l40",Parameter {name = "normal", ty = V3F}),("m40",Parameter {name = "diffuseUV", ty = V2F}),("n40",Parameter {name = "lightmapUV", ty = V2F}),("o40",Parameter {name = "color", ty = V4F})], programInTextures = fromList [("Tex_3700433555",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float identityLight ;\nuniform mat4 viewProj ;\nuniform mat4 worldMat ;\nin vec3 k40 ;\nin vec3 l40 ;\nin vec2 m40 ;\nin vec2 n40 ;\nin vec4 o40 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = m40;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( k40 ).x,( k40 ).y,( k40 ).z,1.0 ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D Tex_3700433555 ;\nsmooth in vec2 v0 ;\nsmooth in vec4 v1 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v1 ) * ( texture2D ( Tex_3700433555,v0 ) );\n}\n"},Program {programUniforms = fromList [("LightMap",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], programStreams = fromList [("a45",Parameter {name = "diffuseUV", ty = V2F}),("b45",Parameter {name = "lightmapUV", ty = V2F}),("c45",Parameter {name = "color", ty = V4F}),("y44",Parameter {name = "position", ty = V3F}),("z44",Parameter {name = "normal", ty = V3F})], programInTextures = fromList [("LightMap",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float identityLight ;\nuniform mat4 viewProj ;\nuniform mat4 worldMat ;\nin vec3 y44 ;\nin vec3 z44 ;\nin vec2 a45 ;\nin vec2 b45 ;\nin vec4 c45 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = b45;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( y44 ).x,( y44 ).y,( y44 ).z,1.0 ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D LightMap ;\nsmooth in vec2 v0 ;\nsmooth in vec4 v1 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v1 ) * ( texture2D ( LightMap,v0 ) );\n}\n"},Program {programUniforms = fromList [("Tex_3768122504",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], programStreams = fromList [("e49",Parameter {name = "position", ty = V3F}),("f49",Parameter {name = "normal", ty = V3F}),("g49",Parameter {name = "diffuseUV", ty = V2F}),("h49",Parameter {name = "lightmapUV", ty = V2F}),("i49",Parameter {name = "color", ty = V4F})], programInTextures = fromList [("Tex_3768122504",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float identityLight ;\nuniform mat4 viewProj ;\nuniform mat4 worldMat ;\nin vec3 e49 ;\nin vec3 f49 ;\nin vec2 g49 ;\nin vec2 h49 ;\nin vec4 i49 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = g49;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( e49 ).x,( e49 ).y,( e49 ).z,1.0 ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D Tex_3768122504 ;\nsmooth in vec2 v0 ;\nsmooth in vec4 v1 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v1 ) * ( texture2D ( Tex_3768122504,v0 ) );\n}\n"},Program {programUniforms = fromList [("LightMap",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], programStreams = fromList [("s53",Parameter {name = "position", ty = V3F}),("t53",Parameter {name = "normal", ty = V3F}),("u53",Parameter {name = "diffuseUV", ty = V2F}),("v53",Parameter {name = "lightmapUV", ty = V2F}),("w53",Parameter {name = "color", ty = V4F})], programInTextures = fromList [("LightMap",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float identityLight ;\nuniform mat4 viewProj ;\nuniform mat4 worldMat ;\nin vec3 s53 ;\nin vec3 t53 ;\nin vec2 u53 ;\nin vec2 v53 ;\nin vec4 w53 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = v53;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( s53 ).x,( s53 ).y,( s53 ).z,1.0 ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D LightMap ;\nsmooth in vec2 v0 ;\nsmooth in vec4 v1 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v1 ) * ( texture2D ( LightMap,v0 ) );\n}\n"},Program {programUniforms = fromList [("Tex_3071107621",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], programStreams = fromList [("a58",Parameter {name = "diffuseUV", ty = V2F}),("b58",Parameter {name = "lightmapUV", ty = V2F}),("c58",Parameter {name = "color", ty = V4F}),("y57",Parameter {name = "position", ty = V3F}),("z57",Parameter {name = "normal", ty = V3F})], programInTextures = fromList [("Tex_3071107621",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float identityLight ;\nuniform mat4 viewProj ;\nuniform mat4 worldMat ;\nin vec3 y57 ;\nin vec3 z57 ;\nin vec2 a58 ;\nin vec2 b58 ;\nin vec4 c58 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = a58;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( y57 ).x,( y57 ).y,( y57 ).z,1.0 ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D Tex_3071107621 ;\nsmooth in vec2 v0 ;\nsmooth in vec4 v1 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v1 ) * ( texture2D ( Tex_3071107621,v0 ) );\n}\n"}], slots = [Slot {slotName = "missing shader", slotStreams = fromList [("color",V4F),("position",V3F)], slotUniforms = fromList [("viewProj",M44F),("worldMat",M44F)], slotPrimitive = Triangles, slotPrograms = [0,1]},Slot {slotName = "textures/gothic_door/km_arena1archfinalc", slotStreams = fromList [("color",V4F),("diffuseUV",V2F),("lightmapUV",V2F),("normal",V3F),("position",V3F)], slotUniforms = fromList [("LightMap",FTexture2D),("Tex_961527291",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], slotPrimitive = Triangles, slotPrograms = [2,3]},Slot {slotName = "textures/gothic_door/km_arena1archfinald_bot", slotStreams = fromList [("color",V4F),("diffuseUV",V2F),("lightmapUV",V2F),("normal",V3F),("position",V3F)], slotUniforms = fromList [("LightMap",FTexture2D),("Tex_1201212243",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], slotPrimitive = Triangles, slotPrograms = [4,5]},Slot {slotName = "textures/gothic_door/km_arena1archfinalc_mid", slotStreams = fromList [("color",V4F),("diffuseUV",V2F),("lightmapUV",V2F),("normal",V3F),("position",V3F)], slotUniforms = fromList [("LightMap",FTexture2D),("Tex_2073154888",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], slotPrimitive = Triangles, slotPrograms = [6,7]},Slot {slotName = "textures/gothic_door/km_arena1archfinalc_bot", slotStreams = fromList [("color",V4F),("diffuseUV",V2F),("lightmapUV",V2F),("normal",V3F),("position",V3F)], slotUniforms = fromList [("LightMap",FTexture2D),("Tex_3700433555",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], slotPrimitive = Triangles, slotPrograms = [8,9]},Slot {slotName = "textures/gothic_door/km_arena1archfinald_mid", slotStreams = fromList [("color",V4F),("diffuseUV",V2F),("lightmapUV",V2F),("normal",V3F),("position",V3F)], slotUniforms = fromList [("LightMap",FTexture2D),("Tex_3768122504",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], slotPrimitive = Triangles, slotPrograms = [10,11]},Slot {slotName = "textures/gothic_door/km_arena1archfinalc_top", slotStreams = fromList [("color",V4F),("diffuseUV",V2F),("lightmapUV",V2F),("normal",V3F),("position",V3F)], slotUniforms = fromList [("LightMap",FTexture2D),("Tex_3071107621",FTexture2D),("identityLight",Float),("viewProj",M44F),("worldMat",M44F)], slotPrimitive = Triangles, slotPrograms = [12,13]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.0 0.0)}],SetProgram 13,SetSamplerUniform "Tex_3071107621" 0,SetRasterContext (TriangleCtx (CullFront CCW) PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Lequal True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 6,SetProgram 12,SetSamplerUniform "LightMap" 0,SetRasterContext (TriangleCtx (CullFront CCW) PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Lequal True,ColorOp (Blend {colorEqSrc = FuncAdd, alphaEqSrc = FuncAdd, colorFSrc = DstColor, colorFDst = Zero, alphaFSrc = DstColor, alphaFDst = Zero, color = V4 1.0 1.0 1.0 1.0}) (VV4B (V4 True True True True))]}),RenderSlot 6,SetProgram 11,SetSamplerUniform "Tex_3768122504" 0,SetRasterContext (TriangleCtx (CullFront CCW) PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Lequal True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 5,SetProgram 10,SetSamplerUniform "LightMap" 0,SetRasterContext (TriangleCtx (CullFront CCW) PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Lequal True,ColorOp (Blend {colorEqSrc = FuncAdd, alphaEqSrc = FuncAdd, colorFSrc = DstColor, colorFDst = Zero, alphaFSrc = DstColor, alphaFDst = Zero, color = V4 1.0 1.0 1.0 1.0}) (VV4B (V4 True True True True))]}),RenderSlot 5,SetProgram 9,SetSamplerUniform "Tex_3700433555" 0,SetRasterContext (TriangleCtx (CullFront CCW) PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Lequal True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 4,SetProgram 8,SetSamplerUniform "LightMap" 0,SetRasterContext (TriangleCtx (CullFront CCW) PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Lequal True,ColorOp (Blend {colorEqSrc = FuncAdd, alphaEqSrc = FuncAdd, colorFSrc = DstColor, colorFDst = Zero, alphaFSrc = DstColor, alphaFDst = Zero, color = V4 1.0 1.0 1.0 1.0}) (VV4B (V4 True True True True))]}),RenderSlot 4,SetProgram 7,SetSamplerUniform "Tex_2073154888" 0,SetRasterContext (TriangleCtx (CullFront CCW) PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Lequal True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 3,SetProgram 6,SetSamplerUniform "LightMap" 0,SetRasterContext (TriangleCtx (CullFront CCW) PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Lequal True,ColorOp (Blend {colorEqSrc = FuncAdd, alphaEqSrc = FuncAdd, colorFSrc = DstColor, colorFDst = Zero, alphaFSrc = DstColor, alphaFDst = Zero, color = V4 1.0 1.0 1.0 1.0}) (VV4B (V4 True True True True))]}),RenderSlot 3,SetProgram 5,SetSamplerUniform "Tex_1201212243" 0,SetRasterContext (TriangleCtx (CullFront CCW) PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Lequal True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 2,SetProgram 4,SetSamplerUniform "LightMap" 0,SetRasterContext (TriangleCtx (CullFront CCW) PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Lequal True,ColorOp (Blend {colorEqSrc = FuncAdd, alphaEqSrc = FuncAdd, colorFSrc = DstColor, colorFDst = Zero, alphaFSrc = DstColor, alphaFDst = Zero, color = V4 1.0 1.0 1.0 1.0}) (VV4B (V4 True True True True))]}),RenderSlot 2,SetProgram 3,SetSamplerUniform "Tex_961527291" 0,SetRasterContext (TriangleCtx (CullFront CCW) PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Lequal True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 1,SetProgram 2,SetSamplerUniform "LightMap" 0,SetRasterContext (TriangleCtx (CullFront CCW) PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Lequal True,ColorOp (Blend {colorEqSrc = FuncAdd, alphaEqSrc = FuncAdd, colorFSrc = DstColor, colorFDst = Zero, alphaFSrc = DstColor, alphaFDst = Zero, color = V4 1.0 1.0 1.0 1.0}) (VV4B (V4 True True True True))]}),RenderSlot 1,SetProgram 1,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less False,ColorOp (Blend {colorEqSrc = FuncAdd, alphaEqSrc = Min, colorFSrc = One, colorFDst = One, alphaFSrc = One, alphaFDst = One, color = V4 1.0 1.0 1.0 1.0}) (VV4B (V4 True True True True))]}),RenderSlot 0,SetProgram 0,SetRasterContext (TriangleCtx CullNone (PolygonLine 1.0) NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Lequal True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file
diff --git a/testdata/accept/HyperbolicParaboloic.out b/testdata/accept/HyperbolicParaboloic.out
index 5b296eb3..c37fd574 100644
--- a/testdata/accept/HyperbolicParaboloic.out
+++ b/testdata/accept/HyperbolicParaboloic.out
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F),("Mouse",V2F)], programStreams = fromList [("q1",Parameter {name = "attribute_0", ty = V3F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nuniform vec2 Mouse ;\nin vec3 q1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( 0.0,0.0,0.0,1.0 );\ngl_Position = ( ( MVP ) * ( vec4 ( ( ( Mouse ).y ) * ( 0.0 ),( ( ( 0.5 ) * ( ( Mouse ).x ) ) * ( 0.0 ) ) * ( 0.0 ),( ( Mouse ).y ) * ( 0.0 ),1.0 ) ) ) * ( vec4 ( 0.1,0.1,0.1,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"}], slots = [], streams = [StreamData {streamData = fromList [("attribute_0",VFloatArray [-3.0,-3.0,0.0,-3.0,3.0,0.0,-2.0,-3.0,0.0,-2.0,3.0,0.0,-1.0,-3.0,0.0,-1.0,3.0,0.0,0.0,-3.0,0.0,0.0,3.0,0.0,1.0,-3.0,0.0,1.0,3.0,0.0,2.0,-3.0,0.0,2.0,3.0,0.0,3.0,-3.0,0.0,3.0,3.0,0.0,-3.0,-3.0,0.0,3.0,-3.0,0.0,-3.0,-2.0,0.0,3.0,-2.0,0.0,-3.0,-1.0,0.0,3.0,-1.0,0.0,-3.0,0.0,0.0,3.0,0.0,0.0,-3.0,1.0,0.0,3.0,1.0,0.0,-3.0,2.0,0.0,3.0,2.0,0.0,-3.0,3.0,0.0,3.0,3.0,0.0])], streamType = fromList [("attribute_0",V3F)], streamPrimitive = Lines, streamPrograms = [0]}], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 1.0 1.0 1.0 1.0)}],SetProgram 0,SetRasterContext (LineCtx 1.0 LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderStream 0]} \ No newline at end of file Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F),("Mouse",V2F)], programStreams = fromList [("o1",Parameter {name = "attribute_0", ty = V3F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nuniform vec2 Mouse ;\nin vec3 o1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( 0.0,0.0,0.0,1.0 );\ngl_Position = ( ( MVP ) * ( vec4 ( ( ( Mouse ).y ) * ( 0.0 ),( ( ( 0.5 ) * ( ( Mouse ).x ) ) * ( 0.0 ) ) * ( 0.0 ),( ( Mouse ).y ) * ( 0.0 ),1.0 ) ) ) * ( vec4 ( 0.1,0.1,0.1,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"}], slots = [], streams = [StreamData {streamData = fromList [("attribute_0",VFloatArray [-3.0,-3.0,0.0,-3.0,3.0,0.0,-2.0,-3.0,0.0,-2.0,3.0,0.0,-1.0,-3.0,0.0,-1.0,3.0,0.0,0.0,-3.0,0.0,0.0,3.0,0.0,1.0,-3.0,0.0,1.0,3.0,0.0,2.0,-3.0,0.0,2.0,3.0,0.0,3.0,-3.0,0.0,3.0,3.0,0.0,-3.0,-3.0,0.0,3.0,-3.0,0.0,-3.0,-2.0,0.0,3.0,-2.0,0.0,-3.0,-1.0,0.0,3.0,-1.0,0.0,-3.0,0.0,0.0,3.0,0.0,0.0,-3.0,1.0,0.0,3.0,1.0,0.0,-3.0,2.0,0.0,3.0,2.0,0.0,-3.0,3.0,0.0,3.0,3.0,0.0])], streamType = fromList [("attribute_0",V3F)], streamPrimitive = Lines, streamPrograms = [0]}], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 1.0 1.0 1.0 1.0)}],SetProgram 0,SetRasterContext (LineCtx 1.0 LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderStream 0]} \ No newline at end of file
diff --git a/testdata/accept/Hyperboloid.out b/testdata/accept/Hyperboloid.out
index 9a748a1c..f7774d7b 100644
--- a/testdata/accept/Hyperboloid.out
+++ b/testdata/accept/Hyperboloid.out
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F),("Mouse",V2F)], programStreams = fromList [("q1",Parameter {name = "attribute_0", ty = V3F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nuniform vec2 Mouse ;\nin vec3 q1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( 0.0,0.0,0.0,1.0 );\ngl_Position = ( ( MVP ) * ( vec4 ( ( ( 2.0 ) * ( ( Mouse ).y ) ) * ( sin ( ( 0.0 ) + ( ( ( Mouse ).x ) * ( 0.0 ) ) ) ),0.0,( ( 2.0 ) * ( ( Mouse ).y ) ) * ( cos ( ( 0.0 ) + ( ( ( Mouse ).x ) * ( 0.0 ) ) ) ),1.0 ) ) ) * ( vec4 ( 0.1,0.1,0.1,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"}], slots = [], streams = [StreamData {streamData = fromList [("attribute_0",VFloatArray [-5.0,-3.0,0.0,-5.0,3.0,0.0,-4.0,-3.0,0.0,-4.0,3.0,0.0,-3.0,-3.0,0.0,-3.0,3.0,0.0,-2.0,-3.0,0.0,-2.0,3.0,0.0,-1.0,-3.0,0.0,-1.0,3.0,0.0,0.0,-3.0,0.0,0.0,3.0,0.0,1.0,-3.0,0.0,1.0,3.0,0.0,2.0,-3.0,0.0,2.0,3.0,0.0,3.0,-3.0,0.0,3.0,3.0,0.0,4.0,-3.0,0.0,4.0,3.0,0.0,5.0,-3.0,0.0,5.0,3.0,0.0])], streamType = fromList [("attribute_0",V3F)], streamPrimitive = Lines, streamPrograms = [0]}], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 1.0 1.0 1.0 1.0)}],SetProgram 0,SetRasterContext (LineCtx 1.0 LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderStream 0]} \ No newline at end of file Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F),("Mouse",V2F)], programStreams = fromList [("o1",Parameter {name = "attribute_0", ty = V3F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nuniform vec2 Mouse ;\nin vec3 o1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( 0.0,0.0,0.0,1.0 );\ngl_Position = ( ( MVP ) * ( vec4 ( ( ( 2.0 ) * ( ( Mouse ).y ) ) * ( sin ( ( 0.0 ) + ( ( ( Mouse ).x ) * ( 0.0 ) ) ) ),0.0,( ( 2.0 ) * ( ( Mouse ).y ) ) * ( cos ( ( 0.0 ) + ( ( ( Mouse ).x ) * ( 0.0 ) ) ) ),1.0 ) ) ) * ( vec4 ( 0.1,0.1,0.1,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"}], slots = [], streams = [StreamData {streamData = fromList [("attribute_0",VFloatArray [-5.0,-3.0,0.0,-5.0,3.0,0.0,-4.0,-3.0,0.0,-4.0,3.0,0.0,-3.0,-3.0,0.0,-3.0,3.0,0.0,-2.0,-3.0,0.0,-2.0,3.0,0.0,-1.0,-3.0,0.0,-1.0,3.0,0.0,0.0,-3.0,0.0,0.0,3.0,0.0,1.0,-3.0,0.0,1.0,3.0,0.0,2.0,-3.0,0.0,2.0,3.0,0.0,3.0,-3.0,0.0,3.0,3.0,0.0,4.0,-3.0,0.0,4.0,3.0,0.0,5.0,-3.0,0.0,5.0,3.0,0.0])], streamType = fromList [("attribute_0",V3F)], streamPrimitive = Lines, streamPrograms = [0]}], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 1.0 1.0 1.0 1.0)}],SetProgram 0,SetRasterContext (LineCtx 1.0 LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderStream 0]} \ No newline at end of file
diff --git a/testdata/accept/NewStyle.out b/testdata/accept/NewStyle.out
index 030bcd1c..0d13a413 100644
--- a/testdata/accept/NewStyle.out
+++ b/testdata/accept/NewStyle.out
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("q1",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 q1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = q1;\ngl_Position = ( ( MVP ) * ( q1 ) ) * ( vec4 ( 0.5,0.5,0.5,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F)], slotUniforms = fromList [("MVP",M44F)], slotPrimitive = Triangles, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.1 0.0 0.2 1.0)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("o1",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 o1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = o1;\ngl_Position = ( ( MVP ) * ( o1 ) ) * ( vec4 ( 0.5,0.5,0.5,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F)], slotUniforms = fromList [("MVP",M44F)], slotPrimitive = Triangles, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.1 0.0 0.2 1.0)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file
diff --git a/testdata/accept/Prelude.out b/testdata/accept/Prelude.out
index ad0cd808..5931e398 100644
--- a/testdata/accept/Prelude.out
+++ b/testdata/accept/Prelude.out
@@ -251,7 +251,8 @@ tooltips:
251./testdata/accept/Prelude.lc 114:1-114:5 'Bool 251./testdata/accept/Prelude.lc 114:1-114:5 'Bool
252./testdata/accept/Prelude.lc 114:1-114:5 V2 252./testdata/accept/Prelude.lc 114:1-114:5 V2
253./testdata/accept/Prelude.lc 114:6-114:9 'Bool -> 'Bool->'Bool 253./testdata/accept/Prelude.lc 114:6-114:9 'Bool -> 'Bool->'Bool
254./testdata/accept/Prelude.lc 124:10-124:12 V0 254./testdata/accept/Prelude.lc 124:10-124:19 V0->Type
255./testdata/accept/Prelude.lc 124:10-124:19 Type
255./testdata/accept/Prelude.lc 124:10-124:12 Type 256./testdata/accept/Prelude.lc 124:10-124:12 Type
256./testdata/accept/Prelude.lc 124:13-124:19 Type 257./testdata/accept/Prelude.lc 124:13-124:19 Type
257./testdata/accept/Prelude.lc 124:13-124:19 V1 258./testdata/accept/Prelude.lc 124:13-124:19 V1
diff --git a/testdata/accept/PrimReduce.out b/testdata/accept/PrimReduce.out
index 919fd5e4..bec55c9f 100644
--- a/testdata/accept/PrimReduce.out
+++ b/testdata/accept/PrimReduce.out
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [], programStreams = fromList [("o1",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nin vec4 o1 ;\nvoid main() {\ngl_Position = ( ( mat4 ( vec4 ( cos ( 3.0 ),( 0.0 ) - ( sin ( 3.0 ) ),0.0,0.0 ),vec4 ( sin ( 3.0 ),cos ( 3.0 ),0.0,0.0 ),vec4 ( 0.0,0.0,1.0,0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( o1 ) ) * ( vec4 ( 0.1,0.1,0.1,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nout vec4 f0 ;\nvoid main() {\nf0 = vec4 ( 0.0,0.0,1.0,1.0 );\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F)], slotUniforms = fromList [], slotPrimitive = Triangles, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Color, clearValue = VV4F (V4 1.0 0.0 0.0 1.0)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [], programStreams = fromList [("m1",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nin vec4 m1 ;\nvoid main() {\ngl_Position = ( ( mat4 ( vec4 ( cos ( 3.0 ),( 0.0 ) - ( sin ( 3.0 ) ),0.0,0.0 ),vec4 ( sin ( 3.0 ),cos ( 3.0 ),0.0,0.0 ),vec4 ( 0.0,0.0,1.0,0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( m1 ) ) * ( vec4 ( 0.1,0.1,0.1,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nout vec4 f0 ;\nvoid main() {\nf0 = vec4 ( 0.0,0.0,1.0,1.0 );\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F)], slotUniforms = fromList [], slotPrimitive = Triangles, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Color, clearValue = VV4F (V4 1.0 0.0 0.0 1.0)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file
diff --git a/testdata/accept/Spiral.out b/testdata/accept/Spiral.out
index 13b09c6d..c408c586 100644
--- a/testdata/accept/Spiral.out
+++ b/testdata/accept/Spiral.out
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F),("Mouse",V2F)], programStreams = fromList [("q1",Parameter {name = "attribute_0", ty = V3F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nuniform vec2 Mouse ;\nin vec3 q1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( 0.0,0.0,0.0,1.0 );\ngl_Position = ( ( MVP ) * ( vec4 ( ( exp ( ( ( ( Mouse ).x ) - ( 0.5 ) ) * ( 0.0 ) ) ) * ( sin ( 0.0 ) ),( exp ( ( ( ( Mouse ).x ) - ( 0.5 ) ) * ( 0.0 ) ) ) * ( cos ( 0.0 ) ),( ( Mouse ).y ) * ( 0.0 ),1.0 ) ) ) * ( vec4 ( 0.5,0.5,0.5,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"}], slots = [], streams = [StreamData {streamData = fromList [("attribute_0",VFloatArray [-5.0,0.0,0.0,-4.0,0.0,0.0,-4.0,0.0,0.0,-3.0,0.0,0.0,-3.0,0.0,0.0,-2.0,0.0,0.0,-2.0,0.0,0.0,-1.0,0.0,0.0,-1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,2.0,0.0,0.0,2.0,0.0,0.0,3.0,0.0,0.0,3.0,0.0,0.0,4.0,0.0,0.0,4.0,0.0,0.0,5.0,0.0,0.0])], streamType = fromList [("attribute_0",V3F)], streamPrimitive = Lines, streamPrograms = [0]}], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 1.0 1.0 1.0 1.0)}],SetProgram 0,SetRasterContext (LineCtx 1.0 LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderStream 0]} \ No newline at end of file Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F),("Mouse",V2F)], programStreams = fromList [("o1",Parameter {name = "attribute_0", ty = V3F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nuniform vec2 Mouse ;\nin vec3 o1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( 0.0,0.0,0.0,1.0 );\ngl_Position = ( ( MVP ) * ( vec4 ( ( exp ( ( ( ( Mouse ).x ) - ( 0.5 ) ) * ( 0.0 ) ) ) * ( sin ( 0.0 ) ),( exp ( ( ( ( Mouse ).x ) - ( 0.5 ) ) * ( 0.0 ) ) ) * ( cos ( 0.0 ) ),( ( Mouse ).y ) * ( 0.0 ),1.0 ) ) ) * ( vec4 ( 0.5,0.5,0.5,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"}], slots = [], streams = [StreamData {streamData = fromList [("attribute_0",VFloatArray [-5.0,0.0,0.0,-4.0,0.0,0.0,-4.0,0.0,0.0,-3.0,0.0,0.0,-3.0,0.0,0.0,-2.0,0.0,0.0,-2.0,0.0,0.0,-1.0,0.0,0.0,-1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,2.0,0.0,0.0,2.0,0.0,0.0,3.0,0.0,0.0,3.0,0.0,0.0,4.0,0.0,0.0,4.0,0.0,0.0,5.0,0.0,0.0])], streamType = fromList [("attribute_0",V3F)], streamPrimitive = Lines, streamPrograms = [0]}], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 1.0 1.0 1.0 1.0)}],SetProgram 0,SetRasterContext (LineCtx 1.0 LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderStream 0]} \ No newline at end of file
diff --git a/testdata/accept/example06.out b/testdata/accept/example06.out
index 4e7cd170..fdf667ee 100644
--- a/testdata/accept/example06.out
+++ b/testdata/accept/example06.out
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("q1",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 q1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = q1;\ngl_Position = ( ( MVP ) * ( q1 ) ) * ( vec4 ( 0.5,0.5,0.5,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F)], slotUniforms = fromList [("MVP",M44F)], slotPrimitive = Triangles, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 1.0 0.0 0.0 1.0)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("o1",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 o1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = o1;\ngl_Position = ( ( MVP ) * ( o1 ) ) * ( vec4 ( 0.5,0.5,0.5,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F)], slotUniforms = fromList [("MVP",M44F)], slotPrimitive = Triangles, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 1.0 0.0 0.0 1.0)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file
diff --git a/testdata/accept/example07.out b/testdata/accept/example07.out
index 79966e2c..216ce6ce 100644
--- a/testdata/accept/example07.out
+++ b/testdata/accept/example07.out
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("b2",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 b2 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = b2;\ngl_Position = ( ( MVP ) * ( b2 ) ) * ( vec4 ( 0.5,0.5,0.5,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( v0 ).x ) < ( 0.5 ) ? vec4 ( 0.0,0.0,1.0,1.0 ) : vec4 ( 1.0,0.0,0.0,1.0 );\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F)], slotUniforms = fromList [("MVP",M44F)], slotPrimitive = Triangles, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.1 0.0 0.2 1.0)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("z1",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 z1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = z1;\ngl_Position = ( ( MVP ) * ( z1 ) ) * ( vec4 ( 0.5,0.5,0.5,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( v0 ).x ) < ( 0.5 ) ? vec4 ( 0.0,0.0,1.0,1.0 ) : vec4 ( 1.0,0.0,0.0,1.0 );\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F)], slotUniforms = fromList [("MVP",M44F)], slotPrimitive = Triangles, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.1 0.0 0.2 1.0)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file
diff --git a/testdata/accept/example08.out b/testdata/accept/example08.out
index 64626645..86400ee3 100644
--- a/testdata/accept/example08.out
+++ b/testdata/accept/example08.out
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F),("Time",Float)], programStreams = fromList [("q1",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float Time ;\nuniform mat4 MVP ;\nin vec4 q1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = q1;\ngl_Position = ( mat4 ( vec4 ( cos ( ( Time ) * ( 2.0 ) ),sin ( ( Time ) * ( 2.0 ) ),0.0,0.0 ),vec4 ( ( 0.0 ) - ( sin ( ( Time ) * ( 2.0 ) ) ),cos ( ( Time ) * ( 2.0 ) ),0.0,0.0 ),vec4 ( 0.0,0.0,1.0,0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( ( MVP ) * ( ( vec4 ( ( 1.0 ) + ( ( sin ( Time ) ) * ( 0.1 ) ),0.0,0.0,0.0 ) ) + ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( ( ( Time ) * ( 2.0 ) ) * ( 2.0 ) ),sin ( ( ( Time ) * ( 2.0 ) ) * ( 2.0 ) ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( ( ( Time ) * ( 2.0 ) ) * ( 2.0 ) ) ),cos ( ( ( Time ) * ( 2.0 ) ) * ( 2.0 ) ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( q1 ) ) * ( vec4 ( 4.0e-2,4.0e-2,4.0e-2,1.0 ) ) ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"},Program {programUniforms = fromList [("MVP",M44F),("Time",Float)], programStreams = fromList [("j7",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float Time ;\nuniform mat4 MVP ;\nin vec4 j7 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = j7;\ngl_Position = ( mat4 ( vec4 ( cos ( ( Time ) * ( 1.0 ) ),sin ( ( Time ) * ( 1.0 ) ),0.0,0.0 ),vec4 ( ( 0.0 ) - ( sin ( ( Time ) * ( 1.0 ) ) ),cos ( ( Time ) * ( 1.0 ) ),0.0,0.0 ),vec4 ( 0.0,0.0,1.0,0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( ( MVP ) * ( ( vec4 ( ( 0.5 ) + ( ( sin ( Time ) ) * ( 0.1 ) ),0.0,0.0,0.0 ) ) + ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( ( ( Time ) * ( 2.0 ) ) * ( 1.0 ) ),sin ( ( ( Time ) * ( 2.0 ) ) * ( 1.0 ) ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( ( ( Time ) * ( 2.0 ) ) * ( 1.0 ) ) ),cos ( ( ( Time ) * ( 2.0 ) ) * ( 1.0 ) ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( j7 ) ) * ( vec4 ( 4.0e-2,4.0e-2,4.0e-2,1.0 ) ) ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"},Program {programUniforms = fromList [("MVP",M44F),("Time",Float)], programStreams = fromList [("c13",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float Time ;\nuniform mat4 MVP ;\nin vec4 c13 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = c13;\ngl_Position = ( mat4 ( vec4 ( cos ( ( Time ) * ( 0.0 ) ),sin ( ( Time ) * ( 0.0 ) ),0.0,0.0 ),vec4 ( ( 0.0 ) - ( sin ( ( Time ) * ( 0.0 ) ) ),cos ( ( Time ) * ( 0.0 ) ),0.0,0.0 ),vec4 ( 0.0,0.0,1.0,0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( ( MVP ) * ( ( vec4 ( ( 0.0 ) + ( ( sin ( Time ) ) * ( 0.1 ) ),0.0,0.0,0.0 ) ) + ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( ( ( Time ) * ( 2.0 ) ) * ( 0.0 ) ),sin ( ( ( Time ) * ( 2.0 ) ) * ( 0.0 ) ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( ( ( Time ) * ( 2.0 ) ) * ( 0.0 ) ) ),cos ( ( ( Time ) * ( 2.0 ) ) * ( 0.0 ) ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( c13 ) ) * ( vec4 ( 4.0e-2,4.0e-2,4.0e-2,1.0 ) ) ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"},Program {programUniforms = fromList [("MVP",M44F),("Time",Float)], programStreams = fromList [("v18",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float Time ;\nuniform mat4 MVP ;\nin vec4 v18 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = v18;\ngl_Position = ( mat4 ( vec4 ( cos ( ( Time ) * ( -1.0 ) ),sin ( ( Time ) * ( -1.0 ) ),0.0,0.0 ),vec4 ( ( 0.0 ) - ( sin ( ( Time ) * ( -1.0 ) ) ),cos ( ( Time ) * ( -1.0 ) ),0.0,0.0 ),vec4 ( 0.0,0.0,1.0,0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( ( MVP ) * ( ( vec4 ( ( -0.5 ) + ( ( sin ( Time ) ) * ( 0.1 ) ),0.0,0.0,0.0 ) ) + ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( ( ( Time ) * ( 2.0 ) ) * ( -1.0 ) ),sin ( ( ( Time ) * ( 2.0 ) ) * ( -1.0 ) ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( ( ( Time ) * ( 2.0 ) ) * ( -1.0 ) ) ),cos ( ( ( Time ) * ( 2.0 ) ) * ( -1.0 ) ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( v18 ) ) * ( vec4 ( 4.0e-2,4.0e-2,4.0e-2,1.0 ) ) ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"},Program {programUniforms = fromList [("MVP",M44F),("Time",Float)], programStreams = fromList [("o24",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float Time ;\nuniform mat4 MVP ;\nin vec4 o24 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = o24;\ngl_Position = ( mat4 ( vec4 ( cos ( ( Time ) * ( 0.75 ) ),sin ( ( Time ) * ( 0.75 ) ),0.0,0.0 ),vec4 ( ( 0.0 ) - ( sin ( ( Time ) * ( 0.75 ) ) ),cos ( ( Time ) * ( 0.75 ) ),0.0,0.0 ),vec4 ( 0.0,0.0,1.0,0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( ( MVP ) * ( ( vec4 ( ( 0.375 ) + ( ( sin ( Time ) ) * ( 0.1 ) ),0.0,0.0,0.0 ) ) + ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( ( ( Time ) * ( 2.0 ) ) * ( 0.75 ) ),sin ( ( ( Time ) * ( 2.0 ) ) * ( 0.75 ) ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( ( ( Time ) * ( 2.0 ) ) * ( 0.75 ) ) ),cos ( ( ( Time ) * ( 2.0 ) ) * ( 0.75 ) ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( o24 ) ) * ( vec4 ( 4.0e-2,4.0e-2,4.0e-2,1.0 ) ) ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"},Program {programUniforms = fromList [("MVP",M44F),("Time",Float)], programStreams = fromList [("h30",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float Time ;\nuniform mat4 MVP ;\nin vec4 h30 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = h30;\ngl_Position = ( mat4 ( vec4 ( cos ( ( Time ) * ( 0.3 ) ),sin ( ( Time ) * ( 0.3 ) ),0.0,0.0 ),vec4 ( ( 0.0 ) - ( sin ( ( Time ) * ( 0.3 ) ) ),cos ( ( Time ) * ( 0.3 ) ),0.0,0.0 ),vec4 ( 0.0,0.0,1.0,0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( ( MVP ) * ( ( vec4 ( ( 0.15 ) + ( ( sin ( Time ) ) * ( 0.1 ) ),0.0,0.0,0.0 ) ) + ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( ( ( Time ) * ( 2.0 ) ) * ( 0.3 ) ),sin ( ( ( Time ) * ( 2.0 ) ) * ( 0.3 ) ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( ( ( Time ) * ( 2.0 ) ) * ( 0.3 ) ) ),cos ( ( ( Time ) * ( 2.0 ) ) * ( 0.3 ) ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( h30 ) ) * ( vec4 ( 4.0e-2,4.0e-2,4.0e-2,1.0 ) ) ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"},Program {programUniforms = fromList [("MVP",M44F),("Time",Float)], programStreams = fromList [("a36",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float Time ;\nuniform mat4 MVP ;\nin vec4 a36 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = a36;\ngl_Position = ( mat4 ( vec4 ( cos ( ( Time ) * ( 0.5 ) ),sin ( ( Time ) * ( 0.5 ) ),0.0,0.0 ),vec4 ( ( 0.0 ) - ( sin ( ( Time ) * ( 0.5 ) ) ),cos ( ( Time ) * ( 0.5 ) ),0.0,0.0 ),vec4 ( 0.0,0.0,1.0,0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( ( MVP ) * ( ( vec4 ( ( 0.25 ) + ( ( sin ( Time ) ) * ( 0.1 ) ),0.0,0.0,0.0 ) ) + ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( ( ( Time ) * ( 2.0 ) ) * ( 0.5 ) ),sin ( ( ( Time ) * ( 2.0 ) ) * ( 0.5 ) ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( ( ( Time ) * ( 2.0 ) ) * ( 0.5 ) ) ),cos ( ( ( Time ) * ( 2.0 ) ) * ( 0.5 ) ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( a36 ) ) * ( vec4 ( 4.0e-2,4.0e-2,4.0e-2,1.0 ) ) ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"},Program {programUniforms = fromList [("MVP",M44F),("Time",Float)], programStreams = fromList [("t41",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float Time ;\nuniform mat4 MVP ;\nin vec4 t41 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = t41;\ngl_Position = ( mat4 ( vec4 ( cos ( ( Time ) * ( 0.0 ) ),sin ( ( Time ) * ( 0.0 ) ),0.0,0.0 ),vec4 ( ( 0.0 ) - ( sin ( ( Time ) * ( 0.0 ) ) ),cos ( ( Time ) * ( 0.0 ) ),0.0,0.0 ),vec4 ( 0.0,0.0,1.0,0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( ( MVP ) * ( ( vec4 ( ( 0.0 ) + ( ( sin ( Time ) ) * ( 0.1 ) ),0.0,0.0,0.0 ) ) + ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( ( ( Time ) * ( 2.0 ) ) * ( 0.0 ) ),sin ( ( ( Time ) * ( 2.0 ) ) * ( 0.0 ) ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( ( ( Time ) * ( 2.0 ) ) * ( 0.0 ) ) ),cos ( ( ( Time ) * ( 2.0 ) ) * ( 0.0 ) ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( t41 ) ) * ( vec4 ( 4.0e-2,4.0e-2,4.0e-2,1.0 ) ) ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"},Program {programUniforms = fromList [("MVP",M44F),("Time",Float)], programStreams = fromList [("m47",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float Time ;\nuniform mat4 MVP ;\nin vec4 m47 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = m47;\ngl_Position = ( mat4 ( vec4 ( cos ( ( Time ) * ( -0.5 ) ),sin ( ( Time ) * ( -0.5 ) ),0.0,0.0 ),vec4 ( ( 0.0 ) - ( sin ( ( Time ) * ( -0.5 ) ) ),cos ( ( Time ) * ( -0.5 ) ),0.0,0.0 ),vec4 ( 0.0,0.0,1.0,0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( ( MVP ) * ( ( vec4 ( ( -0.25 ) + ( ( sin ( Time ) ) * ( 0.1 ) ),0.0,0.0,0.0 ) ) + ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( ( ( Time ) * ( 2.0 ) ) * ( -0.5 ) ),sin ( ( ( Time ) * ( 2.0 ) ) * ( -0.5 ) ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( ( ( Time ) * ( 2.0 ) ) * ( -0.5 ) ) ),cos ( ( ( Time ) * ( 2.0 ) ) * ( -0.5 ) ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( m47 ) ) * ( vec4 ( 4.0e-2,4.0e-2,4.0e-2,1.0 ) ) ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F)], slotUniforms = fromList [("MVP",M44F),("Time",Float)], slotPrimitive = Triangles, slotPrograms = [0,1,2,3,4,5,6,7,8]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.5 1.0)}],SetProgram 8,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0,SetProgram 7,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0,SetProgram 6,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0,SetProgram 5,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0,SetProgram 4,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0,SetProgram 3,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0,SetProgram 2,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0,SetProgram 1,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0,SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F),("Time",Float)], programStreams = fromList [("o1",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float Time ;\nuniform mat4 MVP ;\nin vec4 o1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = o1;\ngl_Position = ( mat4 ( vec4 ( cos ( ( Time ) * ( 2.0 ) ),sin ( ( Time ) * ( 2.0 ) ),0.0,0.0 ),vec4 ( ( 0.0 ) - ( sin ( ( Time ) * ( 2.0 ) ) ),cos ( ( Time ) * ( 2.0 ) ),0.0,0.0 ),vec4 ( 0.0,0.0,1.0,0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( ( MVP ) * ( ( vec4 ( ( 1.0 ) + ( ( sin ( Time ) ) * ( 0.1 ) ),0.0,0.0,0.0 ) ) + ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( ( ( Time ) * ( 2.0 ) ) * ( 2.0 ) ),sin ( ( ( Time ) * ( 2.0 ) ) * ( 2.0 ) ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( ( ( Time ) * ( 2.0 ) ) * ( 2.0 ) ) ),cos ( ( ( Time ) * ( 2.0 ) ) * ( 2.0 ) ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( o1 ) ) * ( vec4 ( 4.0e-2,4.0e-2,4.0e-2,1.0 ) ) ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"},Program {programUniforms = fromList [("MVP",M44F),("Time",Float)], programStreams = fromList [("f7",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float Time ;\nuniform mat4 MVP ;\nin vec4 f7 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = f7;\ngl_Position = ( mat4 ( vec4 ( cos ( ( Time ) * ( 1.0 ) ),sin ( ( Time ) * ( 1.0 ) ),0.0,0.0 ),vec4 ( ( 0.0 ) - ( sin ( ( Time ) * ( 1.0 ) ) ),cos ( ( Time ) * ( 1.0 ) ),0.0,0.0 ),vec4 ( 0.0,0.0,1.0,0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( ( MVP ) * ( ( vec4 ( ( 0.5 ) + ( ( sin ( Time ) ) * ( 0.1 ) ),0.0,0.0,0.0 ) ) + ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( ( ( Time ) * ( 2.0 ) ) * ( 1.0 ) ),sin ( ( ( Time ) * ( 2.0 ) ) * ( 1.0 ) ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( ( ( Time ) * ( 2.0 ) ) * ( 1.0 ) ) ),cos ( ( ( Time ) * ( 2.0 ) ) * ( 1.0 ) ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( f7 ) ) * ( vec4 ( 4.0e-2,4.0e-2,4.0e-2,1.0 ) ) ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"},Program {programUniforms = fromList [("MVP",M44F),("Time",Float)], programStreams = fromList [("w12",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float Time ;\nuniform mat4 MVP ;\nin vec4 w12 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = w12;\ngl_Position = ( mat4 ( vec4 ( cos ( ( Time ) * ( 0.0 ) ),sin ( ( Time ) * ( 0.0 ) ),0.0,0.0 ),vec4 ( ( 0.0 ) - ( sin ( ( Time ) * ( 0.0 ) ) ),cos ( ( Time ) * ( 0.0 ) ),0.0,0.0 ),vec4 ( 0.0,0.0,1.0,0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( ( MVP ) * ( ( vec4 ( ( 0.0 ) + ( ( sin ( Time ) ) * ( 0.1 ) ),0.0,0.0,0.0 ) ) + ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( ( ( Time ) * ( 2.0 ) ) * ( 0.0 ) ),sin ( ( ( Time ) * ( 2.0 ) ) * ( 0.0 ) ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( ( ( Time ) * ( 2.0 ) ) * ( 0.0 ) ) ),cos ( ( ( Time ) * ( 2.0 ) ) * ( 0.0 ) ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( w12 ) ) * ( vec4 ( 4.0e-2,4.0e-2,4.0e-2,1.0 ) ) ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"},Program {programUniforms = fromList [("MVP",M44F),("Time",Float)], programStreams = fromList [("n18",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float Time ;\nuniform mat4 MVP ;\nin vec4 n18 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = n18;\ngl_Position = ( mat4 ( vec4 ( cos ( ( Time ) * ( -1.0 ) ),sin ( ( Time ) * ( -1.0 ) ),0.0,0.0 ),vec4 ( ( 0.0 ) - ( sin ( ( Time ) * ( -1.0 ) ) ),cos ( ( Time ) * ( -1.0 ) ),0.0,0.0 ),vec4 ( 0.0,0.0,1.0,0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( ( MVP ) * ( ( vec4 ( ( -0.5 ) + ( ( sin ( Time ) ) * ( 0.1 ) ),0.0,0.0,0.0 ) ) + ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( ( ( Time ) * ( 2.0 ) ) * ( -1.0 ) ),sin ( ( ( Time ) * ( 2.0 ) ) * ( -1.0 ) ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( ( ( Time ) * ( 2.0 ) ) * ( -1.0 ) ) ),cos ( ( ( Time ) * ( 2.0 ) ) * ( -1.0 ) ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( n18 ) ) * ( vec4 ( 4.0e-2,4.0e-2,4.0e-2,1.0 ) ) ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"},Program {programUniforms = fromList [("MVP",M44F),("Time",Float)], programStreams = fromList [("e24",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float Time ;\nuniform mat4 MVP ;\nin vec4 e24 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = e24;\ngl_Position = ( mat4 ( vec4 ( cos ( ( Time ) * ( 0.75 ) ),sin ( ( Time ) * ( 0.75 ) ),0.0,0.0 ),vec4 ( ( 0.0 ) - ( sin ( ( Time ) * ( 0.75 ) ) ),cos ( ( Time ) * ( 0.75 ) ),0.0,0.0 ),vec4 ( 0.0,0.0,1.0,0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( ( MVP ) * ( ( vec4 ( ( 0.375 ) + ( ( sin ( Time ) ) * ( 0.1 ) ),0.0,0.0,0.0 ) ) + ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( ( ( Time ) * ( 2.0 ) ) * ( 0.75 ) ),sin ( ( ( Time ) * ( 2.0 ) ) * ( 0.75 ) ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( ( ( Time ) * ( 2.0 ) ) * ( 0.75 ) ) ),cos ( ( ( Time ) * ( 2.0 ) ) * ( 0.75 ) ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( e24 ) ) * ( vec4 ( 4.0e-2,4.0e-2,4.0e-2,1.0 ) ) ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"},Program {programUniforms = fromList [("MVP",M44F),("Time",Float)], programStreams = fromList [("v29",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float Time ;\nuniform mat4 MVP ;\nin vec4 v29 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = v29;\ngl_Position = ( mat4 ( vec4 ( cos ( ( Time ) * ( 0.3 ) ),sin ( ( Time ) * ( 0.3 ) ),0.0,0.0 ),vec4 ( ( 0.0 ) - ( sin ( ( Time ) * ( 0.3 ) ) ),cos ( ( Time ) * ( 0.3 ) ),0.0,0.0 ),vec4 ( 0.0,0.0,1.0,0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( ( MVP ) * ( ( vec4 ( ( 0.15 ) + ( ( sin ( Time ) ) * ( 0.1 ) ),0.0,0.0,0.0 ) ) + ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( ( ( Time ) * ( 2.0 ) ) * ( 0.3 ) ),sin ( ( ( Time ) * ( 2.0 ) ) * ( 0.3 ) ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( ( ( Time ) * ( 2.0 ) ) * ( 0.3 ) ) ),cos ( ( ( Time ) * ( 2.0 ) ) * ( 0.3 ) ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( v29 ) ) * ( vec4 ( 4.0e-2,4.0e-2,4.0e-2,1.0 ) ) ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"},Program {programUniforms = fromList [("MVP",M44F),("Time",Float)], programStreams = fromList [("m35",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float Time ;\nuniform mat4 MVP ;\nin vec4 m35 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = m35;\ngl_Position = ( mat4 ( vec4 ( cos ( ( Time ) * ( 0.5 ) ),sin ( ( Time ) * ( 0.5 ) ),0.0,0.0 ),vec4 ( ( 0.0 ) - ( sin ( ( Time ) * ( 0.5 ) ) ),cos ( ( Time ) * ( 0.5 ) ),0.0,0.0 ),vec4 ( 0.0,0.0,1.0,0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( ( MVP ) * ( ( vec4 ( ( 0.25 ) + ( ( sin ( Time ) ) * ( 0.1 ) ),0.0,0.0,0.0 ) ) + ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( ( ( Time ) * ( 2.0 ) ) * ( 0.5 ) ),sin ( ( ( Time ) * ( 2.0 ) ) * ( 0.5 ) ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( ( ( Time ) * ( 2.0 ) ) * ( 0.5 ) ) ),cos ( ( ( Time ) * ( 2.0 ) ) * ( 0.5 ) ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( m35 ) ) * ( vec4 ( 4.0e-2,4.0e-2,4.0e-2,1.0 ) ) ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"},Program {programUniforms = fromList [("MVP",M44F),("Time",Float)], programStreams = fromList [("d41",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float Time ;\nuniform mat4 MVP ;\nin vec4 d41 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = d41;\ngl_Position = ( mat4 ( vec4 ( cos ( ( Time ) * ( 0.0 ) ),sin ( ( Time ) * ( 0.0 ) ),0.0,0.0 ),vec4 ( ( 0.0 ) - ( sin ( ( Time ) * ( 0.0 ) ) ),cos ( ( Time ) * ( 0.0 ) ),0.0,0.0 ),vec4 ( 0.0,0.0,1.0,0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( ( MVP ) * ( ( vec4 ( ( 0.0 ) + ( ( sin ( Time ) ) * ( 0.1 ) ),0.0,0.0,0.0 ) ) + ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( ( ( Time ) * ( 2.0 ) ) * ( 0.0 ) ),sin ( ( ( Time ) * ( 2.0 ) ) * ( 0.0 ) ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( ( ( Time ) * ( 2.0 ) ) * ( 0.0 ) ) ),cos ( ( ( Time ) * ( 2.0 ) ) * ( 0.0 ) ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( d41 ) ) * ( vec4 ( 4.0e-2,4.0e-2,4.0e-2,1.0 ) ) ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"},Program {programUniforms = fromList [("MVP",M44F),("Time",Float)], programStreams = fromList [("u46",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float Time ;\nuniform mat4 MVP ;\nin vec4 u46 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = u46;\ngl_Position = ( mat4 ( vec4 ( cos ( ( Time ) * ( -0.5 ) ),sin ( ( Time ) * ( -0.5 ) ),0.0,0.0 ),vec4 ( ( 0.0 ) - ( sin ( ( Time ) * ( -0.5 ) ) ),cos ( ( Time ) * ( -0.5 ) ),0.0,0.0 ),vec4 ( 0.0,0.0,1.0,0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( ( MVP ) * ( ( vec4 ( ( -0.25 ) + ( ( sin ( Time ) ) * ( 0.1 ) ),0.0,0.0,0.0 ) ) + ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( ( ( Time ) * ( 2.0 ) ) * ( -0.5 ) ),sin ( ( ( Time ) * ( 2.0 ) ) * ( -0.5 ) ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( ( ( Time ) * ( 2.0 ) ) * ( -0.5 ) ) ),cos ( ( ( Time ) * ( 2.0 ) ) * ( -0.5 ) ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( u46 ) ) * ( vec4 ( 4.0e-2,4.0e-2,4.0e-2,1.0 ) ) ) ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F)], slotUniforms = fromList [("MVP",M44F),("Time",Float)], slotPrimitive = Triangles, slotPrograms = [0,1,2,3,4,5,6,7,8]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.5 1.0)}],SetProgram 8,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0,SetProgram 7,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0,SetProgram 6,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0,SetProgram 5,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0,SetProgram 4,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0,SetProgram 3,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0,SetProgram 2,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0,SetProgram 1,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0,SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file
diff --git a/testdata/accept/fetcharrays01.out b/testdata/accept/fetcharrays01.out
index fd6da633..a9094b36 100644
--- a/testdata/accept/fetcharrays01.out
+++ b/testdata/accept/fetcharrays01.out
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("a2",Parameter {name = "attribute_0", ty = V3F}),("b2",Parameter {name = "attribute_1", ty = V3F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec3 a2 ;\nin vec3 b2 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( 0.0,0.0,0.0,1.0 );\ngl_Position = ( ( MVP ) * ( vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( vec4 ( 0.5,0.5,0.5,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"}], slots = [], streams = [StreamData {streamData = fromList [("attribute_0",VFloatArray [1.0,1.0,1.0,-1.0,1.0,1.0,-1.0,1.0,-1.0,-1.0,1.0,-1.0,1.0,1.0,-1.0,1.0,1.0,1.0,1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,1.0,-1.0,-1.0,1.0,1.0,-1.0,1.0,1.0,-1.0,-1.0,1.0,-1.0,1.0,-1.0,-1.0,1.0,-1.0,1.0,1.0,-1.0,1.0,1.0,1.0,1.0,1.0,1.0,-1.0,1.0,1.0,1.0,-1.0,-1.0,1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,1.0,-1.0,-1.0,1.0,1.0,-1.0,-1.0,-1.0,1.0,-1.0,-1.0,-1.0,-1.0,1.0,-1.0,-1.0,1.0,-1.0,-1.0,1.0,1.0,-1.0,-1.0,1.0,1.0,-1.0,-1.0,1.0,-1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,-1.0,1.0,-1.0,-1.0]),("attribute_1",VFloatArray [0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,-1.0,0.0,0.0,-1.0,0.0,0.0,-1.0,0.0,0.0,-1.0,0.0,0.0,-1.0,0.0,0.0,-1.0,0.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,-1.0,0.0,0.0,-1.0,0.0,0.0,-1.0,0.0,0.0,-1.0,0.0,0.0,-1.0,0.0,0.0,-1.0,-1.0,0.0,0.0,-1.0,0.0,0.0,-1.0,0.0,0.0,-1.0,0.0,0.0,-1.0,0.0,0.0,-1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0])], streamType = fromList [("attribute_0",V3F),("attribute_1",V3F)], streamPrimitive = Triangles, streamPrograms = [0]}], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 1.0 0.0 0.0 1.0)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderStream 0]} \ No newline at end of file Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("y1",Parameter {name = "attribute_0", ty = V3F}),("z1",Parameter {name = "attribute_1", ty = V3F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec3 y1 ;\nin vec3 z1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( 0.0,0.0,0.0,1.0 );\ngl_Position = ( ( MVP ) * ( vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( vec4 ( 0.5,0.5,0.5,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"}], slots = [], streams = [StreamData {streamData = fromList [("attribute_0",VFloatArray [1.0,1.0,1.0,-1.0,1.0,1.0,-1.0,1.0,-1.0,-1.0,1.0,-1.0,1.0,1.0,-1.0,1.0,1.0,1.0,1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,1.0,-1.0,-1.0,1.0,1.0,-1.0,1.0,1.0,-1.0,-1.0,1.0,-1.0,1.0,-1.0,-1.0,1.0,-1.0,1.0,1.0,-1.0,1.0,1.0,1.0,1.0,1.0,1.0,-1.0,1.0,1.0,1.0,-1.0,-1.0,1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,1.0,-1.0,-1.0,1.0,1.0,-1.0,-1.0,-1.0,1.0,-1.0,-1.0,-1.0,-1.0,1.0,-1.0,-1.0,1.0,-1.0,-1.0,1.0,1.0,-1.0,-1.0,1.0,1.0,-1.0,-1.0,1.0,-1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,-1.0,1.0,-1.0,-1.0]),("attribute_1",VFloatArray [0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,-1.0,0.0,0.0,-1.0,0.0,0.0,-1.0,0.0,0.0,-1.0,0.0,0.0,-1.0,0.0,0.0,-1.0,0.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,-1.0,0.0,0.0,-1.0,0.0,0.0,-1.0,0.0,0.0,-1.0,0.0,0.0,-1.0,0.0,0.0,-1.0,-1.0,0.0,0.0,-1.0,0.0,0.0,-1.0,0.0,0.0,-1.0,0.0,0.0,-1.0,0.0,0.0,-1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0])], streamType = fromList [("attribute_0",V3F),("attribute_1",V3F)], streamPrimitive = Triangles, streamPrograms = [0]}], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 1.0 0.0 0.0 1.0)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderStream 0]} \ No newline at end of file
diff --git a/testdata/accept/fragment01.out b/testdata/accept/fragment01.out
index 497e58ce..77eef493 100644
--- a/testdata/accept/fragment01.out
+++ b/testdata/accept/fragment01.out
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [], programStreams = fromList [("o1",Parameter {name = "position", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nin vec4 o1 ;\nvoid main() {\ngl_Position = o1;\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nout vec4 f0 ;\nvoid main() {\nf0 = vec4 ( 0.0,0.0,1.0,1.0 );\n}\n"}], slots = [Slot {slotName = "quad", slotStreams = fromList [("position",V4F)], slotUniforms = fromList [], slotPrimitive = Triangles, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Color, clearValue = VV4F (V4 1.0 0.0 0.0 0.5)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [], programStreams = fromList [("m1",Parameter {name = "position", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nin vec4 m1 ;\nvoid main() {\ngl_Position = m1;\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nout vec4 f0 ;\nvoid main() {\nf0 = vec4 ( 0.0,0.0,1.0,1.0 );\n}\n"}], slots = [Slot {slotName = "quad", slotStreams = fromList [("position",V4F)], slotUniforms = fromList [], slotPrimitive = Triangles, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Color, clearValue = VV4F (V4 1.0 0.0 0.0 0.5)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file
diff --git a/testdata/accept/fragment03swizzling.out b/testdata/accept/fragment03swizzling.out
index 408b56aa..77fe9352 100644
--- a/testdata/accept/fragment03swizzling.out
+++ b/testdata/accept/fragment03swizzling.out
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [], programStreams = fromList [("x1",Parameter {name = "position", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nin vec4 x1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = x1;\ngl_Position = x1;\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( v0 ).xxxw ) + ( ( v0 ).yyyw );\n}\n"}], slots = [Slot {slotName = "quad", slotStreams = fromList [("position",V4F)], slotUniforms = fromList [], slotPrimitive = Triangles, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Color, clearValue = VV4F (V4 1.0 0.0 0.0 0.5)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [], programStreams = fromList [("v1",Parameter {name = "position", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nin vec4 v1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = v1;\ngl_Position = v1;\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( v0 ).xxxw ) + ( ( v0 ).yyyw );\n}\n"}], slots = [Slot {slotName = "quad", slotStreams = fromList [("position",V4F)], slotUniforms = fromList [], slotPrimitive = Triangles, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Color, clearValue = VV4F (V4 1.0 0.0 0.0 0.5)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file
diff --git a/testdata/accept/fragment04ifthenelse.out b/testdata/accept/fragment04ifthenelse.out
index 131c814f..feaf1478 100644
--- a/testdata/accept/fragment04ifthenelse.out
+++ b/testdata/accept/fragment04ifthenelse.out
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("Time",Float)], programStreams = fromList [("x1",Parameter {name = "position", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nin vec4 x1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = x1;\ngl_Position = x1;\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float Time ;\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( Time ) < ( 0.5 ) ? v0 : vec4 ( 0.0,0.0,1.0,1.0 );\n}\n"}], slots = [Slot {slotName = "quad", slotStreams = fromList [("position",V4F)], slotUniforms = fromList [("Time",Float)], slotPrimitive = Triangles, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Color, clearValue = VV4F (V4 1.0 0.0 0.0 0.5)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("Time",Float)], programStreams = fromList [("v1",Parameter {name = "position", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nin vec4 v1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = v1;\ngl_Position = v1;\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float Time ;\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( Time ) < ( 0.5 ) ? v0 : vec4 ( 0.0,0.0,1.0,1.0 );\n}\n"}], slots = [Slot {slotName = "quad", slotStreams = fromList [("position",V4F)], slotUniforms = fromList [("Time",Float)], slotPrimitive = Triangles, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Color, clearValue = VV4F (V4 1.0 0.0 0.0 0.5)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file
diff --git a/testdata/accept/fragment07let.out b/testdata/accept/fragment07let.out
index ead68287..88146662 100644
--- a/testdata/accept/fragment07let.out
+++ b/testdata/accept/fragment07let.out
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [], programStreams = fromList [("u1",Parameter {name = "position", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nin vec4 u1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = u1;\ngl_Position = u1;\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = sin ( sin ( v0 ) );\n}\n"}], slots = [Slot {slotName = "quad", slotStreams = fromList [("position",V4F)], slotUniforms = fromList [], slotPrimitive = Triangles, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Color, clearValue = VV4F (V4 1.0 0.0 0.0 0.5)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [], programStreams = fromList [("s1",Parameter {name = "position", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nin vec4 s1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = s1;\ngl_Position = s1;\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = sin ( sin ( v0 ) );\n}\n"}], slots = [Slot {slotName = "quad", slotStreams = fromList [("position",V4F)], slotUniforms = fromList [], slotPrimitive = Triangles, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Color, clearValue = VV4F (V4 1.0 0.0 0.0 0.5)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file
diff --git a/testdata/accept/gfx02.out b/testdata/accept/gfx02.out
index 2bebe8a7..ffb555de 100644
--- a/testdata/accept/gfx02.out
+++ b/testdata/accept/gfx02.out
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [], programStreams = fromList [("o1",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nin vec4 o1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = o1;\ngl_Position = o1;\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F)], slotUniforms = fromList [], slotPrimitive = Triangles, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.4 1.0)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [], programStreams = fromList [("m1",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nin vec4 m1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = m1;\ngl_Position = m1;\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F)], slotUniforms = fromList [], slotPrimitive = Triangles, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.4 1.0)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file
diff --git a/testdata/accept/gfx03.out b/testdata/accept/gfx03.out
index 4ba86d29..ea9b0bd2 100644
--- a/testdata/accept/gfx03.out
+++ b/testdata/accept/gfx03.out
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP2",M44F)], programStreams = fromList [("q1",Parameter {name = "position", ty = V3F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP2 ;\nin vec3 q1 ;\nvoid main() {\ngl_Position = ( MVP2 ) * ( vec4 ( 0.0,0.0,0.0,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nout vec4 f0 ;\nvoid main() {\nf0 = vec4 ( 0.0,0.4,0.0,1.0 );\n}\n"},Program {programUniforms = fromList [("MVP2",M44F)], programStreams = fromList [("o3",Parameter {name = "position", ty = V3F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP2 ;\nin vec3 o3 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( 0.0,0.0,0.0,1.0 );\ngl_Position = ( MVP2 ) * ( vec4 ( 0.0,0.0,0.0,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v0 ) + ( vec4 ( 1.0,1.4,1.0,0.6 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("x5",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 x5 ;\nflat out vec4 v0 ;\nvoid main() {\nv0 = x5;\ngl_Position = ( MVP ) * ( x5 );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nflat in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v0 ) * ( vec4 ( 1.0,1.4,1.0,0.6 ) );\n}\n"}], slots = [Slot {slotName = "stream", slotStreams = fromList [("position",V3F)], slotUniforms = fromList [("MVP2",M44F)], slotPrimitive = Triangles, slotPrograms = [0,1]},Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F)], slotUniforms = fromList [("MVP",M44F)], slotPrimitive = Triangles, slotPrograms = [2]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.5 0.0 0.4 1.0)}],SetProgram 2,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less False,ColorOp (Blend {colorEqSrc = FuncAdd, alphaEqSrc = FuncAdd, colorFSrc = SrcAlpha, colorFDst = OneMinusSrcAlpha, alphaFSrc = SrcAlpha, alphaFDst = OneMinusSrcAlpha, color = V4 1.0 1.0 1.0 1.0}) (VV4B (V4 True True True True))]}),RenderSlot 1,SetProgram 1,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset FirstVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less False,ColorOp NoBlending (VV4B (V4 True True False False))]}),RenderSlot 0,SetProgram 0,SetRasterContext (TriangleCtx CullNone (PolygonLine 20.0) NoOffset FirstVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Always False,ColorOp NoBlending (VV4B (V4 True True False False))]}),RenderSlot 0]} \ No newline at end of file Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP2",M44F)], programStreams = fromList [("o1",Parameter {name = "position", ty = V3F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP2 ;\nin vec3 o1 ;\nvoid main() {\ngl_Position = ( MVP2 ) * ( vec4 ( 0.0,0.0,0.0,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nout vec4 f0 ;\nvoid main() {\nf0 = vec4 ( 0.0,0.4,0.0,1.0 );\n}\n"},Program {programUniforms = fromList [("MVP2",M44F)], programStreams = fromList [("k3",Parameter {name = "position", ty = V3F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP2 ;\nin vec3 k3 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( 0.0,0.0,0.0,1.0 );\ngl_Position = ( MVP2 ) * ( vec4 ( 0.0,0.0,0.0,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v0 ) + ( vec4 ( 1.0,1.4,1.0,0.6 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("r5",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 r5 ;\nflat out vec4 v0 ;\nvoid main() {\nv0 = r5;\ngl_Position = ( MVP ) * ( r5 );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nflat in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v0 ) * ( vec4 ( 1.0,1.4,1.0,0.6 ) );\n}\n"}], slots = [Slot {slotName = "stream", slotStreams = fromList [("position",V3F)], slotUniforms = fromList [("MVP2",M44F)], slotPrimitive = Triangles, slotPrograms = [0,1]},Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F)], slotUniforms = fromList [("MVP",M44F)], slotPrimitive = Triangles, slotPrograms = [2]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.5 0.0 0.4 1.0)}],SetProgram 2,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less False,ColorOp (Blend {colorEqSrc = FuncAdd, alphaEqSrc = FuncAdd, colorFSrc = SrcAlpha, colorFDst = OneMinusSrcAlpha, alphaFSrc = SrcAlpha, alphaFDst = OneMinusSrcAlpha, color = V4 1.0 1.0 1.0 1.0}) (VV4B (V4 True True True True))]}),RenderSlot 1,SetProgram 1,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset FirstVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less False,ColorOp NoBlending (VV4B (V4 True True False False))]}),RenderSlot 0,SetProgram 0,SetRasterContext (TriangleCtx CullNone (PolygonLine 20.0) NoOffset FirstVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Always False,ColorOp NoBlending (VV4B (V4 True True False False))]}),RenderSlot 0]} \ No newline at end of file
diff --git a/testdata/accept/gfx04.out b/testdata/accept/gfx04.out
index 9b18c601..ce7a54bf 100644
--- a/testdata/accept/gfx04.out
+++ b/testdata/accept/gfx04.out
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("k2",Parameter {name = "position", ty = V3F}),("l2",Parameter {name = "normal", ty = V3F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec3 k2 ;\nin vec3 l2 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( 0.0,0.0,0.0,1.0 );\ngl_Position = ( MVP ) * ( vec4 ( 0.0,0.0,0.0,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v0 ) * ( vec4 ( 1.0,1.4,1.0,0.6 ) );\n}\n"}], slots = [Slot {slotName = "stream", slotStreams = fromList [("normal",V3F),("position",V3F)], slotUniforms = fromList [("MVP",M44F)], slotPrimitive = Triangles, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.5 0.0 0.4 1.0)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less False,ColorOp (Blend {colorEqSrc = FuncAdd, alphaEqSrc = FuncAdd, colorFSrc = SrcAlpha, colorFDst = OneMinusSrcAlpha, alphaFSrc = SrcAlpha, alphaFDst = OneMinusSrcAlpha, color = V4 1.0 1.0 1.0 1.0}) (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("i2",Parameter {name = "position", ty = V3F}),("j2",Parameter {name = "normal", ty = V3F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec3 i2 ;\nin vec3 j2 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( 0.0,0.0,0.0,1.0 );\ngl_Position = ( MVP ) * ( vec4 ( 0.0,0.0,0.0,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v0 ) * ( vec4 ( 1.0,1.4,1.0,0.6 ) );\n}\n"}], slots = [Slot {slotName = "stream", slotStreams = fromList [("normal",V3F),("position",V3F)], slotUniforms = fromList [("MVP",M44F)], slotPrimitive = Triangles, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.5 0.0 0.4 1.0)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less False,ColorOp (Blend {colorEqSrc = FuncAdd, alphaEqSrc = FuncAdd, colorFSrc = SrcAlpha, colorFDst = OneMinusSrcAlpha, alphaFSrc = SrcAlpha, alphaFDst = OneMinusSrcAlpha, color = V4 1.0 1.0 1.0 1.0}) (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file
diff --git a/testdata/accept/gfx05.out b/testdata/accept/gfx05.out
index 0cd64abe..f2bbf4d6 100644
--- a/testdata/accept/gfx05.out
+++ b/testdata/accept/gfx05.out
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [TextureDescriptor {textureType = Texture2D (FloatT Red) 1, textureSize = VV2U (V2 1024 768), textureSemantic = Depth, textureSampler = SamplerDescriptor {samplerWrapS = Repeat, samplerWrapT = Nothing, samplerWrapR = Nothing, samplerMinFilter = Linear, samplerMagFilter = Linear, samplerBorderColor = VV4F (V4 0.0 0.0 0.0 1.0), samplerMinLod = Nothing, samplerMaxLod = Nothing, samplerLodBias = 0.0, samplerCompareFunc = Nothing}, textureBaseLevel = 0, textureMaxLevel = 0},TextureDescriptor {textureType = Texture2D (FloatT RGBA) 1, textureSize = VV2U (V2 1024 768), textureSemantic = Color, textureSampler = SamplerDescriptor {samplerWrapS = Repeat, samplerWrapT = Nothing, samplerWrapR = Nothing, samplerMinFilter = Linear, samplerMagFilter = Linear, samplerBorderColor = VV4F (V4 0.0 0.0 0.0 1.0), samplerMinLod = Nothing, samplerMaxLod = Nothing, samplerLodBias = 0.0, samplerCompareFunc = Nothing}, textureBaseLevel = 0, textureMaxLevel = 0}], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 0 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 1 0 Nothing)}]}], programs = [Program {programUniforms = fromList [("MVP2",M44F)], programStreams = fromList [("q1",Parameter {name = "position", ty = V3F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP2 ;\nin vec3 q1 ;\nvoid main() {\ngl_Position = ( MVP2 ) * ( vec4 ( 0.0,0.0,0.0,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nout vec4 f0 ;\nvoid main() {\nf0 = vec4 ( 0.0,0.4,0.0,1.0 );\n}\n"},Program {programUniforms = fromList [("MVP2",M44F)], programStreams = fromList [("o3",Parameter {name = "position", ty = V3F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP2 ;\nin vec3 o3 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( 0.0,0.0,0.0,1.0 );\ngl_Position = ( MVP2 ) * ( vec4 ( 0.0,0.0,0.0,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v0 ) + ( vec4 ( 1.0,1.4,1.0,0.6 ) );\n}\n"},Program {programUniforms = fromList [("MVP2",M44F)], programStreams = fromList [("x6",Parameter {name = "position", ty = V3F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP2 ;\nin vec3 x6 ;\nvoid main() {\ngl_Position = ( MVP2 ) * ( vec4 ( 0.0,0.0,0.0,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nout vec4 f0 ;\nvoid main() {\nf0 = vec4 ( 0.0,0.4,0.0,1.0 );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("x8",Parameter {name = "position4", ty = V4F}),("y8",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("h5",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 x8 ;\nin vec2 y8 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = y8;\ngl_Position = ( MVP ) * ( x8 );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D h5 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( texture2D ( h5,( v0 ).xy ) ) * ( 0.7 );\n}\n"}], slots = [Slot {slotName = "stream", slotStreams = fromList [("position",V3F)], slotUniforms = fromList [("MVP2",M44F)], slotPrimitive = Triangles, slotPrograms = [0,1,2]},Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F),("vertexUV",V2F)], slotUniforms = fromList [("MVP",M44F)], slotPrimitive = Triangles, slotPrograms = [3]}], streams = [], commands = [SetRenderTarget 1,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.1 0.0 0.3 1.0)}],SetProgram 2,SetRasterContext (TriangleCtx CullNone (PolygonLine 20.0) NoOffset FirstVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Always False,ColorOp NoBlending (VV4B (V4 True True False False))]}),RenderSlot 0,SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.5 0.0 0.4 1.0)}],SetProgram 3,SetTexture 0 1,SetSamplerUniform "h5" 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less False,ColorOp (Blend {colorEqSrc = FuncAdd, alphaEqSrc = FuncAdd, colorFSrc = SrcAlpha, colorFDst = OneMinusSrcAlpha, alphaFSrc = SrcAlpha, alphaFDst = OneMinusSrcAlpha, color = V4 1.0 1.0 1.0 1.0}) (VV4B (V4 True True True True))]}),RenderSlot 1,SetProgram 1,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset FirstVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less False,ColorOp NoBlending (VV4B (V4 True True False False))]}),RenderSlot 0,SetProgram 0,SetRasterContext (TriangleCtx CullNone (PolygonLine 20.0) NoOffset FirstVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Always False,ColorOp NoBlending (VV4B (V4 True True False False))]}),RenderSlot 0]} \ No newline at end of file Pipeline {backend = OpenGL33, textures = [TextureDescriptor {textureType = Texture2D (FloatT Red) 1, textureSize = VV2U (V2 1024 768), textureSemantic = Depth, textureSampler = SamplerDescriptor {samplerWrapS = Repeat, samplerWrapT = Nothing, samplerWrapR = Nothing, samplerMinFilter = Linear, samplerMagFilter = Linear, samplerBorderColor = VV4F (V4 0.0 0.0 0.0 1.0), samplerMinLod = Nothing, samplerMaxLod = Nothing, samplerLodBias = 0.0, samplerCompareFunc = Nothing}, textureBaseLevel = 0, textureMaxLevel = 0},TextureDescriptor {textureType = Texture2D (FloatT RGBA) 1, textureSize = VV2U (V2 1024 768), textureSemantic = Color, textureSampler = SamplerDescriptor {samplerWrapS = Repeat, samplerWrapT = Nothing, samplerWrapR = Nothing, samplerMinFilter = Linear, samplerMagFilter = Linear, samplerBorderColor = VV4F (V4 0.0 0.0 0.0 1.0), samplerMinLod = Nothing, samplerMaxLod = Nothing, samplerLodBias = 0.0, samplerCompareFunc = Nothing}, textureBaseLevel = 0, textureMaxLevel = 0}], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 0 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 1 0 Nothing)}]}], programs = [Program {programUniforms = fromList [("MVP2",M44F)], programStreams = fromList [("o1",Parameter {name = "position", ty = V3F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP2 ;\nin vec3 o1 ;\nvoid main() {\ngl_Position = ( MVP2 ) * ( vec4 ( 0.0,0.0,0.0,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nout vec4 f0 ;\nvoid main() {\nf0 = vec4 ( 0.0,0.4,0.0,1.0 );\n}\n"},Program {programUniforms = fromList [("MVP2",M44F)], programStreams = fromList [("k3",Parameter {name = "position", ty = V3F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP2 ;\nin vec3 k3 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( 0.0,0.0,0.0,1.0 );\ngl_Position = ( MVP2 ) * ( vec4 ( 0.0,0.0,0.0,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v0 ) + ( vec4 ( 1.0,1.4,1.0,0.6 ) );\n}\n"},Program {programUniforms = fromList [("MVP2",M44F)], programStreams = fromList [("p6",Parameter {name = "position", ty = V3F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP2 ;\nin vec3 p6 ;\nvoid main() {\ngl_Position = ( MVP2 ) * ( vec4 ( 0.0,0.0,0.0,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nout vec4 f0 ;\nvoid main() {\nf0 = vec4 ( 0.0,0.4,0.0,1.0 );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("p8",Parameter {name = "position4", ty = V4F}),("q8",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("b5",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 p8 ;\nin vec2 q8 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = q8;\ngl_Position = ( MVP ) * ( p8 );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D b5 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( texture2D ( b5,( v0 ).xy ) ) * ( 0.7 );\n}\n"}], slots = [Slot {slotName = "stream", slotStreams = fromList [("position",V3F)], slotUniforms = fromList [("MVP2",M44F)], slotPrimitive = Triangles, slotPrograms = [0,1,2]},Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F),("vertexUV",V2F)], slotUniforms = fromList [("MVP",M44F)], slotPrimitive = Triangles, slotPrograms = [3]}], streams = [], commands = [SetRenderTarget 1,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.1 0.0 0.3 1.0)}],SetProgram 2,SetRasterContext (TriangleCtx CullNone (PolygonLine 20.0) NoOffset FirstVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Always False,ColorOp NoBlending (VV4B (V4 True True False False))]}),RenderSlot 0,SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.5 0.0 0.4 1.0)}],SetProgram 3,SetTexture 0 1,SetSamplerUniform "b5" 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less False,ColorOp (Blend {colorEqSrc = FuncAdd, alphaEqSrc = FuncAdd, colorFSrc = SrcAlpha, colorFDst = OneMinusSrcAlpha, alphaFSrc = SrcAlpha, alphaFDst = OneMinusSrcAlpha, color = V4 1.0 1.0 1.0 1.0}) (VV4B (V4 True True True True))]}),RenderSlot 1,SetProgram 1,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset FirstVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less False,ColorOp NoBlending (VV4B (V4 True True False False))]}),RenderSlot 0,SetProgram 0,SetRasterContext (TriangleCtx CullNone (PolygonLine 20.0) NoOffset FirstVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Always False,ColorOp NoBlending (VV4B (V4 True True False False))]}),RenderSlot 0]} \ No newline at end of file
diff --git a/testdata/accept/heartbeat01.out b/testdata/accept/heartbeat01.out
index 404bfb1e..320b21e2 100644
--- a/testdata/accept/heartbeat01.out
+++ b/testdata/accept/heartbeat01.out
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [TextureDescriptor {textureType = Texture2D (FloatT Red) 1, textureSize = VV2U (V2 128 128), textureSemantic = Depth, textureSampler = SamplerDescriptor {samplerWrapS = Repeat, samplerWrapT = Nothing, samplerWrapR = Nothing, samplerMinFilter = Linear, samplerMagFilter = Linear, samplerBorderColor = VV4F (V4 0.0 0.0 0.0 1.0), samplerMinLod = Nothing, samplerMaxLod = Nothing, samplerLodBias = 0.0, samplerCompareFunc = Nothing}, textureBaseLevel = 0, textureMaxLevel = 0},TextureDescriptor {textureType = Texture2D (FloatT RGBA) 1, textureSize = VV2U (V2 128 128), textureSemantic = Color, textureSampler = SamplerDescriptor {samplerWrapS = Repeat, samplerWrapT = Nothing, samplerWrapR = Nothing, samplerMinFilter = Linear, samplerMagFilter = Linear, samplerBorderColor = VV4F (V4 0.0 0.0 0.0 1.0), samplerMinLod = Nothing, samplerMaxLod = Nothing, samplerLodBias = 0.0, samplerCompareFunc = Nothing}, textureBaseLevel = 0, textureMaxLevel = 0}], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 0 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 1 0 Nothing)}]}], programs = [Program {programUniforms = fromList [("Time",Float)], programStreams = fromList [("y12",Parameter {name = "position4", ty = V4F}),("z12",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nin vec4 y12 ;\nin vec2 z12 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = z12;\ngl_Position = ( y12 ) * ( vec4 ( 1.0,1.0,1.0,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float Time ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( ( ( ( ( v0 ).x ) - ( 0.85 ) ) * ( ( ( v0 ).x ) - ( 0.85 ) ) ) + ( ( ( ( v0 ).y ) - ( 0.85 ) ) * ( ( ( v0 ).y ) - ( 0.85 ) ) ) ) + ( ( 5.0e-4 ) * ( sin ( ( ( 3.0 ) * ( atan ( ( ( v0 ).x ) - ( 0.85 ),( ( v0 ).y ) - ( 0.85 ) ) ) ) + ( ( 15.0 ) * ( Time ) ) ) ) ) ) < ( ( 5.0e-3 ) * ( abs ( ( sin ( ( Time ) * ( 4.0 ) ) ) - ( 0.37 ) ) ) ) ? vec4 ( 0.0,0.0,0.5,1.0 ) : ( ( ( ( ( ( v0 ).x ) - ( 0.85 ) ) * ( ( ( v0 ).x ) - ( 0.85 ) ) ) + ( ( ( ( v0 ).y ) - ( 0.85 ) ) * ( ( ( v0 ).y ) - ( 0.85 ) ) ) ) + ( ( 2.0e-3 ) * ( sin ( ( ( 5.0 ) * ( atan ( ( ( v0 ).x ) - ( 0.85 ),( ( v0 ).y ) - ( 0.85 ) ) ) ) - ( ( 5.0 ) * ( Time ) ) ) ) ) ) < ( ( 2.0e-2 ) * ( abs ( ( sin ( ( Time ) * ( 4.0 ) ) ) - ( 0.37 ) ) ) ) ? vec4 ( 0.0,0.0,1.0,1.0 ) : ( ( ( ( ( ( v0 ).x ) - ( 0.85 ) ) * ( ( ( v0 ).x ) - ( 0.85 ) ) ) + ( ( ( ( v0 ).y ) - ( 0.85 ) ) * ( ( ( v0 ).y ) - ( 0.85 ) ) ) ) + ( ( 2.0e-3 ) * ( sin ( ( ( 7.0 ) * ( atan ( ( ( v0 ).x ) - ( 0.85 ),( ( v0 ).y ) - ( 0.85 ) ) ) ) + ( ( 3.0 ) * ( Time ) ) ) ) ) ) < ( ( 5.0e-2 ) * ( abs ( ( sin ( ( Time ) * ( 4.0 ) ) ) - ( 0.37 ) ) ) ) ? vec4 ( 1.0,1.0,1.0,1.0 ) : vec4 ( 1.0,1.0,0.0,1.0 );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("y14",Parameter {name = "position4", ty = V4F}),("z14",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("z0",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 y14 ;\nin vec2 z14 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = z14;\ngl_Position = ( ( MVP ) * ( y14 ) ) * ( vec4 ( 0.5,0.5,0.5,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D z0 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = texture2D ( z0,v0 );\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F),("vertexUV",V2F)], slotUniforms = fromList [("MVP",M44F),("Time",Float)], slotPrimitive = Triangles, slotPrograms = [0,1]}], streams = [], commands = [SetRenderTarget 1,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 1.0 0.0 0.0 1.0)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0,SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 1.0 0.0 0.0 1.0)}],SetProgram 1,SetTexture 0 1,SetSamplerUniform "z0" 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file Pipeline {backend = OpenGL33, textures = [TextureDescriptor {textureType = Texture2D (FloatT Red) 1, textureSize = VV2U (V2 128 128), textureSemantic = Depth, textureSampler = SamplerDescriptor {samplerWrapS = Repeat, samplerWrapT = Nothing, samplerWrapR = Nothing, samplerMinFilter = Linear, samplerMagFilter = Linear, samplerBorderColor = VV4F (V4 0.0 0.0 0.0 1.0), samplerMinLod = Nothing, samplerMaxLod = Nothing, samplerLodBias = 0.0, samplerCompareFunc = Nothing}, textureBaseLevel = 0, textureMaxLevel = 0},TextureDescriptor {textureType = Texture2D (FloatT RGBA) 1, textureSize = VV2U (V2 128 128), textureSemantic = Color, textureSampler = SamplerDescriptor {samplerWrapS = Repeat, samplerWrapT = Nothing, samplerWrapR = Nothing, samplerMinFilter = Linear, samplerMagFilter = Linear, samplerBorderColor = VV4F (V4 0.0 0.0 0.0 1.0), samplerMinLod = Nothing, samplerMaxLod = Nothing, samplerLodBias = 0.0, samplerCompareFunc = Nothing}, textureBaseLevel = 0, textureMaxLevel = 0}], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 0 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 1 0 Nothing)}]}], programs = [Program {programUniforms = fromList [("Time",Float)], programStreams = fromList [("u12",Parameter {name = "position4", ty = V4F}),("v12",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nin vec4 u12 ;\nin vec2 v12 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = v12;\ngl_Position = ( u12 ) * ( vec4 ( 1.0,1.0,1.0,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform float Time ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( ( ( ( ( v0 ).x ) - ( 0.85 ) ) * ( ( ( v0 ).x ) - ( 0.85 ) ) ) + ( ( ( ( v0 ).y ) - ( 0.85 ) ) * ( ( ( v0 ).y ) - ( 0.85 ) ) ) ) + ( ( 5.0e-4 ) * ( sin ( ( ( 3.0 ) * ( atan ( ( ( v0 ).x ) - ( 0.85 ),( ( v0 ).y ) - ( 0.85 ) ) ) ) + ( ( 15.0 ) * ( Time ) ) ) ) ) ) < ( ( 5.0e-3 ) * ( abs ( ( sin ( ( Time ) * ( 4.0 ) ) ) - ( 0.37 ) ) ) ) ? vec4 ( 0.0,0.0,0.5,1.0 ) : ( ( ( ( ( ( v0 ).x ) - ( 0.85 ) ) * ( ( ( v0 ).x ) - ( 0.85 ) ) ) + ( ( ( ( v0 ).y ) - ( 0.85 ) ) * ( ( ( v0 ).y ) - ( 0.85 ) ) ) ) + ( ( 2.0e-3 ) * ( sin ( ( ( 5.0 ) * ( atan ( ( ( v0 ).x ) - ( 0.85 ),( ( v0 ).y ) - ( 0.85 ) ) ) ) - ( ( 5.0 ) * ( Time ) ) ) ) ) ) < ( ( 2.0e-2 ) * ( abs ( ( sin ( ( Time ) * ( 4.0 ) ) ) - ( 0.37 ) ) ) ) ? vec4 ( 0.0,0.0,1.0,1.0 ) : ( ( ( ( ( ( v0 ).x ) - ( 0.85 ) ) * ( ( ( v0 ).x ) - ( 0.85 ) ) ) + ( ( ( ( v0 ).y ) - ( 0.85 ) ) * ( ( ( v0 ).y ) - ( 0.85 ) ) ) ) + ( ( 2.0e-3 ) * ( sin ( ( ( 7.0 ) * ( atan ( ( ( v0 ).x ) - ( 0.85 ),( ( v0 ).y ) - ( 0.85 ) ) ) ) + ( ( 3.0 ) * ( Time ) ) ) ) ) ) < ( ( 5.0e-2 ) * ( abs ( ( sin ( ( Time ) * ( 4.0 ) ) ) - ( 0.37 ) ) ) ) ? vec4 ( 1.0,1.0,1.0,1.0 ) : vec4 ( 1.0,1.0,0.0,1.0 );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("u14",Parameter {name = "position4", ty = V4F}),("v14",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("x0",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 u14 ;\nin vec2 v14 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = v14;\ngl_Position = ( ( MVP ) * ( u14 ) ) * ( vec4 ( 0.5,0.5,0.5,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D x0 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = texture2D ( x0,v0 );\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F),("vertexUV",V2F)], slotUniforms = fromList [("MVP",M44F),("Time",Float)], slotPrimitive = Triangles, slotPrograms = [0,1]}], streams = [], commands = [SetRenderTarget 1,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 1.0 0.0 0.0 1.0)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0,SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 1.0 0.0 0.0 1.0)}],SetProgram 1,SetTexture 0 1,SetSamplerUniform "x0" 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file
diff --git a/testdata/accept/helloWorld.lc b/testdata/accept/helloWorld.lc
index f70fb29d..f1589c12 100644
--- a/testdata/accept/helloWorld.lc
+++ b/testdata/accept/helloWorld.lc
@@ -9,7 +9,7 @@ makeFrame (projmat :: Mat 4 4 Float)
9 & rasterizePrimitives (TriangleCtx CullNone PolygonFill NoOffset LastVertex) Smooth 9 & rasterizePrimitives (TriangleCtx CullNone PolygonFill NoOffset LastVertex) Smooth
10 & filterFragments (\_ -> True) 10 & filterFragments (\_ -> True)
11 & mapFragments (\x -> x) 11 & mapFragments (\x -> x)
12 & accumulateWith (DepthOp Less True, ColorOp NoBlending (V4 True True True True)) 12 & accumulateWith (defaultFragOp @(Depth Float) @_{-DepthOp Less True-}, ColorOp NoBlending (V4 True True True True))
13 13
14main = renderFrame $ 14main = renderFrame $
15 makeFrame (Uniform "MVP") 15 makeFrame (Uniform "MVP")
diff --git a/testdata/accept/helloWorld.out b/testdata/accept/helloWorld.out
index 534989f4..bdc2bd74 100644
--- a/testdata/accept/helloWorld.out
+++ b/testdata/accept/helloWorld.out
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("w1",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 w1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = w1;\ngl_Position = ( ( MVP ) * ( w1 ) ) * ( vec4 ( 0.5,0.5,0.5,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nif (!(true)) discard;\nf0 = v0;\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F)], slotUniforms = fromList [("MVP",M44F)], slotPrimitive = Triangles, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.5 1.0)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("u1",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 u1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = u1;\ngl_Position = ( ( MVP ) * ( u1 ) ) * ( vec4 ( 0.5,0.5,0.5,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nif (!(true)) discard;\nf0 = v0;\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F)], slotUniforms = fromList [("MVP",M44F)], slotPrimitive = Triangles, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.5 1.0)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file
diff --git a/testdata/accept/line01.out b/testdata/accept/line01.out
index e16b7f97..9f378460 100644
--- a/testdata/accept/line01.out
+++ b/testdata/accept/line01.out
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("q1",Parameter {name = "attribute_0", ty = V3F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec3 q1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( 0.0,0.0,0.0,1.0 );\ngl_Position = ( ( MVP ) * ( vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( vec4 ( 0.5,0.5,0.5,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"}], slots = [], streams = [StreamData {streamData = fromList [("attribute_0",VFloatArray [-2.0,0.0,0.0,-1.0,0.0,0.0,-1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,2.0,0.0,0.0,2.0,0.0,0.0,3.0,0.0,0.0])], streamType = fromList [("attribute_0",V3F)], streamPrimitive = Lines, streamPrograms = [0]}], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.5 1.0)}],SetProgram 0,SetRasterContext (LineCtx 1.0 LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderStream 0]} \ No newline at end of file Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("o1",Parameter {name = "attribute_0", ty = V3F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec3 o1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( 0.0,0.0,0.0,1.0 );\ngl_Position = ( ( MVP ) * ( vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( vec4 ( 0.5,0.5,0.5,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"}], slots = [], streams = [StreamData {streamData = fromList [("attribute_0",VFloatArray [-2.0,0.0,0.0,-1.0,0.0,0.0,-1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,2.0,0.0,0.0,2.0,0.0,0.0,3.0,0.0,0.0])], streamType = fromList [("attribute_0",V3F)], streamPrimitive = Lines, streamPrograms = [0]}], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.5 1.0)}],SetProgram 0,SetRasterContext (LineCtx 1.0 LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderStream 0]} \ No newline at end of file
diff --git a/testdata/accept/point01.out b/testdata/accept/point01.out
index 81c55bc7..53e3962a 100644
--- a/testdata/accept/point01.out
+++ b/testdata/accept/point01.out
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("a2",Parameter {name = "attribute_0", ty = V3F}),("b2",Parameter {name = "attribute_1", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec3 a2 ;\nin vec4 b2 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = b2;\ngl_Position = ( ( MVP ) * ( vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( vec4 ( 0.5,0.5,0.5,1.0 ) );\ngl_PointSize = 30.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"}], slots = [], streams = [StreamData {streamData = fromList [("attribute_0",VFloatArray [-2.0,0.0,0.0,-1.0,0.0,0.0,-1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,2.0,0.0,0.0,2.0,0.0,0.0,3.0,0.0,0.0]),("attribute_1",VFloatArray [1.0,0.0,0.0,1.0,1.0,0.0,0.0,1.0,1.0,0.0,0.0,1.0,1.0,0.0,0.0,1.0,1.0,0.0,0.0,1.0,1.0,0.0,0.0,1.0,1.0,0.0,0.0,1.0,1.0,0.0,0.0,1.0,1.0,0.0,0.0,1.0,1.0,0.0,0.0,1.0])], streamType = fromList [("attribute_0",V3F),("attribute_1",V4F)], streamPrimitive = Points, streamPrograms = [0]}], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.5 1.0)}],SetProgram 0,SetRasterContext (PointCtx ProgramPointSize 1.0 LowerLeft),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderStream 0]} \ No newline at end of file Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("y1",Parameter {name = "attribute_0", ty = V3F}),("z1",Parameter {name = "attribute_1", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec3 y1 ;\nin vec4 z1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = z1;\ngl_Position = ( ( MVP ) * ( vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( vec4 ( 0.5,0.5,0.5,1.0 ) );\ngl_PointSize = 30.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"}], slots = [], streams = [StreamData {streamData = fromList [("attribute_0",VFloatArray [-2.0,0.0,0.0,-1.0,0.0,0.0,-1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,2.0,0.0,0.0,2.0,0.0,0.0,3.0,0.0,0.0]),("attribute_1",VFloatArray [1.0,0.0,0.0,1.0,1.0,0.0,0.0,1.0,1.0,0.0,0.0,1.0,1.0,0.0,0.0,1.0,1.0,0.0,0.0,1.0,1.0,0.0,0.0,1.0,1.0,0.0,0.0,1.0,1.0,0.0,0.0,1.0,1.0,0.0,0.0,1.0,1.0,0.0,0.0,1.0])], streamType = fromList [("attribute_0",V3F),("attribute_1",V4F)], streamPrimitive = Points, streamPrograms = [0]}], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.5 1.0)}],SetProgram 0,SetRasterContext (PointCtx ProgramPointSize 1.0 LowerLeft),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderStream 0]} \ No newline at end of file
diff --git a/testdata/accept/record01.out b/testdata/accept/record01.out
index f1ef2374..3a412ffe 100644
--- a/testdata/accept/record01.out
+++ b/testdata/accept/record01.out
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("a2",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 a2 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = a2;\ngl_Position = ( MVP ) * ( a2 );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v0 ) * ( vec4 ( 1.0,0.4,0.0,0.2 ) );\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F)], slotUniforms = fromList [("MVP",M44F)], slotPrimitive = Triangles, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.5 0.0 0.4 1.0)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset FirstVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp (Blend {colorEqSrc = FuncAdd, alphaEqSrc = FuncAdd, colorFSrc = SrcAlpha, colorFDst = OneMinusSrcAlpha, alphaFSrc = SrcAlpha, alphaFDst = OneMinusSrcAlpha, color = V4 1.0 1.0 1.0 1.0}) (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("y1",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 y1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = y1;\ngl_Position = ( MVP ) * ( y1 );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v0 ) * ( vec4 ( 1.0,0.4,0.0,0.2 ) );\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F)], slotUniforms = fromList [("MVP",M44F)], slotPrimitive = Triangles, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.5 0.0 0.4 1.0)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset FirstVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp (Blend {colorEqSrc = FuncAdd, alphaEqSrc = FuncAdd, colorFSrc = SrcAlpha, colorFDst = OneMinusSrcAlpha, alphaFSrc = SrcAlpha, alphaFDst = OneMinusSrcAlpha, color = V4 1.0 1.0 1.0 1.0}) (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file
diff --git a/testdata/accept/recursivetexture02.out b/testdata/accept/recursivetexture02.out
index 0354f8a1..0b19aebc 100644
--- a/testdata/accept/recursivetexture02.out
+++ b/testdata/accept/recursivetexture02.out
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [TextureDescriptor {textureType = Texture2D (FloatT Red) 1, textureSize = VV2U (V2 1024 768), textureSemantic = Depth, textureSampler = SamplerDescriptor {samplerWrapS = Repeat, samplerWrapT = Nothing, samplerWrapR = Nothing, samplerMinFilter = Linear, samplerMagFilter = Linear, samplerBorderColor = VV4F (V4 0.0 0.0 0.0 1.0), samplerMinLod = Nothing, samplerMaxLod = Nothing, samplerLodBias = 0.0, samplerCompareFunc = Nothing}, textureBaseLevel = 0, textureMaxLevel = 0},TextureDescriptor {textureType = Texture2D (FloatT RGBA) 1, textureSize = VV2U (V2 1024 768), textureSemantic = Color, textureSampler = SamplerDescriptor {samplerWrapS = Repeat, samplerWrapT = Nothing, samplerWrapR = Nothing, samplerMinFilter = Linear, samplerMagFilter = Linear, samplerBorderColor = VV4F (V4 0.0 0.0 0.0 1.0), samplerMinLod = Nothing, samplerMaxLod = Nothing, samplerLodBias = 0.0, samplerCompareFunc = Nothing}, textureBaseLevel = 0, textureMaxLevel = 0},TextureDescriptor {textureType = Texture2D (FloatT Red) 1, textureSize = VV2U (V2 1024 768), textureSemantic = Depth, textureSampler = SamplerDescriptor {samplerWrapS = Repeat, samplerWrapT = Nothing, samplerWrapR = Nothing, samplerMinFilter = Linear, samplerMagFilter = Linear, samplerBorderColor = VV4F (V4 0.0 0.0 0.0 1.0), samplerMinLod = Nothing, samplerMaxLod = Nothing, samplerLodBias = 0.0, samplerCompareFunc = Nothing}, textureBaseLevel = 0, textureMaxLevel = 0},TextureDescriptor {textureType = Texture2D (FloatT RGBA) 1, textureSize = VV2U (V2 1024 768), textureSemantic = Color, textureSampler = SamplerDescriptor {samplerWrapS = Repeat, samplerWrapT = Nothing, samplerWrapR = Nothing, samplerMinFilter = Linear, samplerMagFilter = Linear, samplerBorderColor = VV4F (V4 0.0 0.0 0.0 1.0), samplerMinLod = Nothing, samplerMaxLod = Nothing, samplerLodBias = 0.0, samplerCompareFunc = Nothing}, textureBaseLevel = 0, textureMaxLevel = 0},TextureDescriptor {textureType = Texture2D (FloatT Red) 1, textureSize = VV2U (V2 1024 768), textureSemantic = Depth, textureSampler = SamplerDescriptor {samplerWrapS = Repeat, samplerWrapT = Nothing, samplerWrapR = Nothing, samplerMinFilter = Linear, samplerMagFilter = Linear, samplerBorderColor = VV4F (V4 0.0 0.0 0.0 1.0), samplerMinLod = Nothing, samplerMaxLod = Nothing, samplerLodBias = 0.0, samplerCompareFunc = Nothing}, textureBaseLevel = 0, textureMaxLevel = 0},TextureDescriptor {textureType = Texture2D (FloatT RGBA) 1, textureSize = VV2U (V2 1024 768), textureSemantic = Color, textureSampler = SamplerDescriptor {samplerWrapS = Repeat, samplerWrapT = Nothing, samplerWrapR = Nothing, samplerMinFilter = Linear, samplerMagFilter = Linear, samplerBorderColor = VV4F (V4 0.0 0.0 0.0 1.0), samplerMinLod = Nothing, samplerMaxLod = Nothing, samplerLodBias = 0.0, samplerCompareFunc = Nothing}, textureBaseLevel = 0, textureMaxLevel = 0},TextureDescriptor {textureType = Texture2D (FloatT Red) 1, textureSize = VV2U (V2 1024 768), textureSemantic = Depth, textureSampler = SamplerDescriptor {samplerWrapS = Repeat, samplerWrapT = Nothing, samplerWrapR = Nothing, samplerMinFilter = Linear, samplerMagFilter = Linear, samplerBorderColor = VV4F (V4 0.0 0.0 0.0 1.0), samplerMinLod = Nothing, samplerMaxLod = Nothing, samplerLodBias = 0.0, samplerCompareFunc = Nothing}, textureBaseLevel = 0, textureMaxLevel = 0},TextureDescriptor {textureType = Texture2D (FloatT RGBA) 1, textureSize = VV2U (V2 1024 768), textureSemantic = Color, textureSampler = SamplerDescriptor {samplerWrapS = Repeat, samplerWrapT = Nothing, samplerWrapR = Nothing, samplerMinFilter = Linear, samplerMagFilter = Linear, samplerBorderColor = VV4F (V4 0.0 0.0 0.0 1.0), samplerMinLod = Nothing, samplerMaxLod = Nothing, samplerLodBias = 0.0, samplerCompareFunc = Nothing}, textureBaseLevel = 0, textureMaxLevel = 0},TextureDescriptor {textureType = Texture2D (FloatT Red) 1, textureSize = VV2U (V2 1024 768), textureSemantic = Depth, textureSampler = SamplerDescriptor {samplerWrapS = Repeat, samplerWrapT = Nothing, samplerWrapR = Nothing, samplerMinFilter = Linear, samplerMagFilter = Linear, samplerBorderColor = VV4F (V4 0.0 0.0 0.0 1.0), samplerMinLod = Nothing, samplerMaxLod = Nothing, samplerLodBias = 0.0, samplerCompareFunc = Nothing}, textureBaseLevel = 0, textureMaxLevel = 0},TextureDescriptor {textureType = Texture2D (FloatT RGBA) 1, textureSize = VV2U (V2 1024 768), textureSemantic = Color, textureSampler = SamplerDescriptor {samplerWrapS = Repeat, samplerWrapT = Nothing, samplerWrapR = Nothing, samplerMinFilter = Linear, samplerMagFilter = Linear, samplerBorderColor = VV4F (V4 0.0 0.0 0.0 1.0), samplerMinLod = Nothing, samplerMaxLod = Nothing, samplerLodBias = 0.0, samplerCompareFunc = Nothing}, textureBaseLevel = 0, textureMaxLevel = 0}], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 0 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 1 0 Nothing)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 2 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 3 0 Nothing)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 4 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 5 0 Nothing)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 6 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 7 0 Nothing)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 8 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 9 0 Nothing)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("e7",Parameter {name = "position4", ty = V4F}),("f7",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 e7 ;\nin vec2 f7 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = f7;\ngl_Position = ( ( MVP ) * ( e7 ) ) * ( vec4 ( 0.5,0.5,0.5,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v0 ).xyxy;\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("i9",Parameter {name = "position4", ty = V4F}),("j9",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("a5",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 i9 ;\nin vec2 j9 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = j9;\ngl_Position = ( ( MVP ) * ( i9 ) ) * ( vec4 ( 1.0,1.0,1.0,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D a5 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( texture2D ( a5,v0 ) ) * ( vec4 ( 0.7,0.7,0.7,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("m11",Parameter {name = "position4", ty = V4F}),("n11",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("a4",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 m11 ;\nin vec2 n11 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = n11;\ngl_Position = ( ( MVP ) * ( m11 ) ) * ( vec4 ( 1.0,1.0,1.0,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D a4 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( texture2D ( a4,v0 ) ) * ( vec4 ( 0.7,0.7,0.7,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("q13",Parameter {name = "position4", ty = V4F}),("r13",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("a3",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 q13 ;\nin vec2 r13 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = r13;\ngl_Position = ( ( MVP ) * ( q13 ) ) * ( vec4 ( 1.0,1.0,1.0,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D a3 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( texture2D ( a3,v0 ) ) * ( vec4 ( 0.7,0.7,0.7,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("u15",Parameter {name = "position4", ty = V4F}),("v15",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("a2",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 u15 ;\nin vec2 v15 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = v15;\ngl_Position = ( ( MVP ) * ( u15 ) ) * ( vec4 ( 1.0,1.0,1.0,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D a2 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( texture2D ( a2,v0 ) ) * ( vec4 ( 0.7,0.7,0.7,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("y17",Parameter {name = "position4", ty = V4F}),("z17",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("a1",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 y17 ;\nin vec2 z17 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = z17;\ngl_Position = ( ( MVP ) * ( y17 ) ) * ( vec4 ( 1.0,1.0,1.0,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D a1 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( texture2D ( a1,v0 ) ) * ( vec4 ( 0.7,0.7,0.7,1.0 ) );\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F),("vertexUV",V2F)], slotUniforms = fromList [("MVP",M44F)], slotPrimitive = Triangles, slotPrograms = [0,1,2,3,4,5]}], streams = [], commands = [SetRenderTarget 5,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.5 0.0 0.0 1.0)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0,SetRenderTarget 4,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.5 0.0 0.0 1.0)}],SetProgram 1,SetTexture 0 9,SetSamplerUniform "a5" 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0,SetRenderTarget 3,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.5 0.0 0.0 1.0)}],SetProgram 2,SetTexture 0 7,SetSamplerUniform "a4" 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0,SetRenderTarget 2,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.5 0.0 0.0 1.0)}],SetProgram 3,SetTexture 0 5,SetSamplerUniform "a3" 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0,SetRenderTarget 1,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.5 0.0 0.0 1.0)}],SetProgram 4,SetTexture 0 3,SetSamplerUniform "a2" 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0,SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.5 0.0 0.0 1.0)}],SetProgram 5,SetTexture 0 1,SetSamplerUniform "a1" 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file Pipeline {backend = OpenGL33, textures = [TextureDescriptor {textureType = Texture2D (FloatT Red) 1, textureSize = VV2U (V2 1024 768), textureSemantic = Depth, textureSampler = SamplerDescriptor {samplerWrapS = Repeat, samplerWrapT = Nothing, samplerWrapR = Nothing, samplerMinFilter = Linear, samplerMagFilter = Linear, samplerBorderColor = VV4F (V4 0.0 0.0 0.0 1.0), samplerMinLod = Nothing, samplerMaxLod = Nothing, samplerLodBias = 0.0, samplerCompareFunc = Nothing}, textureBaseLevel = 0, textureMaxLevel = 0},TextureDescriptor {textureType = Texture2D (FloatT RGBA) 1, textureSize = VV2U (V2 1024 768), textureSemantic = Color, textureSampler = SamplerDescriptor {samplerWrapS = Repeat, samplerWrapT = Nothing, samplerWrapR = Nothing, samplerMinFilter = Linear, samplerMagFilter = Linear, samplerBorderColor = VV4F (V4 0.0 0.0 0.0 1.0), samplerMinLod = Nothing, samplerMaxLod = Nothing, samplerLodBias = 0.0, samplerCompareFunc = Nothing}, textureBaseLevel = 0, textureMaxLevel = 0},TextureDescriptor {textureType = Texture2D (FloatT Red) 1, textureSize = VV2U (V2 1024 768), textureSemantic = Depth, textureSampler = SamplerDescriptor {samplerWrapS = Repeat, samplerWrapT = Nothing, samplerWrapR = Nothing, samplerMinFilter = Linear, samplerMagFilter = Linear, samplerBorderColor = VV4F (V4 0.0 0.0 0.0 1.0), samplerMinLod = Nothing, samplerMaxLod = Nothing, samplerLodBias = 0.0, samplerCompareFunc = Nothing}, textureBaseLevel = 0, textureMaxLevel = 0},TextureDescriptor {textureType = Texture2D (FloatT RGBA) 1, textureSize = VV2U (V2 1024 768), textureSemantic = Color, textureSampler = SamplerDescriptor {samplerWrapS = Repeat, samplerWrapT = Nothing, samplerWrapR = Nothing, samplerMinFilter = Linear, samplerMagFilter = Linear, samplerBorderColor = VV4F (V4 0.0 0.0 0.0 1.0), samplerMinLod = Nothing, samplerMaxLod = Nothing, samplerLodBias = 0.0, samplerCompareFunc = Nothing}, textureBaseLevel = 0, textureMaxLevel = 0},TextureDescriptor {textureType = Texture2D (FloatT Red) 1, textureSize = VV2U (V2 1024 768), textureSemantic = Depth, textureSampler = SamplerDescriptor {samplerWrapS = Repeat, samplerWrapT = Nothing, samplerWrapR = Nothing, samplerMinFilter = Linear, samplerMagFilter = Linear, samplerBorderColor = VV4F (V4 0.0 0.0 0.0 1.0), samplerMinLod = Nothing, samplerMaxLod = Nothing, samplerLodBias = 0.0, samplerCompareFunc = Nothing}, textureBaseLevel = 0, textureMaxLevel = 0},TextureDescriptor {textureType = Texture2D (FloatT RGBA) 1, textureSize = VV2U (V2 1024 768), textureSemantic = Color, textureSampler = SamplerDescriptor {samplerWrapS = Repeat, samplerWrapT = Nothing, samplerWrapR = Nothing, samplerMinFilter = Linear, samplerMagFilter = Linear, samplerBorderColor = VV4F (V4 0.0 0.0 0.0 1.0), samplerMinLod = Nothing, samplerMaxLod = Nothing, samplerLodBias = 0.0, samplerCompareFunc = Nothing}, textureBaseLevel = 0, textureMaxLevel = 0},TextureDescriptor {textureType = Texture2D (FloatT Red) 1, textureSize = VV2U (V2 1024 768), textureSemantic = Depth, textureSampler = SamplerDescriptor {samplerWrapS = Repeat, samplerWrapT = Nothing, samplerWrapR = Nothing, samplerMinFilter = Linear, samplerMagFilter = Linear, samplerBorderColor = VV4F (V4 0.0 0.0 0.0 1.0), samplerMinLod = Nothing, samplerMaxLod = Nothing, samplerLodBias = 0.0, samplerCompareFunc = Nothing}, textureBaseLevel = 0, textureMaxLevel = 0},TextureDescriptor {textureType = Texture2D (FloatT RGBA) 1, textureSize = VV2U (V2 1024 768), textureSemantic = Color, textureSampler = SamplerDescriptor {samplerWrapS = Repeat, samplerWrapT = Nothing, samplerWrapR = Nothing, samplerMinFilter = Linear, samplerMagFilter = Linear, samplerBorderColor = VV4F (V4 0.0 0.0 0.0 1.0), samplerMinLod = Nothing, samplerMaxLod = Nothing, samplerLodBias = 0.0, samplerCompareFunc = Nothing}, textureBaseLevel = 0, textureMaxLevel = 0},TextureDescriptor {textureType = Texture2D (FloatT Red) 1, textureSize = VV2U (V2 1024 768), textureSemantic = Depth, textureSampler = SamplerDescriptor {samplerWrapS = Repeat, samplerWrapT = Nothing, samplerWrapR = Nothing, samplerMinFilter = Linear, samplerMagFilter = Linear, samplerBorderColor = VV4F (V4 0.0 0.0 0.0 1.0), samplerMinLod = Nothing, samplerMaxLod = Nothing, samplerLodBias = 0.0, samplerCompareFunc = Nothing}, textureBaseLevel = 0, textureMaxLevel = 0},TextureDescriptor {textureType = Texture2D (FloatT RGBA) 1, textureSize = VV2U (V2 1024 768), textureSemantic = Color, textureSampler = SamplerDescriptor {samplerWrapS = Repeat, samplerWrapT = Nothing, samplerWrapR = Nothing, samplerMinFilter = Linear, samplerMagFilter = Linear, samplerBorderColor = VV4F (V4 0.0 0.0 0.0 1.0), samplerMinLod = Nothing, samplerMaxLod = Nothing, samplerLodBias = 0.0, samplerCompareFunc = Nothing}, textureBaseLevel = 0, textureMaxLevel = 0}], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 0 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 1 0 Nothing)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 2 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 3 0 Nothing)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 4 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 5 0 Nothing)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 6 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 7 0 Nothing)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 8 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 9 0 Nothing)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("s6",Parameter {name = "position4", ty = V4F}),("t6",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 s6 ;\nin vec2 t6 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = t6;\ngl_Position = ( ( MVP ) * ( s6 ) ) * ( vec4 ( 0.5,0.5,0.5,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v0 ).xyxy;\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("w8",Parameter {name = "position4", ty = V4F}),("x8",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("q4",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 w8 ;\nin vec2 x8 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = x8;\ngl_Position = ( ( MVP ) * ( w8 ) ) * ( vec4 ( 1.0,1.0,1.0,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D q4 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( texture2D ( q4,v0 ) ) * ( vec4 ( 0.7,0.7,0.7,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("a11",Parameter {name = "position4", ty = V4F}),("b11",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("s3",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 a11 ;\nin vec2 b11 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = b11;\ngl_Position = ( ( MVP ) * ( a11 ) ) * ( vec4 ( 1.0,1.0,1.0,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D s3 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( texture2D ( s3,v0 ) ) * ( vec4 ( 0.7,0.7,0.7,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("e13",Parameter {name = "position4", ty = V4F}),("f13",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("u2",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 e13 ;\nin vec2 f13 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = f13;\ngl_Position = ( ( MVP ) * ( e13 ) ) * ( vec4 ( 1.0,1.0,1.0,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D u2 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( texture2D ( u2,v0 ) ) * ( vec4 ( 0.7,0.7,0.7,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("i15",Parameter {name = "position4", ty = V4F}),("j15",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("w1",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 i15 ;\nin vec2 j15 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = j15;\ngl_Position = ( ( MVP ) * ( i15 ) ) * ( vec4 ( 1.0,1.0,1.0,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D w1 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( texture2D ( w1,v0 ) ) * ( vec4 ( 0.7,0.7,0.7,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("m17",Parameter {name = "position4", ty = V4F}),("n17",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("y0",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 m17 ;\nin vec2 n17 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = n17;\ngl_Position = ( ( MVP ) * ( m17 ) ) * ( vec4 ( 1.0,1.0,1.0,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D y0 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( texture2D ( y0,v0 ) ) * ( vec4 ( 0.7,0.7,0.7,1.0 ) );\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F),("vertexUV",V2F)], slotUniforms = fromList [("MVP",M44F)], slotPrimitive = Triangles, slotPrograms = [0,1,2,3,4,5]}], streams = [], commands = [SetRenderTarget 5,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.5 0.0 0.0 1.0)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0,SetRenderTarget 4,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.5 0.0 0.0 1.0)}],SetProgram 1,SetTexture 0 9,SetSamplerUniform "q4" 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0,SetRenderTarget 3,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.5 0.0 0.0 1.0)}],SetProgram 2,SetTexture 0 7,SetSamplerUniform "s3" 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0,SetRenderTarget 2,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.5 0.0 0.0 1.0)}],SetProgram 3,SetTexture 0 5,SetSamplerUniform "u2" 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0,SetRenderTarget 1,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.5 0.0 0.0 1.0)}],SetProgram 4,SetTexture 0 3,SetSamplerUniform "w1" 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0,SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.5 0.0 0.0 1.0)}],SetProgram 5,SetTexture 0 1,SetSamplerUniform "y0" 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file
diff --git a/testdata/accept/reduce01.out b/testdata/accept/reduce01.out
index 2bebe8a7..ffb555de 100644
--- a/testdata/accept/reduce01.out
+++ b/testdata/accept/reduce01.out
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [], programStreams = fromList [("o1",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nin vec4 o1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = o1;\ngl_Position = o1;\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F)], slotUniforms = fromList [], slotPrimitive = Triangles, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.4 1.0)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [], programStreams = fromList [("m1",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nin vec4 m1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = m1;\ngl_Position = m1;\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F)], slotUniforms = fromList [], slotPrimitive = Triangles, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.4 1.0)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file
diff --git a/testdata/accept/reduce05.out b/testdata/accept/reduce05.out
index e2650c28..869abcf2 100644
--- a/testdata/accept/reduce05.out
+++ b/testdata/accept/reduce05.out
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [], programStreams = fromList [("p1",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nin vec4 p1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = p1;\ngl_Position = p1;\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = vec4 ( 1.0,0.0,0.0,1.0 );\n}\n"},Program {programUniforms = fromList [], programStreams = fromList [("i3",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nin vec4 i3 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = i3;\ngl_Position = i3;\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = vec4 ( 0.0,1.0,0.0,1.0 );\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F)], slotUniforms = fromList [], slotPrimitive = Triangles, slotPrograms = [0,1]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 1.0 1.0)}],SetProgram 1,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [ColorOp NoBlending (VV4B (V4 False True False False))]}),RenderSlot 0,SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [ColorOp NoBlending (VV4B (V4 True False False False))]}),RenderSlot 0]} \ No newline at end of file Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [], programStreams = fromList [("n1",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nin vec4 n1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = n1;\ngl_Position = n1;\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = vec4 ( 1.0,0.0,0.0,1.0 );\n}\n"},Program {programUniforms = fromList [], programStreams = fromList [("e3",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nin vec4 e3 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = e3;\ngl_Position = e3;\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = vec4 ( 0.0,1.0,0.0,1.0 );\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F)], slotUniforms = fromList [], slotPrimitive = Triangles, slotPrograms = [0,1]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 1.0 1.0)}],SetProgram 1,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [ColorOp NoBlending (VV4B (V4 False True False False))]}),RenderSlot 0,SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [ColorOp NoBlending (VV4B (V4 True False False False))]}),RenderSlot 0]} \ No newline at end of file
diff --git a/testdata/accept/simple02.out b/testdata/accept/simple02.out
index f1ef2374..3a412ffe 100644
--- a/testdata/accept/simple02.out
+++ b/testdata/accept/simple02.out
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("a2",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 a2 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = a2;\ngl_Position = ( MVP ) * ( a2 );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v0 ) * ( vec4 ( 1.0,0.4,0.0,0.2 ) );\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F)], slotUniforms = fromList [("MVP",M44F)], slotPrimitive = Triangles, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.5 0.0 0.4 1.0)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset FirstVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp (Blend {colorEqSrc = FuncAdd, alphaEqSrc = FuncAdd, colorFSrc = SrcAlpha, colorFDst = OneMinusSrcAlpha, alphaFSrc = SrcAlpha, alphaFDst = OneMinusSrcAlpha, color = V4 1.0 1.0 1.0 1.0}) (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("y1",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 y1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = y1;\ngl_Position = ( MVP ) * ( y1 );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( v0 ) * ( vec4 ( 1.0,0.4,0.0,0.2 ) );\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F)], slotUniforms = fromList [("MVP",M44F)], slotPrimitive = Triangles, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.5 0.0 0.4 1.0)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset FirstVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp (Blend {colorEqSrc = FuncAdd, alphaEqSrc = FuncAdd, colorFSrc = SrcAlpha, colorFDst = OneMinusSrcAlpha, alphaFSrc = SrcAlpha, alphaFDst = OneMinusSrcAlpha, color = V4 1.0 1.0 1.0 1.0}) (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file
diff --git a/testdata/accept/simple03.out b/testdata/accept/simple03.out
index 3977a999..f48f39a9 100644
--- a/testdata/accept/simple03.out
+++ b/testdata/accept/simple03.out
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("viewProj",M44F)], programStreams = fromList [("b2",Parameter {name = "position", ty = V3F}),("c2",Parameter {name = "color", ty = V3F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 viewProj ;\nin vec3 b2 ;\nin vec3 c2 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( 0.0,0.0,0.0,1.0 );\ngl_Position = ( viewProj ) * ( vec4 ( 0.0,0.0,0.0,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = vec4 ( 1.0,1.0,1.0,1.0 );\n}\n"},Program {programUniforms = fromList [("viewProj",M44F)], programStreams = fromList [("o4",Parameter {name = "position", ty = V3F}),("p4",Parameter {name = "color", ty = V3F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 viewProj ;\nin vec3 o4 ;\nin vec3 p4 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( 0.0,0.0,0.0,1.0 );\ngl_Position = ( viewProj ) * ( vec4 ( 0.0,0.0,0.0,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"}], slots = [Slot {slotName = "missing shader", slotStreams = fromList [("color",V3F),("position",V3F)], slotUniforms = fromList [("viewProj",M44F)], slotPrimitive = Triangles, slotPrograms = [0,1]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.4 1.0)}],SetProgram 1,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset FirstVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0,SetProgram 0,SetRasterContext (TriangleCtx CullNone (PolygonLine 20.0) (Offset (-1.0) 0.0) FirstVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Lequal True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("viewProj",M44F)], programStreams = fromList [("a2",Parameter {name = "color", ty = V3F}),("z1",Parameter {name = "position", ty = V3F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 viewProj ;\nin vec3 z1 ;\nin vec3 a2 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( 0.0,0.0,0.0,1.0 );\ngl_Position = ( viewProj ) * ( vec4 ( 0.0,0.0,0.0,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = vec4 ( 1.0,1.0,1.0,1.0 );\n}\n"},Program {programUniforms = fromList [("viewProj",M44F)], programStreams = fromList [("k4",Parameter {name = "position", ty = V3F}),("l4",Parameter {name = "color", ty = V3F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 viewProj ;\nin vec3 k4 ;\nin vec3 l4 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( 0.0,0.0,0.0,1.0 );\ngl_Position = ( viewProj ) * ( vec4 ( 0.0,0.0,0.0,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"}], slots = [Slot {slotName = "missing shader", slotStreams = fromList [("color",V3F),("position",V3F)], slotUniforms = fromList [("viewProj",M44F)], slotPrimitive = Triangles, slotPrograms = [0,1]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.4 1.0)}],SetProgram 1,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset FirstVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0,SetProgram 0,SetRasterContext (TriangleCtx CullNone (PolygonLine 20.0) (Offset (-1.0) 0.0) FirstVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Lequal True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file
diff --git a/testdata/accept/texture01.out b/testdata/accept/texture01.out
index 1fb8fb0b..bf4e3a19 100644
--- a/testdata/accept/texture01.out
+++ b/testdata/accept/texture01.out
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F),("diffuse",FTexture2D)], programStreams = fromList [("b2",Parameter {name = "position4", ty = V4F}),("c2",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("diffuse",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 b2 ;\nin vec2 c2 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = c2;\ngl_Position = ( ( MVP ) * ( b2 ) ) * ( vec4 ( 0.5,0.5,0.5,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D diffuse ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = texture2D ( diffuse,v0 );\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F),("vertexUV",V2F)], slotUniforms = fromList [("MVP",M44F),("diffuse",FTexture2D)], slotPrimitive = Triangles, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 1.0 0.0 0.0 1.0)}],SetProgram 0,SetSamplerUniform "diffuse" 1,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F),("diffuse",FTexture2D)], programStreams = fromList [("a2",Parameter {name = "vertexUV", ty = V2F}),("z1",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [("diffuse",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 z1 ;\nin vec2 a2 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = a2;\ngl_Position = ( ( MVP ) * ( z1 ) ) * ( vec4 ( 0.5,0.5,0.5,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D diffuse ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = texture2D ( diffuse,v0 );\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F),("vertexUV",V2F)], slotUniforms = fromList [("MVP",M44F),("diffuse",FTexture2D)], slotPrimitive = Triangles, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 1.0 0.0 0.0 1.0)}],SetProgram 0,SetSamplerUniform "diffuse" 1,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file
diff --git a/testdata/accept/texture02.out b/testdata/accept/texture02.out
index c9f30f35..8c796b28 100644
--- a/testdata/accept/texture02.out
+++ b/testdata/accept/texture02.out
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [TextureDescriptor {textureType = Texture2D (FloatT Red) 1, textureSize = VV2U (V2 128 128), textureSemantic = Depth, textureSampler = SamplerDescriptor {samplerWrapS = Repeat, samplerWrapT = Nothing, samplerWrapR = Nothing, samplerMinFilter = Linear, samplerMagFilter = Linear, samplerBorderColor = VV4F (V4 0.0 0.0 0.0 1.0), samplerMinLod = Nothing, samplerMaxLod = Nothing, samplerLodBias = 0.0, samplerCompareFunc = Nothing}, textureBaseLevel = 0, textureMaxLevel = 0},TextureDescriptor {textureType = Texture2D (FloatT RGBA) 1, textureSize = VV2U (V2 128 128), textureSemantic = Color, textureSampler = SamplerDescriptor {samplerWrapS = Repeat, samplerWrapT = Nothing, samplerWrapR = Nothing, samplerMinFilter = Linear, samplerMagFilter = Linear, samplerBorderColor = VV4F (V4 0.0 0.0 0.0 1.0), samplerMinLod = Nothing, samplerMaxLod = Nothing, samplerLodBias = 0.0, samplerCompareFunc = Nothing}, textureBaseLevel = 0, textureMaxLevel = 0}], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 0 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 1 0 Nothing)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("p2",Parameter {name = "position4", ty = V4F}),("q2",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("z0",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 p2 ;\nin vec2 q2 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = q2;\ngl_Position = ( ( MVP ) * ( p2 ) ) * ( vec4 ( 0.5,0.5,0.5,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D z0 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = texture2D ( z0,v0 );\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F),("vertexUV",V2F)], slotUniforms = fromList [("MVP",M44F)], slotPrimitive = Triangles, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 1,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 1.0 1.0)}],SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 1.0 0.0 0.0 1.0)}],SetProgram 0,SetTexture 0 1,SetSamplerUniform "z0" 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file Pipeline {backend = OpenGL33, textures = [TextureDescriptor {textureType = Texture2D (FloatT Red) 1, textureSize = VV2U (V2 128 128), textureSemantic = Depth, textureSampler = SamplerDescriptor {samplerWrapS = Repeat, samplerWrapT = Nothing, samplerWrapR = Nothing, samplerMinFilter = Linear, samplerMagFilter = Linear, samplerBorderColor = VV4F (V4 0.0 0.0 0.0 1.0), samplerMinLod = Nothing, samplerMaxLod = Nothing, samplerLodBias = 0.0, samplerCompareFunc = Nothing}, textureBaseLevel = 0, textureMaxLevel = 0},TextureDescriptor {textureType = Texture2D (FloatT RGBA) 1, textureSize = VV2U (V2 128 128), textureSemantic = Color, textureSampler = SamplerDescriptor {samplerWrapS = Repeat, samplerWrapT = Nothing, samplerWrapR = Nothing, samplerMinFilter = Linear, samplerMagFilter = Linear, samplerBorderColor = VV4F (V4 0.0 0.0 0.0 1.0), samplerMinLod = Nothing, samplerMaxLod = Nothing, samplerLodBias = 0.0, samplerCompareFunc = Nothing}, textureBaseLevel = 0, textureMaxLevel = 0}], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 0 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 1 0 Nothing)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("n2",Parameter {name = "position4", ty = V4F}),("o2",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("x0",FTexture2D)], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 n2 ;\nin vec2 o2 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = o2;\ngl_Position = ( ( MVP ) * ( n2 ) ) * ( vec4 ( 0.5,0.5,0.5,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D x0 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = texture2D ( x0,v0 );\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F),("vertexUV",V2F)], slotUniforms = fromList [("MVP",M44F)], slotPrimitive = Triangles, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 1,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 1.0 1.0)}],SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 1.0 0.0 0.0 1.0)}],SetProgram 0,SetTexture 0 1,SetSamplerUniform "x0" 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file
diff --git a/testdata/accept/typeclass.out b/testdata/accept/typeclass.out
index a7b5cd32..81a36417 100644
--- a/testdata/accept/typeclass.out
+++ b/testdata/accept/typeclass.out
@@ -27,7 +27,8 @@ tooltips:
27./testdata/accept/typeclass.lc 19:7-19:9 {a} -> a->a -> a 27./testdata/accept/typeclass.lc 19:7-19:9 {a} -> a->a -> a
28./testdata/accept/typeclass.lc 24:10-28:23 V0->V1 28./testdata/accept/typeclass.lc 24:10-28:23 V0->V1
29./testdata/accept/typeclass.lc 24:10-28:23 V1 29./testdata/accept/typeclass.lc 24:10-28:23 V1
30./testdata/accept/typeclass.lc 24:10-24:12 V0 30./testdata/accept/typeclass.lc 24:10-28:23 V0->Type
31./testdata/accept/typeclass.lc 24:10-28:23 Type
31./testdata/accept/typeclass.lc 24:10-24:12 Type 32./testdata/accept/typeclass.lc 24:10-24:12 Type
32./testdata/accept/typeclass.lc 24:13-24:17 Type 33./testdata/accept/typeclass.lc 24:13-24:17 Type
33./testdata/accept/typeclass.lc 24:13-24:17 V1 34./testdata/accept/typeclass.lc 24:13-24:17 V1
@@ -35,7 +36,7 @@ tooltips:
35./testdata/accept/typeclass.lc 28:10-28:20 Type->Type 36./testdata/accept/typeclass.lc 28:10-28:20 Type->Type
36./testdata/accept/typeclass.lc 28:10-28:20 Type 37./testdata/accept/typeclass.lc 28:10-28:20 Type
37./testdata/accept/typeclass.lc 28:10-28:14 Type 38./testdata/accept/typeclass.lc 28:10-28:14 Type
38./testdata/accept/typeclass.lc 28:10-28:14 V3 39./testdata/accept/typeclass.lc 28:10-28:14 Type->Type
39./testdata/accept/typeclass.lc 28:18-28:20 Type 40./testdata/accept/typeclass.lc 28:18-28:20 Type
40./testdata/accept/typeclass.lc 28:22-28:23 Type 41./testdata/accept/typeclass.lc 28:22-28:23 Type
41./testdata/accept/typeclass.lc 19:7-19:9 Type->Type 42./testdata/accept/typeclass.lc 19:7-19:9 Type->Type
diff --git a/testdata/accept/uniformparam01.out b/testdata/accept/uniformparam01.out
index 2ae39310..2d0a5893 100644
--- a/testdata/accept/uniformparam01.out
+++ b/testdata/accept/uniformparam01.out
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("o1",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 o1 ;\nflat out vec4 v0 ;\nvoid main() {\nv0 = o1;\ngl_Position = ( MVP ) * ( o1 );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nflat in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F)], slotUniforms = fromList [("MVP",M44F)], slotPrimitive = Lines, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.5 0.0 0.4 1.0)}],SetProgram 0,SetRasterContext (LineCtx 1.0 LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("m1",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 m1 ;\nflat out vec4 v0 ;\nvoid main() {\nv0 = m1;\ngl_Position = ( MVP ) * ( m1 );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nflat in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F)], slotUniforms = fromList [("MVP",M44F)], slotPrimitive = Lines, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.5 0.0 0.4 1.0)}],SetProgram 0,SetRasterContext (LineCtx 1.0 LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file
diff --git a/testdata/accept/uniformparam02.out b/testdata/accept/uniformparam02.out
index aeb0f8f8..ed282f84 100644
--- a/testdata/accept/uniformparam02.out
+++ b/testdata/accept/uniformparam02.out
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)}]}], programs = [Program {programUniforms = fromList [], programStreams = fromList [("g1",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nin vec4 g1 ;\nflat out vec4 v0 ;\nvoid main() {\nv0 = g1;\ngl_Position = g1;\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nflat in vec4 v0 ;\nvoid main() {\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F)], slotUniforms = fromList [], slotPrimitive = Lines, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0}],SetProgram 0,SetRasterContext (LineCtx 1.0 LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less False]}),RenderSlot 0]} \ No newline at end of file Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)}]}], programs = [Program {programUniforms = fromList [], programStreams = fromList [("e1",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nin vec4 e1 ;\nflat out vec4 v0 ;\nvoid main() {\nv0 = e1;\ngl_Position = e1;\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nflat in vec4 v0 ;\nvoid main() {\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F)], slotUniforms = fromList [], slotPrimitive = Lines, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0}],SetProgram 0,SetRasterContext (LineCtx 1.0 LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less False]}),RenderSlot 0]} \ No newline at end of file
diff --git a/testdata/accept/uniformparam03.out b/testdata/accept/uniformparam03.out
index 2ae39310..2d0a5893 100644
--- a/testdata/accept/uniformparam03.out
+++ b/testdata/accept/uniformparam03.out
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("o1",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 o1 ;\nflat out vec4 v0 ;\nvoid main() {\nv0 = o1;\ngl_Position = ( MVP ) * ( o1 );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nflat in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F)], slotUniforms = fromList [("MVP",M44F)], slotPrimitive = Lines, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.5 0.0 0.4 1.0)}],SetProgram 0,SetRasterContext (LineCtx 1.0 LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("m1",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 m1 ;\nflat out vec4 v0 ;\nvoid main() {\nv0 = m1;\ngl_Position = ( MVP ) * ( m1 );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nflat in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F)], slotUniforms = fromList [("MVP",M44F)], slotPrimitive = Lines, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.5 0.0 0.4 1.0)}],SetProgram 0,SetRasterContext (LineCtx 1.0 LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]} \ No newline at end of file