melonjs 15.0.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 (285) hide show
  1. package/README.md +4 -4
  2. package/dist/melonjs.mjs/_virtual/_commonjsHelpers.js +1 -1
  3. package/dist/melonjs.mjs/_virtual/arraymultimap.js +1 -1
  4. package/dist/melonjs.mjs/_virtual/earcut.js +1 -1
  5. package/dist/melonjs.mjs/_virtual/howler.js +1 -1
  6. package/dist/melonjs.mjs/_virtual/index.js +7 -3
  7. package/dist/melonjs.mjs/_virtual/index2.js +1 -1
  8. package/dist/melonjs.mjs/_virtual/multimap.js +1 -1
  9. package/dist/melonjs.mjs/_virtual/setmultimap.js +1 -1
  10. package/dist/melonjs.mjs/application/application.js +27 -17
  11. package/dist/melonjs.mjs/application/header.js +6 -5
  12. package/dist/melonjs.mjs/application/resize.js +20 -20
  13. package/dist/melonjs.mjs/application/settings.js +1 -1
  14. package/dist/melonjs.mjs/audio/audio.js +17 -17
  15. package/dist/melonjs.mjs/camera/camera2d.js +10 -10
  16. package/dist/melonjs.mjs/const.js +1 -1
  17. package/dist/melonjs.mjs/entity/entity.js +4 -4
  18. package/dist/melonjs.mjs/geometries/ellipse.js +6 -6
  19. package/dist/melonjs.mjs/geometries/line.js +9 -9
  20. package/dist/melonjs.mjs/geometries/path2d.js +53 -53
  21. package/dist/melonjs.mjs/geometries/point.js +2 -2
  22. package/dist/melonjs.mjs/geometries/poly.js +29 -29
  23. package/dist/melonjs.mjs/geometries/rectangle.js +8 -8
  24. package/dist/melonjs.mjs/geometries/roundrect.js +6 -6
  25. package/dist/melonjs.mjs/index.js +5 -5
  26. package/dist/melonjs.mjs/input/gamepad.js +30 -30
  27. package/dist/melonjs.mjs/input/input.js +2 -2
  28. package/dist/melonjs.mjs/input/keyboard.js +15 -15
  29. package/dist/melonjs.mjs/input/pointer.js +2 -2
  30. package/dist/melonjs.mjs/input/pointerevent.js +58 -58
  31. package/dist/melonjs.mjs/lang/console.js +3 -3
  32. package/dist/melonjs.mjs/lang/deprecated.js +2 -2
  33. package/dist/melonjs.mjs/level/level.js +9 -9
  34. package/dist/melonjs.mjs/level/tiled/TMXGroup.js +3 -3
  35. package/dist/melonjs.mjs/level/tiled/TMXLayer.js +31 -31
  36. package/dist/melonjs.mjs/level/tiled/TMXObject.js +8 -8
  37. package/dist/melonjs.mjs/level/tiled/TMXTile.js +8 -8
  38. package/dist/melonjs.mjs/level/tiled/TMXTileMap.js +19 -19
  39. package/dist/melonjs.mjs/level/tiled/TMXTileset.js +15 -15
  40. package/dist/melonjs.mjs/level/tiled/TMXTilesetGroup.js +3 -3
  41. package/dist/melonjs.mjs/level/tiled/TMXUtils.js +46 -41
  42. package/dist/melonjs.mjs/level/tiled/constants.js +1 -1
  43. package/dist/melonjs.mjs/level/tiled/renderer/TMXHexagonalRenderer.js +30 -30
  44. package/dist/melonjs.mjs/level/tiled/renderer/TMXIsometricRenderer.js +21 -21
  45. package/dist/melonjs.mjs/level/tiled/renderer/TMXOrthogonalRenderer.js +10 -10
  46. package/dist/melonjs.mjs/level/tiled/renderer/TMXRenderer.js +2 -2
  47. package/dist/melonjs.mjs/level/tiled/renderer/TMXStaggeredRenderer.js +6 -6
  48. package/dist/melonjs.mjs/level/tiled/renderer/autodetect.js +1 -1
  49. package/dist/melonjs.mjs/loader/cache.js +1 -1
  50. package/dist/melonjs.mjs/loader/loader.js +7 -7
  51. package/dist/melonjs.mjs/loader/loadingscreen.js +2 -2
  52. package/dist/melonjs.mjs/loader/melonjs_logo.png.js +1 -1
  53. package/dist/melonjs.mjs/loader/parser.js +13 -13
  54. package/dist/melonjs.mjs/loader/settings.js +3 -3
  55. package/dist/melonjs.mjs/math/color.js +21 -21
  56. package/dist/melonjs.mjs/math/math.js +2 -2
  57. package/dist/melonjs.mjs/math/matrix2.js +22 -22
  58. package/dist/melonjs.mjs/math/matrix3.js +52 -52
  59. package/dist/melonjs.mjs/math/observable_vector2.js +12 -12
  60. package/dist/melonjs.mjs/math/observable_vector3.js +22 -22
  61. package/dist/melonjs.mjs/math/vector2.js +11 -11
  62. package/dist/melonjs.mjs/math/vector3.js +21 -21
  63. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/arraymultimap.js +45 -0
  64. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/esm/multimap.js +130 -0
  65. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/arraymultimap.js +1 -1
  66. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/index.js +1 -1
  67. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/multimap.js +1 -1
  68. package/dist/melonjs.mjs/node_modules/@teppeis/multimaps/dist/src/setmultimap.js +1 -1
  69. package/dist/melonjs.mjs/node_modules/earcut/src/earcut.js +1 -1
  70. package/dist/melonjs.mjs/node_modules/eventemitter3/index.js +2 -2
  71. package/dist/melonjs.mjs/node_modules/eventemitter3/index2.js +1 -1
  72. package/dist/melonjs.mjs/node_modules/howler/dist/howler.js +1 -1
  73. package/dist/melonjs.mjs/particles/emitter.js +5 -5
  74. package/dist/melonjs.mjs/particles/particle.js +8 -8
  75. package/dist/melonjs.mjs/particles/settings.js +3 -3
  76. package/dist/melonjs.mjs/physics/body.js +17 -17
  77. package/dist/melonjs.mjs/physics/bounds.js +12 -12
  78. package/dist/melonjs.mjs/physics/collision.js +3 -3
  79. package/dist/melonjs.mjs/physics/detector.js +14 -14
  80. package/dist/melonjs.mjs/physics/quadtree.js +19 -19
  81. package/dist/melonjs.mjs/physics/response.js +1 -1
  82. package/dist/melonjs.mjs/physics/sat.js +60 -60
  83. package/dist/melonjs.mjs/physics/world.js +4 -4
  84. package/dist/melonjs.mjs/plugin/plugin.js +11 -11
  85. package/dist/melonjs.mjs/renderable/collectable.js +2 -2
  86. package/dist/melonjs.mjs/renderable/colorlayer.js +1 -1
  87. package/dist/melonjs.mjs/renderable/container.js +77 -59
  88. package/dist/melonjs.mjs/renderable/dragndrop.js +5 -5
  89. package/dist/melonjs.mjs/renderable/imagelayer.js +7 -6
  90. package/dist/melonjs.mjs/renderable/light2d.js +6 -6
  91. package/dist/melonjs.mjs/renderable/nineslicesprite.js +12 -12
  92. package/dist/melonjs.mjs/renderable/renderable.js +11 -11
  93. package/dist/melonjs.mjs/renderable/sprite.js +25 -25
  94. package/dist/melonjs.mjs/renderable/trigger.js +11 -9
  95. package/dist/melonjs.mjs/renderable/ui/uibaseelement.js +97 -27
  96. package/dist/melonjs.mjs/renderable/ui/uispriteelement.js +25 -25
  97. package/dist/melonjs.mjs/renderable/ui/uitextbutton.js +83 -63
  98. package/dist/melonjs.mjs/state/stage.js +7 -7
  99. package/dist/melonjs.mjs/state/state.js +15 -15
  100. package/dist/melonjs.mjs/system/device.js +2 -2
  101. package/dist/melonjs.mjs/system/dom.js +1 -1
  102. package/dist/melonjs.mjs/system/event.js +2 -2
  103. package/dist/melonjs.mjs/system/platform.js +1 -1
  104. package/dist/melonjs.mjs/system/pooling.js +9 -9
  105. package/dist/melonjs.mjs/system/save.js +6 -6
  106. package/dist/melonjs.mjs/system/timer.js +16 -12
  107. package/dist/melonjs.mjs/text/bitmaptext.js +20 -20
  108. package/dist/melonjs.mjs/text/bitmaptextdata.js +22 -22
  109. package/dist/melonjs.mjs/text/glyph.js +3 -3
  110. package/dist/melonjs.mjs/text/text.js +10 -9
  111. package/dist/melonjs.mjs/text/textmetrics.js +15 -15
  112. package/dist/melonjs.mjs/text/textstyle.js +1 -1
  113. package/dist/melonjs.mjs/tweens/easing.js +4 -4
  114. package/dist/melonjs.mjs/tweens/interpolation.js +8 -8
  115. package/dist/melonjs.mjs/tweens/tween.js +11 -11
  116. package/dist/melonjs.mjs/utils/agent.js +6 -6
  117. package/dist/melonjs.mjs/utils/array.js +4 -4
  118. package/dist/melonjs.mjs/utils/file.js +1 -1
  119. package/dist/melonjs.mjs/utils/function.js +5 -5
  120. package/dist/melonjs.mjs/utils/string.js +3 -3
  121. package/dist/melonjs.mjs/utils/utils.js +16 -16
  122. package/dist/melonjs.mjs/video/canvas/canvas_renderer.js +35 -109
  123. package/dist/melonjs.mjs/video/renderer.js +74 -7
  124. package/dist/melonjs.mjs/video/texture/atlas.js +37 -37
  125. package/dist/melonjs.mjs/video/texture/cache.js +9 -10
  126. package/dist/melonjs.mjs/video/texture/canvas_texture.js +63 -3
  127. package/dist/melonjs.mjs/video/utils/autodetect.js +1 -1
  128. package/dist/melonjs.mjs/video/video.js +2 -2
  129. package/dist/melonjs.mjs/video/webgl/buffer/vertex.js +3 -3
  130. package/dist/melonjs.mjs/video/webgl/compositors/compositor.js +5 -5
  131. package/dist/melonjs.mjs/video/webgl/compositors/primitive_compositor.js +5 -5
  132. package/dist/melonjs.mjs/video/webgl/compositors/quad_compositor.js +18 -15
  133. package/dist/melonjs.mjs/video/webgl/glshader.js +7 -7
  134. package/dist/melonjs.mjs/video/webgl/shaders/primitive.frag.js +1 -1
  135. package/dist/melonjs.mjs/video/webgl/shaders/primitive.vert.js +1 -1
  136. package/dist/melonjs.mjs/video/webgl/shaders/quad.frag.js +1 -1
  137. package/dist/melonjs.mjs/video/webgl/shaders/quad.vert.js +1 -1
  138. package/dist/melonjs.mjs/video/webgl/utils/attributes.js +2 -2
  139. package/dist/melonjs.mjs/video/webgl/utils/precision.js +1 -1
  140. package/dist/melonjs.mjs/video/webgl/utils/program.js +7 -7
  141. package/dist/melonjs.mjs/video/webgl/utils/string.js +1 -1
  142. package/dist/melonjs.mjs/video/webgl/utils/uniforms.js +4 -4
  143. package/dist/melonjs.mjs/video/webgl/webgl_renderer.js +55 -38
  144. package/dist/melonjs.module.js +1747 -1809
  145. package/dist/types/application/application.d.ts +11 -8
  146. package/dist/types/audio/audio.d.ts +3 -3
  147. package/dist/types/index.d.ts +4 -3
  148. package/dist/types/input/input.d.ts +1 -1
  149. package/dist/types/input/keyboard.d.ts +1 -1
  150. package/dist/types/input/pointerevent.d.ts +6 -6
  151. package/dist/types/level/level.d.ts +2 -2
  152. package/dist/types/level/tiled/TMXLayer.d.ts +4 -4
  153. package/dist/types/level/tiled/TMXTileMap.d.ts +2 -2
  154. package/dist/types/level/tiled/TMXUtils.d.ts +5 -4
  155. package/dist/types/loader/loader.d.ts +2 -2
  156. package/dist/types/loader/settings.d.ts +2 -2
  157. package/dist/types/particles/emitter.d.ts +1 -1
  158. package/dist/types/physics/collision.d.ts +1 -1
  159. package/dist/types/physics/detector.d.ts +1 -1
  160. package/dist/types/plugin/plugin.d.ts +2 -2
  161. package/dist/types/renderable/container.d.ts +21 -17
  162. package/dist/types/renderable/sprite.d.ts +11 -11
  163. package/dist/types/renderable/trigger.d.ts +1 -1
  164. package/dist/types/renderable/ui/uibaseelement.d.ts +28 -6
  165. package/dist/types/renderable/ui/uispriteelement.d.ts +12 -14
  166. package/dist/types/renderable/ui/uitextbutton.d.ts +52 -11
  167. package/dist/types/state/stage.d.ts +1 -1
  168. package/dist/types/system/device.d.ts +1 -1
  169. package/dist/types/system/pooling.d.ts +3 -3
  170. package/dist/types/system/timer.d.ts +5 -5
  171. package/dist/types/text/bitmaptext.d.ts +1 -1
  172. package/dist/types/text/text.d.ts +1 -1
  173. package/dist/types/utils/array.d.ts +2 -2
  174. package/dist/types/video/canvas/canvas_renderer.d.ts +8 -76
  175. package/dist/types/video/renderer.d.ts +48 -0
  176. package/dist/types/video/texture/atlas.d.ts +3 -3
  177. package/dist/types/video/texture/canvas_texture.d.ts +40 -0
  178. package/dist/types/video/webgl/glshader.d.ts +1 -1
  179. package/dist/types/video/webgl/webgl_renderer.d.ts +13 -9
  180. package/package.json +14 -14
  181. package/src/application/application.js +26 -16
  182. package/src/application/header.js +5 -4
  183. package/src/application/resize.js +19 -19
  184. package/src/audio/audio.js +16 -16
  185. package/src/camera/camera2d.js +9 -9
  186. package/src/entity/entity.js +3 -3
  187. package/src/geometries/ellipse.js +5 -5
  188. package/src/geometries/line.js +8 -8
  189. package/src/geometries/path2d.js +52 -52
  190. package/src/geometries/point.js +1 -1
  191. package/src/geometries/poly.js +28 -28
  192. package/src/geometries/rectangle.js +7 -7
  193. package/src/geometries/roundrect.js +5 -5
  194. package/src/index.js +3 -2
  195. package/src/input/gamepad.js +29 -29
  196. package/src/input/input.js +1 -1
  197. package/src/input/keyboard.js +14 -14
  198. package/src/input/pointer.js +1 -1
  199. package/src/input/pointerevent.js +52 -52
  200. package/src/lang/console.js +2 -2
  201. package/src/lang/deprecated.js +1 -1
  202. package/src/level/level.js +8 -8
  203. package/src/level/tiled/TMXGroup.js +2 -2
  204. package/src/level/tiled/TMXLayer.js +30 -30
  205. package/src/level/tiled/TMXObject.js +7 -7
  206. package/src/level/tiled/TMXTile.js +7 -7
  207. package/src/level/tiled/TMXTileMap.js +18 -18
  208. package/src/level/tiled/TMXTileset.js +14 -14
  209. package/src/level/tiled/TMXTilesetGroup.js +2 -2
  210. package/src/level/tiled/TMXUtils.js +45 -40
  211. package/src/level/tiled/renderer/TMXHexagonalRenderer.js +29 -29
  212. package/src/level/tiled/renderer/TMXIsometricRenderer.js +20 -20
  213. package/src/level/tiled/renderer/TMXOrthogonalRenderer.js +9 -9
  214. package/src/level/tiled/renderer/TMXRenderer.js +1 -1
  215. package/src/level/tiled/renderer/TMXStaggeredRenderer.js +5 -5
  216. package/src/loader/loader.js +6 -6
  217. package/src/loader/loadingscreen.js +1 -1
  218. package/src/loader/parser.js +12 -12
  219. package/src/loader/settings.js +2 -2
  220. package/src/math/color.js +20 -20
  221. package/src/math/math.js +1 -1
  222. package/src/math/matrix2.js +21 -21
  223. package/src/math/matrix3.js +51 -51
  224. package/src/math/observable_vector2.js +11 -11
  225. package/src/math/observable_vector3.js +21 -21
  226. package/src/math/vector2.js +10 -10
  227. package/src/math/vector3.js +20 -20
  228. package/src/particles/emitter.js +4 -4
  229. package/src/particles/particle.js +7 -7
  230. package/src/particles/settings.js +2 -2
  231. package/src/physics/body.js +16 -16
  232. package/src/physics/bounds.js +11 -11
  233. package/src/physics/collision.js +2 -2
  234. package/src/physics/detector.js +13 -13
  235. package/src/physics/quadtree.js +18 -18
  236. package/src/physics/sat.js +59 -59
  237. package/src/physics/world.js +3 -3
  238. package/src/plugin/plugin.js +8 -8
  239. package/src/renderable/collectable.js +1 -1
  240. package/src/renderable/container.js +76 -58
  241. package/src/renderable/dragndrop.js +4 -4
  242. package/src/renderable/imagelayer.js +6 -5
  243. package/src/renderable/light2d.js +5 -5
  244. package/src/renderable/nineslicesprite.js +11 -11
  245. package/src/renderable/renderable.js +10 -10
  246. package/src/renderable/sprite.js +24 -24
  247. package/src/renderable/trigger.js +10 -8
  248. package/src/renderable/ui/uibaseelement.js +96 -26
  249. package/src/renderable/ui/uispriteelement.js +24 -24
  250. package/src/renderable/ui/uitextbutton.js +85 -65
  251. package/src/state/stage.js +6 -6
  252. package/src/state/state.js +14 -14
  253. package/src/system/device.js +1 -1
  254. package/src/system/event.js +1 -1
  255. package/src/system/pooling.js +8 -8
  256. package/src/system/save.js +5 -5
  257. package/src/system/timer.js +15 -11
  258. package/src/text/bitmaptext.js +19 -19
  259. package/src/text/bitmaptextdata.js +21 -21
  260. package/src/text/glyph.js +2 -2
  261. package/src/text/text.js +9 -8
  262. package/src/text/textmetrics.js +14 -14
  263. package/src/tweens/easing.js +3 -3
  264. package/src/tweens/interpolation.js +7 -7
  265. package/src/tweens/tween.js +10 -10
  266. package/src/utils/agent.js +5 -5
  267. package/src/utils/array.js +3 -3
  268. package/src/utils/function.js +4 -4
  269. package/src/utils/string.js +2 -2
  270. package/src/utils/utils.js +15 -15
  271. package/src/video/canvas/canvas_renderer.js +34 -108
  272. package/src/video/renderer.js +72 -5
  273. package/src/video/texture/atlas.js +36 -36
  274. package/src/video/texture/cache.js +6 -6
  275. package/src/video/texture/canvas_texture.js +62 -2
  276. package/src/video/video.js +1 -1
  277. package/src/video/webgl/buffer/vertex.js +2 -2
  278. package/src/video/webgl/compositors/compositor.js +4 -4
  279. package/src/video/webgl/compositors/primitive_compositor.js +4 -4
  280. package/src/video/webgl/compositors/quad_compositor.js +17 -14
  281. package/src/video/webgl/glshader.js +6 -6
  282. package/src/video/webgl/utils/attributes.js +1 -1
  283. package/src/video/webgl/utils/program.js +6 -6
  284. package/src/video/webgl/utils/uniforms.js +3 -3
  285. package/src/video/webgl/webgl_renderer.js +54 -37
