@@ -15,7 +15,8 @@ import Data.Int (toNumber)
1515import Data.Int.Bits (complement , (.&.))
1616import Data.JSDate (getTime , now )
1717import Data.Maybe (Maybe (..), maybe )
18- import Data.Number (pi , sin )
18+ import Data.Number (pi )
19+ import Data.Number as Math
1920import Data.UInt (UInt )
2021import Effect (Effect )
2122import Effect.Aff (error , launchAff_ , throwError )
@@ -62,7 +63,7 @@ import Web.GPU.GPUShaderStage as GPUShaderStage
6263import Web.GPU.GPUStoreOp as GPUStoreOp
6364import Web.GPU.GPUTexture (createView )
6465import Web.GPU.GPUTextureDescriptor (GPUTextureDescriptor )
65- import Web.GPU.GPUTextureDimension as GPUTextureDimension
66+
6667import Web.GPU.GPUTextureFormat as GPUTextureFormat
6768import Web.GPU.GPUTextureUsage as GPUTextureUsage
6869import 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