mischief-render-0.1.0.0: src/Mischief/Materials/Time.hs
module Mischief.Materials.Time where
import Mischief.Materials
import Mischief.Render.Material.Definition
import Prelude ()
import Prelude qualified
data TimeMaterial
newtype TimeData f = TimeData (Field f Float)
deriving stock (Generic)
deriving anyclass (Bufferable)
newtype Bindings f = Bindings {x :: Uniform f (TimeData f)}
deriving stock (Generic)
deriving anyclass (Bindable)
instance Material TimeMaterial where
type VI TimeMaterial = DefaultVI
type VO TimeMaterial = DefaultVO
type IsPhantom TimeMaterial = Prelude.True
type B TimeMaterial = Bindings
fetch =
FetchBindings
{ camera = \_ -> qres @(Buffer TimeData),
mesh = \_ -> pure (),
result = \t _ -> Bindings t
}
getTime :: Shader TimeMaterial Float
getTime = do
Bindings (TimeData t) <- bindings
pure t