diff options
author | Péter Diviánszky <divipp@gmail.com> | 2016-01-18 16:02:24 +0100 |
---|---|---|
committer | Péter Diviánszky <divipp@gmail.com> | 2016-01-18 16:05:29 +0100 |
commit | 9fc1bd36cbc5ab04f4c9e782aace6288bd707405 (patch) | |
tree | e2c3dcef2b60d2e613cb0aeff64b9a887b19fee5 /lc | |
parent | 0f709c3726f484d83075abd5d14cb848148ce0df (diff) |
improve type class handling; experiment with type classes
Diffstat (limited to 'lc')
-rw-r--r-- | lc/Builtins.lc | 11 |
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 | -} |
463 | type family SameLayerCounts a | 463 | type family SameLayerCounts a |
464 | 464 | ||
465 | class DefaultFragOp a where defaultFragOp :: FragmentOperation a | ||
466 | instance DefaultFragOp (Color (VecS Float 4)) where defaultFragOp = ColorOp NoBlending (V4 True True True True) | ||
467 | instance DefaultFragOp (Depth Float) where defaultFragOp = DepthOp Less True | ||
468 | {- | ||
469 | class DefaultFragOps a where defaultFragOps :: a | ||
470 | instance (DefaultFragOp a, DefaultFragOp b) => DefaultFragOps (FragmentOperation a, FragmentOperation b) where | ||
471 | defaultFragOps = -- (undefined @(), undefined) | ||
472 | (defaultFragOp @a @_, defaultFragOp @b @_) | ||
473 | -} | ||
465 | data FrameBuffer (n :: Nat) b where | 474 | data 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 | ||
469 | accumulate ctx fshader fstr fb = Accumulate ctx (mapFragments fshader fstr) fb | 478 | accumulate ctx fshader fstr fb = Accumulate ctx (mapFragments fshader fstr) fb |