@lightningjs/renderer 2.12.1 → 3.0.0-beta1

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 (323) 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 +19 -5
  17. package/dist/src/core/CoreNode.js +117 -24
  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/CoreTextNode.js +1 -1
  23. package/dist/src/core/CoreTextNode.js.map +1 -1
  24. package/dist/src/core/CoreTextureManager.d.ts +13 -7
  25. package/dist/src/core/CoreTextureManager.js +92 -105
  26. package/dist/src/core/CoreTextureManager.js.map +1 -1
  27. package/dist/src/core/Stage.d.ts +15 -16
  28. package/dist/src/core/Stage.js +45 -32
  29. package/dist/src/core/Stage.js.map +1 -1
  30. package/dist/src/core/TextureMemoryManager.d.ts +16 -6
  31. package/dist/src/core/TextureMemoryManager.js +75 -17
  32. package/dist/src/core/TextureMemoryManager.js.map +1 -1
  33. package/dist/src/core/animations/CoreAnimation.d.ts +0 -1
  34. package/dist/src/core/animations/CoreAnimation.js +6 -52
  35. package/dist/src/core/animations/CoreAnimation.js.map +1 -1
  36. package/dist/src/core/lib/ImageWorker.d.ts +1 -1
  37. package/dist/src/core/lib/ImageWorker.js +13 -11
  38. package/dist/src/core/lib/ImageWorker.js.map +1 -1
  39. package/dist/src/core/lib/WebGlContextWrapper.d.ts +67 -54
  40. package/dist/src/core/lib/WebGlContextWrapper.js +126 -157
  41. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
  42. package/dist/src/core/lib/textureCompression.js +0 -1
  43. package/dist/src/core/lib/textureCompression.js.map +1 -1
  44. package/dist/src/core/lib/utils.d.ts +4 -0
  45. package/dist/src/core/lib/utils.js +26 -0
  46. package/dist/src/core/lib/utils.js.map +1 -1
  47. package/dist/src/core/lib/validateImageBitmap.d.ts +6 -0
  48. package/dist/src/core/lib/validateImageBitmap.js +68 -0
  49. package/dist/src/core/lib/validateImageBitmap.js.map +1 -0
  50. package/dist/src/core/platform.js +4 -3
  51. package/dist/src/core/platform.js.map +1 -1
  52. package/dist/src/core/renderers/CoreRenderer.d.ts +11 -21
  53. package/dist/src/core/renderers/CoreRenderer.js +0 -6
  54. package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
  55. package/dist/src/core/renderers/CoreShaderNode.d.ts +59 -0
  56. package/dist/src/core/renderers/CoreShaderNode.js +107 -0
  57. package/dist/src/core/renderers/CoreShaderNode.js.map +1 -0
  58. package/dist/src/core/renderers/CoreShaderProgram.d.ts +4 -0
  59. package/{src/core/renderers/CoreShader.ts → dist/src/core/renderers/CoreShaderProgram.js} +2 -23
  60. package/dist/src/core/renderers/CoreShaderProgram.js.map +1 -0
  61. package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +36 -0
  62. package/dist/src/core/renderers/canvas/CanvasRenderer.js +212 -0
  63. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -0
  64. package/dist/src/core/renderers/canvas/CanvasShaderNode.d.ts +21 -0
  65. package/dist/src/core/renderers/canvas/CanvasShaderNode.js +60 -0
  66. package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -0
  67. package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +16 -0
  68. package/dist/src/core/renderers/canvas/CanvasTexture.js +123 -0
  69. package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -0
  70. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +0 -13
  71. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +192 -113
  72. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -1
  73. package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +2 -0
  74. package/dist/src/core/renderers/canvas/internal/ColorUtils.js +14 -0
  75. package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -1
  76. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +7 -12
  77. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
  78. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +12 -0
  79. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +55 -0
  80. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -0
  81. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +9 -0
  82. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +38 -0
  83. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -0
  84. package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +57 -0
  85. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +227 -0
  86. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -0
  87. package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +36 -0
  88. package/dist/src/core/renderers/webgl/WebGlRenderOp.js +107 -0
  89. package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -0
  90. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +134 -0
  91. package/dist/src/core/renderers/webgl/WebGlRenderer.js +546 -0
  92. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -0
  93. package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +221 -0
  94. package/dist/src/core/renderers/webgl/WebGlShaderNode.js +334 -0
  95. package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -0
  96. package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +35 -0
  97. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +195 -0
  98. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -0
  99. package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +32 -5
  100. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +50 -0
  101. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -1
  102. package/dist/src/core/shaders/canvas/Border.d.ts +9 -0
  103. package/dist/src/core/shaders/canvas/Border.js +57 -0
  104. package/dist/src/core/shaders/canvas/Border.js.map +1 -0
  105. package/dist/src/core/shaders/canvas/HolePunch.d.ts +7 -0
  106. package/dist/src/core/shaders/canvas/HolePunch.js +38 -0
  107. package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -0
  108. package/dist/src/core/shaders/canvas/LinearGradient.d.ts +10 -0
  109. package/dist/src/core/shaders/canvas/LinearGradient.js +46 -0
  110. package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -0
  111. package/dist/src/core/shaders/canvas/RadialGradient.d.ts +11 -0
  112. package/dist/src/core/shaders/canvas/RadialGradient.js +68 -0
  113. package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -0
  114. package/dist/src/core/shaders/canvas/Rounded.d.ts +7 -0
  115. package/dist/src/core/shaders/canvas/Rounded.js +33 -0
  116. package/dist/src/core/shaders/canvas/Rounded.js.map +1 -0
  117. package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +7 -0
  118. package/dist/src/core/shaders/canvas/RoundedWithBorder.js +35 -0
  119. package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -0
  120. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +8 -0
  121. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +39 -0
  122. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -0
  123. package/dist/src/core/shaders/canvas/RoundedWithShadow.d.ts +7 -0
  124. package/dist/src/core/shaders/canvas/RoundedWithShadow.js +38 -0
  125. package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -0
  126. package/dist/src/core/shaders/canvas/Shadow.d.ts +8 -0
  127. package/dist/src/core/shaders/canvas/Shadow.js +31 -0
  128. package/dist/src/core/shaders/canvas/Shadow.js.map +1 -0
  129. package/dist/src/core/shaders/canvas/utils/render.d.ts +5 -0
  130. package/dist/src/core/shaders/canvas/utils/render.js +84 -0
  131. package/dist/src/core/shaders/canvas/utils/render.js.map +1 -0
  132. package/dist/src/core/shaders/templates/BorderTemplate.d.ts +37 -0
  133. package/dist/src/core/shaders/templates/BorderTemplate.js +73 -0
  134. package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -0
  135. package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +46 -0
  136. package/dist/src/core/shaders/templates/HolePunchTemplate.js +35 -0
  137. package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -0
  138. package/dist/src/core/shaders/templates/LinearGradientTemplate.d.ts +23 -0
  139. package/dist/src/core/shaders/templates/LinearGradientTemplate.js +47 -0
  140. package/dist/src/core/shaders/templates/LinearGradientTemplate.js.map +1 -0
  141. package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +31 -0
  142. package/dist/src/core/shaders/templates/RadialGradientTemplate.js +49 -0
  143. package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -0
  144. package/dist/src/core/shaders/templates/RoundedTemplate.d.ts +29 -0
  145. package/dist/src/core/shaders/templates/RoundedTemplate.js +67 -0
  146. package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -0
  147. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +7 -0
  148. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js +24 -0
  149. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js.map +1 -0
  150. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +6 -0
  151. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js +23 -0
  152. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js.map +1 -0
  153. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +6 -0
  154. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js +23 -0
  155. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js.map +1 -0
  156. package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +34 -0
  157. package/dist/src/core/shaders/templates/ShadowTemplate.js +66 -0
  158. package/dist/src/core/shaders/templates/ShadowTemplate.js.map +1 -0
  159. package/dist/src/core/shaders/templates/shaderUtils.d.ts +5 -0
  160. package/dist/src/core/shaders/templates/shaderUtils.js +41 -0
  161. package/dist/src/core/shaders/templates/shaderUtils.js.map +1 -0
  162. package/dist/src/core/shaders/webgl/Border.d.ts +3 -0
  163. package/dist/src/core/shaders/webgl/Border.js +87 -0
  164. package/dist/src/core/shaders/webgl/Border.js.map +1 -0
  165. package/dist/src/core/shaders/webgl/Default.d.ts +2 -0
  166. package/dist/src/core/shaders/webgl/Default.js +86 -0
  167. package/dist/src/core/shaders/webgl/Default.js.map +1 -0
  168. package/dist/src/core/shaders/webgl/DefaultBatched.d.ts +2 -0
  169. package/dist/src/core/shaders/webgl/DefaultBatched.js +104 -0
  170. package/dist/src/core/shaders/webgl/DefaultBatched.js.map +1 -0
  171. package/dist/src/core/shaders/webgl/HolePunch.d.ts +3 -0
  172. package/dist/src/core/shaders/webgl/HolePunch.js +64 -0
  173. package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -0
  174. package/dist/src/core/shaders/webgl/LinearGradient.d.ts +3 -0
  175. package/dist/src/core/shaders/webgl/LinearGradient.js +75 -0
  176. package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -0
  177. package/dist/src/core/shaders/webgl/RadialGradient.d.ts +3 -0
  178. package/dist/src/core/shaders/webgl/RadialGradient.js +73 -0
  179. package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -0
  180. package/dist/src/core/shaders/webgl/Rounded.d.ts +7 -0
  181. package/dist/src/core/shaders/webgl/Rounded.js +86 -0
  182. package/dist/src/core/shaders/webgl/Rounded.js.map +1 -0
  183. package/dist/src/core/shaders/webgl/RoundedWithBorder.d.ts +3 -0
  184. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +97 -0
  185. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -0
  186. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.d.ts +3 -0
  187. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +112 -0
  188. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -0
  189. package/dist/src/core/shaders/webgl/RoundedWithShadow.d.ts +3 -0
  190. package/dist/src/core/shaders/webgl/RoundedWithShadow.js +84 -0
  191. package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -0
  192. package/dist/src/core/shaders/webgl/SdfShader.d.ts +32 -0
  193. package/dist/src/core/shaders/webgl/SdfShader.js +116 -0
  194. package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -0
  195. package/dist/src/core/shaders/webgl/Shadow.d.ts +3 -0
  196. package/dist/src/core/shaders/webgl/Shadow.js +110 -0
  197. package/dist/src/core/shaders/webgl/Shadow.js.map +1 -0
  198. package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -1
  199. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +2 -2
  200. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -1
  201. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +6 -0
  202. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
  203. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +2 -3
  204. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +34 -30
  205. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  206. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +1 -4
  207. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
  208. package/dist/src/core/textures/ImageTexture.js +10 -16
  209. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  210. package/dist/src/core/textures/Texture.d.ts +1 -1
  211. package/dist/src/main-api/INode.d.ts +9 -9
  212. package/dist/src/main-api/Inspector.js +16 -2
  213. package/dist/src/main-api/Inspector.js.map +1 -1
  214. package/dist/src/main-api/Renderer.d.ts +35 -92
  215. package/dist/src/main-api/Renderer.js +11 -57
  216. package/dist/src/main-api/Renderer.js.map +1 -1
  217. package/dist/src/utils.d.ts +6 -0
  218. package/dist/src/utils.js +18 -0
  219. package/dist/src/utils.js.map +1 -1
  220. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  221. package/exports/canvas-shaders.ts +28 -0
  222. package/exports/canvas.ts +7 -1
  223. package/exports/index.ts +17 -17
  224. package/exports/webgl-shaders.ts +28 -0
  225. package/exports/webgl.ts +13 -1
  226. package/package.json +3 -1
  227. package/src/core/CoreNode.test.ts +157 -153
  228. package/src/core/CoreNode.ts +173 -38
  229. package/src/core/CoreShaderManager.ts +127 -226
  230. package/src/core/CoreTextNode.ts +1 -8
  231. package/src/core/CoreTextureManager.ts +127 -126
  232. package/src/core/Stage.ts +62 -44
  233. package/src/core/TextureMemoryManager.ts +108 -27
  234. package/src/core/animations/CoreAnimation.ts +8 -64
  235. package/src/core/lib/ImageWorker.ts +20 -12
  236. package/src/core/lib/WebGlContextWrapper.ts +228 -236
  237. package/src/core/lib/textureCompression.ts +3 -3
  238. package/src/core/lib/utils.ts +51 -0
  239. package/src/core/lib/validateImageBitmap.ts +76 -0
  240. package/src/core/platform.ts +6 -3
  241. package/src/core/renderers/CoreRenderer.ts +19 -27
  242. package/src/core/renderers/CoreShaderNode.ts +171 -0
  243. package/src/core/renderers/{canvas/shaders/UnsupportedShader.ts → CoreShaderProgram.ts} +3 -28
  244. package/src/core/renderers/canvas/CanvasRenderer.ts +299 -0
  245. package/src/core/renderers/canvas/CanvasShaderNode.ts +99 -0
  246. package/src/core/renderers/canvas/{CanvasCoreTexture.ts → CanvasTexture.ts} +1 -1
  247. package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +2 -13
  248. package/src/core/renderers/canvas/internal/ColorUtils.ts +16 -0
  249. package/src/core/renderers/webgl/{WebGlCoreCtxRenderTexture.ts → WebGlCtxRenderTexture.ts} +2 -2
  250. package/src/core/renderers/webgl/{WebGlCoreCtxSubTexture.ts → WebGlCtxSubTexture.ts} +2 -2
  251. package/src/core/renderers/webgl/{WebGlCoreCtxTexture.ts → WebGlCtxTexture.ts} +12 -14
  252. package/src/core/renderers/webgl/{WebGlCoreRenderOp.ts → WebGlRenderOp.ts} +56 -36
  253. package/src/core/renderers/webgl/{WebGlCoreRenderer.ts → WebGlRenderer.ts} +143 -243
  254. package/src/core/renderers/webgl/WebGlShaderNode.ts +433 -0
  255. package/src/core/renderers/webgl/WebGlShaderProgram.ts +310 -0
  256. package/src/core/renderers/webgl/internal/ShaderUtils.ts +143 -5
  257. package/src/core/shaders/canvas/Border.ts +78 -0
  258. package/src/core/shaders/canvas/HolePunch.ts +62 -0
  259. package/src/core/shaders/canvas/LinearGradient.ts +69 -0
  260. package/src/core/shaders/canvas/RadialGradient.ts +113 -0
  261. package/src/core/shaders/canvas/Rounded.ts +55 -0
  262. package/src/core/shaders/canvas/RoundedWithBorder.ts +68 -0
  263. package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +88 -0
  264. package/src/core/shaders/canvas/RoundedWithShadow.ts +69 -0
  265. package/src/core/shaders/canvas/Shadow.ts +52 -0
  266. package/src/core/shaders/canvas/utils/render.ts +151 -0
  267. package/src/core/shaders/templates/BorderTemplate.ts +115 -0
  268. package/src/core/shaders/templates/HolePunchTemplate.ts +82 -0
  269. package/src/core/shaders/templates/LinearGradientTemplate.ts +71 -0
  270. package/src/core/shaders/templates/RadialGradientTemplate.ts +81 -0
  271. package/src/core/shaders/templates/RoundedTemplate.ts +98 -0
  272. package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +38 -0
  273. package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +35 -0
  274. package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +35 -0
  275. package/src/core/shaders/templates/ShadowTemplate.ts +106 -0
  276. package/src/core/shaders/templates/shaderUtils.ts +47 -0
  277. package/src/core/shaders/webgl/Border.ts +96 -0
  278. package/src/core/shaders/webgl/Default.ts +89 -0
  279. package/src/core/shaders/webgl/DefaultBatched.ts +129 -0
  280. package/src/core/shaders/webgl/HolePunch.ts +78 -0
  281. package/src/core/shaders/webgl/LinearGradient.ts +81 -0
  282. package/src/core/shaders/webgl/RadialGradient.ts +84 -0
  283. package/src/core/shaders/webgl/Rounded.ts +117 -0
  284. package/src/core/shaders/webgl/RoundedWithBorder.ts +114 -0
  285. package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +133 -0
  286. package/src/core/shaders/webgl/RoundedWithShadow.ts +98 -0
  287. package/src/core/shaders/webgl/SdfShader.ts +137 -0
  288. package/src/core/shaders/webgl/Shadow.ts +115 -0
  289. package/src/core/text-rendering/TextTextureRendererUtils.ts +1 -1
  290. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +2 -2
  291. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +12 -5
  292. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +44 -56
  293. package/src/core/text-rendering/renderers/TextRenderer.ts +2 -9
  294. package/src/core/textures/ImageTexture.ts +11 -17
  295. package/src/core/textures/Texture.ts +1 -1
  296. package/src/main-api/INode.ts +11 -13
  297. package/src/main-api/Inspector.ts +19 -2
  298. package/src/main-api/Renderer.ts +59 -130
  299. package/src/utils.ts +19 -0
  300. package/src/core/renderers/canvas/CanvasCoreRenderer.ts +0 -375
  301. package/src/core/renderers/webgl/WebGlCoreShader.ts +0 -362
  302. package/src/core/renderers/webgl/shaders/DefaultShader.ts +0 -93
  303. package/src/core/renderers/webgl/shaders/DefaultShaderBatched.ts +0 -132
  304. package/src/core/renderers/webgl/shaders/DynamicShader.ts +0 -580
  305. package/src/core/renderers/webgl/shaders/RoundedRectangle.ts +0 -167
  306. package/src/core/renderers/webgl/shaders/SdfShader.ts +0 -204
  307. package/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.ts +0 -101
  308. package/src/core/renderers/webgl/shaders/effects/BorderEffect.ts +0 -87
  309. package/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.ts +0 -101
  310. package/src/core/renderers/webgl/shaders/effects/BorderRightEffect.ts +0 -101
  311. package/src/core/renderers/webgl/shaders/effects/BorderTopEffect.ts +0 -101
  312. package/src/core/renderers/webgl/shaders/effects/EffectUtils.ts +0 -159
  313. package/src/core/renderers/webgl/shaders/effects/FadeOutEffect.ts +0 -127
  314. package/src/core/renderers/webgl/shaders/effects/GlitchEffect.ts +0 -148
  315. package/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.ts +0 -67
  316. package/src/core/renderers/webgl/shaders/effects/HolePunchEffect.ts +0 -157
  317. package/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts +0 -171
  318. package/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts +0 -168
  319. package/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.ts +0 -187
  320. package/src/core/renderers/webgl/shaders/effects/RadiusEffect.ts +0 -110
  321. package/src/core/renderers/webgl/shaders/effects/ShaderEffect.ts +0 -196
  322. package/src/main-api/DynamicShaderController.ts +0 -104
  323. package/src/main-api/ShaderController.ts +0 -80
