Skip to content

Commit c962472

Browse files
author
Mike Solomon
committed
Uses rotating cube in uniform
1 parent ac20aaa commit c962472

File tree

1 file changed

+75
-29
lines changed

1 file changed

+75
-29
lines changed

sandbox/Sandbox.purs

Lines changed: 75 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ import Data.Int (toNumber)
1515
import Data.Int.Bits (complement, (.&.))
1616
import Data.JSDate (getTime, now)
1717
import Data.Maybe (Maybe(..), maybe)
18-
import Data.Number (pi, sin)
18+
import Data.Number (pi)
19+
import Data.Number as Math
1920
import Data.UInt (UInt)
2021
import Effect (Effect)
2122
import Effect.Aff (error, launchAff_, throwError)
@@ -62,7 +63,7 @@ import Web.GPU.GPUShaderStage as GPUShaderStage
6263
import Web.GPU.GPUStoreOp as GPUStoreOp
6364
import Web.GPU.GPUTexture (createView)
6465
import Web.GPU.GPUTextureDescriptor (GPUTextureDescriptor)
65-
import Web.GPU.GPUTextureDimension as GPUTextureDimension
66+
6667
import Web.GPU.GPUTextureFormat as GPUTextureFormat
6768
import Web.GPU.GPUTextureUsage as GPUTextureUsage
6869
import Web.GPU.GPUVertexAttribute (GPUVertexAttribute)
@@ -135,29 +136,74 @@ main = do
135136

136137
-- 🎨 Color Vertex Buffer Data
137138
colors :: Float32Array <- fromArray $ hackyFloatConv
138-
-- [ 0.94, 0.97, 1.0
139-
-- , --
140-
-- 0.82, 0.41, 0.11
141-
-- , --
142-
-- 1.0, 0.75, 0.79
143-
-- , --
144-
-- 0.25, 0.41, 0.88
145-
-- , --
146-
-- 0.98, 0.5, 0.44
147-
-- , --
148-
-- 0.96,0.87, 0.7
149-
-- , --
150-
-- 0.96,0.96,0.96
151-
-- , --
152-
-- 1.0, 0.89, 0.7
153-
-- ]
154-
[0.4,0.5,0.4,1.0,1.0,1.0,0.4,0.5,0.4,1.0,1.0,1.0,0.4,0.5,0.4,1.0,1.0,1.0,0.4,0.5,0.4,1.0,1.0,1.0]
139+
[ 0.94
140+
, 0.97
141+
, 1.0
142+
, --
143+
0.82
144+
, 0.41
145+
, 0.11
146+
, --
147+
1.0
148+
, 0.75
149+
, 0.79
150+
, --
151+
0.25
152+
, 0.41
153+
, 0.88
154+
, --
155+
0.98
156+
, 0.5
157+
, 0.44
158+
, --
159+
0.96
160+
, 0.87
161+
, 0.7
162+
, --
163+
0.96
164+
, 0.96
165+
, 0.96
166+
, --
167+
1.0
168+
, 0.89
169+
, 0.7
170+
]
171+
-- [0.4,0.5,0.4,1.0,1.0,1.0,0.4,0.5,0.4,1.0,1.0,1.0,0.4,0.5,0.4,1.0,1.0,1.0,0.4,0.5,0.4,1.0,1.0,1.0]
155172
let
156173
makeUniformData t = do
157174
-- ♟️ ModelViewProjection Matrix (Identity)
158175
let
159176
-- Mat4.scale Mat4.identity (Vec3.fromValues 1.0 yScale 1.0)
160-
mvp = Mat4.numbers $ flip Mat4.rotateX t $ flip Mat4.rotateZ t $ flip Mat4.scale (Vec3.fromValues 0.25 0.25 0.25) $ Mat4.identity
177+
-- mvp = Mat4.numbers $ flip Mat4.rotateZ t $ flip Mat4.rotateX (t * 0.5) $ flip Mat4.scale (Vec3.fromValues 0.25 0.25 0.25) $ Mat4.identity
178+
-- mvp = Mat4.numbers $ (Mat4.ortho (-1.0) 1.0 (-1.0) 1.0 0.1 100.0) `Mat4.multiply` ( flip Mat4.scale (Vec3.fromValues 0.5 0.5 0.5) $ Mat4.rotate Mat4.identity (t*0.5) (Vec3.fromValues 1.0 1.0 1.0) )
179+
-- mvp = Mat4.numbers $ flip Mat4.rotateY (t * 0.5) $ flip Mat4.rotateX (t * 0.5) $ flip Mat4.translate (Vec3.fromValues 0.0 0.0 2.0) $ flip Mat4.scale (Vec3.fromValues 0.25 0.25 0.25) $ Mat4.identity
180+
fovy = pi / 2.0
181+
aspect = 1.0
182+
f = 1.0 / Math.tan (fovy / 2.0)
183+
near = 0.1
184+
far = 10.0
185+
nf = 1.0 / (near - far)
186+
perspectivez0 = Mat4.fromValues (f / aspect) 0.0 0.0 0.0 0.0 f 0.0 0.0
187+
0.0
188+
0.0
189+
(far * nf)
190+
(-1.0)
191+
0.0
192+
0.0
193+
(far * near * nf)
194+
0.0
195+
mvp = Mat4.numbers
196+
( perspectivez0 `Mat4.multiply`
197+
( flip Mat4.rotateZ (t * 0.5) $
198+
( flip Mat4.rotateY (t * 0.5)
199+
$ flip Mat4.rotateX (t * 0.5)
200+
$ flip Mat4.translate (Vec3.fromValues 0.0 0.0 (-5.0))
201+
$ flip Mat4.scale (Vec3.fromValues 0.25 0.25 0.25)
202+
$ Mat4.identity
203+
)
204+
)
205+
)
206+
-- (Mat4.ortho (-1.0) (1.0) (-1.0) (1.0) (0.0) (100.0))
161207
uniformData :: Float32Array <- fromArray $
162208
hackyFloatConv
163209
mvp <> hackyFloatConv
@@ -181,28 +227,28 @@ main = do
181227
[
182228
--
183229
0
184-
, 1
185230
, 2
231+
, 1
186232
----
187233
, 1
188-
, 6
189234
, 2
235+
, 6
190236
--
237+
, 6
191238
, 2
192239
, 7
193-
, 6
194240
----
195-
, 4
196241
, 7
197242
, 2
243+
, 4
198244
--
199245
, 5
200246
, 7
201247
, 4
202248
----
203249
, 5
204-
, 3
205250
, 4
251+
, 3
206252
--
207253
, 5
208254
, 3
@@ -213,19 +259,19 @@ main = do
213259
, 0
214260
--
215261
, 5
216-
, 7
217262
, 1
263+
, 7
218264
----
219265
, 1
220-
, 7
221266
, 6
267+
, 7
222268
--
223269
, 3
224-
, 0
225270
, 4
271+
, 0
226272
----
227-
, 4
228273
, 0
274+
, 4
229275
, 2
230276
]
231277
-- 🏭 Entry to WebGPU

0 commit comments

Comments
 (0)