@lightningjs/renderer 2.13.1 → 3.0.0-beta2

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 (440) hide show
  1. package/dist/exports/canvas-shaders.d.ts +10 -0
  2. package/dist/exports/canvas-shaders.js +27 -0
  3. package/dist/exports/canvas-shaders.js.map +1 -0
  4. package/dist/exports/canvas.d.ts +7 -1
  5. package/dist/exports/canvas.js +7 -1
  6. package/dist/exports/canvas.js.map +1 -1
  7. package/dist/exports/index.d.ts +15 -8
  8. package/dist/exports/index.js +7 -4
  9. package/dist/exports/index.js.map +1 -1
  10. package/dist/exports/webgl-shaders.d.ts +11 -0
  11. package/dist/exports/webgl-shaders.js +28 -0
  12. package/dist/exports/webgl-shaders.js.map +1 -0
  13. package/dist/exports/webgl.d.ts +9 -1
  14. package/dist/exports/webgl.js +9 -1
  15. package/dist/exports/webgl.js.map +1 -1
  16. package/dist/src/core/CoreNode.d.ts +10 -5
  17. package/dist/src/core/CoreNode.js +34 -13
  18. package/dist/src/core/CoreNode.js.map +1 -1
  19. package/dist/src/core/CoreShaderManager.d.ts +29 -71
  20. package/dist/src/core/CoreShaderManager.js +110 -97
  21. package/dist/src/core/CoreShaderManager.js.map +1 -1
  22. package/dist/src/core/CoreStuff.d.ts +1 -0
  23. package/dist/src/core/CoreStuff.js +138 -0
  24. package/dist/src/core/CoreStuff.js.map +1 -0
  25. package/dist/src/core/CoreTextNode.js +1 -8
  26. package/dist/src/core/CoreTextNode.js.map +1 -1
  27. package/dist/src/core/CoreTexturizer.d.ts +14 -0
  28. package/dist/src/core/CoreTexturizer.js +47 -0
  29. package/dist/src/core/CoreTexturizer.js.map +1 -0
  30. package/dist/src/core/LngNode.d.ts +736 -0
  31. package/dist/src/core/LngNode.js +1174 -0
  32. package/dist/src/core/LngNode.js.map +1 -0
  33. package/dist/src/core/Matrix2DContext.d.ts +15 -0
  34. package/dist/src/core/Matrix2DContext.js +45 -0
  35. package/dist/src/core/Matrix2DContext.js.map +1 -0
  36. package/dist/src/core/ShaderNode.d.ts +10 -0
  37. package/dist/src/core/ShaderNode.js +30 -0
  38. package/dist/src/core/ShaderNode.js.map +1 -0
  39. package/dist/src/core/Stage.d.ts +11 -14
  40. package/dist/src/core/Stage.js +24 -29
  41. package/dist/src/core/Stage.js.map +1 -1
  42. package/dist/src/core/TextNode.d.ts +103 -0
  43. package/dist/src/core/TextNode.js +331 -0
  44. package/dist/src/core/TextNode.js.map +1 -0
  45. package/dist/src/core/animations/CoreAnimation.d.ts +0 -1
  46. package/dist/src/core/animations/CoreAnimation.js +6 -52
  47. package/dist/src/core/animations/CoreAnimation.js.map +1 -1
  48. package/dist/src/core/lib/Coords.d.ts +14 -0
  49. package/dist/src/core/lib/Coords.js +55 -0
  50. package/dist/src/core/lib/Coords.js.map +1 -0
  51. package/dist/src/core/lib/RenderCoords.d.ts +9 -10
  52. package/dist/src/core/lib/RenderCoords.js +43 -55
  53. package/dist/src/core/lib/RenderCoords.js.map +1 -1
  54. package/dist/src/core/lib/WebGlContextWrapper.d.ts +89 -54
  55. package/dist/src/core/lib/WebGlContextWrapper.js +153 -157
  56. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
  57. package/dist/src/core/lib/glm/common.d.ts +162 -0
  58. package/dist/src/core/lib/glm/common.js +81 -0
  59. package/dist/src/core/lib/glm/common.js.map +1 -0
  60. package/dist/src/core/lib/glm/index.d.ts +11 -0
  61. package/{src/core/renderers/CoreShader.ts → dist/src/core/lib/glm/index.js} +12 -23
  62. package/dist/src/core/lib/glm/index.js.map +1 -0
  63. package/dist/src/core/lib/glm/mat2.d.ts +219 -0
  64. package/dist/src/core/lib/glm/mat2.js +396 -0
  65. package/dist/src/core/lib/glm/mat2.js.map +1 -0
  66. package/dist/src/core/lib/glm/mat2d.d.ts +237 -0
  67. package/dist/src/core/lib/glm/mat2d.js +442 -0
  68. package/dist/src/core/lib/glm/mat2d.js.map +1 -0
  69. package/dist/src/core/lib/glm/mat3.d.ts +283 -0
  70. package/dist/src/core/lib/glm/mat3.js +680 -0
  71. package/dist/src/core/lib/glm/mat3.js.map +1 -0
  72. package/dist/src/core/lib/glm/mat4.d.ts +550 -0
  73. package/dist/src/core/lib/glm/mat4.js +1802 -0
  74. package/dist/src/core/lib/glm/mat4.js.map +1 -0
  75. package/dist/src/core/lib/glm/quat.d.ts +363 -0
  76. package/dist/src/core/lib/glm/quat.js +693 -0
  77. package/dist/src/core/lib/glm/quat.js.map +1 -0
  78. package/dist/src/core/lib/glm/quat2.d.ts +356 -0
  79. package/dist/src/core/lib/glm/quat2.js +754 -0
  80. package/dist/src/core/lib/glm/quat2.js.map +1 -0
  81. package/dist/src/core/lib/glm/vec2.d.ts +365 -0
  82. package/dist/src/core/lib/glm/vec2.js +569 -0
  83. package/dist/src/core/lib/glm/vec2.js.map +1 -0
  84. package/dist/src/core/lib/glm/vec3.d.ts +406 -0
  85. package/dist/src/core/lib/glm/vec3.js +720 -0
  86. package/dist/src/core/lib/glm/vec3.js.map +1 -0
  87. package/dist/src/core/lib/glm/vec4.d.ts +330 -0
  88. package/dist/src/core/lib/glm/vec4.js +608 -0
  89. package/dist/src/core/lib/glm/vec4.js.map +1 -0
  90. package/dist/src/core/lib/textureCompression.js +0 -1
  91. package/dist/src/core/lib/textureCompression.js.map +1 -1
  92. package/dist/src/core/lib/utils.d.ts +2 -1
  93. package/dist/src/core/lib/utils.js.map +1 -1
  94. package/dist/src/core/platform.js +1 -0
  95. package/dist/src/core/platform.js.map +1 -1
  96. package/dist/src/core/renderers/CoreRenderer.d.ts +11 -21
  97. package/dist/src/core/renderers/CoreRenderer.js +0 -6
  98. package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
  99. package/dist/src/core/renderers/CoreShaderManager.d.ts +19 -0
  100. package/dist/src/core/renderers/CoreShaderManager.js +33 -0
  101. package/dist/src/core/renderers/CoreShaderManager.js.map +1 -0
  102. package/dist/src/core/renderers/CoreShaderNode.d.ts +58 -0
  103. package/dist/src/core/renderers/CoreShaderNode.js +104 -0
  104. package/dist/src/core/renderers/CoreShaderNode.js.map +1 -0
  105. package/dist/src/core/renderers/CoreShaderProgram.d.ts +4 -0
  106. package/dist/src/core/renderers/CoreShaderProgram.js +20 -0
  107. package/dist/src/core/renderers/CoreShaderProgram.js.map +1 -0
  108. package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +36 -0
  109. package/dist/src/core/renderers/canvas/CanvasRenderer.js +212 -0
  110. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -0
  111. package/dist/src/core/renderers/canvas/CanvasShaderNode.d.ts +21 -0
  112. package/dist/src/core/renderers/canvas/CanvasShaderNode.js +60 -0
  113. package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -0
  114. package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +16 -0
  115. package/dist/src/core/renderers/canvas/CanvasTexture.js +124 -0
  116. package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -0
  117. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +0 -13
  118. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +192 -113
  119. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -1
  120. package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +2 -0
  121. package/dist/src/core/renderers/canvas/internal/ColorUtils.js +14 -0
  122. package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -1
  123. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.d.ts +27 -0
  124. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js +82 -0
  125. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js.map +1 -0
  126. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.d.ts +11 -0
  127. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js +34 -0
  128. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js.map +1 -0
  129. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +12 -0
  130. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +55 -0
  131. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -0
  132. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +9 -0
  133. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +38 -0
  134. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -0
  135. package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +57 -0
  136. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +227 -0
  137. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -0
  138. package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +44 -0
  139. package/dist/src/core/renderers/webgl/WebGlRenderOp.js +118 -0
  140. package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -0
  141. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +134 -0
  142. package/dist/src/core/renderers/webgl/WebGlRenderer.js +547 -0
  143. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -0
  144. package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +222 -0
  145. package/dist/src/core/renderers/webgl/WebGlShaderNode.js +334 -0
  146. package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -0
  147. package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +35 -0
  148. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +201 -0
  149. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -0
  150. package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +32 -5
  151. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +50 -0
  152. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -1
  153. package/dist/src/core/scene/Scene.d.ts +59 -0
  154. package/dist/src/core/scene/Scene.js +106 -0
  155. package/dist/src/core/scene/Scene.js.map +1 -0
  156. package/dist/src/core/shaders/canvas/Border.d.ts +9 -0
  157. package/dist/src/core/shaders/canvas/Border.js +57 -0
  158. package/dist/src/core/shaders/canvas/Border.js.map +1 -0
  159. package/dist/src/core/shaders/canvas/HolePunch.d.ts +7 -0
  160. package/dist/src/core/shaders/canvas/HolePunch.js +38 -0
  161. package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -0
  162. package/dist/src/core/shaders/canvas/LinearGradient.d.ts +10 -0
  163. package/dist/src/core/shaders/canvas/LinearGradient.js +46 -0
  164. package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -0
  165. package/dist/src/core/shaders/canvas/RadialGradient.d.ts +11 -0
  166. package/dist/src/core/shaders/canvas/RadialGradient.js +68 -0
  167. package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -0
  168. package/dist/src/core/shaders/canvas/Rounded.d.ts +7 -0
  169. package/dist/src/core/shaders/canvas/Rounded.js +33 -0
  170. package/dist/src/core/shaders/canvas/Rounded.js.map +1 -0
  171. package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +7 -0
  172. package/dist/src/core/shaders/canvas/RoundedWithBorder.js +35 -0
  173. package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -0
  174. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +8 -0
  175. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +39 -0
  176. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -0
  177. package/dist/src/core/shaders/canvas/RoundedWithShadow.d.ts +7 -0
  178. package/dist/src/core/shaders/canvas/RoundedWithShadow.js +38 -0
  179. package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -0
  180. package/dist/src/core/shaders/canvas/Shadow.d.ts +8 -0
  181. package/dist/src/core/shaders/canvas/Shadow.js +31 -0
  182. package/dist/src/core/shaders/canvas/Shadow.js.map +1 -0
  183. package/dist/src/core/shaders/canvas/utils/render.d.ts +5 -0
  184. package/dist/src/core/shaders/canvas/utils/render.js +84 -0
  185. package/dist/src/core/shaders/canvas/utils/render.js.map +1 -0
  186. package/dist/src/core/shaders/templates/BorderTemplate.d.ts +37 -0
  187. package/dist/src/core/shaders/templates/BorderTemplate.js +73 -0
  188. package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -0
  189. package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +46 -0
  190. package/dist/src/core/shaders/templates/HolePunchTemplate.js +35 -0
  191. package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -0
  192. package/dist/src/core/shaders/templates/LinearGradientTemplate.d.ts +23 -0
  193. package/dist/src/core/shaders/templates/LinearGradientTemplate.js +47 -0
  194. package/dist/src/core/shaders/templates/LinearGradientTemplate.js.map +1 -0
  195. package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +31 -0
  196. package/dist/src/core/shaders/templates/RadialGradientTemplate.js +49 -0
  197. package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -0
  198. package/dist/src/core/shaders/templates/RoundedTemplate.d.ts +29 -0
  199. package/dist/src/core/shaders/templates/RoundedTemplate.js +67 -0
  200. package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -0
  201. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +7 -0
  202. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js +24 -0
  203. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js.map +1 -0
  204. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +6 -0
  205. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js +23 -0
  206. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js.map +1 -0
  207. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +6 -0
  208. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js +23 -0
  209. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js.map +1 -0
  210. package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +34 -0
  211. package/dist/src/core/shaders/templates/ShadowTemplate.js +66 -0
  212. package/dist/src/core/shaders/templates/ShadowTemplate.js.map +1 -0
  213. package/dist/src/core/shaders/templates/shaderUtils.d.ts +5 -0
  214. package/dist/src/core/shaders/templates/shaderUtils.js +41 -0
  215. package/dist/src/core/shaders/templates/shaderUtils.js.map +1 -0
  216. package/dist/src/core/shaders/webgl/Border.d.ts +3 -0
  217. package/dist/src/core/shaders/webgl/Border.js +87 -0
  218. package/dist/src/core/shaders/webgl/Border.js.map +1 -0
  219. package/dist/src/core/shaders/webgl/Default.d.ts +2 -0
  220. package/dist/src/core/shaders/webgl/Default.js +86 -0
  221. package/dist/src/core/shaders/webgl/Default.js.map +1 -0
  222. package/dist/src/core/shaders/webgl/DefaultBatched.d.ts +2 -0
  223. package/dist/src/core/shaders/webgl/DefaultBatched.js +104 -0
  224. package/dist/src/core/shaders/webgl/DefaultBatched.js.map +1 -0
  225. package/dist/src/core/shaders/webgl/HolePunch.d.ts +3 -0
  226. package/dist/src/core/shaders/webgl/HolePunch.js +64 -0
  227. package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -0
  228. package/dist/src/core/shaders/webgl/LinearGradient.d.ts +3 -0
  229. package/dist/src/core/shaders/webgl/LinearGradient.js +75 -0
  230. package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -0
  231. package/dist/src/core/shaders/webgl/RadialGradient.d.ts +3 -0
  232. package/dist/src/core/shaders/webgl/RadialGradient.js +73 -0
  233. package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -0
  234. package/dist/src/core/shaders/webgl/Rounded.d.ts +7 -0
  235. package/dist/src/core/shaders/webgl/Rounded.js +86 -0
  236. package/dist/src/core/shaders/webgl/Rounded.js.map +1 -0
  237. package/dist/src/core/shaders/webgl/RoundedWithBorder.d.ts +3 -0
  238. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +97 -0
  239. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -0
  240. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.d.ts +3 -0
  241. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +112 -0
  242. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -0
  243. package/dist/src/core/shaders/webgl/RoundedWithShadow.d.ts +3 -0
  244. package/dist/src/core/shaders/webgl/RoundedWithShadow.js +84 -0
  245. package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -0
  246. package/dist/src/core/shaders/webgl/SdfShader.d.ts +32 -0
  247. package/dist/src/core/shaders/webgl/SdfShader.js +116 -0
  248. package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -0
  249. package/dist/src/core/shaders/webgl/Shadow.d.ts +3 -0
  250. package/dist/src/core/shaders/webgl/Shadow.js +110 -0
  251. package/dist/src/core/shaders/webgl/Shadow.js.map +1 -0
  252. package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -1
  253. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +2 -2
  254. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -1
  255. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +6 -0
  256. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
  257. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +2 -3
  258. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +34 -31
  259. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  260. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +20 -0
  261. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +55 -0
  262. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +1 -0
  263. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +1 -4
  264. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
  265. package/dist/src/core/textures/Texture.d.ts +1 -1
  266. package/dist/src/main-api/ICoreDriver.d.ts +4 -1
  267. package/dist/src/main-api/INode.d.ts +9 -9
  268. package/dist/src/main-api/IRenderDriver.d.ts +20 -0
  269. package/dist/src/main-api/IRenderDriver.js +20 -0
  270. package/dist/src/main-api/IRenderDriver.js.map +1 -0
  271. package/dist/src/main-api/IShaderController.d.ts +14 -0
  272. package/dist/src/main-api/IShaderController.js +30 -0
  273. package/dist/src/main-api/IShaderController.js.map +1 -0
  274. package/dist/src/main-api/IShaderNode.d.ts +17 -0
  275. package/dist/src/main-api/IShaderNode.js +19 -0
  276. package/dist/src/main-api/IShaderNode.js.map +1 -0
  277. package/dist/src/main-api/Renderer.d.ts +8 -91
  278. package/dist/src/main-api/Renderer.js +3 -54
  279. package/dist/src/main-api/Renderer.js.map +1 -1
  280. package/dist/src/main-api/RendererMain.d.ts +2 -5
  281. package/dist/src/main-api/RendererMain.js +4 -6
  282. package/dist/src/main-api/RendererMain.js.map +1 -1
  283. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +1 -1
  284. package/dist/src/render-drivers/main/MainCoreDriver.d.ts +4 -1
  285. package/dist/src/render-drivers/main/MainCoreDriver.js +4 -1
  286. package/dist/src/render-drivers/main/MainCoreDriver.js.map +1 -1
  287. package/dist/src/render-drivers/main/MainOnlyNode.d.ts +6 -8
  288. package/dist/src/render-drivers/main/MainOnlyNode.js +1 -30
  289. package/dist/src/render-drivers/main/MainOnlyNode.js.map +1 -1
  290. package/dist/src/render-drivers/main/MainOnlyShaderController.d.ts +6 -0
  291. package/dist/src/render-drivers/main/MainOnlyShaderController.js +15 -0
  292. package/dist/src/render-drivers/main/MainOnlyShaderController.js.map +1 -0
  293. package/dist/src/render-drivers/main/MainOnlyShaderNode.d.ts +7 -0
  294. package/dist/src/render-drivers/main/MainOnlyShaderNode.js +34 -0
  295. package/dist/src/render-drivers/main/MainOnlyShaderNode.js.map +1 -0
  296. package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +1 -1
  297. package/dist/src/render-drivers/main/MainOnlyTextNode.js +3 -2
  298. package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +1 -1
  299. package/dist/src/render-drivers/main/MainRenderDriver.d.ts +17 -0
  300. package/dist/src/render-drivers/main/MainRenderDriver.js +88 -0
  301. package/dist/src/render-drivers/main/MainRenderDriver.js.map +1 -0
  302. package/dist/src/render-drivers/threadx/NodeStruct.d.ts +0 -3
  303. package/dist/src/render-drivers/threadx/NodeStruct.js +0 -9
  304. package/dist/src/render-drivers/threadx/NodeStruct.js.map +1 -1
  305. package/dist/src/render-drivers/threadx/SharedNode.d.ts +0 -1
  306. package/dist/src/render-drivers/threadx/SharedNode.js +0 -1
  307. package/dist/src/render-drivers/threadx/SharedNode.js.map +1 -1
  308. package/dist/src/render-drivers/threadx/TextNodeStruct.js +1 -3
  309. package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +1 -1
  310. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +4 -1
  311. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +4 -2
  312. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +1 -1
  313. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +4 -8
  314. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +24 -53
  315. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +1 -1
  316. package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +5 -7
  317. package/dist/src/render-drivers/threadx/ThreadXMainNode.js +2 -8
  318. package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +1 -1
  319. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.d.ts +6 -0
  320. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js +16 -0
  321. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js.map +1 -0
  322. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.d.ts +7 -0
  323. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js +15 -0
  324. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js.map +1 -0
  325. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +1 -1
  326. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.d.ts +21 -0
  327. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +198 -0
  328. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +1 -0
  329. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +0 -7
  330. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +1 -1
  331. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +0 -1
  332. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +1 -1
  333. package/dist/src/render-drivers/threadx/worker/renderer.js +0 -2
  334. package/dist/src/render-drivers/threadx/worker/renderer.js.map +1 -1
  335. package/dist/src/render-drivers/utils.js +1 -6
  336. package/dist/src/render-drivers/utils.js.map +1 -1
  337. package/dist/src/utils.d.ts +6 -0
  338. package/dist/src/utils.js +18 -0
  339. package/dist/src/utils.js.map +1 -1
  340. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  341. package/exports/canvas-shaders.ts +28 -0
  342. package/exports/canvas.ts +7 -1
  343. package/exports/index.ts +17 -17
  344. package/exports/webgl-shaders.ts +28 -0
  345. package/exports/webgl.ts +13 -1
  346. package/package.json +3 -1
  347. package/src/core/CoreNode.test.ts +3 -2
  348. package/src/core/CoreNode.ts +50 -19
  349. package/src/core/CoreShaderManager.ts +127 -226
  350. package/src/core/CoreTextNode.ts +1 -17
  351. package/src/core/Stage.ts +36 -41
  352. package/src/core/animations/CoreAnimation.ts +8 -64
  353. package/src/core/lib/RenderCoords.ts +52 -67
  354. package/src/core/lib/WebGlContextWrapper.ts +278 -236
  355. package/src/core/lib/textureCompression.ts +3 -3
  356. package/src/core/lib/utils.ts +3 -1
  357. package/src/core/platform.ts +1 -0
  358. package/src/core/renderers/CoreRenderer.ts +19 -27
  359. package/src/core/renderers/CoreShaderNode.ts +167 -0
  360. package/src/core/renderers/{canvas/shaders/UnsupportedShader.ts → CoreShaderProgram.ts} +3 -28
  361. package/src/core/renderers/canvas/CanvasRenderer.ts +298 -0
  362. package/src/core/renderers/canvas/CanvasShaderNode.ts +99 -0
  363. package/src/core/renderers/canvas/{CanvasCoreTexture.ts → CanvasTexture.ts} +6 -3
  364. package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +2 -13
  365. package/src/core/renderers/canvas/internal/ColorUtils.ts +16 -0
  366. package/src/core/renderers/webgl/{WebGlCoreCtxRenderTexture.ts → WebGlCtxRenderTexture.ts} +2 -2
  367. package/src/core/renderers/webgl/{WebGlCoreCtxSubTexture.ts → WebGlCtxSubTexture.ts} +2 -2
  368. package/src/core/renderers/webgl/{WebGlCoreCtxTexture.ts → WebGlCtxTexture.ts} +1 -1
  369. package/src/core/renderers/webgl/WebGlRenderOp.ts +161 -0
  370. package/src/core/renderers/webgl/{WebGlCoreRenderer.ts → WebGlRenderer.ts} +155 -250
  371. package/src/core/renderers/webgl/WebGlShaderNode.ts +437 -0
  372. package/src/core/renderers/webgl/WebGlShaderProgram.ts +318 -0
  373. package/src/core/renderers/webgl/internal/ShaderUtils.ts +143 -5
  374. package/src/core/shaders/canvas/Border.ts +78 -0
  375. package/src/core/shaders/canvas/HolePunch.ts +62 -0
  376. package/src/core/shaders/canvas/LinearGradient.ts +69 -0
  377. package/src/core/shaders/canvas/RadialGradient.ts +113 -0
  378. package/src/core/shaders/canvas/Rounded.ts +55 -0
  379. package/src/core/shaders/canvas/RoundedWithBorder.ts +68 -0
  380. package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +88 -0
  381. package/src/core/shaders/canvas/RoundedWithShadow.ts +69 -0
  382. package/src/core/shaders/canvas/Shadow.ts +52 -0
  383. package/src/core/shaders/canvas/utils/render.ts +151 -0
  384. package/src/core/shaders/templates/BorderTemplate.ts +115 -0
  385. package/src/core/shaders/templates/HolePunchTemplate.ts +82 -0
  386. package/src/core/shaders/templates/LinearGradientTemplate.ts +71 -0
  387. package/src/core/shaders/templates/RadialGradientTemplate.ts +81 -0
  388. package/src/core/shaders/templates/RoundedTemplate.ts +98 -0
  389. package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +38 -0
  390. package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +35 -0
  391. package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +35 -0
  392. package/src/core/shaders/templates/ShadowTemplate.ts +106 -0
  393. package/src/core/shaders/templates/shaderUtils.ts +47 -0
  394. package/src/core/shaders/webgl/Border.ts +96 -0
  395. package/src/core/shaders/webgl/Default.ts +89 -0
  396. package/src/core/shaders/webgl/DefaultBatched.ts +129 -0
  397. package/src/core/shaders/webgl/HolePunch.ts +78 -0
  398. package/src/core/shaders/webgl/LinearGradient.ts +81 -0
  399. package/src/core/shaders/webgl/RadialGradient.ts +84 -0
  400. package/src/core/shaders/webgl/Rounded.ts +117 -0
  401. package/src/core/shaders/webgl/RoundedWithBorder.ts +114 -0
  402. package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +133 -0
  403. package/src/core/shaders/webgl/RoundedWithShadow.ts +98 -0
  404. package/src/core/shaders/webgl/SdfShader.ts +134 -0
  405. package/src/core/shaders/webgl/Shadow.ts +115 -0
  406. package/src/core/text-rendering/TextTextureRendererUtils.ts +1 -1
  407. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +2 -2
  408. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +12 -5
  409. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +44 -57
  410. package/src/core/text-rendering/renderers/TextRenderer.ts +2 -9
  411. package/src/core/textures/Texture.ts +1 -1
  412. package/src/main-api/INode.ts +11 -13
  413. package/src/main-api/Renderer.ts +25 -127
  414. package/src/utils.ts +19 -0
  415. package/dist/tsconfig.tsbuildinfo +0 -1
  416. package/src/core/renderers/canvas/CanvasCoreRenderer.ts +0 -375
  417. package/src/core/renderers/webgl/WebGlCoreRenderOp.ts +0 -125
  418. package/src/core/renderers/webgl/WebGlCoreShader.ts +0 -362
  419. package/src/core/renderers/webgl/shaders/DefaultShader.ts +0 -93
  420. package/src/core/renderers/webgl/shaders/DefaultShaderBatched.ts +0 -132
  421. package/src/core/renderers/webgl/shaders/DynamicShader.ts +0 -580
  422. package/src/core/renderers/webgl/shaders/RoundedRectangle.ts +0 -167
  423. package/src/core/renderers/webgl/shaders/SdfShader.ts +0 -204
  424. package/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.ts +0 -101
  425. package/src/core/renderers/webgl/shaders/effects/BorderEffect.ts +0 -87
  426. package/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.ts +0 -101
  427. package/src/core/renderers/webgl/shaders/effects/BorderRightEffect.ts +0 -101
  428. package/src/core/renderers/webgl/shaders/effects/BorderTopEffect.ts +0 -101
  429. package/src/core/renderers/webgl/shaders/effects/EffectUtils.ts +0 -159
  430. package/src/core/renderers/webgl/shaders/effects/FadeOutEffect.ts +0 -127
  431. package/src/core/renderers/webgl/shaders/effects/GlitchEffect.ts +0 -148
  432. package/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.ts +0 -67
  433. package/src/core/renderers/webgl/shaders/effects/HolePunchEffect.ts +0 -157
  434. package/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts +0 -171
  435. package/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts +0 -168
  436. package/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.ts +0 -187
  437. package/src/core/renderers/webgl/shaders/effects/RadiusEffect.ts +0 -110
  438. package/src/core/renderers/webgl/shaders/effects/ShaderEffect.ts +0 -196
  439. package/src/main-api/DynamicShaderController.ts +0 -104
  440. package/src/main-api/ShaderController.ts +0 -80
