Skip to content

Commit

Permalink
improve type class handling; experiment with type classes
Browse files Browse the repository at this point in the history
  • Loading branch information
Péter Diviánszky committed Jan 18, 2016
1 parent 0f709c3 commit 9fc1bd3
Show file tree
Hide file tree
Showing 39 changed files with 758 additions and 684 deletions.
11 changes: 10 additions & 1 deletion lc/Builtins.lc
Original file line number Diff line number Diff line change
Expand Up @@ -462,8 +462,17 @@ type family TFFrameBuffer a {-where
-}
type family SameLayerCounts a

class DefaultFragOp a where defaultFragOp :: FragmentOperation a
instance DefaultFragOp (Color (VecS Float 4)) where defaultFragOp = ColorOp NoBlending (V4 True True True True)
instance DefaultFragOp (Depth Float) where defaultFragOp = DepthOp Less True
{-
class DefaultFragOps a where defaultFragOps :: a
instance (DefaultFragOp a, DefaultFragOp b) => DefaultFragOps (FragmentOperation a, FragmentOperation b) where
defaultFragOps = -- (undefined @(), undefined)
(defaultFragOp @a @_, defaultFragOp @b @_)
-}
data FrameBuffer (n :: Nat) b where
Accumulate :: ({-x ~ FragOps' b, -}b ~ FragOps x) => x -> Stream (Fragment n d (RemSemantics b)) -> FrameBuffer n b -> FrameBuffer n b
Accumulate :: FragOps' b -> Stream (Fragment n d (RemSemantics b)) -> FrameBuffer n b -> FrameBuffer n b
FrameBuffer :: (ValidFrameBuffer b, SameLayerCounts a, FrameBuffer n b ~ TFFrameBuffer a) => a -> FrameBuffer n b

accumulate ctx fshader fstr fb = Accumulate ctx (mapFragments fshader fstr) fb
Expand Down
13 changes: 8 additions & 5 deletions src/LambdaCube/Compiler/Infer.hs
Original file line number Diff line number Diff line change
Expand Up @@ -713,6 +713,8 @@ cstrT_ typ = cstr__ []
cstr_ [] t@(TTyCon0 n) (UL (FunN "'VecScalar" [a, b])) | isElemTy n = t2 (cstrT TNat a (NatE 1)) (cstr__ [] b t)
cstr_ ns@[] (UL (FunN "'TFMat" [x, y])) (TyConN "'Mat" [i, j, a]) = t2 (cstr__ ns x (TVec i a)) (cstr__ ns y (TVec j a))
cstr_ ns@[] (TyConN "'Tuple2" [x, y]) (UL (FunN "'JoinTupleType" [x', y'])) = t2 (cstr__ ns x x') (cstr__ ns y y')
cstr_ ns@[] (UL (FunN "'FragOps'" [a])) (TyConN "'FragmentOperation" [x]) = cstr__ ns a x
cstr_ ns@[] (UL (FunN "'FragOps'" [a])) (TyConN "'Tuple2" [TyConN "'FragmentOperation" [x], TyConN "'FragmentOperation" [y]]) = cstr__ ns a $ tTuple2 x y
cstr_ ns@[] (UL (FunN "'JoinTupleType" [x', y'])) (TyConN "'Tuple2" [x, y]) = t2 (cstr__ ns x' x) (cstr__ ns y' y)
cstr_ ns@[] (UL (FunN "'JoinTupleType" [x', y'])) x@NoTup = t2 (cstr__ ns x' x) (cstr__ ns y' TTuple0)
cstr_ ns@[] (x@NoTup) (UL (FunN "'InterpolatedType" [x'])) = cstr__ ns (TInterpolated x) x'
Expand Down Expand Up @@ -1666,17 +1668,18 @@ compileFunAlts :: Bool -> (SExp -> SExp) -> (SExp -> SExp) -> GlobalEnv' -> [Stm
compileFunAlts par ulend lend ge ds = \case
[Instance{}] -> []
[Class n ps ms] -> compileFunAlts' SLabelEnd ge $
[ FunAlt n (map noTA ps) Nothing $ foldr ST2 (SGlobal (fst n', "'Unit")) cstrs | Instance n' ps cstrs _ <- ds, n == n' ]
[ TypeAnn n $ foldr (SPi Visible) SType $ replicate (length ps) $ Wildcard SType ]
++ [ FunAlt n (map noTA ps) Nothing $ foldr ST2 (SGlobal (fst n', "'Unit")) cstrs | Instance n' ps cstrs _ <- ds, n == n' ]
++ [ FunAlt n (map noTA $ replicate (length ps) (PVar (debugSI "compileFunAlts1", "generated_name0"))) Nothing $ SGlobal (debugSI "compileFunAlts2","'Empty") `SAppV` sLit noSI (LString $ "no instance of " ++ snd n ++ " on ???")]
++ concat
[ TypeAnn (debugSI "compileFunAlts3", m) (addParamsS (map ((,) Hidden) ps) $ SPi Hidden (foldl SAppV (SGlobal n) $ downToS 0 $ length ps) $ upS t)
: [ FunAlt (si,m) p Nothing $ {- SLam Hidden (Wildcard SType) $ upS $ -} substS 0 (Var ic) $ upS__ (ic+1) 1 e
[ TypeAnn m (addParamsS (map ((,) Hidden) ps) $ SPi Hidden (foldl SAppV (SGlobal n) $ downToS 0 $ length ps) $ upS t)
: [ FunAlt m p Nothing $ {- SLam Hidden (Wildcard SType) $ upS $ -} substS 0 (Var ic) $ upS__ (ic+1) 1 e
| Instance n' i cstrs alts <- ds, n' == n
, Let (_,m') ~Nothing ~Nothing ar e <- alts, m' == m
, Let m' ~Nothing ~Nothing ar e <- alts, m' == m
, let p = zip ((,) Hidden <$> ps) i -- ++ ((Hidden, Wildcard SType), PVar): []
, let ic = sum $ map varP i
]
| ((si, m), t) <- ms
| (m, t) <- ms
, let ts = fst $ getParamsS $ upS t
]
[TypeAnn n t] -> [Primitive n Nothing t | all (/= snd n) [n' | FunAlt (_, n') _ _ _ <- ds]]
Expand Down
1,342 changes: 701 additions & 641 deletions testdata/accept/Builtins.out

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion testdata/accept/Graphics.out

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion testdata/accept/HyperbolicParaboloic.out
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F),("Mouse",V2F)], programStreams = fromList [("q1",Parameter {name = "attribute_0", ty = V3F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nuniform vec2 Mouse ;\nin vec3 q1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( 0.0,0.0,0.0,1.0 );\ngl_Position = ( ( MVP ) * ( vec4 ( ( ( Mouse ).y ) * ( 0.0 ),( ( ( 0.5 ) * ( ( Mouse ).x ) ) * ( 0.0 ) ) * ( 0.0 ),( ( Mouse ).y ) * ( 0.0 ),1.0 ) ) ) * ( vec4 ( 0.1,0.1,0.1,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"}], slots = [], streams = [StreamData {streamData = fromList [("attribute_0",VFloatArray [-3.0,-3.0,0.0,-3.0,3.0,0.0,-2.0,-3.0,0.0,-2.0,3.0,0.0,-1.0,-3.0,0.0,-1.0,3.0,0.0,0.0,-3.0,0.0,0.0,3.0,0.0,1.0,-3.0,0.0,1.0,3.0,0.0,2.0,-3.0,0.0,2.0,3.0,0.0,3.0,-3.0,0.0,3.0,3.0,0.0,-3.0,-3.0,0.0,3.0,-3.0,0.0,-3.0,-2.0,0.0,3.0,-2.0,0.0,-3.0,-1.0,0.0,3.0,-1.0,0.0,-3.0,0.0,0.0,3.0,0.0,0.0,-3.0,1.0,0.0,3.0,1.0,0.0,-3.0,2.0,0.0,3.0,2.0,0.0,-3.0,3.0,0.0,3.0,3.0,0.0])], streamType = fromList [("attribute_0",V3F)], streamPrimitive = Lines, streamPrograms = [0]}], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 1.0 1.0 1.0 1.0)}],SetProgram 0,SetRasterContext (LineCtx 1.0 LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderStream 0]}
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F),("Mouse",V2F)], programStreams = fromList [("o1",Parameter {name = "attribute_0", ty = V3F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nuniform vec2 Mouse ;\nin vec3 o1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( 0.0,0.0,0.0,1.0 );\ngl_Position = ( ( MVP ) * ( vec4 ( ( ( Mouse ).y ) * ( 0.0 ),( ( ( 0.5 ) * ( ( Mouse ).x ) ) * ( 0.0 ) ) * ( 0.0 ),( ( Mouse ).y ) * ( 0.0 ),1.0 ) ) ) * ( vec4 ( 0.1,0.1,0.1,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"}], slots = [], streams = [StreamData {streamData = fromList [("attribute_0",VFloatArray [-3.0,-3.0,0.0,-3.0,3.0,0.0,-2.0,-3.0,0.0,-2.0,3.0,0.0,-1.0,-3.0,0.0,-1.0,3.0,0.0,0.0,-3.0,0.0,0.0,3.0,0.0,1.0,-3.0,0.0,1.0,3.0,0.0,2.0,-3.0,0.0,2.0,3.0,0.0,3.0,-3.0,0.0,3.0,3.0,0.0,-3.0,-3.0,0.0,3.0,-3.0,0.0,-3.0,-2.0,0.0,3.0,-2.0,0.0,-3.0,-1.0,0.0,3.0,-1.0,0.0,-3.0,0.0,0.0,3.0,0.0,0.0,-3.0,1.0,0.0,3.0,1.0,0.0,-3.0,2.0,0.0,3.0,2.0,0.0,-3.0,3.0,0.0,3.0,3.0,0.0])], streamType = fromList [("attribute_0",V3F)], streamPrimitive = Lines, streamPrograms = [0]}], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 1.0 1.0 1.0 1.0)}],SetProgram 0,SetRasterContext (LineCtx 1.0 LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderStream 0]}
2 changes: 1 addition & 1 deletion testdata/accept/Hyperboloid.out
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F),("Mouse",V2F)], programStreams = fromList [("q1",Parameter {name = "attribute_0", ty = V3F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nuniform vec2 Mouse ;\nin vec3 q1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( 0.0,0.0,0.0,1.0 );\ngl_Position = ( ( MVP ) * ( vec4 ( ( ( 2.0 ) * ( ( Mouse ).y ) ) * ( sin ( ( 0.0 ) + ( ( ( Mouse ).x ) * ( 0.0 ) ) ) ),0.0,( ( 2.0 ) * ( ( Mouse ).y ) ) * ( cos ( ( 0.0 ) + ( ( ( Mouse ).x ) * ( 0.0 ) ) ) ),1.0 ) ) ) * ( vec4 ( 0.1,0.1,0.1,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"}], slots = [], streams = [StreamData {streamData = fromList [("attribute_0",VFloatArray [-5.0,-3.0,0.0,-5.0,3.0,0.0,-4.0,-3.0,0.0,-4.0,3.0,0.0,-3.0,-3.0,0.0,-3.0,3.0,0.0,-2.0,-3.0,0.0,-2.0,3.0,0.0,-1.0,-3.0,0.0,-1.0,3.0,0.0,0.0,-3.0,0.0,0.0,3.0,0.0,1.0,-3.0,0.0,1.0,3.0,0.0,2.0,-3.0,0.0,2.0,3.0,0.0,3.0,-3.0,0.0,3.0,3.0,0.0,4.0,-3.0,0.0,4.0,3.0,0.0,5.0,-3.0,0.0,5.0,3.0,0.0])], streamType = fromList [("attribute_0",V3F)], streamPrimitive = Lines, streamPrograms = [0]}], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 1.0 1.0 1.0 1.0)}],SetProgram 0,SetRasterContext (LineCtx 1.0 LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderStream 0]}
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F),("Mouse",V2F)], programStreams = fromList [("o1",Parameter {name = "attribute_0", ty = V3F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nuniform vec2 Mouse ;\nin vec3 o1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = vec4 ( 0.0,0.0,0.0,1.0 );\ngl_Position = ( ( MVP ) * ( vec4 ( ( ( 2.0 ) * ( ( Mouse ).y ) ) * ( sin ( ( 0.0 ) + ( ( ( Mouse ).x ) * ( 0.0 ) ) ) ),0.0,( ( 2.0 ) * ( ( Mouse ).y ) ) * ( cos ( ( 0.0 ) + ( ( ( Mouse ).x ) * ( 0.0 ) ) ) ),1.0 ) ) ) * ( vec4 ( 0.1,0.1,0.1,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"}], slots = [], streams = [StreamData {streamData = fromList [("attribute_0",VFloatArray [-5.0,-3.0,0.0,-5.0,3.0,0.0,-4.0,-3.0,0.0,-4.0,3.0,0.0,-3.0,-3.0,0.0,-3.0,3.0,0.0,-2.0,-3.0,0.0,-2.0,3.0,0.0,-1.0,-3.0,0.0,-1.0,3.0,0.0,0.0,-3.0,0.0,0.0,3.0,0.0,1.0,-3.0,0.0,1.0,3.0,0.0,2.0,-3.0,0.0,2.0,3.0,0.0,3.0,-3.0,0.0,3.0,3.0,0.0,4.0,-3.0,0.0,4.0,3.0,0.0,5.0,-3.0,0.0,5.0,3.0,0.0])], streamType = fromList [("attribute_0",V3F)], streamPrimitive = Lines, streamPrograms = [0]}], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 1.0 1.0 1.0 1.0)}],SetProgram 0,SetRasterContext (LineCtx 1.0 LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderStream 0]}
2 changes: 1 addition & 1 deletion testdata/accept/NewStyle.out
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Depth, targetRef = Just (Framebuffer Depth)},TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [("MVP",M44F)], programStreams = fromList [("q1",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nuniform mat4 MVP ;\nin vec4 q1 ;\nsmooth out vec4 v0 ;\nvoid main() {\nv0 = q1;\ngl_Position = ( ( MVP ) * ( q1 ) ) * ( vec4 ( 0.5,0.5,0.5,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nsmooth in vec4 v0 ;\nout vec4 f0 ;\nvoid main() {\nf0 = v0;\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F)], slotUniforms = fromList [("MVP",M44F)], slotPrimitive = Triangles, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Depth, clearValue = VFloat 1000.0},ClearImage {imageSemantic = Color, clearValue = VV4F (V4 0.1 0.0 0.2 1.0)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [DepthOp Less True,ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]}
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]}
3 changes: 2 additions & 1 deletion testdata/accept/Prelude.out
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,8 @@ tooltips:
./testdata/accept/Prelude.lc 114:1-114:5 'Bool
./testdata/accept/Prelude.lc 114:1-114:5 V2
./testdata/accept/Prelude.lc 114:6-114:9 'Bool -> 'Bool->'Bool
./testdata/accept/Prelude.lc 124:10-124:12 V0
./testdata/accept/Prelude.lc 124:10-124:19 V0->Type
./testdata/accept/Prelude.lc 124:10-124:19 Type
./testdata/accept/Prelude.lc 124:10-124:12 Type
./testdata/accept/Prelude.lc 124:13-124:19 Type
./testdata/accept/Prelude.lc 124:13-124:19 V1
Expand Down
2 changes: 1 addition & 1 deletion testdata/accept/PrimReduce.out
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Pipeline {backend = OpenGL33, textures = [], samplers = [], targets = [RenderTarget {renderTargets = [TargetItem {targetSemantic = Color, targetRef = Just (Framebuffer Color)}]}], programs = [Program {programUniforms = fromList [], programStreams = fromList [("o1",Parameter {name = "position4", ty = V4F})], programInTextures = fromList [], programOutput = [Parameter {name = "f0", ty = V4F}], vertexShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nin vec4 o1 ;\nvoid main() {\ngl_Position = ( ( mat4 ( vec4 ( cos ( 3.0 ),( 0.0 ) - ( sin ( 3.0 ) ),0.0,0.0 ),vec4 ( sin ( 3.0 ),cos ( 3.0 ),0.0,0.0 ),vec4 ( 0.0,0.0,1.0,0.0 ),vec4 ( 0.0,0.0,0.0,1.0 ) ) ) * ( o1 ) ) * ( vec4 ( 0.1,0.1,0.1,1.0 ) );\ngl_PointSize = 1.0;\n}\n", geometryShader = Nothing, fragmentShader = "#version 330 core\nvec4 texture2D(sampler2D s, vec2 uv){return texture(s,uv);}\nout vec4 f0 ;\nvoid main() {\nf0 = vec4 ( 0.0,0.0,1.0,1.0 );\n}\n"}], slots = [Slot {slotName = "stream4", slotStreams = fromList [("position4",V4F)], slotUniforms = fromList [], slotPrimitive = Triangles, slotPrograms = [0]}], streams = [], commands = [SetRenderTarget 0,ClearRenderTarget [ClearImage {imageSemantic = Color, clearValue = VV4F (V4 1.0 0.0 0.0 1.0)}],SetProgram 0,SetRasterContext (TriangleCtx CullNone PolygonFill NoOffset LastVertex),SetAccumulationContext (AccumulationContext {accViewportName = Nothing, accOperations = [ColorOp NoBlending (VV4B (V4 True True True True))]}),RenderSlot 0]}
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]}
Loading

0 comments on commit 9fc1bd3

Please sign in to comment.