@lightningjs/renderer 2.10.0 → 2.11.0

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 (327) hide show
  1. package/LICENSE +202 -202
  2. package/NOTICE +3 -3
  3. package/README.md +147 -147
  4. package/dist/exports/core-api.d.ts +74 -0
  5. package/dist/exports/core-api.js +96 -0
  6. package/dist/exports/core-api.js.map +1 -0
  7. package/dist/exports/main-api.d.ts +30 -0
  8. package/dist/exports/main-api.js +45 -0
  9. package/dist/exports/main-api.js.map +1 -0
  10. package/dist/src/core/CoreExtension.d.ts +12 -0
  11. package/dist/src/core/CoreExtension.js +29 -0
  12. package/dist/src/core/CoreExtension.js.map +1 -0
  13. package/dist/src/core/CoreStuff.d.ts +1 -0
  14. package/dist/src/core/CoreStuff.js +138 -0
  15. package/dist/src/core/CoreStuff.js.map +1 -0
  16. package/dist/src/core/CoreTextureManager.d.ts +4 -1
  17. package/dist/src/core/CoreTextureManager.js +14 -3
  18. package/dist/src/core/CoreTextureManager.js.map +1 -1
  19. package/dist/src/core/LngNode.d.ts +736 -0
  20. package/dist/src/core/LngNode.js +1174 -0
  21. package/dist/src/core/LngNode.js.map +1 -0
  22. package/dist/src/core/Matrix2DContext.d.ts +15 -0
  23. package/dist/src/core/Matrix2DContext.js +45 -0
  24. package/dist/src/core/Matrix2DContext.js.map +1 -0
  25. package/dist/src/core/ShaderNode.d.ts +10 -0
  26. package/dist/src/core/ShaderNode.js +30 -0
  27. package/dist/src/core/ShaderNode.js.map +1 -0
  28. package/dist/src/core/Stage.js +1 -1
  29. package/dist/src/core/Stage.js.map +1 -1
  30. package/dist/src/core/TextNode.d.ts +103 -0
  31. package/dist/src/core/TextNode.js +331 -0
  32. package/dist/src/core/TextNode.js.map +1 -0
  33. package/dist/src/core/TextureMemoryManager.d.ts +30 -0
  34. package/dist/src/core/TextureMemoryManager.js +58 -38
  35. package/dist/src/core/TextureMemoryManager.js.map +1 -1
  36. package/dist/src/core/lib/Coords.d.ts +14 -0
  37. package/dist/src/core/lib/Coords.js +55 -0
  38. package/dist/src/core/lib/Coords.js.map +1 -0
  39. package/dist/src/core/lib/glm/common.d.ts +162 -0
  40. package/dist/src/core/lib/glm/common.js +81 -0
  41. package/dist/src/core/lib/glm/common.js.map +1 -0
  42. package/dist/src/core/lib/glm/index.d.ts +11 -0
  43. package/dist/src/core/lib/glm/index.js +30 -0
  44. package/dist/src/core/lib/glm/index.js.map +1 -0
  45. package/dist/src/core/lib/glm/mat2.d.ts +219 -0
  46. package/dist/src/core/lib/glm/mat2.js +396 -0
  47. package/dist/src/core/lib/glm/mat2.js.map +1 -0
  48. package/dist/src/core/lib/glm/mat2d.d.ts +237 -0
  49. package/dist/src/core/lib/glm/mat2d.js +442 -0
  50. package/dist/src/core/lib/glm/mat2d.js.map +1 -0
  51. package/dist/src/core/lib/glm/mat3.d.ts +283 -0
  52. package/dist/src/core/lib/glm/mat3.js +680 -0
  53. package/dist/src/core/lib/glm/mat3.js.map +1 -0
  54. package/dist/src/core/lib/glm/mat4.d.ts +550 -0
  55. package/dist/src/core/lib/glm/mat4.js +1802 -0
  56. package/dist/src/core/lib/glm/mat4.js.map +1 -0
  57. package/dist/src/core/lib/glm/quat.d.ts +363 -0
  58. package/dist/src/core/lib/glm/quat.js +693 -0
  59. package/dist/src/core/lib/glm/quat.js.map +1 -0
  60. package/dist/src/core/lib/glm/quat2.d.ts +356 -0
  61. package/dist/src/core/lib/glm/quat2.js +754 -0
  62. package/dist/src/core/lib/glm/quat2.js.map +1 -0
  63. package/dist/src/core/lib/glm/vec2.d.ts +365 -0
  64. package/dist/src/core/lib/glm/vec2.js +569 -0
  65. package/dist/src/core/lib/glm/vec2.js.map +1 -0
  66. package/dist/src/core/lib/glm/vec3.d.ts +406 -0
  67. package/dist/src/core/lib/glm/vec3.js +720 -0
  68. package/dist/src/core/lib/glm/vec3.js.map +1 -0
  69. package/dist/src/core/lib/glm/vec4.d.ts +330 -0
  70. package/dist/src/core/lib/glm/vec4.js +608 -0
  71. package/dist/src/core/lib/glm/vec4.js.map +1 -0
  72. package/dist/src/core/lib/textureSvg.js +1 -1
  73. package/dist/src/core/lib/textureSvg.js.map +1 -1
  74. package/dist/src/core/renderers/CoreShaderManager.d.ts +19 -0
  75. package/dist/src/core/renderers/CoreShaderManager.js +33 -0
  76. package/dist/src/core/renderers/CoreShaderManager.js.map +1 -0
  77. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +4 -2
  78. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +1 -1
  79. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +4 -4
  80. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -1
  81. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +9 -12
  82. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
  83. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.d.ts +27 -0
  84. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js +82 -0
  85. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js.map +1 -0
  86. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.d.ts +11 -0
  87. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js +34 -0
  88. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js.map +1 -0
  89. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +45 -45
  90. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +61 -61
  91. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +93 -93
  92. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +63 -63
  93. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +62 -62
  94. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +15 -15
  95. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +6 -6
  96. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +15 -15
  97. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +15 -15
  98. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +15 -15
  99. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +42 -42
  100. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +44 -44
  101. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +3 -3
  102. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +22 -22
  103. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +28 -28
  104. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +10 -10
  105. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +37 -37
  106. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +19 -19
  107. package/dist/src/core/scene/Scene.d.ts +59 -0
  108. package/dist/src/core/scene/Scene.js +106 -0
  109. package/dist/src/core/scene/Scene.js.map +1 -0
  110. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +20 -0
  111. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +55 -0
  112. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +1 -0
  113. package/dist/src/core/textures/ColorTexture.js +1 -1
  114. package/dist/src/core/textures/ColorTexture.js.map +1 -1
  115. package/dist/src/core/textures/ImageTexture.js +3 -3
  116. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  117. package/dist/src/core/textures/NoiseTexture.js +1 -1
  118. package/dist/src/core/textures/NoiseTexture.js.map +1 -1
  119. package/dist/src/core/textures/RenderTexture.js +1 -1
  120. package/dist/src/core/textures/RenderTexture.js.map +1 -1
  121. package/dist/src/core/textures/SubTexture.d.ts +4 -0
  122. package/dist/src/core/textures/SubTexture.js +54 -16
  123. package/dist/src/core/textures/SubTexture.js.map +1 -1
  124. package/dist/src/core/textures/Texture.d.ts +2 -34
  125. package/dist/src/core/textures/Texture.js +13 -69
  126. package/dist/src/core/textures/Texture.js.map +1 -1
  127. package/dist/src/main-api/ICoreDriver.d.ts +27 -0
  128. package/dist/src/main-api/ICoreDriver.js +20 -0
  129. package/dist/src/main-api/ICoreDriver.js.map +1 -0
  130. package/dist/src/main-api/IRenderDriver.d.ts +20 -0
  131. package/dist/src/main-api/IRenderDriver.js +20 -0
  132. package/dist/src/main-api/IRenderDriver.js.map +1 -0
  133. package/dist/src/main-api/IShaderController.d.ts +14 -0
  134. package/dist/src/main-api/IShaderController.js +30 -0
  135. package/dist/src/main-api/IShaderController.js.map +1 -0
  136. package/dist/src/main-api/IShaderNode.d.ts +17 -0
  137. package/dist/src/main-api/IShaderNode.js +19 -0
  138. package/dist/src/main-api/IShaderNode.js.map +1 -0
  139. package/dist/src/main-api/Renderer.js +1 -0
  140. package/dist/src/main-api/Renderer.js.map +1 -1
  141. package/dist/src/main-api/RendererMain.d.ts +375 -0
  142. package/dist/src/main-api/RendererMain.js +365 -0
  143. package/dist/src/main-api/RendererMain.js.map +1 -0
  144. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.d.ts +9 -0
  145. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js +38 -0
  146. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js.map +1 -0
  147. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.d.ts +56 -0
  148. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js +101 -0
  149. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +1 -0
  150. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.d.ts +32 -0
  151. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js +28 -0
  152. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js.map +1 -0
  153. package/dist/src/render-drivers/main/MainCoreDriver.d.ts +24 -0
  154. package/dist/src/render-drivers/main/MainCoreDriver.js +118 -0
  155. package/dist/src/render-drivers/main/MainCoreDriver.js.map +1 -0
  156. package/dist/src/render-drivers/main/MainOnlyNode.d.ts +99 -0
  157. package/dist/src/render-drivers/main/MainOnlyNode.js +396 -0
  158. package/dist/src/render-drivers/main/MainOnlyNode.js.map +1 -0
  159. package/dist/src/render-drivers/main/MainOnlyShaderController.d.ts +6 -0
  160. package/dist/src/render-drivers/main/MainOnlyShaderController.js +15 -0
  161. package/dist/src/render-drivers/main/MainOnlyShaderController.js.map +1 -0
  162. package/dist/src/render-drivers/main/MainOnlyShaderNode.d.ts +7 -0
  163. package/dist/src/render-drivers/main/MainOnlyShaderNode.js +34 -0
  164. package/dist/src/render-drivers/main/MainOnlyShaderNode.js.map +1 -0
  165. package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +47 -0
  166. package/dist/src/render-drivers/main/MainOnlyTextNode.js +205 -0
  167. package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +1 -0
  168. package/dist/src/render-drivers/main/MainRenderDriver.d.ts +17 -0
  169. package/dist/src/render-drivers/main/MainRenderDriver.js +88 -0
  170. package/dist/src/render-drivers/main/MainRenderDriver.js.map +1 -0
  171. package/dist/src/render-drivers/threadx/NodeStruct.d.ts +90 -0
  172. package/dist/src/render-drivers/threadx/NodeStruct.js +281 -0
  173. package/dist/src/render-drivers/threadx/NodeStruct.js.map +1 -0
  174. package/dist/src/render-drivers/threadx/SharedNode.d.ts +39 -0
  175. package/dist/src/render-drivers/threadx/SharedNode.js +60 -0
  176. package/dist/src/render-drivers/threadx/SharedNode.js.map +1 -0
  177. package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +44 -0
  178. package/dist/src/render-drivers/threadx/TextNodeStruct.js +201 -0
  179. package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +1 -0
  180. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +28 -0
  181. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +234 -0
  182. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +1 -0
  183. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +20 -0
  184. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +84 -0
  185. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +1 -0
  186. package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +44 -0
  187. package/dist/src/render-drivers/threadx/ThreadXMainNode.js +154 -0
  188. package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +1 -0
  189. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.d.ts +6 -0
  190. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js +16 -0
  191. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js.map +1 -0
  192. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.d.ts +7 -0
  193. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js +15 -0
  194. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js.map +1 -0
  195. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +28 -0
  196. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +55 -0
  197. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +1 -0
  198. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.d.ts +21 -0
  199. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +198 -0
  200. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +1 -0
  201. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +70 -0
  202. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +32 -0
  203. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +1 -0
  204. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +19 -0
  205. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +177 -0
  206. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +1 -0
  207. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +27 -0
  208. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +108 -0
  209. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +1 -0
  210. package/dist/src/render-drivers/threadx/worker/renderer.d.ts +1 -0
  211. package/dist/src/render-drivers/threadx/worker/renderer.js +145 -0
  212. package/dist/src/render-drivers/threadx/worker/renderer.js.map +1 -0
  213. package/dist/src/render-drivers/utils.d.ts +12 -0
  214. package/dist/src/render-drivers/utils.js +69 -0
  215. package/dist/src/render-drivers/utils.js.map +1 -0
  216. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  217. package/exports/canvas.ts +39 -39
  218. package/exports/index.ts +89 -89
  219. package/exports/inspector.ts +24 -24
  220. package/exports/utils.ts +44 -44
  221. package/exports/webgl.ts +38 -38
  222. package/package.json +2 -1
  223. package/scripts/please-use-pnpm.js +13 -13
  224. package/src/common/CommonTypes.ts +139 -139
  225. package/src/common/EventEmitter.ts +77 -77
  226. package/src/common/IAnimationController.ts +92 -92
  227. package/src/common/IEventEmitter.ts +28 -28
  228. package/src/core/CoreNode.test.ts +199 -199
  229. package/src/core/CoreNode.ts +2335 -2335
  230. package/src/core/CoreShaderManager.ts +292 -292
  231. package/src/core/CoreTextNode.ts +455 -455
  232. package/src/core/CoreTextureManager.ts +561 -545
  233. package/src/core/Stage.ts +700 -700
  234. package/src/core/TextureMemoryManager.ts +292 -277
  235. package/src/core/animations/AnimationManager.ts +38 -38
  236. package/src/core/animations/CoreAnimation.ts +340 -340
  237. package/src/core/animations/CoreAnimationController.ts +157 -157
  238. package/src/core/lib/ContextSpy.ts +41 -41
  239. package/src/core/lib/ImageWorker.ts +270 -270
  240. package/src/core/lib/Matrix3d.ts +244 -244
  241. package/src/core/lib/RenderCoords.ts +86 -86
  242. package/src/core/lib/WebGlContextWrapper.ts +1322 -1322
  243. package/src/core/lib/textureCompression.ts +152 -152
  244. package/src/core/lib/textureSvg.ts +78 -78
  245. package/src/core/lib/utils.ts +310 -310
  246. package/src/core/platform.ts +61 -61
  247. package/src/core/renderers/CoreContextTexture.ts +43 -43
  248. package/src/core/renderers/CoreRenderOp.ts +22 -22
  249. package/src/core/renderers/CoreRenderer.ts +114 -114
  250. package/src/core/renderers/CoreShader.ts +41 -41
  251. package/src/core/renderers/canvas/CanvasCoreRenderer.ts +371 -369
  252. package/src/core/renderers/canvas/CanvasCoreTexture.ts +150 -150
  253. package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +231 -231
  254. package/src/core/renderers/canvas/internal/ColorUtils.ts +69 -69
  255. package/src/core/renderers/canvas/shaders/UnsupportedShader.ts +48 -48
  256. package/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.ts +79 -79
  257. package/src/core/renderers/webgl/WebGlCoreCtxSubTexture.ts +50 -50
  258. package/src/core/renderers/webgl/WebGlCoreCtxTexture.ts +295 -298
  259. package/src/core/renderers/webgl/WebGlCoreRenderOp.ts +125 -125
  260. package/src/core/renderers/webgl/WebGlCoreRenderer.ts +805 -805
  261. package/src/core/renderers/webgl/WebGlCoreShader.ts +362 -362
  262. package/src/core/renderers/webgl/internal/BufferCollection.ts +54 -54
  263. package/src/core/renderers/webgl/internal/RendererUtils.ts +155 -155
  264. package/src/core/renderers/webgl/internal/ShaderUtils.ts +143 -143
  265. package/src/core/renderers/webgl/internal/WebGlUtils.ts +35 -35
  266. package/src/core/renderers/webgl/shaders/DefaultShader.ts +93 -93
  267. package/src/core/renderers/webgl/shaders/DefaultShaderBatched.ts +132 -132
  268. package/src/core/renderers/webgl/shaders/DynamicShader.ts +580 -580
  269. package/src/core/renderers/webgl/shaders/RoundedRectangle.ts +167 -167
  270. package/src/core/renderers/webgl/shaders/SdfShader.ts +204 -204
  271. package/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.ts +101 -101
  272. package/src/core/renderers/webgl/shaders/effects/BorderEffect.ts +87 -87
  273. package/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.ts +101 -101
  274. package/src/core/renderers/webgl/shaders/effects/BorderRightEffect.ts +101 -101
  275. package/src/core/renderers/webgl/shaders/effects/BorderTopEffect.ts +101 -101
  276. package/src/core/renderers/webgl/shaders/effects/EffectUtils.ts +159 -159
  277. package/src/core/renderers/webgl/shaders/effects/FadeOutEffect.ts +127 -127
  278. package/src/core/renderers/webgl/shaders/effects/GlitchEffect.ts +148 -148
  279. package/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.ts +67 -67
  280. package/src/core/renderers/webgl/shaders/effects/HolePunchEffect.ts +157 -157
  281. package/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts +171 -171
  282. package/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts +168 -168
  283. package/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.ts +187 -187
  284. package/src/core/renderers/webgl/shaders/effects/RadiusEffect.ts +110 -110
  285. package/src/core/renderers/webgl/shaders/effects/ShaderEffect.ts +196 -196
  286. package/src/core/text-rendering/TextRenderingUtils.ts +36 -36
  287. package/src/core/text-rendering/TextTextureRendererUtils.ts +263 -263
  288. package/src/core/text-rendering/TrFontManager.ts +183 -183
  289. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +176 -176
  290. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +139 -139
  291. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +173 -173
  292. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +171 -171
  293. package/src/core/text-rendering/font-face-types/TrFontFace.ts +187 -187
  294. package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +94 -94
  295. package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +509 -509
  296. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +808 -808
  297. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +853 -853
  298. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +48 -48
  299. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +66 -66
  300. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +52 -52
  301. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +32 -32
  302. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +117 -117
  303. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +133 -133
  304. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +38 -38
  305. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +408 -408
  306. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +49 -49
  307. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +52 -52
  308. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +205 -205
  309. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +93 -93
  310. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +40 -40
  311. package/src/core/text-rendering/renderers/TextRenderer.ts +557 -557
  312. package/src/core/textures/ColorTexture.ts +102 -102
  313. package/src/core/textures/ImageTexture.ts +379 -379
  314. package/src/core/textures/NoiseTexture.ts +104 -104
  315. package/src/core/textures/RenderTexture.ts +85 -85
  316. package/src/core/textures/SubTexture.ts +225 -179
  317. package/src/core/textures/Texture.ts +347 -435
  318. package/src/core/utils.ts +227 -227
  319. package/src/env.d.ts +7 -7
  320. package/src/main-api/DynamicShaderController.ts +104 -104
  321. package/src/main-api/INode.ts +101 -101
  322. package/src/main-api/Inspector.ts +505 -505
  323. package/src/main-api/Renderer.ts +698 -694
  324. package/src/main-api/ShaderController.ts +80 -80
  325. package/src/main-api/utils.ts +45 -45
  326. package/src/utils.ts +248 -248
  327. package/COPYING +0 -1
