@@ -9,14 +9,14 @@ import Data.ArrayBuffer.ArrayBuffer (byteLength)
99import Data.ArrayBuffer.Typed (class TypedArray , fromArray , setTyped , whole )
1010import Data.ArrayBuffer.Typed as Typed
1111import Data.ArrayBuffer.Types (ArrayView , Float32Array , Uint16Array )
12- import Data.Float32 (fromNumber' )
12+ import Data.Float32 (Float32 )
1313import Data.Foldable (traverse_ )
1414import Data.Int (toNumber )
1515import Data.Int.Bits (complement , (.&.))
1616import Data.JSDate (getTime , now )
1717import Data.Maybe (Maybe (..), maybe )
1818import Data.Number (pi , sin )
19- import Data.UInt (fromInt )
19+ import Data.UInt (UInt )
2020import Effect (Effect )
2121import Effect.Aff (error , launchAff_ , throwError )
2222import Effect.Class (liftEffect )
@@ -78,6 +78,12 @@ import Web.HTML.HTMLDocument (toNonElementParentNode)
7878import Web.HTML.Window (document , navigator , requestAnimationFrame )
7979import Web.Promise as Web.Promise
8080
81+ hackyFloatConv :: Array Number -> Array Float32
82+ hackyFloatConv = unsafeCoerce
83+
84+ hackyIntConv :: Array Int -> Array UInt
85+ hackyIntConv = unsafeCoerce
86+
8187convertPromise :: Web.Promise.Promise ~> Control.Promise.Promise
8288convertPromise = unsafeCoerce
8389
@@ -91,7 +97,7 @@ showErrorMessage = do
9197
9298main :: Effect Unit
9399main = do
94- positions :: Float32Array <- fromArray $ map fromNumber'
100+ positions :: Float32Array <- fromArray $ hackyFloatConv
95101 [ 1.0
96102 , -1.0
97103 , 0.0
@@ -104,7 +110,7 @@ main = do
104110 ]
105111
106112 -- 🎨 Color Vertex Buffer Data
107- colors :: Float32Array <- fromArray $ map fromNumber'
113+ colors :: Float32Array <- fromArray $ hackyFloatConv
108114 [ 1.0
109115 , 0.0
110116 , 0.0
@@ -120,7 +126,7 @@ main = do
120126 ]
121127 let
122128 makeUniformData yScale = do
123- uniformData :: Float32Array <- fromArray $ map fromNumber'
129+ uniformData :: Float32Array <- fromArray $ hackyFloatConv
124130 [
125131 -- ♟️ ModelViewProjection Matrix (Identity)
126132 1.0
@@ -155,7 +161,7 @@ main = do
155161 pure uniformData
156162 uniformData <- makeUniformData 1.0
157163 -- 📇 Index Buffer Data
158- indices :: Uint16Array <- fromArray $ map fromInt [ 0 , 1 , 2 ]
164+ indices :: Uint16Array <- fromArray $ hackyIntConv [ 0 , 1 , 2 ]
159165 -- 🏭 Entry to WebGPU
160166 entry <- window >>= navigator >>= gpu >>= case _ of
161167 Nothing -> do
0 commit comments