melonjs 14.5.0 → 15.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (315) hide show
  1. package/LICENSE.md +1 -1
  2. package/README.md +6 -6
  3. package/dist/melonjs.mjs/_virtual/_commonjsHelpers.js +1 -1
  4. package/dist/melonjs.mjs/_virtual/arraymultimap.js +1 -1
  5. package/dist/melonjs.mjs/_virtual/earcut.js +1 -1
  6. package/dist/melonjs.mjs/_virtual/howler.js +1 -1
  7. package/dist/melonjs.mjs/_virtual/index.js +7 -3
  8. package/dist/melonjs.mjs/_virtual/index2.js +1 -1
  9. package/dist/melonjs.mjs/_virtual/multimap.js +1 -1
  10. package/dist/melonjs.mjs/_virtual/setmultimap.js +1 -1
  11. package/dist/melonjs.mjs/application/application.js +27 -17
  12. package/dist/melonjs.mjs/application/header.js +6 -5
  13. package/dist/melonjs.mjs/application/resize.js +20 -20
  14. package/dist/melonjs.mjs/application/settings.js +1 -1
  15. package/dist/melonjs.mjs/audio/audio.js +18 -20
  16. package/dist/melonjs.mjs/camera/camera2d.js +10 -10
  17. package/dist/melonjs.mjs/const.js +1 -1
  18. package/dist/melonjs.mjs/entity/entity.js +4 -4
  19. package/dist/melonjs.mjs/geometries/ellipse.js +6 -6
  20. package/dist/melonjs.mjs/geometries/line.js +9 -9
  21. package/dist/melonjs.mjs/geometries/path2d.js +56 -56
  22. package/dist/melonjs.mjs/geometries/point.js +2 -2
  23. package/dist/melonjs.mjs/geometries/poly.js +29 -29
  24. package/dist/melonjs.mjs/geometries/rectangle.js +8 -8
  25. package/dist/melonjs.mjs/geometries/roundrect.js +6 -6
  26. package/dist/melonjs.mjs/index.js +8 -6
  27. package/dist/melonjs.mjs/input/gamepad.js +30 -30
  28. package/dist/melonjs.mjs/input/input.js +2 -2
  29. package/dist/melonjs.mjs/input/keyboard.js +15 -15
  30. package/dist/melonjs.mjs/input/pointer.js +2 -2
  31. package/dist/melonjs.mjs/input/pointerevent.js +59 -59
  32. package/dist/melonjs.mjs/lang/console.js +3 -3
  33. package/dist/melonjs.mjs/lang/deprecated.js +2 -2
  34. package/dist/melonjs.mjs/level/level.js +9 -9
  35. package/dist/melonjs.mjs/level/tiled/TMXGroup.js +3 -3
  36. package/dist/melonjs.mjs/level/tiled/TMXLayer.js +31 -31
  37. package/dist/melonjs.mjs/level/tiled/TMXObject.js +8 -8
  38. package/dist/melonjs.mjs/level/tiled/TMXTile.js +8 -8
  39. package/dist/melonjs.mjs/level/tiled/TMXTileMap.js +19 -19
  40. package/dist/melonjs.mjs/level/tiled/TMXTileset.js +15 -15
  41. package/dist/melonjs.mjs/level/tiled/TMXTilesetGroup.js +3 -3
  42. package/dist/melonjs.mjs/level/tiled/TMXUtils.js +46 -41
  43. package/dist/melonjs.mjs/level/tiled/constants.js +1 -1
  44. package/dist/melonjs.mjs/level/tiled/renderer/TMXHexagonalRenderer.js +30 -30
  45. package/dist/melonjs.mjs/level/tiled/renderer/TMXIsometricRenderer.js +21 -21
  46. package/dist/melonjs.mjs/level/tiled/renderer/TMXOrthogonalRenderer.js +10 -10
  47. package/dist/melonjs.mjs/level/tiled/renderer/TMXRenderer.js +2 -2
  48. package/dist/melonjs.mjs/level/tiled/renderer/TMXStaggeredRenderer.js +6 -6
  49. package/dist/melonjs.mjs/level/tiled/renderer/autodetect.js +1 -1
  50. package/dist/melonjs.mjs/loader/cache.js +1 -1
  51. package/dist/melonjs.mjs/loader/loader.js +7 -7
  52. package/dist/melonjs.mjs/loader/loadingscreen.js +2 -2
  53. package/dist/melonjs.mjs/loader/melonjs_logo.png.js +1 -1
  54. package/dist/melonjs.mjs/loader/parser.js +13 -13
  55. package/dist/melonjs.mjs/loader/settings.js +3 -3
  56. package/dist/melonjs.mjs/math/color.js +25 -24
  57. package/dist/melonjs.mjs/math/math.js +2 -2
  58. package/dist/melonjs.mjs/math/matrix2.js +22 -22
  59. package/dist/melonjs.mjs/math/matrix3.js +52 -52
  60. package/dist/melonjs.mjs/math/observable_vector2.js +12 -12
  61. package/dist/melonjs.mjs/math/observable_vector3.js +22 -22
  62. package/dist/melonjs.mjs/math/vector2.js +11 -11
  63. package/dist/melonjs.mjs/math/vector3.js +21 -21
  64. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/arraymultimap.js +45 -0
  65. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/multimap.js +130 -0
  66. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/arraymultimap.js +1 -1
  67. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/index.js +1 -1
  68. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/multimap.js +1 -1
  69. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/setmultimap.js +1 -1
  70. package/dist/melonjs.mjs/node_modules/earcut/src/earcut.js +1 -1
  71. package/dist/melonjs.mjs/node_modules/eventemitter3/index.js +2 -2
  72. package/dist/melonjs.mjs/node_modules/eventemitter3/index2.js +1 -1
  73. package/dist/melonjs.mjs/node_modules/howler/dist/howler.js +1 -1
  74. package/dist/melonjs.mjs/particles/emitter.js +5 -5
  75. package/dist/melonjs.mjs/particles/particle.js +8 -8
  76. package/dist/melonjs.mjs/particles/settings.js +3 -3
  77. package/dist/melonjs.mjs/physics/body.js +17 -17
  78. package/dist/melonjs.mjs/physics/bounds.js +12 -12
  79. package/dist/melonjs.mjs/physics/collision.js +3 -3
  80. package/dist/melonjs.mjs/physics/detector.js +14 -14
  81. package/dist/melonjs.mjs/physics/quadtree.js +19 -19
  82. package/dist/melonjs.mjs/physics/response.js +1 -1
  83. package/dist/melonjs.mjs/physics/sat.js +60 -60
  84. package/dist/melonjs.mjs/physics/world.js +4 -4
  85. package/dist/melonjs.mjs/plugin/plugin.js +11 -11
  86. package/dist/melonjs.mjs/renderable/collectable.js +2 -2
  87. package/dist/melonjs.mjs/renderable/colorlayer.js +1 -1
  88. package/dist/melonjs.mjs/renderable/container.js +77 -59
  89. package/dist/melonjs.mjs/renderable/dragndrop.js +5 -5
  90. package/dist/melonjs.mjs/renderable/imagelayer.js +7 -6
  91. package/dist/melonjs.mjs/renderable/light2d.js +6 -6
  92. package/dist/melonjs.mjs/renderable/nineslicesprite.js +12 -12
  93. package/dist/melonjs.mjs/renderable/renderable.js +35 -13
  94. package/dist/melonjs.mjs/renderable/sprite.js +25 -25
  95. package/dist/melonjs.mjs/renderable/trigger.js +11 -9
  96. package/dist/melonjs.mjs/renderable/ui/uibaseelement.js +97 -27
  97. package/dist/melonjs.mjs/renderable/ui/uispriteelement.js +25 -25
  98. package/dist/melonjs.mjs/renderable/ui/uitextbutton.js +83 -65
  99. package/dist/melonjs.mjs/state/stage.js +7 -7
  100. package/dist/melonjs.mjs/state/state.js +15 -15
  101. package/dist/melonjs.mjs/system/device.js +3 -3
  102. package/dist/melonjs.mjs/system/dom.js +1 -1
  103. package/dist/melonjs.mjs/system/event.js +2 -2
  104. package/dist/melonjs.mjs/system/platform.js +1 -1
  105. package/dist/melonjs.mjs/system/pooling.js +9 -9
  106. package/dist/melonjs.mjs/system/save.js +6 -6
  107. package/dist/melonjs.mjs/system/timer.js +16 -12
  108. package/dist/melonjs.mjs/text/bitmaptext.js +20 -20
  109. package/dist/melonjs.mjs/text/bitmaptextdata.js +22 -22
  110. package/dist/melonjs.mjs/text/glyph.js +3 -3
  111. package/dist/melonjs.mjs/text/text.js +63 -92
  112. package/dist/melonjs.mjs/text/textmetrics.js +15 -15
  113. package/dist/melonjs.mjs/text/textstyle.js +4 -6
  114. package/dist/melonjs.mjs/tweens/easing.js +4 -4
  115. package/dist/melonjs.mjs/tweens/interpolation.js +8 -8
  116. package/dist/melonjs.mjs/tweens/tween.js +11 -11
  117. package/dist/melonjs.mjs/utils/agent.js +6 -6
  118. package/dist/melonjs.mjs/utils/array.js +4 -4
  119. package/dist/melonjs.mjs/utils/file.js +1 -1
  120. package/dist/melonjs.mjs/utils/function.js +5 -5
  121. package/dist/melonjs.mjs/utils/string.js +3 -3
  122. package/dist/melonjs.mjs/utils/utils.js +16 -16
  123. package/dist/melonjs.mjs/video/canvas/canvas_renderer.js +41 -119
  124. package/dist/melonjs.mjs/video/renderer.js +70 -14
  125. package/dist/melonjs.mjs/video/texture/atlas.js +39 -45
  126. package/dist/melonjs.mjs/video/texture/cache.js +9 -10
  127. package/dist/melonjs.mjs/video/texture/canvas_texture.js +63 -3
  128. package/dist/melonjs.mjs/video/utils/autodetect.js +1 -1
  129. package/dist/melonjs.mjs/video/video.js +2 -2
  130. package/dist/melonjs.mjs/video/webgl/buffer/vertex.js +23 -19
  131. package/dist/melonjs.mjs/video/webgl/compositors/compositor.js +80 -80
  132. package/dist/melonjs.mjs/video/webgl/compositors/primitive_compositor.js +77 -0
  133. package/dist/melonjs.mjs/video/webgl/compositors/quad_compositor.js +252 -0
  134. package/dist/melonjs.mjs/video/webgl/compositors/webgl_compositor.js +1 -1
  135. package/dist/melonjs.mjs/video/webgl/glshader.js +7 -7
  136. package/dist/melonjs.mjs/video/webgl/shaders/primitive.frag.js +1 -1
  137. package/dist/melonjs.mjs/video/webgl/shaders/primitive.vert.js +2 -2
  138. package/dist/melonjs.mjs/video/webgl/shaders/quad.frag.js +1 -1
  139. package/dist/melonjs.mjs/video/webgl/shaders/quad.vert.js +2 -2
  140. package/dist/melonjs.mjs/video/webgl/utils/attributes.js +2 -2
  141. package/dist/melonjs.mjs/video/webgl/utils/precision.js +1 -1
  142. package/dist/melonjs.mjs/video/webgl/utils/program.js +7 -7
  143. package/dist/melonjs.mjs/video/webgl/utils/string.js +1 -1
  144. package/dist/melonjs.mjs/video/webgl/utils/uniforms.js +4 -4
  145. package/dist/melonjs.mjs/video/webgl/webgl_renderer.js +188 -181
  146. package/dist/melonjs.module.js +25040 -25193
  147. package/dist/types/application/application.d.ts +11 -8
  148. package/dist/types/audio/audio.d.ts +3 -3
  149. package/dist/types/entity/entity.d.ts +1 -1
  150. package/dist/types/index.d.ts +7 -4
  151. package/dist/types/input/input.d.ts +1 -1
  152. package/dist/types/input/keyboard.d.ts +1 -1
  153. package/dist/types/input/pointerevent.d.ts +6 -6
  154. package/dist/types/level/level.d.ts +2 -2
  155. package/dist/types/level/tiled/TMXLayer.d.ts +4 -4
  156. package/dist/types/level/tiled/TMXTileMap.d.ts +2 -2
  157. package/dist/types/level/tiled/TMXUtils.d.ts +5 -4
  158. package/dist/types/loader/loader.d.ts +2 -2
  159. package/dist/types/loader/settings.d.ts +2 -2
  160. package/dist/types/particles/emitter.d.ts +1 -1
  161. package/dist/types/physics/collision.d.ts +1 -1
  162. package/dist/types/physics/detector.d.ts +1 -1
  163. package/dist/types/plugin/plugin.d.ts +2 -2
  164. package/dist/types/renderable/container.d.ts +21 -17
  165. package/dist/types/renderable/renderable.d.ts +6 -0
  166. package/dist/types/renderable/sprite.d.ts +11 -11
  167. package/dist/types/renderable/trigger.d.ts +1 -1
  168. package/dist/types/renderable/ui/uibaseelement.d.ts +28 -6
  169. package/dist/types/renderable/ui/uispriteelement.d.ts +12 -14
  170. package/dist/types/renderable/ui/uitextbutton.d.ts +52 -12
  171. package/dist/types/state/stage.d.ts +1 -1
  172. package/dist/types/system/device.d.ts +1 -1
  173. package/dist/types/system/pooling.d.ts +3 -3
  174. package/dist/types/system/timer.d.ts +5 -5
  175. package/dist/types/text/bitmaptext.d.ts +1 -1
  176. package/dist/types/text/text.d.ts +7 -21
  177. package/dist/types/text/textstyle.d.ts +1 -1
  178. package/dist/types/utils/array.d.ts +2 -2
  179. package/dist/types/video/canvas/canvas_renderer.d.ts +8 -81
  180. package/dist/types/video/renderer.d.ts +48 -4
  181. package/dist/types/video/texture/atlas.d.ts +3 -3
  182. package/dist/types/video/texture/canvas_texture.d.ts +40 -0
  183. package/dist/types/video/webgl/buffer/vertex.d.ts +3 -3
  184. package/dist/types/video/webgl/compositors/compositor.d.ts +38 -32
  185. package/dist/types/video/webgl/compositors/primitive_compositor.d.ts +22 -0
  186. package/dist/types/video/webgl/compositors/quad_compositor.d.ts +72 -0
  187. package/dist/types/video/webgl/glshader.d.ts +1 -1
  188. package/dist/types/video/webgl/webgl_renderer.d.ts +47 -37
  189. package/package.json +16 -17
  190. package/src/application/application.js +26 -16
  191. package/src/application/header.js +5 -4
  192. package/src/application/resize.js +19 -19
  193. package/src/audio/audio.js +17 -19
  194. package/src/camera/camera2d.js +9 -9
  195. package/src/entity/entity.js +3 -3
  196. package/src/geometries/ellipse.js +5 -5
  197. package/src/geometries/line.js +8 -8
  198. package/src/geometries/path2d.js +55 -55
  199. package/src/geometries/point.js +1 -1
  200. package/src/geometries/poly.js +28 -28
  201. package/src/geometries/rectangle.js +7 -7
  202. package/src/geometries/roundrect.js +5 -5
  203. package/src/index.js +9 -4
  204. package/src/input/gamepad.js +29 -29
  205. package/src/input/input.js +1 -1
  206. package/src/input/keyboard.js +14 -14
  207. package/src/input/pointer.js +1 -1
  208. package/src/input/pointerevent.js +52 -52
  209. package/src/lang/console.js +2 -2
  210. package/src/lang/deprecated.js +1 -1
  211. package/src/level/level.js +8 -8
  212. package/src/level/tiled/TMXGroup.js +2 -2
  213. package/src/level/tiled/TMXLayer.js +30 -30
  214. package/src/level/tiled/TMXObject.js +7 -7
  215. package/src/level/tiled/TMXTile.js +7 -7
  216. package/src/level/tiled/TMXTileMap.js +18 -18
  217. package/src/level/tiled/TMXTileset.js +14 -14
  218. package/src/level/tiled/TMXTilesetGroup.js +2 -2
  219. package/src/level/tiled/TMXUtils.js +45 -40
  220. package/src/level/tiled/renderer/TMXHexagonalRenderer.js +29 -29
  221. package/src/level/tiled/renderer/TMXIsometricRenderer.js +20 -20
  222. package/src/level/tiled/renderer/TMXOrthogonalRenderer.js +9 -9
  223. package/src/level/tiled/renderer/TMXRenderer.js +1 -1
  224. package/src/level/tiled/renderer/TMXStaggeredRenderer.js +5 -5
  225. package/src/loader/loader.js +6 -6
  226. package/src/loader/loadingscreen.js +1 -1
  227. package/src/loader/parser.js +12 -12
  228. package/src/loader/settings.js +2 -2
  229. package/src/math/color.js +24 -23
  230. package/src/math/math.js +1 -1
  231. package/src/math/matrix2.js +21 -21
  232. package/src/math/matrix3.js +51 -51
  233. package/src/math/observable_vector2.js +11 -11
  234. package/src/math/observable_vector3.js +21 -21
  235. package/src/math/vector2.js +10 -10
  236. package/src/math/vector3.js +20 -20
  237. package/src/particles/emitter.js +4 -4
  238. package/src/particles/particle.js +7 -7
  239. package/src/particles/settings.js +2 -2
  240. package/src/physics/body.js +16 -16
  241. package/src/physics/bounds.js +11 -11
  242. package/src/physics/collision.js +2 -2
  243. package/src/physics/detector.js +13 -13
  244. package/src/physics/quadtree.js +18 -18
  245. package/src/physics/sat.js +59 -59
  246. package/src/physics/world.js +3 -3
  247. package/src/plugin/plugin.js +8 -8
  248. package/src/polyfill/index.js +0 -2
  249. package/src/renderable/collectable.js +1 -1
  250. package/src/renderable/container.js +76 -58
  251. package/src/renderable/dragndrop.js +4 -4
  252. package/src/renderable/imagelayer.js +6 -5
  253. package/src/renderable/light2d.js +5 -5
  254. package/src/renderable/nineslicesprite.js +11 -11
  255. package/src/renderable/renderable.js +34 -12
  256. package/src/renderable/sprite.js +24 -24
  257. package/src/renderable/trigger.js +10 -8
  258. package/src/renderable/ui/uibaseelement.js +96 -26
  259. package/src/renderable/ui/uispriteelement.js +24 -24
  260. package/src/renderable/ui/uitextbutton.js +85 -67
  261. package/src/state/stage.js +6 -6
  262. package/src/state/state.js +14 -14
  263. package/src/system/device.js +2 -2
  264. package/src/system/event.js +1 -1
  265. package/src/system/pooling.js +8 -8
  266. package/src/system/save.js +5 -5
  267. package/src/system/timer.js +15 -11
  268. package/src/text/bitmaptext.js +19 -19
  269. package/src/text/bitmaptextdata.js +21 -21
  270. package/src/text/glyph.js +2 -2
  271. package/src/text/text.js +62 -91
  272. package/src/text/textmetrics.js +14 -14
  273. package/src/text/textstyle.js +3 -5
  274. package/src/tweens/easing.js +3 -3
  275. package/src/tweens/interpolation.js +7 -7
  276. package/src/tweens/tween.js +10 -10
  277. package/src/utils/agent.js +5 -5
  278. package/src/utils/array.js +3 -3
  279. package/src/utils/function.js +4 -4
  280. package/src/utils/string.js +2 -2
  281. package/src/utils/utils.js +15 -15
  282. package/src/video/canvas/canvas_renderer.js +39 -117
  283. package/src/video/renderer.js +68 -12
  284. package/src/video/texture/atlas.js +38 -44
  285. package/src/video/texture/cache.js +6 -6
  286. package/src/video/texture/canvas_texture.js +62 -2
  287. package/src/video/video.js +1 -1
  288. package/src/video/webgl/buffer/vertex.js +22 -18
  289. package/src/video/webgl/compositors/compositor.js +79 -80
  290. package/src/video/webgl/compositors/primitive_compositor.js +68 -0
  291. package/src/video/webgl/compositors/{webgl_compositor.js → quad_compositor.js} +52 -109
  292. package/src/video/webgl/glshader.js +6 -6
  293. package/src/video/webgl/shaders/primitive.vert +2 -5
  294. package/src/video/webgl/shaders/quad.vert +3 -1
  295. package/src/video/webgl/utils/attributes.js +1 -1
  296. package/src/video/webgl/utils/program.js +6 -6
  297. package/src/video/webgl/utils/uniforms.js +3 -3
  298. package/src/video/webgl/webgl_renderer.js +186 -179
  299. package/dist/melonjs.mjs/_virtual/make-built-in.js +0 -10
  300. package/dist/melonjs.mjs/_virtual/object-define-property.js +0 -10
  301. package/dist/melonjs.mjs/_virtual/object-get-own-property-descriptor.js +0 -10
  302. package/dist/melonjs.mjs/_virtual/object-get-own-property-names.js +0 -10
  303. package/dist/melonjs.mjs/_virtual/object-get-own-property-symbols.js +0 -10
  304. package/dist/melonjs.mjs/_virtual/object-property-is-enumerable.js +0 -10
  305. package/dist/melonjs.mjs/_virtual/shared.js +0 -10
  306. package/dist/melonjs.mjs/game.js +0 -29
  307. package/dist/melonjs.mjs/polyfill/console.js +0 -18
  308. package/dist/melonjs.mjs/polyfill/performance.js +0 -27
  309. package/dist/melonjs.mjs/polyfill/requestAnimationFrame.js +0 -46
  310. package/dist/melonjs.mjs/polyfill/roundrect.js +0 -242
  311. package/dist/melonjs.mjs/renderable/re_container.js +0 -1016
  312. package/dist/melonjs.mjs/video/utils/resize.js +0 -116
  313. package/dist/melonjs.mjs/video/webgl/webgl_compositor.js +0 -494
  314. package/src/polyfill/performance.js +0 -20
  315. package/src/polyfill/requestAnimationFrame.js +0 -39
