mischief-render
Safe HaskellNone
LanguageGHC2024

Mischief.Shader.Generation

Documentation

data Binds f Source #

Constructors

Binds 

Instances

Instances details
Bindable Binds Source # 
Instance details

Defined in Mischief.Shader.Generation

Methods

collectBindings :: Nat -> Proxy (Binds Internal) -> (Bindings, Nat)

collectLayouts :: Nat -> Proxy (Binds Internal) -> ([WGPUBindGroupLayoutEntry], Nat)

collectEntries :: Nat -> Binds CPU -> ([WGPUBindGroupEntry], Nat)

dummyBinding :: Nat -> (Binds GPU, Nat)

Generic (Binds f) Source # 
Instance details

Defined in Mischief.Shader.Generation

Associated Types

type Rep (Binds f) 
Instance details

Defined in Mischief.Shader.Generation

type Rep (Binds f) = D1 ('MetaData "Binds" "Mischief.Shader.Generation" "mischief-render-0.1.0.0-inplace" 'False) (C1 ('MetaCons "Binds" 'PrefixI 'True) (S1 ('MetaSel ('Just "sampler") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Binding f Sampler)) :*: S1 ('MetaSel ('Just "texture") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Binding f Texture))))

Methods

from :: Binds f -> Rep (Binds f) x #

to :: Rep (Binds f) x -> Binds f #

type Rep (Binds f) Source # 
Instance details

Defined in Mischief.Shader.Generation

type Rep (Binds f) = D1 ('MetaData "Binds" "Mischief.Shader.Generation" "mischief-render-0.1.0.0-inplace" 'False) (C1 ('MetaCons "Binds" 'PrefixI 'True) (S1 ('MetaSel ('Just "sampler") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Binding f Sampler)) :*: S1 ('MetaSel ('Just "texture") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Binding f Texture))))

data VertexOutput f Source #

Constructors

VertexOutput 

Fields

Instances

Instances details
ShaderParam VertexOutput Source # 
Instance details

Defined in Mischief.Shader.Generation

Methods

collectParams :: Params

paramDefinition :: ParamDefinition

dummyParam :: VertexOutput GPU

collectValues :: VertexOutput GPU -> Values

Generic (VertexOutput f) Source # 
Instance details

Defined in Mischief.Shader.Generation

Associated Types

type Rep (VertexOutput f) 
Instance details

Defined in Mischief.Shader.Generation

type Rep (VertexOutput f) = D1 ('MetaData "VertexOutput" "Mischief.Shader.Generation" "mischief-render-0.1.0.0-inplace" 'False) (C1 ('MetaCons "VertexOutput" 'PrefixI 'True) (S1 ('MetaSel ('Just "position") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (BuiltIn f "position" (Vec 4 Float))) :*: S1 ('MetaSel ('Just "uv") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Location f 0 (Vec 2 Float)))))

Methods

from :: VertexOutput f -> Rep (VertexOutput f) x #

to :: Rep (VertexOutput f) x -> VertexOutput f #

type Rep (VertexOutput f) Source # 
Instance details

Defined in Mischief.Shader.Generation

type Rep (VertexOutput f) = D1 ('MetaData "VertexOutput" "Mischief.Shader.Generation" "mischief-render-0.1.0.0-inplace" 'False) (C1 ('MetaCons "VertexOutput" 'PrefixI 'True) (S1 ('MetaSel ('Just "position") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (BuiltIn f "position" (Vec 4 Float))) :*: S1 ('MetaSel ('Just "uv") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Location f 0 (Vec 2 Float)))))

newtype FragmentOutput f Source #

Constructors

FragmentOutput (Location f 0 (Vec 4 Float)) 

Instances

Instances details
ShaderParam FragmentOutput Source # 
Instance details

Defined in Mischief.Shader.Generation

Generic (FragmentOutput f) Source # 
Instance details

Defined in Mischief.Shader.Generation

Associated Types

type Rep (FragmentOutput f) 
Instance details

Defined in Mischief.Shader.Generation

type Rep (FragmentOutput f) = D1 ('MetaData "FragmentOutput" "Mischief.Shader.Generation" "mischief-render-0.1.0.0-inplace" 'True) (C1 ('MetaCons "FragmentOutput" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Location f 0 (Vec 4 Float)))))
type Rep (FragmentOutput f) Source # 
Instance details

Defined in Mischief.Shader.Generation

type Rep (FragmentOutput f) = D1 ('MetaData "FragmentOutput" "Mischief.Shader.Generation" "mischief-render-0.1.0.0-inplace" 'True) (C1 ('MetaCons "FragmentOutput" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Location f 0 (Vec 4 Float)))))

shaderToWGSL :: forall {k} a (m :: k). ShaderParam a => Map TypeRep ErasedValue -> Shader m (a GPU) -> Text Source #

unwrapValue :: forall (a :: Types). Value -> Expr a Source #

valueToWGSL :: Value -> Text Source #

genFunction :: forall {k} a (m :: k). ShaderParam a => Text -> Text -> Text -> Map TypeRep ErasedValue -> Shader m (a GPU) -> Text Source #

genInput :: ParamDefinition -> Text Source #

genOutput :: ParamDefinition -> Text Source #

genShader :: forall {k} (m :: k) p a. (ShaderParam p, ShaderParam a) => Text -> [ErasedBinding] -> (p GPU -> Shader m (a GPU)) -> Text Source #

genDict :: Nat -> [ErasedBinding] -> Map TypeRep ErasedValue Source #

genBindings :: Nat -> [ErasedBinding] -> Text Source #

genBinding :: BindingData -> Text Source #

genParams :: forall (p :: Type -> Type). ShaderParam p => Proxy p -> Text Source #

genParam :: ParamData -> Text Source #

genShaderT :: forall {k} (m :: k) (b :: Type -> Type) a p. (Bindable b, ShaderParam p, ShaderParam a) => [ErasedBinding] -> (p GPU -> Shader m (a GPU)) -> String Source #