@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
@@ -19,16 +19,15 @@
19
19
 
20
20
  import type { ExtractProps, TextureMap } from '../core/CoreTextureManager.js';
21
21
  import { EventEmitter } from '../common/EventEmitter.js';
22
- import { assertTruthy, isProductionEnvironment } from '../utils.js';
23
- import { Stage } from '../core/Stage.js';
22
+ import { isProductionEnvironment } from '../utils.js';
23
+ import { Stage, type StageOptions } from '../core/Stage.js';
24
24
  import { CoreNode, type CoreNodeProps } from '../core/CoreNode.js';
25
25
  import { type CoreTextNodeProps } from '../core/CoreTextNode.js';
26
26
  import type { INode, INodeProps, ITextNode, ITextNodeProps } from './INode.js';
27
27
  import type { TextureMemoryManagerSettings } from '../core/TextureMemoryManager.js';
28
- import type { CanvasTextRenderer } from '../core/text-rendering/renderers/CanvasTextRenderer.js';
29
- import type { SdfTextRenderer } from '../core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js';
30
- import type { WebGlRenderer } from '../core/renderers/webgl/WebGlRenderer.js';
28
+ import type { TextRenderer } from '../core/text-rendering/TextRenderer.js';
31
29
  import type { CanvasRenderer } from '../core/renderers/canvas/CanvasRenderer.js';
30
+ import type { WebGlRenderer } from '../core/renderers/webgl/WebGlRenderer.js';
32
31
  import type { Inspector } from './Inspector.js';
33
32
  import type { CoreShaderNode } from '../core/renderers/CoreShaderNode.js';