@@ -0,0 +1,375 @@
1
+ import type { ShaderMap } from '../core/CoreShaderManager.js';
2
+ import type { ExtractProps, TextureMap, TextureOptions } from '../core/CoreTextureManager.js';
3
+ import type { INode, INodeWritableProps, ITextNode, ITextNodeWritableProps } from './INode.js';
4
+ import type { ICoreDriver } from './ICoreDriver.js';
5
+ import { type ManualCountTextureUsageTrackerOptions } from './texture-usage-trackers/ManualCountTextureUsageTracker.js';
6
+ import type { TextureUsageTracker } from './texture-usage-trackers/TextureUsageTracker.js';
7
+ import { EventEmitter } from '../common/EventEmitter.js';
8
+ import type { IShaderController } from './IShaderController.js';
9
+ /**
10
+ * An immutable reference to a specific Texture type
11
+ *
12
+ * @remarks
13
+ * See {@link TextureRef} for more details.
14
+ */
15
+ export interface SpecificTextureRef<TxType extends keyof TextureMap> {
16
+ readonly descType: 'texture';
17
+ readonly txType: TxType;
18
+ readonly props: ExtractProps<TextureMap[TxType]>;
19
+ readonly options?: Readonly<TextureOptions>;
20
+ }
21
+ type MapTextureRefs<TxType extends keyof TextureMap> = TxType extends keyof TextureMap ? SpecificTextureRef<TxType> : never;
22
+ /**
23
+ * An immutable reference to a Texture
24
+ *
25
+ * @remarks
26
+ * This structure should only be created by the RendererMain's `createTexture`
27
+ * method. The structure is immutable and should not be modified once created.
28
+ *
29
+ * A `TextureRef` exists in the Main API Space and is used to point to an actual
30
+ * `Texture` instance in the Core API Space. The `TextureRef` is used to
31
+ * communicate with the Core API Space to create, load, and destroy the
32
+ * `Texture` instance.
33
+ *
34
+ * This type is technically a discriminated union of all possible texture types.
35
+ * If you'd like to represent a specific texture type, you can use the
36
+ * `SpecificTextureRef` generic type.
37
+ */
38
+ export type TextureRef = MapTextureRefs<keyof TextureMap>;
39
+ /**
40
+ * An immutable reference to a specific Shader type
41
+ *
42
+ * @remarks
43
+ * See {@link ShaderRef} for more details.
44
+ */
45
+ export interface SpecificShaderRef<ShType extends keyof ShaderMap> {
46
+ readonly descType: 'shader';
47
+ readonly shType: ShType;
48
+ readonly props: ExtractProps<ShaderMap[ShType]>;
49
+ }
50
+ type MapShaderRefs<ShType extends keyof ShaderMap> = ShType extends keyof ShaderMap ? SpecificShaderRef<ShType> : never;
51
+ /**
52
+ * An immutable reference to a Shader
53
+ *
54
+ * @remarks
55
+ * This structure should only be created by the RendererMain's `createShader`
56
+ * method. The structure is immutable and should not be modified once created.
57
+ *
58
+ * A `ShaderRef` exists in the Main API Space and is used to point to an actual
59
+ * `Shader` instance in the Core API Space. The `ShaderRef` is used to
60
+ * communicate with the Core API Space to create, load, and destroy the
61
+ * `Shader` instance.
62
+ *
63
+ * This type is technically a discriminated union of all possible shader types.
64
+ * If you'd like to represent a specific shader type, you can use the
65
+ * `SpecificShaderRef` generic type.
66
+ */
67
+ export type ShaderRef = MapShaderRefs<keyof ShaderMap>;
68
+ /**
69
+ * Configuration settings for {@link RendererMain}
70
+ */
71
+ export interface RendererMainSettings {
72
+ /**
73
+ * Authored logical pixel width of the application
74
+ *
75
+ * @defaultValue `1920`
76
+ */
77
+ appWidth?: number;
78
+ /**
79
+ * Authored logical pixel height of the application
80
+ *
81
+ * @defaultValue `1080`
82
+ */
83
+ appHeight?: number;
84
+ /**
85
+ * Texture Memory Byte Threshold
86
+ *
87
+ * @remarks
88
+ * When the amount of GPU VRAM used by textures exceeds this threshold,
89
+ * the Renderer will free up all the textures that are current not visible
90
+ * within the configured `boundsMargin`.
91
+ *
92
+ * When set to `0`, the threshold-based texture memory manager is disabled.
93
+ */
94
+ txMemByteThreshold?: number;
95
+ /**
96
+ * Bounds margin to extend the boundary in which a CoreNode is added as Quad.
97
+ */
98
+ boundsMargin?: number | [number, number, number, number];
99
+ /**
100
+ * Factor to convert app-authored logical coorindates to device logical coordinates
101
+ *
102
+ * @remarks
103
+ * This value allows auto-scaling to support larger/small resolutions than the
104
+ * app was authored for.
105
+ *
106
+ * If the app was authored for 1920x1080 and this value is 2, the app's canvas
107
+ * will be rendered at 3840x2160 logical pixels.
108
+ *
109
+ * Likewise, if the app was authored for 1920x1080 and this value is 0.66667,
110
+ * the app's canvas will be rendered at 1280x720 logical pixels.
111
+ *
112
+ * @defaultValue `1`
113
+ */
114
+ deviceLogicalPixelRatio?: number;
115
+ /**
116
+ * Factor to convert device logical coordinates to device physical coordinates
117
+ *
118
+ * @remarks
119
+ * This value allows auto-scaling to support devices with different pixel densities.
120
+ *
121
+ * This controls the number of physical pixels that are used to render each logical
122
+ * pixel. For example, if the device has a pixel density of 2, each logical pixel
123
+ * will be rendered using 2x2 physical pixels.
124
+ *
125
+ * By default, it will be set to `window.devicePixelRatio` which is the pixel
126
+ * density of the device the app is running on reported by the browser.
127
+ *
128
+ * @defaultValue `window.devicePixelRatio`
129
+ */
130
+ devicePhysicalPixelRatio?: number;
131
+ /**
132
+ * RGBA encoded number of the background to use
133
+ *
134
+ * @defaultValue `0x00000000`
135
+ */
136
+ clearColor?: number;
137
+ /**
138
+ * Path to a custom core module to use
139
+ *
140
+ * @defaultValue `null`
141
+ */
142
+ coreExtensionModule?: string | null;
143
+ /**
144
+ * Enable experimental FinalizationRegistry-based texture usage tracking
145
+ * for texture garbage collection
146
+ *
147
+ * @remarks
148
+ * By default, the Renderer uses a manual reference counting system to track
149
+ * texture usage. Textures are eventually released from the Core Texture
150
+ * Manager's Usage Cache when they are no longer referenced by any Nodes (or
151
+ * SubTextures that are referenced by nodes). This works well enough, but has
152
+ * the consequence of textures being removed from Usage Cache even if their
153
+ * references are still alive in memory. This can require a texture to be
154
+ * reloaded from the source when it is used again after being removed from
155
+ * cache.
156
+ *
157
+ * This is an experimental feature that uses a FinalizationRegistry to track
158
+ * texture usage. This causes textures to be removed from the Usage Cache only
159
+ * when their references are no longer alive in memory. Meaning a loaded texture
160
+ * will remain in the Usage Cache until it's reference is garbage collected.
161
+ *
162
+ * This feature is not enabled by default because browser support for the
163
+ * FinalizationRegistry is limited. It should NOT be enabled in production apps
164
+ * as this behavior is not guaranteed to be supported in the future. Developer
165
+ * feedback on this feature, however, is welcome.
166
+ *
167
+ * @defaultValue `false`
168
+ */
169
+ experimental_FinalizationRegistryTextureUsageTracker?: boolean;
170
+ textureCleanupOptions?: ManualCountTextureUsageTrackerOptions;
171
+ /**
172
+ * Interval in milliseconds to receive FPS updates
173
+ *
174
+ * @remarks
175
+ * If set to `0`, FPS updates will be disabled.
176
+ *
177
+ * @defaultValue `0` (disabled)
178
+ */
179
+ fpsUpdateInterval?: number;
180
+ /**
181
+ * Include context call (i.e. WebGL) information in FPS updates
182
+ *
183
+ * @remarks
184
+ * When enabled the number of calls to each context method over the
185
+ * `fpsUpdateInterval` will be included in the FPS update payload's
186
+ * `contextSpyData` property.
187
+ *
188
+ * Enabling the context spy has a serious impact on performance so only use it
189
+ * when you need to extract context call information.
190
+ *
191
+ * @defaultValue `false` (disabled)
192
+ */
193
+ enableContextSpy?: boolean;
194
+ /**
195
+ * Number or Image Workers to use
196
+ *
197
+ * @remarks
198
+ * On devices with multiple cores, this can be used to improve image loading
199
+ * as well as reduce the impact of image loading on the main thread.
200
+ * Set to 0 to disable image workers.
201
+ *
202
+ * @defaultValue `2`
203
+ */
204
+ numImageWorkers?: number;
205
+ /**
206
+ * Enable inspector
207
+ *
208
+ * @remarks
209
+ * When enabled the renderer will spawn a inspector. The inspector will
210
+ * replicate the state of the Nodes created in the renderer and allow
211
+ * inspection of the state of the nodes.
212
+ *
213
+ * @defaultValue `false` (disabled)
214
+ */
215
+ enableInspector?: boolean;
216
+ }
217
+ /**
218
+ * The Renderer Main API
219
+ *
220
+ * @remarks
221
+ * This is the primary class used to configure and operate the Renderer.
222
+ *
223
+ * It is used to create and destroy Nodes, as well as Texture and Shader
224
+ * references.
225
+ *
226
+ * Example:
227
+ * ```ts
228
+ * import { RendererMain, MainCoreDriver } from '@lightningjs/renderer';
229
+ *
230
+ * // Initialize the Renderer
231
+ * const renderer = new RendererMain(
232
+ * {
233
+ * appWidth: 1920,
234
+ * appHeight: 1080
235
+ * },
236
+ * 'app',
237
+ * new MainCoreDriver(),
238
+ * );
239
+ * ```
240
+ */
241
+ export declare class RendererMain extends EventEmitter {
242
+ readonly root: INode | null;
243
+ readonly driver: ICoreDriver;
244
+ readonly canvas: HTMLCanvasElement;
245
+ readonly settings: Readonly<Required<RendererMainSettings>>;
246
+ private inspector;
247
+ private nodes;
248
+ private nextTextureId;
249
+ /**
250
+ * Texture Usage Tracker for Usage Based Texture Garbage Collection
251
+ *
252
+ * @remarks
253
+ * For internal use only. DO NOT ACCESS.
254
+ */
255
+ textureTracker: TextureUsageTracker;
256
+ /**
257
+ * Constructs a new Renderer instance
258
+ *
259
+ * @param settings Renderer settings
260
+ * @param target Element ID or HTMLElement to insert the canvas into
261
+ * @param driver Core Driver to use
262
+ */
263
+ constructor(settings: RendererMainSettings, target: string | HTMLElement, driver: ICoreDriver);
264
+ /**
265
+ * Initialize the renderer
266
+ *
267
+ * @remarks
268
+ * This method must be called and resolved asyncronously before any other
269
+ * methods are called.
270
+ */
271
+ init(): Promise<void>;
272
+ /**
273
+ * Create a new scene graph node
274
+ *
275
+ * @remarks
276
+ * A node is the main graphical building block of the Renderer scene graph. It
277
+ * can be a container for other nodes, or it can be a leaf node that renders a
278
+ * solid color, gradient, image, or specific texture, using a specific shader.
279
+ *
280
+ * To create a text node, see {@link createTextNode}.
281
+ *
282
+ * See {@link INode} for more details.
283
+ *
284
+ * @param props
285
+ * @returns
286
+ */
287
+ createNode(props: Partial<INodeWritableProps>): INode;
288
+ /**
289
+ * Create a new scene graph text node
290
+ *
291
+ * @remarks
292
+ * A text node is the second graphical building block of the Renderer scene
293
+ * graph. It renders text using a specific text renderer that is automatically
294
+ * chosen based on the font requested and what type of fonts are installed
295
+ * into an app via a CoreExtension.
296
+ *
297
+ * See {@link ITextNode} for more details.
298
+ *
299
+ * @param props
300
+ * @returns
301
+ */
302
+ createTextNode(props: Partial<ITextNodeWritableProps>): ITextNode;
303
+ /**
304
+ * Resolves the default property values for a Node
305
+ *
306
+ * @remarks
307
+ * This method is used internally by the RendererMain to resolve the default
308
+ * property values for a Node. It is exposed publicly so that it can be used
309
+ * by Core Driver implementations.
310
+ *
311
+ * @param props
312
+ * @returns
313
+ */
314
+ resolveNodeDefaults(props: Partial<INodeWritableProps>): INodeWritableProps;
315
+ /**
316
+ * Destroy a node
317
+ *
318
+ * @remarks
319
+ * This method destroys a node but does not destroy its children.
320
+ *
321
+ * @param node
322
+ * @returns
323
+ */
324
+ destroyNode(node: INode): void;
325
+ /**
326
+ * Create a new texture reference
327
+ *
328
+ * @remarks
329
+ * This method creates a new reference to a texture. The texture is not
330
+ * loaded until it is used on a node.
331
+ *
332
+ * It can be assigned to a node's `texture` property, or it can be used
333
+ * when creating a SubTexture.
334
+ *
335
+ * @param textureType
336
+ * @param props
337
+ * @param options
338
+ * @returns
339
+ */
340
+ createTexture<TxType extends keyof TextureMap>(textureType: TxType, props: SpecificTextureRef<TxType>['props'], options?: TextureOptions): SpecificTextureRef<TxType>;
341
+ /**
342
+ * Create a new shader reference
343
+ *
344
+ * @remarks
345
+ * This method creates a new reference to a shader. The shader is not
346
+ * loaded until it is used on a Node.
347
+ *
348
+ * It can be assigned to a Node's `shader` property.
349
+ *
350
+ * @param shaderType
351
+ * @param props
352
+ * @returns
353
+ */
354
+ createShader<ShType extends keyof ShaderMap>(shaderType: ShType, props?: SpecificShaderRef<ShType>['props']): IShaderController;
355
+ /**
356
+ * Get a Node by its ID
357
+ *
358
+ * @param id
359
+ * @returns
360
+ */
361
+ getNodeById(id: number): INode | null;
362
+ toggleFreeze(): void;
363
+ advanceFrame(): void;
364
+ /**
365
+ * Re-render the current frame without advancing any running animations.
366
+ *
367
+ * @remarks
368
+ * Any state changes will be reflected in the re-rendered frame. Useful for
369
+ * debugging.
370
+ *
371
+ * May not do anything if the render loop is running on a separate worker.
372
+ */
373
+ rerender(): void;
374
+ }
375
+ export {};