@@ -1,11 +1,12 @@
1
1
  /*!
2
- * melonJS Game Engine - v14.5.0
2
+ * melonJS Game Engine - v15.1.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
6
6
  * @copyright (C) 2011 - 2023 Olivier Biot (AltByte Pte Ltd)
7
7
  */
8
- import { on, CANVAS_ONRESIZE } from '../../../system/event.js';
8
+ import VertexArrayBuffer from '../buffer/vertex.js';
9
+ import GLShader from '../glshader.js';
9
10
 
10
11
  /**
11
12
  * @classdesc
@@ -14,19 +15,26 @@ import { on, CANVAS_ONRESIZE } from '../../../system/event.js';
14
15
  class Compositor {
15
16
  /**
16
17
  * @param {WebGLRenderer} renderer - the current WebGL renderer session
18
+ * @param {Object} settings - additional settings to initialize this compositors
19
+ * @param {object[]} attribute - an array of attributes definition
20
+ * @param {string} attribute.name - name of the attribute in the vertex shader
21
+ * @param {number} attribute.size - number of components per vertex attribute. Must be 1, 2, 3, or 4.
22
+ * @param {GLenum} attribute.type - data type of each component in the array
23
+ * @param {boolean} attribute.normalized - whether integer data values should be normalized into a certain range when being cast to a float
24
+ * @param {number} attribute.offset - offset in bytes of the first component in the vertex attribute array
25
+ * @param {object} shader - an array of attributes definition
26
+ * @param {string} shader.vertex - a string containing the GLSL source code to set
27
+ * @param {string} shader.fragment - a string containing the GLSL source code to set
17
28
  */
