| Stability | experimental |
|---|---|
| Maintainer | conal@conal.net |
Shady.Language.Operator
Description
Known constants
- data Op where
- Lit :: Show a => a -> Op a
- And :: IsNat n => Op (Binop (Vec n Bool))
- Or :: IsNat n => Op (Binop (Vec n Bool))
- Not :: IsNat n => Op (Unop (Vec n Bool))
- EqualV :: (IsNat n, IsScalar a, Eq a) => Nat n -> Op (Vec n a -> Vec n a -> Vec n Bool)
- AllV :: IsNat n => Op (Vec n Bool -> B1)
- AnyV :: IsNat n => Op (Vec n Bool -> B1)
- Equal :: Eq (Vec n a) => Op (Pred2 (Vec n a))
- Lt :: (IsNat n, IsScalar a, Ord a) => Nat n -> Op (Vec n a -> Vec n a -> Vec n Bool)
- Le :: (IsNat n, IsScalar a, Ord a) => Nat n -> Op (Vec n a -> Vec n a -> Vec n Bool)
- Min :: (IsNat n, IsScalar a, Ord a) => Op (Binop (Vec n a))
- Max :: (IsNat n, IsScalar a, Ord a) => Op (Binop (Vec n a))
- Negate :: (IsNat n, IsScalar a, Num a) => Op (Unop (Vec n a))
- Add :: (IsNat n, IsScalar a, Num a) => Op (Binop (Vec n a))
- Sub :: (IsNat n, IsScalar a, Num a) => Op (Binop (Vec n a))
- Mul :: (IsNat n, IsScalar a, Num a) => Op (Binop (Vec n a))
- Abs :: (IsNat n, IsScalar a, Num a) => Op (Unop (Vec n a))
- Signum :: (IsNat n, IsScalar a, Num a) => Op (Unop (Vec n a))
- Quot :: (IsNat n, IsScalar a, Integral a) => Op (Binop (Vec n a))
- Rem :: (IsNat n, IsScalar a, Integral a) => Op (Binop (Vec n a))
- Div :: (IsNat n, IsScalar a, Integral a) => Op (Binop (Vec n a))
- Mod :: (IsNat n, IsScalar a, Integral a) => Op (Binop (Vec n a))
- Recip :: (IsNat n, IsScalar a, Fractional a) => Op (Unop (Vec n a))
- Divide :: (IsNat n, IsScalar a, Fractional a) => Op (Binop (Vec n a))
- Sqrt :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a))
- Exp :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a))
- Log :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a))
- Sin :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a))
- Cos :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a))
- Asin :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a))
- Atan :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a))
- Acos :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a))
- Sinh :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a))
- Cosh :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a))
- Asinh :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a))
- Atanh :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a))
- Acosh :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a))
- Truncate :: IsNat n => Op (Unop (Vec n R))
- Round :: IsNat n => Op (Unop (Vec n R))
- Ceiling :: IsNat n => Op (Unop (Vec n R))
- Floor :: IsNat n => Op (Unop (Vec n R))
- FMod :: (IsNat n, IsScalar a, FMod a) => Op (Binop (Vec n a))
- VVec2 :: IsScalar a => Op (One a -> One a -> Two a)
- VVec3 :: IsScalar a => Op (One a -> One a -> One a -> Three a)
- VVec4 :: IsScalar a => Op (One a -> One a -> One a -> One a -> Four a)
- Dot :: IsNat n => Op (Vec n R -> Vec n R -> R1)
- Swizzle :: (IsNat n, IsNat m, IsScalar a) => Vec n (Index m) -> Op (Vec m a -> Vec n a)
- Unit :: Op ()
- Pair :: Op (a -> b -> (a, b))
- Fst :: Op ((a, b) -> a)
- Snd :: Op ((a, b) -> b)
- If :: HasType a => Op (B1 -> Binop a)
- Cat :: (IsNat m, IsNat n, IsNat (m :+: n), IsScalar a) => Nat m -> Nat n -> VectorT (m :+: n) a -> Op (Vec m a -> Vec n a -> Vec (m :+: n) a)
- UniformV :: IsNat n => VectorT n a -> Op (One a -> Vec n a)
- Scale :: (IsNat n, Num a, IsScalar a) => Op (One a -> Unop (Vec n a))
- Texture :: IsNat n => Nat n -> Op (Sampler n -> Vec n R -> R4)
- data OpInfo a = OpInfo {}
- info :: Op a -> OpInfo a
- opExpr :: Op z -> [Expr] -> Expr
- opVal :: Op a -> a
- opEq :: Op a -> Op b -> Bool
Documentation
Constructors
| Lit :: Show a => a -> Op a | |
| And :: IsNat n => Op (Binop (Vec n Bool)) | |
| Or :: IsNat n => Op (Binop (Vec n Bool)) | |
| Not :: IsNat n => Op (Unop (Vec n Bool)) | |
| EqualV :: (IsNat n, IsScalar a, Eq a) => Nat n -> Op (Vec n a -> Vec n a -> Vec n Bool) | |
| AllV :: IsNat n => Op (Vec n Bool -> B1) | |
| AnyV :: IsNat n => Op (Vec n Bool -> B1) | |
| Equal :: Eq (Vec n a) => Op (Pred2 (Vec n a)) | |
| Lt :: (IsNat n, IsScalar a, Ord a) => Nat n -> Op (Vec n a -> Vec n a -> Vec n Bool) | |
| Le :: (IsNat n, IsScalar a, Ord a) => Nat n -> Op (Vec n a -> Vec n a -> Vec n Bool) | |
| Min :: (IsNat n, IsScalar a, Ord a) => Op (Binop (Vec n a)) | |
| Max :: (IsNat n, IsScalar a, Ord a) => Op (Binop (Vec n a)) | |
| Negate :: (IsNat n, IsScalar a, Num a) => Op (Unop (Vec n a)) | |
| Add :: (IsNat n, IsScalar a, Num a) => Op (Binop (Vec n a)) | |
| Sub :: (IsNat n, IsScalar a, Num a) => Op (Binop (Vec n a)) | |
| Mul :: (IsNat n, IsScalar a, Num a) => Op (Binop (Vec n a)) | |
| Abs :: (IsNat n, IsScalar a, Num a) => Op (Unop (Vec n a)) | |
| Signum :: (IsNat n, IsScalar a, Num a) => Op (Unop (Vec n a)) | |
| Quot :: (IsNat n, IsScalar a, Integral a) => Op (Binop (Vec n a)) | |
| Rem :: (IsNat n, IsScalar a, Integral a) => Op (Binop (Vec n a)) | |
| Div :: (IsNat n, IsScalar a, Integral a) => Op (Binop (Vec n a)) | |
| Mod :: (IsNat n, IsScalar a, Integral a) => Op (Binop (Vec n a)) | |
| Recip :: (IsNat n, IsScalar a, Fractional a) => Op (Unop (Vec n a)) | |
| Divide :: (IsNat n, IsScalar a, Fractional a) => Op (Binop (Vec n a)) | |
| Sqrt :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a)) | |
| Exp :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a)) | |
| Log :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a)) | |
| Sin :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a)) | |
| Cos :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a)) | |
| Asin :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a)) | |
| Atan :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a)) | |
| Acos :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a)) | |
| Sinh :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a)) | |
| Cosh :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a)) | |
| Asinh :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a)) | |
| Atanh :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a)) | |
| Acosh :: (IsNat n, IsScalar a, Floating a) => Op (Unop (Vec n a)) | |
| Truncate :: IsNat n => Op (Unop (Vec n R)) | |
| Round :: IsNat n => Op (Unop (Vec n R)) | |
| Ceiling :: IsNat n => Op (Unop (Vec n R)) | |
| Floor :: IsNat n => Op (Unop (Vec n R)) | |
| FMod :: (IsNat n, IsScalar a, FMod a) => Op (Binop (Vec n a)) | |
| VVec2 :: IsScalar a => Op (One a -> One a -> Two a) | |
| VVec3 :: IsScalar a => Op (One a -> One a -> One a -> Three a) | |
| VVec4 :: IsScalar a => Op (One a -> One a -> One a -> One a -> Four a) | |
| Dot :: IsNat n => Op (Vec n R -> Vec n R -> R1) | |
| Swizzle :: (IsNat n, IsNat m, IsScalar a) => Vec n (Index m) -> Op (Vec m a -> Vec n a) | |
| Unit :: Op () | |
| Pair :: Op (a -> b -> (a, b)) | |
| Fst :: Op ((a, b) -> a) | |
| Snd :: Op ((a, b) -> b) | |
| If :: HasType a => Op (B1 -> Binop a) | |
| Cat :: (IsNat m, IsNat n, IsNat (m :+: n), IsScalar a) => Nat m -> Nat n -> VectorT (m :+: n) a -> Op (Vec m a -> Vec n a -> Vec (m :+: n) a) | |
| UniformV :: IsNat n => VectorT n a -> Op (One a -> Vec n a) | |
| Scale :: (IsNat n, Num a, IsScalar a) => Op (One a -> Unop (Vec n a)) | |
| Texture :: IsNat n => Nat n -> Op (Sampler n -> Vec n R -> R4) |