@@ -27,6 +27,7 @@ import { isPowerOfTwo } from "./../../math/math.js";
27
27
  * @param {boolean} [options.premultipliedAlpha=true] - in WebGL, whether the renderer will assume that colors have premultiplied alpha when canvas transparency is enabled
28
28
  * @param {boolean} [options.subPixel=false] - Whether to enable subpixel renderering (performance hit when enabled)
29
29
  * @param {boolean} [options.preferWebGL1=false] - if true the renderer will only use WebGL 1
30
+ * @param {boolean} [options.depthTest="sorting"] - ~Experimental~ the default method to sort object on the z axis in WebGL ("sorting", "z-buffer")
30
31
  * @param {string} [options.powerPreference="default"] - a hint to the user agent indicating what configuration of GPU is suitable for the WebGL context ("default", "high-performance", "low-power"). To be noted that Safari and Chrome (since version 80) both default to "low-power" to save battery life and improve the user experience on these dual-GPU machines.
31
32
  * @param {number} [options.zoomX=width] - The actual width of the canvas with scaling applied
32
33
  * @param {number} [options.zoomY=height] - The actual height of the canvas with scaling applied
@@ -65,7 +66,7 @@ import { isPowerOfTwo } from "./../../math/math.js";
65
66
  * @name gl
