Base: Add a WebAssembly mandelbrot demo

This is now good enough to make a showcase of :P
This commit is contained in:
Ali Mohammad Pur 2021-05-22 15:34:51 +04:30 committed by Ali Mohammad Pur
parent 6af596d9e8
commit 814e35902e
2 changed files with 452 additions and 0 deletions

View file

@ -0,0 +1,451 @@
<html>
<body>
<span id="timer"></span>
<canvas id="canvas" style="width: 240px; height: 160px"></canvas>
<script>
const height = 160;
const width = 240;
let colors = new Uint32Array([
4284745472, 4284745472, 4284811264, 4284811264, 4284811264, 4284877057, 4284877057,
4284877057, 4284942849, 4284942849, 4284942849, 4285008385, 4285008641, 4285008641,
4285074177, 4285074434, 4285074434, 4285139970, 4285139970, 4285140226, 4285140226,
4285205762, 4285206018, 4285206018, 4285271554, 4285271810, 4285271811, 4285337347,
4285337347, 4285337603, 4285403139, 4285403139, 4285403395, 4285468931, 4285468931,
4285469187, 4285469188, 4285534724, 4285534724, 4285534980, 4285600516, 4285600516,
4285600772, 4285666308, 4285666308, 4285666308, 4285732101, 4285732101, 4285732101,
4285797893, 4285797893, 4285797893, 4285863685, 4285863685, 4285863685, 4285863685,
4285929478, 4285929478, 4285929478, 4285995270, 4285995270, 4285995270, 4286061062,
4286061062, 4286061062, 4286126598, 4286126854, 4286126855, 4286192391, 4286192647,
4286192647, 4286192647, 4286258183, 4286258439, 4286258439, 4286323975, 4286324231,
4286324232, 4286389768, 4286390024, 4286390024, 4286455560, 4286455560, 4286455816,
4286521352, 4286521352, 4286521608, 4286587145, 4286587145, 4286587145, 4286587401,
4286652937, 4286652937, 4286653193, 4286718729, 4286718729, 4286718985, 4286784522,
4286784522, 4286784522, 4286850314, 4286850314, 4286850314, 4286916106, 4286916106,
4286916106, 4286916362, 4286981898, 4286981899, 4286981899, 4287047691, 4287047691,
4287047691, 4287113483, 4287113483, 4287113483, 4287179019, 4287179275, 4287179276,
4287244812, 4287245068, 4287245068, 4287310604, 4287310860, 4287310860, 4287310860,
4287376396, 4287376652, 4287376653, 4287442189, 4287442445, 4287442445, 4287507981,
4287508237, 4287508237, 4287573773, 4287573773, 4287574029, 4287639566, 4287639566,
4287639822, 4287639822, 4287705358, 4287705358, 4287705614, 4287771150, 4287771150,
4287771406, 4287836943, 4287836943, 4287837199, 4287902735, 4287902735, 4287902735,
4287968527, 4287968527, 4287968527, 4288034319, 4288034319, 4288034320, 4288034576,
4288100112, 4288100112, 4288100112, 4288165904, 4288165904, 4288165904, 4288231696,
4288231696, 4288231697, 4288297233, 4288297489, 4288297489, 4288363025, 4288363281,
4288363281, 4288363281, 4288429073, 4288429073, 4288429074, 4288494610, 4288494866,
4288494866, 4288560402, 4288560658, 4288560658, 4288626194, 4288626450, 4288626450,
4288691987, 4288691987, 4288692243, 4288757779, 4288757779, 4288758035, 4288758035,
4288823571, 4288823571, 4288823827, 4288889363, 4288889364, 4288889620, 4288955156,
4288955156, 4288955412, 4289020948, 4289020948, 4289020948, 4289086740, 4289086740,
4289086741, 4289086997, 4289152533, 4289152533, 4289152533, 4289218325, 4289218325,
4289218325, 4289284117, 4289284117, 4289284118, 4289349910, 4289349910, 4289349910,
4289415446, 4289415702, 4289415702, 4289481238, 4289481494, 4289481494, 4289481495,
4289547287, 4289547287, 4289547287, 4289612823, 4289613079, 4289613079, 4289678615,
4289678871, 4289678871, 4289744407, 4289744408, 4289744664, 4289810200, 4289810200,
4289810456, 4289810456, 4289875992, 4289876248, 4289876248, 4289941784, 4289941785,
4289942041, 4290007577, 4290007577, 4290007833, 4290073369, 4290073369, 4290073625,
4290139161, 4290139161, 4290139162, 4290204954, 4290204954, 4290204954, 4290205210,
4290270746, 4290270746, 4290270746, 4290336538, 4290336538, 4290336539, 4290402331,
4290402331, 4290402331, 4290468123, 4290468123, 4290468123, 4290533659, 4290533915,
4290533915, 4290533915, 4290599708, 4290599708, 4290599708, 4290665500, 4290665500,
4290665500, 4290731036, 4290731292, 4290731292, 4290796828, 4290797085, 4290797085,
4290862621, 4290862621, 4290862877, 4290928413, 4290928413, 4290928669, 4290928669,
4290994205, 4290994462, 4290994462, 4291059998, 4291059998, 4291060254, 4291125790,
4291125790, 4291126046, 4291191582, 4291191582, 4291191839, 4291257375, 4291257375,
4291257375, 4291257631, 4291323167, 4291323167, 4291323423, 4291388959, 4291388959,
4291388959, 4291454752, 4291454752, 4291454752, 4291520544, 4291520544, 4291520544,
4291520801, 4291520801, 4291520801, 4291520802, 4291586594, 4291586595, 4291586595,
4291586851, 4291586852, 4291586852, 4291586853, 4291587109, 4291587109, 4291587110,
4291652646, 4291652902, 4291652903, 4291652903, 4291653160, 4291653160, 4291653160,
4291653161, 4291653417, 4291653418, 4291718954, 4291719210, 4291719211, 4291719211,
4291719211, 4291719468, 4291719468, 4291719469, 4291719725, 4291719725, 4291719726,
4291785262, 4291785519, 4291785519, 4291785519, 4291785776, 4291785776, 4291785776,
4291785777, 4291786033, 4291786034, 4291851570, 4291851826, 4291851827, 4291851827,
4291851828, 4291852084, 4291852084, 4291852085, 4291852341, 4291852341, 4291917878,
4291917878, 4291918135, 4291918135, 4291918135, 4291918392, 4291918392, 4291918393,
4291918393, 4291918649, 4291984186, 4291984186, 4291984442, 4291984443, 4291984443,
4291984444, 4291984700, 4291984700, 4291984701, 4291984957, 4292050494, 4292050494,
4292050494, 4292050751, 4292050751, 4292050751, 4292050752, 4292051008, 4292051009,
4292051009, 4292051265, 4292116802, 4292116802, 4292116803, 4292117059, 4292117059,
4292117060, 4292117316, 4292117317, 4292117317, 4292117317, 4292183110, 4292183110,
4292183110, 4292183367, 4292183367, 4292183368, 4292183368, 4292183624, 4292183625,
4292183625, 4292249418, 4292249418, 4292249418, 4292249419, 4292249675, 4292249675,
4292249676, 4292249932, 4292249933, 4292249933, 4292315469, 4292315726, 4292315726,
4292315727, 4292315983, 4292315983, 4292315984, 4292315984, 4292316240, 4292316241,
4292316241, 4292382034, 4292382034, 4292382034, 4292382035, 4292382291, 4292382292,
4292382292, 4292382548, 4292382549, 4292382549, 4292448085, 4292448342, 4292448342,
4292448343, 4292448599, 4292448599, 4292448600, 4292448600, 4292448857, 4292448857,
4292514393, 4292514394, 4292514650, 4292514650, 4292514651, 4292514907, 4292514908,
4292514908, 4292514908, 4292515165, 4292580701, 4292580702, 4292580958, 4292580958,
4292580959, 4292580959, 4292581215, 4292581216, 4292581216, 4292581473, 4292581473,
4292647009, 4292647010, 4292647266, 4292647267, 4292647267, 4292647523, 4292647524,
4292647524, 4292647524, 4292647781, 4292713317, 4292713318, 4292713574, 4292713574,
4292713575, 4292713575, 4292713832, 4292713832, 4292713832, 4292714089, 4292779625,
4292779625, 4292779626, 4292779882, 4292779883, 4292779883, 4292780139, 4292780140,
4292780140, 4292780141, 4292845933, 4292845933, 4292845934, 4292846190, 4292846190,
4292846191, 4292846191, 4292846448, 4292846448, 4292846448, 4292846705, 4292912241,
4292912242, 4292912242, 4292912498, 4292912499, 4292912499, 4292912499, 4292912756,
4292912756, 4292912757, 4292978549, 4292978549, 4292978550, 4292978550, 4292978807,
4292978807, 4292978807, 4292979064, 4292979064, 4292979064, 4293044601, 4293044857,
4293044858, 4293044858, 4293045114, 4293045115, 4293045115, 4293045116, 4293045372,
4293045372, 4293110909, 4293111165, 4293111165, 4293111166, 4293111166, 4293111423,
4293111423, 4293111423, 4293111680, 4293111680, 4293111681, 4293177217, 4293177473,
4293177474, 4293177474, 4293177730, 4293177731, 4293177731, 4293177732, 4293177988,
4293177988, 4293243525, 4293243781, 4293243782, 4293243782, 4293243782, 4293244039,
4293244039, 4293244039, 4293244296, 4293244296, 4293309833, 4293309833, 4293310089,
4293310090, 4293310090, 4293310347, 4293310347, 4293310347, 4293310348, 4293310604,
4293376140, 4293376141, 4293376141, 4293376398, 4293376398, 4293376398, 4293376655,
4293376655, 4293376656, 4293376656, 4293376912, 4293442449, 4293442449, 4293442706,
4293442706, 4293442706, 4293442707, 4293442963, 4293442963, 4293442964, 4293443220,
4293508757, 4293508757, 4293508757, 4293509014, 4293509014, 4293509015, 4293509271,
4293509271, 4293509272, 4293509272, 4293575064, 4293575065, 4293575065, 4293575322,
4293575322, 4293575322, 4293575323, 4293575579, 4293575580, 4293575580, 4293641372,
4293641373, 4293641373, 4293641373, 4293641630, 4293641630, 4293641631, 4293641887,
4293641887, 4293641888, 4293707424, 4293707681, 4293707681, 4293707681, 4293707938,
4293707938, 4293707938, 4293707939, 4293708195, 4293708196, 4293708196, 4293773732,
4293773989, 4293773989, 4293773990, 4293774246, 4293774246, 4293774247, 4293774247,
4293774503, 4293774504, 4293840040, 4293840297, 4293840297, 4293840297, 4293840298,
4293840554, 4293840555, 4293840555, 4293840811, 4293840812, 4293906348, 4293906348,
4293906605, 4293906605, 4293906606, 4293906862, 4293906862, 4293906863, 4293906863,
4293907120, 4293972656, 4293972656, 4293972913, 4293972913, 4293972913, 4293972914,
4293973170, 4293973171, 4293973171, 4293973427, 4293973428, 4294038964, 4294038965,
4294039221, 4294039221, 4294039222, 4294039478, 4294039478, 4294039479, 4294039479,
4294039736, 4294105272, 4294105272, 4294105529, 4294105529, 4294105530, 4294105530,
4294105786, 4294105787, 4294105787, 4294106043, 4294171580, 4294171580, 4294171581,
4294171837, 4294171837, 4294171838, 4294171838, 4294172095, 4294172095, 4294172095,
4294237888, 4294237888, 4294237888, 4294237889, 4294238145, 4294238146, 4294238146,
4294238402, 4294238403, 4294238403, 4294238404, 4294304196, 4294304196, 4294304197,
4294304453, 4294304453, 4294304454, 4294304454, 4294304711, 4294304711, 4294304711,
4294370504, 4294370504, 4294370505, 4294370505, 4294370761, 4294370762, 4294370762,
4294371018, 4294371019, 4294371019, 4294436556, 4294436812, 4294436812, 4294436813,
4294437069, 4294437070, 4294437070, 4294437070, 4294437327, 4294437327, 4294502863,
4294503120, 4294503120, 4294503121, 4294503121, 4294503377, 4294503378, 4294503378,
4294503635, 4294503635, 4294503635, 4294569172, 4294569428, 4294569428, 4294569429,
4294569685, 4294569686, 4294569686, 4294569686, 4294569943, 4294569943, 4294635480,
4294635480, 4294635736, 4294635737, 4294635737, 4294635993, 4294635994, 4294635994,
4294635995, 4294636251, 4294701787, 4294701788, 4294702044, 4294702045, 4294702045,
4294702045, 4294702302, 4294702302, 4294702303, 4294702559, 4294768095, 4294768096,
4294768096, 4294768352, 4294768353, 4294768353, 4294768610, 4294768610, 4294768610,
4294768611, 4294768867, 4294834404, 4294834404, 4294834660, 4294834661, 4294834661,
4294834661, 4294834918, 4294834918, 4294834919, 4294835175, 4294900711, 4294900712,
4294900712, 4294900969, 4294900969, 4294900969, 4294901226, 4294901226, 4294901226,
4294901227, 4294967019, 4294967020, 4294967020, 4294967276, 4294967277, 4294967277,
4294901741, 4294901741, 4294835949, 4294835949, 4294770413, 4294704877, 4294704877,
4294639085, 4294639085, 4294573549, 4294573549, 4294508013, 4294508014, 4294442222,
4294376686, 4294376686, 4294311150, 4294311150, 4294245358, 4294245358, 4294179822,
4294114286, 4294114286, 4294048494, 4294048494, 4293982958, 4293982958, 4293917422,
4293917422, 4293851630, 4293786094, 4293786094, 4293720558, 4293720558, 4293654766,
4293654766, 4293589230, 4293589231, 4293523695, 4293457903, 4293457903, 4293392367,
4293392367, 4293326831, 4293326831, 4293261039, 4293261039, 4293195503, 4293129967,
4293129967, 4293064175, 4293064175, 4292998639, 4292998639, 4292933103, 4292867311,
4292867311, 4292801775, 4292801775, 4292736239, 4292736239, 4292670447, 4292670448,
4292604912, 4292539376, 4292539376, 4292473584, 4292473584, 4292408048, 4292408048,
4292342512, 4292342512, 4292276720, 4292211184, 4292211184, 4292145648, 4292145648,
4292079856, 4292079856, 4292014320, 4291948784, 4291948784, 4291882992, 4291882992,
4291817456, 4291817456, 4291751920, 4291751920, 4291686129, 4291620593, 4291620593,
4291555057, 4291555057, 4291489265, 4291489265, 4291423729, 4291423729, 4291358193,
4291292401, 4291292401, 4291226865, 4291226865, 4291161329, 4291161329, 4291095537,
4291030001, 4291030001, 4290964465, 4290964465, 4290898673, 4290898673, 4290833137,
4290833137, 4290767602, 4290701810, 4290701810, 4290636274, 4290636274, 4290570738,
4290570738, 4290504946, 4290504946, 4290439410, 4290373874, 4290373874, 4290308082,
4290308082, 4290242546, 4290242546, 4290177010, 4290177010, 4290111218, 4290045682,
4290045682, 4289980146, 4289980146, 4289914354, 4289914354, 4289848819, 4289783283,
4289783283, 4289717491, 4289717491, 4289651955, 4289651955, 4289586419, 4289586419,
4289520627, 4289455091, 4289455091, 4289389555, 4289389555, 4289323763, 4289323763,
4289258227, 4289258227, 4289192691, 4289126899, 4289126899, 4289061363, 4289061363,
4288995827, 4288995827, 4288930035, 4288864500, 4288864500, 4288798964, 4288798964,
4288733172, 4288733172, 4288667636, 4288667636, 4288602100, 4288536308, 4288536308,
4288470772, 4288470772, 4288405236, 4288405236, 4288339444, 4288339444, 4288273908,
4288208372, 4288208372, 4288142580, 4288142580, 4288077044, 4288077044, 4288011508,
4287945717, 4287945717, 4287880181, 4287880181, 4287814645, 4287814645, 4287748853,
4287748853, 4287683317, 4287617781, 4287617781, 4287551989, 4287551989, 4287486453,
4287486453, 4287420917, 4287420917, 4287355125, 4287289589, 4287289589, 4287224053,
4287224053, 4287158261, 4287158261, 4287092725, 4287027190, 4287027190, 4286961398,
4286961398, 4286895862, 4286895862, 4286830326, 4286830326, 4286764534, 4286698998,
4286698998, 4286633462, 4286633462, 4286567670, 4286567670, 4286502134, 4286502134,
4286436598, 4286370806, 4286370806, 4286305270, 4286305270, 4286239734, 4286239734,
4286173942, 4286173942, 4286108407, 4286042871, 4286042871, 4285977079, 4285977079,
4285911543, 4285911543, 4285846007, 4285780215, 4285780215, 4285714679, 4285714679,
4285649143, 4285649143, 4285583351, 4285583351, 4285517815, 4285452279, 4285452279,
4285386487, 4285386487, 4285320951, 4285320951, 4285255415, 4285255415, 4285189624,
4285124088, 4285124088, 4285058552, 4285058552, 4284992760, 4284992760, 4284927224,
4284861688, 4284861688, 4284795896, 4284795896, 4284730360, 4284730360, 4284664824,
4284664824, 4284599032, 4284533496, 4284533496, 4284467960, 4284467960, 4284402168,
4284402168, 4284336632, 4284336632, 4284271097, 4284205305, 4284205305, 4284139769,
4284139769, 4284074233, 4284074233, 4284008441, 4283942905, 4283942905, 4283877369,
4283877369, 4283811577, 4283811577, 4283746041, 4283746041, 4283680505, 4283614713,
4283614713, 4283549177, 4283549177, 4283483641, 4283483641, 4283417849, 4283417849,
4283352313, 4283286778, 4283286778, 4283220986, 4283220986, 4283155450, 4283155450,
4283089914, 4283024122, 4283024122, 4282958586, 4282958586, 4282893050, 4282893050,
4282827258, 4282827258, 4282761722, 4282696186, 4282696186, 4282630394, 4282630394,
4282564858, 4282564858, 4282499322, 4282499322, 4282433530, 4282367995, 4282367995,
4282302459, 4282302459, 4282236667, 4282236667, 4282171131, 4282171131, 4282105595,
4282039803, 4282039803, 4281974267, 4281974267, 4281908731, 4281908731, 4281842939,
4281777403, 4281777403, 4281711867, 4281711867, 4281646075, 4281646075, 4281580539,
4281580539, 4281515003, 4281449212, 4281449212, 4281383676, 4281383676, 4281318140,
4281318140, 4281252348, 4281252348, 4281186812, 4281121276, 4281121276, 4281055484,
4281055484, 4280989948, 4280989948, 4280924412, 4280858620, 4280858620, 4280793084,
4280793084, 4280727548, 4280727548, 4280661756, 4280661756, 4280596220, 4280530684,
4280530685, 4280464893, 4280464893, 4280399357, 4280399357, 4280333821, 4280333821,
4280268029, 4280202493, 4280202493, 4280136957, 4280136957, 4280071165, 4280071165,
4280005629, 4279940093, 4279940093, 4279874301, 4279874301, 4279808765, 4279808765,
4279743229, 4279743229, 4279677437, 4279611901, 4279611902, 4279546366, 4279546366,
4279480574, 4279480574, 4279415038, 4279415038, 4279349502, 4279283710, 4279283710,
4279218174, 4279218174, 4279152638, 4279152638, 4279086846, 4279086846, 4279021310,
4278955774, 4278955774, 4278889982, 4278889982, 4278824446, 4278824446, 4278758910,
4278693118, 4278693119, 4278627583, 4278627583, 4278562047, 4278562047, 4278496255,
4278496255, 4278430719, 4278365183, 4278365183, 4278299391, 4278299391, 4278233855,
4278233855, 4278233598, 4278233597, 4278233597, 4278233340, 4278233340, 4278233083,
4278233083, 4278233082, 4278232825, 4278232825, 4278232824, 4278232568, 4278232567,
4278232311, 4278232310, 4278232309, 4278232053, 4278232052, 4278231796, 4278231795,
4278231794, 4278231538, 4278231537, 4278231537, 4278231280, 4278231280, 4278231023,
4278231022, 4278231022, 4278230765, 4278230765, 4278230764, 4278230508, 4278230507,
4278230250, 4278230250, 4278230249, 4278229993, 4278229992, 4278229735, 4278229735,
4278229734, 4278229478, 4278229477, 4278229477, 4278229220, 4278229219, 4278228963,
4278228962, 4278228962, 4278228705, 4278228705, 4278228704, 4278228447, 4278228447,
4278228190, 4278228190, 4278228189, 4278227932, 4278227932, 4278227675, 4278227675,
4278227674, 4278227418, 4278227417, 4278227416, 4278227160, 4278227159, 4278226903,
4278226902, 4278226901, 4278226645, 4278226644, 4278226644, 4278226387, 4278226387,
4278226130, 4278226129, 4278226129, 4278225872, 4278225872, 4278225615, 4278225615,
4278225614, 4278225357, 4278225357, 4278225356, 4278225100, 4278225099, 4278224842,
4278224842, 4278224841, 4278224585, 4278224584, 4278224584, 4278224327, 4278224326,
4278224070, 4278224069, 4278224069, 4278223812, 4278223812, 4278223555, 4278223554,
4278223554, 4278223297, 4278223297, 4278223296, 4278223039, 4278223039, 4278222782,
4278222782, 4278222781, 4278222525, 4278222524, 4278222267, 4278222267, 4278222266,
4278222010, 4278222009, 4278222009, 4278221752, 4278221751, 4278221495, 4278221494,
4278221494, 4278221237, 4278221236, 4278221236, 4278220979, 4278220979, 4278220722,
4278220722, 4278220721, 4278220464, 4278220464, 4278220207, 4278220207, 4278220206,
4278219950, 4278219949, 4278219948, 4278219692, 4278219691, 4278219435, 4278219434,
4278219433, 4278219177, 4278219176, 4278219176, 4278218919, 4278218919, 4278218662,
4278218661, 4278218661, 4278218404, 4278218404, 4278218147, 4278218147, 4278218146,
4278217889, 4278217889, 4278217888, 4278217632, 4278217631, 4278217374, 4278217374,
4278217373, 4278217117, 4278217116, 4278217116, 4278216859, 4278216858, 4278216602,
4278216601, 4278216601, 4278216344, 4278216344, 4278216087, 4278216086, 4278216086,
4278215829, 4278215829, 4278215828, 4278215571, 4278215571, 4278215314, 4278215314,
4278215313, 4278215057, 4278215056, 4278214799, 4278214799, 4278214798, 4278214542,
4278214541, 4278214541, 4278214284, 4278214283, 4278214027, 4278214026, 4278214026,
4278213769, 4278213768, 4278213768, 4278213511, 4278213511, 4278213254, 4278213254,
4278213253, 4278212996, 4278212996, 4278212739, 4278212739, 4278212738, 4278212482,
4278212481, 4278212480, 4278212224, 4278212223, 4278211967, 4278211966, 4278211965,
4278211709, 4278211708, 4278211708, 4278211451, 4278211451, 4278211194, 4278211193,
4278211193, 4278210936, 4278210936, 4278210679, 4278210679, 4278210678, 4278210421,
4278210421, 4278210420, 4278210164, 4278210163, 4278209906, 4278209906, 4278209905,
4278209649, 4278209648, 4278209648, 4278209391, 4278209390, 4278209134, 4278209133,
4278209133, 4278208876, 4278208876, 4278208619, 4278208618, 4278208618, 4278208361,
4278208361, 4278208360, 4278208103, 4278208103, 4278207846, 4278207846, 4278207845,
4278207589, 4278207588, 4278207331, 4278207331, 4278207330, 4278207074, 4278207073,
4278207073, 4278206816, 4278206815, 4278206559, 4278206558, 4278206558, 4278206301,
4278206300, 4278206300, 4278206043, 4278206043, 4278205786, 4278205786, 4278205785,
4278205528, 4278205528, 4278205271, 4278205271, 4278205270, 4278205014, 4278205013,
4278205012, 4278204756, 4278204755, 4278204499, 4278204498, 4278204497, 4278204241,
4278204240, 4278204240, 4278203983, 4278203983, 4278203726, 4278203725, 4278203725,
4278203468, 4278203468, 4278203211, 4278203211, 4278203210, 4278202953, 4278202953,
4278202952, 4278202696, 4278202695, 4278202438, 4278202438, 4278202437, 4278202181,
4278202180, 4278202180, 4278201923, 4278201922, 4278201666, 4278201665, 4278201665,
4278201408, 4278201408, 4278201151, 4278201150, 4278201150, 4278200893, 4278200893,
4278200892, 4278200635, 4278200635, 4278200378, 4278200378, 4278200377, 4278200121,
4278200120, 4278199863, 4278199863, 4278199862, 4278199606, 4278199605, 4278199605,
4278199348, 4278199347, 4278199091, 4278199090, 4278199090, 4278198833, 4278198832,
4278198832, 4278198575, 4278198575, 4278198318, 4278198318, 4278198317, 4278198060,
4278198060, 4278197803, 4278197803, 4278197802, 4278197546, 4278197545, 4278197544,
4278197288, 4278197287, 4278197031, 4278197030, 4278197029, 4278196773, 4278196772,
4278196772, 4278196515, 4278196515, 4278196258, 4278196257, 4278196257, 4278196000,
4278196000, 4278195743, 4278195742, 4278195742, 4278195485, 4278195485, 4278195484,
4278195228, 4278195227, 4278194970, 4278194970, 4278194969, 4278194713, 4278194712,
4278194712, 4278194455, 4278194454, 4278194198, 4278194197, 4278194197, 4278193940,
4278193939, 4278193683, 4278193682, 4278193682, 4278193425, 4278193425, 4278193424,
4278193167, 4278193167, 4278192910, 4278192910, 4278192909, 4278192653, 4278192652,
4278192651, 4278192395, 4278192394, 4278192138, 4278192137, 4278192136, 4278191880,
4278191879, 4278191623, 4278191622, 4278191622, 4278191365, 4278191364, 4278191364,
4278191107, 4278191107, 4278190850, 4278190850, 4278190849, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592, 4278190592,
4278190592, 4278190592, 4278190592, 4278190592,
]);
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
const imageData = ctx.createImageData(width, height);
const rgba = new Uint32Array(imageData.data.buffer);
const timer = document.getElementById("timer");
new Promise((res, rej) => {
res(
new Uint8Array([
0x00, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x11, 0x03, 0x60,
0x01, 0x7c, 0x01, 0x7c, 0x60, 0x03, 0x7f, 0x7f, 0x7f, 0x00, 0x60, 0x01,
0x7f, 0x01, 0x7f, 0x03, 0x05, 0x04, 0x00, 0x00, 0x01, 0x02, 0x05, 0x03,
0x01, 0x00, 0x00, 0x07, 0x1e, 0x03, 0x0a, 0x6d, 0x61, 0x6e, 0x64, 0x65,
0x6c, 0x62, 0x72, 0x6f, 0x74, 0x00, 0x02, 0x04, 0x72, 0x65, 0x61, 0x64,
0x00, 0x03, 0x06, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x02, 0x00, 0x0a,
0xc4, 0x09, 0x04, 0x83, 0x03, 0x03, 0x02, 0x7f, 0x01, 0x7e, 0x02, 0x7c,
0x41, 0x01, 0x20, 0x00, 0xbd, 0x22, 0x03, 0x42, 0x20, 0x88, 0xa7, 0x22,
0x01, 0x41, 0x1f, 0x76, 0x20, 0x01, 0x41, 0x80, 0x80, 0xc0, 0x00, 0x49,
0x1b, 0x04, 0x40, 0x20, 0x03, 0x42, 0x01, 0x86, 0x50, 0x04, 0x40, 0x44,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xbf, 0x20, 0x00, 0x20, 0x00,
0xa2, 0xa3, 0x0f, 0x0b, 0x20, 0x01, 0x41, 0x1f, 0x76, 0x04, 0x40, 0x20,
0x00, 0x20, 0x00, 0xa1, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xa3, 0x0f, 0x0b, 0x41, 0x4a, 0x21, 0x02, 0x20, 0x00, 0x44, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x43, 0xa2, 0xbd, 0x22, 0x03, 0x42,
0x20, 0x88, 0xa7, 0x21, 0x01, 0x05, 0x20, 0x01, 0x41, 0x80, 0x80, 0xc0,
0xff, 0x07, 0x4f, 0x04, 0x40, 0x20, 0x00, 0x0f, 0x05, 0x20, 0x03, 0x42,
0x20, 0x86, 0x50, 0x41, 0x00, 0x20, 0x01, 0x41, 0x80, 0x80, 0xc0, 0xff,
0x03, 0x46, 0x1b, 0x04, 0x40, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0f, 0x0b, 0x0b, 0x0b, 0x20, 0x03, 0x42, 0xff, 0xff, 0xff,
0xff, 0x0f, 0x83, 0x20, 0x01, 0x41, 0xe2, 0xbe, 0x25, 0x6a, 0x22, 0x01,
0x41, 0xff, 0xff, 0x3f, 0x71, 0x41, 0x9e, 0xc1, 0x9a, 0xff, 0x03, 0x6a,
0xad, 0x42, 0x20, 0x86, 0x84, 0xbf, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xf0, 0x3f, 0xa1, 0x22, 0x04, 0x20, 0x04, 0x44, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x40, 0xa0, 0xa3, 0x22, 0x05, 0x20, 0x05, 0xa2,
0x21, 0x00, 0x20, 0x05, 0x20, 0x04, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xe0, 0x3f, 0xa2, 0x20, 0x04, 0xa2, 0x22, 0x05, 0x20, 0x00, 0x20,
0x00, 0x20, 0x00, 0xa2, 0x22, 0x00, 0x20, 0x00, 0x20, 0x00, 0x44, 0x44,
0x52, 0x3e, 0xdf, 0x12, 0xf1, 0xc2, 0x3f, 0xa2, 0x44, 0xde, 0x03, 0xcb,
0x96, 0x64, 0x46, 0xc7, 0x3f, 0xa0, 0xa2, 0x44, 0x59, 0x93, 0x22, 0x94,
0x24, 0x49, 0xd2, 0x3f, 0xa0, 0xa2, 0x44, 0x93, 0x55, 0x55, 0x55, 0x55,
0x55, 0xe5, 0x3f, 0xa0, 0xa2, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x44,
0x9f, 0xc6, 0x78, 0xd0, 0x09, 0x9a, 0xc3, 0x3f, 0xa2, 0x44, 0xaf, 0x78,
0x8e, 0x1d, 0xc5, 0x71, 0xcc, 0x3f, 0xa0, 0xa2, 0x44, 0x04, 0xfa, 0x97,
0x99, 0x99, 0x99, 0xd9, 0x3f, 0xa0, 0xa2, 0xa0, 0xa0, 0xa2, 0x20, 0x02,
0x20, 0x01, 0x41, 0x14, 0x75, 0x41, 0xff, 0x07, 0x6b, 0x6a, 0xb7, 0x22,
0x00, 0x44, 0x76, 0x3c, 0x79, 0x35, 0xef, 0x39, 0xea, 0x3d, 0xa2, 0xa0,
0x20, 0x05, 0xa1, 0x20, 0x04, 0xa0, 0x20, 0x00, 0x44, 0x00, 0x00, 0xe0,
0xfe, 0x42, 0x2e, 0xe6, 0x3f, 0xa2, 0xa0, 0x0b, 0xb5, 0x03, 0x03, 0x02,
0x7f, 0x01, 0x7e, 0x07, 0x7c, 0x41, 0x01, 0x20, 0x00, 0xbd, 0x22, 0x03,
0x42, 0x20, 0x88, 0xa7, 0x22, 0x01, 0x41, 0x1f, 0x76, 0x20, 0x01, 0x41,
0x80, 0x80, 0xc0, 0x00, 0x49, 0x1b, 0x04, 0x40, 0x20, 0x03, 0x42, 0x01,
0x86, 0x50, 0x04, 0x40, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
0xbf, 0x20, 0x00, 0x20, 0x00, 0xa2, 0xa3, 0x0f, 0x0b, 0x20, 0x01, 0x41,
0x1f, 0x76, 0x04, 0x40, 0x20, 0x00, 0x20, 0x00, 0xa1, 0x44, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0x0f, 0x0b, 0x41, 0x4a, 0x21,
0x02, 0x20, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x43,
0xa2, 0xbd, 0x22, 0x03, 0x42, 0x20, 0x88, 0xa7, 0x21, 0x01, 0x05, 0x20,
0x01, 0x41, 0x80, 0x80, 0xc0, 0xff, 0x07, 0x4f, 0x04, 0x40, 0x20, 0x00,
0x0f, 0x05, 0x20, 0x03, 0x42, 0x20, 0x86, 0x50, 0x41, 0x00, 0x20, 0x01,
0x41, 0x80, 0x80, 0xc0, 0xff, 0x03, 0x46, 0x1b, 0x04, 0x40, 0x44, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0b, 0x0b, 0x0b, 0x20,
0x03, 0x42, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x83, 0x20, 0x01, 0x41, 0xe2,
0xbe, 0x25, 0x6a, 0x22, 0x01, 0x41, 0xff, 0xff, 0x3f, 0x71, 0x41, 0x9e,
0xc1, 0x9a, 0xff, 0x03, 0x6a, 0xad, 0x42, 0x20, 0x86, 0x84, 0xbf, 0x44,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0xa1, 0x22, 0x00, 0x20,
0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xa0, 0xa3,
0x22, 0x05, 0x20, 0x05, 0xa2, 0x21, 0x04, 0x20, 0x02, 0x20, 0x01, 0x41,
0x14, 0x76, 0x41, 0xff, 0x07, 0x6b, 0x6a, 0xb7, 0x22, 0x09, 0x20, 0x00,
0x20, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x3f, 0xa2,
0x20, 0x00, 0xa2, 0x22, 0x06, 0xa1, 0xbd, 0x42, 0x80, 0x80, 0x80, 0x80,
0x70, 0x83, 0xbf, 0x22, 0x07, 0x44, 0x00, 0x00, 0x20, 0x65, 0x47, 0x15,
0xf7, 0x3f, 0xa2, 0x22, 0x0a, 0xa0, 0x21, 0x08, 0x20, 0x00, 0x20, 0x07,
0xa1, 0x20, 0x06, 0xa1, 0x20, 0x05, 0x20, 0x06, 0x20, 0x04, 0x20, 0x04,
0x20, 0x04, 0xa2, 0x22, 0x00, 0x20, 0x00, 0x20, 0x00, 0x44, 0x44, 0x52,
0x3e, 0xdf, 0x12, 0xf1, 0xc2, 0x3f, 0xa2, 0x44, 0xde, 0x03, 0xcb, 0x96,
0x64, 0x46, 0xc7, 0x3f, 0xa0, 0xa2, 0x44, 0x59, 0x93, 0x22, 0x94, 0x24,
0x49, 0xd2, 0x3f, 0xa0, 0xa2, 0x44, 0x93, 0x55, 0x55, 0x55, 0x55, 0x55,
0xe5, 0x3f, 0xa0, 0xa2, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x44, 0x9f,
0xc6, 0x78, 0xd0, 0x09, 0x9a, 0xc3, 0x3f, 0xa2, 0x44, 0xaf, 0x78, 0x8e,
0x1d, 0xc5, 0x71, 0xcc, 0x3f, 0xa0, 0xa2, 0x44, 0x04, 0xfa, 0x97, 0x99,
0x99, 0x99, 0xd9, 0x3f, 0xa0, 0xa2, 0xa0, 0xa0, 0xa2, 0xa0, 0x22, 0x00,
0x20, 0x07, 0xa0, 0x44, 0x00, 0xa2, 0xef, 0x2e, 0xfc, 0x05, 0xe7, 0x3d,
0xa2, 0x20, 0x00, 0x44, 0x00, 0x00, 0x20, 0x65, 0x47, 0x15, 0xf7, 0x3f,
0xa2, 0xa0, 0x20, 0x09, 0x20, 0x08, 0xa1, 0x20, 0x0a, 0xa0, 0xa0, 0x20,
0x08, 0xa0, 0x0b, 0xfd, 0x02, 0x02, 0x0a, 0x7c, 0x04, 0x7f, 0x20, 0x00,
0x20, 0x01, 0x6c, 0x41, 0x01, 0x74, 0x41, 0xff, 0xff, 0x03, 0x6e, 0x41,
0x01, 0x6a, 0x40, 0x00, 0x1a, 0x20, 0x01, 0xb8, 0x44, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xe0, 0x3f, 0xa2, 0x21, 0x06, 0x20, 0x00, 0xb8, 0x44,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x3f, 0xa2, 0x44, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x24, 0x40, 0x20, 0x00, 0x41, 0x03, 0x6c, 0x22,
0x0d, 0x20, 0x01, 0x41, 0x02, 0x74, 0x22, 0x0e, 0x20, 0x0d, 0x20, 0x0e,
0x48, 0x1b, 0xb7, 0xa3, 0x22, 0x05, 0xa2, 0x21, 0x07, 0x44, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x20, 0x02, 0xb8, 0xa3, 0x21, 0x08,
0x41, 0x00, 0x21, 0x0d, 0x03, 0x40, 0x20, 0x01, 0x20, 0x0d, 0x4b, 0x04,
0x40, 0x20, 0x0d, 0xb8, 0x20, 0x06, 0xa1, 0x20, 0x05, 0xa2, 0x21, 0x09,
0x20, 0x00, 0x20, 0x0d, 0x6c, 0x41, 0x01, 0x74, 0x21, 0x10, 0x41, 0x00,
0x21, 0x0e, 0x03, 0x40, 0x20, 0x00, 0x20, 0x0e, 0x4b, 0x04, 0x40, 0x20,
0x0e, 0xb8, 0x20, 0x05, 0xa2, 0x20, 0x07, 0xa1, 0x21, 0x0a, 0x44, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x03, 0x44, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x04, 0x41, 0x00, 0x21, 0x0f,
0x03, 0x40, 0x20, 0x03, 0x20, 0x03, 0xa2, 0x22, 0x0b, 0x20, 0x04, 0x20,
0x04, 0xa2, 0x22, 0x0c, 0xa0, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x10, 0x40, 0x65, 0x04, 0x40, 0x02, 0x40, 0x20, 0x03, 0x20, 0x03, 0xa0,
0x20, 0x04, 0xa2, 0x20, 0x09, 0xa0, 0x21, 0x04, 0x20, 0x0b, 0x20, 0x0c,
0xa1, 0x20, 0x0a, 0xa0, 0x21, 0x03, 0x20, 0x02, 0x20, 0x0f, 0x4d, 0x0d,
0x00, 0x20, 0x0f, 0x41, 0x01, 0x6a, 0x21, 0x0f, 0x0c, 0x02, 0x0b, 0x0b,
0x0b, 0x20, 0x10, 0x20, 0x0e, 0x41, 0x01, 0x74, 0x6a, 0x20, 0x03, 0x20,
0x03, 0xa2, 0x20, 0x04, 0x20, 0x04, 0xa2, 0xa0, 0x22, 0x03, 0x44, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0x64, 0x04, 0x7f, 0x20, 0x0f,
0x41, 0x01, 0x6a, 0xb8, 0x20, 0x03, 0x10, 0x00, 0x44, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xe0, 0x3f, 0xa2, 0x10, 0x01, 0xa1, 0x20, 0x08, 0xa2,
0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa5, 0x44, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0xa4, 0x44, 0x00, 0x00, 0x00,
0x00, 0x00, 0xfc, 0x9f, 0x40, 0xa2, 0xab, 0x05, 0x41, 0xff, 0x0f, 0x0b,
0x3b, 0x01, 0x00, 0x20, 0x0e, 0x41, 0x01, 0x6a, 0x21, 0x0e, 0x0c, 0x01,
0x0b, 0x0b, 0x20, 0x0d, 0x41, 0x01, 0x6a, 0x21, 0x0d, 0x0c, 0x01, 0x0b,
0x0b, 0x0b, 0x07, 0x00, 0x20, 0x00, 0x2f, 0x01, 0x00, 0x0b, 0x00, 0x17,
0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69,
0x6e, 0x67, 0x55, 0x52, 0x4c, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65,
])
);
})
.then(bytes => WebAssembly.compile(bytes))
.then(module => WebAssembly.instantiate(module))
.then(instance => {
let start = performance.now();
instance.exports.mandelbrot(width, height, 40);
let end = performance.now();
return {
time: end - start,
exports: instance.exports,
};
})
.then(result => {
timer.innerText = `Render took ${result.time}ms`;
const buffer = new Uint16Array(result.exports.memory.buffer);
for (let y = 0; y < height; y++) {
const yx = y * width;
for (let x = 0; x < width; x++) {
rgba[yx + x] = colors[buffer[yx + x]];
}
}
})
.then(() => {
ctx.putImageData(imageData, 0, 0);
})
.catch(err => console.log(err.message));
</script>
</body>
</html>

View file

@ -38,6 +38,7 @@ span#loadtime {
<p>This page loaded in <b><span id="loadtime"></span></b> ms</p>
<p>Some small test pages:</p>
<ul>
<li><a href="mandelbrot-wasm.html">WebAssembly Mandelbrot Rendering Demo</a></li>
<li><a href="ddssuite.html">DDS test suite</a></li>
<li><a href="websocket.html">WebSocket API Test</a></li>
<li><a href="cookie.html">document.cookie</a></li>