@lightningjs/renderer 3.0.0-beta4 → 3.0.0-beta6

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 (359) 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/CoreNode.d.ts +6 -16
  14. package/dist/src/core/CoreNode.js +25 -38
  15. package/dist/src/core/CoreNode.js.map +1 -1
  16. package/dist/src/core/CoreStuff.js +138 -0
  17. package/dist/src/core/CoreStuff.js.map +1 -0
  18. package/dist/src/core/CoreTextNode.js +1 -1
  19. package/dist/src/core/CoreTextNode.js.map +1 -1
  20. package/dist/src/core/CoreTextureManager.js +4 -5
  21. package/dist/src/core/CoreTextureManager.js.map +1 -1
  22. package/dist/src/core/CoreTexturizer.d.ts +14 -0
  23. package/dist/src/core/CoreTexturizer.js +47 -0
  24. package/dist/src/core/CoreTexturizer.js.map +1 -0
  25. package/dist/src/core/LngNode.d.ts +736 -0
  26. package/dist/src/core/LngNode.js +1174 -0
  27. package/dist/src/core/LngNode.js.map +1 -0
  28. package/dist/src/core/Matrix2DContext.d.ts +15 -0
  29. package/dist/src/core/Matrix2DContext.js +45 -0
  30. package/dist/src/core/Matrix2DContext.js.map +1 -0
  31. package/dist/src/core/ShaderNode.d.ts +10 -0
  32. package/dist/src/core/ShaderNode.js +30 -0
  33. package/dist/src/core/ShaderNode.js.map +1 -0
  34. package/dist/src/core/Stage.js +0 -3
  35. package/dist/src/core/Stage.js.map +1 -1
  36. package/dist/src/core/TextNode.d.ts +103 -0
  37. package/dist/src/core/TextNode.js +331 -0
  38. package/dist/src/core/TextNode.js.map +1 -0
  39. package/dist/src/core/TextureMemoryManager.js +3 -4
  40. package/dist/src/core/TextureMemoryManager.js.map +1 -1
  41. package/dist/src/core/lib/Coords.d.ts +14 -0
  42. package/dist/src/core/lib/Coords.js +55 -0
  43. package/dist/src/core/lib/Coords.js.map +1 -0
  44. package/dist/src/core/lib/glm/common.d.ts +162 -0
  45. package/dist/src/core/lib/glm/common.js +81 -0
  46. package/dist/src/core/lib/glm/common.js.map +1 -0
  47. package/dist/src/core/lib/glm/index.d.ts +11 -0
  48. package/dist/src/core/lib/glm/index.js +30 -0
  49. package/dist/src/core/lib/glm/index.js.map +1 -0
  50. package/dist/src/core/lib/glm/mat2.d.ts +219 -0
  51. package/dist/src/core/lib/glm/mat2.js +396 -0
  52. package/dist/src/core/lib/glm/mat2.js.map +1 -0
  53. package/dist/src/core/lib/glm/mat2d.d.ts +237 -0
  54. package/dist/src/core/lib/glm/mat2d.js +442 -0
  55. package/dist/src/core/lib/glm/mat2d.js.map +1 -0
  56. package/dist/src/core/lib/glm/mat3.d.ts +283 -0
  57. package/dist/src/core/lib/glm/mat3.js +680 -0
  58. package/dist/src/core/lib/glm/mat3.js.map +1 -0
  59. package/dist/src/core/lib/glm/mat4.d.ts +550 -0
  60. package/dist/src/core/lib/glm/mat4.js +1802 -0
  61. package/dist/src/core/lib/glm/mat4.js.map +1 -0
  62. package/dist/src/core/lib/glm/quat.d.ts +363 -0
  63. package/dist/src/core/lib/glm/quat.js +693 -0
  64. package/dist/src/core/lib/glm/quat.js.map +1 -0
  65. package/dist/src/core/lib/glm/quat2.d.ts +356 -0
  66. package/dist/src/core/lib/glm/quat2.js +754 -0
  67. package/dist/src/core/lib/glm/quat2.js.map +1 -0
  68. package/dist/src/core/lib/glm/vec2.d.ts +365 -0
  69. package/dist/src/core/lib/glm/vec2.js +569 -0
  70. package/dist/src/core/lib/glm/vec2.js.map +1 -0
  71. package/dist/src/core/lib/glm/vec3.d.ts +406 -0
  72. package/dist/src/core/lib/glm/vec3.js +720 -0
  73. package/dist/src/core/lib/glm/vec3.js.map +1 -0
  74. package/dist/src/core/lib/glm/vec4.d.ts +330 -0
  75. package/dist/src/core/lib/glm/vec4.js +608 -0
  76. package/dist/src/core/lib/glm/vec4.js.map +1 -0
  77. package/dist/src/core/renderers/CoreRenderer.d.ts +1 -1
  78. package/dist/src/core/renderers/CoreShaderManager.d.ts +19 -0
  79. package/dist/src/core/renderers/CoreShaderManager.js +33 -0
  80. package/dist/src/core/renderers/CoreShaderManager.js.map +1 -0
  81. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.d.ts +27 -0
  82. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js +82 -0
  83. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js.map +1 -0
  84. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.d.ts +11 -0
  85. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js +34 -0
  86. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js.map +1 -0
  87. package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +1 -1
  88. package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -1
  89. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +35 -35
  90. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +45 -45
  91. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +61 -61
  92. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +93 -93
  93. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +63 -63
  94. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +62 -62
  95. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +15 -15
  96. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +6 -6
  97. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +15 -15
  98. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +15 -15
  99. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +15 -15
  100. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +42 -42
  101. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +44 -44
  102. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +3 -3
  103. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +22 -22
  104. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +28 -28
  105. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +10 -10
  106. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +37 -37
  107. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +19 -19
  108. package/dist/src/core/scene/Scene.d.ts +59 -0
  109. package/dist/src/core/scene/Scene.js +106 -0
  110. package/dist/src/core/scene/Scene.js.map +1 -0
  111. package/dist/src/core/shaders/canvas/RoundedWithBorder.js +8 -2
  112. package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
  113. package/dist/src/core/shaders/webgl/Border.js +86 -63
  114. package/dist/src/core/shaders/webgl/Border.js.map +1 -1
  115. package/dist/src/core/shaders/webgl/Default.js +47 -47
  116. package/dist/src/core/shaders/webgl/DefaultBatched.js +61 -61
  117. package/dist/src/core/shaders/webgl/HolePunch.js +32 -32
  118. package/dist/src/core/shaders/webgl/LinearGradient.js +36 -36
  119. package/dist/src/core/shaders/webgl/RadialGradient.js +33 -33
  120. package/dist/src/core/shaders/webgl/Rounded.js +71 -71
  121. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +104 -72
  122. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
  123. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +123 -86
  124. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
  125. package/dist/src/core/shaders/webgl/RoundedWithShadow.js +54 -54
  126. package/dist/src/core/shaders/webgl/SdfShader.js +62 -62
  127. package/dist/src/core/shaders/webgl/Shadow.js +83 -83
  128. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +3 -1
  129. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  130. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +20 -0
  131. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +55 -0
  132. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +1 -0
  133. package/dist/src/main-api/ICoreDriver.d.ts +27 -0
  134. package/dist/src/main-api/ICoreDriver.js +20 -0
  135. package/dist/src/main-api/ICoreDriver.js.map +1 -0
  136. package/dist/src/main-api/IRenderDriver.d.ts +20 -0
  137. package/dist/src/main-api/IRenderDriver.js +20 -0
  138. package/dist/src/main-api/IRenderDriver.js.map +1 -0
  139. package/dist/src/main-api/IShaderController.d.ts +14 -0
  140. package/dist/src/main-api/IShaderController.js +30 -0
  141. package/dist/src/main-api/IShaderController.js.map +1 -0
  142. package/dist/src/main-api/IShaderNode.d.ts +17 -0
  143. package/dist/src/main-api/IShaderNode.js +19 -0
  144. package/dist/src/main-api/IShaderNode.js.map +1 -0
  145. package/dist/src/main-api/Inspector.js +1 -1
  146. package/dist/src/main-api/Inspector.js.map +1 -1
  147. package/dist/src/main-api/Renderer.js +2 -3
  148. package/dist/src/main-api/Renderer.js.map +1 -1
  149. package/dist/src/main-api/RendererMain.d.ts +375 -0
  150. package/dist/src/main-api/RendererMain.js +365 -0
  151. package/dist/src/main-api/RendererMain.js.map +1 -0
  152. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.d.ts +9 -0
  153. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js +38 -0
  154. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js.map +1 -0
  155. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.d.ts +56 -0
  156. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js +101 -0
  157. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +1 -0
  158. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.d.ts +32 -0
  159. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js +28 -0
  160. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js.map +1 -0
  161. package/dist/src/render-drivers/main/MainCoreDriver.d.ts +24 -0
  162. package/dist/src/render-drivers/main/MainCoreDriver.js +118 -0
  163. package/dist/src/render-drivers/main/MainCoreDriver.js.map +1 -0
  164. package/dist/src/render-drivers/main/MainOnlyNode.d.ts +99 -0
  165. package/dist/src/render-drivers/main/MainOnlyNode.js +396 -0
  166. package/dist/src/render-drivers/main/MainOnlyNode.js.map +1 -0
  167. package/dist/src/render-drivers/main/MainOnlyShaderController.d.ts +6 -0
  168. package/dist/src/render-drivers/main/MainOnlyShaderController.js +15 -0
  169. package/dist/src/render-drivers/main/MainOnlyShaderController.js.map +1 -0
  170. package/dist/src/render-drivers/main/MainOnlyShaderNode.d.ts +7 -0
  171. package/dist/src/render-drivers/main/MainOnlyShaderNode.js +34 -0
  172. package/dist/src/render-drivers/main/MainOnlyShaderNode.js.map +1 -0
  173. package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +47 -0
  174. package/dist/src/render-drivers/main/MainOnlyTextNode.js +205 -0
  175. package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +1 -0
  176. package/dist/src/render-drivers/main/MainRenderDriver.d.ts +17 -0
  177. package/dist/src/render-drivers/main/MainRenderDriver.js +88 -0
  178. package/dist/src/render-drivers/main/MainRenderDriver.js.map +1 -0
  179. package/dist/src/render-drivers/threadx/NodeStruct.d.ts +90 -0
  180. package/dist/src/render-drivers/threadx/NodeStruct.js +281 -0
  181. package/dist/src/render-drivers/threadx/NodeStruct.js.map +1 -0
  182. package/dist/src/render-drivers/threadx/SharedNode.d.ts +39 -0
  183. package/dist/src/render-drivers/threadx/SharedNode.js +60 -0
  184. package/dist/src/render-drivers/threadx/SharedNode.js.map +1 -0
  185. package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +44 -0
  186. package/dist/src/render-drivers/threadx/TextNodeStruct.js +201 -0
  187. package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +1 -0
  188. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +28 -0
  189. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +234 -0
  190. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +1 -0
  191. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +20 -0
  192. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +84 -0
  193. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +1 -0
  194. package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +44 -0
  195. package/dist/src/render-drivers/threadx/ThreadXMainNode.js +154 -0
  196. package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +1 -0
  197. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.d.ts +6 -0
  198. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js +16 -0
  199. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js.map +1 -0
  200. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.d.ts +7 -0
  201. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js +15 -0
  202. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js.map +1 -0
  203. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +28 -0
  204. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +55 -0
  205. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +1 -0
  206. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.d.ts +21 -0
  207. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +198 -0
  208. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +1 -0
  209. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +70 -0
  210. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +32 -0
  211. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +1 -0
  212. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +19 -0
  213. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +177 -0
  214. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +1 -0
  215. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +27 -0
  216. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +108 -0
  217. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +1 -0
  218. package/dist/src/render-drivers/threadx/worker/renderer.d.ts +1 -0
  219. package/dist/src/render-drivers/threadx/worker/renderer.js +145 -0
  220. package/dist/src/render-drivers/threadx/worker/renderer.js.map +1 -0
  221. package/dist/src/render-drivers/utils.d.ts +12 -0
  222. package/dist/src/render-drivers/utils.js +69 -0
  223. package/dist/src/render-drivers/utils.js.map +1 -0
  224. package/dist/src/utils.d.ts +1 -6
  225. package/dist/src/utils.js +2 -9
  226. package/dist/src/utils.js.map +1 -1
  227. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  228. package/exports/canvas-shaders.ts +28 -28
  229. package/exports/canvas.ts +45 -45
  230. package/exports/index.ts +90 -90
  231. package/exports/inspector.ts +24 -24
  232. package/exports/utils.ts +44 -44
  233. package/exports/webgl-shaders.ts +28 -28
  234. package/exports/webgl.ts +50 -50
  235. package/package.json +2 -2
  236. package/src/common/CommonTypes.ts +146 -146
  237. package/src/common/EventEmitter.ts +77 -77
  238. package/src/common/IAnimationController.ts +92 -92
  239. package/src/common/IEventEmitter.ts +28 -28
  240. package/src/core/CoreNode.test.ts +202 -203
  241. package/src/core/CoreNode.ts +2469 -2494
  242. package/src/core/CoreShaderManager.ts +188 -188
  243. package/src/core/CoreTextNode.ts +448 -448
  244. package/src/core/CoreTextureManager.ts +600 -601
  245. package/src/core/Stage.ts +751 -754
  246. package/src/core/TextureMemoryManager.ts +394 -395
  247. package/src/core/animations/AnimationManager.ts +38 -38
  248. package/src/core/animations/CoreAnimation.ts +284 -284
  249. package/src/core/animations/CoreAnimationController.ts +157 -157
  250. package/src/core/lib/ContextSpy.ts +41 -41
  251. package/src/core/lib/ImageWorker.ts +280 -280
  252. package/src/core/lib/Matrix3d.ts +244 -244
  253. package/src/core/lib/RenderCoords.ts +71 -71
  254. package/src/core/lib/WebGlContextWrapper.ts +1374 -1374
  255. package/src/core/lib/textureCompression.ts +152 -152
  256. package/src/core/lib/textureSvg.ts +78 -78
  257. package/src/core/lib/utils.ts +386 -386
  258. package/src/core/lib/validateImageBitmap.ts +87 -87
  259. package/src/core/platforms/Platform.ts +77 -77
  260. package/src/core/platforms/web/WebPlatform.ts +84 -84
  261. package/src/core/renderers/CoreContextTexture.ts +43 -43
  262. package/src/core/renderers/CoreRenderOp.ts +22 -22
  263. package/src/core/renderers/CoreRenderer.ts +109 -109
  264. package/src/core/renderers/CoreShaderNode.ts +165 -165
  265. package/src/core/renderers/CoreShaderProgram.ts +23 -23
  266. package/src/core/renderers/canvas/CanvasRenderer.ts +298 -298
  267. package/src/core/renderers/canvas/CanvasShaderNode.ts +99 -99
  268. package/src/core/renderers/canvas/CanvasTexture.ts +156 -156
  269. package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +220 -220
  270. package/src/core/renderers/canvas/internal/ColorUtils.ts +85 -85
  271. package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +86 -86
  272. package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +50 -50
  273. package/src/core/renderers/webgl/WebGlCtxTexture.ts +301 -301
  274. package/src/core/renderers/webgl/WebGlRenderOp.ts +161 -161
  275. package/src/core/renderers/webgl/WebGlRenderer.ts +750 -750
  276. package/src/core/renderers/webgl/WebGlShaderNode.ts +437 -437
  277. package/src/core/renderers/webgl/WebGlShaderProgram.ts +318 -318
  278. package/src/core/renderers/webgl/internal/BufferCollection.ts +54 -54
  279. package/src/core/renderers/webgl/internal/RendererUtils.ts +155 -155
  280. package/src/core/renderers/webgl/internal/ShaderUtils.ts +281 -281
  281. package/src/core/renderers/webgl/internal/WebGlUtils.ts +35 -35
  282. package/src/core/shaders/canvas/Border.ts +78 -78
  283. package/src/core/shaders/canvas/HolePunch.ts +62 -62
  284. package/src/core/shaders/canvas/LinearGradient.ts +69 -69
  285. package/src/core/shaders/canvas/RadialGradient.ts +113 -113
  286. package/src/core/shaders/canvas/Rounded.ts +55 -55
  287. package/src/core/shaders/canvas/RoundedWithBorder.ts +72 -68
  288. package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +88 -88
  289. package/src/core/shaders/canvas/RoundedWithShadow.ts +69 -69
  290. package/src/core/shaders/canvas/Shadow.ts +52 -52
  291. package/src/core/shaders/canvas/utils/render.ts +151 -151
  292. package/src/core/shaders/templates/BorderTemplate.ts +115 -115
  293. package/src/core/shaders/templates/HolePunchTemplate.ts +82 -82
  294. package/src/core/shaders/templates/LinearGradientTemplate.ts +71 -71
  295. package/src/core/shaders/templates/RadialGradientTemplate.ts +81 -81
  296. package/src/core/shaders/templates/RoundedTemplate.ts +98 -98
  297. package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +38 -38
  298. package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +35 -35
  299. package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +35 -35
  300. package/src/core/shaders/templates/ShadowTemplate.ts +106 -106
  301. package/src/core/shaders/templates/shaderUtils.ts +47 -47
  302. package/src/core/shaders/webgl/Border.ts +116 -96
  303. package/src/core/shaders/webgl/Default.ts +89 -89
  304. package/src/core/shaders/webgl/DefaultBatched.ts +129 -129
  305. package/src/core/shaders/webgl/HolePunch.ts +78 -78
  306. package/src/core/shaders/webgl/LinearGradient.ts +81 -81
  307. package/src/core/shaders/webgl/RadialGradient.ts +84 -84
  308. package/src/core/shaders/webgl/Rounded.ts +117 -117
  309. package/src/core/shaders/webgl/RoundedWithBorder.ts +144 -114
  310. package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +166 -133
  311. package/src/core/shaders/webgl/RoundedWithShadow.ts +98 -98
  312. package/src/core/shaders/webgl/SdfShader.ts +134 -134
  313. package/src/core/shaders/webgl/Shadow.ts +115 -115
  314. package/src/core/text-rendering/TextRenderingUtils.ts +36 -36
  315. package/src/core/text-rendering/TextTextureRendererUtils.ts +263 -263
  316. package/src/core/text-rendering/TrFontManager.ts +183 -183
  317. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +176 -176
  318. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +139 -139
  319. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +173 -173
  320. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +171 -171
  321. package/src/core/text-rendering/font-face-types/TrFontFace.ts +187 -187
  322. package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +94 -94
  323. package/src/core/text-rendering/font-face-types/utils.ts +39 -39
  324. package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +514 -514
  325. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +863 -863
  326. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +849 -846
  327. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +48 -48
  328. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +66 -66
  329. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +52 -52
  330. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +32 -32
  331. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +117 -117
  332. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +133 -133
  333. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +38 -38
  334. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +497 -497
  335. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +49 -49
  336. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +52 -52
  337. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +205 -205
  338. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +93 -93
  339. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +40 -40
  340. package/src/core/text-rendering/renderers/TextRenderer.ts +567 -567
  341. package/src/core/textures/ColorTexture.ts +102 -102
  342. package/src/core/textures/ImageTexture.ts +410 -410
  343. package/src/core/textures/NoiseTexture.ts +104 -104
  344. package/src/core/textures/RenderTexture.ts +85 -85
  345. package/src/core/textures/SubTexture.ts +205 -205
  346. package/src/core/textures/Texture.ts +358 -358
  347. package/src/core/utils.ts +227 -227
  348. package/src/env.d.ts +7 -7
  349. package/src/main-api/INode.ts +100 -100
  350. package/src/main-api/Inspector.ts +522 -522
  351. package/src/main-api/Renderer.ts +673 -675
  352. package/src/main-api/utils.ts +45 -45
  353. package/src/utils.ts +267 -267
  354. package/COPYING +0 -1
  355. package/dist/src/core/temp.js +0 -77
  356. package/dist/src/core/temp.js.map +0 -1
  357. package/scripts/please-use-pnpm.js +0 -13
  358. package/src/core/platform.ts +0 -64
  359. /package/dist/src/core/{temp.d.ts → CoreStuff.d.ts} +0 -0
@@ -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 {};