66
67
  * @type {WebGLRenderingContext}
67
68
  */
68
- this.context = this.gl = this.getContextGL(this.getCanvas(), options.transparent);
69
+ this.context = this.gl = this.getContextGL(this.getCanvas(), options.transparent, options.depthTest === "z-buffer");
69
70
 
70
71
  /**
71
72
  * the vertex buffer used by this WebGL Renderer
@@ -131,9 +132,20 @@ import { isPowerOfTwo } from "./../../math/math.js";
131
132
  this.addCompositor(new (this.settings.compositor || QuadCompositor)(this), "quad", true);
132
133
  this.addCompositor(new (this.settings.compositor || PrimitiveCompositor)(this), "primitive");
133
134
 
135
+ // depth Test settings
136
+ this.depthTest = options.depthTest;
134
137
 
135
138
  // default WebGL state(s)
136
- this.gl.disable(this.gl.DEPTH_TEST);
139
+ if (this.depthTest === "z-buffer") {
140
+ this.gl.enable(this.gl.DEPTH_TEST);
141
+ // https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/depthFunc
142
+ this.gl.depthFunc(this.gl.LEQUAL);
143
+ this.gl.depthMask(true);
144
+ } else {
145
+ this.gl.disable(this.gl.DEPTH_TEST);
146
+ this.gl.depthMask(false);
147
+ }
148
+
137
149
  this.gl.disable(this.gl.SCISSOR_TEST);
138
150
  this.gl.enable(this.gl.BLEND);
139
151
 
@@ -141,7 +153,7 @@ import { isPowerOfTwo } from "./../../math/math.js";
141
153
  this.setBlendMode(this.settings.blendMode);
142
154
 
143
155
  // get GPU vendor and renderer
144
- var debugInfo = this.gl.getExtension("WEBGL_debug_renderer_info");
156
+ let debugInfo = this.gl.getExtension("WEBGL_debug_renderer_info");
145
157
  if (debugInfo !== null) {
146
158
  this.GPUVendor = this.gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL);
147
159
  this.GPURenderer = this.gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL);
@@ -158,7 +170,7 @@ import { isPowerOfTwo } from "./../../math/math.js";
158
170
  this.type = "WebGL" + this.WebGLVersion;
159
171
 
160
172
  // to simulate context lost and restore in WebGL:
161
- // var ctx = me.video.renderer.context.getExtension('WEBGL_lose_context');
173
+ // let ctx = me.video.renderer.context.getExtension('WEBGL_lose_context');
162
174
  // ctx.loseContext()
163
175
  this.getCanvas().addEventListener("webglcontextlost", (e) => {
164
176
  e.preventDefault();
@@ -281,29 +293,29 @@ import { isPowerOfTwo } from "./../../math/math.js";
281
293
 
282
294
  /**
283
295
  * Create a pattern with the specified repetition
284
- * @param {Image} image - Source image
296
+ * @param {HTMLImageElement|SVGImageElement|HTMLVideoElement|HTMLCanvasElement|ImageBitmap|OffscreenCanvas|VideoFrame} image - Source image to be used as the pattern's image
285
297
  * @param {string} repeat - Define how the pattern should be repeated
286
298
  * @returns {TextureAtlas}
287
299
  * @see ImageLayer#repeat
288
300
  * @example
289
- * var tileable = renderer.createPattern(image, "repeat");
290
- * var horizontal = renderer.createPattern(image, "repeat-x");
291
- * var vertical = renderer.createPattern(image, "repeat-y");
292
- * var basic = renderer.createPattern(image, "no-repeat");
301
+ * let tileable = renderer.createPattern(image, "repeat");
302
+ * let horizontal = renderer.createPattern(image, "repeat-x");
303
+ * let vertical = renderer.createPattern(image, "repeat-y");
304
+ * let basic = renderer.createPattern(image, "no-repeat");
293
305
  */
