on master help sign in
Update tests to match Math.Vector and Math.Matrix
bf13e7dEvan Czaplicki
tests/compiler/test-files/good/Box.elm+9−8
@@ -1,15 +1,16 @@
1
1
2module Box where
2module Box where
3
3
4−import MJS (V3,M4x4,v3,makeRotate,makePerspective,makeLookAt,mul)
4+import Math.Vector (..)
5+import Math.Matrix (..)
5import Graphics.WebGL (Triangle, zipTriangle, Shader, Model, model, webgl)
6import Graphics.WebGL (Triangle, zipTriangle, Shader, Model, model, webgl)
6import Window(dimensions)
7import Window(dimensions)
7
8
8-- Create a cube in which each point has a color
9-- Create a cube in which each point has a color
9
10
10−type ColorPoint = { color:V3, point:V3 }
11+type ColorPoint = { color:Vec3, point:Vec3 }
11
12
12−face : Color -> V3 -> V3 -> V3 -> V3 -> [Triangle ColorPoint]
13+face : Color -> Vec3 -> Vec3 -> Vec3 -> Vec3 -> [Triangle ColorPoint]
13face color a b c d =
14face color a b c d =
14 let toV3 color =
15 let toV3 color =
15 let c = toRgb color
16 let c = toRgb color
@@ -47,7 +48,7 @@ scene : Float -> [Model]
47scene angle =
48scene angle =
48 [ model vertexShader fragmentShader cube (uniforms angle) ]
49 [ model vertexShader fragmentShader cube (uniforms angle) ]
49
50
50−uniforms : Float -> { rotation:M4x4, perspective:M4x4, camera:M4x4, shade:Float }
51+uniforms : Float -> { rotation:Mat4, perspective:Mat4, camera:Mat4, shade:Float }
51uniforms t =
52uniforms t =
52 { rotation = mul (makeRotate (3*t) (v3 0 1 0)) (makeRotate (2*t) (v3 1 0 0))
53 { rotation = mul (makeRotate (3*t) (v3 0 1 0)) (makeRotate (2*t) (v3 1 0 0))
53 , perspective = makePerspective 45 1 0.01 100
54 , perspective = makePerspective 45 1 0.01 100
@@ -57,9 +58,9 @@ uniforms t =
57
58
58-- Shaders
59-- Shaders
59
60
60−vertexShader : Shader { attr | point:V3, color:V3 }
61+vertexShader : Shader { attr | point:Vec3, color:Vec3 }
61− { unif | rotation:M4x4, perspective:M4x4, camera:M4x4 }
62+ { unif | rotation:Mat4, perspective:Mat4, camera:Mat4 }
62− { vcolor:V3 }
63+ { vcolor:Vec3 }
63vertexShader = [glShader|
64vertexShader = [glShader|
64
65
65attribute vec3 point;
66attribute vec3 point;
@@ -75,7 +76,7 @@ void main () {
75
76
76|]
77|]
77
78
78−fragmentShader : Shader {} {u | shade : Float} {vcolor : V3}
79+fragmentShader : Shader {} { u | shade:Float } { vcolor:Vec3 }
79fragmentShader = [glShader|
80fragmentShader = [glShader|
80
81
81precision mediump float;
82precision mediump float;
tests/compiler/test-files/good/Crate.elm+11−10
@@ -2,14 +2,15 @@
2module Crate where
2module Crate where
3
3
4import Http (..)
4import Http (..)
5−import MJS (..)
5+import Math.Vector (..)
6+import Math.Matrix (..)
6import Graphics.WebGL (..)
7import Graphics.WebGL (..)
7
8
8-- Define the mesh for a crate
9-- Define the mesh for a crate
9−crate : [Triangle { pos:V3, coord:V3 }]
10+crate : [Triangle { pos:Vec3, coord:Vec3 }]
10crate = concatMap rotatedFace [ (0,0), (90,0), (180,0), (270,0), (0,90), (0,-90) ]
11crate = concatMap rotatedFace [ (0,0), (90,0), (180,0), (270,0), (0,90), (0,-90) ]
11
12
12−rotatedFace : (Float,Float) -> [Triangle { pos:V3, coord:V3 }]
13+rotatedFace : (Float,Float) -> [Triangle { pos:Vec3, coord:Vec3 }]
13rotatedFace (angleX,angleY) =
14rotatedFace (angleX,angleY) =
14 let x = makeRotate (degrees angleX) (v3 1 0 0)
15 let x = makeRotate (degrees angleX) (v3 1 0 0)
15 y = makeRotate (degrees angleY) (v3 0 1 0)
16 y = makeRotate (degrees angleY) (v3 0 1 0)
@@ -17,7 +18,7 @@ rotatedFace (angleX,angleY) =
17 in
18 in
18 map (mapTriangle (\x -> {x | pos <- mul4x4 t x.pos })) face
19 map (mapTriangle (\x -> {x | pos <- mul4x4 t x.pos })) face
19
20
20−face : [Triangle { pos:V3, coord:V3 }]
21+face : [Triangle { pos:Vec3, coord:Vec3 }]
21face =
22face =
22 let topLeft = { pos = v3 -1 1 0, coord = v3 0 1 0 }
23 let topLeft = { pos = v3 -1 1 0, coord = v3 0 1 0 }
23 topRight = { pos = v3 1 1 0, coord = v3 1 1 0 }
24 topRight = { pos = v3 1 1 0, coord = v3 1 1 0 }
@@ -27,7 +28,7 @@ face =
27 [ (topLeft,topRight,bottomLeft), (bottomLeft,topRight,bottomRight) ]
28 [ (topLeft,topRight,bottomLeft), (bottomLeft,topRight,bottomRight) ]
28
29
29-- View
30-- View
30−view : Float -> M4x4
31+view : Float -> Mat4
31view angle =
32view angle =
32 foldr1 mul [ perspective
33 foldr1 mul [ perspective
33 , camera
34 , camera
@@ -35,10 +36,10 @@ view angle =
35 , makeRotate (2*angle) (v3 1 0 0)
36 , makeRotate (2*angle) (v3 1 0 0)
36 ]
37 ]
37
38
38−perspective : M4x4
39+perspective : Mat4
39perspective = makePerspective 45 1 0.01 100
40perspective = makePerspective 45 1 0.01 100
40
41
41−camera : M4x4
42+camera : Mat4
42camera = makeLookAt (v3 0 0 5) (v3 0 0 0) (v3 0 1 0)
43camera = makeLookAt (v3 0 0 5) (v3 0 0 0) (v3 0 1 0)
43
44
44-- Putting it together
45-- Putting it together
@@ -48,7 +49,7 @@ main = webgl (400,400) <~ lift2 scene (loadTex "woodCrate.jpg") (view <~ angle)
48angle : Signal Float
49angle : Signal Float
49angle = foldp (\dt theta -> theta + dt / 10000) 0 (fps 25)
50angle = foldp (\dt theta -> theta + dt / 10000) 0 (fps 25)
50
51
51−scene : Response Texture -> M4x4 -> [Model]
52+scene : Response Texture -> Mat4 -> [Model]
52scene response view =
53scene response view =
53 case response of
54 case response of
54 Waiting -> []
55 Waiting -> []
@@ -56,7 +57,7 @@ scene response view =
56 Success tex -> [model vertexShader fragmentShader crate { crate = tex, view = view }]
57 Success tex -> [model vertexShader fragmentShader crate { crate = tex, view = view }]
57
58
58-- Shaders
59-- Shaders
59−vertexShader : Shader { pos:V3, coord:V3 } { u | view:M4x4 } { vcoord:V2 }
60+vertexShader : Shader { pos:Vec3, coord:Vec3 } { u | view:Mat4 } { vcoord:Vec2 }
60vertexShader = [glShader|
61vertexShader = [glShader|
61
62
62attribute vec3 pos;
63attribute vec3 pos;
@@ -70,7 +71,7 @@ void main () {
70
71
71|]
72|]
72
73
73−fragmentShader : Shader {} { u | crate:Texture } { vcoord:V2 }
74+fragmentShader : Shader {} { u | crate:Texture } { vcoord:Vec2 }
74fragmentShader = [glShader|
75fragmentShader = [glShader|
75
76
76precision mediump float;
77precision mediump float;