@lightningtv/renderer 2.16.1

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