@@ -176,9 +176,8 @@ export class WebGlContextWrapper {
176
176
  * @param textureUnit
177
177
  */
178
178
  activeTexture(textureUnit) {
179
- const { gl } = this;
180
179
  if (this.activeTextureUnit !== textureUnit) {
181
- gl.activeTexture(textureUnit + gl.TEXTURE0);
180
+ this.gl.activeTexture(textureUnit + this.gl.TEXTURE0);
182
181
  this.activeTextureUnit = textureUnit;
183
182
  }
184
183
  }
@@ -192,16 +191,14 @@ export class WebGlContextWrapper {
192
191
  * @param texture
193
192
  */
194
193
  bindTexture(texture) {
195
- const { gl, activeTextureUnit, texture2dUnits } = this;
196
- if (texture2dUnits[activeTextureUnit] === texture) {
194
+ if (this.texture2dUnits[this.activeTextureUnit] === texture) {
197
195
  return;
198
196
  }
199
- texture2dUnits[activeTextureUnit] = texture;
200
- gl.bindTexture(this.gl.TEXTURE_2D, texture);
197
+ this.texture2dUnits[this.activeTextureUnit] = texture;
198
+ this.gl.bindTexture(this.gl.TEXTURE_2D, texture);
201
199
  }
202
200
  _getActiveTexture() {
203
- const { activeTextureUnit, texture2dUnits } = this;
204
- return texture2dUnits[activeTextureUnit];
201
+ return this.texture2dUnits[this.activeTextureUnit];
205
202
  }
206
203
  /**
207
204
  * ```
@@ -215,29 +212,27 @@ export class WebGlContextWrapper {
215
212
  * @returns
216
213
  */
217
214
  texParameteri(pname, param) {
218
- const { gl, texture2dParams } = this;
219
215
  const activeTexture = this._getActiveTexture();
220
216
  if (!activeTexture) {
221
217
  throw new Error('No active texture');
222
218
  }
223
- let textureParams = texture2dParams.get(activeTexture);
219
+ let textureParams = this.texture2dParams.get(activeTexture);
224
220
  if (!textureParams) {
225
221
  textureParams = {};
226
- texture2dParams.set(activeTexture, textureParams);
222
+ this.texture2dParams.set(activeTexture, textureParams);
227
223
  }
228
224
  if (textureParams[pname] === param) {
229
225
  return;
230
226
  }
231
227
  textureParams[pname] = param;
232
- gl.texParameteri(gl.TEXTURE_2D, pname, param);
228
+ this.gl.texParameteri(this.gl.TEXTURE_2D, pname, param);
233
229
  }
234
230
  texImage2D(level, internalFormat, widthOrFormat, heightOrType, borderOrSource, format, type, pixels) {
235
- const { gl } = this;
236
231
  if (format) {
237
- gl.texImage2D(gl.TEXTURE_2D, level, internalFormat, widthOrFormat, heightOrType, borderOrSource, format, type, pixels);
232
+ this.gl.texImage2D(this.gl.TEXTURE_2D, level, internalFormat, widthOrFormat, heightOrType, borderOrSource, format, type, pixels);
238
233
  }
239
234
  else {
240
- gl.texImage2D(gl.TEXTURE_2D, level, internalFormat, widthOrFormat, heightOrType, borderOrSource);
235
+ this.gl.texImage2D(this.gl.TEXTURE_2D, level, internalFormat, widthOrFormat, heightOrType, borderOrSource);
241
236
  }
242
237
  }
243
238
  /**
@@ -249,8 +244,7 @@ export class WebGlContextWrapper {
249
244
  * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D`
250
245
  */
251
246
  compressedTexImage2D(level, internalformat, width, height, border, data) {
252
- const { gl } = this;
253
- gl.compressedTexImage2D(gl.TEXTURE_2D, level, internalformat, width, height, border, data);
247
+ this.gl.compressedTexImage2D(this.gl.TEXTURE_2D, level, internalformat, width, height, border, data);
254
248
  }
255
249
  /**
256
250
  * ```
@@ -261,8 +255,7 @@ export class WebGlContextWrapper {
261
255
  * @param param
262
256
  */
263
257
  pixelStorei(pname, param) {
264
- const { gl } = this;
265
- gl.pixelStorei(pname, param);
258
+ this.gl.pixelStorei(pname, param);
266
259
  }
267
260
  /**
268
261
  * ```
@@ -273,8 +266,7 @@ export class WebGlContextWrapper {
273
266
  * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D`
274
267
  */
275
268
  generateMipmap() {
276
- const { gl } = this;
277
- gl.generateMipmap(gl.TEXTURE_2D);
269
+ this.gl.generateMipmap(this.gl.TEXTURE_2D);
278
270
  }
279
271
  /**
280
272
  * ```
@@ -284,8 +276,7 @@ export class WebGlContextWrapper {
284
276
  * @returns
285
277
  */
286
278
  createTexture() {
287
- const { gl } = this;
288
- return gl.createTexture();
279
+ return this.gl.createTexture();
289
280
  }
290
281
  /**
291
282
  * ```
@@ -295,11 +286,10 @@ export class WebGlContextWrapper {
295
286
  * @param texture
296
287
  */
297
288
  deleteTexture(texture) {
298
- const { gl } = this;
299
289
  if (texture) {
300
290
  this.texture2dParams.delete(texture);
301
291
  }
302
- gl.deleteTexture(texture);
292
+ this.gl.deleteTexture(texture);
303
293
  }
304
294
  /**
305
295
  * ```
@@ -316,8 +306,7 @@ export class WebGlContextWrapper {
316
306
  * ```
317
307
  */
318
308
  viewport(x, y, width, height) {
319
- const { gl } = this;
320
- gl.viewport(x, y, width, height);
309
+ this.gl.viewport(x, y, width, height);
321
310
  }
322
311
  /**
323
312
  * ```
@@ -330,8 +319,7 @@ export class WebGlContextWrapper {
330
319
  * @param alpha
331
320
  */
332
321
  clearColor(red, green, blue, alpha) {
333
- const { gl } = this;
334
- gl.clearColor(red, green, blue, alpha);
322
+ this.gl.clearColor(red, green, blue, alpha);
335
323
  }
336
324
  /**
337
325
  * ```
@@ -340,15 +328,14 @@ export class WebGlContextWrapper {
340
328
  * @param enable
341
329
  */
342
330
  setScissorTest(enable) {
343
- const { gl, scissorEnabled } = this;
344
- if (enable === scissorEnabled) {
331
+ if (enable === this.scissorEnabled) {
345
332
  return;
346
333
  }
347
334
  if (enable) {
348
- gl.enable(gl.SCISSOR_TEST);
335
+ this.gl.enable(this.gl.SCISSOR_TEST);
349
336
  }
350
337
  else {
351
- gl.disable(gl.SCISSOR_TEST);
338
+ this.gl.disable(this.gl.SCISSOR_TEST);
352
339
  }
353
340
  this.scissorEnabled = enable;
354
341
  }
@@ -363,12 +350,11 @@ export class WebGlContextWrapper {
363
350
  * @param height
364
351
  */
365
352
  scissor(x, y, width, height) {
366
- const { gl, scissorX, scissorY, scissorWidth, scissorHeight } = this;
367
- if (x !== scissorX ||
368
- y !== scissorY ||
369
- width !== scissorWidth ||
370
- height !== scissorHeight) {
371
- gl.scissor(x, y, width, height);
353
+ if (x !== this.scissorX ||
354
+ y !== this.scissorY ||
355
+ width !== this.scissorWidth ||
356
+ height !== this.scissorHeight) {
357
+ this.gl.scissor(x, y, width, height);
372
358
  this.scissorX = x;
373
359
  this.scissorY = y;
374
360
  this.scissorWidth = width;
@@ -384,15 +370,14 @@ export class WebGlContextWrapper {
384
370
  * @returns
385
371
  */
386
372
  setBlend(blend) {
387
- const { gl, blendEnabled } = this;
388
- if (blend === blendEnabled) {
373
+ if (blend === this.blendEnabled) {
389
374
  return;
390
375
  }
391
376
  if (blend) {
392
- gl.enable(gl.BLEND);
377
+ this.gl.enable(this.gl.BLEND);
393
378
  }
394
379
  else {
395
- gl.disable(gl.BLEND);
380
+ this.gl.disable(this.gl.BLEND);
396
381
  }
397
382
  this.blendEnabled = blend;
398
383
  }
@@ -405,12 +390,11 @@ export class WebGlContextWrapper {
405
390
  * @param dst
406
391
  */
407
392
  blendFunc(src, dst) {
408
- const { gl, blendSrcRgb, blendDstRgb, blendSrcAlpha, blendDstAlpha } = this;
409
- if (src !== blendSrcRgb ||
410
- dst !== blendDstRgb ||
411
- src !== blendSrcAlpha ||
412
- dst !== blendDstAlpha) {
413
- gl.blendFunc(src, dst);
393
+ if (src !== this.blendSrcRgb ||
394
+ dst !== this.blendDstRgb ||
395
+ src !== this.blendSrcAlpha ||
396
+ dst !== this.blendDstAlpha) {
397
+ this.gl.blendFunc(src, dst);
414
398
  this.blendSrcRgb = src;
415
399
  this.blendDstRgb = dst;
416
400
  this.blendSrcAlpha = src;
@@ -425,8 +409,7 @@ export class WebGlContextWrapper {
425
409
  * @returns
426
410
  */
427
411
  createBuffer() {
428
- const { gl } = this;
429
- return gl.createBuffer();
412
+ return this.gl.createBuffer();
430
413
  }
431
414
  /**
432
415
  * ```
@@ -435,8 +418,7 @@ export class WebGlContextWrapper {
435
418
  * @returns
436
419
  */
437
420
  createFramebuffer() {
438
- const { gl } = this;
439
- return gl.createFramebuffer();
421
+ return this.gl.createFramebuffer();
440
422
  }
441
423
  /**
442
424
  * ```
@@ -446,8 +428,7 @@ export class WebGlContextWrapper {
446
428
  * @param framebuffer
447
429
  */
448
430
  bindFramebuffer(framebuffer) {
449
- const { gl } = this;
450
- gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
431
+ this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, framebuffer);
451
432
  }
452
433
  /**
453
434
  * ```
@@ -457,7 +438,7 @@ export class WebGlContextWrapper {
457
438
  * **WebGL Difference**: Bind target is always `gl.FRAMEBUFFER` and textarget is always `gl.TEXTURE_2D`
458
439
  */
459
440
  framebufferTexture2D(attachment, texture, level) {
460
- const { gl } = this;
441
+ const gl = this.gl;
461
442
  gl.framebufferTexture2D(gl.FRAMEBUFFER, attachment, gl.TEXTURE_2D, texture, level);
462
443
  }
463
444
  /**
@@ -469,8 +450,7 @@ export class WebGlContextWrapper {
469
450
  * **WebGL Difference**: Clear mask is always `gl.COLOR_BUFFER_BIT`
470
451
  */
471
452
  clear() {
472
- const { gl } = this;
473
- gl.clear(gl.COLOR_BUFFER_BIT);
453
+ this.gl.clear(this.gl.COLOR_BUFFER_BIT);
474
454
  }
475
455
  /**
476
456
  * ```
@@ -486,12 +466,11 @@ export class WebGlContextWrapper {
486
466
  * @param usage
487
467
  */
488
468
  arrayBufferData(buffer, data, usage) {
489
- const { gl, boundArrayBuffer } = this;
490
- if (boundArrayBuffer !== buffer) {
491
- gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
469
+ if (this.boundArrayBuffer !== buffer) {
470
+ this.gl.bindBuffer(this.gl.ARRAY_BUFFER, buffer);
492
471
  this.boundArrayBuffer = buffer;
493
472
  }
494
- gl.bufferData(gl.ARRAY_BUFFER, data, usage);
473
+ this.gl.bufferData(this.gl.ARRAY_BUFFER, data, usage);
495
474
  }
496
475
  /**
497
476
  * ```
@@ -506,12 +485,11 @@ export class WebGlContextWrapper {
506
485
  * @param usage
507
486
  */
508
487
  elementArrayBufferData(buffer, data, usage) {
509
- const { gl, boundElementArrayBuffer } = this;
510
- if (boundElementArrayBuffer !== buffer) {
511
- gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer);
488
+ if (this.boundElementArrayBuffer !== buffer) {
489
+ this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, buffer);
512
490
  this.boundElementArrayBuffer = buffer;
513
491
  }
514
- gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, data, usage);
492
+ this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, data, usage);
515
493
  }
516
494
  /**
517
495
  * ```
@@ -531,12 +509,42 @@ export class WebGlContextWrapper {
531
509
  * @param offset
532
510
  */
533
511
  vertexAttribPointer(buffer, index, size, type, normalized, stride, offset) {
534
- const { gl, boundArrayBuffer } = this;
535
- if (boundArrayBuffer !== buffer) {
536
- gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
512
+ if (this.boundArrayBuffer !== buffer) {
513
+ this.gl.bindBuffer(this.gl.ARRAY_BUFFER, buffer);
537
514
  this.boundArrayBuffer = buffer;
538
515
  }
539
- gl.vertexAttribPointer(index, size, type, normalized, stride, offset);
516
+ this.gl.vertexAttribPointer(index, size, type, normalized, stride, offset);
517
+ }
518
+ /**
519
+ * Returns object with Attribute names as key and numbers as location values
520
+ *
521
+ * @param program
522
+ * @returns object with numbers
523
+ */
524
+ getUniformLocations(program) {
525
+ const gl = this.gl;
526
+ const length = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);
527
+ const result = {};
528
+ for (let i = 0; i < length; i++) {
529
+ const { name } = gl.getActiveUniform(program, i);
530
+ result[name] = i;
531
+ }
532
+ return result;
533
+ }
534
+ /**
535
+ * Returns object with Attribute names as key and numbers as location values
536
+ * @param program
537
+ * @returns object with numbers
538
+ */
539
+ getAttributeLocations(program) {
540
+ const gl = this.gl;
541
+ const length = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);
542
+ const result = {};
543
+ for (let i = 0; i < length; i++) {
544
+ const { name } = gl.getActiveAttrib(program, i);
545
+ result[name] = i;
546
+ }
547
+ return result;
540
548
  }
541
549
  /**
542
550
  * ```
@@ -547,11 +555,10 @@ export class WebGlContextWrapper {
547
555
  * @returns
548
556
  */
549
557
  useProgram(program) {
550
- const { gl, curProgram } = this;
551
- if (curProgram === program) {
558
+ if (this.curProgram === program) {
552
559
  return;
553
560
  }
554
- gl.useProgram(program);
561
+ this.gl.useProgram(program);
555
562
  this.curProgram = program;
556
563
  }
557
564
  /**
@@ -561,8 +568,7 @@ export class WebGlContextWrapper {
561
568
  * @param v0 - The value to set.
562
569
  */
563
570
  uniform1f(location, v0) {
564
- const { gl } = this;
565
- gl.uniform1f(location, v0);
571
+ this.gl.uniform1f(this.gl.getUniformLocation(this.curProgram, location), v0);
566
572
  }
567
573
  /**
568
574
  * Sets the value of a float array uniform variable.
@@ -571,8 +577,7 @@ export class WebGlContextWrapper {
571
577
  * @param value - The array of values to set.
572
578
  */
573
579
  uniform1fv(location, value) {
574
- const { gl } = this;
575
- gl.uniform1fv(location, value);
580
+ this.gl.uniform1fv(this.gl.getUniformLocation(this.curProgram, location), value);
576
581
  }
577
582
  /**
578
583
  * Sets the value of a single integer uniform variable.
@@ -581,8 +586,7 @@ export class WebGlContextWrapper {
581
586
  * @param v0 - The value to set.
582
587
  */
583
588
  uniform1i(location, v0) {
584
- const { gl } = this;
585
- gl.uniform1i(location, v0);
589
+ this.gl.uniform1i(this.gl.getUniformLocation(this.curProgram, location), v0);
586
590
  }
587
591
  /**
588
592
  * Sets the value of an integer array uniform variable.
@@ -591,8 +595,7 @@ export class WebGlContextWrapper {
591
595
  * @param value - The array of values to set.
592
596
  */
593
597
  uniform1iv(location, value) {
594
- const { gl } = this;
595
- gl.uniform1iv(location, value);
598
+ this.gl.uniform1iv(this.gl.getUniformLocation(this.curProgram, location), value);
596
599
  }
597
600
  /**
598
601
  * Sets the value of a vec2 uniform variable.
@@ -602,8 +605,16 @@ export class WebGlContextWrapper {
602
605
  * @param v1 - The second component of the vector.
603
606
  */
604
607
  uniform2f(location, v0, v1) {
605
- const { gl } = this;
606
- gl.uniform2f(location, v0, v1);
608
+ this.gl.uniform2f(this.gl.getUniformLocation(this.curProgram, location), v0, v1);
609
+ }
610
+ /**
611
+ * Sets the value of a vec3 uniform variable.
612
+ *
613
+ * @param location - The location of the uniform variable.
614
+ * @param v - array of 4 numbers.
615
+ */
616
+ uniform2fa(location, value) {
617
+ this.gl.uniform2f(this.gl.getUniformLocation(this.curProgram, location), value[0], value[1]);
607
618
  }
608
619
  /**
609
620
  * Sets the value of a vec2 array uniform variable.
@@ -612,8 +623,7 @@ export class WebGlContextWrapper {
612
623
  * @param value - The array of vec2 values to set.
613
624
  */
614
625
  uniform2fv(location, value) {
615
- const { gl } = this;
616
- gl.uniform2fv(location, value);
626
+ this.gl.uniform2fv(this.gl.getUniformLocation(this.curProgram, location), value);
617
627
  }
618
628
  /**
619
629
  * Sets the value of a ivec2 uniform variable.
@@ -623,8 +633,7 @@ export class WebGlContextWrapper {
623
633
  * @param v1 - The second component of the vector.
624
634
  */
625
635
  uniform2i(location, v0, v1) {
626
- const { gl } = this;
627
- gl.uniform2i(location, v0, v1);
636
+ this.gl.uniform2i(this.gl.getUniformLocation(this.curProgram, location), v0, v1);
628
637
  }
629
638
  /**
630
639
  * Sets the value of an ivec2 array uniform variable.
@@ -633,8 +642,7 @@ export class WebGlContextWrapper {
633
642
  * @param value - The array of ivec2 values to set.
634
643
  */
635
644
  uniform2iv(location, value) {
636
- const { gl } = this;
637
- gl.uniform2iv(location, value);
645
+ this.gl.uniform2iv(this.gl.getUniformLocation(this.curProgram, location), value);
638
646
  }
639
647
  /**
640
648
  * Sets the value of a vec3 uniform variable.
@@ -645,8 +653,16 @@ export class WebGlContextWrapper {
645
653
  * @param v2 - The third component of the vector.
646
654
  */
647
655
  uniform3f(location, v0, v1, v2) {
648
- const { gl } = this;
649
- gl.uniform3f(location, v0, v1, v2);
656
+ this.gl.uniform3f(this.gl.getUniformLocation(this.curProgram, location), v0, v1, v2);
657
+ }
658
+ /**
659
+ * Sets the value of a vec3 uniform variable.
660
+ *
661
+ * @param location - The location of the uniform variable.
662
+ * @param v - array of 4 numbers.
663
+ */
664
+ uniform3fa(location, value) {
665
+ this.gl.uniform3f(this.gl.getUniformLocation(this.curProgram, location), value[0], value[1], value[2]);
650
666
  }
651
667
  /**
652
668
  * Sets the value of a vec3 array uniform variable.
@@ -655,8 +671,7 @@ export class WebGlContextWrapper {
655
671
  * @param value - The array of vec3 values to set.
656
672
  */
657
673
  uniform3fv(location, value) {
658
- const { gl } = this;
659
- gl.uniform3fv(location, value);
674
+ this.gl.uniform3fv(this.gl.getUniformLocation(this.curProgram, location), value);
660
675
  }
661
676
  /**
662
677
  * Sets the value of a ivec3 uniform variable.
@@ -667,8 +682,7 @@ export class WebGlContextWrapper {
667
682
  * @param v2 - The third component of the vector.
668
683
  */
669
684
  uniform3i(location, v0, v1, v2) {
670
- const { gl } = this;
671
- gl.uniform3i(location, v0, v1, v2);
685
+ this.gl.uniform3i(this.gl.getUniformLocation(this.curProgram, location), v0, v1, v2);
672
686
  }
673
687
  /**
674
688
  * Sets the value of an ivec3 array uniform variable.
@@ -677,8 +691,7 @@ export class WebGlContextWrapper {
677
691
  * @param value - The array of ivec3 values to set.
678
692
  */
679
693
  uniform3iv(location, value) {
680
- const { gl } = this;
681
- gl.uniform3iv(location, value);
694
+ this.gl.uniform3iv(this.gl.getUniformLocation(this.curProgram, location), value);
682
695
  }
683
696
  /**
684
697
  * Sets the value of a vec4 uniform variable.
@@ -690,8 +703,16 @@ export class WebGlContextWrapper {
690
703
  * @param v3 - The fourth component of the vector.
691
704
  */
692
705
  uniform4f(location, v0, v1, v2, v3) {
693
- const { gl } = this;
694
- gl.uniform4f(location, v0, v1, v2, v3);
706
+ this.gl.uniform4f(this.gl.getUniformLocation(this.curProgram, location), v0, v1, v2, v3);
707
+ }
708
+ /**
709
+ * Sets the value of a vec4 uniform variable.
710
+ *
711
+ * @param location - The location of the uniform variable.
712
+ * @param v - array of 4 numbers.
713
+ */
714
+ uniform4fa(location, value) {
715
+ this.gl.uniform4f(this.gl.getUniformLocation(this.curProgram, location), value[0], value[1], value[2], value[3]);
695
716
  }
696
717
  /**
697
718
  * Sets the value of a vec4 array uniform variable.
@@ -700,8 +721,7 @@ export class WebGlContextWrapper {
700
721
  * @param value - The array of vec4 values to set.
701
722
  */
702
723
  uniform4fv(location, value) {
703
- const { gl } = this;
704
- gl.uniform4fv(location, value);
724
+ this.gl.uniform4fv(this.gl.getUniformLocation(this.curProgram, location), value);
705
725
  }
706
726
  /**
707
727
  * Sets the value of a ivec4 uniform variable.
@@ -713,8 +733,7 @@ export class WebGlContextWrapper {
713
733
  * @param v3 - The fourth component of the vector.
714
734
  */
715
735
  uniform4i(location, v0, v1, v2, v3) {
716
- const { gl } = this;
717
- gl.uniform4i(location, v0, v1, v2, v3);
736
+ this.gl.uniform4i(this.gl.getUniformLocation(this.curProgram, location), v0, v1, v2, v3);
718
737
  }
719
738
  /**
720
739
  * Sets the value of an ivec4 array uniform variable.
@@ -723,8 +742,7 @@ export class WebGlContextWrapper {
723
742
  * @param value - The array of ivec4 values to set.
724
743
  */
725
744
  uniform4iv(location, value) {
726
- const { gl } = this;
727
- gl.uniform4iv(location, value);
745
+ this.gl.uniform4iv(this.gl.getUniformLocation(this.curProgram, location), value);
728
746
  }
729
747
  /**
730
748
  * Sets the value of a mat2 uniform variable.
@@ -734,8 +752,7 @@ export class WebGlContextWrapper {
734
752
  * @param value - The array of mat2 values to set.
735
753
  */
736
754
  uniformMatrix2fv(location, value) {
737
- const { gl } = this;
738
- gl.uniformMatrix2fv(location, false, value);
755
+ this.gl.uniformMatrix2fv(this.gl.getUniformLocation(this.curProgram, location), false, value);
739
756
  }
740
757
  /**
741
758
  * Sets the value of a mat2 uniform variable.
@@ -743,8 +760,7 @@ export class WebGlContextWrapper {
743
760
  * @param value - The array of mat2 values to set.
744
761
  */
745
762
  uniformMatrix3fv(location, value) {
746
- const { gl } = this;
747
- gl.uniformMatrix3fv(location, false, value);
763
+ this.gl.uniformMatrix3fv(this.gl.getUniformLocation(this.curProgram, location), false, value);
748
764
  }
749
765
  /**
750
766
  * Sets the value of a mat4 uniform variable.
@@ -752,8 +768,7 @@ export class WebGlContextWrapper {
752
768
  * @param value - The array of mat4 values to set.
753
769
  */
754
770
  uniformMatrix4fv(location, value) {
755
- const { gl } = this;
756
- gl.uniformMatrix4fv(location, false, value);
771
+ this.gl.uniformMatrix4fv(this.gl.getUniformLocation(this.curProgram, location), false, value);
757
772
  }
758
773
  /**
759
774
  * ```
@@ -764,8 +779,7 @@ export class WebGlContextWrapper {
764
779
  * @returns
765
780
  */
766
781
  getParameter(pname) {
767
- const { gl } = this;
768
- return gl.getParameter(pname);
782
+ return this.gl.getParameter(pname);
769
783
  }
770
784
  /**
771
785
  * ```
@@ -778,8 +792,7 @@ export class WebGlContextWrapper {
778
792
  * @param offset
779
793
  */
780
794
  drawElements(mode, count, type, offset) {
781
- const { gl } = this;
782
- gl.drawElements(mode, count, type, offset);
795
+ this.gl.drawElements(mode, count, type, offset);
783
796
  }
784
797
  /**
785
798
  * ```
@@ -790,8 +803,7 @@ export class WebGlContextWrapper {
790
803
  * @returns
791
804
  */
792
805
  getExtension(name) {
793
- const { gl } = this;
794
- return gl.getExtension(name);
806
+ return this.gl.getExtension(name);
795
807
  }
796
808
  /**
797
809
  * ```
@@ -801,8 +813,7 @@ export class WebGlContextWrapper {
801
813
  * @returns
802
814
  */
803
815
  getError() {
804
- const { gl } = this;
805
- return gl.getError();
816
+ return this.gl.getError();
806
817
  }
807
818
  /**
808
819
  * ```
@@ -812,9 +823,10 @@ export class WebGlContextWrapper {
812
823
  * @returns
813
824
  */
814
825
  createVertexArray() {
815
- const { gl } = this;
816
- assertTruthy(gl instanceof WebGL2RenderingContext);
817
- return gl.createVertexArray();
826
+ if (this.gl instanceof WebGL2RenderingContext) {
827
+ return this.gl.createVertexArray();
828
+ }
829
+ return undefined;
818
830
  }
819
831
  /**
820
832
  * ```
@@ -824,9 +836,9 @@ export class WebGlContextWrapper {
824
836
  * @param vertexArray
825
837
  */
826
838
  bindVertexArray(vertexArray) {
827
- const { gl } = this;
828
- assertTruthy(gl instanceof WebGL2RenderingContext);
829
- gl.bindVertexArray(vertexArray);
839
+ if (this.gl instanceof WebGL2RenderingContext) {
840
+ this.gl.bindVertexArray(vertexArray);
841
+ }
830
842
  }
831
843
  /**
832
844
  * ```
@@ -838,8 +850,7 @@ export class WebGlContextWrapper {
838
850
  * @returns
839
851
  */
840
852
  getAttribLocation(program, name) {
841
- const { gl } = this;
842
- return gl.getAttribLocation(program, name);
853
+ return this.gl.getAttribLocation(program, name);
843
854
  }
844
855
  /**
845
856
  * ```
@@ -851,8 +862,7 @@ export class WebGlContextWrapper {
851
862
  * @returns
852
863
  */
853
864
  getUniformLocation(program, name) {
854
- const { gl } = this;
855
- return gl.getUniformLocation(program, name);
865
+ return this.gl.getUniformLocation(program, name);
856
866
  }
857
867
  /**
858
868
  * ```
@@ -862,8 +872,7 @@ export class WebGlContextWrapper {
862
872
  * @param index
863
873
  */
864
874
  enableVertexAttribArray(index) {
865
- const { gl } = this;
866
- gl.enableVertexAttribArray(index);
875
+ this.gl.enableVertexAttribArray(index);
867
876
  }
868
877
  /**
869
878
  * ```
@@ -873,8 +882,7 @@ export class WebGlContextWrapper {
873
882
  * @param index
874
883
  */
875
884
  disableVertexAttribArray(index) {
876
- const { gl } = this;
877
- gl.disableVertexAttribArray(index);
885
+ this.gl.disableVertexAttribArray(index);
878
886
  }
879
887
  /**
880
888
  * ```
@@ -885,8 +893,7 @@ export class WebGlContextWrapper {
885
893
  * @returns
886
894
  */
887
895
  createShader(type) {
888
- const { gl } = this;
889
- return gl.createShader(type);
896
+ return this.gl.createShader(type);
890
897
  }
891
898
  /**
892
899
  * ```
@@ -897,8 +904,7 @@ export class WebGlContextWrapper {
897
904
  * @returns
898
905
  */
899
906
  compileShader(shader) {
900
- const { gl } = this;
901
- gl.compileShader(shader);
907
+ this.gl.compileShader(shader);
902
908
  }
903
909
  /**
904
910
  * ```
@@ -909,8 +915,7 @@ export class WebGlContextWrapper {
909
915
  * @param shader
910
916
  */
911
917
  attachShader(program, shader) {
912
- const { gl } = this;
913
- gl.attachShader(program, shader);
918
+ this.gl.attachShader(program, shader);
914
919
  }
915
920
  /**
916
921
  * ```
@@ -920,8 +925,7 @@ export class WebGlContextWrapper {
920
925
  * @param program
921
926
  */
922
927
  linkProgram(program) {
923
- const { gl } = this;
924
- gl.linkProgram(program);
928
+ this.gl.linkProgram(program);
925
929
  }
926
930
  /**
927
931
  * ```
@@ -931,8 +935,7 @@ export class WebGlContextWrapper {
931
935
  * @param shader
932
936
  */
933
937
  deleteProgram(shader) {
934
- const { gl } = this;
935
- gl.deleteProgram(shader);
938
+ this.gl.deleteProgram(shader);
936
939
  }
937
940
  /**
938
941
  * ```
@@ -943,8 +946,7 @@ export class WebGlContextWrapper {
943
946
  * @param pname
944
947
  */
945
948
  getShaderParameter(shader, pname) {
946
- const { gl } = this;
947
- return gl.getShaderParameter(shader, pname);
949
+ return this.gl.getShaderParameter(shader, pname);
948
950
  }
949
951
  /**
950
952
  * ```
@@ -954,8 +956,7 @@ export class WebGlContextWrapper {
954
956
  * @param shader
955
957
  */
956
958
  getShaderInfoLog(shader) {
957
- const { gl } = this;
958
- return gl.getShaderInfoLog(shader);
959
+ return this.gl.getShaderInfoLog(shader);
959
960
  }
960
961
  /**
961
962
  * ```
@@ -965,8 +966,7 @@ export class WebGlContextWrapper {
965
966
  * @returns
966
967
  */
967
968
  createProgram() {
968
- const { gl } = this;
969
- return gl.createProgram();
969
+ return this.gl.createProgram();
970
970
  }
971
971
  /**
972
972
  * ```
@@ -978,8 +978,7 @@ export class WebGlContextWrapper {
978
978
  * @returns
979
979
  */
980
980
  getProgramParameter(program, pname) {
981
- const { gl } = this;
982
- return gl.getProgramParameter(program, pname);
981
+ return this.gl.getProgramParameter(program, pname);
983
982
  }
984
983
  /**
985
984
  * ```
@@ -990,8 +989,7 @@ export class WebGlContextWrapper {
990
989
  * @returns
991
990
  */
992
991
  getProgramInfoLog(program) {
993
- const { gl } = this;
994
- return gl.getProgramInfoLog(program);
992
+ return this.gl.getProgramInfoLog(program);
995
993
  }
996
994
  /**
997
995
  * ```
@@ -1002,8 +1000,7 @@ export class WebGlContextWrapper {
1002
1000
  * @param source
1003
1001
  */
1004
1002
  shaderSource(shader, source) {
1005
- const { gl } = this;
1006
- gl.shaderSource(shader, source);
1003
+ this.gl.shaderSource(shader, source);
1007
1004
  }
1008
1005
  /**
1009
1006
  * ```
@@ -1013,8 +1010,7 @@ export class WebGlContextWrapper {
1013
1010
  * @param shader
1014
1011
  */
1015
1012
  deleteShader(shader) {
1016
- const { gl } = this;
1017
- gl.deleteShader(shader);
1013
+ this.gl.deleteShader(shader);
1018
1014
  }
1019
1015
  }
1020
1016
  /**