@lightningjs/renderer 3.0.0-beta1 → 3.0.0-beta11

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 (490) hide show
  1. package/README.md +13 -27
  2. package/dist/exports/canvas.d.ts +1 -1
  3. package/dist/exports/canvas.js +1 -1
  4. package/dist/exports/canvas.js.map +1 -1
  5. package/dist/exports/index.d.ts +1 -5
  6. package/dist/exports/index.js +1 -5
  7. package/dist/exports/index.js.map +1 -1
  8. package/dist/exports/utils.d.ts +2 -1
  9. package/dist/exports/utils.js +2 -1
  10. package/dist/exports/utils.js.map +1 -1
  11. package/dist/exports/webgl.d.ts +2 -1
  12. package/dist/exports/webgl.js +2 -1
  13. package/dist/exports/webgl.js.map +1 -1
  14. package/dist/src/core/CoreNode.d.ts +45 -69
  15. package/dist/src/core/CoreNode.js +323 -305
  16. package/dist/src/core/CoreNode.js.map +1 -1
  17. package/dist/src/core/CoreShaderManager.d.ts +3 -5
  18. package/dist/src/core/CoreShaderManager.js.map +1 -1
  19. package/dist/src/core/CoreTextNode.d.ts +61 -87
  20. package/dist/src/core/CoreTextNode.js +276 -235
  21. package/dist/src/core/CoreTextNode.js.map +1 -1
  22. package/dist/src/core/CoreTextureManager.d.ts +9 -11
  23. package/dist/src/core/CoreTextureManager.js +80 -91
  24. package/dist/src/core/CoreTextureManager.js.map +1 -1
  25. package/dist/src/core/Stage.d.ts +75 -31
  26. package/dist/src/core/Stage.js +270 -136
  27. package/dist/src/core/Stage.js.map +1 -1
  28. package/dist/src/core/TextureMemoryManager.d.ts +10 -1
  29. package/dist/src/core/TextureMemoryManager.js +112 -78
  30. package/dist/src/core/TextureMemoryManager.js.map +1 -1
  31. package/dist/src/core/animations/CoreAnimation.js +5 -0
  32. package/dist/src/core/animations/CoreAnimation.js.map +1 -1
  33. package/dist/src/core/animations/CoreAnimationController.d.ts +1 -0
  34. package/dist/src/core/animations/CoreAnimationController.js +11 -4
  35. package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
  36. package/dist/src/core/lib/ImageWorker.js +3 -2
  37. package/dist/src/core/lib/ImageWorker.js.map +1 -1
  38. package/dist/src/core/lib/RenderCoords.d.ts +9 -10
  39. package/dist/src/core/lib/RenderCoords.js +43 -55
  40. package/dist/src/core/lib/RenderCoords.js.map +1 -1
  41. package/dist/src/core/lib/WebGlContextWrapper.d.ts +51 -2
  42. package/dist/src/core/lib/WebGlContextWrapper.js +92 -22
  43. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
  44. package/dist/src/core/lib/colorCache.d.ts +1 -0
  45. package/dist/src/core/lib/colorCache.js +19 -0
  46. package/dist/src/core/lib/colorCache.js.map +1 -0
  47. package/dist/src/core/lib/colorParser.d.ts +21 -0
  48. package/dist/src/core/lib/colorParser.js +72 -0
  49. package/dist/src/core/lib/colorParser.js.map +1 -0
  50. package/dist/src/core/lib/utils.d.ts +3 -0
  51. package/dist/src/core/lib/utils.js +42 -0
  52. package/dist/src/core/lib/utils.js.map +1 -1
  53. package/dist/src/core/lib/validateImageBitmap.d.ts +2 -1
  54. package/dist/src/core/lib/validateImageBitmap.js +4 -4
  55. package/dist/src/core/lib/validateImageBitmap.js.map +1 -1
  56. package/dist/src/core/platform.js +29 -4
  57. package/dist/src/core/platform.js.map +1 -1
  58. package/dist/src/core/platforms/Platform.d.ts +37 -0
  59. package/dist/src/{main-api/IRenderDriver.js → core/platforms/Platform.js} +4 -2
  60. package/dist/src/core/platforms/Platform.js.map +1 -0
  61. package/dist/src/core/platforms/web/WebPlatform.d.ts +9 -0
  62. package/dist/src/core/platforms/web/WebPlatform.js +84 -0
  63. package/dist/src/core/platforms/web/WebPlatform.js.map +1 -0
  64. package/dist/src/core/renderers/CoreContextTexture.d.ts +1 -1
  65. package/dist/src/core/renderers/CoreRenderer.d.ts +5 -2
  66. package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
  67. package/dist/src/core/renderers/CoreShaderNode.d.ts +3 -3
  68. package/dist/src/core/renderers/CoreShaderNode.js +8 -2
  69. package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
  70. package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +1 -1
  71. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +7 -6
  72. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -1
  73. package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +1 -2
  74. package/dist/src/core/renderers/canvas/CanvasRenderer.js +10 -21
  75. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
  76. package/dist/src/core/renderers/canvas/CanvasShaderNode.js +3 -5
  77. package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -1
  78. package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +2 -2
  79. package/dist/src/core/renderers/canvas/CanvasTexture.js +11 -9
  80. package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
  81. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +13 -0
  82. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +113 -192
  83. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -1
  84. package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +0 -2
  85. package/dist/src/core/renderers/canvas/internal/ColorUtils.js +0 -14
  86. package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -1
  87. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +3 -0
  88. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +1 -1
  89. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +5 -6
  90. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +30 -18
  91. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
  92. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +5 -2
  93. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
  94. package/dist/src/core/renderers/webgl/WebGlCoreShader.js +3 -1
  95. package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -1
  96. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +3 -0
  97. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -1
  98. package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +5 -6
  99. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +30 -21
  100. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
  101. package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +10 -2
  102. package/dist/src/core/renderers/webgl/WebGlRenderOp.js +37 -19
  103. package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -1
  104. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +5 -3
  105. package/dist/src/core/renderers/webgl/WebGlRenderer.js +144 -117
  106. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
  107. package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +2 -1
  108. package/dist/src/core/renderers/webgl/WebGlShaderNode.js +1 -4
  109. package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
  110. package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +5 -3
  111. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +55 -31
  112. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
  113. package/dist/src/core/shaders/canvas/Border.js +1 -1
  114. package/dist/src/core/shaders/canvas/Border.js.map +1 -1
  115. package/dist/src/core/shaders/canvas/LinearGradient.js +5 -3
  116. package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
  117. package/dist/src/core/shaders/canvas/RadialGradient.js +13 -11
  118. package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
  119. package/dist/src/core/shaders/canvas/RoundedWithBorder.js +14 -6
  120. package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
  121. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +10 -8
  122. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
  123. package/dist/src/core/shaders/canvas/RoundedWithShadow.js +7 -5
  124. package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
  125. package/dist/src/core/shaders/templates/BorderTemplate.d.ts +1 -1
  126. package/dist/src/core/shaders/templates/BorderTemplate.js +1 -1
  127. package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -1
  128. package/dist/src/core/shaders/templates/HolePunchTemplate.js +1 -1
  129. package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -1
  130. package/dist/src/core/shaders/templates/RoundedTemplate.js +1 -1
  131. package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -1
  132. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +1 -1
  133. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +1 -1
  134. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +1 -1
  135. package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +1 -1
  136. package/dist/src/core/shaders/utils.d.ts +5 -0
  137. package/dist/src/core/shaders/utils.js +41 -0
  138. package/dist/src/core/shaders/utils.js.map +1 -0
  139. package/dist/src/core/shaders/webgl/Border.js +57 -34
  140. package/dist/src/core/shaders/webgl/Border.js.map +1 -1
  141. package/dist/src/core/shaders/webgl/HolePunch.js +4 -3
  142. package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
  143. package/dist/src/core/shaders/webgl/LinearGradient.js +5 -4
  144. package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
  145. package/dist/src/core/shaders/webgl/RadialGradient.js +6 -5
  146. package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
  147. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +79 -36
  148. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
  149. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +92 -42
  150. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
  151. package/dist/src/core/shaders/webgl/SdfShader.js +1 -1
  152. package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
  153. package/dist/src/core/shaders/webgl/Spinner.js +2 -0
  154. package/dist/src/core/shaders/webgl/Spinner.js.map +1 -0
  155. package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +41 -0
  156. package/dist/src/core/text-rendering/CanvasFontHandler.js +159 -0
  157. package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -0
  158. package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +22 -0
  159. package/dist/src/core/text-rendering/CanvasTextRenderer.js +366 -0
  160. package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -0
  161. package/dist/src/core/text-rendering/SdfFontHandler.d.ts +152 -0
  162. package/dist/src/core/text-rendering/SdfFontHandler.js +368 -0
  163. package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -0
  164. package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +17 -0
  165. package/dist/src/core/text-rendering/SdfTextRenderer.js +355 -0
  166. package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -0
  167. package/dist/src/core/text-rendering/TextRenderer.d.ts +351 -0
  168. package/dist/src/{main-api/ICoreDriver.js → core/text-rendering/TextRenderer.js} +1 -1
  169. package/dist/src/core/text-rendering/TextRenderer.js.map +1 -0
  170. package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -1
  171. package/dist/src/core/text-rendering/Utils.d.ts +71 -0
  172. package/dist/src/core/text-rendering/Utils.js +212 -0
  173. package/dist/src/core/text-rendering/Utils.js.map +1 -0
  174. package/dist/src/core/text-rendering/canvas/Settings.d.ts +64 -0
  175. package/dist/src/{main-api/texture-usage-trackers/TextureUsageTracker.js → core/text-rendering/canvas/Settings.js} +3 -11
  176. package/dist/src/core/text-rendering/canvas/Settings.js.map +1 -0
  177. package/dist/src/core/text-rendering/canvas/Utils.d.ts +20 -0
  178. package/dist/src/core/text-rendering/canvas/Utils.js +144 -0
  179. package/dist/src/core/text-rendering/canvas/Utils.js.map +1 -0
  180. package/dist/src/core/text-rendering/canvas/calculateRenderInfo.d.ts +60 -0
  181. package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js +183 -0
  182. package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js.map +1 -0
  183. package/dist/src/core/text-rendering/canvas/draw.d.ts +5 -0
  184. package/dist/src/core/text-rendering/canvas/draw.js +132 -0
  185. package/dist/src/core/text-rendering/canvas/draw.js.map +1 -0
  186. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +2 -2
  187. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -1
  188. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +0 -6
  189. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
  190. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +3 -2
  191. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +30 -34
  192. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  193. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +4 -1
  194. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
  195. package/dist/src/core/text-rendering/sdf/PeekableGenerator.d.ts +12 -0
  196. package/dist/src/core/text-rendering/sdf/PeekableGenerator.js +61 -0
  197. package/dist/src/core/text-rendering/sdf/PeekableGenerator.js.map +1 -0
  198. package/dist/src/core/text-rendering/sdf/SimpleFontShaper.d.ts +45 -0
  199. package/dist/src/core/text-rendering/sdf/SimpleFontShaper.js +69 -0
  200. package/dist/src/core/text-rendering/sdf/SimpleFontShaper.js.map +1 -0
  201. package/dist/src/core/text-rendering/sdf/Utils.d.ts +26 -0
  202. package/dist/src/core/text-rendering/sdf/Utils.js +304 -0
  203. package/dist/src/core/text-rendering/sdf/Utils.js.map +1 -0
  204. package/dist/src/core/text-rendering/sdf/index.d.ts +1 -0
  205. package/dist/src/core/{CoreExtension.js → text-rendering/sdf/index.js} +3 -12
  206. package/dist/src/core/text-rendering/sdf/index.js.map +1 -0
  207. package/dist/src/core/textures/ImageTexture.d.ts +4 -3
  208. package/dist/src/core/textures/ImageTexture.js +36 -9
  209. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  210. package/dist/src/core/textures/Texture.d.ts +21 -2
  211. package/dist/src/core/textures/Texture.js +37 -6
  212. package/dist/src/core/textures/Texture.js.map +1 -1
  213. package/dist/src/core/utils.d.ts +1 -1
  214. package/dist/src/main-api/INode.d.ts +2 -2
  215. package/dist/src/main-api/Inspector.d.ts +6 -1
  216. package/dist/src/main-api/Inspector.js +43 -7
  217. package/dist/src/main-api/Inspector.js.map +1 -1
  218. package/dist/src/main-api/Renderer.d.ts +122 -46
  219. package/dist/src/main-api/Renderer.js +174 -37
  220. package/dist/src/main-api/Renderer.js.map +1 -1
  221. package/dist/src/utils.d.ts +1 -6
  222. package/dist/src/utils.js +2 -9
  223. package/dist/src/utils.js.map +1 -1
  224. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  225. package/exports/canvas.ts +1 -1
  226. package/exports/index.ts +1 -8
  227. package/exports/utils.ts +7 -1
  228. package/exports/webgl.ts +3 -1
  229. package/package.json +2 -3
  230. package/src/core/CoreNode.test.ts +0 -1
  231. package/src/core/CoreNode.ts +403 -388
  232. package/src/core/CoreShaderManager.ts +5 -10
  233. package/src/core/CoreTextNode.ts +337 -302
  234. package/src/core/CoreTextureManager.ts +78 -110
  235. package/src/core/Stage.ts +344 -178
  236. package/src/core/TextureMemoryManager.ts +150 -100
  237. package/src/core/animations/CoreAnimation.ts +7 -0
  238. package/src/core/animations/CoreAnimationController.ts +13 -4
  239. package/src/core/lib/ImageWorker.ts +9 -2
  240. package/src/core/lib/RenderCoords.ts +52 -67
  241. package/src/core/lib/WebGlContextWrapper.ts +125 -68
  242. package/src/core/lib/colorCache.ts +20 -0
  243. package/src/core/{renderers/canvas/internal/ColorUtils.ts → lib/colorParser.ts} +2 -2
  244. package/src/core/lib/utils.ts +51 -0
  245. package/src/core/lib/validateImageBitmap.ts +17 -6
  246. package/src/core/platforms/Platform.ts +77 -0
  247. package/src/core/platforms/web/WebPlatform.ts +121 -0
  248. package/src/core/renderers/CoreContextTexture.ts +1 -1
  249. package/src/core/renderers/CoreRenderer.ts +5 -2
  250. package/src/core/renderers/CoreShaderNode.ts +10 -6
  251. package/src/core/renderers/canvas/CanvasRenderer.ts +12 -28
  252. package/src/core/renderers/canvas/CanvasShaderNode.ts +3 -6
  253. package/src/core/renderers/canvas/CanvasTexture.ts +17 -14
  254. package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +5 -0
  255. package/src/core/renderers/webgl/WebGlCtxTexture.ts +52 -43
  256. package/src/core/renderers/webgl/WebGlRenderOp.ts +46 -24
  257. package/src/core/renderers/webgl/WebGlRenderer.ts +177 -145
  258. package/src/core/renderers/webgl/WebGlShaderNode.ts +7 -5
  259. package/src/core/renderers/webgl/WebGlShaderProgram.ts +68 -37
  260. package/src/core/shaders/canvas/Border.ts +1 -4
  261. package/src/core/shaders/canvas/LinearGradient.ts +8 -6
  262. package/src/core/shaders/canvas/RadialGradient.ts +22 -36
  263. package/src/core/shaders/canvas/RoundedWithBorder.ts +17 -11
  264. package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +14 -12
  265. package/src/core/shaders/canvas/RoundedWithShadow.ts +8 -7
  266. package/src/core/shaders/templates/BorderTemplate.ts +1 -1
  267. package/src/core/shaders/templates/HolePunchTemplate.ts +1 -1
  268. package/src/core/shaders/templates/RoundedTemplate.ts +1 -1
  269. package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +1 -1
  270. package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +1 -1
  271. package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +1 -1
  272. package/src/core/shaders/templates/ShadowTemplate.ts +1 -1
  273. package/src/core/shaders/{templates/shaderUtils.ts → utils.ts} +2 -3
  274. package/src/core/shaders/webgl/Border.ts +57 -37
  275. package/src/core/shaders/webgl/HolePunch.ts +4 -7
  276. package/src/core/shaders/webgl/LinearGradient.ts +5 -4
  277. package/src/core/shaders/webgl/RadialGradient.ts +7 -6
  278. package/src/core/shaders/webgl/RoundedWithBorder.ts +80 -39
  279. package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +92 -50
  280. package/src/core/shaders/webgl/SdfShader.ts +1 -4
  281. package/src/core/text-rendering/CanvasFontHandler.ts +210 -0
  282. package/src/core/text-rendering/CanvasTextRenderer.ts +622 -0
  283. package/src/core/text-rendering/SdfFontHandler.ts +554 -0
  284. package/src/core/text-rendering/SdfTextRenderer.ts +466 -0
  285. package/src/core/text-rendering/TextRenderer.ts +406 -0
  286. package/src/core/text-rendering/{TextTextureRendererUtils.ts → Utils.ts} +5 -11
  287. package/src/core/text-rendering/canvas/Settings.ts +99 -0
  288. package/src/core/text-rendering/canvas/Utils.test.ts +206 -0
  289. package/src/core/text-rendering/canvas/Utils.ts +178 -0
  290. package/src/core/text-rendering/canvas/calculateRenderInfo.ts +299 -0
  291. package/src/core/text-rendering/canvas/draw.ts +165 -0
  292. package/src/core/text-rendering/sdf/Utils.test.ts +402 -0
  293. package/src/core/text-rendering/sdf/Utils.ts +436 -0
  294. package/src/core/text-rendering/sdf/index.ts +20 -0
  295. package/src/core/textures/ImageTexture.ts +69 -27
  296. package/src/core/textures/Texture.ts +50 -6
  297. package/src/main-api/INode.ts +4 -3
  298. package/src/main-api/Inspector.ts +53 -8
  299. package/src/main-api/Renderer.ts +311 -87
  300. package/src/utils.ts +10 -10
  301. package/dist/exports/core-api.d.ts +0 -74
  302. package/dist/exports/core-api.js +0 -96
  303. package/dist/exports/core-api.js.map +0 -1
  304. package/dist/exports/main-api.d.ts +0 -30
  305. package/dist/exports/main-api.js +0 -45
  306. package/dist/exports/main-api.js.map +0 -1
  307. package/dist/src/core/CoreExtension.d.ts +0 -12
  308. package/dist/src/core/CoreExtension.js.map +0 -1
  309. package/dist/src/core/CoreStuff.js +0 -138
  310. package/dist/src/core/CoreStuff.js.map +0 -1
  311. package/dist/src/core/CoreTexturizer.d.ts +0 -14
  312. package/dist/src/core/CoreTexturizer.js +0 -47
  313. package/dist/src/core/CoreTexturizer.js.map +0 -1
  314. package/dist/src/core/LngNode.d.ts +0 -736
  315. package/dist/src/core/LngNode.js +0 -1174
  316. package/dist/src/core/LngNode.js.map +0 -1
  317. package/dist/src/core/Matrix2DContext.d.ts +0 -15
  318. package/dist/src/core/Matrix2DContext.js +0 -45
  319. package/dist/src/core/Matrix2DContext.js.map +0 -1
  320. package/dist/src/core/ShaderNode.d.ts +0 -10
  321. package/dist/src/core/ShaderNode.js +0 -30
  322. package/dist/src/core/ShaderNode.js.map +0 -1
  323. package/dist/src/core/TextNode.d.ts +0 -103
  324. package/dist/src/core/TextNode.js +0 -331
  325. package/dist/src/core/TextNode.js.map +0 -1
  326. package/dist/src/core/lib/Coords.d.ts +0 -14
  327. package/dist/src/core/lib/Coords.js +0 -55
  328. package/dist/src/core/lib/Coords.js.map +0 -1
  329. package/dist/src/core/lib/glm/common.d.ts +0 -162
  330. package/dist/src/core/lib/glm/common.js +0 -81
  331. package/dist/src/core/lib/glm/common.js.map +0 -1
  332. package/dist/src/core/lib/glm/index.d.ts +0 -11
  333. package/dist/src/core/lib/glm/index.js +0 -30
  334. package/dist/src/core/lib/glm/index.js.map +0 -1
  335. package/dist/src/core/lib/glm/mat2.d.ts +0 -219
  336. package/dist/src/core/lib/glm/mat2.js +0 -396
  337. package/dist/src/core/lib/glm/mat2.js.map +0 -1
  338. package/dist/src/core/lib/glm/mat2d.d.ts +0 -237
  339. package/dist/src/core/lib/glm/mat2d.js +0 -442
  340. package/dist/src/core/lib/glm/mat2d.js.map +0 -1
  341. package/dist/src/core/lib/glm/mat3.d.ts +0 -283
  342. package/dist/src/core/lib/glm/mat3.js +0 -680
  343. package/dist/src/core/lib/glm/mat3.js.map +0 -1
  344. package/dist/src/core/lib/glm/mat4.d.ts +0 -550
  345. package/dist/src/core/lib/glm/mat4.js +0 -1802
  346. package/dist/src/core/lib/glm/mat4.js.map +0 -1
  347. package/dist/src/core/lib/glm/quat.d.ts +0 -363
  348. package/dist/src/core/lib/glm/quat.js +0 -693
  349. package/dist/src/core/lib/glm/quat.js.map +0 -1
  350. package/dist/src/core/lib/glm/quat2.d.ts +0 -356
  351. package/dist/src/core/lib/glm/quat2.js +0 -754
  352. package/dist/src/core/lib/glm/quat2.js.map +0 -1
  353. package/dist/src/core/lib/glm/vec2.d.ts +0 -365
  354. package/dist/src/core/lib/glm/vec2.js +0 -569
  355. package/dist/src/core/lib/glm/vec2.js.map +0 -1
  356. package/dist/src/core/lib/glm/vec3.d.ts +0 -406
  357. package/dist/src/core/lib/glm/vec3.js +0 -720
  358. package/dist/src/core/lib/glm/vec3.js.map +0 -1
  359. package/dist/src/core/lib/glm/vec4.d.ts +0 -330
  360. package/dist/src/core/lib/glm/vec4.js +0 -608
  361. package/dist/src/core/lib/glm/vec4.js.map +0 -1
  362. package/dist/src/core/renderers/CoreShaderManager.d.ts +0 -19
  363. package/dist/src/core/renderers/CoreShaderManager.js +0 -33
  364. package/dist/src/core/renderers/CoreShaderManager.js.map +0 -1
  365. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.d.ts +0 -27
  366. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js +0 -82
  367. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js.map +0 -1
  368. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.d.ts +0 -11
  369. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js +0 -34
  370. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js.map +0 -1
  371. package/dist/src/core/scene/Scene.d.ts +0 -59
  372. package/dist/src/core/scene/Scene.js +0 -106
  373. package/dist/src/core/scene/Scene.js.map +0 -1
  374. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +0 -20
  375. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +0 -55
  376. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +0 -1
  377. package/dist/src/main-api/ICoreDriver.d.ts +0 -27
  378. package/dist/src/main-api/ICoreDriver.js.map +0 -1
  379. package/dist/src/main-api/IRenderDriver.d.ts +0 -20
  380. package/dist/src/main-api/IRenderDriver.js.map +0 -1
  381. package/dist/src/main-api/IShaderController.d.ts +0 -14
  382. package/dist/src/main-api/IShaderController.js +0 -30
  383. package/dist/src/main-api/IShaderController.js.map +0 -1
  384. package/dist/src/main-api/IShaderNode.d.ts +0 -17
  385. package/dist/src/main-api/IShaderNode.js +0 -19
  386. package/dist/src/main-api/IShaderNode.js.map +0 -1
  387. package/dist/src/main-api/RendererMain.d.ts +0 -375
  388. package/dist/src/main-api/RendererMain.js +0 -365
  389. package/dist/src/main-api/RendererMain.js.map +0 -1
  390. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.d.ts +0 -9
  391. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js +0 -38
  392. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js.map +0 -1
  393. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.d.ts +0 -56
  394. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js +0 -101
  395. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +0 -1
  396. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.d.ts +0 -32
  397. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js.map +0 -1
  398. package/dist/src/render-drivers/main/MainCoreDriver.d.ts +0 -24
  399. package/dist/src/render-drivers/main/MainCoreDriver.js +0 -118
  400. package/dist/src/render-drivers/main/MainCoreDriver.js.map +0 -1
  401. package/dist/src/render-drivers/main/MainOnlyNode.d.ts +0 -99
  402. package/dist/src/render-drivers/main/MainOnlyNode.js +0 -396
  403. package/dist/src/render-drivers/main/MainOnlyNode.js.map +0 -1
  404. package/dist/src/render-drivers/main/MainOnlyShaderController.d.ts +0 -6
  405. package/dist/src/render-drivers/main/MainOnlyShaderController.js +0 -15
  406. package/dist/src/render-drivers/main/MainOnlyShaderController.js.map +0 -1
  407. package/dist/src/render-drivers/main/MainOnlyShaderNode.d.ts +0 -7
  408. package/dist/src/render-drivers/main/MainOnlyShaderNode.js +0 -34
  409. package/dist/src/render-drivers/main/MainOnlyShaderNode.js.map +0 -1
  410. package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +0 -47
  411. package/dist/src/render-drivers/main/MainOnlyTextNode.js +0 -205
  412. package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +0 -1
  413. package/dist/src/render-drivers/main/MainRenderDriver.d.ts +0 -17
  414. package/dist/src/render-drivers/main/MainRenderDriver.js +0 -88
  415. package/dist/src/render-drivers/main/MainRenderDriver.js.map +0 -1
  416. package/dist/src/render-drivers/threadx/NodeStruct.d.ts +0 -90
  417. package/dist/src/render-drivers/threadx/NodeStruct.js +0 -281
  418. package/dist/src/render-drivers/threadx/NodeStruct.js.map +0 -1
  419. package/dist/src/render-drivers/threadx/SharedNode.d.ts +0 -39
  420. package/dist/src/render-drivers/threadx/SharedNode.js +0 -60
  421. package/dist/src/render-drivers/threadx/SharedNode.js.map +0 -1
  422. package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +0 -44
  423. package/dist/src/render-drivers/threadx/TextNodeStruct.js +0 -201
  424. package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +0 -1
  425. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +0 -28
  426. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +0 -234
  427. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +0 -1
  428. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +0 -20
  429. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +0 -84
  430. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +0 -1
  431. package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +0 -44
  432. package/dist/src/render-drivers/threadx/ThreadXMainNode.js +0 -154
  433. package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +0 -1
  434. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.d.ts +0 -6
  435. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js +0 -16
  436. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js.map +0 -1
  437. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.d.ts +0 -7
  438. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js +0 -15
  439. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js.map +0 -1
  440. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +0 -28
  441. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +0 -55
  442. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +0 -1
  443. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.d.ts +0 -21
  444. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +0 -198
  445. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +0 -1
  446. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +0 -70
  447. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +0 -32
  448. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +0 -1
  449. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +0 -19
  450. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +0 -177
  451. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +0 -1
  452. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +0 -27
  453. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +0 -108
  454. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +0 -1
  455. package/dist/src/render-drivers/threadx/worker/renderer.d.ts +0 -1
  456. package/dist/src/render-drivers/threadx/worker/renderer.js +0 -145
  457. package/dist/src/render-drivers/threadx/worker/renderer.js.map +0 -1
  458. package/dist/src/render-drivers/utils.d.ts +0 -12
  459. package/dist/src/render-drivers/utils.js +0 -69
  460. package/dist/src/render-drivers/utils.js.map +0 -1
  461. package/scripts/please-use-pnpm.js +0 -13
  462. package/src/core/platform.ts +0 -64
  463. package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +0 -220
  464. package/src/core/text-rendering/TextRenderingUtils.ts +0 -36
  465. package/src/core/text-rendering/TrFontManager.ts +0 -183
  466. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +0 -176
  467. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +0 -139
  468. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +0 -173
  469. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +0 -171
  470. package/src/core/text-rendering/font-face-types/TrFontFace.ts +0 -187
  471. package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +0 -94
  472. package/src/core/text-rendering/font-face-types/utils.ts +0 -39
  473. package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +0 -509
  474. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +0 -815
  475. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +0 -841
  476. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +0 -48
  477. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +0 -66
  478. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +0 -52
  479. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +0 -32
  480. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +0 -117
  481. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +0 -133
  482. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +0 -38
  483. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +0 -408
  484. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +0 -49
  485. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +0 -52
  486. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +0 -205
  487. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +0 -93
  488. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +0 -40
  489. package/src/core/text-rendering/renderers/TextRenderer.ts +0 -550
  490. /package/dist/src/core/{CoreStuff.d.ts → shaders/webgl/Spinner.d.ts} +0 -0