294
306
  createPattern(image, repeat) {
295
307
 
296
308
  this.setCompositor("quad");
297
309
 
298
310
  if (renderer.WebGLVersion === 1 && (!isPowerOfTwo(image.width) || !isPowerOfTwo(image.height))) {
299
- var src = typeof image.src !== "undefined" ? image.src : image;
311
+ let src = typeof image.src !== "undefined" ? image.src : image;
300
312
  throw new Error(
301
313
  "[WebGL Renderer] " + src + " is not a POT texture " +
302
314
  "(" + image.width + "x" + image.height + ")"
303
315
  );
304
316
  }
305
317
 
306
- var texture = new TextureAtlas(createAtlas(image.width, image.height, "pattern", repeat), image);
318
+ let texture = new TextureAtlas(createAtlas(image.width, image.height, "pattern", repeat), image);
307
319
 
308
320
  // FIXME: Remove old cache entry and texture when changing the repeat mode
309
321
  this.currentCompositor.uploadTexture(texture);
@@ -342,9 +354,13 @@ import { isPowerOfTwo } from "./../../math/math.js";
342
354
  * Clear the frame buffer
343
355
  */
344
356
  clear() {
345
- var gl = this.gl;
357
+ let gl = this.gl;
346
358
  gl.clearColor(0, 0, 0, this.settings.transparent ? 0.0 : 1.0);
347
- gl.clear(gl.COLOR_BUFFER_BIT | gl.STENCIL_BUFFER_BIT);
359
+ if (this.depthTest === "z-buffer") {
360
+ gl.clear(gl.DEPTH_BUFFER_BIT | gl.COLOR_BUFFER_BIT | gl.STENCIL_BUFFER_BIT);
361
+ } else {
362
+ gl.clear(gl.COLOR_BUFFER_BIT | gl.STENCIL_BUFFER_BIT);
363
+ }
348
364
  }
349
365
 
350
366
  /**
@@ -353,13 +369,13 @@ import { isPowerOfTwo } from "./../../math/math.js";
353
369
  * @param {boolean} [opaque=false] - Allow transparency [default] or clear the surface completely [true]
354
370
  */
355
371
  clearColor(color = "#000000", opaque = false) {
356
- var glArray;
357
- var gl = this.gl;
372
+ let glArray;
373
+ let gl = this.gl;
358
374
 
359
375
  if (color instanceof Color) {
360
376
  glArray = color.toArray();
361
377
  } else {
362
- var _color = pool.pull("me.Color");
378
+ let _color = pool.pull("me.Color");
363
379
  // reuse temporary the renderer default color object
364
380
  glArray = _color.parseCSS(color).toArray();
365
381
  pool.push(_color);
@@ -386,7 +402,7 @@ import { isPowerOfTwo } from "./../../math/math.js";
386
402
 
387
403
  /**
388
404
  * Draw an image to the gl context
389
- * @param {Image} image - An element to draw into the context. The specification permits any canvas image source (CanvasImageSource), specifically, a CSSImageValue, an HTMLImageElement, an SVGImageElement, an HTMLVideoElement, an HTMLCanvasElement, an ImageBitmap, or an OffscreenCanvas.
405
+ * @param {HTMLImageElement|SVGImageElement|HTMLVideoElement|HTMLCanvasElement|ImageBitmap|OffscreenCanvas|VideoFrame} image - An element to draw into the context.
390
406
  * @param {number} sx - The X coordinate of the top left corner of the sub-rectangle of the source image to draw into the destination context.
391
407
  * @param {number} sy - The Y coordinate of the top left corner of the sub-rectangle of the source image to draw into the destination context.
392
408
  * @param {number} sw - The width of the sub-rectangle of the source image to draw into the destination context. If not specified, the entire rectangle from the coordinates specified by sx and sy to the bottom-right corner of the image is used.
@@ -431,8 +447,8 @@ import { isPowerOfTwo } from "./../../math/math.js";
431
447
 
432
448
  this.setCompositor("quad");
433
449
 
434
- var texture = this.cache.get(image);
435
- var uvs = texture.getUVs(sx + "," + sy + "," + sw + "," + sh);
450
+ let texture = this.cache.get(image);
451
+ let uvs = texture.getUVs(sx + "," + sy + "," + sw + "," + sh);
436
452
  this.currentCompositor.addQuad(texture, dx, dy, dw, dh, uvs[0], uvs[1], uvs[2], uvs[3], this.currentTint.toUint32(this.getGlobalAlpha()));
437
453
  }
438
454
 
@@ -446,7 +462,7 @@ import { isPowerOfTwo } from "./../../math/math.js";
446
462
  * @see WebGLRenderer#createPattern
447
463
  */
448
464
  drawPattern(pattern, x, y, width, height) {
449
- var uvs = pattern.getUVs("0,0," + width + "," + height);
465
+ let uvs = pattern.getUVs("0,0," + width + "," + height);
450
466
  this.setCompositor("quad");
451
467
  this.currentCompositor.addQuad(pattern, x, y, width, height, uvs[0], uvs[1], uvs[2], uvs[3], this.currentTint.toUint32(this.getGlobalAlpha()));
452
468
  }
@@ -455,9 +471,10 @@ import { isPowerOfTwo } from "./../../math/math.js";
455
471
  * Returns the WebGL Context object of the given canvas element
456
472
  * @param {HTMLCanvasElement} canvas
457
473
  * @param {boolean} [transparent=false] - use true to enable transparency
474
+ * @param {boolean} [depth=false] - use true to enable depth buffer testing
458
475
  * @returns {WebGLRenderingContext}
459
476
  */
460
- getContextGL(canvas, transparent = false) {
477
+ getContextGL(canvas, transparent = false, depth = false) {
461
478
  if (typeof canvas === "undefined" || canvas === null) {
462
479
  throw new Error(
463
480
  "You must pass a canvas element in order to create " +
@@ -465,10 +482,10 @@ import { isPowerOfTwo } from "./../../math/math.js";
465
482
  );
466
483
  }
467
484
 
468
- var attr = {
485
+ let attr = {
469
486
  alpha : transparent,
470
487
  antialias : this.settings.antiAlias,
471
- depth : false,
488
+ depth : depth,
472
489
  stencil: true,
473
490
  preserveDrawingBuffer : false,
474
491
  premultipliedAlpha: transparent ? this.settings.premultipliedAlpha : false,
@@ -476,7 +493,7 @@ import { isPowerOfTwo } from "./../../math/math.js";
476
493
  failIfMajorPerformanceCaveat : this.settings.failIfMajorPerformanceCaveat
477
494
  };
478
495
 
479
- var gl;
496
+ let gl;
480
497
 
481
498
  // attempt to create a WebGL2 context if requested
482
499
  if (this.settings.preferWebGL1 === false) {
@@ -560,8 +577,8 @@ import { isPowerOfTwo } from "./../../math/math.js";
560
577
  restore() {
561
578
  // do nothing if there is no saved states
562
579
  if (this._matrixStack.length !== 0) {
563
- var color = this._colorStack.pop();
564
- var matrix = this._matrixStack.pop();
580
+ let color = this._colorStack.pop();
581
+ let matrix = this._matrixStack.pop();
565
582
 
566
583
  // restore the previous context
567
584
  this.currentColor.copy(color);
@@ -650,7 +667,7 @@ import { isPowerOfTwo } from "./../../math/math.js";
650
667
  * @param {Color|string} color - css color string.
651
668
  */
652
669
  setColor(color) {
653
- var alpha = this.currentColor.alpha;
670
+ let alpha = this.currentColor.alpha;
654
671
  this.currentColor.copy(color);
655
672
  this.currentColor.alpha *= alpha;
656
673
  }
@@ -766,8 +783,8 @@ import { isPowerOfTwo } from "./../../math/math.js";
766
783
  this.translate(poly.pos.x, poly.pos.y);
767
784
  this.path2D.beginPath();
768
785
 
769
- var points = poly.points;
770
- for (var i = 1; i < points.length; i++) {
786
+ let points = poly.points;
787
+ for (let i = 1; i < points.length; i++) {
771
788
  this.path2D.moveTo(points[i-1].x, points[i-1].y);
772
789
  this.path2D.lineTo(points[i].x, points[i].y);
773
790
  }
@@ -888,11 +905,11 @@ import { isPowerOfTwo } from "./../../math/math.js";
888
905
  * @param {Matrix2d} mat2d - Matrix to transform by
889
906
  */
890
907
  transform(mat2d) {
891
- var currentTransform = this.currentTransform;
908
+ let currentTransform = this.currentTransform;
892
909
  currentTransform.multiply(mat2d);
893
910
  if (this.settings.subPixel === false) {
894
911
  // snap position values to pixel grid
895
- var a = currentTransform.toArray();
912
+ let a = currentTransform.toArray();
896
913
  a[6] |= 0;
897
914
  a[7] |= 0;
898
915
  }
@@ -904,11 +921,11 @@ import { isPowerOfTwo } from "./../../math/math.js";
904
921
  * @param {number} y
905
922
  */
906
923
  translate(x, y) {
907
- var currentTransform = this.currentTransform;
924
+ let currentTransform = this.currentTransform;
908
925
  currentTransform.translate(x, y);
909
926
  if (this.settings.subPixel === false) {
910
927
  // snap position values to pixel grid
911
- var a = currentTransform.toArray();
928
+ let a = currentTransform.toArray();
912
929
  a[6] |= 0;
913
930
  a[7] |= 0;
914
931
  }
@@ -926,11 +943,11 @@ import { isPowerOfTwo } from "./../../math/math.js";
926
943
  * @param {number} height
927
944
  */
928
945
  clipRect(x, y, width, height) {
929
- var canvas = this.getCanvas();
930
- var gl = this.gl;
946
+ let canvas = this.getCanvas();
947
+ let gl = this.gl;
931
948
  // if requested box is different from the current canvas size
932
949
  if (x !== 0 || y !== 0 || width !== canvas.width || height !== canvas.height) {
933
- var currentScissor = this.currentScissor;
950
+ let currentScissor = this.currentScissor;
934
951
  if (gl.isEnabled(gl.SCISSOR_TEST)) {
935
952
  // if same as the current scissor box do nothing
936
953
  if (currentScissor[0] === x && currentScissor[1] === y &&
@@ -969,7 +986,7 @@ import { isPowerOfTwo } from "./../../math/math.js";
969
986
  * @param {boolean} [invert=false] - either the given shape should define what is visible (default) or the opposite
970
987
  */
971
988
  setMask(mask, invert = false) {
972
- var gl = this.gl;
989
+ let gl = this.gl;
973
990
 
974
991
  // flush the compositor
975
992
  this.flush();