34
33
  import type {
@@ -36,34 +35,36 @@ import type {
36
35
  OptionalShaderProps,
37
36
  ShaderMap,
38
37
  } from '../core/CoreShaderManager.js';
38
+ import { WebPlatform } from '../core/platforms/web/WebPlatform.js';
39
+ import { Platform } from '../core/platforms/Platform.js';
39
40
 
40
41
  /**
41
- * Configuration settings for {@link RendererMain}
42
+ * Settings for the Renderer that can be updated during runtime.
42
43
  */
43
- export interface RendererMainSettings {
44
+ export interface RendererRuntimeSettings {
44
45
  /**
45
46
  * Authored logical pixel width of the application
46
47
  *
47
48
  * @defaultValue `1920`
48
49
  */
49
- appWidth?: number;
50
+ appWidth: number;
50
51
 
51
52
  /**
52
53
  * Authored logical pixel height of the application
53
54
  *
54
55
  * @defaultValue `1080`
55
56
  */
56
- appHeight?: number;
57
+ appHeight: number;
57
58
 
58
59
  /**
59
60
  * Texture Memory Manager Settings
60
61
  */
61
- textureMemory?: Partial<TextureMemoryManagerSettings>;
62
+ textureMemory: Partial<TextureMemoryManagerSettings>;
62
63
 
63
64
  /**
64
65
  * Bounds margin to extend the boundary in which a Node is added as Quad.
65
66
  */
66
- boundsMargin?: number | [number, number, number, number];
67
+ boundsMargin: number | [number, number, number, number];
67
68
 
68
69
  /**
69
70
  * Factor to convert app-authored logical coorindates to device logical coordinates
@@ -80,7 +81,7 @@ export interface RendererMainSettings {
80
81
  *
81
82
  * @defaultValue `1`
82
83
  */
83
- deviceLogicalPixelRatio?: number;
84
+ deviceLogicalPixelRatio: number;
84
85
 
85
86
  /**
86
87
  * Factor to convert device logical coordinates to device physical coordinates
@@ -97,14 +98,14 @@ export interface RendererMainSettings {
97
98
  *
98
99
  * @defaultValue `window.devicePixelRatio`
99
100
  */
100
- devicePhysicalPixelRatio?: number;
101
+ devicePhysicalPixelRatio: number;
101
102
 
102
103
  /**
103
104
  * RGBA encoded number of the background to use
104
105
  *
105
106
  * @defaultValue `0x00000000`
106
107
  */
107
- clearColor?: number;
108
+ clearColor: number;
108
109
 
109
110
  /**
110
111
  * Interval in milliseconds to receive FPS updates
@@ -114,8 +115,51 @@ export interface RendererMainSettings {
114
115
  *
115
116
  * @defaultValue `0` (disabled)
116
117
  */
117
- fpsUpdateInterval?: number;
118
+ fpsUpdateInterval: number;
119
+
120
+ /**
121
+ * DOM Inspector
122
+ *
123
+ * @remarks
124
+ * The inspector will replicate the state of the Nodes created
125
+ * in the renderer and allow inspection of the state of the nodes.
126
+ *
127
+ */
128
+ inspector: typeof Inspector | false;
118
129
 
130
+ /**
131
+ * Texture Processing Limit (in milliseconds)
132
+ *
133
+ * @remarks
134
+ * The maximum amount of time the renderer is allowed to process textures in a
135
+ * single frame. If the processing time exceeds this limit, the renderer will
136
+ * skip processing the remaining textures and continue rendering the frame.
137
+ *
138
+ * @defaultValue `10`
139
+ */
140
+ textureProcessingTimeLimit: number;
141
+
142
+ /**
143
+ * Target FPS for the global render loop
144
+ *
145
+ * @remarks
146
+ * Controls the maximum frame rate of the entire rendering system.
147
+ * When set to 0, no throttling is applied (use display refresh rate).
148
+ * When set to a positive number, the global requestAnimationFrame loop
149
+ * will be throttled to this target FPS, affecting all animations and rendering.
150
+ *
151
+ * This provides global performance control for the entire application,
152
+ * useful for managing performance on lower-end devices.
153
+ *
154
+ * @defaultValue `0` (no throttling, use display refresh rate)
155
+ */
156
+ targetFPS: number;
157
+ }
158
+
159
+ /**
160
+ * Configuration settings for {@link RendererMain}
161
+ */
162
+ export type RendererMainSettings = RendererRuntimeSettings & {
119
163
  /**
120
164
  * Include context call (i.e. WebGL) information in FPS updates
121
165
  *
@@ -129,7 +173,7 @@ export interface RendererMainSettings {
129
173
  *
130
174
  * @defaultValue `false` (disabled)
131
175
  */
132
- enableContextSpy?: boolean;
176
+ enableContextSpy: boolean;
133
177
 
134
178
  /**
135
179
  * Number or Image Workers to use
@@ -141,17 +185,7 @@ export interface RendererMainSettings {
141
185
  *
142
186
  * @defaultValue `2`
143
187
  */
144
- numImageWorkers?: number;
145
-
146
- /**
147
- * DOM Inspector
148
- *
149
- * @remarks
150
- * The inspector will replicate the state of the Nodes created
151
- * in the renderer and allow inspection of the state of the nodes.
152
- *
153
- */
154
- inspector?: typeof Inspector | false;
188
+ numImageWorkers: number;
155
189
 
156
190
  /**
157
191
  * Renderer Engine
@@ -173,7 +207,7 @@ export interface RendererMainSettings {
173
207
  *
174
208
  * @defaultValue 4 * 1024 * 1024
175
209
  */
176
- quadBufferSize?: number;
210
+ quadBufferSize: number;
177
211
 
178
212
  /**
179
213
  * Font Engines
@@ -203,7 +237,7 @@ export interface RendererMainSettings {
203
237
  *
204
238
  *
205
239
  */
206
- fontEngines: (typeof SdfTextRenderer | typeof CanvasTextRenderer)[];
240
+ fontEngines: TextRenderer[];
207
241
 
208
242
  /**
209
243
  * Force WebGL2
@@ -214,7 +248,7 @@ export interface RendererMainSettings {
214
248
  *
215
249
  * @defaultValue `false`
216
250
  */
217
- forceWebGL2?: boolean;
251
+ forceWebGL2: boolean;
218
252
 
219
253
  /**
220
254
  * Enable strictBounds
@@ -225,19 +259,7 @@ export interface RendererMainSettings {
225
259
  *
226
260
  * @defaultValue `true`
227
261
  */
228
- strictBounds?: boolean;
229
-
230
- /**
231
- * Texture Processing Limit (in milliseconds)
232
- *
233
- * @remarks
234
- * The maximum amount of time the renderer is allowed to process textures in a
235
- * single frame. If the processing time exceeds this limit, the renderer will
236
- * skip processing the remaining textures and continue rendering the frame.
237
- *
238
- * @defaultValue `10`
239
- */
240
- textureProcessingTimeLimit?: number;
262
+ strictBounds: boolean;
241
263
 
242
264
  /**
243
265
  * Canvas object to use for rendering
@@ -246,7 +268,7 @@ export interface RendererMainSettings {
246
268
  * This is used to render the scene graph. If not provided, a new canvas
247
269
  * element will be created and appended to the target element.
248
270
  */
249
- canvas?: HTMLCanvasElement;
271
+ canvas: HTMLCanvasElement;
250
272
 
251
273
  /**
252
274
  * createImageBitmap support for the runtime
@@ -271,8 +293,20 @@ export interface RendererMainSettings {
271
293
  *
272
294
  * @defaultValue `full`
273
295
  */
274
- createImageBitmapSupport?: 'auto' | 'basic' | 'options' | 'full';
275
- }
296
+ createImageBitmapSupport: 'auto' | 'basic' | 'options' | 'full';
297
+
298
+ /**
299
+ * Provide an alternative platform abstraction layer
300
+ *
301
+ * @remarks
302
+ * By default the Lightning 3 renderer will load a webplatform, assuming it runs
303
+ * inside a web browsr. However for special cases there might be a need to provide
304
+ * an abstracted platform layer to run on non-web or non-standard JS engines
305
+ *
306
+ * @defaultValue `null`
307
+ */
308
+ platform: typeof Platform | null;
309
+ };
276
310
 
277
311
  /**
278
312
  * The Renderer Main API
@@ -327,7 +361,6 @@ export interface RendererMainSettings {
327
361
  export class RendererMain extends EventEmitter {
328
362
  readonly root: INode;
329
363
  readonly canvas: HTMLCanvasElement;
330
- readonly settings: Readonly<Required<RendererMainSettings>>;
331
364
  readonly stage: Stage;
332
365
  private inspector: Inspector | null = null;
333
366
 
@@ -338,21 +371,17 @@ export class RendererMain extends EventEmitter {
338
371
  * @param target Element ID or HTMLElement to insert the canvas into
339
372
  * @param driver Core Driver to use
340
373
  */
341
- constructor(settings: RendererMainSettings, target: string | HTMLElement) {
374
+ constructor(
375
+ settings: Partial<RendererMainSettings>,
376
+ target: string | HTMLElement,
377
+ ) {
342
378
  super();
343
379
 
344
- const resolvedTxSettings: TextureMemoryManagerSettings = {
345
- criticalThreshold: settings.textureMemory?.criticalThreshold || 124e6,
346
- targetThresholdLevel: settings.textureMemory?.targetThresholdLevel || 0.5,
347
- cleanupInterval: settings.textureMemory?.cleanupInterval || 5000,
348
- debugLogging: settings.textureMemory?.debugLogging || false,
349
- baselineMemoryAllocation:
350
- settings.textureMemory?.baselineMemoryAllocation || 26e6,
351
- doNotExceedCriticalThreshold:
352
- settings.textureMemory?.doNotExceedCriticalThreshold || false,
353
- };
380
+ const resolvedTxSettings = this.resolveTxSettings(
381
+ settings.textureMemory || {},
382
+ );
354
383
 
355
- const resolvedSettings: Required<RendererMainSettings> = {
384
+ settings = {
356
385
  appWidth: settings.appWidth || 1920,
357
386
  appHeight: settings.appHeight || 1080,
358
387
  textureMemory: resolvedTxSettings,
@@ -362,6 +391,7 @@ export class RendererMain extends EventEmitter {
362
391
  settings.devicePhysicalPixelRatio || window.devicePixelRatio,
363
392
  clearColor: settings.clearColor ?? 0x00000000,
364
393
  fpsUpdateInterval: settings.fpsUpdateInterval || 0,
394
+ targetFPS: settings.targetFPS || 0,
365
395
  numImageWorkers:
366
396
  settings.numImageWorkers !== undefined ? settings.numImageWorkers : 2,
367
397
  enableContextSpy: settings.enableContextSpy ?? false,
@@ -369,13 +399,13 @@ export class RendererMain extends EventEmitter {
369
399
  inspector: settings.inspector ?? false,
370
400
  renderEngine: settings.renderEngine,
371
401
  quadBufferSize: settings.quadBufferSize ?? 4 * 1024 * 1024,
372
- fontEngines: settings.fontEngines,
402
+ fontEngines: settings.fontEngines ?? [],
373
403
  strictBounds: settings.strictBounds ?? true,
374
- textureProcessingTimeLimit: settings.textureProcessingTimeLimit || 10,
404
+ textureProcessingTimeLimit: settings.textureProcessingTimeLimit || 42,
375
405
  canvas: settings.canvas || document.createElement('canvas'),
376
406
  createImageBitmapSupport: settings.createImageBitmapSupport || 'full',
407
+ platform: settings.platform || null,
377
408
  };
378
- this.settings = resolvedSettings;
379
409
 
380
410
  const {
381
411
  appWidth,
@@ -384,7 +414,19 @@ export class RendererMain extends EventEmitter {
384
414
  devicePhysicalPixelRatio,
385
415
  inspector,
386
416
  canvas,
387
- } = resolvedSettings;
417
+ } = settings as RendererMainSettings;
418
+
419
+ let platform;
420
+ if (
421
+ settings.platform !== undefined &&
422
+ settings.platform !== null &&
423
+ settings.platform.prototype instanceof Platform === true
424
+ ) {
425
+ // @ts-ignore - if Platform is a valid class, it will be used
426
+ platform = new settings.platform();
427
+ } else {
428
+ platform = new WebPlatform();
429
+ }
388
430
 
389
431
  const deviceLogicalWidth = appWidth * deviceLogicalPixelRatio;
390
432
  const deviceLogicalHeight = appHeight * deviceLogicalPixelRatio;
@@ -398,26 +440,28 @@ export class RendererMain extends EventEmitter {
398
440
 
399
441
  // Initialize the stage
400
442
  this.stage = new Stage({
401
- appWidth: this.settings.appWidth,
402
- appHeight: this.settings.appHeight,
403
- boundsMargin: this.settings.boundsMargin,
404
- clearColor: this.settings.clearColor,
443
+ appWidth,
444
+ appHeight,
445
+ boundsMargin: settings.boundsMargin!,
446
+ clearColor: settings.clearColor!,
405
447
  canvas: this.canvas,
406
- deviceLogicalPixelRatio: this.settings.deviceLogicalPixelRatio,
407
- devicePhysicalPixelRatio: this.settings.devicePhysicalPixelRatio,
408
- enableContextSpy: this.settings.enableContextSpy,
409
- forceWebGL2: this.settings.forceWebGL2,
410
- fpsUpdateInterval: this.settings.fpsUpdateInterval,
411
- numImageWorkers: this.settings.numImageWorkers,
412
- renderEngine: this.settings.renderEngine,
448
+ deviceLogicalPixelRatio,
449
+ devicePhysicalPixelRatio,
450
+ enableContextSpy: settings.enableContextSpy!,
451
+ forceWebGL2: settings.forceWebGL2!,
452
+ fpsUpdateInterval: settings.fpsUpdateInterval!,
453
+ numImageWorkers: settings.numImageWorkers!,
454
+ renderEngine: settings.renderEngine!,
413
455
  textureMemory: resolvedTxSettings,
414
456
  eventBus: this,
415
- quadBufferSize: this.settings.quadBufferSize,
416
- fontEngines: this.settings.fontEngines,
417
- inspector: this.settings.inspector !== null,
418
- strictBounds: this.settings.strictBounds,
419
- textureProcessingTimeLimit: this.settings.textureProcessingTimeLimit,
420
- createImageBitmapSupport: this.settings.createImageBitmapSupport,
457
+ quadBufferSize: settings.quadBufferSize!,
458
+ fontEngines: settings.fontEngines!,
459
+ inspector: settings.inspector !== null,
460
+ strictBounds: settings.strictBounds!,
461
+ targetFPS: settings.targetFPS!,
462
+ textureProcessingTimeLimit: settings.textureProcessingTimeLimit!,
463
+ createImageBitmapSupport: settings.createImageBitmapSupport!,
464
+ platform,
421
465
  });
422
466
 
423
467
  // Extract the root node
@@ -438,11 +482,49 @@ export class RendererMain extends EventEmitter {
438
482
  targetEl.appendChild(canvas);
439
483
 
440
484
  // Initialize inspector (if enabled)
441
- if (inspector && !isProductionEnvironment()) {
442
- this.inspector = new inspector(canvas, resolvedSettings);
485
+ if (inspector && isProductionEnvironment === false) {
486
+ this.inspector = new inspector(canvas, settings as RendererMainSettings);
443
487
  }
444
488
  }
445
489
 
490
+ /**
491
+ * Resolves the Texture Memory Manager values
492
+ *
493
+ * @param props
494
+ * @returns
495
+ */
496
+ private resolveTxSettings(
497
+ textureMemory: Partial<TextureMemoryManagerSettings>,
498
+ ): TextureMemoryManagerSettings {
499
+ const currentTxSettings =
500
+ (this.stage && this.stage.options.textureMemory) || {};
501
+
502
+ return {
503
+ criticalThreshold:
504
+ textureMemory?.criticalThreshold ??
505
+ currentTxSettings?.criticalThreshold ??
506
+ 124e6,
507
+ targetThresholdLevel:
508
+ textureMemory?.targetThresholdLevel ??
509
+ currentTxSettings?.targetThresholdLevel ??
510
+ 0.5,
511
+ cleanupInterval:
512
+ textureMemory?.cleanupInterval ??
513
+ currentTxSettings?.cleanupInterval ??
514
+ 5000,
515
+ debugLogging:
516
+ textureMemory?.debugLogging ?? currentTxSettings?.debugLogging ?? false,
517
+ baselineMemoryAllocation:
518
+ textureMemory?.baselineMemoryAllocation ??
519
+ currentTxSettings?.baselineMemoryAllocation ??
520
+ 26e6,
521
+ doNotExceedCriticalThreshold:
522
+ textureMemory?.doNotExceedCriticalThreshold ??
523
+ currentTxSettings?.doNotExceedCriticalThreshold ??
524
+ false,
525
+ };
526
+ }
527
+
446
528
  /**
447
529
  * Create a new scene graph node
448
530
  *
@@ -461,16 +543,12 @@ export class RendererMain extends EventEmitter {
461
543
  createNode<ShNode extends CoreShaderNode<any>>(
462
544
  props: Partial<INodeProps<ShNode>>,
463
545
  ): INode<ShNode> {
464
- assertTruthy(this.stage, 'Stage is not initialized');
465
-
466
546
  const node = this.stage.createNode(props as Partial<CoreNodeProps>);
467
547
 
468
548
  if (this.inspector) {
469
549
  return this.inspector.createNode(node) as unknown as INode<ShNode>;
470
550
  }
471
551
 
472
- // FIXME onDestroy event? node.once('beforeDestroy'
473
- // FIXME onCreate event?
474
552
  return node as unknown as INode<ShNode>;
475
553
  }
476
554
 
@@ -557,7 +635,7 @@ export class RendererMain extends EventEmitter {
557
635
  props?: OptionalShaderProps<ShType>,
558
636
  ) {
559
637
  return this.stage.shManager.createShader(shType, props) as CoreShaderNode<
560
- ExtractShaderProps<ShType>
638
+ NonNullable<ExtractShaderProps<ShType>>
561
639
  >;
562
640
  }
563
641
 
@@ -646,4 +724,150 @@ export class RendererMain extends EventEmitter {
646
724
  setClearColor(color: number) {
647
725
  this.stage.setClearColor(color);
648
726
  }
727
+
728
+ /**
729
+ * Set options for the renderer
730
+ *
731
+ * @param options
732
+ */
733
+ setOptions(options: Partial<RendererRuntimeSettings>) {
734
+ const stage = this.stage;
735
+ if (options.textureMemory !== undefined) {
736
+ const textureMemory = (options.textureMemory = this.resolveTxSettings(
737
+ options.textureMemory,
738
+ ));
739
+ stage.txMemManager.updateSettings(textureMemory);
740
+ stage.txMemManager.cleanup();
741
+ }
742
+
743
+ if (options.boundsMargin !== undefined) {
744
+ let bm = options.boundsMargin!;
745
+ options.boundsMargin = Array.isArray(bm) ? bm : [bm, bm, bm, bm];
746
+ }
747
+
748
+ const stageOptions = stage.options;
749
+ for (let key in options) {
750
+ stageOptions[key] = options[key]!;
751
+ }
752
+
753
+ if (options.inspector !== undefined && !isProductionEnvironment) {
754
+ if (options.inspector === false) {
755
+ this.inspector?.destroy();
756
+ this.inspector = null;
757
+ } else if (
758
+ this.inspector === null ||
759
+ this.inspector.constructor !== options.inspector
760
+ ) {
761
+ this.inspector = new options.inspector(
762
+ this.canvas,
763
+ stage.options as unknown as RendererMainSettings,
764
+ );
765
+ this.inspector?.createNodes(this.root as unknown as CoreNode);
766
+ }
767
+ }
768
+
769
+ let needDimensionsUpdate = false;
770
+
771
+ if (
772
+ options.deviceLogicalPixelRatio ||
773
+ options.devicePhysicalPixelRatio !== undefined
774
+ ) {
775
+ this.stage.pixelRatio =
776
+ stageOptions.devicePhysicalPixelRatio *
777
+ stageOptions.deviceLogicalPixelRatio;
778
+ this.inspector?.updateViewport(
779
+ stageOptions.appWidth,
780
+ stageOptions.appHeight,
781
+ stageOptions.deviceLogicalPixelRatio,
782
+ );
783
+ needDimensionsUpdate = true;
784
+ }
785
+
786
+ if (options.appWidth !== undefined || options.appHeight !== undefined) {
787
+ this.inspector?.updateViewport(
788
+ stageOptions.appWidth,
789
+ stageOptions.appHeight,
790
+ stageOptions.deviceLogicalPixelRatio,
791
+ );
792
+ needDimensionsUpdate = true;
793
+ }
794
+
795
+ if (options.boundsMargin !== undefined) {
796
+ this.stage.setBoundsMargin(options.boundsMargin);
797
+ }
798
+
799
+ if (options.clearColor !== undefined) {
800
+ this.stage.setClearColor(options.clearColor);
801
+ }
802
+
803
+ if (needDimensionsUpdate) {
804
+ this.updateAppDimensions();
805
+ }
806
+ }
807
+
808
+ private updateAppDimensions() {
809
+ const {
810
+ appWidth,
811
+ appHeight,
812
+ deviceLogicalPixelRatio,
813
+ devicePhysicalPixelRatio,
814
+ } = this.stage.options;
815
+
816
+ const deviceLogicalWidth = appWidth * deviceLogicalPixelRatio;
817
+ const deviceLogicalHeight = appHeight * deviceLogicalPixelRatio;
818
+
819
+ this.canvas.width = deviceLogicalWidth * devicePhysicalPixelRatio;
820
+ this.canvas.height = deviceLogicalHeight * devicePhysicalPixelRatio;
821
+
822
+ this.canvas.style.width = `${deviceLogicalWidth}px`;
823
+ this.canvas.style.height = `${deviceLogicalHeight}px`;
824
+
825
+ this.stage.renderer.updateViewport();
826
+
827
+ this.root.width = appWidth;
828
+ this.root.height = appHeight;
829
+ this.stage.updateViewportBounds();
830
+ }
831
+
832
+ get settings(): Readonly<StageOptions> {
833
+ return this.stage.options;
834
+ }
835
+
836
+ /**
837
+ * Gets the target FPS for the global render loop
838
+ *
839
+ * @returns The current target FPS (0 means no throttling)
840
+ *
841
+ * @remarks
842
+ * This controls the maximum frame rate of the entire rendering system.
843
+ * When 0, the system runs at display refresh rate.
844
+ */
845
+ get targetFPS(): number {
846
+ return this.stage.options.targetFPS || 0;
847
+ }
848
+
849
+ /**
850
+ * Sets the target FPS for the global render loop
851
+ *
852
+ * @param fps - The target FPS to set for the global render loop.
853
+ * Set to 0 or a negative value to disable throttling.
854
+ *
855
+ * @remarks
856
+ * This setting affects the entire rendering system immediately.
857
+ * All animations, rendering, and frame updates will be throttled
858
+ * to this target FPS. Provides global performance control.
859
+ *
860
+ * @example
861
+ * ```typescript
862
+ * // Set global target to 30fps for better performance
863
+ * renderer.targetFPS = 30;
864
+ *
865
+ * // Disable global throttling (use display refresh rate)
866
+ * renderer.targetFPS = 0;
867
+ * ```
868
+ */
869
+ set targetFPS(fps: number) {
870
+ this.stage.options.targetFPS = fps > 0 ? fps : 0;
871
+ this.stage.updateTargetFrameTime();
872
+ }
649
873
  }
package/src/utils.ts CHANGED
@@ -64,6 +64,15 @@ export function createWebGLContext(
64
64
  return gl;
65
65
  }
66
66
 
67
+ /**
68
+ * Checks if we're in a development environment or not.
69
+ *
70
+ * @returns
71
+ */
72
+ declare const __DEV__: boolean;
73
+ export const isProductionEnvironment =
74
+ typeof __DEV__ !== 'undefined' ? !__DEV__ : true;
75
+
67
76
  /**
68
77
  * Asserts a condition is truthy, otherwise throws an error
69
78
  *
@@ -80,7 +89,7 @@ export function assertTruthy(
80
89
  condition: unknown,
81
90
  message?: string,
82
91
  ): asserts condition {
83
- if (isProductionEnvironment() === true) return;
92
+ if (isProductionEnvironment === true) return;
84
93
  if (!condition) {
85
94
  throw new Error(message || 'Assertion failed');
86
95
  }
@@ -230,15 +239,6 @@ export function getImageAspectRatio(width: number, height: number): number {
230
239
  return width / height;
231
240
  }
232
241
 
233
- /**
234
- * Checks import.meta if env is production
235
- *
236
- * @returns
237
- */
238
- export function isProductionEnvironment(): boolean {
239
- return import.meta.env && import.meta.env.PROD;
240
- }
241
-
242
242
  /**
243
243
  * Returns a new unique ID
244
244
  */