@lightningtv/renderer 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 (481) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +3 -0
  3. package/README.md +147 -0
  4. package/dist/exports/canvas-shaders.d.ts +10 -0
  5. package/dist/exports/canvas-shaders.js +27 -0
  6. package/dist/exports/canvas-shaders.js.map +1 -0
  7. package/dist/exports/canvas.d.ts +26 -0
  8. package/dist/exports/canvas.js +45 -0
  9. package/dist/exports/canvas.js.map +1 -0
  10. package/dist/exports/index.d.ts +53 -0
  11. package/dist/exports/index.js +62 -0
  12. package/dist/exports/index.js.map +1 -0
  13. package/dist/exports/inspector.d.ts +4 -0
  14. package/dist/exports/inspector.js +23 -0
  15. package/dist/exports/inspector.js.map +1 -0
  16. package/dist/exports/utils.d.ts +26 -0
  17. package/dist/exports/utils.js +45 -0
  18. package/dist/exports/utils.js.map +1 -0
  19. package/dist/exports/webgl-shaders.d.ts +11 -0
  20. package/dist/exports/webgl-shaders.js +28 -0
  21. package/dist/exports/webgl-shaders.js.map +1 -0
  22. package/dist/exports/webgl.d.ts +27 -0
  23. package/dist/exports/webgl.js +46 -0
  24. package/dist/exports/webgl.js.map +1 -0
  25. package/dist/src/common/CommonTypes.d.ts +97 -0
  26. package/dist/src/common/CommonTypes.js +20 -0
  27. package/dist/src/common/CommonTypes.js.map +1 -0
  28. package/dist/src/common/EventEmitter.d.ts +12 -0
  29. package/dist/src/common/EventEmitter.js +66 -0
  30. package/dist/src/common/EventEmitter.js.map +1 -0
  31. package/dist/src/common/IAnimationController.d.ts +66 -0
  32. package/dist/src/common/IAnimationController.js +2 -0
  33. package/dist/src/common/IAnimationController.js.map +1 -0
  34. package/dist/src/common/IEventEmitter.d.ts +8 -0
  35. package/dist/src/common/IEventEmitter.js +18 -0
  36. package/dist/src/common/IEventEmitter.js.map +1 -0
  37. package/dist/src/core/CoreNode.d.ts +860 -0
  38. package/dist/src/core/CoreNode.js +1527 -0
  39. package/dist/src/core/CoreNode.js.map +1 -0
  40. package/dist/src/core/CoreShaderManager.d.ts +38 -0
  41. package/dist/src/core/CoreShaderManager.js +141 -0
  42. package/dist/src/core/CoreShaderManager.js.map +1 -0
  43. package/dist/src/core/CoreTextNode.d.ts +103 -0
  44. package/dist/src/core/CoreTextNode.js +331 -0
  45. package/dist/src/core/CoreTextNode.js.map +1 -0
  46. package/dist/src/core/CoreTextureManager.d.ts +253 -0
  47. package/dist/src/core/CoreTextureManager.js +375 -0
  48. package/dist/src/core/CoreTextureManager.js.map +1 -0
  49. package/dist/src/core/Stage.d.ts +171 -0
  50. package/dist/src/core/Stage.js +566 -0
  51. package/dist/src/core/Stage.js.map +1 -0
  52. package/dist/src/core/TextureMemoryManager.d.ts +143 -0
  53. package/dist/src/core/TextureMemoryManager.js +259 -0
  54. package/dist/src/core/TextureMemoryManager.js.map +1 -0
  55. package/dist/src/core/animations/AnimationManager.d.ts +7 -0
  56. package/dist/src/core/animations/AnimationManager.js +34 -0
  57. package/dist/src/core/animations/AnimationManager.js.map +1 -0
  58. package/dist/src/core/animations/CoreAnimation.d.ts +37 -0
  59. package/dist/src/core/animations/CoreAnimation.js +210 -0
  60. package/dist/src/core/animations/CoreAnimation.js.map +1 -0
  61. package/dist/src/core/animations/CoreAnimationController.d.ts +26 -0
  62. package/dist/src/core/animations/CoreAnimationController.js +126 -0
  63. package/dist/src/core/animations/CoreAnimationController.js.map +1 -0
  64. package/dist/src/core/lib/ContextSpy.d.ts +12 -0
  65. package/dist/src/core/lib/ContextSpy.js +38 -0
  66. package/dist/src/core/lib/ContextSpy.js.map +1 -0
  67. package/dist/src/core/lib/ImageWorker.d.ts +16 -0
  68. package/dist/src/core/lib/ImageWorker.js +200 -0
  69. package/dist/src/core/lib/ImageWorker.js.map +1 -0
  70. package/dist/src/core/lib/Matrix3d.d.ts +73 -0
  71. package/dist/src/core/lib/Matrix3d.js +230 -0
  72. package/dist/src/core/lib/Matrix3d.js.map +1 -0
  73. package/dist/src/core/lib/RenderCoords.d.ts +13 -0
  74. package/dist/src/core/lib/RenderCoords.js +63 -0
  75. package/dist/src/core/lib/RenderCoords.js.map +1 -0
  76. package/dist/src/core/lib/WebGlContextWrapper.d.ts +707 -0
  77. package/dist/src/core/lib/WebGlContextWrapper.js +1018 -0
  78. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -0
  79. package/dist/src/core/lib/textureCompression.d.ts +16 -0
  80. package/dist/src/core/lib/textureCompression.js +128 -0
  81. package/dist/src/core/lib/textureCompression.js.map +1 -0
  82. package/dist/src/core/lib/textureSvg.d.ts +16 -0
  83. package/dist/src/core/lib/textureSvg.js +63 -0
  84. package/dist/src/core/lib/textureSvg.js.map +1 -0
  85. package/dist/src/core/lib/utils.d.ts +59 -0
  86. package/dist/src/core/lib/utils.js +244 -0
  87. package/dist/src/core/lib/utils.js.map +1 -0
  88. package/dist/src/core/lib/validateImageBitmap.d.ts +6 -0
  89. package/dist/src/core/lib/validateImageBitmap.js +68 -0
  90. package/dist/src/core/lib/validateImageBitmap.js.map +1 -0
  91. package/dist/src/core/platform.d.ts +10 -0
  92. package/dist/src/core/platform.js +56 -0
  93. package/dist/src/core/platform.js.map +1 -0
  94. package/dist/src/core/renderers/CoreContextTexture.d.ts +12 -0
  95. package/dist/src/core/renderers/CoreContextTexture.js +34 -0
  96. package/dist/src/core/renderers/CoreContextTexture.js.map +1 -0
  97. package/dist/src/core/renderers/CoreRenderOp.d.ts +3 -0
  98. package/dist/src/core/renderers/CoreRenderOp.js +21 -0
  99. package/dist/src/core/renderers/CoreRenderOp.js.map +1 -0
  100. package/dist/src/core/renderers/CoreRenderer.d.ts +68 -0
  101. package/dist/src/core/renderers/CoreRenderer.js +31 -0
  102. package/dist/src/core/renderers/CoreRenderer.js.map +1 -0
  103. package/dist/src/core/renderers/CoreShaderNode.d.ts +59 -0
  104. package/dist/src/core/renderers/CoreShaderNode.js +107 -0
  105. package/dist/src/core/renderers/CoreShaderNode.js.map +1 -0
  106. package/dist/src/core/renderers/CoreShaderProgram.d.ts +4 -0
  107. package/dist/src/core/renderers/CoreShaderProgram.js +20 -0
  108. package/dist/src/core/renderers/CoreShaderProgram.js.map +1 -0
  109. package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +36 -0
  110. package/dist/src/core/renderers/canvas/CanvasRenderer.js +212 -0
  111. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -0
  112. package/dist/src/core/renderers/canvas/CanvasShaderNode.d.ts +21 -0
  113. package/dist/src/core/renderers/canvas/CanvasShaderNode.js +60 -0
  114. package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -0
  115. package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +16 -0
  116. package/dist/src/core/renderers/canvas/CanvasTexture.js +123 -0
  117. package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -0
  118. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +1 -0
  119. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +217 -0
  120. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -0
  121. package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +21 -0
  122. package/dist/src/core/renderers/canvas/internal/ColorUtils.js +72 -0
  123. package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -0
  124. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +12 -0
  125. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +55 -0
  126. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -0
  127. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +9 -0
  128. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +38 -0
  129. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -0
  130. package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +57 -0
  131. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +227 -0
  132. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -0
  133. package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +36 -0
  134. package/dist/src/core/renderers/webgl/WebGlRenderOp.js +107 -0
  135. package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -0
  136. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +134 -0
  137. package/dist/src/core/renderers/webgl/WebGlRenderer.js +546 -0
  138. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -0
  139. package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +221 -0
  140. package/dist/src/core/renderers/webgl/WebGlShaderNode.js +334 -0
  141. package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -0
  142. package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +35 -0
  143. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +195 -0
  144. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -0
  145. package/dist/src/core/renderers/webgl/internal/BufferCollection.d.ts +27 -0
  146. package/dist/src/core/renderers/webgl/internal/BufferCollection.js +48 -0
  147. package/dist/src/core/renderers/webgl/internal/BufferCollection.js.map +1 -0
  148. package/dist/src/core/renderers/webgl/internal/RendererUtils.d.ts +55 -0
  149. package/dist/src/core/renderers/webgl/internal/RendererUtils.js +106 -0
  150. package/dist/src/core/renderers/webgl/internal/RendererUtils.js.map +1 -0
  151. package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +74 -0
  152. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +101 -0
  153. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -0
  154. package/dist/src/core/renderers/webgl/internal/WebGlUtils.d.ts +10 -0
  155. package/dist/src/core/renderers/webgl/internal/WebGlUtils.js +31 -0
  156. package/dist/src/core/renderers/webgl/internal/WebGlUtils.js.map +1 -0
  157. package/dist/src/core/shaders/canvas/Border.d.ts +9 -0
  158. package/dist/src/core/shaders/canvas/Border.js +57 -0
  159. package/dist/src/core/shaders/canvas/Border.js.map +1 -0
  160. package/dist/src/core/shaders/canvas/HolePunch.d.ts +7 -0
  161. package/dist/src/core/shaders/canvas/HolePunch.js +38 -0
  162. package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -0
  163. package/dist/src/core/shaders/canvas/LinearGradient.d.ts +10 -0
  164. package/dist/src/core/shaders/canvas/LinearGradient.js +46 -0
  165. package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -0
  166. package/dist/src/core/shaders/canvas/RadialGradient.d.ts +11 -0
  167. package/dist/src/core/shaders/canvas/RadialGradient.js +68 -0
  168. package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -0
  169. package/dist/src/core/shaders/canvas/Rounded.d.ts +7 -0
  170. package/dist/src/core/shaders/canvas/Rounded.js +33 -0
  171. package/dist/src/core/shaders/canvas/Rounded.js.map +1 -0
  172. package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +7 -0
  173. package/dist/src/core/shaders/canvas/RoundedWithBorder.js +35 -0
  174. package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -0
  175. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +8 -0
  176. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +39 -0
  177. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -0
  178. package/dist/src/core/shaders/canvas/RoundedWithShadow.d.ts +7 -0
  179. package/dist/src/core/shaders/canvas/RoundedWithShadow.js +38 -0
  180. package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -0
  181. package/dist/src/core/shaders/canvas/Shadow.d.ts +8 -0
  182. package/dist/src/core/shaders/canvas/Shadow.js +31 -0
  183. package/dist/src/core/shaders/canvas/Shadow.js.map +1 -0
  184. package/dist/src/core/shaders/canvas/utils/render.d.ts +5 -0
  185. package/dist/src/core/shaders/canvas/utils/render.js +84 -0
  186. package/dist/src/core/shaders/canvas/utils/render.js.map +1 -0
  187. package/dist/src/core/shaders/templates/BorderTemplate.d.ts +37 -0
  188. package/dist/src/core/shaders/templates/BorderTemplate.js +73 -0
  189. package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -0
  190. package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +46 -0
  191. package/dist/src/core/shaders/templates/HolePunchTemplate.js +35 -0
  192. package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -0
  193. package/dist/src/core/shaders/templates/LinearGradientTemplate.d.ts +23 -0
  194. package/dist/src/core/shaders/templates/LinearGradientTemplate.js +47 -0
  195. package/dist/src/core/shaders/templates/LinearGradientTemplate.js.map +1 -0
  196. package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +31 -0
  197. package/dist/src/core/shaders/templates/RadialGradientTemplate.js +49 -0
  198. package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -0
  199. package/dist/src/core/shaders/templates/RoundedTemplate.d.ts +29 -0
  200. package/dist/src/core/shaders/templates/RoundedTemplate.js +67 -0
  201. package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -0
  202. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +7 -0
  203. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js +24 -0
  204. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js.map +1 -0
  205. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +6 -0
  206. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js +23 -0
  207. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js.map +1 -0
  208. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +6 -0
  209. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js +23 -0
  210. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js.map +1 -0
  211. package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +34 -0
  212. package/dist/src/core/shaders/templates/ShadowTemplate.js +66 -0
  213. package/dist/src/core/shaders/templates/ShadowTemplate.js.map +1 -0
  214. package/dist/src/core/shaders/templates/shaderUtils.d.ts +5 -0
  215. package/dist/src/core/shaders/templates/shaderUtils.js +41 -0
  216. package/dist/src/core/shaders/templates/shaderUtils.js.map +1 -0
  217. package/dist/src/core/shaders/webgl/Border.d.ts +3 -0
  218. package/dist/src/core/shaders/webgl/Border.js +87 -0
  219. package/dist/src/core/shaders/webgl/Border.js.map +1 -0
  220. package/dist/src/core/shaders/webgl/Default.d.ts +2 -0
  221. package/dist/src/core/shaders/webgl/Default.js +86 -0
  222. package/dist/src/core/shaders/webgl/Default.js.map +1 -0
  223. package/dist/src/core/shaders/webgl/DefaultBatched.d.ts +2 -0
  224. package/dist/src/core/shaders/webgl/DefaultBatched.js +104 -0
  225. package/dist/src/core/shaders/webgl/DefaultBatched.js.map +1 -0
  226. package/dist/src/core/shaders/webgl/HolePunch.d.ts +3 -0
  227. package/dist/src/core/shaders/webgl/HolePunch.js +64 -0
  228. package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -0
  229. package/dist/src/core/shaders/webgl/LinearGradient.d.ts +3 -0
  230. package/dist/src/core/shaders/webgl/LinearGradient.js +75 -0
  231. package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -0
  232. package/dist/src/core/shaders/webgl/RadialGradient.d.ts +3 -0
  233. package/dist/src/core/shaders/webgl/RadialGradient.js +73 -0
  234. package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -0
  235. package/dist/src/core/shaders/webgl/Rounded.d.ts +7 -0
  236. package/dist/src/core/shaders/webgl/Rounded.js +86 -0
  237. package/dist/src/core/shaders/webgl/Rounded.js.map +1 -0
  238. package/dist/src/core/shaders/webgl/RoundedWithBorder.d.ts +3 -0
  239. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +97 -0
  240. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -0
  241. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.d.ts +3 -0
  242. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +112 -0
  243. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -0
  244. package/dist/src/core/shaders/webgl/RoundedWithShadow.d.ts +3 -0
  245. package/dist/src/core/shaders/webgl/RoundedWithShadow.js +84 -0
  246. package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -0
  247. package/dist/src/core/shaders/webgl/SdfShader.d.ts +32 -0
  248. package/dist/src/core/shaders/webgl/SdfShader.js +116 -0
  249. package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -0
  250. package/dist/src/core/shaders/webgl/Shadow.d.ts +3 -0
  251. package/dist/src/core/shaders/webgl/Shadow.js +110 -0
  252. package/dist/src/core/shaders/webgl/Shadow.js.map +1 -0
  253. package/dist/src/core/text-rendering/TextRenderingUtils.d.ts +12 -0
  254. package/dist/src/core/text-rendering/TextRenderingUtils.js +14 -0
  255. package/dist/src/core/text-rendering/TextRenderingUtils.js.map +1 -0
  256. package/dist/src/core/text-rendering/TextTextureRendererUtils.d.ts +72 -0
  257. package/dist/src/core/text-rendering/TextTextureRendererUtils.js +217 -0
  258. package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -0
  259. package/dist/src/core/text-rendering/TrFontManager.d.ts +26 -0
  260. package/dist/src/core/text-rendering/TrFontManager.js +131 -0
  261. package/dist/src/core/text-rendering/TrFontManager.js.map +1 -0
  262. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.d.ts +39 -0
  263. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +125 -0
  264. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -0
  265. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.d.ts +103 -0
  266. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js +21 -0
  267. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js.map +1 -0
  268. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.d.ts +62 -0
  269. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js +88 -0
  270. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js.map +1 -0
  271. package/dist/src/core/text-rendering/font-face-types/TrFontFace.d.ts +118 -0
  272. package/dist/src/core/text-rendering/font-face-types/TrFontFace.js +63 -0
  273. package/dist/src/core/text-rendering/font-face-types/TrFontFace.js.map +1 -0
  274. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.d.ts +14 -0
  275. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +66 -0
  276. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js.map +1 -0
  277. package/dist/src/core/text-rendering/font-face-types/utils.d.ts +1 -0
  278. package/dist/src/core/text-rendering/font-face-types/utils.js +38 -0
  279. package/dist/src/core/text-rendering/font-face-types/utils.js.map +1 -0
  280. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +59 -0
  281. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +397 -0
  282. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -0
  283. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +126 -0
  284. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +551 -0
  285. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -0
  286. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +91 -0
  287. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +611 -0
  288. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -0
  289. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.d.ts +12 -0
  290. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js +61 -0
  291. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js.map +1 -0
  292. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.d.ts +33 -0
  293. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js +52 -0
  294. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js.map +1 -0
  295. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.d.ts +13 -0
  296. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js +32 -0
  297. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js.map +1 -0
  298. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.d.ts +23 -0
  299. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js +84 -0
  300. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js.map +1 -0
  301. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.d.ts +4 -0
  302. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js +34 -0
  303. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js.map +1 -0
  304. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +20 -0
  305. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +308 -0
  306. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -0
  307. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.d.ts +10 -0
  308. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js +40 -0
  309. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js.map +1 -0
  310. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.d.ts +26 -0
  311. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js +70 -0
  312. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js.map +1 -0
  313. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.d.ts +16 -0
  314. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js +39 -0
  315. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js.map +1 -0
  316. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +370 -0
  317. package/dist/src/core/text-rendering/renderers/TextRenderer.js +178 -0
  318. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -0
  319. package/dist/src/core/textures/ColorTexture.d.ts +36 -0
  320. package/dist/src/core/textures/ColorTexture.js +76 -0
  321. package/dist/src/core/textures/ColorTexture.js.map +1 -0
  322. package/dist/src/core/textures/ImageTexture.d.ts +124 -0
  323. package/dist/src/core/textures/ImageTexture.js +220 -0
  324. package/dist/src/core/textures/ImageTexture.js.map +1 -0
  325. package/dist/src/core/textures/NoiseTexture.d.ts +43 -0
  326. package/dist/src/core/textures/NoiseTexture.js +68 -0
  327. package/dist/src/core/textures/NoiseTexture.js.map +1 -0
  328. package/dist/src/core/textures/RenderTexture.d.ts +29 -0
  329. package/dist/src/core/textures/RenderTexture.js +54 -0
  330. package/dist/src/core/textures/RenderTexture.js.map +1 -0
  331. package/dist/src/core/textures/SubTexture.d.ts +63 -0
  332. package/dist/src/core/textures/SubTexture.js +135 -0
  333. package/dist/src/core/textures/SubTexture.js.map +1 -0
  334. package/dist/src/core/textures/Texture.d.ts +197 -0
  335. package/dist/src/core/textures/Texture.js +201 -0
  336. package/dist/src/core/textures/Texture.js.map +1 -0
  337. package/dist/src/core/utils.d.ts +22 -0
  338. package/dist/src/core/utils.js +173 -0
  339. package/dist/src/core/utils.js.map +1 -0
  340. package/dist/src/main-api/INode.d.ts +63 -0
  341. package/dist/src/main-api/INode.js +2 -0
  342. package/dist/src/main-api/INode.js.map +1 -0
  343. package/dist/src/main-api/Inspector.d.ts +21 -0
  344. package/dist/src/main-api/Inspector.js +376 -0
  345. package/dist/src/main-api/Inspector.js.map +1 -0
  346. package/dist/src/main-api/Renderer.d.ts +414 -0
  347. package/dist/src/main-api/Renderer.js +342 -0
  348. package/dist/src/main-api/Renderer.js.map +1 -0
  349. package/dist/src/main-api/utils.d.ts +2 -0
  350. package/dist/src/main-api/utils.js +34 -0
  351. package/dist/src/main-api/utils.js.map +1 -0
  352. package/dist/src/utils.d.ts +110 -0
  353. package/dist/src/utils.js +229 -0
  354. package/dist/src/utils.js.map +1 -0
  355. package/dist/tsconfig.dist.tsbuildinfo +1 -0
  356. package/exports/canvas-shaders.ts +28 -0
  357. package/exports/canvas.ts +45 -0
  358. package/exports/index.ts +90 -0
  359. package/exports/inspector.ts +24 -0
  360. package/exports/utils.ts +44 -0
  361. package/exports/webgl-shaders.ts +28 -0
  362. package/exports/webgl.ts +50 -0
  363. package/package.json +93 -0
  364. package/scripts/please-use-pnpm.js +13 -0
  365. package/src/common/CommonTypes.ts +146 -0
  366. package/src/common/EventEmitter.ts +77 -0
  367. package/src/common/IAnimationController.ts +92 -0
  368. package/src/common/IEventEmitter.ts +28 -0
  369. package/src/core/CoreNode.test.ts +203 -0
  370. package/src/core/CoreNode.ts +2476 -0
  371. package/src/core/CoreShaderManager.ts +188 -0
  372. package/src/core/CoreTextNode.ts +448 -0
  373. package/src/core/CoreTextureManager.ts +597 -0
  374. package/src/core/Stage.ts +740 -0
  375. package/src/core/TextureMemoryManager.ts +395 -0
  376. package/src/core/animations/AnimationManager.ts +38 -0
  377. package/src/core/animations/CoreAnimation.ts +284 -0
  378. package/src/core/animations/CoreAnimationController.ts +157 -0
  379. package/src/core/lib/ContextSpy.ts +41 -0
  380. package/src/core/lib/ImageWorker.ts +279 -0
  381. package/src/core/lib/Matrix3d.ts +244 -0
  382. package/src/core/lib/RenderCoords.ts +86 -0
  383. package/src/core/lib/WebGlContextWrapper.ts +1324 -0
  384. package/src/core/lib/textureCompression.ts +152 -0
  385. package/src/core/lib/textureSvg.ts +78 -0
  386. package/src/core/lib/utils.ts +361 -0
  387. package/src/core/lib/validateImageBitmap.ts +76 -0
  388. package/src/core/platform.ts +64 -0
  389. package/src/core/renderers/CoreContextTexture.ts +43 -0
  390. package/src/core/renderers/CoreRenderOp.ts +22 -0
  391. package/src/core/renderers/CoreRenderer.ts +107 -0
  392. package/src/core/renderers/CoreShaderNode.ts +171 -0
  393. package/src/core/renderers/CoreShaderProgram.ts +23 -0
  394. package/src/core/renderers/canvas/CanvasRenderer.ts +299 -0
  395. package/src/core/renderers/canvas/CanvasShaderNode.ts +99 -0
  396. package/src/core/renderers/canvas/CanvasTexture.ts +153 -0
  397. package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +220 -0
  398. package/src/core/renderers/canvas/internal/ColorUtils.ts +85 -0
  399. package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +86 -0
  400. package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +50 -0
  401. package/src/core/renderers/webgl/WebGlCtxTexture.ts +301 -0
  402. package/src/core/renderers/webgl/WebGlRenderOp.ts +145 -0
  403. package/src/core/renderers/webgl/WebGlRenderer.ts +715 -0
  404. package/src/core/renderers/webgl/WebGlShaderNode.ts +433 -0
  405. package/src/core/renderers/webgl/WebGlShaderProgram.ts +310 -0
  406. package/src/core/renderers/webgl/internal/BufferCollection.ts +54 -0
  407. package/src/core/renderers/webgl/internal/RendererUtils.ts +155 -0
  408. package/src/core/renderers/webgl/internal/ShaderUtils.ts +281 -0
  409. package/src/core/renderers/webgl/internal/WebGlUtils.ts +35 -0
  410. package/src/core/shaders/canvas/Border.ts +78 -0
  411. package/src/core/shaders/canvas/HolePunch.ts +62 -0
  412. package/src/core/shaders/canvas/LinearGradient.ts +69 -0
  413. package/src/core/shaders/canvas/RadialGradient.ts +113 -0
  414. package/src/core/shaders/canvas/Rounded.ts +55 -0
  415. package/src/core/shaders/canvas/RoundedWithBorder.ts +68 -0
  416. package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +88 -0
  417. package/src/core/shaders/canvas/RoundedWithShadow.ts +69 -0
  418. package/src/core/shaders/canvas/Shadow.ts +52 -0
  419. package/src/core/shaders/canvas/utils/render.ts +151 -0
  420. package/src/core/shaders/templates/BorderTemplate.ts +115 -0
  421. package/src/core/shaders/templates/HolePunchTemplate.ts +82 -0
  422. package/src/core/shaders/templates/LinearGradientTemplate.ts +71 -0
  423. package/src/core/shaders/templates/RadialGradientTemplate.ts +81 -0
  424. package/src/core/shaders/templates/RoundedTemplate.ts +98 -0
  425. package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +38 -0
  426. package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +35 -0
  427. package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +35 -0
  428. package/src/core/shaders/templates/ShadowTemplate.ts +106 -0
  429. package/src/core/shaders/templates/shaderUtils.ts +47 -0
  430. package/src/core/shaders/webgl/Border.ts +96 -0
  431. package/src/core/shaders/webgl/Default.ts +89 -0
  432. package/src/core/shaders/webgl/DefaultBatched.ts +129 -0
  433. package/src/core/shaders/webgl/HolePunch.ts +78 -0
  434. package/src/core/shaders/webgl/LinearGradient.ts +81 -0
  435. package/src/core/shaders/webgl/RadialGradient.ts +84 -0
  436. package/src/core/shaders/webgl/Rounded.ts +117 -0
  437. package/src/core/shaders/webgl/RoundedWithBorder.ts +114 -0
  438. package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +133 -0
  439. package/src/core/shaders/webgl/RoundedWithShadow.ts +98 -0
  440. package/src/core/shaders/webgl/SdfShader.ts +137 -0
  441. package/src/core/shaders/webgl/Shadow.ts +115 -0
  442. package/src/core/text-rendering/TextRenderingUtils.ts +36 -0
  443. package/src/core/text-rendering/TextTextureRendererUtils.ts +263 -0
  444. package/src/core/text-rendering/TrFontManager.ts +183 -0
  445. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +176 -0
  446. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +139 -0
  447. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +173 -0
  448. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +171 -0
  449. package/src/core/text-rendering/font-face-types/TrFontFace.ts +187 -0
  450. package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +94 -0
  451. package/src/core/text-rendering/font-face-types/utils.ts +39 -0
  452. package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +509 -0
  453. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +815 -0
  454. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +841 -0
  455. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +48 -0
  456. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +66 -0
  457. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +52 -0
  458. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +32 -0
  459. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +117 -0
  460. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +133 -0
  461. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +38 -0
  462. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +408 -0
  463. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +49 -0
  464. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +52 -0
  465. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +205 -0
  466. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +93 -0
  467. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +40 -0
  468. package/src/core/text-rendering/renderers/TextRenderer.ts +550 -0
  469. package/src/core/textures/ColorTexture.ts +102 -0
  470. package/src/core/textures/ImageTexture.ts +376 -0
  471. package/src/core/textures/NoiseTexture.ts +104 -0
  472. package/src/core/textures/RenderTexture.ts +85 -0
  473. package/src/core/textures/SubTexture.ts +205 -0
  474. package/src/core/textures/Texture.ts +337 -0
  475. package/src/core/utils.ts +227 -0
  476. package/src/env.d.ts +7 -0
  477. package/src/main-api/INode.ts +100 -0
  478. package/src/main-api/Inspector.ts +522 -0
  479. package/src/main-api/Renderer.ts +649 -0
  480. package/src/main-api/utils.ts +45 -0
  481. package/src/utils.ts +267 -0