@@ -202,9 +202,8 @@ export class WebGlContextWrapper {
202
202
  * @param textureUnit
203
203
  */
204
204
  activeTexture(textureUnit: number) {
205
- const { gl } = this;
206
205
  if (this.activeTextureUnit !== textureUnit) {
207
- gl.activeTexture(textureUnit + gl.TEXTURE0);
206
+ this.gl.activeTexture(textureUnit + this.gl.TEXTURE0);
208
207
  this.activeTextureUnit = textureUnit;
209
208
  }
210
209
  }
@@ -219,19 +218,16 @@ export class WebGlContextWrapper {
219
218
  * @param texture
220
219
  */
221
220
  bindTexture(texture: WebGLTexture | null) {
222
- const { gl, activeTextureUnit, texture2dUnits } = this;
223
-
224
- if (texture2dUnits[activeTextureUnit] === texture) {
221
+ if (this.texture2dUnits[this.activeTextureUnit] === texture) {
225
222
  return;
226
223
  }
227
- texture2dUnits[activeTextureUnit] = texture;
224
+ this.texture2dUnits[this.activeTextureUnit] = texture;
228
225
 
229
- gl.bindTexture(this.gl.TEXTURE_2D, texture);
226
+ this.gl.bindTexture(this.gl.TEXTURE_2D, texture);
230
227
  }
231
228
 
232
229
  private _getActiveTexture(): WebGLTexture | null {
233
- const { activeTextureUnit, texture2dUnits } = this;
234
- return texture2dUnits[activeTextureUnit]!;
230
+ return this.texture2dUnits[this.activeTextureUnit]!;
235
231
  }
236
232
 
237
233
  /**
@@ -246,22 +242,20 @@ export class WebGlContextWrapper {
246
242
  * @returns
247
243
  */
248
244
  texParameteri(pname: number, param: number) {
249
- const { gl, texture2dParams } = this;
250
-
251
245
  const activeTexture = this._getActiveTexture();
252
246
  if (!activeTexture) {
253
247
  throw new Error('No active texture');
254
248
  }
255
- let textureParams = texture2dParams.get(activeTexture);
249
+ let textureParams = this.texture2dParams.get(activeTexture);
256
250
  if (!textureParams) {
257
251
  textureParams = {};
258
- texture2dParams.set(activeTexture, textureParams);
252
+ this.texture2dParams.set(activeTexture, textureParams);
259
253
  }
260
254
  if (textureParams[pname] === param) {
261
255
  return;
262
256
  }
263
257
  textureParams[pname] = param;
264
- gl.texParameteri(gl.TEXTURE_2D, pname, param);
258
+ this.gl.texParameteri(this.gl.TEXTURE_2D, pname, param);
265
259
  }
266
260
 
267
261
  /**
@@ -317,10 +311,9 @@ export class WebGlContextWrapper {
317
311
  type?: any,
318
312
  pixels?: any,
319
313
  ) {
320
- const { gl } = this;
321
314
  if (format) {
322
- gl.texImage2D(
323
- gl.TEXTURE_2D,
315
+ this.gl.texImage2D(
316
+ this.gl.TEXTURE_2D,
324
317
  level,
325
318
  internalFormat,
326
319
  widthOrFormat,
@@ -331,8 +324,8 @@ export class WebGlContextWrapper {
331
324
  pixels,
332
325
  );
333
326
  } else {
334
- gl.texImage2D(
335
- gl.TEXTURE_2D,
327
+ this.gl.texImage2D(
328
+ this.gl.TEXTURE_2D,
336
329
  level,
337
330
  internalFormat,
338
331
  widthOrFormat,
@@ -358,9 +351,8 @@ export class WebGlContextWrapper {
358
351
  border: GLint,
359
352
  data?: ArrayBufferView,
360
353
  ): void {
361
- const { gl } = this;
362
- gl.compressedTexImage2D(
363
- gl.TEXTURE_2D,
354
+ this.gl.compressedTexImage2D(
355
+ this.gl.TEXTURE_2D,
364
356
  level,
365
357
  internalformat,
366
358
  width,
@@ -378,8 +370,7 @@ export class WebGlContextWrapper {
378
370
  * @param param
379
371
  */
380
372
  pixelStorei(pname: GLenum, param: GLint | GLboolean) {
381
- const { gl } = this;
382
- gl.pixelStorei(pname, param);
373
+ this.gl.pixelStorei(pname, param);
383
374
  }
384
375
 
385
376
  /**
@@ -391,8 +382,7 @@ export class WebGlContextWrapper {
391
382
  * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D`
392
383
  */
393
384
  generateMipmap() {
394
- const { gl } = this;
395
- gl.generateMipmap(gl.TEXTURE_2D);
385
+ this.gl.generateMipmap(this.gl.TEXTURE_2D);
396
386
  }
397
387
 
398
388
  /**
@@ -403,8 +393,7 @@ export class WebGlContextWrapper {
403
393
  * @returns
404
394
  */
405
395
  createTexture() {
406
- const { gl } = this;
407
- return gl.createTexture();
396
+ return this.gl.createTexture();
408
397
  }
409
398
 
410
399
  /**
@@ -415,11 +404,10 @@ export class WebGlContextWrapper {
415
404
  * @param texture
416
405
  */
417
406
  deleteTexture(texture: WebGLTexture | null) {
418
- const { gl } = this;
419
407
  if (texture) {
420
408
  this.texture2dParams.delete(texture);
421
409
  }
422
- gl.deleteTexture(texture);
410
+ this.gl.deleteTexture(texture);
423
411
  }
424
412
 
425
413
  /**
@@ -438,8 +426,7 @@ export class WebGlContextWrapper {
438
426
  * ```
439
427
  */
440
428
  viewport(x: GLint, y: GLint, width: GLsizei, height: GLsizei) {
441
- const { gl } = this;
442
- gl.viewport(x, y, width, height);
429
+ this.gl.viewport(x, y, width, height);
443
430
  }
444
431
 
445
432
  /**
@@ -453,8 +440,7 @@ export class WebGlContextWrapper {
453
440
  * @param alpha
454
441
  */
455
442
  clearColor(red: GLclampf, green: GLclampf, blue: GLclampf, alpha: GLclampf) {
456
- const { gl } = this;
457
- gl.clearColor(red, green, blue, alpha);
443
+ this.gl.clearColor(red, green, blue, alpha);
458
444
  }
459
445
 
460
446
  /**
@@ -464,14 +450,13 @@ export class WebGlContextWrapper {
464
450
  * @param enable
465
451
  */
466
452
  setScissorTest(enable: boolean) {
467
- const { gl, scissorEnabled } = this;
468
- if (enable === scissorEnabled) {
453
+ if (enable === this.scissorEnabled) {
469
454
  return;
470
455
  }
471
456
  if (enable) {
472
- gl.enable(gl.SCISSOR_TEST);
457
+ this.gl.enable(this.gl.SCISSOR_TEST);
473
458
  } else {
474
- gl.disable(gl.SCISSOR_TEST);
459
+ this.gl.disable(this.gl.SCISSOR_TEST);
475
460
  }
476
461
  this.scissorEnabled = enable;
477
462
  }
@@ -487,14 +472,13 @@ export class WebGlContextWrapper {
487
472
  * @param height
488
473
  */
489
474
  scissor(x: GLint, y: GLint, width: GLsizei, height: GLsizei) {
490
- const { gl, scissorX, scissorY, scissorWidth, scissorHeight } = this;
491
475
  if (
492
- x !== scissorX ||
493
- y !== scissorY ||
494
- width !== scissorWidth ||
495
- height !== scissorHeight
476
+ x !== this.scissorX ||
477
+ y !== this.scissorY ||
478
+ width !== this.scissorWidth ||
479
+ height !== this.scissorHeight
496
480
  ) {
497
- gl.scissor(x, y, width, height);
481
+ this.gl.scissor(x, y, width, height);
498
482
  this.scissorX = x;
499
483
  this.scissorY = y;
500
484
  this.scissorWidth = width;
@@ -511,14 +495,13 @@ export class WebGlContextWrapper {
511
495
  * @returns
512
496
  */
513
497
  setBlend(blend: boolean) {
514
- const { gl, blendEnabled } = this;
515
- if (blend === blendEnabled) {
498
+ if (blend === this.blendEnabled) {
516
499
  return;
517
500
  }
518
501
  if (blend) {
519
- gl.enable(gl.BLEND);
502
+ this.gl.enable(this.gl.BLEND);
520
503
  } else {
521
- gl.disable(gl.BLEND);
504
+ this.gl.disable(this.gl.BLEND);
522
505
  }
523
506
  this.blendEnabled = blend;
524
507
  }
@@ -532,14 +515,13 @@ export class WebGlContextWrapper {
532
515
  * @param dst
533
516
  */
534
517
  blendFunc(src: GLenum, dst: GLenum) {
535
- const { gl, blendSrcRgb, blendDstRgb, blendSrcAlpha, blendDstAlpha } = this;
536
518
  if (
537
- src !== blendSrcRgb ||
538
- dst !== blendDstRgb ||
539
- src !== blendSrcAlpha ||
540
- dst !== blendDstAlpha
519
+ src !== this.blendSrcRgb ||
520
+ dst !== this.blendDstRgb ||
521
+ src !== this.blendSrcAlpha ||
522
+ dst !== this.blendDstAlpha
541
523
  ) {
542
- gl.blendFunc(src, dst);
524
+ this.gl.blendFunc(src, dst);
543
525
  this.blendSrcRgb = src;
544
526
  this.blendDstRgb = dst;
545
527
  this.blendSrcAlpha = src;
@@ -555,8 +537,7 @@ export class WebGlContextWrapper {
555
537
  * @returns
556
538
  */
557
539
  createBuffer() {
558
- const { gl } = this;
559
- return gl.createBuffer();
540
+ return this.gl.createBuffer();
560
541
  }
561
542
 
562
543
  /**
@@ -566,8 +547,7 @@ export class WebGlContextWrapper {
566
547
  * @returns
567
548
  */
568
549
  createFramebuffer() {
569
- const { gl } = this;
570
- return gl.createFramebuffer();
550
+ return this.gl.createFramebuffer();
571
551
  }
572
552
 
573
553
  /**
@@ -578,8 +558,7 @@ export class WebGlContextWrapper {
578
558
  * @param framebuffer
579
559
  */
580
560
  bindFramebuffer(framebuffer: WebGLFramebuffer | null) {
581
- const { gl } = this;
582
- gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
561
+ this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, framebuffer);
583
562
  }
584
563
 
585
564
  /**
@@ -595,7 +574,7 @@ export class WebGlContextWrapper {
595
574
  texture: WebGLTexture | null,
596
575
  level: GLint,
597
576
  ) {
598
- const { gl } = this;
577
+ const gl = this.gl;
599
578
  gl.framebufferTexture2D(
600
579
  gl.FRAMEBUFFER,
601
580
  attachment,
@@ -614,8 +593,7 @@ export class WebGlContextWrapper {
614
593
  * **WebGL Difference**: Clear mask is always `gl.COLOR_BUFFER_BIT`
615
594
  */
616
595
  clear() {
617
- const { gl } = this;
618
- gl.clear(gl.COLOR_BUFFER_BIT);
596
+ this.gl.clear(this.gl.COLOR_BUFFER_BIT);
619
597
  }
620
598
 
621
599
  /**
@@ -636,12 +614,11 @@ export class WebGlContextWrapper {
636
614
  data: ArrayBufferView,
637
615
  usage: GLenum,
638
616
  ) {
639
- const { gl, boundArrayBuffer } = this;
640
- if (boundArrayBuffer !== buffer) {
641
- gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
617
+ if (this.boundArrayBuffer !== buffer) {
618
+ this.gl.bindBuffer(this.gl.ARRAY_BUFFER, buffer);
642
619
  this.boundArrayBuffer = buffer;
643
620
  }
644
- gl.bufferData(gl.ARRAY_BUFFER, data, usage);
621
+ this.gl.bufferData(this.gl.ARRAY_BUFFER, data, usage);
645
622
  }
646
623
 
647
624
  /**
@@ -661,12 +638,11 @@ export class WebGlContextWrapper {
661
638
  data: ArrayBufferView,
662
639
  usage: GLenum,
663
640
  ) {
664
- const { gl, boundElementArrayBuffer } = this;
665
- if (boundElementArrayBuffer !== buffer) {
666
- gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer);
641
+ if (this.boundElementArrayBuffer !== buffer) {
642
+ this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, buffer);
667
643
  this.boundElementArrayBuffer = buffer;
668
644
  }
669
- gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, data, usage);
645
+ this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, data, usage);
670
646
  }
671
647
 
672
648
  /**
@@ -695,12 +671,50 @@ export class WebGlContextWrapper {
695
671
  stride: GLsizei,
696
672
  offset: GLintptr,
697
673
  ) {
698
- const { gl, boundArrayBuffer } = this;
699
- if (boundArrayBuffer !== buffer) {
700
- gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
674
+ if (this.boundArrayBuffer !== buffer) {
675
+ this.gl.bindBuffer(this.gl.ARRAY_BUFFER, buffer);
701
676
  this.boundArrayBuffer = buffer;
702
677
  }
703
- gl.vertexAttribPointer(index, size, type, normalized, stride, offset);
678
+ this.gl.vertexAttribPointer(index, size, type, normalized, stride, offset);
679
+ }
680
+
681
+ /**
682
+ * Returns object with Attribute names as key and numbers as location values
683
+ *
684
+ * @param program
685
+ * @returns object with numbers
686
+ */
687
+ getUniformLocations(program: WebGLProgram): Record<string, number> {
688
+ const gl = this.gl;
689
+ const length = gl.getProgramParameter(
690
+ program,
691
+ gl.ACTIVE_UNIFORMS,
692
+ ) as number;
693
+ const result = {} as Record<string, number>;
694
+ for (let i = 0; i < length; i++) {
695
+ const { name } = gl.getActiveUniform(program, i) as WebGLActiveInfo;
696
+ result[name] = i;
697
+ }
698
+ return result;
699
+ }
700
+
701
+ /**
702
+ * Returns object with Attribute names as key and numbers as location values
703
+ * @param program
704
+ * @returns object with numbers
705
+ */
706
+ getAttributeLocations(program: WebGLProgram): Record<string, number> {
707
+ const gl = this.gl;
708
+ const length = gl.getProgramParameter(
709
+ program,
710
+ gl.ACTIVE_ATTRIBUTES,
711
+ ) as number;
712
+ const result = {} as Record<string, number>;
713
+ for (let i = 0; i < length; i++) {
714
+ const { name } = gl.getActiveAttrib(program, i) as WebGLActiveInfo;
715
+ result[name] = i;
716
+ }
717
+ return result;
704
718
  }
705
719
 
706
720
  /**
@@ -712,11 +726,10 @@ export class WebGlContextWrapper {
712
726
  * @returns
713
727
  */
714
728
  useProgram(program: WebGLProgram | null) {
715
- const { gl, curProgram } = this;
716
- if (curProgram === program) {
729
+ if (this.curProgram === program) {
717
730
  return;
718
731
  }
719
- gl.useProgram(program);
732
+ this.gl.useProgram(program);
720
733
  this.curProgram = program;
721
734
  }
722
735
 
@@ -726,9 +739,11 @@ export class WebGlContextWrapper {
726
739
  * @param location - The location of the uniform variable.
727
740
  * @param v0 - The value to set.
728
741
  */
729
- uniform1f(location: WebGLUniformLocation | null, v0: number) {
730
- const { gl } = this;
731
- gl.uniform1f(location, v0);
742
+ uniform1f(location: string, v0: number) {
743
+ this.gl.uniform1f(
744
+ this.gl.getUniformLocation(this.curProgram!, location),
745
+ v0,
746
+ );
732
747
  }
733
748
 
734
749
  /**
@@ -737,12 +752,11 @@ export class WebGlContextWrapper {
737
752
  * @param location - The location of the uniform variable.
738
753
  * @param value - The array of values to set.
739
754
  */
740
- uniform1fv(
741
- location: WebGLUniformLocation | null,
742
- value: Float32Array | number[],
743
- ) {
744
- const { gl } = this;
745
- gl.uniform1fv(location, value);
755
+ uniform1fv(location: string, value: Float32Array) {
756
+ this.gl.uniform1fv(
757
+ this.gl.getUniformLocation(this.curProgram!, location),
758
+ value,
759
+ );
746
760
  }
747
761
 
748
762
  /**
@@ -751,9 +765,11 @@ export class WebGlContextWrapper {
751
765
  * @param location - The location of the uniform variable.
752
766
  * @param v0 - The value to set.
753
767
  */
754
- uniform1i(location: WebGLUniformLocation | null, v0: number) {
755
- const { gl } = this;
756
- gl.uniform1i(location, v0);
768
+ uniform1i(location: string, v0: number) {
769
+ this.gl.uniform1i(
770
+ this.gl.getUniformLocation(this.curProgram!, location),
771
+ v0,
772
+ );
757
773
  }
758
774
 
759
775
  /**
@@ -762,12 +778,11 @@ export class WebGlContextWrapper {
762
778
  * @param location - The location of the uniform variable.
763
779
  * @param value - The array of values to set.
764
780
  */
765
- uniform1iv(
766
- location: WebGLUniformLocation | null,
767
- value: Int32Array | number[],
768
- ) {
769
- const { gl } = this;
770
- gl.uniform1iv(location, value);
781
+ uniform1iv(location: string, value: Int32Array) {
782
+ this.gl.uniform1iv(
783
+ this.gl.getUniformLocation(this.curProgram!, location),
784
+ value,
785
+ );
771
786
  }
772
787
 
773
788
  /**
@@ -777,9 +792,12 @@ export class WebGlContextWrapper {
777
792
  * @param v0 - The first component of the vector.
778
793
  * @param v1 - The second component of the vector.
779
794
  */
780
- uniform2f(location: WebGLUniformLocation | null, v0: number, v1: number) {
781
- const { gl } = this;
782
- gl.uniform2f(location, v0, v1);
795
+ uniform2f(location: string, v0: number, v1: number) {
796
+ this.gl.uniform2f(
797
+ this.gl.getUniformLocation(this.curProgram!, location),
798
+ v0,
799
+ v1,
800
+ );
783
801
  }
784
802
 
785
803
  /**
@@ -788,12 +806,11 @@ export class WebGlContextWrapper {
788
806
  * @param location - The location of the uniform variable.
789
807
  * @param value - The array of vec2 values to set.
790
808
  */
791
- uniform2fv(
792
- location: WebGLUniformLocation | null,
793
- value: Float32Array | number[],
794
- ) {
795
- const { gl } = this;
796
- gl.uniform2fv(location, value);
809
+ uniform2fv(location: string, value: Float32Array) {
810
+ this.gl.uniform2fv(
811
+ this.gl.getUniformLocation(this.curProgram!, location),
812
+ value,
813
+ );
797
814
  }
798
815
 
799
816
  /**
@@ -803,9 +820,12 @@ export class WebGlContextWrapper {
803
820
  * @param v0 - The first component of the vector.
804
821
  * @param v1 - The second component of the vector.
805
822
  */
806
- uniform2i(location: WebGLUniformLocation | null, v0: number, v1: number) {
807
- const { gl } = this;
808
- gl.uniform2i(location, v0, v1);
823
+ uniform2i(location: string, v0: number, v1: number) {
824
+ this.gl.uniform2i(
825
+ this.gl.getUniformLocation(this.curProgram!, location),
826
+ v0,
827
+ v1,
828
+ );
809
829
  }
810
830
 
811
831
  /**
@@ -814,12 +834,11 @@ export class WebGlContextWrapper {
814
834
  * @param location - The location of the uniform variable.
815
835
  * @param value - The array of ivec2 values to set.
816
836
  */
817
- uniform2iv(
818
- location: WebGLUniformLocation | null,
819
- value: Int32Array | number[],
820
- ) {
821
- const { gl } = this;
822
- gl.uniform2iv(location, value);
837
+ uniform2iv(location: string, value: Int32Array) {
838
+ this.gl.uniform2iv(
839
+ this.gl.getUniformLocation(this.curProgram!, location),
840
+ value,
841
+ );
823
842
  }
824
843
 
825
844
  /**
@@ -830,14 +849,13 @@ export class WebGlContextWrapper {
830
849
  * @param v1 - The second component of the vector.
831
850
  * @param v2 - The third component of the vector.
832
851
  */
833
- uniform3f(
834
- location: WebGLUniformLocation | null,
835
- v0: number,
836
- v1: number,
837
- v2: number,
838
- ) {
839
- const { gl } = this;
840
- gl.uniform3f(location, v0, v1, v2);
852
+ uniform3f(location: string, v0: number, v1: number, v2: number) {
853
+ this.gl.uniform3f(
854
+ this.gl.getUniformLocation(this.curProgram!, location),
855
+ v0,
856
+ v1,
857
+ v2,
858
+ );
841
859
  }
842
860
 
843
861
  /**
@@ -846,12 +864,11 @@ export class WebGlContextWrapper {
846
864
  * @param location - The location of the uniform variable.
847
865
  * @param value - The array of vec3 values to set.
848
866
  */
849
- uniform3fv(
850
- location: WebGLUniformLocation | null,
851
- value: Float32Array | number[],
852
- ) {
853
- const { gl } = this;
854
- gl.uniform3fv(location, value);
867
+ uniform3fv(location: string, value: Float32Array) {
868
+ this.gl.uniform3fv(
869
+ this.gl.getUniformLocation(this.curProgram!, location),
870
+ value,
871
+ );
855
872
  }
856
873
 
857
874
  /**
@@ -862,14 +879,13 @@ export class WebGlContextWrapper {
862
879
  * @param v1 - The second component of the vector.
863
880
  * @param v2 - The third component of the vector.
864
881
  */
865
- uniform3i(
866
- location: WebGLUniformLocation | null,
867
- v0: number,
868
- v1: number,
869
- v2: number,
870
- ) {
871
- const { gl } = this;
872
- gl.uniform3i(location, v0, v1, v2);
882
+ uniform3i(location: string, v0: number, v1: number, v2: number) {
883
+ this.gl.uniform3i(
884
+ this.gl.getUniformLocation(this.curProgram!, location),
885
+ v0,
886
+ v1,
887
+ v2,
888
+ );
873
889
  }
874
890
 
875
891
  /**
@@ -878,12 +894,11 @@ export class WebGlContextWrapper {
878
894
  * @param location - The location of the uniform variable.
879
895
  * @param value - The array of ivec3 values to set.
880
896
  */
881
- uniform3iv(
882
- location: WebGLUniformLocation | null,
883
- value: Int32Array | number[],
884
- ) {
885
- const { gl } = this;
886
- gl.uniform3iv(location, value);
897
+ uniform3iv(location: string, value: Int32Array) {
898
+ this.gl.uniform3iv(
899
+ this.gl.getUniformLocation(this.curProgram!, location),
900
+ value,
901
+ );
887
902
  }
888
903
 
889
904
  /**
@@ -895,15 +910,14 @@ export class WebGlContextWrapper {
895
910
  * @param v2 - The third component of the vector.
896
911
  * @param v3 - The fourth component of the vector.
897
912
  */
898
- uniform4f(
899
- location: WebGLUniformLocation | null,
900
- v0: number,
901
- v1: number,
902
- v2: number,
903
- v3: number,
904
- ) {
905
- const { gl } = this;
906
- gl.uniform4f(location, v0, v1, v2, v3);
913
+ uniform4f(location: string, v0: number, v1: number, v2: number, v3: number) {
914
+ this.gl.uniform4f(
915
+ this.gl.getUniformLocation(this.curProgram!, location),
916
+ v0,
917
+ v1,
918
+ v2,
919
+ v3,
920
+ );
907
921
  }
908
922
 
909
923
  /**
@@ -912,12 +926,11 @@ export class WebGlContextWrapper {
912
926
  * @param location - The location of the uniform variable.
913
927
  * @param value - The array of vec4 values to set.
914
928
  */
915
- uniform4fv(
916
- location: WebGLUniformLocation | null,
917
- value: Float32Array | number[],
918
- ) {
919
- const { gl } = this;
920
- gl.uniform4fv(location, value);
929
+ uniform4fv(location: string, value: Float32Array) {
930
+ this.gl.uniform4fv(
931
+ this.gl.getUniformLocation(this.curProgram!, location),
932
+ value,
933
+ );
921
934
  }
922
935
 
923
936
  /**
@@ -929,15 +942,14 @@ export class WebGlContextWrapper {
929
942
  * @param v2 - The third component of the vector.
930
943
  * @param v3 - The fourth component of the vector.
931
944
  */
932
- uniform4i(
933
- location: WebGLUniformLocation | null,
934
- v0: number,
935
- v1: number,
936
- v2: number,
937
- v3: number,
938
- ) {
939
- const { gl } = this;
940
- gl.uniform4i(location, v0, v1, v2, v3);
945
+ uniform4i(location: string, v0: number, v1: number, v2: number, v3: number) {
946
+ this.gl.uniform4i(
947
+ this.gl.getUniformLocation(this.curProgram!, location),
948
+ v0,
949
+ v1,
950
+ v2,
951
+ v3,
952
+ );
941
953
  }
942
954
 
943
955
  /**
@@ -946,12 +958,11 @@ export class WebGlContextWrapper {
946
958
  * @param location - The location of the uniform variable.
947
959
  * @param value - The array of ivec4 values to set.
948
960
  */
949
- uniform4iv(
950
- location: WebGLUniformLocation | null,
951
- value: Int32Array | number[],
952
- ) {
953
- const { gl } = this;
954
- gl.uniform4iv(location, value);
961
+ uniform4iv(location: string, value: Int32Array) {
962
+ this.gl.uniform4iv(
963
+ this.gl.getUniformLocation(this.curProgram!, location),
964
+ value,
965
+ );
955
966
  }
956
967
 
957
968
  /**
@@ -961,12 +972,12 @@ export class WebGlContextWrapper {
961
972
  * @param transpose - Whether to transpose the matrix.
962
973
  * @param value - The array of mat2 values to set.
963
974
  */
964
- uniformMatrix2fv(
965
- location: WebGLUniformLocation | null,
966
- value: Float32Array | number[],
967
- ) {
968
- const { gl } = this;
969
- gl.uniformMatrix2fv(location, false, value);
975
+ uniformMatrix2fv(location: string, value: Float32Array) {
976
+ this.gl.uniformMatrix2fv(
977
+ this.gl.getUniformLocation(this.curProgram!, location),
978
+ false,
979
+ value,
980
+ );
970
981
  }
971
982
 
972
983
  /**
@@ -974,12 +985,12 @@ export class WebGlContextWrapper {
974
985
  * @param location - The location of the uniform variable.
975
986
  * @param value - The array of mat2 values to set.
976
987
  */
977
- uniformMatrix3fv(
978
- location: WebGLUniformLocation | null,
979
- value: Float32Array | number[],
980
- ) {
981
- const { gl } = this;
982
- gl.uniformMatrix3fv(location, false, value);
988
+ uniformMatrix3fv(location: string, value: Float32Array) {
989
+ this.gl.uniformMatrix3fv(
990
+ this.gl.getUniformLocation(this.curProgram!, location),
991
+ false,
992
+ value,
993
+ );
983
994
  }
984
995
 
985
996
  /**
@@ -987,12 +998,12 @@ export class WebGlContextWrapper {
987
998
  * @param location - The location of the uniform variable.
988
999
  * @param value - The array of mat4 values to set.
989
1000
  */
990
- uniformMatrix4fv(
991
- location: WebGLUniformLocation | null,
992
- value: Float32Array | number[],
993
- ) {
994
- const { gl } = this;
995
- gl.uniformMatrix4fv(location, false, value);
1001
+ uniformMatrix4fv(location: string, value: Float32Array) {
1002
+ this.gl.uniformMatrix4fv(
1003
+ this.gl.getUniformLocation(this.curProgram!, location),
1004
+ false,
1005
+ value,
1006
+ );
996
1007
  }
997
1008
 
998
1009
  /**
@@ -1004,8 +1015,7 @@ export class WebGlContextWrapper {
1004
1015
  * @returns
1005
1016
  */
1006
1017
  getParameter(pname: GLenum): any {
1007
- const { gl } = this;
1008
- return gl.getParameter(pname);
1018
+ return this.gl.getParameter(pname);
1009
1019
  }
1010
1020
 
1011
1021
  /**
@@ -1019,8 +1029,7 @@ export class WebGlContextWrapper {
1019
1029
  * @param offset
1020
1030
  */
1021
1031
  drawElements(mode: GLenum, count: GLsizei, type: GLenum, offset: GLintptr) {
1022
- const { gl } = this;
1023
- gl.drawElements(mode, count, type, offset);
1032
+ this.gl.drawElements(mode, count, type, offset);
1024
1033
  }
1025
1034
 
1026
1035
  /**
@@ -1032,8 +1041,7 @@ export class WebGlContextWrapper {
1032
1041
  * @returns
1033
1042
  */
1034
1043
  getExtension(name: string) {
1035
- const { gl } = this;
1036
- return gl.getExtension(name);
1044
+ return this.gl.getExtension(name);
1037
1045
  }
1038
1046
 
1039
1047
  /**
@@ -1044,8 +1052,7 @@ export class WebGlContextWrapper {
1044
1052
  * @returns
1045
1053
  */
1046
1054
  getError() {
1047
- const { gl } = this;
1048
- return gl.getError();
1055
+ return this.gl.getError();
1049
1056
  }
1050
1057
 
1051
1058
  /**
@@ -1056,9 +1063,10 @@ export class WebGlContextWrapper {
1056
1063
  * @returns
1057
1064
  */
1058
1065
  createVertexArray() {
1059
- const { gl } = this;
1060
- assertTruthy(gl instanceof WebGL2RenderingContext);
1061
- return gl.createVertexArray();
1066
+ if (this.gl instanceof WebGL2RenderingContext) {
1067
+ return this.gl.createVertexArray();
1068
+ }
1069
+ return undefined;
1062
1070
  }
1063
1071
 
1064
1072
  /**
@@ -1069,9 +1077,9 @@ export class WebGlContextWrapper {
1069
1077
  * @param vertexArray
1070
1078
  */
1071
1079
  bindVertexArray(vertexArray: WebGLVertexArrayObject | null) {
1072
- const { gl } = this;
1073
- assertTruthy(gl instanceof WebGL2RenderingContext);
1074
- gl.bindVertexArray(vertexArray);
1080
+ if (this.gl instanceof WebGL2RenderingContext) {
1081
+ this.gl.bindVertexArray(vertexArray);
1082
+ }
1075
1083
  }
1076
1084
 
1077
1085
  /**
@@ -1084,8 +1092,7 @@ export class WebGlContextWrapper {
1084
1092
  * @returns
1085
1093
  */
1086
1094
  getAttribLocation(program: WebGLProgram, name: string) {
1087
- const { gl } = this;
1088
- return gl.getAttribLocation(program, name);
1095
+ return this.gl.getAttribLocation(program, name);
1089
1096
  }
1090
1097
 
1091
1098
  /**
@@ -1098,8 +1105,7 @@ export class WebGlContextWrapper {
1098
1105
  * @returns
1099
1106
  */
1100
1107
  getUniformLocation(program: WebGLProgram, name: string) {
1101
- const { gl } = this;
1102
- return gl.getUniformLocation(program, name);
1108
+ return this.gl.getUniformLocation(program, name);
1103
1109
  }
1104
1110
 
1105
1111
  /**
@@ -1110,8 +1116,7 @@ export class WebGlContextWrapper {
1110
1116
  * @param index
1111
1117
  */
1112
1118
  enableVertexAttribArray(index: number) {
1113
- const { gl } = this;
1114
- gl.enableVertexAttribArray(index);
1119
+ this.gl.enableVertexAttribArray(index);
1115
1120
  }
1116
1121
 
1117
1122
  /**
@@ -1122,8 +1127,7 @@ export class WebGlContextWrapper {
1122
1127
  * @param index
1123
1128
  */
1124
1129
  disableVertexAttribArray(index: number) {
1125
- const { gl } = this;
1126
- gl.disableVertexAttribArray(index);
1130
+ this.gl.disableVertexAttribArray(index);
1127
1131
  }
1128
1132
 
1129
1133
  /**
@@ -1135,8 +1139,7 @@ export class WebGlContextWrapper {
1135
1139
  * @returns
1136
1140
  */
1137
1141
  createShader(type: number) {
1138
- const { gl } = this;
1139
- return gl.createShader(type);
1142
+ return this.gl.createShader(type);
1140
1143
  }
1141
1144
 
1142
1145
  /**
@@ -1148,8 +1151,7 @@ export class WebGlContextWrapper {
1148
1151
  * @returns
1149
1152
  */
1150
1153
  compileShader(shader: WebGLShader) {
1151
- const { gl } = this;
1152
- gl.compileShader(shader);
1154
+ this.gl.compileShader(shader);
1153
1155
  }
1154
1156
 
1155
1157
  /**
@@ -1161,8 +1163,7 @@ export class WebGlContextWrapper {
1161
1163
  * @param shader
1162
1164
  */
1163
1165
  attachShader(program: WebGLProgram, shader: WebGLShader) {
1164
- const { gl } = this;
1165
- gl.attachShader(program, shader);
1166
+ this.gl.attachShader(program, shader);
1166
1167
  }
1167
1168
 
1168
1169
  /**
@@ -1173,8 +1174,7 @@ export class WebGlContextWrapper {
1173
1174
  * @param program
1174
1175
  */
1175
1176
  linkProgram(program: WebGLProgram) {
1176
- const { gl } = this;
1177
- gl.linkProgram(program);
1177
+ this.gl.linkProgram(program);
1178
1178
  }
1179
1179
 
1180
1180
  /**
@@ -1185,8 +1185,7 @@ export class WebGlContextWrapper {
1185
1185
  * @param shader
1186
1186
  */
1187
1187
  deleteProgram(shader: WebGLProgram) {
1188
- const { gl } = this;
1189
- gl.deleteProgram(shader);
1188
+ this.gl.deleteProgram(shader);
1190
1189
  }
1191
1190
 
1192
1191
  /**
@@ -1198,8 +1197,7 @@ export class WebGlContextWrapper {
1198
1197
  * @param pname
1199
1198
  */
1200
1199
  getShaderParameter(shader: WebGLShader, pname: GLenum) {
1201
- const { gl } = this;
1202
- return gl.getShaderParameter(shader, pname);
1200
+ return this.gl.getShaderParameter(shader, pname);
1203
1201
  }
1204
1202
 
1205
1203
  /**
@@ -1210,8 +1208,7 @@ export class WebGlContextWrapper {
1210
1208
  * @param shader
1211
1209
  */
1212
1210
  getShaderInfoLog(shader: WebGLShader) {
1213
- const { gl } = this;
1214
- return gl.getShaderInfoLog(shader);
1211
+ return this.gl.getShaderInfoLog(shader);
1215
1212
  }
1216
1213
 
1217
1214
  /**
@@ -1222,8 +1219,7 @@ export class WebGlContextWrapper {
1222
1219
  * @returns
1223
1220
  */
1224
1221
  createProgram() {
1225
- const { gl } = this;
1226
- return gl.createProgram();
1222
+ return this.gl.createProgram();
1227
1223
  }
1228
1224
 
1229
1225
  /**
@@ -1236,8 +1232,7 @@ export class WebGlContextWrapper {
1236
1232
  * @returns
1237
1233
  */
1238
1234
  getProgramParameter(program: WebGLProgram, pname: GLenum) {
1239
- const { gl } = this;
1240
- return gl.getProgramParameter(program, pname);
1235
+ return this.gl.getProgramParameter(program, pname);
1241
1236
  }
1242
1237
 
1243
1238
  /**
@@ -1249,8 +1244,7 @@ export class WebGlContextWrapper {
1249
1244
  * @returns
1250
1245
  */
1251
1246
  getProgramInfoLog(program: WebGLProgram) {
1252
- const { gl } = this;
1253
- return gl.getProgramInfoLog(program);
1247
+ return this.gl.getProgramInfoLog(program);
1254
1248
  }
1255
1249
 
1256
1250
  /**
@@ -1262,8 +1256,7 @@ export class WebGlContextWrapper {
1262
1256
  * @param source
1263
1257
  */
1264
1258
  shaderSource(shader: WebGLShader, source: string) {
1265
- const { gl } = this;
1266
- gl.shaderSource(shader, source);
1259
+ this.gl.shaderSource(shader, source);
1267
1260
  }
1268
1261
 
1269
1262
  /**
@@ -1274,8 +1267,7 @@ export class WebGlContextWrapper {
1274
1267
  * @param shader
1275
1268
  */
1276
1269
  deleteShader(shader: WebGLShader) {
1277
- const { gl } = this;
1278
- gl.deleteShader(shader);
1270
+ this.gl.deleteShader(shader);
1279
1271
  }
1280
1272
  }
1281
1273