summaryrefslogtreecommitdiff
path: root/lc
diff options
context:
space:
mode:
authorPéter Diviánszky <divipp@gmail.com>2016-01-18 16:02:24 +0100
committerPéter Diviánszky <divipp@gmail.com>2016-01-18 16:05:29 +0100
commit9fc1bd36cbc5ab04f4c9e782aace6288bd707405 (patch)
treee2c3dcef2b60d2e613cb0aeff64b9a887b19fee5 /lc
parent0f709c3726f484d83075abd5d14cb848148ce0df (diff)
improve type class handling; experiment with type classes
Diffstat (limited to 'lc')
-rw-r--r--lc/Builtins.lc11
1 files changed, 10 insertions, 1 deletions
diff --git a/lc/Builtins.lc b/lc/Builtins.lc
index 9886b177..aac7fd8e 100644
--- a/lc/Builtins.lc
+++ b/lc/Builtins.lc
@@ -462,8 +462,17 @@ type family TFFrameBuffer a {-where
462-} 462-}
463type family SameLayerCounts a 463type family SameLayerCounts a
464 464
465class DefaultFragOp a where defaultFragOp :: FragmentOperation a
466instance DefaultFragOp (Color (VecS Float 4)) where defaultFragOp = ColorOp NoBlending (V4 True True True True)
467instance DefaultFragOp (Depth Float) where defaultFragOp = DepthOp Less True
468{-
469class DefaultFragOps a where defaultFragOps :: a
470instance (DefaultFragOp a, DefaultFragOp b) => DefaultFragOps (FragmentOperation a, FragmentOperation b) where
471 defaultFragOps = -- (undefined @(), undefined)
472 (defaultFragOp @a @_, defaultFragOp @b @_)
473-}
465data FrameBuffer (n :: Nat) b where 474data FrameBuffer (n :: Nat) b where
466 Accumulate :: ({-x ~ FragOps' b, -}b ~ FragOps x) => x -> Stream (Fragment n d (RemSemantics b)) -> FrameBuffer n b -> FrameBuffer n b 475 Accumulate :: FragOps' b -> Stream (Fragment n d (RemSemantics b)) -> FrameBuffer n b -> FrameBuffer n b
467 FrameBuffer :: (ValidFrameBuffer b, SameLayerCounts a, FrameBuffer n b ~ TFFrameBuffer a) => a -> FrameBuffer n b 476 FrameBuffer :: (ValidFrameBuffer b, SameLayerCounts a, FrameBuffer n b ~ TFFrameBuffer a) => a -> FrameBuffer n b
468 477
469accumulate ctx fshader fstr fb = Accumulate ctx (mapFragments fshader fstr) fb 478accumulate ctx fshader fstr fb = Accumulate ctx (mapFragments fshader fstr) fb