18
- constructor (renderer) {
19
- this.init(renderer);
29
+ constructor (renderer, settings) {
30
+ this.init(renderer, settings);
20
31
  }
21
32
 
22
33
  /**
23
34
  * Initialize the compositor
24
35
  * @ignore
25
36
  */
26
- init (renderer) {
27
- // local reference
28
- var gl = renderer.gl;
29
-
37
+ init (renderer, settings) {
30
38
  // the associated renderer
31
39
  this.renderer = renderer;
32
40
 
@@ -40,17 +48,23 @@ import { on, CANVAS_ONRESIZE } from '../../../system/event.js';
40
48
  this.viewMatrix = renderer.currentTransform;
41
49
 
42
50
  /**
43
- * a reference to the active WebGL shader
51
+ * the default shader created by this compositor
44
52
  * @type {GLShader}
45
53
  */
46
- this.activeShader = null;
54
+ this.defaultShader = undefined;
55
+
56
+ /**
57
+ * the shader currently used by this compositor
58
+ * @type {GLShader}
59
+ */
60
+ this.currentShader = undefined;
47
61
 
48
62
  /**
49
63
  * primitive type to render (gl.POINTS, gl.LINE_STRIP, gl.LINE_LOOP, gl.LINES, gl.TRIANGLE_STRIP, gl.TRIANGLE_FAN, gl.TRIANGLES)
50
64
  * @type {number}
51
65
  * @default gl.TRIANGLES
52
66
  */
53
- this.mode = gl.TRIANGLES;
67
+ this.mode = this.gl.TRIANGLES;
54
68
 
55
69
  /**
56
70
  * an array of vertex attribute properties
@@ -75,11 +89,28 @@ import { on, CANVAS_ONRESIZE } from '../../../system/event.js';
75
89
  */
76
90
  this.vertexSize = 0;
77
91
 
78
- // register to the CANVAS resize channel
79
- on(CANVAS_ONRESIZE, (width, height) => {
80
- this.flush();
81
- this.setViewport(0, 0, width, height);
82
- });
92
+ /**
93
+ * the vertex data buffer used by this compositor
94
+ * @type {VertexArrayBuffer}
95
+ */
96
+ this.vertexData = null;
97
+
98
+ // parse given attibrutes
99
+ if (typeof settings !== "undefined" && Array.isArray(settings.attributes)) {
100
+ settings.attributes.forEach((attr) => {
101
+ this.addAttribute(attr.name, attr.size, attr.type, attr.normalized, attr.offset);
102
+ this.vertexData = new VertexArrayBuffer(this.vertexSize, 6);
103
+ });
104
+ } else {
105
+ throw new Error("attributes definition missing");
106
+ }
107
+
108
+ // parse and instantiate the default shader
109
+ if (typeof settings !== "undefined" && typeof settings.shader !== "undefined") {
110
+ this.defaultShader = new GLShader(this.gl, settings.shader.vertex, settings.shader.fragment);
111
+ } else {
112
+ throw new Error("shader definition missing");
113
+ }
83
114
  }
84
115
 
85
116
  /**
@@ -90,17 +121,35 @@ import { on, CANVAS_ONRESIZE } from '../../../system/event.js';
90
121
  // WebGL context
91
122
  this.gl = this.renderer.gl;
92
123
 
93
- this.flush();
124
+ // clear the vertex data buffer
125
+ this.vertexData.clear();
126
+ }
94
127
 
95
- // initial viewport size
96
- this.setViewport(
97
- 0, 0,
98
- this.renderer.getCanvas().width,
99
- this.renderer.getCanvas().height
100
- );
128
+ /**
129
+ * @ignore
130
+ * called by the WebGL renderer when a compositor become the current one
131
+ */
132
+ bind() {
133
+ if (this.renderer.currentProgram !== this.defaultShader.program) {
134
+ this.useShader(this.defaultShader);
135
+ }
136
+ }
101
137
 
102
- // Initialize clear color
103
- this.clearColor(0.0, 0.0, 0.0, 0.0);
138
+ /**
139
+ * Select the shader to use for compositing
140
+ * @see GLShader
141
+ * @param {GLShader} shader - a reference to a GLShader instance
142
+ */
143
+ useShader(shader) {
144
+ if (this.renderer.currentProgram !== shader.program) {
145
+ this.flush();
146
+ shader.bind();
147
+ shader.setUniform("uProjectionMatrix", this.renderer.projectionMatrix);
148
+ shader.setVertexAttributes(this.gl, this.attributes, this.vertexByteSize);
149
+
150
+ this.currentShader = shader;
151
+ this.renderer.currentProgram = this.currentShader.program;
152
+ }
104
153
  }
105
154
 
106
155
  /**
@@ -148,51 +197,25 @@ import { on, CANVAS_ONRESIZE } from '../../../system/event.js';
148
197
  this.vertexSize = this.vertexByteSize / Float32Array.BYTES_PER_ELEMENT;
149
198
  }
150
199
 
151
- /**
152
- * Sets the viewport
153
- * @param {number} x - x position of viewport
154
- * @param {number} y - y position of viewport
155
- * @param {number} w - width of viewport
156
- * @param {number} h - height of viewport
157
- */
158
- setViewport(x, y, w, h) {
159
- this.gl.viewport(x, y, w, h);
160
- }
161
-
162
200
  /**
163
201
  * set/change the current projection matrix
164
202
  * @param {Matrix3d} matrix
165
203
  */
166
204
  setProjection(matrix) {
167
- this.activeShader.setUniform("uProjectionMatrix", matrix);
168
- }
169
-
170
- /**
171
- * Select the shader to use for compositing
172
- * @see GLShader
173
- * @param {GLShader} shader - a reference to a GLShader instance
174
- */
175
- useShader(shader) {
176
- if (this.activeShader !== shader) {
177
- this.flush();
178
- this.activeShader = shader;
179
- this.activeShader.bind();
180
- this.activeShader.setUniform("uProjectionMatrix", this.renderer.projectionMatrix);
181
- this.activeShader.setVertexAttributes(this.gl, this.attributes, this.vertexByteSize);
182
- }
205
+ this.currentShader.setUniform("uProjectionMatrix", matrix);
183
206
  }
184
207
 
185
208
  /**
186
- * Flush batched texture operations to the GPU
209
+ * Flush batched vertex data to the GPU
187
210
  * @param {number} [mode=gl.TRIANGLES] - the GL drawing mode
188
211
  */
189
212
  flush(mode = this.mode) {
190
- var vertex = this.vertexBuffer;
191
- var vertexCount = vertex.vertexCount;
213
+ let vertex = this.vertexData;
214
+ let vertexCount = vertex.vertexCount;
192
215
 
193
216
  if (vertexCount > 0) {
194
- var gl = this.gl;
195
- var vertexSize = vertex.vertexSize;
217
+ let gl = this.gl;
218
+ let vertexSize = vertex.vertexSize;
196
219
 
197
220
  // Copy data into stream buffer
198
221
  if (this.renderer.WebGLVersion > 1) {
@@ -207,29 +230,6 @@ import { on, CANVAS_ONRESIZE } from '../../../system/event.js';
207
230
  vertex.clear();
208
231
  }
209
232
  }
210
-
211
- /**
212
- * Clear the frame buffer
213
- * @param {number} [alpha = 0.0] - the alpha value used when clearing the framebuffer
214
- */
215
- clear(alpha = 0) {
216
- var gl = this.gl;
217
- gl.clearColor(0, 0, 0, alpha);
218
- gl.clear(gl.COLOR_BUFFER_BIT | gl.STENCIL_BUFFER_BIT);
219
- }
220
-
221
- /**
222
- * Specify the color values used when clearing color buffers. The values are clamped between 0 and 1.
223
- * @param {number} [r = 0] - the red color value used when the color buffers are cleared
224
- * @param {number} [g = 0] - the green color value used when the color buffers are cleared
225
- * @param {number} [b = 0] - the blue color value used when the color buffers are cleared
226
- * @param {number} [a = 0] - the alpha color value used when the color buffers are cleared
227
- */
228
- clearColor(r = 0, g = 0, b = 0, a = 0) {
229
- var gl = this.gl;
230
- gl.clearColor(r, g, b, a);
231
- gl.clear(gl.COLOR_BUFFER_BIT);
232
- }
233
233
  }
234
234
 
235
235
  export { Compositor as default };
@@ -0,0 +1,77 @@
1
+ /*!
2
+ * melonJS Game Engine - v15.1.0
3
+ * http://www.melonjs.org
4
+ * melonjs is licensed under the MIT License.
5
+ * http://www.opensource.org/licenses/mit-license
6
+ * @copyright (C) 2011 - 2023 Olivier Biot (AltByte Pte Ltd)
7
+ */
8
+ import primitiveVertex from '../shaders/primitive.vert.js';
9
+ import primitiveFragment from '../shaders/primitive.frag.js';
10
+ import Compositor from './compositor.js';
11
+
12
+ /**
13
+ * @classdesc
14
+ * A WebGL Compositor object. This class handles all of the WebGL state<br>
15
+ * Pushes texture regions or shape geometry into WebGL buffers, automatically flushes to GPU
16
+ * @augments Compositor
17
+ */
18
+ class PrimitiveCompositor extends Compositor {
19
+
20
+ /**
21
+ * Initialize the compositor
22
+ * @ignore
23
+ */
24
+ init(renderer) {
25
+ super.init(renderer, {
26
+ attributes: [
27
+ {name: "aVertex", size: 2, type: renderer.gl.FLOAT, normalized: false, offset: 0 * Float32Array.BYTES_PER_ELEMENT},
28
+ {name: "aColor", size: 4, type: renderer.gl.UNSIGNED_BYTE, normalized: true, offset: 2 * Float32Array.BYTES_PER_ELEMENT}
29
+ ],
30
+ shader: {
31
+ vertex: primitiveVertex, fragment: primitiveFragment
32
+ }
33
+ });
34
+ }
35
+
36
+ /**
37
+ * Draw an array of vertices
38
+ * @param {GLenum} mode - primitive type to render (gl.POINTS, gl.LINE_STRIP, gl.LINE_LOOP, gl.LINES, gl.TRIANGLE_STRIP, gl.TRIANGLE_FAN, gl.TRIANGLES)
39
+ * @param {Point[]} verts - an array of vertices
40
+ * @param {number} [vertexCount=verts.length] - amount of points defined in the points array
41
+ */
42
+ drawVertices(mode, verts, vertexCount = verts.length) {
43
+ let viewMatrix = this.viewMatrix;
44
+ let vertexData = this.vertexData;
45
+ let color = this.renderer.currentColor;
46
+ let alpha = this.renderer.getGlobalAlpha();
47
+
48
+ if (vertexData.isFull(vertexCount)) {
49
+ // is the vertex buffer full if we add more vertices
50
+ this.flush();
51
+ }
52
+
53
+ // flush if drawing vertices with a different drawing mode
54
+ if (mode !== this.mode) {
55
+ this.flush(this.mode);
56
+ this.mode = mode;
57
+ }
58
+
59
+ if (!viewMatrix.isIdentity()) {
60
+ verts.forEach((vert) => {
61
+ viewMatrix.apply(vert);
62
+ vertexData.push(vert.x, vert.y, undefined, undefined, color.toUint32(alpha));
63
+ });
64
+ } else {
65
+ verts.forEach((vert) => {
66
+ vertexData.push(vert.x, vert.y, undefined, undefined, color.toUint32(alpha));
67
+ });
68
+ }
69
+
70
+ // force flush for primitive using LINE_STRIP or LINE_LOOP
71
+ if (this.mode === this.gl.LINE_STRIP || this.mode === this.gl.LINE_LOOP) {
72
+ this.flush(this.mode);
73
+ }
74
+ }
75
+ }
76
+
77
+ export { PrimitiveCompositor as default };
@@ -0,0 +1,252 @@
1
+ /*!
2
+ * melonJS Game Engine - v15.1.0
3
+ * http://www.melonjs.org
4
+ * melonjs is licensed under the MIT License.
5
+ * http://www.opensource.org/licenses/mit-license
6
+ * @copyright (C) 2011 - 2023 Olivier Biot (AltByte Pte Ltd)
7
+ */
8
+ import Vector2d from '../../../math/vector2.js';
9
+ import { isPowerOfTwo } from '../../../math/math.js';
10
+ import quadVertex from '../shaders/quad.vert.js';
11
+ import quadFragment from '../shaders/quad.frag.js';
12
+ import Compositor from './compositor.js';
13
+
14
+ // a pool of resuable vectors
15
+ let V_ARRAY = [
16
+ new Vector2d(),
17
+ new Vector2d(),
18
+ new Vector2d(),
19
+ new Vector2d()
20
+ ];
21
+
22
+ /**
23
+ * @classdesc
24
+ * A WebGL Compositor object. This class handles all of the WebGL state<br>
25
+ * Pushes texture regions or shape geometry into WebGL buffers, automatically flushes to GPU
26
+ * @augments Compositor
27
+ */
28
+ class QuadCompositor extends Compositor {
29
+
30
+ /**
31
+ * Initialize the compositor
32
+ * @ignore
33
+ */
34
+ init (renderer) {
35
+ super.init(renderer, {
36
+ attributes: [
37
+ {name: "aVertex", size: 2, type: renderer.gl.FLOAT, normalized: false, offset: 0 * Float32Array.BYTES_PER_ELEMENT},
38
+ {name: "aRegion", size: 2, type: renderer.gl.FLOAT, normalized: false, offset: 2 * Float32Array.BYTES_PER_ELEMENT},
39
+ {name: "aColor", size: 4, type: renderer.gl.UNSIGNED_BYTE, normalized: true, offset: 4 * Float32Array.BYTES_PER_ELEMENT}
40
+ ],
41
+ shader: {
42
+ vertex: quadVertex, fragment: quadFragment
43
+ }
44
+ });
45
+
46
+ // list of active texture units
47
+ this.currentTextureUnit = -1;
48
+ this.boundTextures = [];
49
+ }
50
+
51
+ /**
52
+ * Reset compositor internal state
53
+ * @ignore
54
+ */
55
+ reset() {
56
+ super.reset();
57
+
58
+ // delete all related bound texture
59
+ for (let i = 0; i < this.renderer.maxTextures; i++) {
60
+ let texture2D = this.getTexture2D(i);
61
+ if (typeof texture2D !== "undefined") {
62
+ this.deleteTexture2D(texture2D);
63
+ }
64
+ }
65
+ this.currentTextureUnit = -1;
66
+ }
67
+
68
+ /**
69
+ * Create a WebGL texture from an image
70
+ * @param {number} unit - Destination texture unit
71
+ * @param {Image|HTMLCanvasElement|ImageData|Uint8Array[]|Float32Array[]} [pixels=null] - Source image
72
+ * @param {number} filter - gl.LINEAR or gl.NEAREST
73
+ * @param {string} [repeat="no-repeat"] - Image repeat behavior (see {@link ImageLayer#repeat})
74
+ * @param {number} [w=pixels.width] - Source image width (Only use with UInt8Array[] or Float32Array[] source image)
75
+ * @param {number} [h=pixels.height] - Source image height (Only use with UInt8Array[] or Float32Array[] source image)
76
+ * @param {boolean} [premultipliedAlpha=true] - Multiplies the alpha channel into the other color channels
77
+ * @param {boolean} [mipmap=true] - Whether mipmap levels should be generated for this texture
78
+ * @returns {WebGLTexture} a WebGL texture
79
+ */
80
+ createTexture2D(unit, pixels = null, filter, repeat = "no-repeat", w = pixels.width, h = pixels.height, premultipliedAlpha = true, mipmap = true) {
81
+ let gl = this.gl;
82
+ let isPOT = isPowerOfTwo(w) && isPowerOfTwo(h);
83
+ let rs = (repeat.search(/^repeat(-x)?$/) === 0) && (isPOT || this.renderer.WebGLVersion > 1) ? gl.REPEAT : gl.CLAMP_TO_EDGE;
84
+ let rt = (repeat.search(/^repeat(-y)?$/) === 0) && (isPOT || this.renderer.WebGLVersion > 1) ? gl.REPEAT : gl.CLAMP_TO_EDGE;
85
+
86
+ let texture = gl.createTexture();
87
+
88
+ this.bindTexture2D(texture, unit);
89
+
90
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, rs);
91
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, rt);
92
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, filter);
93
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, filter);
94
+
95
+ gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, premultipliedAlpha);
96
+
97
+ if (pixels === null || typeof pixels.byteLength !== "undefined") {
98
+ // if pixels is undefined, or if it's Uint8Array/Float32Array TypedArray
99
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, w, h, 0, gl.RGBA, gl.UNSIGNED_BYTE, pixels, 0);
100
+ } else if (pixels instanceof OffscreenCanvas) {
101
+ // convert to ImageBitmap first (else Safari 16.4 and higher will throw an TypeError exception)
102
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, pixels.transferToImageBitmap());
103
+ } else {
104
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, pixels);
105
+ }
106
+
107
+ // generate the sprite mimap (used when scaling) if a PowerOfTwo texture
108
+ if (isPOT && mipmap === true) {
109
+ gl.generateMipmap(gl.TEXTURE_2D);
110
+ }
111
+
112
+ return texture;
113
+ }
114
+
115
+ /**
116
+ * delete the given WebGL texture
117
+ * @param {WebGLTexture} [texture] - a WebGL texture to delete
118
+ * @param {number} [unit] - Texture unit to delete
119
+ */
120
+ deleteTexture2D(texture) {
121
+ this.gl.deleteTexture(texture);
122
+ this.unbindTexture2D(texture);
123
+ }
124
+
125
+ /**
126
+ * returns the WebGL texture associated to the given texture unit
127
+ * @param {number} unit - Texture unit to which a texture is bound
128
+ * @returns {WebGLTexture} texture a WebGL texture
129
+ */
130
+ getTexture2D(unit) {
131
+ return this.boundTextures[unit];
132
+ }
133
+
134
+ /**
135
+ * assign the given WebGL texture to the current batch
136
+ * @param {WebGLTexture} texture - a WebGL texture
137
+ * @param {number} unit - Texture unit to which the given texture is bound
138
+ */
139
+ bindTexture2D(texture, unit) {
140
+ let gl = this.gl;
141
+
142
+ if (texture !== this.boundTextures[unit]) {
143
+ this.flush();
144
+ if (this.currentTextureUnit !== unit) {
145
+ this.currentTextureUnit = unit;
146
+ gl.activeTexture(gl.TEXTURE0 + unit);
147
+ }
148
+
149
+ gl.bindTexture(gl.TEXTURE_2D, texture);
150
+ this.boundTextures[unit] = texture;
151
+
152
+ } else if (this.currentTextureUnit !== unit) {
153
+ this.flush();
154
+ this.currentTextureUnit = unit;
155
+ gl.activeTexture(gl.TEXTURE0 + unit);
156
+ }
157
+ }
158
+
159
+ /**
160
+ * unbind the given WebGL texture, forcing it to be reuploaded
161
+ * @param {WebGLTexture} [texture] - a WebGL texture
162
+ * @param {number} [unit] - a WebGL texture
163
+ * @returns {number} unit the unit number that was associated with the given texture
164
+ */
165
+ unbindTexture2D(texture, unit) {
166
+ if (typeof unit === "undefined") {
167
+ unit = this.boundTextures.indexOf(texture);
168
+ }
169
+ if (unit !== -1) {
170
+ delete this.boundTextures[unit];
171
+ if (unit === this.currentTextureUnit) {
172
+ this.currentTextureUnit = -1;
173
+ }
174
+ }
175
+ return unit;
176
+ }
177
+
178
+ /**
179
+ * @ignore
180
+ */
181
+ uploadTexture(texture, w, h, force = false) {
182
+ let unit = this.renderer.cache.getUnit(texture);
183
+ let texture2D = this.boundTextures[unit];
184
+
185
+ if (typeof texture2D === "undefined" || force) {
186
+ this.createTexture2D(
187
+ unit,
188
+ texture.getTexture(),
189
+ this.renderer.settings.antiAlias ? this.gl.LINEAR : this.gl.NEAREST,
190
+ texture.repeat,
191
+ w,
192
+ h,
193
+ texture.premultipliedAlpha
194
+ );
195
+ } else {
196
+ this.bindTexture2D(texture2D, unit);
197
+ }
198
+
199
+ return this.currentTextureUnit;
200
+ }
201
+
202
+ /**
203
+ * Add a textured quad
204
+ * @param {TextureAtlas} texture - Source texture atlas
205
+ * @param {number} x - Destination x-coordinate
206
+ * @param {number} y - Destination y-coordinate
207
+ * @param {number} w - Destination width
208
+ * @param {number} h - Destination height
209
+ * @param {number} u0 - Texture UV (u0) value.
210
+ * @param {number} v0 - Texture UV (v0) value.
211
+ * @param {number} u1 - Texture UV (u1) value.
212
+ * @param {number} v1 - Texture UV (v1) value.
213
+ * @param {number} tint - tint color to be applied to the texture in UINT32 (argb) format
214
+ */
215
+ addQuad(texture, x, y, w, h, u0, v0, u1, v1, tint) {
216
+ let vertexData = this.vertexData;
217
+
218
+ if (vertexData.isFull(6)) {
219
+ // is the vertex buffer full if we add 6 more vertices
220
+ this.flush();
221
+ }
222
+
223
+ // upload and activate the texture if necessary
224
+ let unit = this.uploadTexture(texture);
225
+
226
+ // set fragment sampler accordingly
227
+ this.currentShader.setUniform("uSampler", unit);
228
+
229
+ // Transform vertices
230
+ let m = this.viewMatrix,
231
+ vec0 = V_ARRAY[0].set(x, y),
232
+ vec1 = V_ARRAY[1].set(x + w, y),
233
+ vec2 = V_ARRAY[2].set(x, y + h),
234
+ vec3 = V_ARRAY[3].set(x + w, y + h);
235
+
236
+ if (!m.isIdentity()) {
237
+ m.apply(vec0);
238
+ m.apply(vec1);
239
+ m.apply(vec2);
240
+ m.apply(vec3);
241
+ }
242
+
243
+ vertexData.push(vec0.x, vec0.y, u0, v0, tint);
244
+ vertexData.push(vec1.x, vec1.y, u1, v0, tint);
245
+ vertexData.push(vec2.x, vec2.y, u0, v1, tint);
246
+ vertexData.push(vec2.x, vec2.y, u0, v1, tint);
247
+ vertexData.push(vec1.x, vec1.y, u1, v0, tint);
248
+ vertexData.push(vec3.x, vec3.y, u1, v1, tint);
249
+ }
250
+ }
251
+
252
+ export { QuadCompositor as default };
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v14.5.0
2
+ * melonJS Game Engine - v15.0.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v14.5.0
2
+ * melonJS Game Engine - v15.1.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -25,7 +25,7 @@ import { minify } from './utils/string.js';
25
25
  * @see https://developer.mozilla.org/en-US/docs/Games/Techniques/3D_on_the_web/GLSL_Shaders