@@ -0,0 +1,1018 @@
1
+ /* eslint-disable @typescript-eslint/no-unsafe-return */
2
+ /* eslint-disable @typescript-eslint/no-explicit-any */
3
+ /* eslint-disable @typescript-eslint/no-unsafe-argument */
4
+ import { assertTruthy } from '../../utils.js';
5
+ import { isWebGl2 } from '../renderers/webgl/internal/WebGlUtils.js';
6
+ /**
7
+ * Optimized WebGL Context Wrapper
8
+ *
9
+ * @remarks
10
+ * This class contains the subset of the WebGLRenderingContext & WebGL2RenderingContext
11
+ * API that is used by the renderer. Select high volume WebGL methods include
12
+ * caching optimizations to avoid making WebGL calls if the state is already set
13
+ * to the desired value.
14
+ *
15
+ * While most methods contained are direct passthroughs to the WebGL context,
16
+ * some methods combine multiple WebGL calls into one for convenience, modify
17
+ * arguments to be more convenient, or are replaced by more specific methods.
18
+ *
19
+ * Not all methods are optimized. Only methods that are called frequently
20
+ * and/or have a high cost are optimized.
21
+ *
22
+ * A subset of GLenum constants are also exposed as properties on this class
23
+ * for convenience.
24
+ */
25
+ export class WebGlContextWrapper {
26
+ gl;
27
+ //#region Cached WebGL State
28
+ activeTextureUnit = 0;
29
+ texture2dUnits;
30
+ texture2dParams = new WeakMap();
31
+ scissorEnabled;
32
+ scissorX;
33
+ scissorY;
34
+ scissorWidth;
35
+ scissorHeight;
36
+ blendEnabled;
37
+ blendSrcRgb;
38
+ blendDstRgb;
39
+ blendSrcAlpha;
40
+ blendDstAlpha;
41
+ boundArrayBuffer;
42
+ boundElementArrayBuffer;
43
+ curProgram;
44
+ //#endregion Cached WebGL State
45
+ //#region Canvas
46
+ canvas;
47
+ //#endregion Canvas
48
+ //#region WebGL Enums
49
+ MAX_RENDERBUFFER_SIZE;
50
+ MAX_TEXTURE_SIZE;
51
+ MAX_VIEWPORT_DIMS;
52
+ MAX_VERTEX_TEXTURE_IMAGE_UNITS;
53
+ MAX_TEXTURE_IMAGE_UNITS;
54
+ MAX_COMBINED_TEXTURE_IMAGE_UNITS;
55
+ MAX_VERTEX_ATTRIBS;
56
+ MAX_VARYING_VECTORS;
57
+ MAX_VERTEX_UNIFORM_VECTORS;
58
+ MAX_FRAGMENT_UNIFORM_VECTORS;
59
+ TEXTURE_MAG_FILTER;
60
+ TEXTURE_MIN_FILTER;
61
+ TEXTURE_WRAP_S;
62
+ TEXTURE_WRAP_T;
63
+ LINEAR;
64
+ CLAMP_TO_EDGE;
65
+ RGB;
66
+ RGBA;
67
+ UNSIGNED_BYTE;
68
+ UNPACK_PREMULTIPLY_ALPHA_WEBGL;
69
+ UNPACK_FLIP_Y_WEBGL;
70
+ FLOAT;
71
+ TRIANGLES;
72
+ UNSIGNED_SHORT;
73
+ ONE;
74
+ ONE_MINUS_SRC_ALPHA;
75
+ VERTEX_SHADER;
76
+ FRAGMENT_SHADER;
77
+ STATIC_DRAW;
78
+ COMPILE_STATUS;
79
+ LINK_STATUS;
80
+ DYNAMIC_DRAW;
81
+ COLOR_ATTACHMENT0;
82
+ INVALID_ENUM;
83
+ INVALID_OPERATION;
84
+ //#endregion WebGL Enums
85
+ constructor(gl) {
86
+ this.gl = gl;
87
+ // The following code extracts the current state of the WebGL context
88
+ // to our local JavaScript cached version of it. This is so we can
89
+ // avoid making WebGL calls if we don't need to.
90
+ // We could assume that the WebGL context is in a default state, but
91
+ // in the future we may want to support restoring a broken WebGL context
92
+ // and this will help with that.
93
+ this.activeTextureUnit =
94
+ gl.getParameter(gl.ACTIVE_TEXTURE) - gl.TEXTURE0;
95
+ const maxTextureUnits = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);
96
+ // save current texture units
97
+ this.texture2dUnits = new Array(maxTextureUnits)
98
+ .fill(undefined)
99
+ .map((_, i) => {
100
+ this.activeTexture(i);
101
+ return gl.getParameter(gl.TEXTURE_BINDING_2D);
102
+ });
103
+ // restore active texture unit
104
+ this.activeTexture(this.activeTextureUnit);
105
+ this.scissorEnabled = gl.isEnabled(gl.SCISSOR_TEST);
106
+ const scissorBox = gl.getParameter(gl.SCISSOR_BOX);
107
+ this.scissorX = scissorBox[0];
108
+ this.scissorY = scissorBox[1];
109
+ this.scissorWidth = scissorBox[2];
110
+ this.scissorHeight = scissorBox[3];
111
+ this.blendEnabled = gl.isEnabled(gl.BLEND);
112
+ this.blendSrcRgb = gl.getParameter(gl.BLEND_SRC_RGB);
113
+ this.blendDstRgb = gl.getParameter(gl.BLEND_DST_RGB);
114
+ this.blendSrcAlpha = gl.getParameter(gl.BLEND_SRC_ALPHA);
115
+ this.blendDstAlpha = gl.getParameter(gl.BLEND_DST_ALPHA);
116
+ this.boundArrayBuffer = gl.getParameter(gl.ARRAY_BUFFER_BINDING);
117
+ this.boundElementArrayBuffer = gl.getParameter(gl.ELEMENT_ARRAY_BUFFER_BINDING);
118
+ this.curProgram = gl.getParameter(gl.CURRENT_PROGRAM);
119
+ this.canvas = gl.canvas;
120
+ // Extract GLenums
121
+ this.MAX_RENDERBUFFER_SIZE = gl.MAX_RENDERBUFFER_SIZE;
122
+ this.MAX_TEXTURE_SIZE = gl.MAX_TEXTURE_SIZE;
123
+ this.MAX_VIEWPORT_DIMS = gl.MAX_VIEWPORT_DIMS;
124
+ this.MAX_VERTEX_TEXTURE_IMAGE_UNITS = gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS;
125
+ this.MAX_TEXTURE_IMAGE_UNITS = gl.MAX_TEXTURE_IMAGE_UNITS;
126
+ this.MAX_COMBINED_TEXTURE_IMAGE_UNITS = gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS;
127
+ this.MAX_VERTEX_ATTRIBS = gl.MAX_VERTEX_ATTRIBS;
128
+ this.MAX_VARYING_VECTORS = gl.MAX_VARYING_VECTORS;
129
+ this.MAX_VERTEX_UNIFORM_VECTORS = gl.MAX_VERTEX_UNIFORM_VECTORS;
130
+ this.MAX_FRAGMENT_UNIFORM_VECTORS = gl.MAX_FRAGMENT_UNIFORM_VECTORS;
131
+ this.TEXTURE_MAG_FILTER = gl.TEXTURE_MAG_FILTER;
132
+ this.TEXTURE_MIN_FILTER = gl.TEXTURE_MIN_FILTER;
133
+ this.TEXTURE_WRAP_S = gl.TEXTURE_WRAP_S;
134
+ this.TEXTURE_WRAP_T = gl.TEXTURE_WRAP_T;
135
+ this.LINEAR = gl.LINEAR;
136
+ this.CLAMP_TO_EDGE = gl.CLAMP_TO_EDGE;
137
+ this.RGB = gl.RGB;
138
+ this.RGBA = gl.RGBA;
139
+ this.UNSIGNED_BYTE = gl.UNSIGNED_BYTE;
140
+ this.UNPACK_PREMULTIPLY_ALPHA_WEBGL = gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL;
141
+ this.UNPACK_FLIP_Y_WEBGL = gl.UNPACK_FLIP_Y_WEBGL;
142
+ this.FLOAT = gl.FLOAT;
143
+ this.TRIANGLES = gl.TRIANGLES;
144
+ this.UNSIGNED_SHORT = gl.UNSIGNED_SHORT;
145
+ this.ONE = gl.ONE;
146
+ this.ONE_MINUS_SRC_ALPHA = gl.ONE_MINUS_SRC_ALPHA;
147
+ this.MAX_VERTEX_TEXTURE_IMAGE_UNITS = gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS;
148
+ this.TRIANGLES = gl.TRIANGLES;
149
+ this.UNSIGNED_SHORT = gl.UNSIGNED_SHORT;
150
+ this.VERTEX_SHADER = gl.VERTEX_SHADER;
151
+ this.FRAGMENT_SHADER = gl.FRAGMENT_SHADER;
152
+ this.STATIC_DRAW = gl.STATIC_DRAW;
153
+ this.COMPILE_STATUS = gl.COMPILE_STATUS;
154
+ this.LINK_STATUS = gl.LINK_STATUS;
155
+ this.DYNAMIC_DRAW = gl.DYNAMIC_DRAW;
156
+ this.COLOR_ATTACHMENT0 = gl.COLOR_ATTACHMENT0;
157
+ this.INVALID_ENUM = gl.INVALID_ENUM;
158
+ this.INVALID_OPERATION = gl.INVALID_OPERATION;
159
+ }
160
+ /**
161
+ * Returns true if the WebGL context is WebGL2
162
+ *
163
+ * @returns
164
+ */
165
+ isWebGl2() {
166
+ return isWebGl2(this.gl);
167
+ }
168
+ /**
169
+ * ```
170
+ * gl.activeTexture(textureUnit + gl.TEXTURE0);
171
+ * ```
172
+ *
173
+ * @remarks
174
+ * **WebGL Difference**: `textureUnit` is based from 0, not `gl.TEXTURE0`.
175
+ *
176
+ * @param textureUnit
177
+ */
178
+ activeTexture(textureUnit) {
179
+ if (this.activeTextureUnit !== textureUnit) {
180
+ this.gl.activeTexture(textureUnit + this.gl.TEXTURE0);
181
+ this.activeTextureUnit = textureUnit;
182
+ }
183
+ }
184
+ /**
185
+ * ```
186
+ * gl.bindTexture(gl.TEXTURE_2D, texture);
187
+ * ```
188
+ * @remarks
189
+ * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D`
190
+ *
191
+ * @param texture
192
+ */
193
+ bindTexture(texture) {
194
+ if (this.texture2dUnits[this.activeTextureUnit] === texture) {
195
+ return;
196
+ }
197
+ this.texture2dUnits[this.activeTextureUnit] = texture;
198
+ this.gl.bindTexture(this.gl.TEXTURE_2D, texture);
199
+ }
200
+ _getActiveTexture() {
201
+ return this.texture2dUnits[this.activeTextureUnit];
202
+ }
203
+ /**
204
+ * ```
205
+ * gl.texParameteri(gl.TEXTURE_2D, pname, param);
206
+ * ```
207
+ * @remarks
208
+ * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D`
209
+ *
210
+ * @param pname
211
+ * @param param
212
+ * @returns
213
+ */
214
+ texParameteri(pname, param) {
215
+ const activeTexture = this._getActiveTexture();
216
+ if (!activeTexture) {
217
+ throw new Error('No active texture');
218
+ }
219
+ let textureParams = this.texture2dParams.get(activeTexture);
220
+ if (!textureParams) {
221
+ textureParams = {};
222
+ this.texture2dParams.set(activeTexture, textureParams);
223
+ }
224
+ if (textureParams[pname] === param) {
225
+ return;
226
+ }
227
+ textureParams[pname] = param;
228
+ this.gl.texParameteri(this.gl.TEXTURE_2D, pname, param);
229
+ }
230
+ texImage2D(level, internalFormat, widthOrFormat, heightOrType, borderOrSource, format, type, pixels) {
231
+ if (format) {
232
+ this.gl.texImage2D(this.gl.TEXTURE_2D, level, internalFormat, widthOrFormat, heightOrType, borderOrSource, format, type, pixels);
233
+ }
234
+ else {
235
+ this.gl.texImage2D(this.gl.TEXTURE_2D, level, internalFormat, widthOrFormat, heightOrType, borderOrSource);
236
+ }
237
+ }
238
+ /**
239
+ * ```
240
+ * gl.compressedTexImage2D(gl.TEXTURE_2D, level, internalFormat, width, height, border, data);
241
+ * ```
242
+ *
243
+ * @remarks
244
+ * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D`
245
+ */
246
+ compressedTexImage2D(level, internalformat, width, height, border, data) {
247
+ this.gl.compressedTexImage2D(this.gl.TEXTURE_2D, level, internalformat, width, height, border, data);
248
+ }
249
+ /**
250
+ * ```
251
+ * gl.pixelStorei(pname, param);
252
+ * ```
253
+ *
254
+ * @param pname
255
+ * @param param
256
+ */
257
+ pixelStorei(pname, param) {
258
+ this.gl.pixelStorei(pname, param);
259
+ }
260
+ /**
261
+ * ```
262
+ * gl.generateMipmap(gl.TEXTURE_2D);
263
+ * ```
264
+ *
265
+ * @remarks
266
+ * **WebGL Difference**: Bind target is always `gl.TEXTURE_2D`
267
+ */
268
+ generateMipmap() {
269
+ this.gl.generateMipmap(this.gl.TEXTURE_2D);
270
+ }
271
+ /**
272
+ * ```
273
+ * gl.createTexture();
274
+ * ```
275
+ *
276
+ * @returns
277
+ */
278
+ createTexture() {
279
+ return this.gl.createTexture();
280
+ }
281
+ /**
282
+ * ```
283
+ * gl.deleteTexture(texture);
284
+ * ```
285
+ *
286
+ * @param texture
287
+ */
288
+ deleteTexture(texture) {
289
+ if (texture) {
290
+ this.texture2dParams.delete(texture);
291
+ }
292
+ this.gl.deleteTexture(texture);
293
+ }
294
+ /**
295
+ * ```
296
+ * gl.deleteFramebuffer(framebuffer);
297
+ *
298
+ * @param framebuffer
299
+ */
300
+ deleteFramebuffer(framebuffer) {
301
+ this.gl.deleteFramebuffer(framebuffer);
302
+ }
303
+ /**
304
+ * ```
305
+ * gl.viewport(x, y, width, height);
306
+ * ```
307
+ */
308
+ viewport(x, y, width, height) {
309
+ this.gl.viewport(x, y, width, height);
310
+ }
311
+ /**
312
+ * ```
313
+ * gl.clearColor(red, green, blue, alpha);
314
+ * ```
315
+ *
316
+ * @param red
317
+ * @param green
318
+ * @param blue
319
+ * @param alpha
320
+ */
321
+ clearColor(red, green, blue, alpha) {
322
+ this.gl.clearColor(red, green, blue, alpha);
323
+ }
324
+ /**
325
+ * ```
326
+ * gl["enable"|"disable"](gl.SCISSOR_TEST);
327
+ * ```
328
+ * @param enable
329
+ */
330
+ setScissorTest(enable) {
331
+ if (enable === this.scissorEnabled) {
332
+ return;
333
+ }
334
+ if (enable) {
335
+ this.gl.enable(this.gl.SCISSOR_TEST);
336
+ }
337
+ else {
338
+ this.gl.disable(this.gl.SCISSOR_TEST);
339
+ }
340
+ this.scissorEnabled = enable;
341
+ }
342
+ /**
343
+ * ```
344
+ * gl.scissor(x, y, width, height);
345
+ * ```
346
+ *
347
+ * @param x
348
+ * @param y
349
+ * @param width
350
+ * @param height
351
+ */
352
+ 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);
358
+ this.scissorX = x;
359
+ this.scissorY = y;
360
+ this.scissorWidth = width;
361
+ this.scissorHeight = height;
362
+ }
363
+ }
364
+ /**
365
+ * ```
366
+ * gl["enable"|"disable"](gl.BLEND);
367
+ * ```
368
+ *
369
+ * @param blend
370
+ * @returns
371
+ */
372
+ setBlend(blend) {
373
+ if (blend === this.blendEnabled) {
374
+ return;
375
+ }
376
+ if (blend) {
377
+ this.gl.enable(this.gl.BLEND);
378
+ }
379
+ else {
380
+ this.gl.disable(this.gl.BLEND);
381
+ }
382
+ this.blendEnabled = blend;
383
+ }
384
+ /**
385
+ * ```
386
+ * gl.blendFunc(src, dst);
387
+ * ```
388
+ *
389
+ * @param src
390
+ * @param dst
391
+ */
392
+ 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);
398
+ this.blendSrcRgb = src;
399
+ this.blendDstRgb = dst;
400
+ this.blendSrcAlpha = src;
401
+ this.blendDstAlpha = dst;
402
+ }
403
+ }
404
+ /**
405
+ * ```
406
+ * gl.createBuffer();
407
+ * ```
408
+ *
409
+ * @returns
410
+ */
411
+ createBuffer() {
412
+ return this.gl.createBuffer();
413
+ }
414
+ /**
415
+ * ```
416
+ * gl.createFramebuffer();
417
+ * ```
418
+ * @returns
419
+ */
420
+ createFramebuffer() {
421
+ return this.gl.createFramebuffer();
422
+ }
423
+ /**
424
+ * ```
425
+ * gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
426
+ * ```
427
+ *
428
+ * @param framebuffer
429
+ */
430
+ bindFramebuffer(framebuffer) {
431
+ this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, framebuffer);
432
+ }
433
+ /**
434
+ * ```
435
+ * gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);
436
+ * ```
437
+ * @remarks
438
+ * **WebGL Difference**: Bind target is always `gl.FRAMEBUFFER` and textarget is always `gl.TEXTURE_2D`
439
+ */
440
+ framebufferTexture2D(attachment, texture, level) {
441
+ const gl = this.gl;
442
+ gl.framebufferTexture2D(gl.FRAMEBUFFER, attachment, gl.TEXTURE_2D, texture, level);
443
+ }
444
+ /**
445
+ * ```
446
+ * gl.clear(gl.COLOR_BUFFER_BIT);
447
+ * ```
448
+ *
449
+ * @remarks
450
+ * **WebGL Difference**: Clear mask is always `gl.COLOR_BUFFER_BIT`
451
+ */
452
+ clear() {
453
+ this.gl.clear(this.gl.COLOR_BUFFER_BIT);
454
+ }
455
+ /**
456
+ * ```
457
+ * gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
458
+ * gl.bufferData(gl.ARRAY_BUFFER, data, usage);
459
+ * ```
460
+ *
461
+ * @remarks
462
+ * **WebGL Combo**: `gl.bindBuffer` and `gl.bufferData` are combined into one function.
463
+ *
464
+ * @param buffer
465
+ * @param data
466
+ * @param usage
467
+ */
468
+ arrayBufferData(buffer, data, usage) {
469
+ if (this.boundArrayBuffer !== buffer) {
470
+ this.gl.bindBuffer(this.gl.ARRAY_BUFFER, buffer);
471
+ this.boundArrayBuffer = buffer;
472
+ }
473
+ this.gl.bufferData(this.gl.ARRAY_BUFFER, data, usage);
474
+ }
475
+ /**
476
+ * ```
477
+ * gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer);
478
+ * gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, data, usage);
479
+ * ```
480
+ * @remarks
481
+ * **WebGL Combo**: `gl.bindBuffer` and `gl.bufferData` are combined into one function.
482
+ *
483
+ * @param buffer
484
+ * @param data
485
+ * @param usage
486
+ */
487
+ elementArrayBufferData(buffer, data, usage) {
488
+ if (this.boundElementArrayBuffer !== buffer) {
489
+ this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, buffer);
490
+ this.boundElementArrayBuffer = buffer;
491
+ }
492
+ this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, data, usage);
493
+ }
494
+ /**
495
+ * ```
496
+ * gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
497
+ * gl.vertexAttribPointer(index, size, type, normalized, stride, offset);
498
+ * ```
499
+ *
500
+ * @remarks
501
+ * **WebGL Combo**: `gl.bindBuffer` and `gl.vertexAttribPointer` are combined into one function.
502
+ *
503
+ * @param buffer
504
+ * @param index
505
+ * @param size
506
+ * @param type
507
+ * @param normalized
508
+ * @param stride
509
+ * @param offset
510
+ */
511
+ vertexAttribPointer(buffer, index, size, type, normalized, stride, offset) {
512
+ if (this.boundArrayBuffer !== buffer) {
513
+ this.gl.bindBuffer(this.gl.ARRAY_BUFFER, buffer);
514
+ this.boundArrayBuffer = buffer;
515
+ }
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;
548
+ }
549
+ /**
550
+ * ```
551
+ * gl.useProgram(program);
552
+ * ```
553
+ *
554
+ * @param program
555
+ * @returns
556
+ */
557
+ useProgram(program) {
558
+ if (this.curProgram === program) {
559
+ return;
560
+ }
561
+ this.gl.useProgram(program);
562
+ this.curProgram = program;
563
+ }
564
+ /**
565
+ * Sets the value of a single float uniform variable.
566
+ *
567
+ * @param location - The location of the uniform variable.
568
+ * @param v0 - The value to set.
569
+ */
570
+ uniform1f(location, v0) {
571
+ this.gl.uniform1f(this.gl.getUniformLocation(this.curProgram, location), v0);
572
+ }
573
+ /**
574
+ * Sets the value of a float array uniform variable.
575
+ *
576
+ * @param location - The location of the uniform variable.
577
+ * @param value - The array of values to set.
578
+ */
579
+ uniform1fv(location, value) {
580
+ this.gl.uniform1fv(this.gl.getUniformLocation(this.curProgram, location), value);
581
+ }
582
+ /**
583
+ * Sets the value of a single integer uniform variable.
584
+ *
585
+ * @param location - The location of the uniform variable.
586
+ * @param v0 - The value to set.
587
+ */
588
+ uniform1i(location, v0) {
589
+ this.gl.uniform1i(this.gl.getUniformLocation(this.curProgram, location), v0);
590
+ }
591
+ /**
592
+ * Sets the value of an integer array uniform variable.
593
+ *
594
+ * @param location - The location of the uniform variable.
595
+ * @param value - The array of values to set.
596
+ */
597
+ uniform1iv(location, value) {
598
+ this.gl.uniform1iv(this.gl.getUniformLocation(this.curProgram, location), value);
599
+ }
600
+ /**
601
+ * Sets the value of a vec2 uniform variable.
602
+ *
603
+ * @param location - The location of the uniform variable.
604
+ * @param v0 - The first component of the vector.
605
+ * @param v1 - The second component of the vector.
606
+ */
607
+ uniform2f(location, v0, v1) {
608
+ this.gl.uniform2f(this.gl.getUniformLocation(this.curProgram, location), v0, v1);
609
+ }
610
+ /**
611
+ * Sets the value of a vec2 array uniform variable.
612
+ *
613
+ * @param location - The location of the uniform variable.
614
+ * @param value - The array of vec2 values to set.
615
+ */
616
+ uniform2fv(location, value) {
617
+ this.gl.uniform2fv(this.gl.getUniformLocation(this.curProgram, location), value);
618
+ }
619
+ /**
620
+ * Sets the value of a ivec2 uniform variable.
621
+ *
622
+ * @param location - The location of the uniform variable.
623
+ * @param v0 - The first component of the vector.
624
+ * @param v1 - The second component of the vector.
625
+ */
626
+ uniform2i(location, v0, v1) {
627
+ this.gl.uniform2i(this.gl.getUniformLocation(this.curProgram, location), v0, v1);
628
+ }
629
+ /**
630
+ * Sets the value of an ivec2 array uniform variable.
631
+ *
632
+ * @param location - The location of the uniform variable.
633
+ * @param value - The array of ivec2 values to set.
634
+ */
635
+ uniform2iv(location, value) {
636
+ this.gl.uniform2iv(this.gl.getUniformLocation(this.curProgram, location), value);
637
+ }
638
+ /**
639
+ * Sets the value of a vec3 uniform variable.
640
+ *
641
+ * @param location - The location of the uniform variable.
642
+ * @param v0 - The first component of the vector.
643
+ * @param v1 - The second component of the vector.
644
+ * @param v2 - The third component of the vector.
645
+ */
646
+ uniform3f(location, v0, v1, v2) {
647
+ this.gl.uniform3f(this.gl.getUniformLocation(this.curProgram, location), v0, v1, v2);
648
+ }
649
+ /**
650
+ * Sets the value of a vec3 array uniform variable.
651
+ *
652
+ * @param location - The location of the uniform variable.
653
+ * @param value - The array of vec3 values to set.
654
+ */
655
+ uniform3fv(location, value) {
656
+ this.gl.uniform3fv(this.gl.getUniformLocation(this.curProgram, location), value);
657
+ }
658
+ /**
659
+ * Sets the value of a ivec3 uniform variable.
660
+ *
661
+ * @param location - The location of the uniform variable.
662
+ * @param v0 - The first component of the vector.
663
+ * @param v1 - The second component of the vector.
664
+ * @param v2 - The third component of the vector.
665
+ */
666
+ uniform3i(location, v0, v1, v2) {
667
+ this.gl.uniform3i(this.gl.getUniformLocation(this.curProgram, location), v0, v1, v2);
668
+ }
669
+ /**
670
+ * Sets the value of an ivec3 array uniform variable.
671
+ *
672
+ * @param location - The location of the uniform variable.
673
+ * @param value - The array of ivec3 values to set.
674
+ */
675
+ uniform3iv(location, value) {
676
+ this.gl.uniform3iv(this.gl.getUniformLocation(this.curProgram, location), value);
677
+ }
678
+ /**
679
+ * Sets the value of a vec4 uniform variable.
680
+ *
681
+ * @param location - The location of the uniform variable.
682
+ * @param v0 - The first component of the vector.
683
+ * @param v1 - The second component of the vector.
684
+ * @param v2 - The third component of the vector.
685
+ * @param v3 - The fourth component of the vector.
686
+ */
687
+ uniform4f(location, v0, v1, v2, v3) {
688
+ this.gl.uniform4f(this.gl.getUniformLocation(this.curProgram, location), v0, v1, v2, v3);
689
+ }
690
+ /**
691
+ * Sets the value of a vec4 array uniform variable.
692
+ *
693
+ * @param location - The location of the uniform variable.
694
+ * @param value - The array of vec4 values to set.
695
+ */
696
+ uniform4fv(location, value) {
697
+ this.gl.uniform4fv(this.gl.getUniformLocation(this.curProgram, location), value);
698
+ }
699
+ /**
700
+ * Sets the value of a ivec4 uniform variable.
701
+ *
702
+ * @param location - The location of the uniform variable.
703
+ * @param v0 - The first component of the vector.
704
+ * @param v1 - The second component of the vector.
705
+ * @param v2 - The third component of the vector.
706
+ * @param v3 - The fourth component of the vector.
707
+ */
708
+ uniform4i(location, v0, v1, v2, v3) {
709
+ this.gl.uniform4i(this.gl.getUniformLocation(this.curProgram, location), v0, v1, v2, v3);
710
+ }
711
+ /**
712
+ * Sets the value of an ivec4 array uniform variable.
713
+ *
714
+ * @param location - The location of the uniform variable.
715
+ * @param value - The array of ivec4 values to set.
716
+ */
717
+ uniform4iv(location, value) {
718
+ this.gl.uniform4iv(this.gl.getUniformLocation(this.curProgram, location), value);
719
+ }
720
+ /**
721
+ * Sets the value of a mat2 uniform variable.
722
+ *
723
+ * @param location - The location of the uniform variable.
724
+ * @param transpose - Whether to transpose the matrix.
725
+ * @param value - The array of mat2 values to set.
726
+ */
727
+ uniformMatrix2fv(location, value) {
728
+ this.gl.uniformMatrix2fv(this.gl.getUniformLocation(this.curProgram, location), false, value);
729
+ }
730
+ /**
731
+ * Sets the value of a mat2 uniform variable.
732
+ * @param location - The location of the uniform variable.
733
+ * @param value - The array of mat2 values to set.
734
+ */
735
+ uniformMatrix3fv(location, value) {
736
+ this.gl.uniformMatrix3fv(this.gl.getUniformLocation(this.curProgram, location), false, value);
737
+ }
738
+ /**
739
+ * Sets the value of a mat4 uniform variable.
740
+ * @param location - The location of the uniform variable.
741
+ * @param value - The array of mat4 values to set.
742
+ */
743
+ uniformMatrix4fv(location, value) {
744
+ this.gl.uniformMatrix4fv(this.gl.getUniformLocation(this.curProgram, location), false, value);
745
+ }
746
+ /**
747
+ * ```
748
+ * gl.getParameter(pname);
749
+ * ```
750
+ *
751
+ * @param pname
752
+ * @returns
753
+ */
754
+ getParameter(pname) {
755
+ return this.gl.getParameter(pname);
756
+ }
757
+ /**
758
+ * ```
759
+ * gl.drawElements(mode, count, type, offset);
760
+ * ```
761
+ *
762
+ * @param mode
763
+ * @param count
764
+ * @param type
765
+ * @param offset
766
+ */
767
+ drawElements(mode, count, type, offset) {
768
+ this.gl.drawElements(mode, count, type, offset);
769
+ }
770
+ /**
771
+ * ```
772
+ * gl.drawArrays(mode, first, count);
773
+ * ```
774
+ *
775
+ * @param name
776
+ * @returns
777
+ */
778
+ getExtension(name) {
779
+ return this.gl.getExtension(name);
780
+ }
781
+ /**
782
+ * ```
783
+ * gl.getError(type);
784
+ * ```
785
+ *
786
+ * @returns
787
+ */
788
+ getError() {
789
+ return this.gl.getError();
790
+ }
791
+ /**
792
+ * ```
793
+ * gl.createVertexArray();
794
+ * ```
795
+ *
796
+ * @returns
797
+ */
798
+ createVertexArray() {
799
+ if (this.gl instanceof WebGL2RenderingContext) {
800
+ return this.gl.createVertexArray();
801
+ }
802
+ return undefined;
803
+ }
804
+ /**
805
+ * ```
806
+ * gl.bindVertexArray(vertexArray);
807
+ * ```
808
+ *
809
+ * @param vertexArray
810
+ */
811
+ bindVertexArray(vertexArray) {
812
+ if (this.gl instanceof WebGL2RenderingContext) {
813
+ this.gl.bindVertexArray(vertexArray);
814
+ }
815
+ }
816
+ /**
817
+ * ```
818
+ * gl.getAttribLocation(program, name);
819
+ * ```
820
+ *
821
+ * @param program
822
+ * @param name
823
+ * @returns
824
+ */
825
+ getAttribLocation(program, name) {
826
+ return this.gl.getAttribLocation(program, name);
827
+ }
828
+ /**
829
+ * ```
830
+ * gl.getUniformLocation(program, name);
831
+ * ```
832
+ *
833
+ * @param program
834
+ * @param name
835
+ * @returns
836
+ */
837
+ getUniformLocation(program, name) {
838
+ return this.gl.getUniformLocation(program, name);
839
+ }
840
+ /**
841
+ * ```
842
+ * gl.enableVertexAttribArray(index);
843
+ * ```
844
+ *
845
+ * @param index
846
+ */
847
+ enableVertexAttribArray(index) {
848
+ this.gl.enableVertexAttribArray(index);
849
+ }
850
+ /**
851
+ * ```
852
+ * gl.disableVertexAttribArray(index);
853
+ * ```
854
+ *
855
+ * @param index
856
+ */
857
+ disableVertexAttribArray(index) {
858
+ this.gl.disableVertexAttribArray(index);
859
+ }
860
+ /**
861
+ * ```
862
+ * gl.createShader(type);
863
+ * ```
864
+ *
865
+ * @param type
866
+ * @returns
867
+ */
868
+ createShader(type) {
869
+ return this.gl.createShader(type);
870
+ }
871
+ /**
872
+ * ```
873
+ * gl.compileShader(shader);
874
+ * ```
875
+ *
876
+ * @param shader
877
+ * @returns
878
+ */
879
+ compileShader(shader) {
880
+ this.gl.compileShader(shader);
881
+ }
882
+ /**
883
+ * ```
884
+ * gl.attachShader(program, shader);
885
+ * ```
886
+ *
887
+ * @param program
888
+ * @param shader
889
+ */
890
+ attachShader(program, shader) {
891
+ this.gl.attachShader(program, shader);
892
+ }
893
+ /**
894
+ * ```
895
+ * gl.linkProgram(program);
896
+ * ```
897
+ *
898
+ * @param program
899
+ */
900
+ linkProgram(program) {
901
+ this.gl.linkProgram(program);
902
+ }
903
+ /**
904
+ * ```
905
+ * gl.deleteProgram(shader);
906
+ * ```
907
+ *
908
+ * @param shader
909
+ */
910
+ deleteProgram(shader) {
911
+ this.gl.deleteProgram(shader);
912
+ }
913
+ /**
914
+ * ```
915
+ * gl.getShaderParameter(shader, pname);
916
+ * ```
917
+ *
918
+ * @param shader
919
+ * @param pname
920
+ */
921
+ getShaderParameter(shader, pname) {
922
+ return this.gl.getShaderParameter(shader, pname);
923
+ }
924
+ /**
925
+ * ```
926
+ * gl.getShaderInfoLog(shader);
927
+ * ```
928
+ *
929
+ * @param shader
930
+ */
931
+ getShaderInfoLog(shader) {
932
+ return this.gl.getShaderInfoLog(shader);
933
+ }
934
+ /**
935
+ * ```
936
+ * gl.createProgram();
937
+ * ```
938
+ *
939
+ * @returns
940
+ */
941
+ createProgram() {
942
+ return this.gl.createProgram();
943
+ }
944
+ /**
945
+ * ```
946
+ * gl.getProgramParameter(program, pname);
947
+ * ```
948
+ *
949
+ * @param program
950
+ * @param pname
951
+ * @returns
952
+ */
953
+ getProgramParameter(program, pname) {
954
+ return this.gl.getProgramParameter(program, pname);
955
+ }
956
+ /**
957
+ * ```
958
+ * gl.getProgramInfoLog(program);
959
+ * ```
960
+ *
961
+ * @param program
962
+ * @returns
963
+ */
964
+ getProgramInfoLog(program) {
965
+ return this.gl.getProgramInfoLog(program);
966
+ }
967
+ /**
968
+ * ```
969
+ * gl.shaderSource(shader, source);
970
+ * ```
971
+ *
972
+ * @param shader
973
+ * @param source
974
+ */
975
+ shaderSource(shader, source) {
976
+ this.gl.shaderSource(shader, source);
977
+ }
978
+ /**
979
+ * ```
980
+ * gl.deleteShader(shader);
981
+ * ```
982
+ *
983
+ * @param shader
984
+ */
985
+ deleteShader(shader) {
986
+ this.gl.deleteShader(shader);
987
+ }
988
+ }
989
+ /**
990
+ * Compare two arrays for equality.
991
+ *
992
+ * @remarks
993
+ * This function will not try to compare nested arrays or Float32Arrays and
994
+ * instead will always return false when they are encountered.
995
+ *
996
+ * @param a
997
+ * @param b
998
+ * @returns
999
+ */
1000
+ export function compareArrays(a, b) {
1001
+ if (a.length !== b.length) {
1002
+ return false;
1003
+ }
1004
+ let result = false;
1005
+ for (let i = 0; i < a.length; i++) {
1006
+ if (Array.isArray(a[i]) || a[i] instanceof Float32Array) {
1007
+ result = false;
1008
+ break;
1009
+ }
1010
+ if (a[i] !== b[i]) {
1011
+ result = false;
1012
+ break;
1013
+ }
1014
+ result = true;
1015
+ }
1016
+ return result;
1017
+ }
1018
+ //# sourceMappingURL=WebGlContextWrapper.js.map