{-# OPTIONS_GHC -Wall #-} ---------------------------------------------------------------------- -- | -- Module : Graphics.FieldTrip.Render -- Copyright : (c) Conal Elliott 2008 -- License : BSD3 -- -- Maintainer : conal@conal.net -- Stability : experimental -- -- Misc rendering-related ---------------------------------------------------------------------- module Graphics.FieldTrip.Render ( ErrorBound, MaterialTrans , GContext(..), defaultGC, onErr , enableNormals , Renderer ) where import Graphics.FieldTrip.Misc (R,Unop) import Graphics.FieldTrip.Material (Material) import Graphics.FieldTrip.Color (Col) -- | For use in dynamically approximating curved surfaces type ErrorBound = R -- | A transformation on materials. Accumulated during rendering. type MaterialTrans = Unop Material -- | Rendering context for geometry data GContext = GC { gcErr :: ErrorBound , gcMaterialTrans :: MaterialTrans , gcNormals :: Maybe Col } -- | Default graphics context defaultGC :: GContext defaultGC = GC { gcErr = 0.01, gcMaterialTrans = id, gcNormals = Nothing } -- | Modify the error-bound in a 'GContext' onErr :: Unop ErrorBound -> Unop GContext onErr f gc = gc { gcErr = f (gcErr gc) } -- | Turn on visible normals. enableNormals :: Col -> GContext -> GContext enableNormals col gc = gc { gcNormals = Just col } -- | renderer type Renderer = GContext -> IO ()