26
26
  * @example
27
27
  * // create a basic shader
28
- * var myShader = new me.GLShader(
28
+ * let myShader = new me.GLShader(
29
29
  * // WebGL rendering context
30
30
  * gl,
31
31
  * // vertex shader
@@ -100,7 +100,7 @@ import { minify } from './utils/string.js';
100
100
  * @returns {GLint} number indicating the location of the variable name if found. Returns -1 otherwise
101
101
  */
102
102
  getAttribLocation(name) {
103
- var attr = this.attributes[name];
103
+ let attr = this.attributes[name];
104
104
  if (typeof attr !== "undefined") {
105
105
  return attr;
106
106
  } else {
@@ -116,7 +116,7 @@ import { minify } from './utils/string.js';
116
116
  * myShader.setUniform("uProjectionMatrix", this.projectionMatrix);
117
117
  */
118
118
  setUniform(name, value) {
119
- var uniforms = this.uniforms;
119
+ let uniforms = this.uniforms;
120
120
  if (typeof uniforms[name] !== "undefined") {
121
121
  if (typeof value === "object" && typeof value.toArray === "function") {
122
122
  uniforms[name] = value.toArray();
@@ -136,9 +136,9 @@ import { minify } from './utils/string.js';
136
136
  */
137
137
  setVertexAttributes(gl, attributes, vertexByteSize) {
138
138
  // set the vertex attributes
139
- for (var index = 0; index < attributes.length; ++index) {
140
- var element = attributes[index];
141
- var location = this.getAttribLocation(element.name);
139
+ for (let index = 0; index < attributes.length; ++index) {
140
+ let element = attributes[index];
141
+ let location = this.getAttribLocation(element.name);
142
142
 
143
143
  if (location !== -1) {
144
144
  gl.enableVertexAttribArray(location);
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v14.5.0
2
+ * melonJS Game Engine - v15.1.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * melonJS Game Engine - v14.5.0
2
+ * melonJS Game Engine - v15.1.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
6
6
  * @copyright (C) 2011 - 2023 Olivier Biot (AltByte Pte Ltd)
7
7
  */
8
- var primitiveVertex = "// Current vertex point\nattribute vec2 aVertex;\n\n// Projection matrix\nuniform mat4 uProjectionMatrix;\n\n// Vertex color\nuniform vec4 uColor;\n\n// Fragment color\nvarying vec4 vColor;\n\nvoid main(void) {\n // Transform the vertex position by the projection matrix\n gl_Position = uProjectionMatrix * vec4(aVertex, 0.0, 1.0);\n // Pass the remaining attributes to the fragment shader\n vColor = vec4(uColor.rgb * uColor.a, uColor.a);\n}\n";
8
+ var primitiveVertex = "// Current vertex point\nattribute vec2 aVertex;\nattribute vec4 aColor;\n\n// Projection matrix\nuniform mat4 uProjectionMatrix;\n\nvarying vec4 vColor;\n\nvoid main(void) {\n // Transform the vertex position by the projection matrix\n gl_Position = uProjectionMatrix * vec4(aVertex, 0.0, 1.0);\n // Pass the remaining attributes to the fragment shader\n vColor = vec4(aColor.bgr * aColor.a, aColor.a);\n}\n";
9
9
 
10
10
  export { primitiveVertex as default };
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * melonJS Game Engine - v14.5.0
2
+ * melonJS Game Engine - v15.1.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
@@ -1,10 +1,10 @@
1
1
  /*!
2
- * melonJS Game Engine - v14.5.0
2
+ * melonJS Game Engine - v15.1.0
3
3
  * http://www.melonjs.org
4
4
  * melonjs is licensed under the MIT License.
5
5
  * http://www.opensource.org/licenses/mit-license
6
6
  * @copyright (C) 2011 - 2023 Olivier Biot (AltByte Pte Ltd)
7
7
  */
8
- var quadVertex = "attribute vec2 aVertex;\nattribute vec2 aRegion;\nattribute vec4 aColor;\n\nuniform mat4 uProjectionMatrix;\n\nvarying vec2 vRegion;\nvarying vec4 vColor;\n\nvoid main(void) {\n // Transform the vertex position by the projection matrix\n gl_Position = uProjectionMatrix * vec4(aVertex, 0.0, 1.0);\n // Pass the remaining attributes to the fragment shader\n vColor = vec4(aColor.bgr * aColor.a, aColor.a);\n vRegion = aRegion;\n}\n";
8
+ var quadVertex = "// Current vertex point\nattribute vec2 aVertex;\nattribute vec2 aRegion;\nattribute vec4 aColor;\n\n// Projection matrix\nuniform mat4 uProjectionMatrix;\n\nvarying vec2 vRegion;\nvarying vec4 vColor;\n\nvoid main(void) {\n // Transform the vertex position by the projection matrix\n gl_Position = uProjectionMatrix * vec4(aVertex, 0.0, 1.0);\n // Pass the remaining attributes to the fragment shader\n vColor = vec4(aColor.bgr * aColor.a, aColor.a);\n vRegion = aRegion;\n}\n";
9
9
 
10
10
  export { quadVertex as default };