Skip to content

Commit ed85fa6

Browse files
committed
Add and tweak more std lib functions, remove gentype, fix type ascribed main bug
1 parent caa2435 commit ed85fa6

File tree

4 files changed

+34
-17
lines changed

4 files changed

+34
-17
lines changed

app/Main.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ renameMainType :: Infer.TypeEnv -> Infer.TypeEnv
2525
renameMainType (Infer.TypeEnv env) = Infer.TypeEnv $ renameMapKey "main" "userEntrypoint" env
2626

2727
renameMain :: [Decl] -> [Decl]
28-
renameMain (("main", expr) : xs) = ("userEntrypoint", expr) : xs
28+
renameMain (("main", expr) : xs) = ("userEntrypoint", expr) : renameMain xs
2929
renameMain (x : xs) = x : renameMain xs
3030
renameMain [] = []
3131

src/Gen.hs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ generateGlslType ty = case ty of
1717
Mat2 -> "mat2"
1818
Mat3 -> "mat3"
1919
Mat4 -> "mat4"
20-
GenType -> "genType"
2120

2221
generateOp :: Binop -> String
2322
generateOp op = case op of
@@ -64,11 +63,9 @@ generateExpr env expr = case expr of
6463
getLastType :: Type -> GlslTypes
6564
getLastType (TArr _ x) = getLastType x
6665
getLastType (TCon x) = x
67-
getLastType (TVar _) = GenType
6866

6967
glslType :: Type -> GlslTypes
7068
glslType (TCon x) = x
71-
glslType (TVar _) = GenType
7269

7370
generateLam :: TypeEnv -> Expr -> Type -> String
7471
generateLam env (Lam var expr) (TArr ty (TCon _)) = let

src/Type.hs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ data GlslTypes
1313
| Mat2
1414
| Mat3
1515
| Mat4
16-
| GenType
1716
deriving (Show, Eq, Ord)
1817

1918
data Type

std.yin

Lines changed: 33 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ box st size = let
1919

2020
random x = fract (sin x * 10000.0)
2121

22-
noise p = let
22+
noise_ p = let
2323
const_step = vec3 110.0 241.0 171.0
2424
i = floor p
2525
f = fract p
@@ -46,40 +46,56 @@ noise p = let
4646

4747
in mix mix_y_1 mix_y_2 u.z
4848

49-
fbm p = let
49+
noise : Vec2 -> Float -> Float -> Float -> Vec4
50+
noise st time scale offset = let
51+
noised = noise_ (vec3 (st.x * scale) (st.y * scale) (offset * time))
52+
color = vec4 noised noised noised 1.0
53+
in color
54+
55+
fbm_ p = let
5056
value_1 = 0.0
5157
amplitude_1 = 0.5
5258
frequency_1 = 0.0
5359

54-
value_2 = value_1 + amplitude_1 * noise p
60+
value_2 = value_1 + amplitude_1 * noise_ p
5561
amplitude_2 = amplitude_1 * 0.5
5662
p_2 = p * vec3 2.0 2.0 2.0
5763

58-
value_3 = value_2 + amplitude_2 * noise p_2
64+
value_3 = value_2 + amplitude_2 * noise_ p_2
5965
amplitude_3 = amplitude_2 * 0.5
6066
p_3 = p_2 * vec3 2.0 2.0 2.0
6167

62-
value_4 = value_3 + amplitude_3 * noise p_3
68+
value_4 = value_3 + amplitude_3 * noise_ p_3
6369
amplitude_4 = amplitude_3 * 0.5
6470
p_4 = p_3 * vec3 2.0 2.0 2.0
6571

66-
value_5 = value_4 + amplitude_4 * noise p_4
72+
value_5 = value_4 + amplitude_4 * noise_ p_4
6773
amplitude_5 = amplitude_4 * 0.5
6874
p_5 = p_4 * vec3 2.0 2.0 2.0
6975

70-
value_6 = value_5 + amplitude_5 * noise p_5
76+
value_6 = value_5 + amplitude_5 * noise_ p_5
7177
amplitude_6 = amplitude_5 * 0.5
7278
p_6 = p_5 * vec3 2.0 2.0 2.0
7379

74-
value_7 = value_6 + amplitude_6 * noise p_6
80+
value_7 = value_6 + amplitude_6 * noise_ p_6
7581
in value_7
7682

77-
domain_warping p = let
78-
q = vec3 (fbm p) (fbm (p + vec3 5.2 1.3 0.0)) p.z
83+
fbm : Vec2 -> Float -> Float -> Float -> Vec4
84+
fbm st time scale offset = let
85+
moved = fbm_ (vec3 (st.x * scale) (st.y * scale) (offset * time))
86+
in vec4 moved moved moved 1.0
87+
88+
dw_ p = let
89+
q = vec3 (fbm_ p) (fbm_ (p + vec3 5.2 1.3 0.0)) p.z
7990
r_1 = p + vec3 4.0 4.0 4.0 * q + vec3 1.7 9.2 0.0
8091
r_2 = p + vec3 4.0 4.0 4.0 * q + vec3 8.3 2.8 0.0
81-
r = vec3 (fbm r_1) (fbm r_2) p.z
82-
in fbm (p + vec3 4.0 4.0 4.0 * r)
92+
r = vec3 (fbm_ r_1) (fbm_ r_2) p.z
93+
in fbm_ (p + vec3 4.0 4.0 4.0 * r)
94+
95+
dw : Vec2 -> Float -> Float -> Float -> Vec4
96+
dw st time scale offset = let
97+
warped = dw_ (vec3 (st.x * scale) (st.y * scale) (offset * time))
98+
in vec4 warped warped warped 1.0
8399

84100
kaleid st nSides = let
85101
offset = st - vec2 0.5 0.5
@@ -114,3 +130,8 @@ osc st time freq sync offset = let
114130
b = sin ((st.x + offset / freq + time * sync) * freq) * 0.5 + 0.5
115131
color = vec4 r g b 1.0
116132
in color
133+
134+
modulate : Vec2 -> Vec4 -> Float -> Vec2
135+
modulate st color amount = let
136+
a = color.xy * vec2 amount amount
137+
in st + a

0 commit comments

Comments
 (0)