@@ -17,7 +17,7 @@
17
17
  * limitations under the License.
18
18
  */
19
19
 
20
- import { assertTruthy, createWebGLContext } from '../../../utils.js';
20
+ import { createWebGLContext } from '../../../utils.js';
21
21
  import {
22
22
  CoreRenderer,
23
23
  type BufferInfo,
@@ -35,7 +35,11 @@ import {
35
35
  type WebGlColor,
36
36
  } from './internal/RendererUtils.js';
37
37
  import { WebGlCtxTexture } from './WebGlCtxTexture.js';
38
- import { Texture, TextureType } from '../../textures/Texture.js';
38
+ import {
39
+ Texture,
40
+ TextureType,
41
+ type TextureCoords,
42
+ } from '../../textures/Texture.js';
39
43
  import { SubTexture } from '../../textures/SubTexture.js';
40
44
  import { WebGlCtxSubTexture } from './WebGlCtxSubTexture.js';
41
45
  import { BufferCollection } from './internal/BufferCollection.js';
@@ -48,10 +52,6 @@ import { WebGlCtxRenderTexture } from './WebGlCtxRenderTexture.js';
48
52
  import { Default } from '../../shaders/webgl/Default.js';
49
53
  import type { WebGlShaderType } from './WebGlShaderNode.js';
50
54
  import { WebGlShaderNode } from './WebGlShaderNode.js';
51
- import type { CoreShaderType } from '../CoreShaderNode.js';
52
-
53
- const WORDS_PER_QUAD = 24;
54
- // const BYTES_PER_QUAD = WORDS_PER_QUAD * 4;
55
55
 
56
56
  export type WebGlRendererOptions = CoreRendererOptions;
57
57
 
@@ -77,6 +77,13 @@ export class WebGlRenderer extends CoreRenderer {
77
77
  override rttNodes: CoreNode[] = [];
78
78
  activeRttNode: CoreNode | null = null;
79
79
 
80
+ defaultTextureCoords: TextureCoords = {
81
+ x1: 0,
82
+ y1: 0,
83
+ x2: 1,
84
+ y2: 1,
85
+ };
86
+
80
87
  //// Default Shader
81
88
  defaultShaderNode: WebGlShaderNode | null = null;
82
89
  quadBufferCollection: BufferCollection;
@@ -126,11 +133,10 @@ export class WebGlRenderer extends CoreRenderer {
126
133
  extensions: getWebGlExtensions(this.glw),
127
134
  };
128
135
  const quadBuffer = glw.createBuffer();
129
- assertTruthy(quadBuffer);
130
136
  const stride = 8 * Float32Array.BYTES_PER_ELEMENT;
131
137
  this.quadBufferCollection = new BufferCollection([
132
138
  {
133
- buffer: quadBuffer,
139
+ buffer: quadBuffer!,
134
140
  attributes: {
135
141
  a_position: {
136
142
  name: 'a_position',
@@ -247,136 +253,74 @@ export class WebGlRenderer extends CoreRenderer {
247
253
  * The function updates the length and number of quads in the current render operation, and updates the current buffer index.
248
254
  */
249
255
  addQuad(params: QuadOptions) {
250
- const { fQuadBuffer, uiQuadBuffer } = this;
251
- let texture = params.texture;
252
-
253
- assertTruthy(texture !== null, 'Texture is required');
254
-
255
- let { curBufferIdx: bufferIdx, curRenderOp } = this;
256
-
257
- if (this.reuseRenderOp(params) === false) {
258
- this.newRenderOp(params, bufferIdx);
259
- curRenderOp = this.curRenderOp;
260
- assertTruthy(curRenderOp);
261
- }
262
-
263
- let texCoordX1 = 0;
264
- let texCoordY1 = 0;
265
- let texCoordX2 = 1;
266
- let texCoordY2 = 1;
267
-
268
- if (texture.type === TextureType.subTexture) {
269
- const {
270
- x: tx,
271
- y: ty,
272
- width: tw,
273
- height: th,
274
- } = (texture as SubTexture).props;
275
- const { width: parentW = 0, height: parentH = 0 } = (
276
- texture as SubTexture
277
- ).parentTexture.dimensions || { width: 0, height: 0 };
278
- texCoordX1 = tx / parentW;
279
- texCoordX2 = texCoordX1 + tw / parentW;
280
- texCoordY1 = ty / parentH;
281
- texCoordY2 = texCoordY1 + th / parentH;
282
- texture = (texture as SubTexture).parentTexture;
283
- }
284
-
285
- if (
286
- texture.type === TextureType.image &&
287
- params.textureOptions !== null &&
288
- params.textureOptions.resizeMode !== undefined &&
289
- texture.dimensions !== null
290
- ) {
291
- const resizeMode = params.textureOptions.resizeMode;
292
- const { width: tw, height: th } = texture.dimensions;
293
- if (resizeMode.type === 'cover') {
294
- const scaleX = params.width / tw;
295
- const scaleY = params.height / th;
296
- const scale = Math.max(scaleX, scaleY);
297
- const precision = 1 / scale;
298
- // Determine based on width
299
- if (scale && scaleX && scaleX < scale) {
300
- const desiredSize = precision * params.width;
301
- texCoordX1 = (1 - desiredSize / tw) * (resizeMode.clipX ?? 0.5);
302
- texCoordX2 = texCoordX1 + desiredSize / tw;
303
- }
304
- // Determine based on height
305
- if (scale && scaleY && scaleY < scale) {
306
- const desiredSize = precision * params.height;
307
- texCoordY1 = (1 - desiredSize / th) * (resizeMode.clipY ?? 0.5);
308
- texCoordY2 = texCoordY1 + desiredSize / th;
309
- }
310
- }
256
+ const f = this.fQuadBuffer;
257
+ const u = this.uiQuadBuffer;
258
+ let i = this.curBufferIdx;
259
+
260
+ let ro = this.curRenderOp!;
261
+ const reuse = this.reuseRenderOp(params) === false;
262
+ if (reuse) {
263
+ this.newRenderOp(params, i);
264
+ ro = this.curRenderOp!;
311
265
  }
312
266
 
313
- // Flip texture coordinates if dictated by texture options
314
- let flipY = 0;
315
- if (params.textureOptions !== null) {
316
- if (params.textureOptions.flipX === true) {
317
- [texCoordX1, texCoordX2] = [texCoordX2, texCoordX1];
318
- }
319
-
320
- // convert to integer for bitwise operation below
321
- flipY = +(params.textureOptions.flipY || false);
267
+ let tx = params.texture!;
268
+ if (tx.type === TextureType.subTexture) {
269
+ tx = (tx as SubTexture).parentTexture;
322
270
  }
323
271
 
324
- // Eitherone should be true
325
- if (flipY ^ +(texture.type === TextureType.renderToTexture)) {
326
- [texCoordY1, texCoordY2] = [texCoordY2, texCoordY1];
327
- }
272
+ const tidx = this.addTexture(tx.ctxTexture as WebGlCtxTexture, i);
328
273
 
329
- const ctxTexture = texture.ctxTexture as WebGlCtxTexture;
330
- assertTruthy(ctxTexture instanceof WebGlCtxTexture);
331
- const textureIdx = this.addTexture(ctxTexture, bufferIdx);
274
+ const rc = params.renderCoords!;
275
+ const tc = params.textureCoords!;
332
276
 
333
- assertTruthy(this.curRenderOp !== null);
334
- assertTruthy(params.renderCoords);
277
+ const cTl = params.colorTl;
278
+ const cTr = params.colorTr;
279
+ const cBl = params.colorBl;
280
+ const cBr = params.colorBr;
335
281
 
336
282
  // Upper-Left
337
- fQuadBuffer[bufferIdx++] = params.renderCoords.x1; // vertexX
338
- fQuadBuffer[bufferIdx++] = params.renderCoords.y1; // vertexY
339
- fQuadBuffer[bufferIdx++] = texCoordX1; // texCoordX
340
- fQuadBuffer[bufferIdx++] = texCoordY1; // texCoordY
341
- uiQuadBuffer[bufferIdx++] = params.colorTl; // color
342
- fQuadBuffer[bufferIdx++] = textureIdx; // texIndex
343
- fQuadBuffer[bufferIdx++] = 0; //node X coord
344
- fQuadBuffer[bufferIdx++] = 0; //node y coord
283
+ f[i] = rc.x1;
284
+ f[i + 1] = rc.y1;
285
+ f[i + 2] = tc.x1;
286
+ f[i + 3] = tc.y1;
287
+ u[i + 4] = cTl;
288
+ f[i + 5] = tidx;
289
+ f[i + 6] = 0;
290
+ f[i + 7] = 0;
345
291
 
346
292
  // Upper-Right
347
- fQuadBuffer[bufferIdx++] = params.renderCoords.x2;
348
- fQuadBuffer[bufferIdx++] = params.renderCoords.y2;
349
- fQuadBuffer[bufferIdx++] = texCoordX2;
350
- fQuadBuffer[bufferIdx++] = texCoordY1;
351
- uiQuadBuffer[bufferIdx++] = params.colorTr;
352
- fQuadBuffer[bufferIdx++] = textureIdx;
353
- fQuadBuffer[bufferIdx++] = 1; //node X coord
354
- fQuadBuffer[bufferIdx++] = 0; //node y coord
293
+ f[i + 8] = rc.x2;
294
+ f[i + 9] = rc.y2;
295
+ f[i + 10] = tc.x2;
296
+ f[i + 11] = tc.y1;
297
+ u[i + 12] = cTr;
298
+ f[i + 13] = tidx;
299
+ f[i + 14] = 1;
300
+ f[i + 15] = 0;
355
301
 
356
302
  // Lower-Left
357
- fQuadBuffer[bufferIdx++] = params.renderCoords.x4;
358
- fQuadBuffer[bufferIdx++] = params.renderCoords.y4;
359
- fQuadBuffer[bufferIdx++] = texCoordX1;
360
- fQuadBuffer[bufferIdx++] = texCoordY2;
361
- uiQuadBuffer[bufferIdx++] = params.colorBl;
362
- fQuadBuffer[bufferIdx++] = textureIdx;
363
- fQuadBuffer[bufferIdx++] = 0; //node X coord
364
- fQuadBuffer[bufferIdx++] = 1; //node y coord
303
+ f[i + 16] = rc.x4;
304
+ f[i + 17] = rc.y4;
305
+ f[i + 18] = tc.x1;
306
+ f[i + 19] = tc.y2;
307
+ u[i + 20] = cBl;
308
+ f[i + 21] = tidx;
309
+ f[i + 22] = 0;
310
+ f[i + 23] = 1;
365
311
 
366
312
  // Lower-Right
367
- fQuadBuffer[bufferIdx++] = params.renderCoords.x3;
368
- fQuadBuffer[bufferIdx++] = params.renderCoords.y3;
369
- fQuadBuffer[bufferIdx++] = texCoordX2;
370
- fQuadBuffer[bufferIdx++] = texCoordY2;
371
- uiQuadBuffer[bufferIdx++] = params.colorBr;
372
- fQuadBuffer[bufferIdx++] = textureIdx;
373
- fQuadBuffer[bufferIdx++] = 1; //node X coord
374
- fQuadBuffer[bufferIdx++] = 1; //node y coord
375
-
376
- // Update the length of the current render op
377
- this.curRenderOp.length += WORDS_PER_QUAD;
378
- this.curRenderOp.numQuads++;
379
- this.curBufferIdx = bufferIdx;
313
+ f[i + 24] = rc.x3;
314
+ f[i + 25] = rc.y3;
315
+ f[i + 26] = tc.x2;
316
+ f[i + 27] = tc.y2;
317
+ u[i + 28] = cBr;
318
+ f[i + 29] = tidx;
319
+ f[i + 30] = 1;
320
+ f[i + 31] = 1;
321
+
322
+ ro.numQuads++;
323
+ this.curBufferIdx = i + 32;
380
324
  }
381
325
 
382
326
  /**
@@ -386,7 +330,7 @@ export class WebGlRenderer extends CoreRenderer {
386
330
  * @param shader
387
331
  * @param bufferIdx
388
332
  */
389
- private newRenderOp(quad: QuadOptions, bufferIdx: number) {
333
+ private newRenderOp(quad: QuadOptions | WebGlRenderOp, bufferIdx: number) {
390
334
  const curRenderOp = new WebGlRenderOp(this, quad, bufferIdx);
391
335
  this.curRenderOp = curRenderOp;
392
336
  this.renderOps.push(curRenderOp);
@@ -409,14 +353,13 @@ export class WebGlRenderer extends CoreRenderer {
409
353
  bufferIdx: number,
410
354
  recursive?: boolean,
411
355
  ): number {
412
- assertTruthy(this.curRenderOp);
413
- const textureIdx = this.curRenderOp.addTexture(texture);
356
+ const textureIdx = this.curRenderOp!.addTexture(texture);
414
357
  // TODO: Refactor to be more DRY
415
358
  if (textureIdx === 0xffffffff) {
416
359
  if (recursive) {
417
360
  throw new Error('Unable to add texture to render op');
418
361
  }
419
- this.newRenderOp(this.curRenderOp.quad as QuadOptions, bufferIdx);
362
+ this.newRenderOp(this.curRenderOp!, bufferIdx);
420
363
  return this.addTexture(texture, bufferIdx, true);
421
364
  }
422
365
  return textureIdx;
@@ -428,19 +371,17 @@ export class WebGlRenderer extends CoreRenderer {
428
371
  * @returns
429
372
  */
430
373
  reuseRenderOp(params: QuadOptions): boolean {
431
- const { shader, parentHasRenderTexture, rtt, clippingRect } = params;
432
-
433
374
  // Switching shader program will require a new render operation
434
375
  if (
435
376
  this.curRenderOp?.shader.shaderKey !==
436
- (shader as WebGlShaderNode).shaderKey
377
+ (params.shader as WebGlShaderNode).shaderKey
437
378
  ) {
438
379
  return false;
439
380
  }
440
381
 
441
382
  // Switching clipping rect will require a new render operation
442
383
  if (
443
- compareRect(this.curRenderOp.quad.clippingRect, clippingRect) === false
384
+ compareRect(this.curRenderOp.clippingRect, params.clippingRect) === false
444
385
  ) {
445
386
  return false;
446
387
  }
@@ -448,16 +389,26 @@ export class WebGlRenderer extends CoreRenderer {
448
389
  // Force new render operation if rendering to texture
449
390
  // @todo: This needs to be improved, render operations could also be reused
450
391
  // for rendering to texture
451
- if (parentHasRenderTexture !== undefined || rtt !== undefined) {
392
+ if (
393
+ params.parentHasRenderTexture !== undefined ||
394
+ params.rtt !== undefined
395
+ ) {
452
396
  return false;
453
397
  }
454
398
 
399
+ if (
400
+ this.curRenderOp.shader.shaderKey === 'default' &&
401
+ params.shader?.shaderKey === 'default'
402
+ ) {
403
+ return true;
404
+ }
405
+
455
406
  // Check if the shader can batch the shader properties
456
407
  if (
457
- !this.curRenderOp.shader.program.reuseRenderOp(
408
+ this.curRenderOp.shader.program.reuseRenderOp(
458
409
  params,
459
- this.curRenderOp.quad as QuadOptions,
460
- )
410
+ this.curRenderOp,
411
+ ) === false
461
412
  ) {
462
413
  return false;
463
414
  }
@@ -617,10 +568,7 @@ export class WebGlRenderer extends CoreRenderer {
617
568
  // Set the active RTT node to the current node
618
569
  // So we can prevent rendering children of nested RTT nodes
619
570
  this.activeRttNode = node;
620
-
621
- assertTruthy(node.texture !== null, 'RTT node missing texture');
622
- const ctxTexture = node.texture.ctxTexture;
623
- assertTruthy(ctxTexture instanceof WebGlCtxRenderTexture);
571
+ const ctxTexture = node.texture.ctxTexture as WebGlCtxRenderTexture;
624
572
  this.renderToTextureActive = true;
625
573
 
626
574
  // Bind the the texture's framebuffer
@@ -662,6 +610,10 @@ export class WebGlRenderer extends CoreRenderer {
662
610
  this.renderToTextureActive = false;
663
611
  }
664
612
 
613
+ updateViewport(): void {
614
+ this.glw.viewport(0, 0, this.glw.canvas.width, this.glw.canvas.height);
615
+ }
616
+
665
617
  removeRTTNode(node: CoreNode) {
666
618
  const index = this.rttNodes.indexOf(node);
667
619
  if (index === -1) {
@@ -682,16 +634,97 @@ export class WebGlRenderer extends CoreRenderer {
682
634
  if (this.defaultShaderNode !== null) {
683
635
  return this.defaultShaderNode as WebGlShaderNode;
684
636
  }
685
- this.stage.shManager.registerShaderType('Default', Default);
637
+ this.stage.shManager.registerShaderType('default', Default);
686
638
  this.defaultShaderNode = this.stage.shManager.createShader(
687
- 'Default',
639
+ 'default',
688
640
  ) as WebGlShaderNode;
689
641
  return this.defaultShaderNode;
690
642
  }
691
643
 
644
+ override getTextureCoords(node: CoreNode): TextureCoords {
645
+ const texture = node.texture;
646
+ if (texture === null) {
647
+ return this.defaultTextureCoords;
648
+ }
649
+
650
+ const textureOptions = node.textureOptions;
651
+ if (
652
+ texture.type === TextureType.subTexture ||
653
+ texture.type === TextureType.image ||
654
+ texture.type === TextureType.renderToTexture ||
655
+ textureOptions !== null
656
+ ) {
657
+ const result = {
658
+ x1: 0,
659
+ y1: 0,
660
+ x2: 1,
661
+ y2: 1,
662
+ };
663
+
664
+ if (texture.type === TextureType.subTexture) {
665
+ const props = (texture as SubTexture).props;
666
+ const { width: parentW = 0, height: parentH = 0 } = (
667
+ texture as SubTexture
668
+ ).parentTexture.dimensions || { width: 0, height: 0 };
669
+ result.x1 = props.x / parentW;
670
+ result.x2 = result.x1 + props.width / parentW;
671
+ result.y1 = props.y / parentH;
672
+ result.y2 = result.y1 + props.height / parentH;
673
+ }
674
+
675
+ if (
676
+ texture.type === TextureType.image &&
677
+ textureOptions !== null &&
678
+ textureOptions.resizeMode !== undefined &&
679
+ texture.dimensions !== null
680
+ ) {
681
+ const resizeMode = textureOptions.resizeMode;
682
+ const dimensions = texture.dimensions;
683
+ if (resizeMode.type === 'cover') {
684
+ const scaleX = node.props.width / dimensions.width;
685
+ const scaleY = node.props.height / dimensions.height;
686
+ const scale = Math.max(scaleX, scaleY);
687
+ const precision = 1 / scale;
688
+ // Determine based on width
689
+ if (scaleX < scale) {
690
+ const desiredSize = precision * node.props.width;
691
+ result.x1 =
692
+ (1 - desiredSize / dimensions.width) * (resizeMode.clipX ?? 0.5);
693
+ result.x2 = result.x1 + desiredSize / dimensions.width;
694
+ }
695
+ // Determine based on height
696
+ if (scaleY < scale) {
697
+ const desiredSize = precision * node.props.height;
698
+ result.y1 =
699
+ (1 - desiredSize / dimensions.height) * (resizeMode.clipY ?? 0.5);
700
+ result.y2 = result.y1 + desiredSize / dimensions.height;
701
+ }
702
+ }
703
+ }
704
+
705
+ // Flip texture coordinates if dictated by texture options
706
+ let flipY = 0;
707
+ if (textureOptions !== null) {
708
+ if (textureOptions.flipX === true) {
709
+ [result.x1, result.x2] = [result.x2, result.x1];
710
+ }
711
+
712
+ // convert to integer for bitwise operation below
713
+ flipY = +(textureOptions.flipY || false);
714
+ }
715
+
716
+ // Eitherone should be true
717
+ if (flipY ^ +(texture.type === TextureType.renderToTexture)) {
718
+ [result.y1, result.y2] = [result.y2, result.y1];
719
+ }
720
+ return result as TextureCoords;
721
+ }
722
+
723
+ return this.defaultTextureCoords;
724
+ }
725
+
692
726
  /**
693
- * Updates the WebGL context's clear color and clears the color buffer.
694
- *
727
+ * Sets the glClearColor to the specified color. *
695
728
  * @param color - The color to set as the clear color, represented as a 32-bit integer.
696
729
  */
697
730
  updateClearColor(color: number) {
@@ -710,6 +743,5 @@ export class WebGlRenderer extends CoreRenderer {
710
743
  raw: color,
711
744
  normalized: normalizedColor,
712
745
  };
713
- glw.clear();
714
746
  }
715
747
  }
@@ -11,6 +11,7 @@ import type {
11
11
  Vec4,
12
12
  } from './internal/ShaderUtils.js';
13
13
  import type { WebGlRenderer } from './WebGlRenderer.js';
14
+ import type { WebGlRenderOp } from './WebGlRenderOp.js';
14
15
  import type { WebGlShaderProgram } from './WebGlShaderProgram.js';
15
16
 
16
17
  export type ShaderSource<T> =
@@ -46,7 +47,10 @@ export type WebGlShaderType<T extends object = Record<string, unknown>> =
46
47
  * This function is used to check if the shader can be reused based on quad info
47
48
  * @param props
48
49
  */
49
- canBatch?: (renderOpA: QuadOptions, renderOpB: QuadOptions) => boolean;
50
+ canBatch?: (
51
+ incomingQuad: QuadOptions,
52
+ currentRenderOp: WebGlRenderOp,
53
+ ) => boolean;
50
54
  /**
51
55
  * extensions required for specific shader?
52
56
  */
@@ -86,11 +90,9 @@ export class WebGlShaderNode<
86
90
  this.updater!(this.node as CoreNode, this.props);
87
91
  return;
88
92
  }
93
+
89
94
  const prevKey = this.valueKey;
90
- this.valueKey = '';
91
- for (const key in this.resolvedProps) {
92
- this.valueKey += `${key}:${this.resolvedProps[key]!};`;
93
- }
95
+ this.valueKey = this.createValueKey();
94
96
 
95
97
  if (prevKey === this.valueKey) {
96
98
  return;