summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lc/Builtins.lc38
-rw-r--r--src/LambdaCube/Compiler/CoreToIR.hs2
-rw-r--r--testdata/Builtins.out1655
-rw-r--r--testdata/Graphics.out2
-rw-r--r--testdata/HyperbolicParaboloic.out2
-rw-r--r--testdata/Hyperboloid.out2
-rw-r--r--testdata/NewStyle.out2
-rw-r--r--testdata/PrimReduce.out2
-rw-r--r--testdata/Spiral.out2
-rw-r--r--testdata/example06.out2
-rw-r--r--testdata/example07.out2
-rw-r--r--testdata/example08.out2
-rw-r--r--testdata/fetcharrays01.out2
-rw-r--r--testdata/fragment01.out2
-rw-r--r--testdata/fragment03swizzling.out2
-rw-r--r--testdata/fragment04ifthenelse.out2
-rw-r--r--testdata/fragment07let.out2
-rw-r--r--testdata/gfx02.out2
-rw-r--r--testdata/gfx03.out2
-rw-r--r--testdata/gfx04.out2
-rw-r--r--testdata/gfx05.out2
-rw-r--r--testdata/heartbeat01.out2
-rw-r--r--testdata/helloWorld.out2
-rw-r--r--testdata/line01.out2
-rw-r--r--testdata/point01.out2
-rw-r--r--testdata/recursivetexture01.out2
-rw-r--r--testdata/recursivetexture02.out2
-rw-r--r--testdata/reduce01.out2
-rw-r--r--testdata/reduce05.out2
-rw-r--r--testdata/simple02.out2
-rw-r--r--testdata/simple03.out2
-rw-r--r--testdata/texture01.out2
-rw-r--r--testdata/texture02.out2
-rw-r--r--testdata/uniformparam01.out2
-rw-r--r--testdata/uniformparam02.out2
-rw-r--r--testdata/uniformparam03.out2
36 files changed, 862 insertions, 899 deletions
diff --git a/lc/Builtins.lc b/lc/Builtins.lc
index aa0af3ff..f05e501a 100644
--- a/lc/Builtins.lc
+++ b/lc/Builtins.lc
@@ -372,22 +372,6 @@ mapPrimitives f = mapStream (mapPrimitive f)
372fetch s a t = fetch_ @a s t 372fetch s a t = fetch_ @a s t
373fetchArrays a t = fetchArrays_ @a t 373fetchArrays a t = fetchArrays_ @a t
374 374
375data DepthHandler = NoDepth | DefinedDepth
376{- todo: remove?
377type family AddSemantics (d :: DepthHandler) a where
378 AddSemantics 'NoDepth () = ()
379 AddSemantics 'NoDepth (a, b) = (Color a, Color b)
380 AddSemantics 'NoDepth (a, b, c) = (Color a, Color b, Color c)
381 AddSemantics 'NoDepth (a, b, c, d) = (Color a, Color b, Color c, Color d)
382 AddSemantics 'NoDepth (a, b, c, d, e) = (Color a, Color b, Color c, Color d, Color e)
383 AddSemantics 'NoDepth a = Color a -- TODO
384 AddSemantics 'DefinedDepth () = ()
385 AddSemantics 'DefinedDepth (a, b) = (Depth Float, Color a, Color b)
386 AddSemantics 'DefinedDepth (a, b, c) = (Depth Float, Color a, Color b, Color c)
387 AddSemantics 'DefinedDepth (a, b, c, d) = (Depth Float, Color a, Color b, Color c, Color d)
388-- AddSemantics 'DefinedDepth (a, b, c, d, e) = (Depth Float, Color a, Color b, Color c, Color d, Color e)
389 AddSemantics 'DefinedDepth a = (Depth Float, Color a) -- TODO
390-}
391type family RemSemantics a where 375type family RemSemantics a where
392 RemSemantics () = () 376 RemSemantics () = ()
393 RemSemantics (Color a) = a 377 RemSemantics (Color a) = a
@@ -400,34 +384,28 @@ type family RemSemantics a where
400 RemSemantics (Depth Float, Color a, Color b) = (a, b) 384 RemSemantics (Depth Float, Color a, Color b) = (a, b)
401 RemSemantics (Depth Float, Color a, Color b, Color c) = (a, b, c) 385 RemSemantics (Depth Float, Color a, Color b, Color c) = (a, b, c)
402 RemSemantics (Depth Float, Color a, Color b, Color c, Color d) = (a, b, c, d) 386 RemSemantics (Depth Float, Color a, Color b, Color c, Color d) = (a, b, c, d)
403-- RemSemantics 'DefinedDepth (a, b, c, d, e) = (Depth Float, Color a, Color b, Color c, Color d, Color e)
404 387
405 -- Render Operations 388 -- Render Operations
406data Fragment :: Nat -> DepthHandler -> Type -> Type 389data Fragment :: Nat -> Type -> Type
407 390
408type FragmentStream n a t = Stream (Fragment n a t) 391type FragmentStream n t = Stream (Fragment n t)
409 392
410customizeDepth :: (a -> Float) -> Fragment n _ a -> Fragment n DefinedDepth a 393customizeDepth :: (a -> Float) -> Fragment n a -> Fragment n a
411 394
412customizeDepths f = mapStream (customizeDepth f) 395customizeDepths f = mapStream (customizeDepth f)
413{- todo: remove?
414noDepth :: Fragment n _ a -> Fragment n NoDepth a
415
416noDepths = mapStream noDepth
417-}
418 396
419rasterize_ :: (b ~ InterpolatedType y, a ~ JoinTupleType (Vec 4 Float) b) 397rasterize_ :: (b ~ InterpolatedType y, a ~ JoinTupleType (Vec 4 Float) b)
420 => (a -> Float) -- point size 398 => (a -> Float) -- point size
421 -> y -- tuple of Smooth & Flat 399 -> y -- tuple of Smooth & Flat
422 -> RasterContext x 400 -> RasterContext x
423 -> Primitive x a -> FragmentStream 1 DefinedDepth b 401 -> Primitive x a -> FragmentStream 1 b
424 402
425filterFragment :: (a -> Bool) -> Fragment n _ a -> Bool 403filterFragment :: (a -> Bool) -> Fragment n a -> Bool
426 404
427filterFragments :: (a -> Bool) -> (FragmentStream n d a) -> (FragmentStream n d a) 405filterFragments :: (a -> Bool) -> (FragmentStream n a) -> (FragmentStream n a)
428filterFragments p = filterStream (filterFragment p) 406filterFragments p = filterStream (filterFragment p)
429 407
430mapFragment :: (a -> b) -> Fragment n d a -> Fragment n d b 408mapFragment :: (a -> b) -> Fragment n a -> Fragment n b
431 409
432mapFragments f = mapStream (mapFragment f) 410mapFragments f = mapStream (mapFragment f)
433 411
@@ -451,7 +429,7 @@ instance (DefaultFragOp a, DefaultFragOp b) => DefaultFragOps (FragmentOperation
451 (defaultFragOp @a @_, defaultFragOp @b @_) 429 (defaultFragOp @a @_, defaultFragOp @b @_)
452-} 430-}
453data FrameBuffer (n :: Nat) b where 431data FrameBuffer (n :: Nat) b where
454 Accumulate :: FragOps' b -> (FragmentStream n d (RemSemantics b)) -> FrameBuffer n b -> FrameBuffer n b 432 Accumulate :: FragOps' b -> (FragmentStream n (RemSemantics b)) -> FrameBuffer n b -> FrameBuffer n b
455 FrameBuffer :: (ValidFrameBuffer b, SameLayerCounts a, FrameBuffer n b ~ TFFrameBuffer a) => a -> FrameBuffer n b 433 FrameBuffer :: (ValidFrameBuffer b, SameLayerCounts a, FrameBuffer n b ~ TFFrameBuffer a) => a -> FrameBuffer n b
456 434
457accumulate ctx fshader fstr fb = Accumulate ctx (mapFragments fshader fstr) fb 435accumulate ctx fshader fstr fb = Accumulate ctx (mapFragments fshader fstr) fb
diff --git a/src/LambdaCube/Compiler/CoreToIR.hs b/src/LambdaCube/Compiler/CoreToIR.hs
index 3ef2e146..2a71dff7 100644
--- a/src/LambdaCube/Compiler/CoreToIR.hs
+++ b/src/LambdaCube/Compiler/CoreToIR.hs
@@ -138,7 +138,7 @@ getSlot x = error $ "getSlot: " ++ ppShow x
138 138
139getPrim (A1 "Stream" (A2 "Primitive" p _)) = p 139getPrim (A1 "Stream" (A2 "Primitive" p _)) = p
140getPrim' (A1 "Stream" (A2 "Primitive" _ a)) = a 140getPrim' (A1 "Stream" (A2 "Primitive" _ a)) = a
141getPrim'' (A1 "Stream" (A3 "Fragment" _ _ a)) = a 141getPrim'' (A1 "Stream" (A2 "Fragment" _ a)) = a
142 142
143addProgramToSlot :: IR.ProgramName -> IR.Command -> CG () 143addProgramToSlot :: IR.ProgramName -> IR.Command -> CG ()
144addProgramToSlot prgName (IR.RenderSlot slotName) = do 144addProgramToSlot prgName (IR.RenderSlot slotName) = do
diff --git a/testdata/Builtins.out b/testdata/Builtins.out
index 877414f4..38e5aa91 100644
--- a/testdata/Builtins.out
+++ b/testdata/Builtins.out
@@ -1249,344 +1249,479 @@ testdata/Builtins.lc 372:15-372:21 {a:'PrimitiveType} -> {b} -> {c:'Unit} -> 'S
1249testdata/Builtins.lc 372:1-372:6 {a} -> 'String -> c:'PrimitiveType -> a -> 'Stream ('Primitive c a) 1249testdata/Builtins.lc 372:1-372:6 {a} -> 'String -> c:'PrimitiveType -> a -> 'Stream ('Primitive c a)
1250testdata/Builtins.lc 373:19-373:31 {a:'PrimitiveType} -> {b} -> {c} -> {d:'Unit} -> {e : b ~ 'FTRepr' c} -> c -> 'Stream ('Primitive a b) 1250testdata/Builtins.lc 373:19-373:31 {a:'PrimitiveType} -> {b} -> {c} -> {d:'Unit} -> {e : b ~ 'FTRepr' c} -> c -> 'Stream ('Primitive a b)
1251testdata/Builtins.lc 373:1-373:12 {a} -> b:'PrimitiveType -> a -> 'Stream ('Primitive b ('FTRepr' a)) 1251testdata/Builtins.lc 373:1-373:12 {a} -> b:'PrimitiveType -> a -> 'Stream ('Primitive b ('FTRepr' a))
1252testdata/Builtins.lc 375:6-375:18 Type 1252testdata/Builtins.lc 376:23-386:82 Type->Type
1253testdata/Builtins.lc 375:21-375:28 'DepthHandler 1253testdata/Builtins.lc 376:23-386:82 Type
1254testdata/Builtins.lc 375:31-375:43 'DepthHandler 1254testdata/Builtins.lc 376:23-376:25 Type
1255testdata/Builtins.lc 392:23-402:82 Type->Type 1255testdata/Builtins.lc 377:25-386:82 Type
1256testdata/Builtins.lc 392:23-402:82 Type 1256testdata/Builtins.lc 377:25-377:26 Type
1257testdata/Builtins.lc 392:23-392:25 Type 1257testdata/Builtins.lc 378:19-386:82 Type
1258testdata/Builtins.lc 393:25-402:82 Type 1258testdata/Builtins.lc 378:39-378:45 Type -> Type->Type
1259testdata/Builtins.lc 393:25-393:26 Type 1259testdata/Builtins.lc 378:39-378:45 Type->Type
1260testdata/Builtins.lc 394:19-402:82 Type 1260testdata/Builtins.lc 378:39-378:45 Type
1261testdata/Builtins.lc 394:39-394:45 Type -> Type->Type 1261testdata/Builtins.lc 378:19-378:35 Type
1262testdata/Builtins.lc 394:39-394:45 Type->Type 1262testdata/Builtins.lc 379:19-386:82 Type
1263testdata/Builtins.lc 394:39-394:45 Type 1263testdata/Builtins.lc 379:48-384:58 Type -> Type -> Type->Type
1264testdata/Builtins.lc 394:19-394:35 Type 1264testdata/Builtins.lc 379:48-384:58 Type -> Type->Type
1265testdata/Builtins.lc 395:19-402:82 Type 1265testdata/Builtins.lc 379:48-384:58 Type->Type
1266testdata/Builtins.lc 395:48-400:58 Type -> Type -> Type->Type 1266testdata/Builtins.lc 379:48-384:58 Type
1267testdata/Builtins.lc 395:48-400:58 Type -> Type->Type 1267testdata/Builtins.lc 379:48-379:57 Type->Type
1268testdata/Builtins.lc 395:48-400:58 Type->Type 1268testdata/Builtins.lc 379:48-379:57 Type
1269testdata/Builtins.lc 395:48-400:58 Type 1269testdata/Builtins.lc 379:48-379:57 Type -> Type -> Type->Type
1270testdata/Builtins.lc 395:48-395:57 Type->Type 1270testdata/Builtins.lc 384:52-384:58 Type
1271testdata/Builtins.lc 395:48-395:57 Type 1271testdata/Builtins.lc 384:52-384:58 Type->Type
1272testdata/Builtins.lc 395:48-395:57 Type -> Type -> Type->Type 1272testdata/Builtins.lc 384:52-384:58 Type -> Type->Type
1273testdata/Builtins.lc 400:52-400:58 Type 1273testdata/Builtins.lc 379:19-379:44 Type
1274testdata/Builtins.lc 400:52-400:58 Type->Type 1274testdata/Builtins.lc 380:19-386:82 Type
1275testdata/Builtins.lc 400:52-400:58 Type -> Type->Type 1275testdata/Builtins.lc 380:57-385:70 Type -> Type -> Type -> Type->Type
1276testdata/Builtins.lc 395:19-395:44 Type 1276testdata/Builtins.lc 380:57-385:70 Type -> Type -> Type->Type
1277testdata/Builtins.lc 396:19-402:82 Type 1277testdata/Builtins.lc 380:57-385:70 Type -> Type->Type
1278testdata/Builtins.lc 396:57-401:70 Type -> Type -> Type -> Type->Type 1278testdata/Builtins.lc 380:57-385:70 Type->Type
1279testdata/Builtins.lc 396:57-401:70 Type -> Type -> Type->Type 1279testdata/Builtins.lc 380:57-385:70 Type
1280testdata/Builtins.lc 396:57-401:70 Type -> Type->Type 1280testdata/Builtins.lc 380:57-380:69 Type->Type
1281testdata/Builtins.lc 396:57-401:70 Type->Type 1281testdata/Builtins.lc 380:57-380:69 Type
1282testdata/Builtins.lc 396:57-401:70 Type 1282testdata/Builtins.lc 380:57-380:69 Type -> Type -> Type -> Type->Type
1283testdata/Builtins.lc 396:57-396:69 Type->Type 1283testdata/Builtins.lc 385:61-385:70 Type
1284testdata/Builtins.lc 396:57-396:69 Type 1284testdata/Builtins.lc 385:61-385:70 Type->Type
1285testdata/Builtins.lc 396:57-396:69 Type -> Type -> Type -> Type->Type 1285testdata/Builtins.lc 385:61-385:70 Type -> Type -> Type->Type
1286testdata/Builtins.lc 401:61-401:70 Type 1286testdata/Builtins.lc 380:19-380:53 Type
1287testdata/Builtins.lc 401:61-401:70 Type->Type 1287testdata/Builtins.lc 381:19-386:82 Type
1288testdata/Builtins.lc 401:61-401:70 Type -> Type -> Type->Type 1288testdata/Builtins.lc 381:66-386:82 Type -> Type -> Type -> Type -> Type->Type
1289testdata/Builtins.lc 396:19-396:53 Type 1289testdata/Builtins.lc 381:66-386:82 Type -> Type -> Type -> Type->Type
1290testdata/Builtins.lc 397:19-402:82 Type 1290testdata/Builtins.lc 381:66-386:82 Type -> Type -> Type->Type
1291testdata/Builtins.lc 397:66-402:82 Type -> Type -> Type -> Type -> Type->Type 1291testdata/Builtins.lc 381:66-386:82 Type -> Type->Type
1292testdata/Builtins.lc 397:66-402:82 Type -> Type -> Type -> Type->Type 1292testdata/Builtins.lc 381:66-386:82 Type->Type
1293testdata/Builtins.lc 397:66-402:82 Type -> Type -> Type->Type 1293testdata/Builtins.lc 381:66-386:82 Type
1294testdata/Builtins.lc 397:66-402:82 Type -> Type->Type 1294testdata/Builtins.lc 381:66-381:81 Type->Type
1295testdata/Builtins.lc 397:66-402:82 Type->Type 1295testdata/Builtins.lc 381:66-381:81 Type
1296testdata/Builtins.lc 397:66-402:82 Type 1296testdata/Builtins.lc 381:66-381:81 Type -> Type -> Type -> Type -> Type->Type
1297testdata/Builtins.lc 397:66-397:81 Type->Type 1297testdata/Builtins.lc 386:70-386:82 Type
1298testdata/Builtins.lc 397:66-397:81 Type 1298testdata/Builtins.lc 386:70-386:82 Type->Type
1299testdata/Builtins.lc 397:66-397:81 Type -> Type -> Type -> Type -> Type->Type 1299testdata/Builtins.lc 386:70-386:82 Type -> Type -> Type -> Type->Type
1300testdata/Builtins.lc 402:70-402:82 Type 1300testdata/Builtins.lc 381:19-381:62 Type
1301testdata/Builtins.lc 402:70-402:82 Type->Type 1301testdata/Builtins.lc 382:25-382:36 Type
1302testdata/Builtins.lc 402:70-402:82 Type -> Type -> Type -> Type->Type 1302testdata/Builtins.lc 382:34-382:36 Type->Type
1303testdata/Builtins.lc 397:19-397:62 Type 1303testdata/Builtins.lc 382:34-382:36 Type
1304testdata/Builtins.lc 398:25-398:36 Type 1304testdata/Builtins.lc 382:25-382:30 Type
1305testdata/Builtins.lc 398:34-398:36 Type->Type 1305testdata/Builtins.lc 376:5-376:17 Type->Type
1306testdata/Builtins.lc 398:34-398:36 Type 1306testdata/Builtins.lc 389:18-389:21 Type
1307testdata/Builtins.lc 398:25-398:30 Type 1307testdata/Builtins.lc 389:25-389:37 Type
1308testdata/Builtins.lc 392:5-392:17 Type->Type 1308testdata/Builtins.lc 389:25-389:29 Type
1309testdata/Builtins.lc 406:18-406:21 Type 1309testdata/Builtins.lc 389:33-389:37 Type
1310testdata/Builtins.lc 406:25-406:53 Type 1310testdata/Builtins.lc 389:6-389:14 'Nat -> Type->Type
1311testdata/Builtins.lc 406:25-406:37 Type 1311testdata/Builtins.lc 391:27-391:33 Type->Type
1312testdata/Builtins.lc 406:41-406:53 Type 1312testdata/Builtins.lc 391:35-391:47 Type
1313testdata/Builtins.lc 406:41-406:45 Type 1313testdata/Builtins.lc 391:35-391:43 'Nat -> Type->Type
1314testdata/Builtins.lc 406:49-406:53 Type 1314testdata/Builtins.lc 391:44-391:45 'Nat
1315testdata/Builtins.lc 406:6-406:14 'Nat -> 'DepthHandler -> Type->Type 1315testdata/Builtins.lc 391:44-391:45 V3
1316testdata/Builtins.lc 408:29-408:35 Type->Type 1316testdata/Builtins.lc 391:46-391:47 Type
1317testdata/Builtins.lc 408:37-408:51 Type 1317testdata/Builtins.lc 391:46-391:47 V1
1318testdata/Builtins.lc 408:37-408:45 'Nat -> 'DepthHandler -> Type->Type 1318testdata/Builtins.lc 391:6-391:20 'Nat -> Type->Type
1319testdata/Builtins.lc 408:46-408:47 'Nat 1319testdata/Builtins.lc 393:20-393:63 Type
1320testdata/Builtins.lc 408:46-408:47 V5 1320testdata/Builtins.lc 393:20-393:63 V3
1321testdata/Builtins.lc 408:48-408:49 'DepthHandler 1321testdata/Builtins.lc 393:25-393:30 Type
1322testdata/Builtins.lc 408:48-408:49 V3 1322testdata/Builtins.lc 393:35-393:43 'Nat -> Type->Type
1323testdata/Builtins.lc 408:50-408:51 Type 1323testdata/Builtins.lc 393:20-393:63 'Nat
1324testdata/Builtins.lc 408:50-408:51 V1 1324testdata/Builtins.lc 393:20-393:63 V2
1325testdata/Builtins.lc 408:6-408:20 'Nat -> 'DepthHandler -> Type->Type 1325testdata/Builtins.lc 393:51-393:59 'Nat -> Type->Type
1326testdata/Builtins.lc 410:20-410:78 Type 1326testdata/Builtins.lc 393:1-393:15 {a} -> {b:'Nat} -> a->'Float -> 'Fragment b a -> 'Fragment b a
1327testdata/Builtins.lc 410:20-410:78 V3 1327testdata/Builtins.lc 395:21-395:30 {a} -> {b} -> a->b -> 'Stream a -> 'Stream b
1328testdata/Builtins.lc 410:25-410:30 Type 1328testdata/Builtins.lc 395:32-395:46 V1->V1
1329testdata/Builtins.lc 410:35-410:43 'Nat -> 'DepthHandler -> Type->Type 1329testdata/Builtins.lc 395:32-395:46 {a} -> {b:'Nat} -> a->'Float -> 'Fragment b a -> 'Fragment b a
1330testdata/Builtins.lc 410:20-410:78 'Nat 1330testdata/Builtins.lc 395:1-395:16 {a} -> {b:'Nat} -> a->'Float -> 'Stream ('Fragment b a) -> 'Stream ('Fragment b a)
1331testdata/Builtins.lc 410:20-410:78 V2 1331testdata/Builtins.lc 397:21-401:55 Type
1332testdata/Builtins.lc 410:53-410:61 'Nat -> 'DepthHandler -> Type->Type 1332testdata/Builtins.lc 397:21-401:55 V7
1333testdata/Builtins.lc 410:64-410:76 'DepthHandler 1333testdata/Builtins.lc 397:25-397:41 Type->Type
1334testdata/Builtins.lc 410:1-410:15 {a:'DepthHandler} -> {b} -> {c:'Nat} -> b->'Float -> 'Fragment c a b -> 'Fragment c DefinedDepth b 1334testdata/Builtins.lc 397:21-401:55 V5
1335testdata/Builtins.lc 412:21-412:30 {a} -> {b} -> a->b -> 'Stream a -> 'Stream b 1335testdata/Builtins.lc 397:21-401:55 V4
1336testdata/Builtins.lc 412:32-412:46 V1->V1 1336testdata/Builtins.lc 397:49-397:62 Type -> Type->Type
1337testdata/Builtins.lc 412:32-412:46 {a:'DepthHandler} -> {b} -> {c:'Nat} -> b->'Float -> 'Fragment c a b -> 'Fragment c DefinedDepth b 1337testdata/Builtins.lc 397:64-397:75 Type
1338testdata/Builtins.lc 412:1-412:16 {a:'DepthHandler} -> {b} -> {c:'Nat} -> b->'Float -> 'Stream ('Fragment c a b) -> 'Stream ('Fragment c DefinedDepth b) 1338testdata/Builtins.lc 397:64-397:67 'Nat -> Type->Type
1339testdata/Builtins.lc 419:21-423:68 Type 1339testdata/Builtins.lc 397:70-397:75 Type
1340testdata/Builtins.lc 419:21-423:68 V7 1340testdata/Builtins.lc 398:26-398:31 Type
1341testdata/Builtins.lc 419:25-419:41 Type->Type 1341testdata/Builtins.lc 400:20-400:33 'PrimitiveType->Type
1342testdata/Builtins.lc 419:21-423:68 V5 1342testdata/Builtins.lc 397:21-401:55 'PrimitiveType
1343testdata/Builtins.lc 419:21-423:68 V4 1343testdata/Builtins.lc 401:20-401:29 'PrimitiveType -> Type->Type
1344testdata/Builtins.lc 419:49-419:62 Type -> Type->Type 1344testdata/Builtins.lc 401:37-401:51 'Nat -> Type->Type
1345testdata/Builtins.lc 419:64-419:75 Type 1345testdata/Builtins.lc 397:1-397:11 {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 -> 'Stream ('Fragment (Succ Zero) a)
1346testdata/Builtins.lc 419:64-419:67 'Nat -> Type->Type 1346testdata/Builtins.lc 403:20-403:54 Type
1347testdata/Builtins.lc 419:70-419:75 Type 1347testdata/Builtins.lc 403:20-403:54 V3
1348testdata/Builtins.lc 420:26-420:31 Type 1348testdata/Builtins.lc 403:25-403:29 Type
1349testdata/Builtins.lc 422:20-422:33 'PrimitiveType->Type 1349testdata/Builtins.lc 403:34-403:42 'Nat -> Type->Type
1350testdata/Builtins.lc 419:21-423:68 'PrimitiveType 1350testdata/Builtins.lc 403:20-403:54 'Nat
1351testdata/Builtins.lc 423:20-423:29 'PrimitiveType -> Type->Type 1351testdata/Builtins.lc 403:20-403:54 V2
1352testdata/Builtins.lc 423:37-423:51 'Nat -> 'DepthHandler -> Type->Type 1352testdata/Builtins.lc 403:50-403:54 Type
1353testdata/Builtins.lc 423:54-423:66 'DepthHandler 1353testdata/Builtins.lc 403:1-403:15 {a} -> {b:'Nat} -> a->'Bool -> 'Fragment b a -> 'Bool
1354testdata/Builtins.lc 419:1-419:11 {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 -> 'Stream ('Fragment (Succ Zero) DefinedDepth a) 1354testdata/Builtins.lc 405:21-405:78 Type
1355testdata/Builtins.lc 425:20-425:56 Type 1355testdata/Builtins.lc 405:21-405:78 V3
1356testdata/Builtins.lc 425:20-425:56 V3 1356testdata/Builtins.lc 405:26-405:30 Type
1357testdata/Builtins.lc 425:25-425:29 Type 1357testdata/Builtins.lc 405:36-405:50 'Nat -> Type->Type
1358testdata/Builtins.lc 425:34-425:42 'Nat -> 'DepthHandler -> Type->Type 1358testdata/Builtins.lc 405:21-405:78 'Nat
1359testdata/Builtins.lc 425:20-425:56 'Nat 1359testdata/Builtins.lc 405:21-405:78 V2
1360testdata/Builtins.lc 425:20-425:56 V2 1360testdata/Builtins.lc 405:60-405:74 'Nat -> Type->Type
1361testdata/Builtins.lc 425:52-425:56 Type 1361testdata/Builtins.lc 406:21-406:49 {a} -> {b:'Nat} -> a->'Bool -> 'Stream ('Fragment b a) -> 'Stream ('Fragment b a)
1362testdata/Builtins.lc 425:1-425:15 {a:'DepthHandler} -> {b} -> {c:'Nat} -> b->'Bool -> 'Fragment c a b -> 'Bool 1362testdata/Builtins.lc 406:21-406:49 {a:'Nat} -> V1->'Bool -> 'Stream ('Fragment a V2) -> 'Stream ('Fragment a V3)
1363testdata/Builtins.lc 427:21-427:82 Type 1363testdata/Builtins.lc 406:21-406:49 V1->'Bool -> 'Stream ('Fragment V1 V2) -> 'Stream ('Fragment V2 V3)
1364testdata/Builtins.lc 427:21-427:82 V5 1364testdata/Builtins.lc 406:21-406:49 'Stream ('Fragment V1 V2) -> 'Stream ('Fragment V2 V3)
1365testdata/Builtins.lc 427:26-427:30 Type 1365testdata/Builtins.lc 406:21-406:33 {a} -> a->'Bool -> 'Stream a -> 'Stream a
1366testdata/Builtins.lc 427:36-427:50 'Nat -> 'DepthHandler -> Type->Type 1366testdata/Builtins.lc 406:35-406:49 V0->'Bool
1367testdata/Builtins.lc 427:21-427:82 'Nat 1367testdata/Builtins.lc 406:35-406:49 {a} -> {b:'Nat} -> a->'Bool -> 'Fragment b a -> 'Bool
1368testdata/Builtins.lc 427:21-427:82 V4 1368testdata/Builtins.lc 406:1-406:16 {a} -> {b:'Nat} -> a->'Bool -> 'Stream ('Fragment b a) -> 'Stream ('Fragment b a)
1369testdata/Builtins.lc 427:21-427:82 'DepthHandler 1369testdata/Builtins.lc 408:17-408:56 Type
1370testdata/Builtins.lc 427:21-427:82 V2 1370testdata/Builtins.lc 408:17-408:56 V5
1371testdata/Builtins.lc 427:62-427:76 'Nat -> 'DepthHandler -> Type->Type 1371testdata/Builtins.lc 408:17-408:56 V4
1372testdata/Builtins.lc 428:21-428:49 {a} -> {b:'Nat} -> {c:'DepthHandler} -> a->'Bool -> 'Stream ('Fragment b c a) -> 'Stream ('Fragment b c a) 1372testdata/Builtins.lc 408:28-408:36 'Nat -> Type->Type
1373testdata/Builtins.lc 428:21-428:49 {a:'Nat} -> {b:'DepthHandler} -> V2->'Bool -> 'Stream ('Fragment a b V3) -> 'Stream ('Fragment a b V4) 1373testdata/Builtins.lc 408:17-408:56 'Nat
1374testdata/Builtins.lc 428:21-428:49 {a:'DepthHandler} -> V2->'Bool -> 'Stream ('Fragment V2 a V3) -> 'Stream ('Fragment V3 a V4) 1374testdata/Builtins.lc 408:17-408:56 V2
1375testdata/Builtins.lc 428:21-428:49 V2->'Bool -> 'Stream ('Fragment V2 V1 V3) -> 'Stream ('Fragment V3 V2 V4) 1375testdata/Builtins.lc 408:44-408:52 'Nat -> Type->Type
1376testdata/Builtins.lc 428:21-428:49 'Stream ('Fragment V2 V1 V3) -> 'Stream ('Fragment V3 V2 V4) 1376testdata/Builtins.lc 408:1-408:12 {a} -> {b} -> {c:'Nat} -> a->b -> 'Fragment c a -> 'Fragment c b
1377testdata/Builtins.lc 428:21-428:33 {a} -> a->'Bool -> 'Stream a -> 'Stream a 1377testdata/Builtins.lc 410:18-410:27 {a} -> {b} -> a->b -> 'Stream a -> 'Stream b
1378testdata/Builtins.lc 428:35-428:49 V0->'Bool 1378testdata/Builtins.lc 410:29-410:40 V1->V1
1379testdata/Builtins.lc 428:35-428:49 {a:'DepthHandler} -> {b} -> {c:'Nat} -> b->'Bool -> 'Fragment c a b -> 'Bool 1379testdata/Builtins.lc 410:29-410:40 {a} -> {b} -> {c:'Nat} -> a->b -> 'Fragment c a -> 'Fragment c b
1380testdata/Builtins.lc 428:1-428:16 {a} -> {b:'Nat} -> {c:'DepthHandler} -> a->'Bool -> 'Stream ('Fragment b c a) -> 'Stream ('Fragment b c a) 1380testdata/Builtins.lc 410:1-410:13 {a} -> {b} -> {c:'Nat} -> a->b -> 'Stream ('Fragment c a) -> 'Stream ('Fragment c b)
1381testdata/Builtins.lc 430:17-430:60 Type 1381testdata/Builtins.lc 415:13-415:26 Type->Type
1382testdata/Builtins.lc 430:17-430:60 V7 1382testdata/Builtins.lc 420:13-420:28 Type->Type
1383testdata/Builtins.lc 430:17-430:60 V6 1383testdata/Builtins.lc 423:10-424:36 Type->Type
1384testdata/Builtins.lc 430:28-430:36 'Nat -> 'DepthHandler -> Type->Type 1384testdata/Builtins.lc 423:10-424:36 Type
1385testdata/Builtins.lc 430:17-430:60 'Nat 1385testdata/Builtins.lc 423:10-423:23 Type->Type
1386testdata/Builtins.lc 430:17-430:60 V4 1386testdata/Builtins.lc 423:10-423:23 Type
1387testdata/Builtins.lc 430:17-430:60 'DepthHandler 1387testdata/Builtins.lc 423:10-423:23 Type -> 'Nat->Type
1388testdata/Builtins.lc 430:17-430:60 V2 1388testdata/Builtins.lc 423:10-423:23 'Nat->Type
1389testdata/Builtins.lc 430:46-430:54 'Nat -> 'DepthHandler -> Type->Type 1389testdata/Builtins.lc 423:37-423:44 Type
1390testdata/Builtins.lc 430:1-430:12 {a} -> {b} -> {c:'Nat} -> {d:'DepthHandler} -> a->b -> 'Fragment c d a -> 'Fragment c d b 1390testdata/Builtins.lc 424:10-424:36 Type
1391testdata/Builtins.lc 432:18-432:27 {a} -> {b} -> a->b -> 'Stream a -> 'Stream b 1391testdata/Builtins.lc 424:10-424:23 Type->Type
1392testdata/Builtins.lc 432:29-432:40 V1->V1 1392testdata/Builtins.lc 424:10-424:23 Type
1393testdata/Builtins.lc 432:29-432:40 {a} -> {b} -> {c:'Nat} -> {d:'DepthHandler} -> a->b -> 'Fragment c d a -> 'Fragment c d b 1393testdata/Builtins.lc 424:31-424:36 Type
1394testdata/Builtins.lc 432:1-432:13 {a} -> {b} -> {c:'Nat} -> {d:'DepthHandler} -> a->b -> 'Stream ('Fragment c d a) -> 'Stream ('Fragment c d b) 1394testdata/Builtins.lc 422:7-422:20 Type->Type
1395testdata/Builtins.lc 437:13-437:26 Type->Type 1395testdata/Builtins.lc 422:7-422:65 Type
1396testdata/Builtins.lc 442:13-442:28 Type->Type 1396testdata/Builtins.lc 422:46-422:65 Type
1397testdata/Builtins.lc 445:10-446:36 Type->Type 1397testdata/Builtins.lc 422:46-422:63 Type->Type
1398testdata/Builtins.lc 445:10-446:36 Type 1398testdata/Builtins.lc 422:64-422:65 Type
1399testdata/Builtins.lc 445:10-445:23 Type->Type 1399testdata/Builtins.lc 423:37-424:77 {a} -> {b : 'DefaultFragOp a} -> 'FragmentOperation a
1400testdata/Builtins.lc 445:10-445:23 Type 1400testdata/Builtins.lc 423:37-424:77 {a : 'DefaultFragOp V0} -> 'FragmentOperation V1
1401testdata/Builtins.lc 445:10-445:23 Type -> 'Nat->Type 1401testdata/Builtins.lc 423:69-423:111 a:Type -> {b : 'DefaultFragOp ('Color a)} -> 'FragmentOperation ('Color a)
1402testdata/Builtins.lc 445:10-445:23 'Nat->Type 1402testdata/Builtins.lc 423:69-423:111 {a : 'DefaultFragOp ('Color V0)} -> 'FragmentOperation ('Color V1)
1403testdata/Builtins.lc 445:37-445:44 Type 1403testdata/Builtins.lc 423:69-423:111 a:Type -> b:'Nat -> {c : 'DefaultFragOp ('Color ('VecS a b))} -> 'FragmentOperation ('Color ('VecS a b))
1404testdata/Builtins.lc 446:10-446:36 Type 1404testdata/Builtins.lc 423:69-423:111 a:'Nat -> {b : 'DefaultFragOp ('Color ('VecS V1 a))} -> 'FragmentOperation ('Color ('VecS V2 a))
1405testdata/Builtins.lc 446:10-446:23 Type->Type 1405testdata/Builtins.lc 423:69-423:111 {a : 'DefaultFragOp ('Color ('VecS V1 V0))} -> 'FragmentOperation ('Color ('VecS V2 V1))
1406testdata/Builtins.lc 446:10-446:23 Type 1406testdata/Builtins.lc 423:69-423:111 {a : 'DefaultFragOp ('Color ('VecS 'Float V0))} -> 'FragmentOperation ('Color ('VecS 'Float V1))
1407testdata/Builtins.lc 446:31-446:36 Type 1407testdata/Builtins.lc 423:69-423:111 a:'Nat -> {b : 'DefaultFragOp ('Color ('VecS 'Float (Succ a)))} -> 'FragmentOperation ('Color ('VecS 'Float (Succ a)))
1408testdata/Builtins.lc 444:7-444:20 Type->Type 1408testdata/Builtins.lc 423:69-423:111 {a : 'DefaultFragOp ('Color ('VecS 'Float (Succ V0)))} -> 'FragmentOperation ('Color ('VecS 'Float (Succ V1)))
1409testdata/Builtins.lc 444:7-444:65 Type 1409testdata/Builtins.lc 423:69-423:111 a:'Nat -> {b : 'DefaultFragOp ('Color ('VecS 'Float (Succ (Succ a))))} -> 'FragmentOperation ('Color ('VecS 'Float (Succ (Succ a))))
1410testdata/Builtins.lc 444:46-444:65 Type 1410testdata/Builtins.lc 423:69-423:111 {a : 'DefaultFragOp ('Color ('VecS 'Float (Succ (Succ V0))))} -> 'FragmentOperation ('Color ('VecS 'Float (Succ (Succ V1))))
1411testdata/Builtins.lc 444:46-444:63 Type->Type 1411testdata/Builtins.lc 423:69-423:111 a:'Nat -> {b : 'DefaultFragOp ('Color ('VecS 'Float (Succ (Succ (Succ a)))))} -> 'FragmentOperation ('Color ('VecS 'Float (Succ (Succ (Succ a)))))
1412testdata/Builtins.lc 444:64-444:65 Type 1412testdata/Builtins.lc 423:69-423:111 {a : 'DefaultFragOp ('Color ('VecS 'Float (Succ (Succ (Succ V0)))))} -> 'FragmentOperation ('Color ('VecS 'Float (Succ (Succ (Succ V1)))))
1413testdata/Builtins.lc 445:37-446:77 {a} -> {b : 'DefaultFragOp a} -> 'FragmentOperation a 1413testdata/Builtins.lc 423:69-423:111 a:'Nat -> {b : 'DefaultFragOp ('Color ('VecS 'Float (Succ (Succ (Succ (Succ a))))))} -> 'FragmentOperation ('Color ('VecS 'Float (Succ (Succ (Succ (Succ a))))))
1414testdata/Builtins.lc 445:37-446:77 {a : 'DefaultFragOp V0} -> 'FragmentOperation V1 1414testdata/Builtins.lc 423:69-423:111 {a : 'DefaultFragOp ('Color ('VecS 'Float (Succ (Succ (Succ (Succ V0))))))} -> 'FragmentOperation ('Color ('VecS 'Float (Succ (Succ (Succ (Succ V1))))))
1415testdata/Builtins.lc 445:69-445:111 a:Type -> {b : 'DefaultFragOp ('Color a)} -> 'FragmentOperation ('Color a) 1415testdata/Builtins.lc 423:69-423:111 {a:'Unit} -> 'FragmentOperation ('Color ('VecS 'Float (Succ (Succ (Succ (Succ Zero))))))
1416testdata/Builtins.lc 445:69-445:111 {a : 'DefaultFragOp ('Color V0)} -> 'FragmentOperation ('Color V1) 1416testdata/Builtins.lc 423:69-423: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)
1417testdata/Builtins.lc 445:69-445:111 a:Type -> b:'Nat -> {c : 'DefaultFragOp ('Color ('VecS a b))} -> 'FragmentOperation ('Color ('VecS a b)) 1417testdata/Builtins.lc 423:77-423:87 'Blending V1
1418testdata/Builtins.lc 445:69-445:111 a:'Nat -> {b : 'DefaultFragOp ('Color ('VecS V1 a))} -> 'FragmentOperation ('Color ('VecS V2 a)) 1418testdata/Builtins.lc 423:77-423:87 {a} -> 'Blending a
1419testdata/Builtins.lc 445:69-445:111 {a : 'DefaultFragOp ('Color ('VecS V1 V0))} -> 'FragmentOperation ('Color ('VecS V2 V1)) 1419testdata/Builtins.lc 423:89-423:111 'VecScalar V2 'Bool
1420testdata/Builtins.lc 445:69-445:111 {a : 'DefaultFragOp ('Color ('VecS 'Float V0))} -> 'FragmentOperation ('Color ('VecS 'Float V1)) 1420testdata/Builtins.lc 423:89-423:91 {a} -> a -> a -> a -> a -> 'VecS a (Succ (Succ (Succ (Succ Zero))))
1421testdata/Builtins.lc 445:69-445:111 a:'Nat -> {b : 'DefaultFragOp ('Color ('VecS 'Float (Succ a)))} -> 'FragmentOperation ('Color ('VecS 'Float (Succ a))) 1421testdata/Builtins.lc 423:92-423:96 V0
1422testdata/Builtins.lc 445:69-445:111 {a : 'DefaultFragOp ('Color ('VecS 'Float (Succ V0)))} -> 'FragmentOperation ('Color ('VecS 'Float (Succ V1))) 1422testdata/Builtins.lc 423:92-423:96 'Bool
1423testdata/Builtins.lc 445:69-445:111 a:'Nat -> {b : 'DefaultFragOp ('Color ('VecS 'Float (Succ (Succ a))))} -> 'FragmentOperation ('Color ('VecS 'Float (Succ (Succ a)))) 1423testdata/Builtins.lc 423:97-423:101 'Bool
1424testdata/Builtins.lc 445:69-445:111 {a : 'DefaultFragOp ('Color ('VecS 'Float (Succ (Succ V0))))} -> 'FragmentOperation ('Color ('VecS 'Float (Succ (Succ V1)))) 1424testdata/Builtins.lc 423:102-423:106 'Bool
1425testdata/Builtins.lc 445:69-445:111 a:'Nat -> {b : 'DefaultFragOp ('Color ('VecS 'Float (Succ (Succ (Succ a)))))} -> 'FragmentOperation ('Color ('VecS 'Float (Succ (Succ (Succ a))))) 1425testdata/Builtins.lc 423:107-423:111 'Bool
1426testdata/Builtins.lc 445:69-445:111 {a : 'DefaultFragOp ('Color ('VecS 'Float (Succ (Succ (Succ V0)))))} -> 'FragmentOperation ('Color ('VecS 'Float (Succ (Succ (Succ V1))))) 1426testdata/Builtins.lc 424:31-424:77 {a : 'DefaultFragOp V1} -> 'FragmentOperation V2
1427testdata/Builtins.lc 445:69-445:111 a:'Nat -> {b : 'DefaultFragOp ('Color ('VecS 'Float (Succ (Succ (Succ (Succ a))))))} -> 'FragmentOperation ('Color ('VecS 'Float (Succ (Succ (Succ (Succ a)))))) 1427testdata/Builtins.lc 424:60-424:77 a:Type -> {b : 'DefaultFragOp ('Depth a)} -> 'FragmentOperation ('Depth a)
1428testdata/Builtins.lc 445:69-445:111 {a : 'DefaultFragOp ('Color ('VecS 'Float (Succ (Succ (Succ (Succ V0))))))} -> 'FragmentOperation ('Color ('VecS 'Float (Succ (Succ (Succ (Succ V1)))))) 1428testdata/Builtins.lc 424:60-424:77 {a : 'DefaultFragOp ('Depth V0)} -> 'FragmentOperation ('Depth V1)
1429testdata/Builtins.lc 445:69-445:111 {a:'Unit} -> 'FragmentOperation ('Color ('VecS 'Float (Succ (Succ (Succ (Succ Zero)))))) 1429testdata/Builtins.lc 424:60-424:77 {a:'Unit} -> 'FragmentOperation ('Depth 'Float)
1430testdata/Builtins.lc 445:69-445: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) 1430testdata/Builtins.lc 424:60-424:67 'ComparisonFunction -> 'Bool -> 'FragmentOperation ('Depth 'Float)
1431testdata/Builtins.lc 445:77-445:87 'Blending V1 1431testdata/Builtins.lc 424:68-424:72 'ComparisonFunction
1432testdata/Builtins.lc 445:77-445:87 {a} -> 'Blending a 1432testdata/Builtins.lc 424:73-424:77 'Bool
1433testdata/Builtins.lc 445:89-445:111 'VecScalar V2 'Bool 1433testdata/Builtins.lc 422:29-422:42 {a} -> {b} -> {c : 'DefaultFragOp b} -> 'FragmentOperation b
1434testdata/Builtins.lc 445:89-445:91 {a} -> a -> a -> a -> a -> 'VecS a (Succ (Succ (Succ (Succ Zero)))) 1434testdata/Builtins.lc 431:24-431:27 Type
1435testdata/Builtins.lc 445:92-445:96 V0 1435testdata/Builtins.lc 431:6-431:17 'Nat -> Type->Type
1436testdata/Builtins.lc 445:92-445:96 'Bool 1436testdata/Builtins.lc 432:19-432:106 Type
1437testdata/Builtins.lc 445:97-445:101 'Bool 1437testdata/Builtins.lc 432:19-432:27 Type->Type
1438testdata/Builtins.lc 445:102-445:106 'Bool 1438testdata/Builtins.lc 432:28-432:29 Type
1439testdata/Builtins.lc 445:107-445:111 'Bool 1439testdata/Builtins.lc 432:34-432:106 Type
1440testdata/Builtins.lc 446:31-446:77 {a : 'DefaultFragOp V1} -> 'FragmentOperation V2 1440testdata/Builtins.lc 432:34-432:48 'Nat -> Type->Type
1441testdata/Builtins.lc 446:60-446:77 a:Type -> {b : 'DefaultFragOp ('Depth a)} -> 'FragmentOperation ('Depth a) 1441testdata/Builtins.lc 432:49-432:50 'Nat
1442testdata/Builtins.lc 446:60-446:77 {a : 'DefaultFragOp ('Depth V0)} -> 'FragmentOperation ('Depth V1) 1442testdata/Builtins.lc 432:52-432:66 Type
1443testdata/Builtins.lc 446:60-446:77 {a:'Unit} -> 'FragmentOperation ('Depth 'Float) 1443testdata/Builtins.lc 432:52-432:64 Type->Type
1444testdata/Builtins.lc 446:60-446:67 'ComparisonFunction -> 'Bool -> 'FragmentOperation ('Depth 'Float) 1444testdata/Builtins.lc 432:65-432:66 Type
1445testdata/Builtins.lc 446:68-446:72 'ComparisonFunction 1445testdata/Builtins.lc 432:72-432:106 Type
1446testdata/Builtins.lc 446:73-446:77 'Bool 1446testdata/Builtins.lc 432:72-432:83 'Nat -> Type->Type
1447testdata/Builtins.lc 444:29-444:42 {a} -> {b} -> {c : 'DefaultFragOp b} -> 'FragmentOperation b 1447testdata/Builtins.lc 432:84-432:85 'Nat
1448testdata/Builtins.lc 453:24-453:27 Type 1448testdata/Builtins.lc 432:86-432:87 Type
1449testdata/Builtins.lc 453:6-453:17 'Nat -> Type->Type 1449testdata/Builtins.lc 432:91-432:106 Type
1450testdata/Builtins.lc 454:19-454:108 Type 1450testdata/Builtins.lc 432:91-432:102 'Nat -> Type->Type
1451testdata/Builtins.lc 454:19-454:27 Type->Type 1451testdata/Builtins.lc 432:103-432:104 'Nat
1452testdata/Builtins.lc 454:28-454:29 Type 1452testdata/Builtins.lc 432:105-432:106 Type
1453testdata/Builtins.lc 454:34-454:48 'Nat -> 'DepthHandler -> Type->Type 1453testdata/Builtins.lc 432:3-432:13 {a:'Nat} -> {b} -> 'FragOps' b -> 'Stream ('Fragment a ('RemSemantics b)) -> 'FrameBuffer a b -> 'FrameBuffer a b
1454testdata/Builtins.lc 454:49-454:50 'Nat 1454testdata/Builtins.lc 433:20-433:117 Type
1455testdata/Builtins.lc 454:19-454:108 'DepthHandler 1455testdata/Builtins.lc 433:20-433:36 Type->Type
1456testdata/Builtins.lc 454:19-454:108 V2 1456testdata/Builtins.lc 433:37-433:38 Type
1457testdata/Builtins.lc 454:54-454:68 Type 1457testdata/Builtins.lc 433:40-433:55 Type->Type
1458testdata/Builtins.lc 454:54-454:66 Type->Type 1458testdata/Builtins.lc 433:20-433:117 V2
1459testdata/Builtins.lc 454:67-454:68 Type 1459testdata/Builtins.lc 433:59-433:74 Type
1460testdata/Builtins.lc 454:74-454:108 Type 1460testdata/Builtins.lc 433:59-433:70 'Nat -> Type->Type
1461testdata/Builtins.lc 454:74-454:85 'Nat -> Type->Type 1461testdata/Builtins.lc 433:71-433:72 'Nat
1462testdata/Builtins.lc 454:86-454:87 'Nat 1462testdata/Builtins.lc 433:73-433:74 Type
1463testdata/Builtins.lc 454:88-454:89 Type 1463testdata/Builtins.lc 433:77-433:90 Type->Type
1464testdata/Builtins.lc 454:93-454:108 Type 1464testdata/Builtins.lc 433:102-433:117 Type
1465testdata/Builtins.lc 454:93-454:104 'Nat -> Type->Type 1465testdata/Builtins.lc 433:102-433:113 'Nat -> Type->Type
1466testdata/Builtins.lc 454:105-454:106 'Nat 1466testdata/Builtins.lc 433:114-433:115 'Nat
1467testdata/Builtins.lc 454:107-454:108 Type 1467testdata/Builtins.lc 433:116-433:117 Type
1468testdata/Builtins.lc 454:3-454:13 {a:'Nat} -> {b} -> {c:'DepthHandler} -> 'FragOps' b -> 'Stream ('Fragment a c ('RemSemantics b)) -> 'FrameBuffer a b -> 'FrameBuffer a b 1468testdata/Builtins.lc 433:3-433:14 {a:'Nat} -> {b} -> {c} -> {d : 'SameLayerCounts c} -> {e : 'FrameBuffer a b ~ 'TFFrameBuffer c} -> c -> 'FrameBuffer a b
1469testdata/Builtins.lc 455:20-455:117 Type 1469testdata/Builtins.lc 435:34-435:44 {a:'Nat} -> {b} -> 'FragOps' b -> 'Stream ('Fragment a ('RemSemantics b)) -> 'FrameBuffer a b -> 'FrameBuffer a b
1470testdata/Builtins.lc 455:20-455:36 Type->Type 1470testdata/Builtins.lc 435:50-435:62 'Stream ('Fragment V1 ('RemSemantics V0))
1471testdata/Builtins.lc 455:37-455:38 Type 1471testdata/Builtins.lc 435:50-435:62 {a} -> {b} -> {c:'Nat} -> a->b -> 'Stream ('Fragment c a) -> 'Stream ('Fragment c b)
1472testdata/Builtins.lc 455:40-455:55 Type->Type 1472testdata/Builtins.lc 435:1-435:11 {a:'Nat} -> {b} -> {c} -> 'FragOps' b -> (c -> 'RemSemantics b) -> 'Stream ('Fragment a c) -> 'FrameBuffer a b -> 'FrameBuffer a b
1473testdata/Builtins.lc 455:20-455:117 V2 1473testdata/Builtins.lc 437:1-437:20 {a} -> a->a
1474testdata/Builtins.lc 455:59-455:74 Type 1474testdata/Builtins.lc 439:15-439:18 Type
1475testdata/Builtins.lc 455:59-455:70 'Nat -> Type->Type 1475testdata/Builtins.lc 439:22-439:34 Type
1476testdata/Builtins.lc 455:71-455:72 'Nat 1476testdata/Builtins.lc 439:22-439:26 Type
1477testdata/Builtins.lc 455:73-455:74 Type 1477testdata/Builtins.lc 439:30-439:34 Type
1478testdata/Builtins.lc 455:77-455:90 Type->Type 1478testdata/Builtins.lc 439:6-439:11 'Nat -> Type->Type
1479testdata/Builtins.lc 455:102-455:117 Type 1479testdata/Builtins.lc 440:48-441:56 Type
1480testdata/Builtins.lc 455:102-455:113 'Nat -> Type->Type 1480testdata/Builtins.lc 440:48-440:51 Type->Type
1481testdata/Builtins.lc 455:114-455:115 'Nat 1481testdata/Builtins.lc 440:52-440:53 Type
1482testdata/Builtins.lc 455:116-455:117 Type 1482testdata/Builtins.lc 440:52-440:53 V3
1483testdata/Builtins.lc 455:3-455:14 {a:'Nat} -> {b} -> {c} -> {d : 'SameLayerCounts c} -> {e : 'FrameBuffer a b ~ 'TFFrameBuffer c} -> c -> 'FrameBuffer a b 1483testdata/Builtins.lc 440:55-441:56 Type
1484testdata/Builtins.lc 457:34-457:44 {a:'Nat} -> {b} -> {c:'DepthHandler} -> 'FragOps' b -> 'Stream ('Fragment a c ('RemSemantics b)) -> 'FrameBuffer a b -> 'FrameBuffer a b 1484testdata/Builtins.lc 440:55-440:60 Type
1485testdata/Builtins.lc 457:50-457:62 'Stream ('Fragment V2 V0 ('RemSemantics V1)) 1485testdata/Builtins.lc 440:55-440:60 V2
1486testdata/Builtins.lc 457:50-457:62 {a} -> {b} -> {c:'Nat} -> {d:'DepthHandler} -> a->b -> 'Stream ('Fragment c d a) -> 'Stream ('Fragment c d b) 1486testdata/Builtins.lc 440:63-440:76 Type
1487testdata/Builtins.lc 457:1-457:11 {a:'Nat} -> {b} -> {c:'DepthHandler} -> {d} -> 'FragOps' b -> (d -> 'RemSemantics b) -> 'Stream ('Fragment a c d) -> 'FrameBuffer a b -> 'FrameBuffer a b 1487testdata/Builtins.lc 440:63-440:72 'Nat -> Type->Type
1488testdata/Builtins.lc 459:1-459:20 {a} -> a->a 1488testdata/Builtins.lc 440:73-440:74 'Nat
1489testdata/Builtins.lc 461:15-461:18 Type 1489testdata/Builtins.lc 440:73-440:74 V4
1490testdata/Builtins.lc 461:22-461:34 Type 1490testdata/Builtins.lc 440:75-440:76 Type
1491testdata/Builtins.lc 461:22-461:26 Type 1491testdata/Builtins.lc 441:26-441:56 Type
1492testdata/Builtins.lc 461:30-461:34 Type 1492testdata/Builtins.lc 441:26-441:31 Type
1493testdata/Builtins.lc 461:6-461:11 'Nat -> Type->Type 1493testdata/Builtins.lc 441:36-441:56 Type
1494testdata/Builtins.lc 462:48-463:56 Type 1494testdata/Builtins.lc 441:36-441:41 'Nat -> Type->Type
1495testdata/Builtins.lc 462:48-462:51 Type->Type 1495testdata/Builtins.lc 441:42-441:43 'Nat
1496testdata/Builtins.lc 462:52-462:53 Type 1496testdata/Builtins.lc 441:42-441:43 V7
1497testdata/Builtins.lc 462:52-462:53 V3 1497testdata/Builtins.lc 441:45-441:56 Type
1498testdata/Builtins.lc 462:55-463:56 Type 1498testdata/Builtins.lc 441:45-441:50 Type->Type
1499testdata/Builtins.lc 462:55-462:60 Type 1499testdata/Builtins.lc 441:51-441:56 Type
1500testdata/Builtins.lc 462:55-462:60 V2 1500testdata/Builtins.lc 440:3-440:13 {a:'Nat} -> {b:'Nat} -> {c} -> {d} -> {e : 'Num c} -> {f : d ~ 'VecScalar b c} -> d -> 'Image a ('Color d)
1501testdata/Builtins.lc 462:63-462:76 Type 1501testdata/Builtins.lc 442:37-442:67 Type
1502testdata/Builtins.lc 462:63-462:72 'Nat -> Type->Type 1502testdata/Builtins.lc 442:37-442:42 Type
1503testdata/Builtins.lc 462:73-462:74 'Nat 1503testdata/Builtins.lc 442:47-442:67 Type
1504testdata/Builtins.lc 462:73-462:74 V4 1504testdata/Builtins.lc 442:47-442:52 'Nat -> Type->Type
1505testdata/Builtins.lc 462:75-462:76 Type 1505testdata/Builtins.lc 442:53-442:54 'Nat
1506testdata/Builtins.lc 463:26-463:56 Type 1506testdata/Builtins.lc 442:53-442:54 V2
1507testdata/Builtins.lc 463:26-463:31 Type 1507testdata/Builtins.lc 442:56-442:67 Type
1508testdata/Builtins.lc 463:36-463:56 Type 1508testdata/Builtins.lc 442:56-442:61 Type->Type
1509testdata/Builtins.lc 463:36-463:41 'Nat -> Type->Type 1509testdata/Builtins.lc 442:62-442:67 Type
1510testdata/Builtins.lc 463:42-463:43 'Nat 1510testdata/Builtins.lc 442:3-442:13 {a:'Nat} -> 'Float -> 'Image a ('Depth 'Float)
1511testdata/Builtins.lc 463:42-463:43 V7 1511testdata/Builtins.lc 443:37-443:67 Type
1512testdata/Builtins.lc 463:45-463:56 Type 1512testdata/Builtins.lc 443:37-443:40 Type
1513testdata/Builtins.lc 463:45-463:50 Type->Type 1513testdata/Builtins.lc 443:47-443:67 Type
1514testdata/Builtins.lc 463:51-463:56 Type 1514testdata/Builtins.lc 443:47-443:52 'Nat -> Type->Type
1515testdata/Builtins.lc 462:3-462:13 {a:'Nat} -> {b:'Nat} -> {c} -> {d} -> {e : 'Num c} -> {f : d ~ 'VecScalar b c} -> d -> 'Image a ('Color d) 1515testdata/Builtins.lc 443:53-443:54 'Nat
1516testdata/Builtins.lc 464:37-464:67 Type 1516testdata/Builtins.lc 443:53-443:54 V2
1517testdata/Builtins.lc 464:37-464:42 Type 1517testdata/Builtins.lc 443:56-443:67 Type
1518testdata/Builtins.lc 464:47-464:67 Type 1518testdata/Builtins.lc 443:56-443:63 Type->Type
1519testdata/Builtins.lc 464:47-464:52 'Nat -> Type->Type 1519testdata/Builtins.lc 443:64-443:67 Type
1520testdata/Builtins.lc 464:53-464:54 'Nat 1520testdata/Builtins.lc 443:3-443:15 {a:'Nat} -> 'Int -> 'Image a ('Stencil 'Int)
1521testdata/Builtins.lc 464:53-464:54 V2 1521testdata/Builtins.lc 446:26-446:54 Type
1522testdata/Builtins.lc 464:56-464:67 Type 1522testdata/Builtins.lc 446:26-446:37 'Nat -> Type->Type
1523testdata/Builtins.lc 464:56-464:61 Type->Type 1523testdata/Builtins.lc 446:26-446:54 V1
1524testdata/Builtins.lc 464:62-464:67 Type 1524testdata/Builtins.lc 446:45-446:50 'Nat -> Type->Type
1525testdata/Builtins.lc 464:3-464:13 {a:'Nat} -> 'Float -> 'Image a ('Depth 'Float) 1525testdata/Builtins.lc 446:3-446:11 {a} -> 'FrameBuffer (Succ Zero) a -> 'Image (Succ Zero) a
1526testdata/Builtins.lc 465:37-465:67 Type 1526testdata/Builtins.lc 447:26-447:37 'Nat -> Type->Type
1527testdata/Builtins.lc 465:37-465:40 Type 1527testdata/Builtins.lc 447:40-447:74 Type
1528testdata/Builtins.lc 465:47-465:67 Type 1528testdata/Builtins.lc 447:40-447:74 Type -> Type->Type
1529testdata/Builtins.lc 465:47-465:52 'Nat -> Type->Type 1529testdata/Builtins.lc 447:41-447:52 Type
1530testdata/Builtins.lc 465:53-465:54 'Nat 1530testdata/Builtins.lc 447:41-447:46 Type->Type
1531testdata/Builtins.lc 465:53-465:54 V2 1531testdata/Builtins.lc 447:47-447:52 Type
1532testdata/Builtins.lc 465:56-465:67 Type 1532testdata/Builtins.lc 447:54-447:72 Type
1533testdata/Builtins.lc 465:56-465:63 Type->Type 1533testdata/Builtins.lc 447:54-447:59 Type->Type
1534testdata/Builtins.lc 465:64-465:67 Type 1534testdata/Builtins.lc 447:61-447:72 Type
1535testdata/Builtins.lc 465:3-465:15 {a:'Nat} -> 'Int -> 'Image a ('Stencil 'Int) 1535testdata/Builtins.lc 447:61-447:64 'Nat -> Type->Type
1536testdata/Builtins.lc 468:26-468:54 Type 1536testdata/Builtins.lc 447:67-447:72 Type
1537testdata/Builtins.lc 468:26-468:37 'Nat -> Type->Type 1537testdata/Builtins.lc 447:78-447:105 Type
1538testdata/Builtins.lc 468:26-468:54 V1 1538testdata/Builtins.lc 447:78-447:83 'Nat -> Type->Type
1539testdata/Builtins.lc 468:45-468:50 'Nat -> Type->Type 1539testdata/Builtins.lc 447:87-447:105 Type
1540testdata/Builtins.lc 468:3-468:11 {a} -> 'FrameBuffer (Succ Zero) a -> 'Image (Succ Zero) a 1540testdata/Builtins.lc 447:87-447:92 Type->Type
1541testdata/Builtins.lc 469:26-469:37 'Nat -> Type->Type 1541testdata/Builtins.lc 447:94-447:105 Type
1542testdata/Builtins.lc 469:40-469:74 Type 1542testdata/Builtins.lc 447:94-447:97 'Nat -> Type->Type
1543testdata/Builtins.lc 469:40-469:74 Type -> Type->Type 1543testdata/Builtins.lc 447:100-447:105 Type
1544testdata/Builtins.lc 469:41-469:52 Type 1544testdata/Builtins.lc 447:3-447: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))))))
1545testdata/Builtins.lc 469:41-469:46 Type->Type 1545testdata/Builtins.lc 441:42-447:105 Type
1546testdata/Builtins.lc 469:47-469:52 Type 1546testdata/Builtins.lc 441:42-441:56 Type
1547testdata/Builtins.lc 469:54-469:72 Type 1547testdata/Builtins.lc 442:53-447:105 Type
1548testdata/Builtins.lc 469:54-469:59 Type->Type 1548testdata/Builtins.lc 442:53-442:67 Type
1549testdata/Builtins.lc 469:61-469:72 Type 1549testdata/Builtins.lc 443:53-447:105 Type
1550testdata/Builtins.lc 469:61-469:64 'Nat -> Type->Type 1550testdata/Builtins.lc 443:53-443:67 Type
1551testdata/Builtins.lc 469:67-469:72 Type 1551testdata/Builtins.lc 446:26-447:105 Type
1552testdata/Builtins.lc 469:78-469:105 Type 1552testdata/Builtins.lc 449:6-449:12 Type
1553testdata/Builtins.lc 469:78-469:83 'Nat -> Type->Type 1553testdata/Builtins.lc 450:26-450:51 Type
1554testdata/Builtins.lc 469:87-469:105 Type 1554testdata/Builtins.lc 450:26-450:37 'Nat -> Type->Type
1555testdata/Builtins.lc 469:87-469:92 Type->Type 1555testdata/Builtins.lc 450:26-450:51 'Nat
1556testdata/Builtins.lc 469:94-469:105 Type 1556testdata/Builtins.lc 450:26-450:51 V3
1557testdata/Builtins.lc 469:94-469:97 'Nat -> Type->Type 1557testdata/Builtins.lc 450:26-450:51 V1
1558testdata/Builtins.lc 469:100-469:105 Type 1558testdata/Builtins.lc 450:45-450:51 Type
1559testdata/Builtins.lc 469:3-469: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)))))) 1559testdata/Builtins.lc 450:3-450:12 {a:'Nat} -> {b} -> 'FrameBuffer a b -> 'Output
1560testdata/Builtins.lc 463:42-469:105 Type 1560testdata/Builtins.lc 456:34-456:73 Type
1561testdata/Builtins.lc 463:42-463:56 Type 1561testdata/Builtins.lc 456:34-456:37 Type->Type
1562testdata/Builtins.lc 464:53-469:105 Type 1562testdata/Builtins.lc 456:39-456:55 Type->Type
1563testdata/Builtins.lc 464:53-464:67 Type 1563testdata/Builtins.lc 456:34-456:73 V1
1564testdata/Builtins.lc 465:53-469:105 Type 1564testdata/Builtins.lc 456:1-456:8 {a} -> {b : 'Num ('MatVecScalarElem a)} -> a -> a->a
1565testdata/Builtins.lc 465:53-465:67 Type 1565testdata/Builtins.lc 456:10-456:17 {a} -> {b : 'Num ('MatVecScalarElem a)} -> a -> a->a
1566testdata/Builtins.lc 468:26-469:105 Type 1566testdata/Builtins.lc 456:19-456:26 {a} -> {b : 'Num ('MatVecScalarElem a)} -> a -> a->a
1567testdata/Builtins.lc 471:6-471:12 Type 1567testdata/Builtins.lc 457:35-457:80 Type
1568testdata/Builtins.lc 472:26-472:51 Type 1568testdata/Builtins.lc 457:35-457:80 V3
1569testdata/Builtins.lc 472:26-472:37 'Nat -> Type->Type 1569testdata/Builtins.lc 457:39-457:55 Type->Type
1570testdata/Builtins.lc 472:26-472:51 'Nat 1570testdata/Builtins.lc 457:35-457:80 V1
1571testdata/Builtins.lc 472:26-472:51 V3 1571testdata/Builtins.lc 457:59-457:62 Type->Type
1572testdata/Builtins.lc 472:26-472:51 V1 1572testdata/Builtins.lc 457:1-457:9 {a} -> {b} -> {c : a ~ 'MatVecScalarElem b} -> {d : 'Num a} -> b -> a->b
1573testdata/Builtins.lc 472:45-472:51 Type 1573testdata/Builtins.lc 457:11-457:19 {a} -> {b} -> {c : a ~ 'MatVecScalarElem b} -> {d : 'Num a} -> b -> a->b
1574testdata/Builtins.lc 472:3-472:12 {a:'Nat} -> {b} -> 'FrameBuffer a b -> 'Output 1574testdata/Builtins.lc 457:21-457:29 {a} -> {b} -> {c : a ~ 'MatVecScalarElem b} -> {d : 'Num a} -> b -> a->b
1575testdata/Builtins.lc 478:34-478:73 Type 1575testdata/Builtins.lc 458:35-458:75 Type
1576testdata/Builtins.lc 478:34-478:37 Type->Type 1576testdata/Builtins.lc 458:35-458:38 Type->Type
1577testdata/Builtins.lc 478:39-478:55 Type->Type 1577testdata/Builtins.lc 458:35-458:75 V5
1578testdata/Builtins.lc 478:34-478:73 V1 1578testdata/Builtins.lc 458:35-458:75 V4
1579testdata/Builtins.lc 478:1-478:8 {a} -> {b : 'Num ('MatVecScalarElem a)} -> a -> a->a 1579testdata/Builtins.lc 458:46-458:55 'Nat -> Type->Type
1580testdata/Builtins.lc 478:10-478:17 {a} -> {b : 'Num ('MatVecScalarElem a)} -> a -> a->a 1580testdata/Builtins.lc 458:35-458:75 'Nat
1581testdata/Builtins.lc 478:19-478:26 {a} -> {b : 'Num ('MatVecScalarElem a)} -> a -> a->a 1581testdata/Builtins.lc 458:35-458:75 V2
1582testdata/Builtins.lc 479:35-479:80 Type 1582testdata/Builtins.lc 458:1-458:8 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> b->b
1583testdata/Builtins.lc 479:35-479:80 V3 1583testdata/Builtins.lc 458:10-458:17 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> b->b
1584testdata/Builtins.lc 479:39-479:55 Type->Type 1584testdata/Builtins.lc 459:35-459:75 Type
1585testdata/Builtins.lc 479:35-479:80 V1 1585testdata/Builtins.lc 459:35-459:38 Type->Type
1586testdata/Builtins.lc 479:59-479:62 Type->Type 1586testdata/Builtins.lc 459:35-459:75 V5
1587testdata/Builtins.lc 479:1-479:9 {a} -> {b} -> {c : a ~ 'MatVecScalarElem b} -> {d : 'Num a} -> b -> a->b 1587testdata/Builtins.lc 459:35-459:75 V4
1588testdata/Builtins.lc 479:11-479:19 {a} -> {b} -> {c : a ~ 'MatVecScalarElem b} -> {d : 'Num a} -> b -> a->b 1588testdata/Builtins.lc 459:46-459:55 'Nat -> Type->Type
1589testdata/Builtins.lc 479:21-479:29 {a} -> {b} -> {c : a ~ 'MatVecScalarElem b} -> {d : 'Num a} -> b -> a->b 1589testdata/Builtins.lc 459:35-459:75 'Nat
1590testdata/Builtins.lc 459:35-459:75 V2
1591testdata/Builtins.lc 459:1-459:9 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> a->b
1592testdata/Builtins.lc 459:11-459:19 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> a->b
1593testdata/Builtins.lc 460:34-460:71 Type
1594testdata/Builtins.lc 460:34-460:40 Type->Type
1595testdata/Builtins.lc 460:42-460:58 Type->Type
1596testdata/Builtins.lc 460:34-460:71 V1
1597testdata/Builtins.lc 460:1-460:8 {a} -> {b : 'Signed ('MatVecScalarElem a)} -> a->a
1598testdata/Builtins.lc 462:35-462:80 Type
1599testdata/Builtins.lc 462:35-462:43 Type->Type
1600testdata/Builtins.lc 462:35-462:80 V5
1601testdata/Builtins.lc 462:35-462:80 V4
1602testdata/Builtins.lc 462:51-462:60 'Nat -> Type->Type
1603testdata/Builtins.lc 462:35-462:80 'Nat
1604testdata/Builtins.lc 462:35-462:80 V2
1605testdata/Builtins.lc 462:1-462:9 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b -> b->b
1606testdata/Builtins.lc 462:11-462:18 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b -> b->b
1607testdata/Builtins.lc 462:20-462:28 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b -> b->b
1608testdata/Builtins.lc 463:35-463:80 Type
1609testdata/Builtins.lc 463:35-463:43 Type->Type
1610testdata/Builtins.lc 463:35-463:80 V5
1611testdata/Builtins.lc 463:35-463:80 V4
1612testdata/Builtins.lc 463:51-463:60 'Nat -> Type->Type
1613testdata/Builtins.lc 463:35-463:80 'Nat
1614testdata/Builtins.lc 463:35-463:80 V2
1615testdata/Builtins.lc 463:1-463:10 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b -> a->b
1616testdata/Builtins.lc 463:12-463:20 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b -> a->b
1617testdata/Builtins.lc 463:22-463:31 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b -> a->b
1618testdata/Builtins.lc 464:35-464:75 Type
1619testdata/Builtins.lc 464:35-464:43 Type->Type
1620testdata/Builtins.lc 464:35-464:75 V5
1621testdata/Builtins.lc 464:35-464:75 V4
1622testdata/Builtins.lc 464:51-464:60 'Nat -> Type->Type
1623testdata/Builtins.lc 464:35-464:75 'Nat
1624testdata/Builtins.lc 464:35-464:75 V2
1625testdata/Builtins.lc 464:1-464:9 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b->b
1626testdata/Builtins.lc 465:35-465:102 Type
1627testdata/Builtins.lc 465:35-465:43 Type->Type
1628testdata/Builtins.lc 465:35-465:102 V7
1629testdata/Builtins.lc 465:35-465:102 V6
1630testdata/Builtins.lc 465:51-465:60 'Nat -> Type->Type
1631testdata/Builtins.lc 465:35-465:102 'Nat
1632testdata/Builtins.lc 465:35-465:102 V4
1633testdata/Builtins.lc 465:35-465:102 V3
1634testdata/Builtins.lc 465:70-465:79 'Nat -> Type->Type
1635testdata/Builtins.lc 465:82-465:86 Type
1636testdata/Builtins.lc 465:1-465:12 {a} -> {b} -> {c:'Nat} -> {d} -> {e : 'Integral a} -> {f : b ~ 'VecScalar c a} -> {g : d ~ 'VecScalar c 'Word} -> b -> d->b
1637testdata/Builtins.lc 465:14-465:25 {a} -> {b} -> {c:'Nat} -> {d} -> {e : 'Integral a} -> {f : b ~ 'VecScalar c a} -> {g : d ~ 'VecScalar c 'Word} -> b -> d->b
1638testdata/Builtins.lc 466:35-466:83 Type
1639testdata/Builtins.lc 466:35-466:43 Type->Type
1640testdata/Builtins.lc 466:35-466:83 V5
1641testdata/Builtins.lc 466:35-466:83 V4
1642testdata/Builtins.lc 466:51-466:60 'Nat -> Type->Type
1643testdata/Builtins.lc 466:35-466:83 'Nat
1644testdata/Builtins.lc 466:35-466:83 V2
1645testdata/Builtins.lc 466:74-466:78 Type
1646testdata/Builtins.lc 466:1-466:13 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b -> 'Word->b
1647testdata/Builtins.lc 466:15-466:27 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b -> 'Word->b
1648testdata/Builtins.lc 468:34-468:38 Type
1649testdata/Builtins.lc 468:42-468:54 Type
1650testdata/Builtins.lc 468:42-468:46 Type
1651testdata/Builtins.lc 468:50-468:54 Type
1652testdata/Builtins.lc 468:1-468:8 'Bool -> 'Bool->'Bool
1653testdata/Builtins.lc 468:10-468:16 'Bool -> 'Bool->'Bool
1654testdata/Builtins.lc 468:18-468:25 'Bool -> 'Bool->'Bool
1655testdata/Builtins.lc 469:35-469:66 Type
1656testdata/Builtins.lc 469:35-469:66 V3
1657testdata/Builtins.lc 469:39-469:48 'Nat -> Type->Type
1658testdata/Builtins.lc 469:35-469:66 'Nat
1659testdata/Builtins.lc 469:35-469:66 V1
1660testdata/Builtins.lc 469:51-469:55 Type
1661testdata/Builtins.lc 469:1-469:8 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Bool} -> a->a
1662testdata/Builtins.lc 470:34-470:58 Type
1663testdata/Builtins.lc 470:34-470:43 'Nat -> Type->Type
1664testdata/Builtins.lc 470:34-470:58 'Nat
1665testdata/Builtins.lc 470:34-470:58 V1
1666testdata/Builtins.lc 470:46-470:50 Type
1667testdata/Builtins.lc 470:54-470:58 Type
1668testdata/Builtins.lc 470:1-470:8 {a:'Nat} -> 'VecScalar a 'Bool -> 'Bool
1669testdata/Builtins.lc 470:10-470:17 {a:'Nat} -> 'VecScalar a 'Bool -> 'Bool
1670testdata/Builtins.lc 474:35-474:67 Type
1671testdata/Builtins.lc 474:35-474:67 V3
1672testdata/Builtins.lc 474:39-474:48 'Nat -> Type->Type
1673testdata/Builtins.lc 474:35-474:67 'Nat
1674testdata/Builtins.lc 474:35-474:67 V1
1675testdata/Builtins.lc 474:51-474:56 Type
1676testdata/Builtins.lc 473:1-473:9 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1677testdata/Builtins.lc 473:11-473:20 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1678testdata/Builtins.lc 473:22-473:30 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1679testdata/Builtins.lc 473:32-473:41 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1680testdata/Builtins.lc 473:43-473:51 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1681testdata/Builtins.lc 473:53-473:62 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1682testdata/Builtins.lc 473:64-473:71 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1683testdata/Builtins.lc 473:73-473:81 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1684testdata/Builtins.lc 473:83-473:94 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1685testdata/Builtins.lc 473:96-473:107 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1686testdata/Builtins.lc 473:109-473:116 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1687testdata/Builtins.lc 473:118-473:126 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1688testdata/Builtins.lc 473:128-473:135 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1689testdata/Builtins.lc 473:137-473:145 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1690testdata/Builtins.lc 473:147-473:154 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1691testdata/Builtins.lc 473:156-473:163 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1692testdata/Builtins.lc 473:165-473:173 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1693testdata/Builtins.lc 473:175-473:183 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1694testdata/Builtins.lc 473:185-473:193 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1695testdata/Builtins.lc 473:195-473:206 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1696testdata/Builtins.lc 475:35-475:72 Type
1697testdata/Builtins.lc 475:35-475:72 V3
1698testdata/Builtins.lc 475:39-475:48 'Nat -> Type->Type
1699testdata/Builtins.lc 475:35-475:72 'Nat
1700testdata/Builtins.lc 475:35-475:72 V1
1701testdata/Builtins.lc 475:51-475:56 Type
1702testdata/Builtins.lc 475:1-475:8 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a->a
1703testdata/Builtins.lc 475:10-475:19 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a->a
1704testdata/Builtins.lc 478:35-478:67 Type
1705testdata/Builtins.lc 478:35-478:67 V3
1706testdata/Builtins.lc 478:39-478:48 'Nat -> Type->Type
1707testdata/Builtins.lc 478:35-478:67 'Nat
1708testdata/Builtins.lc 478:35-478:67 V1
1709testdata/Builtins.lc 478:51-478:56 Type
1710testdata/Builtins.lc 477:1-477:10 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1711testdata/Builtins.lc 477:12-477:21 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1712testdata/Builtins.lc 477:23-477:32 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1713testdata/Builtins.lc 477:34-477:47 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1714testdata/Builtins.lc 477:49-477:57 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1715testdata/Builtins.lc 477:59-477:68 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1716testdata/Builtins.lc 479:35-479:75 Type
1717testdata/Builtins.lc 479:35-479:38 Type->Type
1718testdata/Builtins.lc 479:35-479:75 V5
1719testdata/Builtins.lc 479:35-479:75 V4
1720testdata/Builtins.lc 479:46-479:55 'Nat -> Type->Type
1721testdata/Builtins.lc 479:35-479:75 'Nat
1722testdata/Builtins.lc 479:35-479:75 V2
1723testdata/Builtins.lc 479:1-479:8 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> b->b
1724testdata/Builtins.lc 479:10-479:17 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> b->b
1590testdata/Builtins.lc 480:35-480:75 Type 1725testdata/Builtins.lc 480:35-480:75 Type
1591testdata/Builtins.lc 480:35-480:38 Type->Type 1726testdata/Builtins.lc 480:35-480:38 Type->Type
1592testdata/Builtins.lc 480:35-480:75 V5 1727testdata/Builtins.lc 480:35-480:75 V5
@@ -1594,521 +1729,371 @@ testdata/Builtins.lc 480:35-480:75 V4
1594testdata/Builtins.lc 480:46-480:55 'Nat -> Type->Type 1729testdata/Builtins.lc 480:46-480:55 'Nat -> Type->Type
1595testdata/Builtins.lc 480:35-480:75 'Nat 1730testdata/Builtins.lc 480:35-480:75 'Nat
1596testdata/Builtins.lc 480:35-480:75 V2 1731testdata/Builtins.lc 480:35-480:75 V2
1597testdata/Builtins.lc 480:1-480:8 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> b->b 1732testdata/Builtins.lc 480:1-480:9 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> a->b
1598testdata/Builtins.lc 480:10-480:17 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> b->b 1733testdata/Builtins.lc 480:11-480:19 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> a->b
1599testdata/Builtins.lc 481:35-481:75 Type 1734testdata/Builtins.lc 481:35-481:89 Type
1600testdata/Builtins.lc 481:35-481:38 Type->Type 1735testdata/Builtins.lc 481:35-481:89 V5
1601testdata/Builtins.lc 481:35-481:75 V5 1736testdata/Builtins.lc 481:39-481:48 'Nat -> Type->Type
1602testdata/Builtins.lc 481:35-481:75 V4 1737testdata/Builtins.lc 481:35-481:89 'Nat
1603testdata/Builtins.lc 481:46-481:55 'Nat -> Type->Type 1738testdata/Builtins.lc 481:35-481:89 V3
1604testdata/Builtins.lc 481:35-481:75 'Nat 1739testdata/Builtins.lc 481:51-481:56 Type
1605testdata/Builtins.lc 481:35-481:75 V2 1740testdata/Builtins.lc 481:35-481:89 V2
1606testdata/Builtins.lc 481:1-481:9 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> a->b 1741testdata/Builtins.lc 481:62-481:71 'Nat -> Type->Type
1607testdata/Builtins.lc 481:11-481:19 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> a->b 1742testdata/Builtins.lc 481:74-481:78 Type
1608testdata/Builtins.lc 482:34-482:71 Type 1743testdata/Builtins.lc 481:1-481:10 {a} -> {b:'Nat} -> {c} -> {d : a ~ 'VecScalar b 'Float} -> {e : c ~ 'VecScalar b 'Bool} -> a->c
1609testdata/Builtins.lc 482:34-482:40 Type->Type 1744testdata/Builtins.lc 481:12-481:21 {a} -> {b:'Nat} -> {c} -> {d : a ~ 'VecScalar b 'Float} -> {e : c ~ 'VecScalar b 'Bool} -> a->c
1610testdata/Builtins.lc 482:42-482:58 Type->Type 1745testdata/Builtins.lc 482:35-482:73 Type
1611testdata/Builtins.lc 482:34-482:71 V1 1746testdata/Builtins.lc 482:35-482:41 Type->Type
1612testdata/Builtins.lc 482:1-482:8 {a} -> {b : 'Signed ('MatVecScalarElem a)} -> a->a 1747testdata/Builtins.lc 482:35-482:73 V5
1748testdata/Builtins.lc 482:35-482:73 V4
1749testdata/Builtins.lc 482:49-482:58 'Nat -> Type->Type
1750testdata/Builtins.lc 482:35-482:73 'Nat
1751testdata/Builtins.lc 482:35-482:73 V2
1752testdata/Builtins.lc 482:1-482:8 {a} -> {b} -> {c:'Nat} -> {d : 'Signed a} -> {e : b ~ 'VecScalar c a} -> b->b
1753testdata/Builtins.lc 482:10-482:18 {a} -> {b} -> {c:'Nat} -> {d : 'Signed a} -> {e : b ~ 'VecScalar c a} -> b->b
1754testdata/Builtins.lc 483:35-483:72 Type
1755testdata/Builtins.lc 483:35-483:72 V3
1756testdata/Builtins.lc 483:39-483:48 'Nat -> Type->Type
1757testdata/Builtins.lc 483:35-483:72 'Nat
1758testdata/Builtins.lc 483:35-483:72 V1
1759testdata/Builtins.lc 483:51-483:56 Type
1760testdata/Builtins.lc 483:66-483:72 Type -> Type->Type
1761testdata/Builtins.lc 483:1-483:9 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> 'Tuple2 a a
1613testdata/Builtins.lc 484:35-484:80 Type 1762testdata/Builtins.lc 484:35-484:80 Type
1614testdata/Builtins.lc 484:35-484:43 Type->Type 1763testdata/Builtins.lc 484:35-484:38 Type->Type
1615testdata/Builtins.lc 484:35-484:80 V5 1764testdata/Builtins.lc 484:35-484:80 V5
1616testdata/Builtins.lc 484:35-484:80 V4 1765testdata/Builtins.lc 484:35-484:80 V4
1617testdata/Builtins.lc 484:51-484:60 'Nat -> Type->Type 1766testdata/Builtins.lc 484:46-484:55 'Nat -> Type->Type
1618testdata/Builtins.lc 484:35-484:80 'Nat 1767testdata/Builtins.lc 484:35-484:80 'Nat
1619testdata/Builtins.lc 484:35-484:80 V2 1768testdata/Builtins.lc 484:35-484:80 V2
1620testdata/Builtins.lc 484:1-484:9 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b -> b->b 1769testdata/Builtins.lc 484:1-484:10 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> b -> b->b
1621testdata/Builtins.lc 484:11-484:18 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b -> b->b
1622testdata/Builtins.lc 484:20-484:28 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b -> b->b
1623testdata/Builtins.lc 485:35-485:80 Type 1770testdata/Builtins.lc 485:35-485:80 Type
1624testdata/Builtins.lc 485:35-485:43 Type->Type 1771testdata/Builtins.lc 485:35-485:38 Type->Type
1625testdata/Builtins.lc 485:35-485:80 V5 1772testdata/Builtins.lc 485:35-485:80 V5
1626testdata/Builtins.lc 485:35-485:80 V4 1773testdata/Builtins.lc 485:35-485:80 V4
1627testdata/Builtins.lc 485:51-485:60 'Nat -> Type->Type 1774testdata/Builtins.lc 485:46-485:55 'Nat -> Type->Type
1628testdata/Builtins.lc 485:35-485:80 'Nat 1775testdata/Builtins.lc 485:35-485:80 'Nat
1629testdata/Builtins.lc 485:35-485:80 V2 1776testdata/Builtins.lc 485:35-485:80 V2
1630testdata/Builtins.lc 485:1-485:10 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b -> a->b 1777testdata/Builtins.lc 485:1-485:11 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> a -> a->b
1631testdata/Builtins.lc 485:12-485:20 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b -> a->b 1778testdata/Builtins.lc 486:35-486:77 Type
1632testdata/Builtins.lc 485:22-485:31 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b -> a->b 1779testdata/Builtins.lc 486:35-486:77 V3
1633testdata/Builtins.lc 486:35-486:75 Type 1780testdata/Builtins.lc 486:39-486:48 'Nat -> Type->Type
1634testdata/Builtins.lc 486:35-486:43 Type->Type 1781testdata/Builtins.lc 486:35-486:77 'Nat
1635testdata/Builtins.lc 486:35-486:75 V5 1782testdata/Builtins.lc 486:35-486:77 V1
1636testdata/Builtins.lc 486:35-486:75 V4 1783testdata/Builtins.lc 486:51-486:56 Type
1637testdata/Builtins.lc 486:51-486:60 'Nat -> Type->Type 1784testdata/Builtins.lc 486:1-486:8 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a -> a->a
1638testdata/Builtins.lc 486:35-486:75 'Nat 1785testdata/Builtins.lc 487:35-487:81 Type
1639testdata/Builtins.lc 486:35-486:75 V2 1786testdata/Builtins.lc 487:35-487:81 V3
1640testdata/Builtins.lc 486:1-486:9 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b->b 1787testdata/Builtins.lc 487:39-487:48 'Nat -> Type->Type
1641testdata/Builtins.lc 487:35-487:102 Type 1788testdata/Builtins.lc 487:35-487:81 'Nat
1642testdata/Builtins.lc 487:35-487:43 Type->Type 1789testdata/Builtins.lc 487:35-487:81 V1
1643testdata/Builtins.lc 487:35-487:102 V7 1790testdata/Builtins.lc 487:51-487:56 Type
1644testdata/Builtins.lc 487:35-487:102 V6 1791testdata/Builtins.lc 487:71-487:76 Type
1645testdata/Builtins.lc 487:51-487:60 'Nat -> Type->Type 1792testdata/Builtins.lc 487:1-487:9 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a -> 'Float->a
1646testdata/Builtins.lc 487:35-487:102 'Nat 1793testdata/Builtins.lc 488:35-488:99 Type
1647testdata/Builtins.lc 487:35-487:102 V4 1794testdata/Builtins.lc 488:35-488:99 V5
1648testdata/Builtins.lc 487:35-487:102 V3 1795testdata/Builtins.lc 488:39-488:48 'Nat -> Type->Type
1649testdata/Builtins.lc 487:70-487:79 'Nat -> Type->Type 1796testdata/Builtins.lc 488:35-488:99 'Nat
1650testdata/Builtins.lc 487:82-487:86 Type 1797testdata/Builtins.lc 488:35-488:99 V3
1651testdata/Builtins.lc 487:1-487:12 {a} -> {b} -> {c:'Nat} -> {d} -> {e : 'Integral a} -> {f : b ~ 'VecScalar c a} -> {g : d ~ 'VecScalar c 'Word} -> b -> d->b 1798testdata/Builtins.lc 488:51-488:56 Type
1652testdata/Builtins.lc 487:14-487:25 {a} -> {b} -> {c:'Nat} -> {d} -> {e : 'Integral a} -> {f : b ~ 'VecScalar c a} -> {g : d ~ 'VecScalar c 'Word} -> b -> d->b 1799testdata/Builtins.lc 488:35-488:99 V2
1653testdata/Builtins.lc 488:35-488:83 Type 1800testdata/Builtins.lc 488:62-488:71 'Nat -> Type->Type
1654testdata/Builtins.lc 488:35-488:43 Type->Type
1655testdata/Builtins.lc 488:35-488:83 V5
1656testdata/Builtins.lc 488:35-488:83 V4
1657testdata/Builtins.lc 488:51-488:60 'Nat -> Type->Type
1658testdata/Builtins.lc 488:35-488:83 'Nat
1659testdata/Builtins.lc 488:35-488:83 V2
1660testdata/Builtins.lc 488:74-488:78 Type 1801testdata/Builtins.lc 488:74-488:78 Type
1661testdata/Builtins.lc 488:1-488:13 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b -> 'Word->b 1802testdata/Builtins.lc 488:1-488:9 {a} -> {b:'Nat} -> {c} -> {d : a ~ 'VecScalar b 'Float} -> {e : c ~ 'VecScalar b 'Bool} -> a -> a -> c->a
1662testdata/Builtins.lc 488:15-488:27 {a} -> {b} -> {c:'Nat} -> {d : 'Integral a} -> {e : b ~ 'VecScalar c a} -> b -> 'Word->b 1803testdata/Builtins.lc 489:35-489:68 Type
1663testdata/Builtins.lc 490:34-490:38 Type 1804testdata/Builtins.lc 489:35-489:68 V3
1664testdata/Builtins.lc 490:42-490:54 Type 1805testdata/Builtins.lc 489:39-489:44 'Nat -> Type->Type
1665testdata/Builtins.lc 490:42-490:46 Type 1806testdata/Builtins.lc 489:35-489:68 'Nat
1666testdata/Builtins.lc 490:50-490:54 Type 1807testdata/Builtins.lc 489:35-489:68 V1
1667testdata/Builtins.lc 490:1-490:8 'Bool -> 'Bool->'Bool 1808testdata/Builtins.lc 489:47-489:52 Type
1668testdata/Builtins.lc 490:10-490:16 'Bool -> 'Bool->'Bool 1809testdata/Builtins.lc 489:1-489:9 {a} -> {b:'Nat} -> {c : a ~ 'VecS 'Float b} -> a -> a->a
1669testdata/Builtins.lc 490:18-490:25 'Bool -> 'Bool->'Bool 1810testdata/Builtins.lc 490:35-490:76 Type
1670testdata/Builtins.lc 491:35-491:66 Type 1811testdata/Builtins.lc 490:35-490:76 V3
1671testdata/Builtins.lc 491:35-491:66 V3 1812testdata/Builtins.lc 490:39-490:48 'Nat -> Type->Type
1672testdata/Builtins.lc 491:39-491:48 'Nat -> Type->Type 1813testdata/Builtins.lc 490:35-490:76 'Nat
1673testdata/Builtins.lc 491:35-491:66 'Nat 1814testdata/Builtins.lc 490:35-490:76 V1
1674testdata/Builtins.lc 491:35-491:66 V1 1815testdata/Builtins.lc 490:51-490:56 Type
1675testdata/Builtins.lc 491:51-491:55 Type 1816testdata/Builtins.lc 490:61-490:66 Type
1676testdata/Builtins.lc 491:1-491:8 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Bool} -> a->a 1817testdata/Builtins.lc 490:1-490:10 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> 'Float -> a->a
1677testdata/Builtins.lc 492:34-492:58 Type 1818testdata/Builtins.lc 491:35-491:73 Type
1678testdata/Builtins.lc 492:34-492:43 'Nat -> Type->Type 1819testdata/Builtins.lc 491:35-491:73 V3
1679testdata/Builtins.lc 492:34-492:58 'Nat 1820testdata/Builtins.lc 491:39-491:44 'Nat -> Type->Type
1680testdata/Builtins.lc 492:34-492:58 V1 1821testdata/Builtins.lc 491:35-491:73 'Nat
1681testdata/Builtins.lc 492:46-492:50 Type 1822testdata/Builtins.lc 491:35-491:73 V1
1682testdata/Builtins.lc 492:54-492:58 Type 1823testdata/Builtins.lc 491:47-491:52 Type
1683testdata/Builtins.lc 492:1-492:8 {a:'Nat} -> 'VecScalar a 'Bool -> 'Bool 1824testdata/Builtins.lc 491:1-491:15 {a} -> {b:'Nat} -> {c : a ~ 'VecS 'Float b} -> a -> a -> a->a
1684testdata/Builtins.lc 492:10-492:17 {a:'Nat} -> 'VecScalar a 'Bool -> 'Bool 1825testdata/Builtins.lc 492:35-492:85 Type
1685testdata/Builtins.lc 496:35-496:67 Type 1826testdata/Builtins.lc 492:35-492:85 V3
1686testdata/Builtins.lc 496:35-496:67 V3 1827testdata/Builtins.lc 492:39-492:48 'Nat -> Type->Type
1687testdata/Builtins.lc 496:39-496:48 'Nat -> Type->Type 1828testdata/Builtins.lc 492:35-492:85 'Nat
1688testdata/Builtins.lc 496:35-496:67 'Nat 1829testdata/Builtins.lc 492:35-492:85 V1
1689testdata/Builtins.lc 496:35-496:67 V1 1830testdata/Builtins.lc 492:51-492:56 Type
1690testdata/Builtins.lc 496:51-496:56 Type 1831testdata/Builtins.lc 492:61-492:66 Type
1691testdata/Builtins.lc 495:1-495:9 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1832testdata/Builtins.lc 492:70-492:75 Type
1692testdata/Builtins.lc 495:11-495:20 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1833testdata/Builtins.lc 492:1-492:16 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> 'Float -> 'Float -> a->a
1693testdata/Builtins.lc 495:22-495:30 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1834testdata/Builtins.lc 495:34-495:70 Type
1694testdata/Builtins.lc 495:32-495:41 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1835testdata/Builtins.lc 495:34-495:43 'Nat -> Type->Type
1695testdata/Builtins.lc 495:43-495:51 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1836testdata/Builtins.lc 495:34-495:70 'Nat
1696testdata/Builtins.lc 495:53-495:62 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1837testdata/Builtins.lc 495:34-495:70 V1
1697testdata/Builtins.lc 495:64-495:71 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1838testdata/Builtins.lc 495:46-495:51 Type
1698testdata/Builtins.lc 495:73-495:81 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1839testdata/Builtins.lc 495:55-495:64 'Nat -> Type->Type
1699testdata/Builtins.lc 495:83-495:94 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1840testdata/Builtins.lc 495:67-495:70 Type
1700testdata/Builtins.lc 495:96-495:107 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1841testdata/Builtins.lc 495:1-495:19 {a:'Nat} -> 'VecScalar a 'Float -> 'VecScalar a 'Int
1701testdata/Builtins.lc 495:109-495:116 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1842testdata/Builtins.lc 496:34-496:71 Type
1702testdata/Builtins.lc 495:118-495:126 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1843testdata/Builtins.lc 496:34-496:43 'Nat -> Type->Type
1703testdata/Builtins.lc 495:128-495:135 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1844testdata/Builtins.lc 496:34-496:71 'Nat
1704testdata/Builtins.lc 495:137-495:145 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1845testdata/Builtins.lc 496:34-496:71 V1
1705testdata/Builtins.lc 495:147-495:154 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1846testdata/Builtins.lc 496:46-496:51 Type
1706testdata/Builtins.lc 495:156-495:163 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1847testdata/Builtins.lc 496:55-496:64 'Nat -> Type->Type
1707testdata/Builtins.lc 495:165-495:173 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1848testdata/Builtins.lc 496:67-496:71 Type
1708testdata/Builtins.lc 495:175-495:183 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1849testdata/Builtins.lc 496:1-496:20 {a:'Nat} -> 'VecScalar a 'Float -> 'VecScalar a 'Word
1709testdata/Builtins.lc 495:185-495:193 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1850testdata/Builtins.lc 497:34-497:72 Type
1710testdata/Builtins.lc 495:195-495:206 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1851testdata/Builtins.lc 497:34-497:43 'Nat -> Type->Type
1711testdata/Builtins.lc 497:35-497:72 Type 1852testdata/Builtins.lc 497:34-497:72 'Nat
1712testdata/Builtins.lc 497:35-497:72 V3 1853testdata/Builtins.lc 497:34-497:72 V1
1713testdata/Builtins.lc 497:39-497:48 'Nat -> Type->Type 1854testdata/Builtins.lc 497:46-497:49 Type
1714testdata/Builtins.lc 497:35-497:72 'Nat 1855testdata/Builtins.lc 497:55-497:64 'Nat -> Type->Type
1715testdata/Builtins.lc 497:35-497:72 V1 1856testdata/Builtins.lc 497:67-497:72 Type
1716testdata/Builtins.lc 497:51-497:56 Type 1857testdata/Builtins.lc 497:1-497:19 {a:'Nat} -> 'VecScalar a 'Int -> 'VecScalar a 'Float
1717testdata/Builtins.lc 497:1-497:8 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a->a 1858testdata/Builtins.lc 498:34-498:72 Type
1718testdata/Builtins.lc 497:10-497:19 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a->a 1859testdata/Builtins.lc 498:34-498:43 'Nat -> Type->Type
1719testdata/Builtins.lc 500:35-500:67 Type 1860testdata/Builtins.lc 498:34-498:72 'Nat
1720testdata/Builtins.lc 500:35-500:67 V3 1861testdata/Builtins.lc 498:34-498:72 V1
1862testdata/Builtins.lc 498:46-498:50 Type
1863testdata/Builtins.lc 498:55-498:64 'Nat -> Type->Type
1864testdata/Builtins.lc 498:67-498:72 Type
1865testdata/Builtins.lc 498:1-498:20 {a:'Nat} -> 'VecScalar a 'Word -> 'VecScalar a 'Float
1866testdata/Builtins.lc 500:35-500:71 Type
1867testdata/Builtins.lc 500:35-500:71 V3
1721testdata/Builtins.lc 500:39-500:48 'Nat -> Type->Type 1868testdata/Builtins.lc 500:39-500:48 'Nat -> Type->Type
1722testdata/Builtins.lc 500:35-500:67 'Nat 1869testdata/Builtins.lc 500:35-500:71 'Nat
1723testdata/Builtins.lc 500:35-500:67 V1 1870testdata/Builtins.lc 500:35-500:71 V1
1724testdata/Builtins.lc 500:51-500:56 Type 1871testdata/Builtins.lc 500:51-500:56 Type
1725testdata/Builtins.lc 499:1-499:10 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1872testdata/Builtins.lc 500:66-500:71 Type
1726testdata/Builtins.lc 499:12-499:21 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1873testdata/Builtins.lc 500:1-500:11 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->'Float
1727testdata/Builtins.lc 499:23-499:32 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1874testdata/Builtins.lc 501:35-501:76 Type
1728testdata/Builtins.lc 499:34-499:47 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1875testdata/Builtins.lc 501:35-501:76 V3
1729testdata/Builtins.lc 499:49-499:57 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1876testdata/Builtins.lc 501:39-501:48 'Nat -> Type->Type
1730testdata/Builtins.lc 499:59-499:68 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 1877testdata/Builtins.lc 501:35-501:76 'Nat
1731testdata/Builtins.lc 501:35-501:75 Type 1878testdata/Builtins.lc 501:35-501:76 V1
1732testdata/Builtins.lc 501:35-501:38 Type->Type 1879testdata/Builtins.lc 501:51-501:56 Type
1733testdata/Builtins.lc 501:35-501:75 V5 1880testdata/Builtins.lc 501:71-501:76 Type
1734testdata/Builtins.lc 501:35-501:75 V4 1881testdata/Builtins.lc 501:1-501:13 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a->'Float
1735testdata/Builtins.lc 501:46-501:55 'Nat -> Type->Type 1882testdata/Builtins.lc 501:15-501:22 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a->'Float
1736testdata/Builtins.lc 501:35-501:75 'Nat 1883testdata/Builtins.lc 502:35-502:72 Type
1737testdata/Builtins.lc 501:35-501:75 V2 1884testdata/Builtins.lc 502:35-502:72 V1
1738testdata/Builtins.lc 501:1-501:8 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> b->b 1885testdata/Builtins.lc 502:39-502:56 Type
1739testdata/Builtins.lc 501:10-501:17 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> b->b 1886testdata/Builtins.lc 502:39-502:48 'Nat -> Type->Type
1740testdata/Builtins.lc 502:35-502:75 Type 1887testdata/Builtins.lc 502:51-502:56 Type
1741testdata/Builtins.lc 502:35-502:38 Type->Type 1888testdata/Builtins.lc 502:1-502:10 {a} -> {b : a ~ 'VecS 'Float (Succ (Succ (Succ Zero)))} -> a -> a->a
1742testdata/Builtins.lc 502:35-502:75 V5 1889testdata/Builtins.lc 503:35-503:67 Type
1743testdata/Builtins.lc 502:35-502:75 V4 1890testdata/Builtins.lc 503:35-503:67 V3
1744testdata/Builtins.lc 502:46-502:55 'Nat -> Type->Type
1745testdata/Builtins.lc 502:35-502:75 'Nat
1746testdata/Builtins.lc 502:35-502:75 V2
1747testdata/Builtins.lc 502:1-502:9 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> a->b
1748testdata/Builtins.lc 502:11-502:19 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> a->b
1749testdata/Builtins.lc 503:35-503:89 Type
1750testdata/Builtins.lc 503:35-503:89 V5
1751testdata/Builtins.lc 503:39-503:48 'Nat -> Type->Type 1891testdata/Builtins.lc 503:39-503:48 'Nat -> Type->Type
1752testdata/Builtins.lc 503:35-503:89 'Nat 1892testdata/Builtins.lc 503:35-503:67 'Nat
1753testdata/Builtins.lc 503:35-503:89 V3 1893testdata/Builtins.lc 503:35-503:67 V1
1754testdata/Builtins.lc 503:51-503:56 Type 1894testdata/Builtins.lc 503:51-503:56 Type
1755testdata/Builtins.lc 503:35-503:89 V2 1895testdata/Builtins.lc 503:1-503:14 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1756testdata/Builtins.lc 503:62-503:71 'Nat -> Type->Type 1896testdata/Builtins.lc 504:35-504:77 Type
1757testdata/Builtins.lc 503:74-503:78 Type 1897testdata/Builtins.lc 504:35-504:77 V3
1758testdata/Builtins.lc 503:1-503:10 {a} -> {b:'Nat} -> {c} -> {d : a ~ 'VecScalar b 'Float} -> {e : c ~ 'VecScalar b 'Bool} -> a->c 1898testdata/Builtins.lc 504:39-504:48 'Nat -> Type->Type
1759testdata/Builtins.lc 503:12-503:21 {a} -> {b:'Nat} -> {c} -> {d : a ~ 'VecScalar b 'Float} -> {e : c ~ 'VecScalar b 'Bool} -> a->c 1899testdata/Builtins.lc 504:35-504:77 'Nat
1760testdata/Builtins.lc 504:35-504:73 Type 1900testdata/Builtins.lc 504:35-504:77 V1
1761testdata/Builtins.lc 504:35-504:41 Type->Type 1901testdata/Builtins.lc 504:51-504:56 Type
1762testdata/Builtins.lc 504:35-504:73 V5 1902testdata/Builtins.lc 504:1-504:16 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a -> a->a
1763testdata/Builtins.lc 504:35-504:73 V4 1903testdata/Builtins.lc 504:18-504:29 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a -> a->a
1764testdata/Builtins.lc 504:49-504:58 'Nat -> Type->Type
1765testdata/Builtins.lc 504:35-504:73 'Nat
1766testdata/Builtins.lc 504:35-504:73 V2
1767testdata/Builtins.lc 504:1-504:8 {a} -> {b} -> {c:'Nat} -> {d : 'Signed a} -> {e : b ~ 'VecScalar c a} -> b->b
1768testdata/Builtins.lc 504:10-504:18 {a} -> {b} -> {c:'Nat} -> {d : 'Signed a} -> {e : b ~ 'VecScalar c a} -> b->b
1769testdata/Builtins.lc 505:35-505:72 Type 1904testdata/Builtins.lc 505:35-505:72 Type
1770testdata/Builtins.lc 505:35-505:72 V3 1905testdata/Builtins.lc 505:35-505:72 V3
1771testdata/Builtins.lc 505:39-505:48 'Nat -> Type->Type 1906testdata/Builtins.lc 505:39-505:48 'Nat -> Type->Type
1772testdata/Builtins.lc 505:35-505:72 'Nat 1907testdata/Builtins.lc 505:35-505:72 'Nat
1773testdata/Builtins.lc 505:35-505:72 V1 1908testdata/Builtins.lc 505:35-505:72 V1
1774testdata/Builtins.lc 505:51-505:56 Type 1909testdata/Builtins.lc 505:51-505:56 Type
1775testdata/Builtins.lc 505:66-505:72 Type -> Type->Type 1910testdata/Builtins.lc 505:1-505:12 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a->a
1776testdata/Builtins.lc 505:1-505:9 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> 'Tuple2 a a 1911testdata/Builtins.lc 507:34-507:56 Type
1777testdata/Builtins.lc 506:35-506:80 Type 1912testdata/Builtins.lc 507:34-507:37 'Nat -> 'Nat -> Type->Type
1778testdata/Builtins.lc 506:35-506:38 Type->Type 1913testdata/Builtins.lc 507:34-507:56 'Nat
1779testdata/Builtins.lc 506:35-506:80 V5 1914testdata/Builtins.lc 507:34-507:56 V5
1780testdata/Builtins.lc 506:35-506:80 V4 1915testdata/Builtins.lc 507:34-507:56 V3
1781testdata/Builtins.lc 506:46-506:55 'Nat -> Type->Type 1916testdata/Builtins.lc 507:34-507:56 V1
1782testdata/Builtins.lc 506:35-506:80 'Nat 1917testdata/Builtins.lc 507:47-507:50 'Nat -> 'Nat -> Type->Type
1783testdata/Builtins.lc 506:35-506:80 V2 1918testdata/Builtins.lc 507:1-507:14 {a:'Nat} -> {b:'Nat} -> {c} -> 'Mat a b c -> 'Mat b a c
1784testdata/Builtins.lc 506:1-506:10 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> b -> b->b 1919testdata/Builtins.lc 508:34-508:52 Type
1785testdata/Builtins.lc 507:35-507:80 Type 1920testdata/Builtins.lc 508:34-508:37 'Nat -> 'Nat -> Type->Type
1786testdata/Builtins.lc 507:35-507:38 Type->Type 1921testdata/Builtins.lc 508:34-508:52 'Nat
1787testdata/Builtins.lc 507:35-507:80 V5 1922testdata/Builtins.lc 508:34-508:52 V3
1788testdata/Builtins.lc 507:35-507:80 V4 1923testdata/Builtins.lc 508:34-508:52 V1
1789testdata/Builtins.lc 507:46-507:55 'Nat -> Type->Type 1924testdata/Builtins.lc 508:47-508:52 Type
1790testdata/Builtins.lc 507:35-507:80 'Nat 1925testdata/Builtins.lc 508:1-508:16 {a:'Nat} -> {b} -> 'Mat a a b -> 'Float
1791testdata/Builtins.lc 507:35-507:80 V2 1926testdata/Builtins.lc 509:34-509:56 Type
1792testdata/Builtins.lc 507:1-507:11 {a} -> {b} -> {c:'Nat} -> {d : 'Num a} -> {e : b ~ 'VecScalar c a} -> b -> a -> a->b 1927testdata/Builtins.lc 509:34-509:37 'Nat -> 'Nat -> Type->Type
1793testdata/Builtins.lc 508:35-508:77 Type 1928testdata/Builtins.lc 509:34-509:56 'Nat
1794testdata/Builtins.lc 508:35-508:77 V3 1929testdata/Builtins.lc 509:34-509:56 V3
1795testdata/Builtins.lc 508:39-508:48 'Nat -> Type->Type 1930testdata/Builtins.lc 509:34-509:56 V1
1796testdata/Builtins.lc 508:35-508:77 'Nat 1931testdata/Builtins.lc 509:47-509:50 'Nat -> 'Nat -> Type->Type
1797testdata/Builtins.lc 508:35-508:77 V1 1932testdata/Builtins.lc 509:1-509:12 {a:'Nat} -> {b} -> 'Mat a a b -> 'Mat a a b
1798testdata/Builtins.lc 508:51-508:56 Type 1933testdata/Builtins.lc 510:34-510:69 Type
1799testdata/Builtins.lc 508:1-508:8 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a -> a->a 1934testdata/Builtins.lc 510:34-510:37 'Nat -> Type->Type
1800testdata/Builtins.lc 509:35-509:81 Type 1935testdata/Builtins.lc 510:34-510:69 'Nat
1801testdata/Builtins.lc 509:35-509:81 V3 1936testdata/Builtins.lc 510:34-510:69 V5
1802testdata/Builtins.lc 509:39-509:48 'Nat -> Type->Type 1937testdata/Builtins.lc 510:34-510:69 V3
1803testdata/Builtins.lc 509:35-509:81 'Nat 1938testdata/Builtins.lc 510:47-510:50 'Nat -> Type->Type
1804testdata/Builtins.lc 509:35-509:81 V1 1939testdata/Builtins.lc 510:34-510:69 V2
1805testdata/Builtins.lc 509:51-509:56 Type 1940testdata/Builtins.lc 510:60-510:63 'Nat -> 'Nat -> Type->Type
1806testdata/Builtins.lc 509:71-509:76 Type 1941testdata/Builtins.lc 510:1-510:17 {a:'Nat} -> {b} -> {c:'Nat} -> 'VecS b a -> 'VecS b c -> 'Mat c a b
1807testdata/Builtins.lc 509:1-509:9 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a -> 'Float->a 1942testdata/Builtins.lc 511:34-511:67 Type
1808testdata/Builtins.lc 510:35-510:99 Type 1943testdata/Builtins.lc 511:34-511:37 'Nat -> 'Nat -> Type->Type
1809testdata/Builtins.lc 510:35-510:99 V5 1944testdata/Builtins.lc 511:34-511:67 'Nat
1810testdata/Builtins.lc 510:39-510:48 'Nat -> Type->Type 1945testdata/Builtins.lc 511:34-511:67 V5
1811testdata/Builtins.lc 510:35-510:99 'Nat 1946testdata/Builtins.lc 511:34-511:67 V3
1812testdata/Builtins.lc 510:35-510:99 V3 1947testdata/Builtins.lc 511:34-511:67 V1
1813testdata/Builtins.lc 510:51-510:56 Type 1948testdata/Builtins.lc 511:47-511:50 'Nat -> Type->Type
1814testdata/Builtins.lc 510:35-510:99 V2 1949testdata/Builtins.lc 511:60-511:63 'Nat -> Type->Type
1815testdata/Builtins.lc 510:62-510:71 'Nat -> Type->Type 1950testdata/Builtins.lc 511:1-511:14 {a:'Nat} -> {b:'Nat} -> {c} -> 'Mat a b c -> 'VecS c b -> 'VecS c a
1816testdata/Builtins.lc 510:74-510:78 Type 1951testdata/Builtins.lc 512:34-512:67 Type
1817testdata/Builtins.lc 510:1-510:9 {a} -> {b:'Nat} -> {c} -> {d : a ~ 'VecScalar b 'Float} -> {e : c ~ 'VecScalar b 'Bool} -> a -> a -> c->a 1952testdata/Builtins.lc 512:34-512:37 'Nat -> Type->Type
1818testdata/Builtins.lc 511:35-511:68 Type 1953testdata/Builtins.lc 512:34-512:67 'Nat
1819testdata/Builtins.lc 511:35-511:68 V3 1954testdata/Builtins.lc 512:34-512:67 V5
1820testdata/Builtins.lc 511:39-511:44 'Nat -> Type->Type 1955testdata/Builtins.lc 512:34-512:67 V3
1821testdata/Builtins.lc 511:35-511:68 'Nat 1956testdata/Builtins.lc 512:47-512:50 'Nat -> 'Nat -> Type->Type
1822testdata/Builtins.lc 511:35-511:68 V1 1957testdata/Builtins.lc 512:34-512:67 V2
1823testdata/Builtins.lc 511:47-511:52 Type 1958testdata/Builtins.lc 512:60-512:63 'Nat -> Type->Type
1824testdata/Builtins.lc 511:1-511:9 {a} -> {b:'Nat} -> {c : a ~ 'VecS 'Float b} -> a -> a->a 1959testdata/Builtins.lc 512:1-512:14 {a:'Nat} -> {b} -> {c:'Nat} -> 'VecS b a -> 'Mat a c b -> 'VecS b c
1825testdata/Builtins.lc 512:35-512:76 Type 1960testdata/Builtins.lc 513:34-513:69 Type
1826testdata/Builtins.lc 512:35-512:76 V3 1961testdata/Builtins.lc 513:34-513:37 'Nat -> 'Nat -> Type->Type
1827testdata/Builtins.lc 512:39-512:48 'Nat -> Type->Type 1962testdata/Builtins.lc 513:34-513:69 'Nat
1828testdata/Builtins.lc 512:35-512:76 'Nat 1963testdata/Builtins.lc 513:34-513:69 V7
1829testdata/Builtins.lc 512:35-512:76 V1 1964testdata/Builtins.lc 513:34-513:69 V5
1830testdata/Builtins.lc 512:51-512:56 Type 1965testdata/Builtins.lc 513:34-513:69 V3
1831testdata/Builtins.lc 512:61-512:66 Type 1966testdata/Builtins.lc 513:47-513:50 'Nat -> 'Nat -> Type->Type
1832testdata/Builtins.lc 512:1-512:10 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> 'Float -> a->a 1967testdata/Builtins.lc 513:34-513:69 V2
1833testdata/Builtins.lc 513:35-513:73 Type 1968testdata/Builtins.lc 513:60-513:63 'Nat -> 'Nat -> Type->Type
1834testdata/Builtins.lc 513:35-513:73 V3 1969testdata/Builtins.lc 513:1-513:14 {a:'Nat} -> {b:'Nat} -> {c} -> {d:'Nat} -> 'Mat a b c -> 'Mat b d c -> 'Mat a d c
1835testdata/Builtins.lc 513:39-513:44 'Nat -> Type->Type 1970testdata/Builtins.lc 516:35-516:97 Type
1836testdata/Builtins.lc 513:35-513:73 'Nat 1971testdata/Builtins.lc 516:35-516:38 Type->Type
1837testdata/Builtins.lc 513:35-513:73 V1 1972testdata/Builtins.lc 516:35-516:97 V7
1838testdata/Builtins.lc 513:47-513:52 Type 1973testdata/Builtins.lc 516:35-516:97 V6
1839testdata/Builtins.lc 513:1-513:15 {a} -> {b:'Nat} -> {c : a ~ 'VecS 'Float b} -> a -> a -> a->a 1974testdata/Builtins.lc 516:46-516:55 'Nat -> Type->Type
1840testdata/Builtins.lc 514:35-514:85 Type 1975testdata/Builtins.lc 516:35-516:97 'Nat
1841testdata/Builtins.lc 514:35-514:85 V3 1976testdata/Builtins.lc 516:35-516:97 V4
1842testdata/Builtins.lc 514:39-514:48 'Nat -> Type->Type 1977testdata/Builtins.lc 516:35-516:97 V3
1843testdata/Builtins.lc 514:35-514:85 'Nat 1978testdata/Builtins.lc 516:65-516:74 'Nat -> Type->Type
1844testdata/Builtins.lc 514:35-514:85 V1 1979testdata/Builtins.lc 516:77-516:81 Type
1845testdata/Builtins.lc 514:51-514:56 Type 1980testdata/Builtins.lc 515:1-515:13 {a} -> {b} -> {c:'Nat} -> {d} -> {e : 'Num a} -> {f : b ~ 'VecScalar c a} -> {g : d ~ 'VecScalar c 'Bool} -> b -> b->d
1846testdata/Builtins.lc 514:61-514:66 Type 1981testdata/Builtins.lc 515:15-515:32 {a} -> {b} -> {c:'Nat} -> {d} -> {e : 'Num a} -> {f : b ~ 'VecScalar c a} -> {g : d ~ 'VecScalar c 'Bool} -> b -> b->d
1847testdata/Builtins.lc 514:70-514:75 Type 1982testdata/Builtins.lc 515:34-515:49 {a} -> {b} -> {c:'Nat} -> {d} -> {e : 'Num a} -> {f : b ~ 'VecScalar c a} -> {g : d ~ 'VecScalar c 'Bool} -> b -> b->d
1848testdata/Builtins.lc 514:1-514:16 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> 'Float -> 'Float -> a->a 1983testdata/Builtins.lc 515:51-515:71 {a} -> {b} -> {c:'Nat} -> {d} -> {e : 'Num a} -> {f : b ~ 'VecScalar c a} -> {g : d ~ 'VecScalar c 'Bool} -> b -> b->d
1849testdata/Builtins.lc 517:34-517:70 Type 1984testdata/Builtins.lc 515:73-515:83 {a} -> {b} -> {c:'Nat} -> {d} -> {e : 'Num a} -> {f : b ~ 'VecScalar c a} -> {g : d ~ 'VecScalar c 'Bool} -> b -> b->d
1850testdata/Builtins.lc 517:34-517:43 'Nat -> Type->Type 1985testdata/Builtins.lc 515:85-515:98 {a} -> {b} -> {c:'Nat} -> {d} -> {e : 'Num a} -> {f : b ~ 'VecScalar c a} -> {g : d ~ 'VecScalar c 'Bool} -> b -> b->d
1851testdata/Builtins.lc 517:34-517:70 'Nat 1986testdata/Builtins.lc 517:35-517:76 Type
1852testdata/Builtins.lc 517:34-517:70 V1 1987testdata/Builtins.lc 517:35-517:76 V3
1853testdata/Builtins.lc 517:46-517:51 Type 1988testdata/Builtins.lc 517:39-517:55 Type->Type
1854testdata/Builtins.lc 517:55-517:64 'Nat -> Type->Type 1989testdata/Builtins.lc 517:35-517:76 V1
1855testdata/Builtins.lc 517:67-517:70 Type 1990testdata/Builtins.lc 517:72-517:76 Type
1856testdata/Builtins.lc 517:1-517:19 {a:'Nat} -> 'VecScalar a 'Float -> 'VecScalar a 'Int 1991testdata/Builtins.lc 517:1-517:10 {a} -> {b} -> {c : a ~ 'MatVecScalarElem b} -> b -> b->'Bool
1857testdata/Builtins.lc 518:34-518:71 Type 1992testdata/Builtins.lc 517:12-517:24 {a} -> {b} -> {c : a ~ 'MatVecScalarElem b} -> b -> b->'Bool
1858testdata/Builtins.lc 518:34-518:43 'Nat -> Type->Type 1993testdata/Builtins.lc 520:35-520:67 Type
1859testdata/Builtins.lc 518:34-518:71 'Nat 1994testdata/Builtins.lc 520:35-520:67 V3
1860testdata/Builtins.lc 518:34-518:71 V1 1995testdata/Builtins.lc 520:39-520:48 'Nat -> Type->Type
1861testdata/Builtins.lc 518:46-518:51 Type 1996testdata/Builtins.lc 520:35-520:67 'Nat
1862testdata/Builtins.lc 518:55-518:64 'Nat -> Type->Type 1997testdata/Builtins.lc 520:35-520:67 V1
1863testdata/Builtins.lc 518:67-518:71 Type 1998testdata/Builtins.lc 520:51-520:56 Type
1864testdata/Builtins.lc 518:1-518:20 {a:'Nat} -> 'VecScalar a 'Float -> 'VecScalar a 'Word 1999testdata/Builtins.lc 519:1-519:9 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1865testdata/Builtins.lc 519:34-519:72 Type 2000testdata/Builtins.lc 519:11-519:19 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1866testdata/Builtins.lc 519:34-519:43 'Nat -> Type->Type 2001testdata/Builtins.lc 519:21-519:31 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
1867testdata/Builtins.lc 519:34-519:72 'Nat 2002testdata/Builtins.lc 522:34-522:60 Type
1868testdata/Builtins.lc 519:34-519:72 V1 2003testdata/Builtins.lc 522:34-522:43 'Nat -> Type->Type
1869testdata/Builtins.lc 519:46-519:49 Type 2004testdata/Builtins.lc 522:34-522:60 'Nat
1870testdata/Builtins.lc 519:55-519:64 'Nat -> Type->Type 2005testdata/Builtins.lc 522:34-522:60 V1
1871testdata/Builtins.lc 519:67-519:72 Type 2006testdata/Builtins.lc 522:46-522:51 Type
1872testdata/Builtins.lc 519:1-519:19 {a:'Nat} -> 'VecScalar a 'Int -> 'VecScalar a 'Float 2007testdata/Builtins.lc 522:55-522:60 Type
1873testdata/Builtins.lc 520:34-520:72 Type 2008testdata/Builtins.lc 522:1-522:11 {a:'Nat} -> 'VecScalar a 'Float -> 'Float
1874testdata/Builtins.lc 520:34-520:43 'Nat -> Type->Type 2009testdata/Builtins.lc 523:34-523:66 Type
1875testdata/Builtins.lc 520:34-520:72 'Nat 2010testdata/Builtins.lc 523:34-523:43 'Nat -> Type->Type
1876testdata/Builtins.lc 520:34-520:72 V1 2011testdata/Builtins.lc 523:34-523:66 'Nat
1877testdata/Builtins.lc 520:46-520:50 Type 2012testdata/Builtins.lc 523:34-523:66 V1
1878testdata/Builtins.lc 520:55-520:64 'Nat -> Type->Type 2013testdata/Builtins.lc 523:46-523:51 Type
1879testdata/Builtins.lc 520:67-520:72 Type 2014testdata/Builtins.lc 523:55-523:66 Type
1880testdata/Builtins.lc 520:1-520:20 {a:'Nat} -> 'VecScalar a 'Word -> 'VecScalar a 'Float 2015testdata/Builtins.lc 523:55-523:58 'Nat -> Type->Type
1881testdata/Builtins.lc 522:35-522:71 Type 2016testdata/Builtins.lc 523:61-523:66 Type
1882testdata/Builtins.lc 522:35-522:71 V3 2017testdata/Builtins.lc 523:1-523:11 {a:'Nat} -> 'VecScalar a 'Float -> 'VecS 'Float (Succ (Succ Zero))
1883testdata/Builtins.lc 522:39-522:48 'Nat -> Type->Type 2018testdata/Builtins.lc 524:34-524:66 Type
1884testdata/Builtins.lc 522:35-522:71 'Nat 2019testdata/Builtins.lc 524:34-524:43 'Nat -> Type->Type
1885testdata/Builtins.lc 522:35-522:71 V1 2020testdata/Builtins.lc 524:34-524:66 'Nat
1886testdata/Builtins.lc 522:51-522:56 Type 2021testdata/Builtins.lc 524:34-524:66 V1
1887testdata/Builtins.lc 522:66-522:71 Type 2022testdata/Builtins.lc 524:46-524:51 Type
1888testdata/Builtins.lc 522:1-522:11 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->'Float 2023testdata/Builtins.lc 524:55-524:66 Type
1889testdata/Builtins.lc 523:35-523:76 Type 2024testdata/Builtins.lc 524:55-524:58 'Nat -> Type->Type
1890testdata/Builtins.lc 523:35-523:76 V3 2025testdata/Builtins.lc 524:61-524:66 Type
1891testdata/Builtins.lc 523:39-523:48 'Nat -> Type->Type 2026testdata/Builtins.lc 524:1-524:11 {a:'Nat} -> 'VecScalar a 'Float -> 'VecS 'Float (Succ (Succ (Succ Zero)))
1892testdata/Builtins.lc 523:35-523:76 'Nat 2027testdata/Builtins.lc 525:34-525:66 Type
1893testdata/Builtins.lc 523:35-523:76 V1 2028testdata/Builtins.lc 525:34-525:43 'Nat -> Type->Type
1894testdata/Builtins.lc 523:51-523:56 Type 2029testdata/Builtins.lc 525:34-525:66 'Nat
1895testdata/Builtins.lc 523:71-523:76 Type 2030testdata/Builtins.lc 525:34-525:66 V1
1896testdata/Builtins.lc 523:1-523:13 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a->'Float 2031testdata/Builtins.lc 525:46-525:51 Type
1897testdata/Builtins.lc 523:15-523:22 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a->'Float 2032testdata/Builtins.lc 525:55-525:66 Type
1898testdata/Builtins.lc 524:35-524:72 Type 2033testdata/Builtins.lc 525:55-525:58 'Nat -> Type->Type
1899testdata/Builtins.lc 524:35-524:72 V1 2034testdata/Builtins.lc 525:61-525:66 Type
1900testdata/Builtins.lc 524:39-524:56 Type 2035testdata/Builtins.lc 525:1-525:11 {a:'Nat} -> 'VecScalar a 'Float -> 'VecS 'Float (Succ (Succ (Succ (Succ Zero))))
1901testdata/Builtins.lc 524:39-524:48 'Nat -> Type->Type 2036testdata/Builtins.lc 541:6-541:13 Type
1902testdata/Builtins.lc 524:51-524:56 Type 2037testdata/Builtins.lc 542:20-542:26 Type
1903testdata/Builtins.lc 524:1-524:10 {a} -> {b : a ~ 'VecS 'Float (Succ (Succ (Succ Zero)))} -> a -> a->a 2038testdata/Builtins.lc 543:20-543:27 Type
1904testdata/Builtins.lc 525:35-525:67 Type 2039testdata/Builtins.lc 542:3-542:16 'String->'Texture
1905testdata/Builtins.lc 525:35-525:67 V3 2040testdata/Builtins.lc 545:20-545:23 'Nat -> Type->Type
1906testdata/Builtins.lc 525:39-525:48 'Nat -> Type->Type 2041testdata/Builtins.lc 545:26-545:29 Type
1907testdata/Builtins.lc 525:35-525:67 'Nat 2042testdata/Builtins.lc 546:20-547:27 Type
1908testdata/Builtins.lc 525:35-525:67 V1 2043testdata/Builtins.lc 546:20-546:25 'Nat -> Type->Type
1909testdata/Builtins.lc 525:51-525:56 Type 2044testdata/Builtins.lc 546:29-546:47 Type
1910testdata/Builtins.lc 525:1-525:14 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a 2045testdata/Builtins.lc 546:29-546:34 Type->Type
1911testdata/Builtins.lc 526:35-526:77 Type 2046testdata/Builtins.lc 546:36-546:47 Type
1912testdata/Builtins.lc 526:35-526:77 V3 2047testdata/Builtins.lc 546:36-546:39 'Nat -> Type->Type
1913testdata/Builtins.lc 526:39-526:48 'Nat -> Type->Type 2048testdata/Builtins.lc 546:42-546:47 Type
1914testdata/Builtins.lc 526:35-526:77 'Nat 2049testdata/Builtins.lc 547:20-547:27 Type
1915testdata/Builtins.lc 526:35-526:77 V1 2050testdata/Builtins.lc 545:3-545:12 'VecS 'Int (Succ (Succ Zero)) -> 'Image (Succ Zero) ('Color ('VecS 'Float (Succ (Succ (Succ (Succ Zero)))))) -> 'Texture
1916testdata/Builtins.lc 526:51-526:56 Type 2051testdata/Builtins.lc 549:6-549:12 Type
1917testdata/Builtins.lc 526:1-526:16 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a -> a->a 2052testdata/Builtins.lc 550:5-550:16 'Filter
1918testdata/Builtins.lc 526:18-526:29 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a -> a->a 2053testdata/Builtins.lc 551:5-551:17 'Filter
1919testdata/Builtins.lc 527:35-527:72 Type 2054testdata/Builtins.lc 553:6-553:14 Type
1920testdata/Builtins.lc 527:35-527:72 V3 2055testdata/Builtins.lc 554:5-554:11 'EdgeMode
1921testdata/Builtins.lc 527:39-527:48 'Nat -> Type->Type 2056testdata/Builtins.lc 555:5-555:19 'EdgeMode
1922testdata/Builtins.lc 527:35-527:72 'Nat 2057testdata/Builtins.lc 556:5-556:16 'EdgeMode
1923testdata/Builtins.lc 527:35-527:72 V1 2058testdata/Builtins.lc 558:6-558:13 Type
1924testdata/Builtins.lc 527:51-527:56 Type 2059testdata/Builtins.lc 558:24-558:30 Type
1925testdata/Builtins.lc 527:1-527:12 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a -> a->a 2060testdata/Builtins.lc 558:6-558:47 Type
1926testdata/Builtins.lc 529:34-529:56 Type 2061testdata/Builtins.lc 558:31-558:39 Type
1927testdata/Builtins.lc 529:34-529:37 'Nat -> 'Nat -> Type->Type 2062testdata/Builtins.lc 558:40-558:47 Type
1928testdata/Builtins.lc 529:34-529:56 'Nat 2063testdata/Builtins.lc 558:16-558:23 'Filter -> 'EdgeMode -> 'Texture->'Sampler
1929testdata/Builtins.lc 529:34-529:56 V5 2064testdata/Builtins.lc 561:14-561:21 Type
1930testdata/Builtins.lc 529:34-529:56 V3 2065testdata/Builtins.lc 561:25-561:51 Type
1931testdata/Builtins.lc 529:34-529:56 V1 2066testdata/Builtins.lc 561:25-561:28 'Nat -> Type->Type
1932testdata/Builtins.lc 529:47-529:50 'Nat -> 'Nat -> Type->Type 2067testdata/Builtins.lc 561:31-561:36 Type
1933testdata/Builtins.lc 529:1-529:14 {a:'Nat} -> {b:'Nat} -> {c} -> 'Mat a b c -> 'Mat b a c 2068testdata/Builtins.lc 561:40-561:51 Type
1934testdata/Builtins.lc 530:34-530:52 Type 2069testdata/Builtins.lc 561:40-561:43 'Nat -> Type->Type
1935testdata/Builtins.lc 530:34-530:37 'Nat -> 'Nat -> Type->Type 2070testdata/Builtins.lc 561:46-561:51 Type
1936testdata/Builtins.lc 530:34-530:52 'Nat 2071testdata/Builtins.lc 561:1-561:10 'Sampler -> 'VecS 'Float (Succ (Succ Zero)) -> 'VecS 'Float (Succ (Succ (Succ (Succ Zero))))
1937testdata/Builtins.lc 530:34-530:52 V3 2072testdata/Builtins.lc 564:30-564:45 {a} -> {b} -> (a -> 'Stream b) -> 'Stream a -> 'Stream b
1938testdata/Builtins.lc 530:34-530:52 V1 2073testdata/Builtins.lc 564:47-564:66 V1 -> 'Stream V1
1939testdata/Builtins.lc 530:47-530:52 Type 2074testdata/Builtins.lc 564:47-564:57 {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 -> 'Stream ('Fragment (Succ Zero) a)
1940testdata/Builtins.lc 530:1-530:16 {a:'Nat} -> {b} -> 'Mat a a b -> 'Float 2075testdata/Builtins.lc 564:59-564:66 'JoinTupleType ('VecS 'Float (Succ (Succ (Succ (Succ Zero))))) ('InterpolatedType V1) -> 'Float
1941testdata/Builtins.lc 531:34-531:56 Type 2076testdata/Builtins.lc 564:65-564:66 'Float
1942testdata/Builtins.lc 531:34-531:37 'Nat -> 'Nat -> Type->Type 2077testdata/Builtins.lc 564:65-564:66 'Int
1943testdata/Builtins.lc 531:34-531:56 'Nat 2078testdata/Builtins.lc 564:1-564:20 {a} -> {b:'PrimitiveType} -> 'RasterContext b -> a -> 'Stream ('Primitive b ('JoinTupleType ('VecS 'Float (Succ (Succ (Succ (Succ Zero))))) ('InterpolatedType a))) -> 'Stream ('Fragment (Succ Zero) ('InterpolatedType a))
1944testdata/Builtins.lc 531:34-531:56 V3 2079testdata/Builtins.lc 565:46-565:61 {a} -> {b} -> (a -> 'Stream b) -> 'Stream a -> 'Stream b
1945testdata/Builtins.lc 531:34-531:56 V1 2080testdata/Builtins.lc 565:63-565:73 V1 -> 'Stream V1
1946testdata/Builtins.lc 531:47-531:50 'Nat -> 'Nat -> Type->Type 2081testdata/Builtins.lc 565:63-565:73 {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 -> 'Stream ('Fragment (Succ Zero) a)
1947testdata/Builtins.lc 531:1-531:12 {a:'Nat} -> {b} -> 'Mat a a b -> 'Mat a a b 2082testdata/Builtins.lc 565:1-565: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) ('InterpolatedType a))
1948testdata/Builtins.lc 532:34-532:69 Type 2083testdata/Builtins.lc 566:24-566:32 {a} -> {b} -> a -> b -> 'Tuple2 a b
1949testdata/Builtins.lc 532:34-532:37 'Nat -> Type->Type 2084testdata/Builtins.lc 566:1-566:15 {a} -> {b} -> a -> b -> 'Tuple2 a b
1950testdata/Builtins.lc 532:34-532:69 'Nat 2085testdata/Builtins.lc 567:25-567:35 V2 -> V2->V2
1951testdata/Builtins.lc 532:34-532:69 V5 2086testdata/Builtins.lc 567:25-567:35 V2->V2
1952testdata/Builtins.lc 532:34-532:69 V3 2087testdata/Builtins.lc 567:25-567:35 V2
1953testdata/Builtins.lc 532:47-532:50 'Nat -> Type->Type 2088testdata/Builtins.lc 567:25-567:35 {a:'Nat} -> {b} -> 'FragOps' b -> 'Stream ('Fragment a ('RemSemantics b)) -> 'FrameBuffer a b -> 'FrameBuffer a b
1954testdata/Builtins.lc 532:34-532:69 V2 2089testdata/Builtins.lc 567:13-567:21 'Tuple2 ('FragOps' V0) ('Stream ('Fragment V1 ('RemSemantics V0)))
1955testdata/Builtins.lc 532:60-532:63 'Nat -> 'Nat -> Type->Type 2090testdata/Builtins.lc 567:13-567:21 V3
1956testdata/Builtins.lc 532:1-532:17 {a:'Nat} -> {b} -> {c:'Nat} -> 'VecS b a -> 'VecS b c -> 'Mat c a b 2091testdata/Builtins.lc 567:1-567:8 {a:'Nat} -> {b} -> 'FrameBuffer a b -> 'Tuple2 ('FragOps' b) ('Stream ('Fragment a ('RemSemantics b))) -> 'FrameBuffer a b
1957testdata/Builtins.lc 533:34-533:67 Type 2092testdata/Builtins.lc 568:15-568:24 {a:'Nat} -> {b} -> 'FrameBuffer a b -> 'Output
1958testdata/Builtins.lc 533:34-533:37 'Nat -> 'Nat -> Type->Type 2093testdata/Builtins.lc 568:1-568:12 {a:'Nat} -> {b} -> 'FrameBuffer a b -> 'Output
1959testdata/Builtins.lc 533:34-533:67 'Nat 2094testdata/Builtins.lc 569:14-569:25 {a:'Nat} -> {b} -> {c} -> {d : 'SameLayerCounts c} -> {e : 'FrameBuffer a b ~ 'TFFrameBuffer c} -> c -> 'FrameBuffer a b
1960testdata/Builtins.lc 533:34-533:67 V5 2095testdata/Builtins.lc 569:1-569:11 {a:'Nat} -> {b} -> {c} -> {d : 'SameLayerCounts c} -> {e : 'FrameBuffer a b ~ 'TFFrameBuffer c} -> c -> 'FrameBuffer a b
1961testdata/Builtins.lc 533:34-533:67 V3 2096testdata/Builtins.lc 570:19-570:29 {a:'Nat} -> 'Float -> 'Image a ('Depth 'Float)
1962testdata/Builtins.lc 533:34-533:67 V1 2097testdata/Builtins.lc 570:1-570:16 'Float -> 'Image (Succ Zero) ('Depth 'Float)
1963testdata/Builtins.lc 533:47-533:50 'Nat -> Type->Type 2098testdata/Builtins.lc 571:19-571:29 {a:'Nat} -> {b:'Nat} -> {c} -> {d} -> {e : 'Num c} -> {f : d ~ 'VecScalar b c} -> d -> 'Image a ('Color d)
1964testdata/Builtins.lc 533:60-533:63 'Nat -> Type->Type 2099testdata/Builtins.lc 571:1-571:16 {a:'Nat} -> {b} -> {c} -> {d : 'Num b} -> {e : c ~ 'VecScalar a b} -> c -> 'Image (Succ Zero) ('Color c)
1965testdata/Builtins.lc 533:1-533:14 {a:'Nat} -> {b:'Nat} -> {c} -> 'Mat a b c -> 'VecS c b -> 'VecS c a
1966testdata/Builtins.lc 534:34-534:67 Type
1967testdata/Builtins.lc 534:34-534:37 'Nat -> Type->Type
1968testdata/Builtins.lc 534:34-534:67 'Nat
1969testdata/Builtins.lc 534:34-534:67 V5
1970testdata/Builtins.lc 534:34-534:67 V3
1971testdata/Builtins.lc 534:47-534:50 'Nat -> 'Nat -> Type->Type
1972testdata/Builtins.lc 534:34-534:67 V2
1973testdata/Builtins.lc 534:60-534:63 'Nat -> Type->Type
1974testdata/Builtins.lc 534:1-534:14 {a:'Nat} -> {b} -> {c:'Nat} -> 'VecS b a -> 'Mat a c b -> 'VecS b c
1975testdata/Builtins.lc 535:34-535:69 Type
1976testdata/Builtins.lc 535:34-535:37 'Nat -> 'Nat -> Type->Type
1977testdata/Builtins.lc 535:34-535:69 'Nat
1978testdata/Builtins.lc 535:34-535:69 V7
1979testdata/Builtins.lc 535:34-535:69 V5
1980testdata/Builtins.lc 535:34-535:69 V3
1981testdata/Builtins.lc 535:47-535:50 'Nat -> 'Nat -> Type->Type
1982testdata/Builtins.lc 535:34-535:69 V2
1983testdata/Builtins.lc 535:60-535:63 'Nat -> 'Nat -> Type->Type
1984testdata/Builtins.lc 535:1-535:14 {a:'Nat} -> {b:'Nat} -> {c} -> {d:'Nat} -> 'Mat a b c -> 'Mat b d c -> 'Mat a d c
1985testdata/Builtins.lc 538:35-538:97 Type
1986testdata/Builtins.lc 538:35-538:38 Type->Type
1987testdata/Builtins.lc 538:35-538:97 V7
1988testdata/Builtins.lc 538:35-538:97 V6
1989testdata/Builtins.lc 538:46-538:55 'Nat -> Type->Type
1990testdata/Builtins.lc 538:35-538:97 'Nat
1991testdata/Builtins.lc 538:35-538:97 V4
1992testdata/Builtins.lc 538:35-538:97 V3
1993testdata/Builtins.lc 538:65-538:74 'Nat -> Type->Type
1994testdata/Builtins.lc 538:77-538:81 Type
1995testdata/Builtins.lc 537:1-537:13 {a} -> {b} -> {c:'Nat} -> {d} -> {e : 'Num a} -> {f : b ~ 'VecScalar c a} -> {g : d ~ 'VecScalar c 'Bool} -> b -> b->d
1996testdata/Builtins.lc 537:15-537:32 {a} -> {b} -> {c:'Nat} -> {d} -> {e : 'Num a} -> {f : b ~ 'VecScalar c a} -> {g : d ~ 'VecScalar c 'Bool} -> b -> b->d
1997testdata/Builtins.lc 537:34-537:49 {a} -> {b} -> {c:'Nat} -> {d} -> {e : 'Num a} -> {f : b ~ 'VecScalar c a} -> {g : d ~ 'VecScalar c 'Bool} -> b -> b->d
1998testdata/Builtins.lc 537:51-537:71 {a} -> {b} -> {c:'Nat} -> {d} -> {e : 'Num a} -> {f : b ~ 'VecScalar c a} -> {g : d ~ 'VecScalar c 'Bool} -> b -> b->d
1999testdata/Builtins.lc 537:73-537:83 {a} -> {b} -> {c:'Nat} -> {d} -> {e : 'Num a} -> {f : b ~ 'VecScalar c a} -> {g : d ~ 'VecScalar c 'Bool} -> b -> b->d
2000testdata/Builtins.lc 537:85-537:98 {a} -> {b} -> {c:'Nat} -> {d} -> {e : 'Num a} -> {f : b ~ 'VecScalar c a} -> {g : d ~ 'VecScalar c 'Bool} -> b -> b->d
2001testdata/Builtins.lc 539:35-539:76 Type
2002testdata/Builtins.lc 539:35-539:76 V3
2003testdata/Builtins.lc 539:39-539:55 Type->Type
2004testdata/Builtins.lc 539:35-539:76 V1
2005testdata/Builtins.lc 539:72-539:76 Type
2006testdata/Builtins.lc 539:1-539:10 {a} -> {b} -> {c : a ~ 'MatVecScalarElem b} -> b -> b->'Bool
2007testdata/Builtins.lc 539:12-539:24 {a} -> {b} -> {c : a ~ 'MatVecScalarElem b} -> b -> b->'Bool
2008testdata/Builtins.lc 542:35-542:67 Type
2009testdata/Builtins.lc 542:35-542:67 V3
2010testdata/Builtins.lc 542:39-542:48 'Nat -> Type->Type
2011testdata/Builtins.lc 542:35-542:67 'Nat
2012testdata/Builtins.lc 542:35-542:67 V1
2013testdata/Builtins.lc 542:51-542:56 Type
2014testdata/Builtins.lc 541:1-541:9 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
2015testdata/Builtins.lc 541:11-541:19 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
2016testdata/Builtins.lc 541:21-541:31 {a} -> {b:'Nat} -> {c : a ~ 'VecScalar b 'Float} -> a->a
2017testdata/Builtins.lc 544:34-544:60 Type
2018testdata/Builtins.lc 544:34-544:43 'Nat -> Type->Type
2019testdata/Builtins.lc 544:34-544:60 'Nat
2020testdata/Builtins.lc 544:34-544:60 V1
2021testdata/Builtins.lc 544:46-544:51 Type
2022testdata/Builtins.lc 544:55-544:60 Type
2023testdata/Builtins.lc 544:1-544:11 {a:'Nat} -> 'VecScalar a 'Float -> 'Float
2024testdata/Builtins.lc 545:34-545:66 Type
2025testdata/Builtins.lc 545:34-545:43 'Nat -> Type->Type
2026testdata/Builtins.lc 545:34-545:66 'Nat
2027testdata/Builtins.lc 545:34-545:66 V1
2028testdata/Builtins.lc 545:46-545:51 Type
2029testdata/Builtins.lc 545:55-545:66 Type
2030testdata/Builtins.lc 545:55-545:58 'Nat -> Type->Type
2031testdata/Builtins.lc 545:61-545:66 Type
2032testdata/Builtins.lc 545:1-545:11 {a:'Nat} -> 'VecScalar a 'Float -> 'VecS 'Float (Succ (Succ Zero))
2033testdata/Builtins.lc 546:34-546:66 Type
2034testdata/Builtins.lc 546:34-546:43 'Nat -> Type->Type
2035testdata/Builtins.lc 546:34-546:66 'Nat
2036testdata/Builtins.lc 546:34-546:66 V1
2037testdata/Builtins.lc 546:46-546:51 Type
2038testdata/Builtins.lc 546:55-546:66 Type
2039testdata/Builtins.lc 546:55-546:58 'Nat -> Type->Type
2040testdata/Builtins.lc 546:61-546:66 Type
2041testdata/Builtins.lc 546:1-546:11 {a:'Nat} -> 'VecScalar a 'Float -> 'VecS 'Float (Succ (Succ (Succ Zero)))
2042testdata/Builtins.lc 547:34-547:66 Type
2043testdata/Builtins.lc 547:34-547:43 'Nat -> Type->Type
2044testdata/Builtins.lc 547:34-547:66 'Nat
2045testdata/Builtins.lc 547:34-547:66 V1
2046testdata/Builtins.lc 547:46-547:51 Type
2047testdata/Builtins.lc 547:55-547:66 Type
2048testdata/Builtins.lc 547:55-547:58 'Nat -> Type->Type
2049testdata/Builtins.lc 547:61-547:66 Type
2050testdata/Builtins.lc 547:1-547:11 {a:'Nat} -> 'VecScalar a 'Float -> 'VecS 'Float (Succ (Succ (Succ (Succ Zero))))
2051testdata/Builtins.lc 563:6-563:13 Type
2052testdata/Builtins.lc 564:20-564:26 Type
2053testdata/Builtins.lc 565:20-565:27 Type
2054testdata/Builtins.lc 564:3-564:16 'String->'Texture
2055testdata/Builtins.lc 567:20-567:23 'Nat -> Type->Type
2056testdata/Builtins.lc 567:26-567:29 Type
2057testdata/Builtins.lc 568:20-569:27 Type
2058testdata/Builtins.lc 568:20-568:25 'Nat -> Type->Type
2059testdata/Builtins.lc 568:29-568:47 Type
2060testdata/Builtins.lc 568:29-568:34 Type->Type
2061testdata/Builtins.lc 568:36-568:47 Type
2062testdata/Builtins.lc 568:36-568:39 'Nat -> Type->Type
2063testdata/Builtins.lc 568:42-568:47 Type
2064testdata/Builtins.lc 569:20-569:27 Type
2065testdata/Builtins.lc 567:3-567:12 'VecS 'Int (Succ (Succ Zero)) -> 'Image (Succ Zero) ('Color ('VecS 'Float (Succ (Succ (Succ (Succ Zero)))))) -> 'Texture
2066testdata/Builtins.lc 571:6-571:12 Type
2067testdata/Builtins.lc 572:5-572:16 'Filter
2068testdata/Builtins.lc 573:5-573:17 'Filter
2069testdata/Builtins.lc 575:6-575:14 Type
2070testdata/Builtins.lc 576:5-576:11 'EdgeMode
2071testdata/Builtins.lc 577:5-577:19 'EdgeMode
2072testdata/Builtins.lc 578:5-578:16 'EdgeMode
2073testdata/Builtins.lc 580:6-580:13 Type
2074testdata/Builtins.lc 580:24-580:30 Type
2075testdata/Builtins.lc 580:6-580:47 Type
2076testdata/Builtins.lc 580:31-580:39 Type
2077testdata/Builtins.lc 580:40-580:47 Type
2078testdata/Builtins.lc 580:16-580:23 'Filter -> 'EdgeMode -> 'Texture->'Sampler
2079testdata/Builtins.lc 583:14-583:21 Type
2080testdata/Builtins.lc 583:25-583:51 Type
2081testdata/Builtins.lc 583:25-583:28 'Nat -> Type->Type
2082testdata/Builtins.lc 583:31-583:36 Type
2083testdata/Builtins.lc 583:40-583:51 Type
2084testdata/Builtins.lc 583:40-583:43 'Nat -> Type->Type
2085testdata/Builtins.lc 583:46-583:51 Type
2086testdata/Builtins.lc 583:1-583:10 'Sampler -> 'VecS 'Float (Succ (Succ Zero)) -> 'VecS 'Float (Succ (Succ (Succ (Succ Zero))))
2087testdata/Builtins.lc 586:30-586:45 {a} -> {b} -> (a -> 'Stream b) -> 'Stream a -> 'Stream b
2088testdata/Builtins.lc 586:47-586:66 V1 -> 'Stream V1
2089testdata/Builtins.lc 586:47-586:57 {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 -> 'Stream ('Fragment (Succ Zero) DefinedDepth a)
2090testdata/Builtins.lc 586:59-586:66 'JoinTupleType ('VecS 'Float (Succ (Succ (Succ (Succ Zero))))) ('InterpolatedType V1) -> 'Float
2091testdata/Builtins.lc 586:65-586:66 'Float
2092testdata/Builtins.lc 586:65-586:66 'Int
2093testdata/Builtins.lc 586:1-586: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))
2094testdata/Builtins.lc 587:46-587:61 {a} -> {b} -> (a -> 'Stream b) -> 'Stream a -> 'Stream b
2095testdata/Builtins.lc 587:63-587:73 V1 -> 'Stream V1
2096testdata/Builtins.lc 587:63-587:73 {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 -> 'Stream ('Fragment (Succ Zero) DefinedDepth a)
2097testdata/Builtins.lc 587:1-587: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))
2098testdata/Builtins.lc 588:24-588:32 {a} -> {b} -> a -> b -> 'Tuple2 a b
2099testdata/Builtins.lc 588:1-588:15 {a} -> {b} -> a -> b -> 'Tuple2 a b
2100testdata/Builtins.lc 589:25-589:35 V2 -> V2->V2
2101testdata/Builtins.lc 589:25-589:35 V2->V2
2102testdata/Builtins.lc 589:25-589:35 V2
2103testdata/Builtins.lc 589:25-589:35 {a:'Nat} -> {b} -> {c:'DepthHandler} -> 'FragOps' b -> 'Stream ('Fragment a c ('RemSemantics b)) -> 'FrameBuffer a b -> 'FrameBuffer a b
2104testdata/Builtins.lc 589:13-589:21 'Tuple2 ('FragOps' V1) ('Stream ('Fragment V2 V0 ('RemSemantics V1)))
2105testdata/Builtins.lc 589:13-589:21 V4
2106testdata/Builtins.lc 589:1-589:8 {a:'Nat} -> {b} -> {c:'DepthHandler} -> 'FrameBuffer a b -> 'Tuple2 ('FragOps' b) ('Stream ('Fragment a c ('RemSemantics b))) -> 'FrameBuffer a b
2107testdata/Builtins.lc 590:15-590:24 {a:'Nat} -> {b} -> 'FrameBuffer a b -> 'Output
2108testdata/Builtins.lc 590:1-590:12 {a:'Nat} -> {b} -> 'FrameBuffer a b -> 'Output
2109testdata/Builtins.lc 591:14-591:25 {a:'Nat} -> {b} -> {c} -> {d : 'SameLayerCounts c} -> {e : 'FrameBuffer a b ~ 'TFFrameBuffer c} -> c -> 'FrameBuffer a b
2110testdata/Builtins.lc 591:1-591:11 {a:'Nat} -> {b} -> {c} -> {d : 'SameLayerCounts c} -> {e : 'FrameBuffer a b ~ 'TFFrameBuffer c} -> c -> 'FrameBuffer a b
2111testdata/Builtins.lc 592:19-592:29 {a:'Nat} -> 'Float -> 'Image a ('Depth 'Float)
2112testdata/Builtins.lc 592:1-592:16 'Float -> 'Image (Succ Zero) ('Depth 'Float)
2113testdata/Builtins.lc 593:19-593:29 {a:'Nat} -> {b:'Nat} -> {c} -> {d} -> {e : 'Num c} -> {f : d ~ 'VecScalar b c} -> d -> 'Image a ('Color d)
2114testdata/Builtins.lc 593:1-593:16 {a:'Nat} -> {b} -> {c} -> {d : 'Num b} -> {e : c ~ 'VecScalar a b} -> c -> 'Image (Succ Zero) ('Color c)
diff --git a/testdata/Graphics.out b/testdata/Graphics.out
index 4315e9e3..0079c620 100644
--- a/testdata/Graphics.out
+++ b/testdata/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 [("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 [("r5",Parameter {name = "position", ty = V3F}),("s5",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 r5 ;\nin vec4 s5 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( ( s5 ).x,( s5 ).y,( s5 ).z,0.5 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( r5 ).x,( r5 ).y,( r5 ).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 = "position", ty = V3F}),("b10",Parameter {name = "normal", ty = V3F}),("c10",Parameter {name = "diffuseUV", ty = V2F}),("d10",Parameter {name = "lightmapUV", ty = V2F}),("e10",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 a10 ;\nin vec3 b10 ;\nin vec2 c10 ;\nin vec2 d10 ;\nin vec4 e10 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = d10;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( a10 ).x,( a10 ).y,( a10 ).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 [("i14",Parameter {name = "position", ty = V3F}),("j14",Parameter {name = "normal", ty = V3F}),("k14",Parameter {name = "diffuseUV", ty = V2F}),("l14",Parameter {name = "lightmapUV", ty = V2F}),("m14",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 i14 ;\nin vec3 j14 ;\nin vec2 k14 ;\nin vec2 l14 ;\nin vec4 m14 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = k14;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( i14 ).x,( i14 ).y,( i14 ).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 = "diffuseUV", ty = V2F}),("b19",Parameter {name = "lightmapUV", ty = V2F}),("c19",Parameter {name = "color", ty = V4F}),("y18",Parameter {name = "position", ty = V3F}),("z18",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 y18 ;\nin vec3 z18 ;\nin vec2 a19 ;\nin vec2 b19 ;\nin vec4 c19 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = b19;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( y18 ).x,( y18 ).y,( y18 ).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 [("g23",Parameter {name = "position", ty = V3F}),("h23",Parameter {name = "normal", ty = V3F}),("i23",Parameter {name = "diffuseUV", ty = V2F}),("j23",Parameter {name = "lightmapUV", ty = V2F}),("k23",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 g23 ;\nin vec3 h23 ;\nin vec2 i23 ;\nin vec2 j23 ;\nin vec4 k23 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = i23;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( g23 ).x,( g23 ).y,( g23 ).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 = "color", ty = V4F}),("w27",Parameter {name = "position", ty = V3F}),("x27",Parameter {name = "normal", ty = V3F}),("y27",Parameter {name = "diffuseUV", ty = V2F}),("z27",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 w27 ;\nin vec3 x27 ;\nin vec2 y27 ;\nin vec2 z27 ;\nin vec4 a28 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = z27;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( w27 ).x,( w27 ).y,( w27 ).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 [("e32",Parameter {name = "position", ty = V3F}),("f32",Parameter {name = "normal", ty = V3F}),("g32",Parameter {name = "diffuseUV", ty = V2F}),("h32",Parameter {name = "lightmapUV", ty = V2F}),("i32",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 e32 ;\nin vec3 f32 ;\nin vec2 g32 ;\nin vec2 h32 ;\nin vec4 i32 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = g32;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( e32 ).x,( e32 ).y,( e32 ).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 [("u36",Parameter {name = "position", ty = V3F}),("v36",Parameter {name = "normal", ty = V3F}),("w36",Parameter {name = "diffuseUV", ty = V2F}),("x36",Parameter {name = "lightmapUV", ty = V2F}),("y36",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 u36 ;\nin vec3 v36 ;\nin vec2 w36 ;\nin vec2 x36 ;\nin vec4 y36 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = x36;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( u36 ).x,( u36 ).y,( u36 ).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 [("c41",Parameter {name = "position", ty = V3F}),("d41",Parameter {name = "normal", ty = V3F}),("e41",Parameter {name = "diffuseUV", ty = V2F}),("f41",Parameter {name = "lightmapUV", ty = V2F}),("g41",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 c41 ;\nin vec3 d41 ;\nin vec2 e41 ;\nin vec2 f41 ;\nin vec4 g41 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = e41;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( c41 ).x,( c41 ).y,( c41 ).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 [("s45",Parameter {name = "position", ty = V3F}),("t45",Parameter {name = "normal", ty = V3F}),("u45",Parameter {name = "diffuseUV", ty = V2F}),("v45",Parameter {name = "lightmapUV", ty = V2F}),("w45",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 s45 ;\nin vec3 t45 ;\nin vec2 u45 ;\nin vec2 v45 ;\nin vec4 w45 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = v45;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( s45 ).x,( s45 ).y,( s45 ).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 [("a50",Parameter {name = "position", ty = V3F}),("b50",Parameter {name = "normal", ty = V3F}),("c50",Parameter {name = "diffuseUV", ty = V2F}),("d50",Parameter {name = "lightmapUV", ty = V2F}),("e50",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 a50 ;\nin vec3 b50 ;\nin vec2 c50 ;\nin vec2 d50 ;\nin vec4 e50 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = c50;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( a50 ).x,( a50 ).y,( a50 ).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 [("q54",Parameter {name = "position", ty = V3F}),("r54",Parameter {name = "normal", ty = V3F}),("s54",Parameter {name = "diffuseUV", ty = V2F}),("t54",Parameter {name = "lightmapUV", ty = V2F}),("u54",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 q54 ;\nin vec3 r54 ;\nin vec2 s54 ;\nin vec2 t54 ;\nin vec4 u54 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = t54;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( q54 ).x,( q54 ).y,( q54 ).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 = "diffuseUV", ty = V2F}),("b59",Parameter {name = "lightmapUV", ty = V2F}),("c59",Parameter {name = "color", ty = V4F}),("y58",Parameter {name = "position", ty = V3F}),("z58",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 y58 ;\nin vec3 z58 ;\nin vec2 a59 ;\nin vec2 b59 ;\nin vec4 c59 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = a59;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( y58 ).x,( y58 ).y,( y58 ).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 [("m2",Parameter {name = "position", ty = V3F}),("n2",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 m2 ;\nin vec4 n2 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = n2;\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( m2 ).x,( m2 ).y,( m2 ).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 [("n5",Parameter {name = "position", ty = V3F}),("o5",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 n5 ;\nin vec4 o5 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( ( o5 ).x,( o5 ).y,( o5 ).z,0.5 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( n5 ).x,( n5 ).y,( n5 ).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 [("u9",Parameter {name = "position", ty = V3F}),("v9",Parameter {name = "normal", ty = V3F}),("w9",Parameter {name = "diffuseUV", ty = V2F}),("x9",Parameter {name = "lightmapUV", ty = V2F}),("y9",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 u9 ;\nin vec3 v9 ;\nin vec2 w9 ;\nin vec2 x9 ;\nin vec4 y9 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = x9;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( u9 ).x,( u9 ).y,( u9 ).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 [("a14",Parameter {name = "position", ty = V3F}),("b14",Parameter {name = "normal", ty = V3F}),("c14",Parameter {name = "diffuseUV", ty = V2F}),("d14",Parameter {name = "lightmapUV", ty = V2F}),("e14",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 a14 ;\nin vec3 b14 ;\nin vec2 c14 ;\nin vec2 d14 ;\nin vec4 e14 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = c14;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( a14 ).x,( a14 ).y,( a14 ).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 [("o18",Parameter {name = "position", ty = V3F}),("p18",Parameter {name = "normal", ty = V3F}),("q18",Parameter {name = "diffuseUV", ty = V2F}),("r18",Parameter {name = "lightmapUV", ty = V2F}),("s18",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 o18 ;\nin vec3 p18 ;\nin vec2 q18 ;\nin vec2 r18 ;\nin vec4 s18 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = r18;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( o18 ).x,( o18 ).y,( o18 ).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 [("u22",Parameter {name = "position", ty = V3F}),("v22",Parameter {name = "normal", ty = V3F}),("w22",Parameter {name = "diffuseUV", ty = V2F}),("x22",Parameter {name = "lightmapUV", ty = V2F}),("y22",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 u22 ;\nin vec3 v22 ;\nin vec2 w22 ;\nin vec2 x22 ;\nin vec4 y22 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = w22;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( u22 ).x,( u22 ).y,( u22 ).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 [("i27",Parameter {name = "position", ty = V3F}),("j27",Parameter {name = "normal", ty = V3F}),("k27",Parameter {name = "diffuseUV", ty = V2F}),("l27",Parameter {name = "lightmapUV", ty = V2F}),("m27",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 i27 ;\nin vec3 j27 ;\nin vec2 k27 ;\nin vec2 l27 ;\nin vec4 m27 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = l27;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( i27 ).x,( i27 ).y,( i27 ).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 [("o31",Parameter {name = "position", ty = V3F}),("p31",Parameter {name = "normal", ty = V3F}),("q31",Parameter {name = "diffuseUV", ty = V2F}),("r31",Parameter {name = "lightmapUV", ty = V2F}),("s31",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 o31 ;\nin vec3 p31 ;\nin vec2 q31 ;\nin vec2 r31 ;\nin vec4 s31 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = q31;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( o31 ).x,( o31 ).y,( o31 ).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 [("c36",Parameter {name = "position", ty = V3F}),("d36",Parameter {name = "normal", ty = V3F}),("e36",Parameter {name = "diffuseUV", ty = V2F}),("f36",Parameter {name = "lightmapUV", ty = V2F}),("g36",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 c36 ;\nin vec3 d36 ;\nin vec2 e36 ;\nin vec2 f36 ;\nin vec4 g36 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = f36;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( c36 ).x,( c36 ).y,( c36 ).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 [("i40",Parameter {name = "position", ty = V3F}),("j40",Parameter {name = "normal", ty = V3F}),("k40",Parameter {name = "diffuseUV", ty = V2F}),("l40",Parameter {name = "lightmapUV", ty = V2F}),("m40",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 i40 ;\nin vec3 j40 ;\nin vec2 k40 ;\nin vec2 l40 ;\nin vec4 m40 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = k40;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( i40 ).x,( i40 ).y,( i40 ).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 = "color", ty = V4F}),("w44",Parameter {name = "position", ty = V3F}),("x44",Parameter {name = "normal", ty = V3F}),("y44",Parameter {name = "diffuseUV", ty = V2F}),("z44",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 w44 ;\nin vec3 x44 ;\nin vec2 y44 ;\nin vec2 z44 ;\nin vec4 a45 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = z44;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( w44 ).x,( w44 ).y,( w44 ).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 [("c49",Parameter {name = "position", ty = V3F}),("d49",Parameter {name = "normal", ty = V3F}),("e49",Parameter {name = "diffuseUV", ty = V2F}),("f49",Parameter {name = "lightmapUV", ty = V2F}),("g49",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 c49 ;\nin vec3 d49 ;\nin vec2 e49 ;\nin vec2 f49 ;\nin vec4 g49 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = e49;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( c49 ).x,( c49 ).y,( c49 ).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 [("q53",Parameter {name = "position", ty = V3F}),("r53",Parameter {name = "normal", ty = V3F}),("s53",Parameter {name = "diffuseUV", ty = V2F}),("t53",Parameter {name = "lightmapUV", ty = V2F}),("u53",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 q53 ;\nin vec3 r53 ;\nin vec2 s53 ;\nin vec2 t53 ;\nin vec4 u53 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = t53;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( q53 ).x,( q53 ).y,( q53 ).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 = "color", ty = V4F}),("w57",Parameter {name = "position", ty = V3F}),("x57",Parameter {name = "normal", ty = V3F}),("y57",Parameter {name = "diffuseUV", ty = V2F}),("z57",Parameter {name = "lightmapUV", ty = V2F})], 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 w57 ;\nin vec3 x57 ;\nin vec2 y57 ;\nin vec2 z57 ;\nin vec4 a58 ;\nsmooth out vec2 v0 ;\nsmooth out vec4 v1 ;\nvoid main() {\nv0 = y57;\nv1 = vec4 ( identityLight,identityLight,identityLight,1.0 );\ngl_Position = ( viewProj ) * ( ( worldMat ) * ( vec4 ( ( w57 ).x,( w57 ).y,( w57 ).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/HyperbolicParaboloic.out b/testdata/HyperbolicParaboloic.out
index 8a4a6a38..7f272fa3 100644
--- a/testdata/HyperbolicParaboloic.out
+++ b/testdata/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 [("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 ( ( o1 ).x,( o1 ).y,( o1 ).z,1.0 );\ngl_Position = ( ( MVP ) * ( vec4 ( ( ( Mouse ).y ) * ( ( o1 ).x ),( ( ( 0.5 ) * ( ( Mouse ).x ) ) * ( ( o1 ).x ) ) * ( ( o1 ).y ),( ( Mouse ).y ) * ( ( o1 ).y ),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 [("m1",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 m1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( ( m1 ).x,( m1 ).y,( m1 ).z,1.0 );\ngl_Position = ( ( MVP ) * ( vec4 ( ( ( Mouse ).y ) * ( ( m1 ).x ),( ( ( 0.5 ) * ( ( Mouse ).x ) ) * ( ( m1 ).x ) ) * ( ( m1 ).y ),( ( Mouse ).y ) * ( ( m1 ).y ),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/Hyperboloid.out b/testdata/Hyperboloid.out
index fef26fc4..3098fe2b 100644
--- a/testdata/Hyperboloid.out
+++ b/testdata/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 [("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 ( ( o1 ).x,( o1 ).y,( o1 ).z,1.0 );\ngl_Position = ( ( MVP ) * ( vec4 ( ( ( 2.0 ) * ( ( Mouse ).y ) ) * ( sin ( ( ( 0.7 ) * ( ( o1 ).x ) ) + ( ( ( Mouse ).x ) * ( ( o1 ).y ) ) ) ),( o1 ).y,( ( 2.0 ) * ( ( Mouse ).y ) ) * ( cos ( ( ( 0.7 ) * ( ( o1 ).x ) ) + ( ( ( Mouse ).x ) * ( ( o1 ).y ) ) ) ),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 [("m1",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 m1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( ( m1 ).x,( m1 ).y,( m1 ).z,1.0 );\ngl_Position = ( ( MVP ) * ( vec4 ( ( ( 2.0 ) * ( ( Mouse ).y ) ) * ( sin ( ( ( 0.7 ) * ( ( m1 ).x ) ) + ( ( ( Mouse ).x ) * ( ( m1 ).y ) ) ) ),( m1 ).y,( ( 2.0 ) * ( ( Mouse ).y ) ) * ( cos ( ( ( 0.7 ) * ( ( m1 ).x ) ) + ( ( ( Mouse ).x ) * ( ( m1 ).y ) ) ) ),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/NewStyle.out b/testdata/NewStyle.out
index 0d13a413..bf90ca01 100644
--- a/testdata/NewStyle.out
+++ b/testdata/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 [("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 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 [("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 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = m1;\ngl_Position = ( ( MVP ) * ( m1 ) ) * ( 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/PrimReduce.out b/testdata/PrimReduce.out
index bec55c9f..3db2cf03 100644
--- a/testdata/PrimReduce.out
+++ b/testdata/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 [("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 Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [], programStreams = fromList [("k1",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 k1 ;\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 ) ) ) * ( k1 ) ) * ( 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/Spiral.out b/testdata/Spiral.out
index 628760c6..160e2383 100644
--- a/testdata/Spiral.out
+++ b/testdata/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 [("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 ( ( o1 ).x,( o1 ).y,( o1 ).z,1.0 );\ngl_Position = ( ( MVP ) * ( vec4 ( ( exp ( ( ( ( Mouse ).x ) - ( 0.5 ) ) * ( ( o1 ).x ) ) ) * ( sin ( ( 0.9 ) * ( ( o1 ).x ) ) ),( exp ( ( ( ( Mouse ).x ) - ( 0.5 ) ) * ( ( o1 ).x ) ) ) * ( cos ( ( 0.9 ) * ( ( o1 ).x ) ) ),( ( Mouse ).y ) * ( ( 0.9 ) * ( ( o1 ).x ) ),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 [("m1",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 m1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( ( m1 ).x,( m1 ).y,( m1 ).z,1.0 );\ngl_Position = ( ( MVP ) * ( vec4 ( ( exp ( ( ( ( Mouse ).x ) - ( 0.5 ) ) * ( ( m1 ).x ) ) ) * ( sin ( ( 0.9 ) * ( ( m1 ).x ) ) ),( exp ( ( ( ( Mouse ).x ) - ( 0.5 ) ) * ( ( m1 ).x ) ) ) * ( cos ( ( 0.9 ) * ( ( m1 ).x ) ) ),( ( Mouse ).y ) * ( ( 0.9 ) * ( ( m1 ).x ) ),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/example06.out b/testdata/example06.out
index fdf667ee..18584248 100644
--- a/testdata/example06.out
+++ b/testdata/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 [("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 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 [("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 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = m1;\ngl_Position = ( ( MVP ) * ( m1 ) ) * ( 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/example07.out b/testdata/example07.out
index 216ce6ce..e7b2f7e5 100644
--- a/testdata/example07.out
+++ b/testdata/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 [("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 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 [("x1",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 x1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = x1;\ngl_Position = ( ( MVP ) * ( x1 ) ) * ( 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/example08.out b/testdata/example08.out
index a5b631c9..546203ba 100644
--- a/testdata/example08.out
+++ b/testdata/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 [("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 [("i7",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 i7 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = i7;\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 ) ) ) * ( i7 ) ) * ( 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 [("w18",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 w18 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = w18;\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 ) ) ) * ( w18 ) ) * ( 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 [("q24",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 q24 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = q24;\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 ) ) ) * ( q24 ) ) * ( 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 [("k30",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 k30 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = k30;\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 ) ) ) * ( k30 ) ) * ( 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 [("e36",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 e36 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = e36;\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 ) ) ) * ( e36 ) ) * ( 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 [("y41",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 y41 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = y41;\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 ) ) ) * ( y41 ) ) * ( 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 [("s47",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 s47 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = s47;\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 ) ) ) * ( s47 ) ) * ( 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 [("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 float Time ;\nuniform mat4 MVP ;\nin vec4 m1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = m1;\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 ) ) ) * ( m1 ) ) * ( 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 [("e7",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 e7 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = e7;\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 ) ) ) * ( e7 ) ) * ( 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 [("o18",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 o18 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = o18;\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 ) ) ) * ( o18 ) ) * ( 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 [("g24",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 g24 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = g24;\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 ) ) ) * ( g24 ) ) * ( 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 [("y29",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 y29 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = y29;\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 ) ) ) * ( y29 ) ) * ( 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 [("q35",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 q35 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = q35;\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 ) ) ) * ( q35 ) ) * ( 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 [("i41",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 i41 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = i41;\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 ) ) ) * ( i41 ) ) * ( 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 [("a47",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 a47 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = a47;\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 ) ) ) * ( a47 ) ) * ( 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/fetcharrays01.out b/testdata/fetcharrays01.out
index 59dc40f0..7ce5d26f 100644
--- a/testdata/fetcharrays01.out
+++ b/testdata/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 [("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 ( ( y1 ).x,( y1 ).y,( y1 ).z,1.0 );\ngl_Position = ( ( MVP ) * ( vec4 ( ( y1 ).x,( y1 ).y,( y1 ).z,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 [("w1",Parameter {name = "attribute_0", ty = V3F}),("x1",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 w1 ;\nin vec3 x1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( ( w1 ).x,( w1 ).y,( w1 ).z,1.0 );\ngl_Position = ( ( MVP ) * ( vec4 ( ( w1 ).x,( w1 ).y,( w1 ).z,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/fragment01.out b/testdata/fragment01.out
index 77eef493..b6b1ee3b 100644
--- a/testdata/fragment01.out
+++ b/testdata/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 [("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 Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [], programStreams = fromList [("k1",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 k1 ;\nvoid main() {\ngl_Position = k1;\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/fragment03swizzling.out b/testdata/fragment03swizzling.out
index 77fe9352..262b62e6 100644
--- a/testdata/fragment03swizzling.out
+++ b/testdata/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 [("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 Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [], programStreams = fromList [("t1",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 t1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = t1;\ngl_Position = t1;\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/fragment04ifthenelse.out b/testdata/fragment04ifthenelse.out
index feaf1478..ba261547 100644
--- a/testdata/fragment04ifthenelse.out
+++ b/testdata/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 [("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 Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("Time",Float)], programStreams = fromList [("t1",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 t1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = t1;\ngl_Position = t1;\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/fragment07let.out b/testdata/fragment07let.out
index 88146662..add6704e 100644
--- a/testdata/fragment07let.out
+++ b/testdata/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 [("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 Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [], programStreams = fromList [("q1",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 q1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = q1;\ngl_Position = q1;\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/gfx02.out b/testdata/gfx02.out
index ffb555de..24284b6a 100644
--- a/testdata/gfx02.out
+++ b/testdata/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 [("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 Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [], programStreams = fromList [("k1",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 k1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = k1;\ngl_Position = k1;\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/gfx03.out b/testdata/gfx03.out
index 6d0781f0..6a42fbdf 100644
--- a/testdata/gfx03.out
+++ b/testdata/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 [("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 ( ( o1 ).x,( o1 ).y,( o1 ).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);}\nout vec4 f0 ;\nvoid main() {\nf0 = vec4 ( 0.0,0.4,0.0,1.0 );\n}\n"},Program {programUniforms = fromList [("MVP2",M44F)], programStreams = fromList [("r3",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 r3 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( ( r3 ).x,( r3 ).y,( r3 ).z,1.0 );\ngl_Position = ( MVP2 ) * ( vec4 ( ( r3 ).x,( r3 ).y,( r3 ).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 ) + ( vec4 ( 1.0,1.4,1.0,0.6 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("l6",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 l6 ;\nflat out vec4 v0 ;\nvoid main() {\nv0 = l6;\ngl_Position = ( MVP ) * ( l6 );\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 [("m1",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 m1 ;\nvoid main() {\ngl_Position = ( MVP2 ) * ( vec4 ( ( m1 ).x,( m1 ).y,( m1 ).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);}\nout vec4 f0 ;\nvoid main() {\nf0 = vec4 ( 0.0,0.4,0.0,1.0 );\n}\n"},Program {programUniforms = fromList [("MVP2",M44F)], programStreams = fromList [("n3",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 n3 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( ( n3 ).x,( n3 ).y,( n3 ).z,1.0 );\ngl_Position = ( MVP2 ) * ( vec4 ( ( n3 ).x,( n3 ).y,( n3 ).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 ) + ( vec4 ( 1.0,1.4,1.0,0.6 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("f6",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 f6 ;\nflat out vec4 v0 ;\nvoid main() {\nv0 = f6;\ngl_Position = ( MVP ) * ( f6 );\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/gfx04.out b/testdata/gfx04.out
index a9fd7e30..3c351db2 100644
--- a/testdata/gfx04.out
+++ b/testdata/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 [("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 ( ( j2 ).x,( j2 ).y,( j2 ).z,1.0 );\ngl_Position = ( MVP ) * ( vec4 ( ( i2 ).x,( i2 ).y,( i2 ).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 ) * ( 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 [("g2",Parameter {name = "position", ty = V3F}),("h2",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 g2 ;\nin vec3 h2 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( ( h2 ).x,( h2 ).y,( h2 ).z,1.0 );\ngl_Position = ( MVP ) * ( vec4 ( ( g2 ).x,( g2 ).y,( g2 ).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 ) * ( 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/gfx05.out b/testdata/gfx05.out
index b66233f8..99275679 100644
--- a/testdata/gfx05.out
+++ b/testdata/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 [("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 ( ( o1 ).x,( o1 ).y,( o1 ).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);}\nout vec4 f0 ;\nvoid main() {\nf0 = vec4 ( 0.0,0.4,0.0,1.0 );\n}\n"},Program {programUniforms = fromList [("MVP2",M44F)], programStreams = fromList [("r3",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 r3 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( ( r3 ).x,( r3 ).y,( r3 ).z,1.0 );\ngl_Position = ( MVP2 ) * ( vec4 ( ( r3 ).x,( r3 ).y,( r3 ).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 ) + ( vec4 ( 1.0,1.4,1.0,0.6 ) );\n}\n"},Program {programUniforms = fromList [("MVP2",M44F)], programStreams = fromList [("j7",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 j7 ;\nvoid main() {\ngl_Position = ( MVP2 ) * ( vec4 ( ( j7 ).x,( j7 ).y,( j7 ).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);}\nout vec4 f0 ;\nvoid main() {\nf0 = vec4 ( 0.0,0.4,0.0,1.0 );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("q9",Parameter {name = "position4", ty = V4F}),("r9",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("v5",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 q9 ;\nin vec2 r9 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = r9;\ngl_Position = ( MVP ) * ( q9 );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D v5 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( texture2D ( v5,( 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 "v5" 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 [("m1",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 m1 ;\nvoid main() {\ngl_Position = ( MVP2 ) * ( vec4 ( ( m1 ).x,( m1 ).y,( m1 ).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);}\nout vec4 f0 ;\nvoid main() {\nf0 = vec4 ( 0.0,0.4,0.0,1.0 );\n}\n"},Program {programUniforms = fromList [("MVP2",M44F)], programStreams = fromList [("n3",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 n3 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( ( n3 ).x,( n3 ).y,( n3 ).z,1.0 );\ngl_Position = ( MVP2 ) * ( vec4 ( ( n3 ).x,( n3 ).y,( n3 ).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 ) + ( vec4 ( 1.0,1.4,1.0,0.6 ) );\n}\n"},Program {programUniforms = fromList [("MVP2",M44F)], programStreams = fromList [("b7",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 b7 ;\nvoid main() {\ngl_Position = ( MVP2 ) * ( vec4 ( ( b7 ).x,( b7 ).y,( b7 ).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);}\nout vec4 f0 ;\nvoid main() {\nf0 = vec4 ( 0.0,0.4,0.0,1.0 );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("i9",Parameter {name = "position4", ty = V4F}),("j9",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("p5",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 );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform sampler2D p5 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( texture2D ( p5,( 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 "p5" 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/heartbeat01.out b/testdata/heartbeat01.out
index 320b21e2..d58e47d9 100644
--- a/testdata/heartbeat01.out
+++ b/testdata/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 [("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 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 [("q12",Parameter {name = "position4", ty = V4F}),("r12",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 q12 ;\nin vec2 r12 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = r12;\ngl_Position = ( q12 ) * ( 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 [("q14",Parameter {name = "position4", ty = V4F}),("r14",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("v0",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 q14 ;\nin vec2 r14 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = r14;\ngl_Position = ( ( MVP ) * ( q14 ) ) * ( 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 v0 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = texture2D ( v0,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 "v0" 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/helloWorld.out b/testdata/helloWorld.out
index bdc2bd74..ec2db130 100644
--- a/testdata/helloWorld.out
+++ b/testdata/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 [("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 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 [("r1",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 r1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = r1;\ngl_Position = ( ( MVP ) * ( r1 ) ) * ( 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/line01.out b/testdata/line01.out
index 859f18eb..6e379532 100644
--- a/testdata/line01.out
+++ b/testdata/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 [("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 ( ( o1 ).x,( o1 ).y,( o1 ).z,1.0 );\ngl_Position = ( ( MVP ) * ( vec4 ( ( o1 ).x,( o1 ).y,( o1 ).z,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 [("m1",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 m1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( ( m1 ).x,( m1 ).y,( m1 ).z,1.0 );\ngl_Position = ( ( MVP ) * ( vec4 ( ( m1 ).x,( m1 ).y,( m1 ).z,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/point01.out b/testdata/point01.out
index 76b02397..cb9bdffa 100644
--- a/testdata/point01.out
+++ b/testdata/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 [("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 ( ( y1 ).x,( y1 ).y,( y1 ).z,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 [("w1",Parameter {name = "attribute_0", ty = V3F}),("x1",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 w1 ;\nin vec4 x1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = x1;\ngl_Position = ( ( MVP ) * ( vec4 ( ( w1 ).x,( w1 ).y,( w1 ).z,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/recursivetexture01.out b/testdata/recursivetexture01.out
index ec408fe5..51b5a10b 100644
--- a/testdata/recursivetexture01.out
+++ b/testdata/recursivetexture01.out
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [TextureDescriptor {textureType = Texture2D (FloatT Red) 1, textureSize = VV2U (V2 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 10 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 11 0 Nothing)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 12 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 13 0 Nothing)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 14 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 15 0 Nothing)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 16 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 17 0 Nothing)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 18 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 19 0 Nothing)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 20 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 21 0 Nothing)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 22 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 23 0 Nothing)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 24 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 25 0 Nothing)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 26 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 27 0 Nothing)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 28 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 29 0 Nothing)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("m22",Parameter {name = "position4", ty = V4F}),("n22",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("u20",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 m22 ;\nin vec2 n22 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = n22;\ngl_Position = ( MVP ) * ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( 0.0 ),sin ( 0.0 ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( 0.0 ) ),cos ( 0.0 ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( m22 ) ) * ( 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 u20 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( ( ( ( ( v0 ).xyxx ) * ( 0.7 ) ) + ( texture2D ( u20,v0 ) ) ) * ( 0.7 ) ) * ( vec4 ( 1.0,1.0,1.0,0.0 ) ) ) + ( vec4 ( 0.0,0.0,0.0,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("o25",Parameter {name = "position4", ty = V4F}),("p25",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("k19",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 o25 ;\nin vec2 p25 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = p25;\ngl_Position = ( MVP ) * ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( 0.1 ),sin ( 0.1 ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( 0.1 ) ),cos ( 0.1 ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( o25 ) ) * ( 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 k19 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( ( ( ( ( v0 ).xyxx ) * ( 0.7 ) ) + ( texture2D ( k19,v0 ) ) ) * ( 0.7 ) ) * ( vec4 ( 1.0,1.0,1.0,0.0 ) ) ) + ( vec4 ( 0.0,0.0,0.0,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("q28",Parameter {name = "position4", ty = V4F}),("r28",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("a18",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 q28 ;\nin vec2 r28 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = r28;\ngl_Position = ( MVP ) * ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( 0.2 ),sin ( 0.2 ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( 0.2 ) ),cos ( 0.2 ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( q28 ) ) * ( 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 a18 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( ( ( ( ( v0 ).xyxx ) * ( 0.7 ) ) + ( texture2D ( a18,v0 ) ) ) * ( 0.7 ) ) * ( vec4 ( 1.0,1.0,1.0,0.0 ) ) ) + ( vec4 ( 0.0,0.0,0.0,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("s31",Parameter {name = "position4", ty = V4F}),("t31",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("q16",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 s31 ;\nin vec2 t31 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = t31;\ngl_Position = ( MVP ) * ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( 0.3 ),sin ( 0.3 ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( 0.3 ) ),cos ( 0.3 ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( s31 ) ) * ( 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 q16 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( ( ( ( ( v0 ).xyxx ) * ( 0.7 ) ) + ( texture2D ( q16,v0 ) ) ) * ( 0.7 ) ) * ( vec4 ( 1.0,1.0,1.0,0.0 ) ) ) + ( vec4 ( 0.0,0.0,0.0,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("u34",Parameter {name = "position4", ty = V4F}),("v34",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("g15",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 u34 ;\nin vec2 v34 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = v34;\ngl_Position = ( MVP ) * ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( 0.4 ),sin ( 0.4 ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( 0.4 ) ),cos ( 0.4 ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( u34 ) ) * ( 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 g15 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( ( ( ( ( v0 ).xyxx ) * ( 0.7 ) ) + ( texture2D ( g15,v0 ) ) ) * ( 0.7 ) ) * ( vec4 ( 1.0,1.0,1.0,0.0 ) ) ) + ( vec4 ( 0.0,0.0,0.0,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("w37",Parameter {name = "position4", ty = V4F}),("x37",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("w13",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 w37 ;\nin vec2 x37 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = x37;\ngl_Position = ( MVP ) * ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( 0.5 ),sin ( 0.5 ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( 0.5 ) ),cos ( 0.5 ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( w37 ) ) * ( 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 w13 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( ( ( ( ( v0 ).xyxx ) * ( 0.7 ) ) + ( texture2D ( w13,v0 ) ) ) * ( 0.7 ) ) * ( vec4 ( 1.0,1.0,1.0,0.0 ) ) ) + ( vec4 ( 0.0,0.0,0.0,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("y40",Parameter {name = "position4", ty = V4F}),("z40",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("m12",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 y40 ;\nin vec2 z40 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = z40;\ngl_Position = ( MVP ) * ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( 0.6 ),sin ( 0.6 ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( 0.6 ) ),cos ( 0.6 ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( y40 ) ) * ( 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 m12 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( ( ( ( ( v0 ).xyxx ) * ( 0.7 ) ) + ( texture2D ( m12,v0 ) ) ) * ( 0.7 ) ) * ( vec4 ( 1.0,1.0,1.0,0.0 ) ) ) + ( vec4 ( 0.0,0.0,0.0,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("a44",Parameter {name = "position4", ty = V4F}),("b44",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("c11",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 a44 ;\nin vec2 b44 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = b44;\ngl_Position = ( MVP ) * ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( 0.7 ),sin ( 0.7 ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( 0.7 ) ),cos ( 0.7 ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( a44 ) ) * ( 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 c11 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( ( ( ( ( v0 ).xyxx ) * ( 0.7 ) ) + ( texture2D ( c11,v0 ) ) ) * ( 0.7 ) ) * ( vec4 ( 1.0,1.0,1.0,0.0 ) ) ) + ( vec4 ( 0.0,0.0,0.0,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("c47",Parameter {name = "position4", ty = V4F}),("d47",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("s9",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 c47 ;\nin vec2 d47 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = d47;\ngl_Position = ( MVP ) * ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( 0.8 ),sin ( 0.8 ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( 0.8 ) ),cos ( 0.8 ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( c47 ) ) * ( 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 s9 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( ( ( ( ( v0 ).xyxx ) * ( 0.7 ) ) + ( texture2D ( s9,v0 ) ) ) * ( 0.7 ) ) * ( vec4 ( 1.0,1.0,1.0,0.0 ) ) ) + ( vec4 ( 0.0,0.0,0.0,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("e50",Parameter {name = "position4", ty = V4F}),("f50",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("i8",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 e50 ;\nin vec2 f50 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = f50;\ngl_Position = ( MVP ) * ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( 0.9 ),sin ( 0.9 ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( 0.9 ) ),cos ( 0.9 ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( e50 ) ) * ( 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 i8 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( ( ( ( ( v0 ).xyxx ) * ( 0.7 ) ) + ( texture2D ( i8,v0 ) ) ) * ( 0.7 ) ) * ( vec4 ( 1.0,1.0,1.0,0.0 ) ) ) + ( vec4 ( 0.0,0.0,0.0,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("g53",Parameter {name = "position4", ty = V4F}),("h53",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("y6",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 g53 ;\nin vec2 h53 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = h53;\ngl_Position = ( MVP ) * ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( 1.0 ),sin ( 1.0 ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( 1.0 ) ),cos ( 1.0 ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( g53 ) ) * ( 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 y6 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( ( ( ( ( v0 ).xyxx ) * ( 0.7 ) ) + ( texture2D ( y6,v0 ) ) ) * ( 0.7 ) ) * ( vec4 ( 1.0,1.0,1.0,0.0 ) ) ) + ( vec4 ( 0.0,0.0,0.0,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("i56",Parameter {name = "position4", ty = V4F}),("j56",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("o5",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 i56 ;\nin vec2 j56 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = j56;\ngl_Position = ( MVP ) * ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( 1.1 ),sin ( 1.1 ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( 1.1 ) ),cos ( 1.1 ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( i56 ) ) * ( 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 o5 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( ( ( ( ( v0 ).xyxx ) * ( 0.7 ) ) + ( texture2D ( o5,v0 ) ) ) * ( 0.7 ) ) * ( vec4 ( 1.0,1.0,1.0,0.0 ) ) ) + ( vec4 ( 0.0,0.0,0.0,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("k59",Parameter {name = "position4", ty = V4F}),("l59",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("e4",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 k59 ;\nin vec2 l59 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = l59;\ngl_Position = ( MVP ) * ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( 1.2 ),sin ( 1.2 ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( 1.2 ) ),cos ( 1.2 ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( k59 ) ) * ( 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 e4 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( ( ( ( ( v0 ).xyxx ) * ( 0.7 ) ) + ( texture2D ( e4,v0 ) ) ) * ( 0.7 ) ) * ( vec4 ( 1.0,1.0,1.0,0.0 ) ) ) + ( vec4 ( 0.0,0.0,0.0,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("m62",Parameter {name = "position4", ty = V4F}),("n62",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 m62 ;\nin vec2 n62 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = n62;\ngl_Position = ( MVP ) * ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( 1.3 ),sin ( 1.3 ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( 1.3 ) ),cos ( 1.3 ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( m62 ) ) * ( 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 u2 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( ( ( ( ( v0 ).xyxx ) * ( 0.7 ) ) + ( texture2D ( u2,v0 ) ) ) * ( 0.7 ) ) * ( vec4 ( 1.0,1.0,1.0,0.0 ) ) ) + ( vec4 ( 0.0,0.0,0.0,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("o65",Parameter {name = "position4", ty = V4F}),("p65",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("k1",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 o65 ;\nin vec2 p65 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = p65;\ngl_Position = ( MVP ) * ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( 1.4 ),sin ( 1.4 ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( 1.4 ) ),cos ( 1.4 ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( o65 ) ) * ( 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 k1 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( ( ( ( ( v0 ).xyxx ) * ( 0.7 ) ) + ( texture2D ( k1,v0 ) ) ) * ( 0.7 ) ) * ( vec4 ( 1.0,1.0,1.0,0.0 ) ) ) + ( vec4 ( 0.0,0.0,0.0,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,6,7,8,9,10,11,12,13,14]}], streams = [], commands = [SetRenderTarget 15,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.0 1.0)}],SetRenderTarget 14,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.0 1.0)}],SetProgram 0,SetTexture 0 29,SetSamplerUniform "u20" 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 13,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.0 1.0)}],SetProgram 1,SetTexture 0 27,SetSamplerUniform "k19" 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 12,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.0 1.0)}],SetProgram 2,SetTexture 0 25,SetSamplerUniform "a18" 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 11,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.0 1.0)}],SetProgram 3,SetTexture 0 23,SetSamplerUniform "q16" 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 10,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.0 1.0)}],SetProgram 4,SetTexture 0 21,SetSamplerUniform "g15" 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 9,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.0 1.0)}],SetProgram 5,SetTexture 0 19,SetSamplerUniform "w13" 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 8,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.0 1.0)}],SetProgram 6,SetTexture 0 17,SetSamplerUniform "m12" 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 7,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.0 1.0)}],SetProgram 7,SetTexture 0 15,SetSamplerUniform "c11" 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 6,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.0 1.0)}],SetProgram 8,SetTexture 0 13,SetSamplerUniform "s9" 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 5,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.0 1.0)}],SetProgram 9,SetTexture 0 11,SetSamplerUniform "i8" 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.0 0.0 0.0 1.0)}],SetProgram 10,SetTexture 0 9,SetSamplerUniform "y6" 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.0 0.0 0.0 1.0)}],SetProgram 11,SetTexture 0 7,SetSamplerUniform "o5" 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.0 0.0 0.0 1.0)}],SetProgram 12,SetTexture 0 5,SetSamplerUniform "e4" 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.0 0.0 0.0 1.0)}],SetProgram 13,SetTexture 0 3,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 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.0 1.0)}],SetProgram 14,SetTexture 0 1,SetSamplerUniform "k1" 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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 256 256), 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)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 10 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 11 0 Nothing)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 12 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 13 0 Nothing)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 14 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 15 0 Nothing)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 16 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 17 0 Nothing)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 18 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 19 0 Nothing)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 20 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 21 0 Nothing)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 22 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 23 0 Nothing)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 24 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 25 0 Nothing)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 26 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 27 0 Nothing)}]},RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (TextureImage 28 0 Nothing)},TargetItem {targetSemantic = Color, targetRef = Just (TextureImage 29 0 Nothing)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("i21",Parameter {name = "position4", ty = V4F}),("j21",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("q19",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 i21 ;\nin vec2 j21 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = j21;\ngl_Position = ( MVP ) * ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( 0.0 ),sin ( 0.0 ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( 0.0 ) ),cos ( 0.0 ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( i21 ) ) * ( 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 q19 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( ( ( ( ( v0 ).xyxx ) * ( 0.7 ) ) + ( texture2D ( q19,v0 ) ) ) * ( 0.7 ) ) * ( vec4 ( 1.0,1.0,1.0,0.0 ) ) ) + ( vec4 ( 0.0,0.0,0.0,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("k24",Parameter {name = "position4", ty = V4F}),("l24",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("i18",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 k24 ;\nin vec2 l24 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = l24;\ngl_Position = ( MVP ) * ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( 0.1 ),sin ( 0.1 ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( 0.1 ) ),cos ( 0.1 ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( k24 ) ) * ( 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 i18 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( ( ( ( ( v0 ).xyxx ) * ( 0.7 ) ) + ( texture2D ( i18,v0 ) ) ) * ( 0.7 ) ) * ( vec4 ( 1.0,1.0,1.0,0.0 ) ) ) + ( vec4 ( 0.0,0.0,0.0,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("m27",Parameter {name = "position4", ty = V4F}),("n27",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("a17",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 m27 ;\nin vec2 n27 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = n27;\ngl_Position = ( MVP ) * ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( 0.2 ),sin ( 0.2 ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( 0.2 ) ),cos ( 0.2 ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( m27 ) ) * ( 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 a17 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( ( ( ( ( v0 ).xyxx ) * ( 0.7 ) ) + ( texture2D ( a17,v0 ) ) ) * ( 0.7 ) ) * ( vec4 ( 1.0,1.0,1.0,0.0 ) ) ) + ( vec4 ( 0.0,0.0,0.0,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("o30",Parameter {name = "position4", ty = V4F}),("p30",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("s15",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 o30 ;\nin vec2 p30 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = p30;\ngl_Position = ( MVP ) * ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( 0.3 ),sin ( 0.3 ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( 0.3 ) ),cos ( 0.3 ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( o30 ) ) * ( 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 s15 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( ( ( ( ( v0 ).xyxx ) * ( 0.7 ) ) + ( texture2D ( s15,v0 ) ) ) * ( 0.7 ) ) * ( vec4 ( 1.0,1.0,1.0,0.0 ) ) ) + ( vec4 ( 0.0,0.0,0.0,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("q33",Parameter {name = "position4", ty = V4F}),("r33",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("k14",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 q33 ;\nin vec2 r33 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = r33;\ngl_Position = ( MVP ) * ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( 0.4 ),sin ( 0.4 ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( 0.4 ) ),cos ( 0.4 ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( q33 ) ) * ( 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 k14 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( ( ( ( ( v0 ).xyxx ) * ( 0.7 ) ) + ( texture2D ( k14,v0 ) ) ) * ( 0.7 ) ) * ( vec4 ( 1.0,1.0,1.0,0.0 ) ) ) + ( vec4 ( 0.0,0.0,0.0,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("s36",Parameter {name = "position4", ty = V4F}),("t36",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("c13",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 s36 ;\nin vec2 t36 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = t36;\ngl_Position = ( MVP ) * ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( 0.5 ),sin ( 0.5 ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( 0.5 ) ),cos ( 0.5 ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( s36 ) ) * ( 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 c13 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( ( ( ( ( v0 ).xyxx ) * ( 0.7 ) ) + ( texture2D ( c13,v0 ) ) ) * ( 0.7 ) ) * ( vec4 ( 1.0,1.0,1.0,0.0 ) ) ) + ( vec4 ( 0.0,0.0,0.0,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("u39",Parameter {name = "position4", ty = V4F}),("v39",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("u11",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 u39 ;\nin vec2 v39 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = v39;\ngl_Position = ( MVP ) * ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( 0.6 ),sin ( 0.6 ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( 0.6 ) ),cos ( 0.6 ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( u39 ) ) * ( 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 u11 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( ( ( ( ( v0 ).xyxx ) * ( 0.7 ) ) + ( texture2D ( u11,v0 ) ) ) * ( 0.7 ) ) * ( vec4 ( 1.0,1.0,1.0,0.0 ) ) ) + ( vec4 ( 0.0,0.0,0.0,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("w42",Parameter {name = "position4", ty = V4F}),("x42",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("m10",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 w42 ;\nin vec2 x42 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = x42;\ngl_Position = ( MVP ) * ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( 0.7 ),sin ( 0.7 ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( 0.7 ) ),cos ( 0.7 ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( w42 ) ) * ( 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 m10 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( ( ( ( ( v0 ).xyxx ) * ( 0.7 ) ) + ( texture2D ( m10,v0 ) ) ) * ( 0.7 ) ) * ( vec4 ( 1.0,1.0,1.0,0.0 ) ) ) + ( vec4 ( 0.0,0.0,0.0,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("y45",Parameter {name = "position4", ty = V4F}),("z45",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("e9",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 y45 ;\nin vec2 z45 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = z45;\ngl_Position = ( MVP ) * ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( 0.8 ),sin ( 0.8 ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( 0.8 ) ),cos ( 0.8 ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( y45 ) ) * ( 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 e9 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( ( ( ( ( v0 ).xyxx ) * ( 0.7 ) ) + ( texture2D ( e9,v0 ) ) ) * ( 0.7 ) ) * ( vec4 ( 1.0,1.0,1.0,0.0 ) ) ) + ( vec4 ( 0.0,0.0,0.0,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("a49",Parameter {name = "position4", ty = V4F}),("b49",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("w7",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 a49 ;\nin vec2 b49 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = b49;\ngl_Position = ( MVP ) * ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( 0.9 ),sin ( 0.9 ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( 0.9 ) ),cos ( 0.9 ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( a49 ) ) * ( 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 w7 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( ( ( ( ( v0 ).xyxx ) * ( 0.7 ) ) + ( texture2D ( w7,v0 ) ) ) * ( 0.7 ) ) * ( vec4 ( 1.0,1.0,1.0,0.0 ) ) ) + ( vec4 ( 0.0,0.0,0.0,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("c52",Parameter {name = "position4", ty = V4F}),("d52",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("o6",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 c52 ;\nin vec2 d52 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = d52;\ngl_Position = ( MVP ) * ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( 1.0 ),sin ( 1.0 ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( 1.0 ) ),cos ( 1.0 ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( c52 ) ) * ( 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 o6 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( ( ( ( ( v0 ).xyxx ) * ( 0.7 ) ) + ( texture2D ( o6,v0 ) ) ) * ( 0.7 ) ) * ( vec4 ( 1.0,1.0,1.0,0.0 ) ) ) + ( vec4 ( 0.0,0.0,0.0,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("e55",Parameter {name = "position4", ty = V4F}),("f55",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("g5",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 e55 ;\nin vec2 f55 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = f55;\ngl_Position = ( MVP ) * ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( 1.1 ),sin ( 1.1 ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( 1.1 ) ),cos ( 1.1 ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( e55 ) ) * ( 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 g5 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( ( ( ( ( v0 ).xyxx ) * ( 0.7 ) ) + ( texture2D ( g5,v0 ) ) ) * ( 0.7 ) ) * ( vec4 ( 1.0,1.0,1.0,0.0 ) ) ) + ( vec4 ( 0.0,0.0,0.0,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("g58",Parameter {name = "position4", ty = V4F}),("h58",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("y3",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 g58 ;\nin vec2 h58 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = h58;\ngl_Position = ( MVP ) * ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( 1.2 ),sin ( 1.2 ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( 1.2 ) ),cos ( 1.2 ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( g58 ) ) * ( 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 y3 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( ( ( ( ( v0 ).xyxx ) * ( 0.7 ) ) + ( texture2D ( y3,v0 ) ) ) * ( 0.7 ) ) * ( vec4 ( 1.0,1.0,1.0,0.0 ) ) ) + ( vec4 ( 0.0,0.0,0.0,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("i61",Parameter {name = "position4", ty = V4F}),("j61",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("q2",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 i61 ;\nin vec2 j61 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = j61;\ngl_Position = ( MVP ) * ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( 1.3 ),sin ( 1.3 ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( 1.3 ) ),cos ( 1.3 ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( i61 ) ) * ( 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 q2 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( ( ( ( ( v0 ).xyxx ) * ( 0.7 ) ) + ( texture2D ( q2,v0 ) ) ) * ( 0.7 ) ) * ( vec4 ( 1.0,1.0,1.0,0.0 ) ) ) + ( vec4 ( 0.0,0.0,0.0,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("k64",Parameter {name = "position4", ty = V4F}),("l64",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("i1",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 k64 ;\nin vec2 l64 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = l64;\ngl_Position = ( MVP ) * ( ( ( mat4 ( vec4 ( 1.0,0.0,0.0,0.0 ),vec4 ( 0.0,cos ( 1.4 ),sin ( 1.4 ),0.0 ),vec4 ( 0.0,( 0.0 ) - ( sin ( 1.4 ) ),cos ( 1.4 ),0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( k64 ) ) * ( 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 i1 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( ( ( ( ( ( v0 ).xyxx ) * ( 0.7 ) ) + ( texture2D ( i1,v0 ) ) ) * ( 0.7 ) ) * ( vec4 ( 1.0,1.0,1.0,0.0 ) ) ) + ( vec4 ( 0.0,0.0,0.0,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,6,7,8,9,10,11,12,13,14]}], streams = [], commands = [SetRenderTarget 15,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.0 1.0)}],SetRenderTarget 14,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.0 1.0)}],SetProgram 0,SetTexture 0 29,SetSamplerUniform "q19" 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 13,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.0 1.0)}],SetProgram 1,SetTexture 0 27,SetSamplerUniform "i18" 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 12,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.0 1.0)}],SetProgram 2,SetTexture 0 25,SetSamplerUniform "a17" 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 11,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.0 1.0)}],SetProgram 3,SetTexture 0 23,SetSamplerUniform "s15" 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 10,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.0 1.0)}],SetProgram 4,SetTexture 0 21,SetSamplerUniform "k14" 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 9,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.0 1.0)}],SetProgram 5,SetTexture 0 19,SetSamplerUniform "c13" 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 8,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.0 1.0)}],SetProgram 6,SetTexture 0 17,SetSamplerUniform "u11" 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 7,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.0 1.0)}],SetProgram 7,SetTexture 0 15,SetSamplerUniform "m10" 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 6,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.0 1.0)}],SetProgram 8,SetTexture 0 13,SetSamplerUniform "e9" 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 5,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.0 0.0 0.0 1.0)}],SetProgram 9,SetTexture 0 11,SetSamplerUniform "w7" 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.0 0.0 0.0 1.0)}],SetProgram 10,SetTexture 0 9,SetSamplerUniform "o6" 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.0 0.0 0.0 1.0)}],SetProgram 11,SetTexture 0 7,SetSamplerUniform "g5" 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.0 0.0 0.0 1.0)}],SetProgram 12,SetTexture 0 5,SetSamplerUniform "y3" 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.0 0.0 0.0 1.0)}],SetProgram 13,SetTexture 0 3,SetSamplerUniform "q2" 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.0 0.0 0.0 1.0)}],SetProgram 14,SetTexture 0 1,SetSamplerUniform "i1" 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/recursivetexture02.out b/testdata/recursivetexture02.out
index 1945fa12..81f79d73 100644
--- a/testdata/recursivetexture02.out
+++ b/testdata/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 [("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 [("x8",Parameter {name = "position4", ty = V4F}),("y8",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 x8 ;\nin vec2 y8 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = y8;\ngl_Position = ( ( MVP ) * ( x8 ) ) * ( 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 [("c11",Parameter {name = "position4", ty = V4F}),("d11",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 c11 ;\nin vec2 d11 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = d11;\ngl_Position = ( ( MVP ) * ( c11 ) ) * ( 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 [("h13",Parameter {name = "position4", ty = V4F}),("i13",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 h13 ;\nin vec2 i13 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = i13;\ngl_Position = ( ( MVP ) * ( h13 ) ) * ( 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 [("m15",Parameter {name = "position4", ty = V4F}),("n15",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 m15 ;\nin vec2 n15 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = n15;\ngl_Position = ( ( MVP ) * ( m15 ) ) * ( 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 [("r17",Parameter {name = "position4", ty = V4F}),("s17",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 r17 ;\nin vec2 s17 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = s17;\ngl_Position = ( ( MVP ) * ( r17 ) ) * ( 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 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 [("g6",Parameter {name = "position4", ty = V4F}),("h6",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 g6 ;\nin vec2 h6 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = h6;\ngl_Position = ( ( MVP ) * ( g6 ) ) * ( 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 [("l8",Parameter {name = "position4", ty = V4F}),("m8",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("g4",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 l8 ;\nin vec2 m8 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = m8;\ngl_Position = ( ( MVP ) * ( l8 ) ) * ( 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 g4 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( texture2D ( g4,v0 ) ) * ( vec4 ( 0.7,0.7,0.7,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("q10",Parameter {name = "position4", ty = V4F}),("r10",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("k3",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 q10 ;\nin vec2 r10 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = r10;\ngl_Position = ( ( MVP ) * ( q10 ) ) * ( 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 k3 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( texture2D ( k3,v0 ) ) * ( vec4 ( 0.7,0.7,0.7,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("v12",Parameter {name = "position4", ty = V4F}),("w12",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("o2",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 v12 ;\nin vec2 w12 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = w12;\ngl_Position = ( ( MVP ) * ( v12 ) ) * ( 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 o2 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( texture2D ( o2,v0 ) ) * ( vec4 ( 0.7,0.7,0.7,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("a15",Parameter {name = "position4", ty = V4F}),("b15",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("s1",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 a15 ;\nin vec2 b15 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = b15;\ngl_Position = ( ( MVP ) * ( a15 ) ) * ( 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 s1 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( texture2D ( s1,v0 ) ) * ( vec4 ( 0.7,0.7,0.7,1.0 ) );\n}\n"},Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("f17",Parameter {name = "position4", ty = V4F}),("g17",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("w0",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 f17 ;\nin vec2 g17 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = g17;\ngl_Position = ( ( MVP ) * ( f17 ) ) * ( 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 w0 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = ( texture2D ( w0,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 "g4" 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 "k3" 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 "o2" 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 "s1" 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 "w0" 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/reduce01.out b/testdata/reduce01.out
index ffb555de..24284b6a 100644
--- a/testdata/reduce01.out
+++ b/testdata/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 [("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 Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [], programStreams = fromList [("k1",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 k1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = k1;\ngl_Position = k1;\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/reduce05.out b/testdata/reduce05.out
index 869abcf2..e2285472 100644
--- a/testdata/reduce05.out
+++ b/testdata/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 [("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 Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [], programStreams = fromList [("l1",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 l1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = l1;\ngl_Position = l1;\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 [("a3",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 a3 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = a3;\ngl_Position = a3;\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/simple02.out b/testdata/simple02.out
index 3a412ffe..4b4458ff 100644
--- a/testdata/simple02.out
+++ b/testdata/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 [("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 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 );\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/simple03.out b/testdata/simple03.out
index 634bc7d3..01aa6fe1 100644
--- a/testdata/simple03.out
+++ b/testdata/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 [("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 ( ( a2 ).x,( a2 ).y,( a2 ).z,1.0 );\ngl_Position = ( viewProj ) * ( vec4 ( ( z1 ).x,( z1 ).y,( z1 ).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,1.0,1.0,1.0 );\n}\n"},Program {programUniforms = fromList [("viewProj",M44F)], programStreams = fromList [("x4",Parameter {name = "position", ty = V3F}),("y4",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 x4 ;\nin vec3 y4 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( ( y4 ).x,( y4 ).y,( y4 ).z,1.0 );\ngl_Position = ( viewProj ) * ( vec4 ( ( x4 ).x,( x4 ).y,( x4 ).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"}], 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 [("x1",Parameter {name = "position", ty = V3F}),("y1",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 x1 ;\nin vec3 y1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( ( y1 ).x,( y1 ).y,( y1 ).z,1.0 );\ngl_Position = ( viewProj ) * ( vec4 ( ( x1 ).x,( x1 ).y,( x1 ).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,1.0,1.0,1.0 );\n}\n"},Program {programUniforms = fromList [("viewProj",M44F)], programStreams = fromList [("t4",Parameter {name = "position", ty = V3F}),("u4",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 t4 ;\nin vec3 u4 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( ( u4 ).x,( u4 ).y,( u4 ).z,1.0 );\ngl_Position = ( viewProj ) * ( vec4 ( ( t4 ).x,( t4 ).y,( t4 ).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"}], 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/texture01.out b/testdata/texture01.out
index bf4e3a19..8aeb7779 100644
--- a/testdata/texture01.out
+++ b/testdata/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 [("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 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 [("x1",Parameter {name = "position4", ty = V4F}),("y1",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 x1 ;\nin vec2 y1 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = y1;\ngl_Position = ( ( MVP ) * ( x1 ) ) * ( 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/texture02.out b/testdata/texture02.out
index 8c796b28..aed6957b 100644
--- a/testdata/texture02.out
+++ b/testdata/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 [("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 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 [("l2",Parameter {name = "position4", ty = V4F}),("m2",Parameter {name = "vertexUV", ty = V2F})], programInTextures = fromList [("v0",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 l2 ;\nin vec2 m2 ;\nsmooth out vec2 v0 ;\nvoid main() {\nv0 = m2;\ngl_Position = ( ( MVP ) * ( l2 ) ) * ( 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 v0 ;\nsmooth in vec2 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = texture2D ( v0,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 "v0" 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/uniformparam01.out b/testdata/uniformparam01.out
index 2d0a5893..967fe621 100644
--- a/testdata/uniformparam01.out
+++ b/testdata/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 [("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 Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("k1",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 k1 ;\nflat out vec4 v0 ;\nvoid main() {\nv0 = k1;\ngl_Position = ( MVP ) * ( k1 );\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/uniformparam02.out b/testdata/uniformparam02.out
index ed282f84..e53f771e 100644
--- a/testdata/uniformparam02.out
+++ b/testdata/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 [("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 Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)}]}], programs = [Program {programUniforms = fromList [], programStreams = fromList [("c1",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 c1 ;\nflat out vec4 v0 ;\nvoid main() {\nv0 = c1;\ngl_Position = c1;\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/uniformparam03.out b/testdata/uniformparam03.out
index 2d0a5893..967fe621 100644
--- a/testdata/uniformparam03.out
+++ b/testdata/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 [("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 Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("k1",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 k1 ;\nflat out vec4 v0 ;\nvoid main() {\nv0 = k1;\ngl_Position = ( MVP ) * ( k1 );\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