@lightningjs/renderer 2.13.1 → 3.0.0-beta2

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 (440) hide show
  1. package/dist/exports/canvas-shaders.d.ts +10 -0
  2. package/dist/exports/canvas-shaders.js +27 -0
  3. package/dist/exports/canvas-shaders.js.map +1 -0
  4. package/dist/exports/canvas.d.ts +7 -1
  5. package/dist/exports/canvas.js +7 -1
  6. package/dist/exports/canvas.js.map +1 -1
  7. package/dist/exports/index.d.ts +15 -8
  8. package/dist/exports/index.js +7 -4
  9. package/dist/exports/index.js.map +1 -1
  10. package/dist/exports/webgl-shaders.d.ts +11 -0
  11. package/dist/exports/webgl-shaders.js +28 -0
  12. package/dist/exports/webgl-shaders.js.map +1 -0
  13. package/dist/exports/webgl.d.ts +9 -1
  14. package/dist/exports/webgl.js +9 -1
  15. package/dist/exports/webgl.js.map +1 -1
  16. package/dist/src/core/CoreNode.d.ts +10 -5
  17. package/dist/src/core/CoreNode.js +34 -13
  18. package/dist/src/core/CoreNode.js.map +1 -1
  19. package/dist/src/core/CoreShaderManager.d.ts +29 -71
  20. package/dist/src/core/CoreShaderManager.js +110 -97
  21. package/dist/src/core/CoreShaderManager.js.map +1 -1
  22. package/dist/src/core/CoreStuff.d.ts +1 -0
  23. package/dist/src/core/CoreStuff.js +138 -0
  24. package/dist/src/core/CoreStuff.js.map +1 -0
  25. package/dist/src/core/CoreTextNode.js +1 -8
  26. package/dist/src/core/CoreTextNode.js.map +1 -1
  27. package/dist/src/core/CoreTexturizer.d.ts +14 -0
  28. package/dist/src/core/CoreTexturizer.js +47 -0
  29. package/dist/src/core/CoreTexturizer.js.map +1 -0
  30. package/dist/src/core/LngNode.d.ts +736 -0
  31. package/dist/src/core/LngNode.js +1174 -0
  32. package/dist/src/core/LngNode.js.map +1 -0
  33. package/dist/src/core/Matrix2DContext.d.ts +15 -0
  34. package/dist/src/core/Matrix2DContext.js +45 -0
  35. package/dist/src/core/Matrix2DContext.js.map +1 -0
  36. package/dist/src/core/ShaderNode.d.ts +10 -0
  37. package/dist/src/core/ShaderNode.js +30 -0
  38. package/dist/src/core/ShaderNode.js.map +1 -0
  39. package/dist/src/core/Stage.d.ts +11 -14
  40. package/dist/src/core/Stage.js +24 -29
  41. package/dist/src/core/Stage.js.map +1 -1
  42. package/dist/src/core/TextNode.d.ts +103 -0
  43. package/dist/src/core/TextNode.js +331 -0
  44. package/dist/src/core/TextNode.js.map +1 -0
  45. package/dist/src/core/animations/CoreAnimation.d.ts +0 -1
  46. package/dist/src/core/animations/CoreAnimation.js +6 -52
  47. package/dist/src/core/animations/CoreAnimation.js.map +1 -1
  48. package/dist/src/core/lib/Coords.d.ts +14 -0
  49. package/dist/src/core/lib/Coords.js +55 -0
  50. package/dist/src/core/lib/Coords.js.map +1 -0
  51. package/dist/src/core/lib/RenderCoords.d.ts +9 -10
  52. package/dist/src/core/lib/RenderCoords.js +43 -55
  53. package/dist/src/core/lib/RenderCoords.js.map +1 -1
  54. package/dist/src/core/lib/WebGlContextWrapper.d.ts +89 -54
  55. package/dist/src/core/lib/WebGlContextWrapper.js +153 -157
  56. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
  57. package/dist/src/core/lib/glm/common.d.ts +162 -0
  58. package/dist/src/core/lib/glm/common.js +81 -0
  59. package/dist/src/core/lib/glm/common.js.map +1 -0
  60. package/dist/src/core/lib/glm/index.d.ts +11 -0
  61. package/{src/core/renderers/CoreShader.ts → dist/src/core/lib/glm/index.js} +12 -23
  62. package/dist/src/core/lib/glm/index.js.map +1 -0
  63. package/dist/src/core/lib/glm/mat2.d.ts +219 -0
  64. package/dist/src/core/lib/glm/mat2.js +396 -0
  65. package/dist/src/core/lib/glm/mat2.js.map +1 -0
  66. package/dist/src/core/lib/glm/mat2d.d.ts +237 -0
  67. package/dist/src/core/lib/glm/mat2d.js +442 -0
  68. package/dist/src/core/lib/glm/mat2d.js.map +1 -0
  69. package/dist/src/core/lib/glm/mat3.d.ts +283 -0
  70. package/dist/src/core/lib/glm/mat3.js +680 -0
  71. package/dist/src/core/lib/glm/mat3.js.map +1 -0
  72. package/dist/src/core/lib/glm/mat4.d.ts +550 -0
  73. package/dist/src/core/lib/glm/mat4.js +1802 -0
  74. package/dist/src/core/lib/glm/mat4.js.map +1 -0
  75. package/dist/src/core/lib/glm/quat.d.ts +363 -0
  76. package/dist/src/core/lib/glm/quat.js +693 -0
  77. package/dist/src/core/lib/glm/quat.js.map +1 -0
  78. package/dist/src/core/lib/glm/quat2.d.ts +356 -0
  79. package/dist/src/core/lib/glm/quat2.js +754 -0
  80. package/dist/src/core/lib/glm/quat2.js.map +1 -0
  81. package/dist/src/core/lib/glm/vec2.d.ts +365 -0
  82. package/dist/src/core/lib/glm/vec2.js +569 -0
  83. package/dist/src/core/lib/glm/vec2.js.map +1 -0
  84. package/dist/src/core/lib/glm/vec3.d.ts +406 -0
  85. package/dist/src/core/lib/glm/vec3.js +720 -0
  86. package/dist/src/core/lib/glm/vec3.js.map +1 -0
  87. package/dist/src/core/lib/glm/vec4.d.ts +330 -0
  88. package/dist/src/core/lib/glm/vec4.js +608 -0
  89. package/dist/src/core/lib/glm/vec4.js.map +1 -0
  90. package/dist/src/core/lib/textureCompression.js +0 -1
  91. package/dist/src/core/lib/textureCompression.js.map +1 -1
  92. package/dist/src/core/lib/utils.d.ts +2 -1
  93. package/dist/src/core/lib/utils.js.map +1 -1
  94. package/dist/src/core/platform.js +1 -0
  95. package/dist/src/core/platform.js.map +1 -1
  96. package/dist/src/core/renderers/CoreRenderer.d.ts +11 -21
  97. package/dist/src/core/renderers/CoreRenderer.js +0 -6
  98. package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
  99. package/dist/src/core/renderers/CoreShaderManager.d.ts +19 -0
  100. package/dist/src/core/renderers/CoreShaderManager.js +33 -0
  101. package/dist/src/core/renderers/CoreShaderManager.js.map +1 -0
  102. package/dist/src/core/renderers/CoreShaderNode.d.ts +58 -0
  103. package/dist/src/core/renderers/CoreShaderNode.js +104 -0
  104. package/dist/src/core/renderers/CoreShaderNode.js.map +1 -0
  105. package/dist/src/core/renderers/CoreShaderProgram.d.ts +4 -0
  106. package/dist/src/core/renderers/CoreShaderProgram.js +20 -0
  107. package/dist/src/core/renderers/CoreShaderProgram.js.map +1 -0
  108. package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +36 -0
  109. package/dist/src/core/renderers/canvas/CanvasRenderer.js +212 -0
  110. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -0
  111. package/dist/src/core/renderers/canvas/CanvasShaderNode.d.ts +21 -0
  112. package/dist/src/core/renderers/canvas/CanvasShaderNode.js +60 -0
  113. package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -0
  114. package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +16 -0
  115. package/dist/src/core/renderers/canvas/CanvasTexture.js +124 -0
  116. package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -0
  117. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +0 -13
  118. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +192 -113
  119. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -1
  120. package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +2 -0
  121. package/dist/src/core/renderers/canvas/internal/ColorUtils.js +14 -0
  122. package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -1
  123. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.d.ts +27 -0
  124. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js +82 -0
  125. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js.map +1 -0
  126. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.d.ts +11 -0
  127. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js +34 -0
  128. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js.map +1 -0
  129. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +12 -0
  130. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +55 -0
  131. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -0
  132. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +9 -0
  133. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +38 -0
  134. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -0
  135. package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +57 -0
  136. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +227 -0
  137. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -0
  138. package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +44 -0
  139. package/dist/src/core/renderers/webgl/WebGlRenderOp.js +118 -0
  140. package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -0
  141. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +134 -0
  142. package/dist/src/core/renderers/webgl/WebGlRenderer.js +547 -0
  143. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -0
  144. package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +222 -0
  145. package/dist/src/core/renderers/webgl/WebGlShaderNode.js +334 -0
  146. package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -0
  147. package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +35 -0
  148. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +201 -0
  149. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -0
  150. package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +32 -5
  151. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +50 -0
  152. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -1
  153. package/dist/src/core/scene/Scene.d.ts +59 -0
  154. package/dist/src/core/scene/Scene.js +106 -0
  155. package/dist/src/core/scene/Scene.js.map +1 -0
  156. package/dist/src/core/shaders/canvas/Border.d.ts +9 -0
  157. package/dist/src/core/shaders/canvas/Border.js +57 -0
  158. package/dist/src/core/shaders/canvas/Border.js.map +1 -0
  159. package/dist/src/core/shaders/canvas/HolePunch.d.ts +7 -0
  160. package/dist/src/core/shaders/canvas/HolePunch.js +38 -0
  161. package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -0
  162. package/dist/src/core/shaders/canvas/LinearGradient.d.ts +10 -0
  163. package/dist/src/core/shaders/canvas/LinearGradient.js +46 -0
  164. package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -0
  165. package/dist/src/core/shaders/canvas/RadialGradient.d.ts +11 -0
  166. package/dist/src/core/shaders/canvas/RadialGradient.js +68 -0
  167. package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -0
  168. package/dist/src/core/shaders/canvas/Rounded.d.ts +7 -0
  169. package/dist/src/core/shaders/canvas/Rounded.js +33 -0
  170. package/dist/src/core/shaders/canvas/Rounded.js.map +1 -0
  171. package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +7 -0
  172. package/dist/src/core/shaders/canvas/RoundedWithBorder.js +35 -0
  173. package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -0
  174. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +8 -0
  175. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +39 -0
  176. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -0
  177. package/dist/src/core/shaders/canvas/RoundedWithShadow.d.ts +7 -0
  178. package/dist/src/core/shaders/canvas/RoundedWithShadow.js +38 -0
  179. package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -0
  180. package/dist/src/core/shaders/canvas/Shadow.d.ts +8 -0
  181. package/dist/src/core/shaders/canvas/Shadow.js +31 -0
  182. package/dist/src/core/shaders/canvas/Shadow.js.map +1 -0
  183. package/dist/src/core/shaders/canvas/utils/render.d.ts +5 -0
  184. package/dist/src/core/shaders/canvas/utils/render.js +84 -0
  185. package/dist/src/core/shaders/canvas/utils/render.js.map +1 -0
  186. package/dist/src/core/shaders/templates/BorderTemplate.d.ts +37 -0
  187. package/dist/src/core/shaders/templates/BorderTemplate.js +73 -0
  188. package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -0
  189. package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +46 -0
  190. package/dist/src/core/shaders/templates/HolePunchTemplate.js +35 -0
  191. package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -0
  192. package/dist/src/core/shaders/templates/LinearGradientTemplate.d.ts +23 -0
  193. package/dist/src/core/shaders/templates/LinearGradientTemplate.js +47 -0
  194. package/dist/src/core/shaders/templates/LinearGradientTemplate.js.map +1 -0
  195. package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +31 -0
  196. package/dist/src/core/shaders/templates/RadialGradientTemplate.js +49 -0
  197. package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -0
  198. package/dist/src/core/shaders/templates/RoundedTemplate.d.ts +29 -0
  199. package/dist/src/core/shaders/templates/RoundedTemplate.js +67 -0
  200. package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -0
  201. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +7 -0
  202. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js +24 -0
  203. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js.map +1 -0
  204. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +6 -0
  205. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js +23 -0
  206. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js.map +1 -0
  207. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +6 -0
  208. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js +23 -0
  209. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js.map +1 -0
  210. package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +34 -0
  211. package/dist/src/core/shaders/templates/ShadowTemplate.js +66 -0
  212. package/dist/src/core/shaders/templates/ShadowTemplate.js.map +1 -0
  213. package/dist/src/core/shaders/templates/shaderUtils.d.ts +5 -0
  214. package/dist/src/core/shaders/templates/shaderUtils.js +41 -0
  215. package/dist/src/core/shaders/templates/shaderUtils.js.map +1 -0
  216. package/dist/src/core/shaders/webgl/Border.d.ts +3 -0
  217. package/dist/src/core/shaders/webgl/Border.js +87 -0
  218. package/dist/src/core/shaders/webgl/Border.js.map +1 -0
  219. package/dist/src/core/shaders/webgl/Default.d.ts +2 -0
  220. package/dist/src/core/shaders/webgl/Default.js +86 -0
  221. package/dist/src/core/shaders/webgl/Default.js.map +1 -0
  222. package/dist/src/core/shaders/webgl/DefaultBatched.d.ts +2 -0
  223. package/dist/src/core/shaders/webgl/DefaultBatched.js +104 -0
  224. package/dist/src/core/shaders/webgl/DefaultBatched.js.map +1 -0
  225. package/dist/src/core/shaders/webgl/HolePunch.d.ts +3 -0
  226. package/dist/src/core/shaders/webgl/HolePunch.js +64 -0
  227. package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -0
  228. package/dist/src/core/shaders/webgl/LinearGradient.d.ts +3 -0
  229. package/dist/src/core/shaders/webgl/LinearGradient.js +75 -0
  230. package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -0
  231. package/dist/src/core/shaders/webgl/RadialGradient.d.ts +3 -0
  232. package/dist/src/core/shaders/webgl/RadialGradient.js +73 -0
  233. package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -0
  234. package/dist/src/core/shaders/webgl/Rounded.d.ts +7 -0
  235. package/dist/src/core/shaders/webgl/Rounded.js +86 -0
  236. package/dist/src/core/shaders/webgl/Rounded.js.map +1 -0
  237. package/dist/src/core/shaders/webgl/RoundedWithBorder.d.ts +3 -0
  238. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +97 -0
  239. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -0
  240. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.d.ts +3 -0
  241. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +112 -0
  242. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -0
  243. package/dist/src/core/shaders/webgl/RoundedWithShadow.d.ts +3 -0
  244. package/dist/src/core/shaders/webgl/RoundedWithShadow.js +84 -0
  245. package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -0
  246. package/dist/src/core/shaders/webgl/SdfShader.d.ts +32 -0
  247. package/dist/src/core/shaders/webgl/SdfShader.js +116 -0
  248. package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -0
  249. package/dist/src/core/shaders/webgl/Shadow.d.ts +3 -0
  250. package/dist/src/core/shaders/webgl/Shadow.js +110 -0
  251. package/dist/src/core/shaders/webgl/Shadow.js.map +1 -0
  252. package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -1
  253. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +2 -2
  254. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -1
  255. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +6 -0
  256. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
  257. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +2 -3
  258. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +34 -31
  259. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  260. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +20 -0
  261. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +55 -0
  262. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +1 -0
  263. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +1 -4
  264. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
  265. package/dist/src/core/textures/Texture.d.ts +1 -1
  266. package/dist/src/main-api/ICoreDriver.d.ts +4 -1
  267. package/dist/src/main-api/INode.d.ts +9 -9
  268. package/dist/src/main-api/IRenderDriver.d.ts +20 -0
  269. package/dist/src/main-api/IRenderDriver.js +20 -0
  270. package/dist/src/main-api/IRenderDriver.js.map +1 -0
  271. package/dist/src/main-api/IShaderController.d.ts +14 -0
  272. package/dist/src/main-api/IShaderController.js +30 -0
  273. package/dist/src/main-api/IShaderController.js.map +1 -0
  274. package/dist/src/main-api/IShaderNode.d.ts +17 -0
  275. package/dist/src/main-api/IShaderNode.js +19 -0
  276. package/dist/src/main-api/IShaderNode.js.map +1 -0
  277. package/dist/src/main-api/Renderer.d.ts +8 -91
  278. package/dist/src/main-api/Renderer.js +3 -54
  279. package/dist/src/main-api/Renderer.js.map +1 -1
  280. package/dist/src/main-api/RendererMain.d.ts +2 -5
  281. package/dist/src/main-api/RendererMain.js +4 -6
  282. package/dist/src/main-api/RendererMain.js.map +1 -1
  283. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +1 -1
  284. package/dist/src/render-drivers/main/MainCoreDriver.d.ts +4 -1
  285. package/dist/src/render-drivers/main/MainCoreDriver.js +4 -1
  286. package/dist/src/render-drivers/main/MainCoreDriver.js.map +1 -1
  287. package/dist/src/render-drivers/main/MainOnlyNode.d.ts +6 -8
  288. package/dist/src/render-drivers/main/MainOnlyNode.js +1 -30
  289. package/dist/src/render-drivers/main/MainOnlyNode.js.map +1 -1
  290. package/dist/src/render-drivers/main/MainOnlyShaderController.d.ts +6 -0
  291. package/dist/src/render-drivers/main/MainOnlyShaderController.js +15 -0
  292. package/dist/src/render-drivers/main/MainOnlyShaderController.js.map +1 -0
  293. package/dist/src/render-drivers/main/MainOnlyShaderNode.d.ts +7 -0
  294. package/dist/src/render-drivers/main/MainOnlyShaderNode.js +34 -0
  295. package/dist/src/render-drivers/main/MainOnlyShaderNode.js.map +1 -0
  296. package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +1 -1
  297. package/dist/src/render-drivers/main/MainOnlyTextNode.js +3 -2
  298. package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +1 -1
  299. package/dist/src/render-drivers/main/MainRenderDriver.d.ts +17 -0
  300. package/dist/src/render-drivers/main/MainRenderDriver.js +88 -0
  301. package/dist/src/render-drivers/main/MainRenderDriver.js.map +1 -0
  302. package/dist/src/render-drivers/threadx/NodeStruct.d.ts +0 -3
  303. package/dist/src/render-drivers/threadx/NodeStruct.js +0 -9
  304. package/dist/src/render-drivers/threadx/NodeStruct.js.map +1 -1
  305. package/dist/src/render-drivers/threadx/SharedNode.d.ts +0 -1
  306. package/dist/src/render-drivers/threadx/SharedNode.js +0 -1
  307. package/dist/src/render-drivers/threadx/SharedNode.js.map +1 -1
  308. package/dist/src/render-drivers/threadx/TextNodeStruct.js +1 -3
  309. package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +1 -1
  310. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +4 -1
  311. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +4 -2
  312. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +1 -1
  313. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +4 -8
  314. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +24 -53
  315. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +1 -1
  316. package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +5 -7
  317. package/dist/src/render-drivers/threadx/ThreadXMainNode.js +2 -8
  318. package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +1 -1
  319. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.d.ts +6 -0
  320. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js +16 -0
  321. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js.map +1 -0
  322. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.d.ts +7 -0
  323. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js +15 -0
  324. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js.map +1 -0
  325. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +1 -1
  326. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.d.ts +21 -0
  327. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +198 -0
  328. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +1 -0
  329. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +0 -7
  330. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +1 -1
  331. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +0 -1
  332. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +1 -1
  333. package/dist/src/render-drivers/threadx/worker/renderer.js +0 -2
  334. package/dist/src/render-drivers/threadx/worker/renderer.js.map +1 -1
  335. package/dist/src/render-drivers/utils.js +1 -6
  336. package/dist/src/render-drivers/utils.js.map +1 -1
  337. package/dist/src/utils.d.ts +6 -0
  338. package/dist/src/utils.js +18 -0
  339. package/dist/src/utils.js.map +1 -1
  340. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  341. package/exports/canvas-shaders.ts +28 -0
  342. package/exports/canvas.ts +7 -1
  343. package/exports/index.ts +17 -17
  344. package/exports/webgl-shaders.ts +28 -0
  345. package/exports/webgl.ts +13 -1
  346. package/package.json +3 -1
  347. package/src/core/CoreNode.test.ts +3 -2
  348. package/src/core/CoreNode.ts +50 -19
  349. package/src/core/CoreShaderManager.ts +127 -226
  350. package/src/core/CoreTextNode.ts +1 -17
  351. package/src/core/Stage.ts +36 -41
  352. package/src/core/animations/CoreAnimation.ts +8 -64
  353. package/src/core/lib/RenderCoords.ts +52 -67
  354. package/src/core/lib/WebGlContextWrapper.ts +278 -236
  355. package/src/core/lib/textureCompression.ts +3 -3
  356. package/src/core/lib/utils.ts +3 -1
  357. package/src/core/platform.ts +1 -0
  358. package/src/core/renderers/CoreRenderer.ts +19 -27
  359. package/src/core/renderers/CoreShaderNode.ts +167 -0
  360. package/src/core/renderers/{canvas/shaders/UnsupportedShader.ts → CoreShaderProgram.ts} +3 -28
  361. package/src/core/renderers/canvas/CanvasRenderer.ts +298 -0
  362. package/src/core/renderers/canvas/CanvasShaderNode.ts +99 -0
  363. package/src/core/renderers/canvas/{CanvasCoreTexture.ts → CanvasTexture.ts} +6 -3
  364. package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +2 -13
  365. package/src/core/renderers/canvas/internal/ColorUtils.ts +16 -0
  366. package/src/core/renderers/webgl/{WebGlCoreCtxRenderTexture.ts → WebGlCtxRenderTexture.ts} +2 -2
  367. package/src/core/renderers/webgl/{WebGlCoreCtxSubTexture.ts → WebGlCtxSubTexture.ts} +2 -2
  368. package/src/core/renderers/webgl/{WebGlCoreCtxTexture.ts → WebGlCtxTexture.ts} +1 -1
  369. package/src/core/renderers/webgl/WebGlRenderOp.ts +161 -0
  370. package/src/core/renderers/webgl/{WebGlCoreRenderer.ts → WebGlRenderer.ts} +155 -250
  371. package/src/core/renderers/webgl/WebGlShaderNode.ts +437 -0
  372. package/src/core/renderers/webgl/WebGlShaderProgram.ts +318 -0
  373. package/src/core/renderers/webgl/internal/ShaderUtils.ts +143 -5
  374. package/src/core/shaders/canvas/Border.ts +78 -0
  375. package/src/core/shaders/canvas/HolePunch.ts +62 -0
  376. package/src/core/shaders/canvas/LinearGradient.ts +69 -0
  377. package/src/core/shaders/canvas/RadialGradient.ts +113 -0
  378. package/src/core/shaders/canvas/Rounded.ts +55 -0
  379. package/src/core/shaders/canvas/RoundedWithBorder.ts +68 -0
  380. package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +88 -0
  381. package/src/core/shaders/canvas/RoundedWithShadow.ts +69 -0
  382. package/src/core/shaders/canvas/Shadow.ts +52 -0
  383. package/src/core/shaders/canvas/utils/render.ts +151 -0
  384. package/src/core/shaders/templates/BorderTemplate.ts +115 -0
  385. package/src/core/shaders/templates/HolePunchTemplate.ts +82 -0
  386. package/src/core/shaders/templates/LinearGradientTemplate.ts +71 -0
  387. package/src/core/shaders/templates/RadialGradientTemplate.ts +81 -0
  388. package/src/core/shaders/templates/RoundedTemplate.ts +98 -0
  389. package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +38 -0
  390. package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +35 -0
  391. package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +35 -0
  392. package/src/core/shaders/templates/ShadowTemplate.ts +106 -0
  393. package/src/core/shaders/templates/shaderUtils.ts +47 -0
  394. package/src/core/shaders/webgl/Border.ts +96 -0
  395. package/src/core/shaders/webgl/Default.ts +89 -0
  396. package/src/core/shaders/webgl/DefaultBatched.ts +129 -0
  397. package/src/core/shaders/webgl/HolePunch.ts +78 -0
  398. package/src/core/shaders/webgl/LinearGradient.ts +81 -0
  399. package/src/core/shaders/webgl/RadialGradient.ts +84 -0
  400. package/src/core/shaders/webgl/Rounded.ts +117 -0
  401. package/src/core/shaders/webgl/RoundedWithBorder.ts +114 -0
  402. package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +133 -0
  403. package/src/core/shaders/webgl/RoundedWithShadow.ts +98 -0
  404. package/src/core/shaders/webgl/SdfShader.ts +134 -0
  405. package/src/core/shaders/webgl/Shadow.ts +115 -0
  406. package/src/core/text-rendering/TextTextureRendererUtils.ts +1 -1
  407. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +2 -2
  408. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +12 -5
  409. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +44 -57
  410. package/src/core/text-rendering/renderers/TextRenderer.ts +2 -9
  411. package/src/core/textures/Texture.ts +1 -1
  412. package/src/main-api/INode.ts +11 -13
  413. package/src/main-api/Renderer.ts +25 -127
  414. package/src/utils.ts +19 -0
  415. package/dist/tsconfig.tsbuildinfo +0 -1
  416. package/src/core/renderers/canvas/CanvasCoreRenderer.ts +0 -375
  417. package/src/core/renderers/webgl/WebGlCoreRenderOp.ts +0 -125
  418. package/src/core/renderers/webgl/WebGlCoreShader.ts +0 -362
  419. package/src/core/renderers/webgl/shaders/DefaultShader.ts +0 -93
  420. package/src/core/renderers/webgl/shaders/DefaultShaderBatched.ts +0 -132
  421. package/src/core/renderers/webgl/shaders/DynamicShader.ts +0 -580
  422. package/src/core/renderers/webgl/shaders/RoundedRectangle.ts +0 -167
  423. package/src/core/renderers/webgl/shaders/SdfShader.ts +0 -204
  424. package/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.ts +0 -101
  425. package/src/core/renderers/webgl/shaders/effects/BorderEffect.ts +0 -87
  426. package/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.ts +0 -101
  427. package/src/core/renderers/webgl/shaders/effects/BorderRightEffect.ts +0 -101
  428. package/src/core/renderers/webgl/shaders/effects/BorderTopEffect.ts +0 -101
  429. package/src/core/renderers/webgl/shaders/effects/EffectUtils.ts +0 -159
  430. package/src/core/renderers/webgl/shaders/effects/FadeOutEffect.ts +0 -127
  431. package/src/core/renderers/webgl/shaders/effects/GlitchEffect.ts +0 -148
  432. package/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.ts +0 -67
  433. package/src/core/renderers/webgl/shaders/effects/HolePunchEffect.ts +0 -157
  434. package/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts +0 -171
  435. package/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts +0 -168
  436. package/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.ts +0 -187
  437. package/src/core/renderers/webgl/shaders/effects/RadiusEffect.ts +0 -110
  438. package/src/core/renderers/webgl/shaders/effects/ShaderEffect.ts +0 -196
  439. package/src/main-api/DynamicShaderController.ts +0 -104
  440. package/src/main-api/ShaderController.ts +0 -80
@@ -17,14 +17,14 @@
17
17
  * limitations under the License.
18
18
  */
19
19
 
20
- import { assertTruthy, createWebGLContext, hasOwn } from '../../../utils.js';
20
+ import { assertTruthy, createWebGLContext } from '../../../utils.js';
21
21
  import {
22
22
  CoreRenderer,
23
23
  type BufferInfo,
24
24
  type CoreRendererOptions,
25
25
  type QuadOptions,
26
26
  } from '../CoreRenderer.js';
27
- import { WebGlCoreRenderOp } from './WebGlCoreRenderOp.js';
27
+ import { WebGlRenderOp } from './WebGlRenderOp.js';
28
28
  import type { CoreContextTexture } from '../CoreContextTexture.js';
29
29
  import {
30
30
  createIndexBuffer,
@@ -34,36 +34,33 @@ import {
34
34
  getWebGlExtensions,
35
35
  type WebGlColor,
36
36
  } from './internal/RendererUtils.js';
37
- import { WebGlCoreCtxTexture } from './WebGlCoreCtxTexture.js';
37
+ import { WebGlCtxTexture } from './WebGlCtxTexture.js';
38
38
  import { Texture, TextureType } from '../../textures/Texture.js';
39
39
  import { SubTexture } from '../../textures/SubTexture.js';
40
- import { WebGlCoreCtxSubTexture } from './WebGlCoreCtxSubTexture.js';
41
- import { CoreShaderManager } from '../../CoreShaderManager.js';
40
+ import { WebGlCtxSubTexture } from './WebGlCtxSubTexture.js';
42
41
  import { BufferCollection } from './internal/BufferCollection.js';
43
- import {
44
- compareRect,
45
- getNormalizedRgbaComponents,
46
- type RectWithValid,
47
- } from '../../lib/utils.js';
48
- import type { Dimensions } from '../../../common/CommonTypes.js';
49
- import { WebGlCoreShader } from './WebGlCoreShader.js';
42
+ import { compareRect, getNormalizedRgbaComponents } from '../../lib/utils.js';
43
+ import { WebGlShaderProgram } from './WebGlShaderProgram.js';
50
44
  import { WebGlContextWrapper } from '../../lib/WebGlContextWrapper.js';
51
45
  import { RenderTexture } from '../../textures/RenderTexture.js';
52
46
  import { CoreNodeRenderState, type CoreNode } from '../../CoreNode.js';
53
- import { WebGlCoreCtxRenderTexture } from './WebGlCoreCtxRenderTexture.js';
54
- import type { BaseShaderController } from '../../../main-api/ShaderController.js';
47
+ import { WebGlCtxRenderTexture } from './WebGlCtxRenderTexture.js';
48
+ import { Default } from '../../shaders/webgl/Default.js';
49
+ import type { WebGlShaderType } from './WebGlShaderNode.js';
50
+ import { WebGlShaderNode } from './WebGlShaderNode.js';
51
+ import type { CoreShaderType } from '../CoreShaderNode.js';
55
52
 
56
- const WORDS_PER_QUAD = 24;
53
+ const WORDS_PER_QUAD = 32;
57
54
  // const BYTES_PER_QUAD = WORDS_PER_QUAD * 4;
58
55
 
59
- export type WebGlCoreRendererOptions = CoreRendererOptions;
56
+ export type WebGlRendererOptions = CoreRendererOptions;
60
57
 
61
58
  interface CoreWebGlSystem {
62
59
  parameters: CoreWebGlParameters;
63
60
  extensions: CoreWebGlExtensions;
64
61
  }
65
62
 
66
- export class WebGlCoreRenderer extends CoreRenderer {
63
+ export class WebGlRenderer extends CoreRenderer {
67
64
  //// WebGL Native Context and Data
68
65
  glw: WebGlContextWrapper;
69
66
  system: CoreWebGlSystem;
@@ -72,17 +69,16 @@ export class WebGlCoreRenderer extends CoreRenderer {
72
69
  quadBuffer: ArrayBuffer;
73
70
  fQuadBuffer: Float32Array;
74
71
  uiQuadBuffer: Uint32Array;
75
- renderOps: WebGlCoreRenderOp[] = [];
72
+ renderOps: WebGlRenderOp[] = [];
76
73
 
77
74
  //// Render Op / Buffer Filling State
78
75
  curBufferIdx = 0;
79
- curRenderOp: WebGlCoreRenderOp | null = null;
76
+ curRenderOp: WebGlRenderOp | null = null;
80
77
  override rttNodes: CoreNode[] = [];
81
78
  activeRttNode: CoreNode | null = null;
82
79
 
83
80
  //// Default Shader
84
- defShaderCtrl: BaseShaderController;
85
- defaultShader: WebGlCoreShader;
81
+ defaultShaderNode: WebGlShaderNode | null = null;
86
82
  quadBufferCollection: BufferCollection;
87
83
 
88
84
  clearColor: WebGlColor = {
@@ -101,7 +97,7 @@ export class WebGlCoreRenderer extends CoreRenderer {
101
97
  */
102
98
  public renderToTextureActive = false;
103
99
 
104
- constructor(options: WebGlCoreRendererOptions) {
100
+ constructor(options: WebGlRendererOptions) {
105
101
  super(options);
106
102
 
107
103
  this.quadBuffer = new ArrayBuffer(this.stage.options.quadBufferSize);
@@ -110,33 +106,28 @@ export class WebGlCoreRenderer extends CoreRenderer {
110
106
 
111
107
  this.mode = 'webgl';
112
108
 
113
- const { canvas, clearColor, bufferMemory } = options;
114
-
115
109
  const gl = createWebGLContext(
116
- canvas,
110
+ options.canvas,
117
111
  options.forceWebGL2,
118
112
  options.contextSpy,
119
113
  );
120
114
  const glw = (this.glw = new WebGlContextWrapper(gl));
121
- glw.viewport(0, 0, canvas.width, canvas.height);
115
+ glw.viewport(0, 0, options.canvas.width, options.canvas.height);
122
116
 
123
- this.updateClearColor(clearColor);
117
+ this.updateClearColor(this.stage.clearColor);
124
118
 
125
119
  glw.setBlend(true);
126
120
  glw.blendFunc(glw.ONE, glw.ONE_MINUS_SRC_ALPHA);
127
121
 
128
- createIndexBuffer(glw, bufferMemory);
122
+ createIndexBuffer(glw, this.stage.bufferMemory);
129
123
 
130
124
  this.system = {
131
125
  parameters: getWebGlParameters(this.glw),
132
126
  extensions: getWebGlExtensions(this.glw),
133
127
  };
134
- this.shManager.renderer = this;
135
- this.defShaderCtrl = this.shManager.loadShader('DefaultShader');
136
- this.defaultShader = this.defShaderCtrl.shader as WebGlCoreShader;
137
128
  const quadBuffer = glw.createBuffer();
138
129
  assertTruthy(quadBuffer);
139
- const stride = 6 * Float32Array.BYTES_PER_ELEMENT;
130
+ const stride = 8 * Float32Array.BYTES_PER_ELEMENT;
140
131
  this.quadBufferCollection = new BufferCollection([
141
132
  {
142
133
  buffer: quadBuffer,
@@ -149,8 +140,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
149
140
  stride, // 0 = move forward size * sizeof(type) each iteration to get the next position
150
141
  offset: 0, // start at the beginning of the buffer
151
142
  },
152
- a_textureCoordinate: {
153
- name: 'a_textureCoordinate',
143
+ a_textureCoords: {
144
+ name: 'a_textureCoords',
154
145
  size: 2,
155
146
  type: glw.FLOAT,
156
147
  normalized: false,
@@ -173,6 +164,14 @@ export class WebGlCoreRenderer extends CoreRenderer {
173
164
  stride,
174
165
  offset: 5 * Float32Array.BYTES_PER_ELEMENT,
175
166
  },
167
+ a_nodeCoords: {
168
+ name: 'a_nodeCoords',
169
+ size: 2,
170
+ type: glw.FLOAT,
171
+ normalized: false,
172
+ stride,
173
+ offset: 6 * Float32Array.BYTES_PER_ELEMENT,
174
+ },
176
175
  },
177
176
  },
178
177
  ]);
@@ -187,25 +186,52 @@ export class WebGlCoreRenderer extends CoreRenderer {
187
186
  glw.clear();
188
187
  }
189
188
 
190
- override getShaderManager(): CoreShaderManager {
191
- return this.shManager;
189
+ createShaderProgram(
190
+ shaderType: WebGlShaderType,
191
+ props: Record<string, unknown>,
192
+ ): WebGlShaderProgram {
193
+ return new WebGlShaderProgram(this, shaderType, props);
194
+ }
195
+
196
+ createShaderNode(
197
+ shaderKey: string,
198
+ shaderType: WebGlShaderType,
199
+ props?: Record<string, unknown>,
200
+ program?: WebGlShaderProgram,
201
+ ) {
202
+ return new WebGlShaderNode(
203
+ shaderKey,
204
+ shaderType,
205
+ program!,
206
+ this.stage,
207
+ props,
208
+ );
192
209
  }
193
210
 
194
- override createCtxTexture(textureSource: Texture): CoreContextTexture {
211
+ override supportsShaderType(shaderType: Readonly<WebGlShaderType>): boolean {
212
+ //if shadertype doesnt have a fragment source we cant use it
213
+ return shaderType.fragment !== undefined;
214
+ }
215
+
216
+ createCtxTexture(textureSource: Texture): CoreContextTexture {
195
217
  if (textureSource instanceof SubTexture) {
196
- return new WebGlCoreCtxSubTexture(
218
+ return new WebGlCtxSubTexture(
197
219
  this.glw,
198
- this.txMemManager,
220
+ this.stage.txMemManager,
199
221
  textureSource,
200
222
  );
201
223
  } else if (textureSource instanceof RenderTexture) {
202
- return new WebGlCoreCtxRenderTexture(
224
+ return new WebGlCtxRenderTexture(
203
225
  this.glw,
204
- this.txMemManager,
226
+ this.stage.txMemManager,
205
227
  textureSource,
206
228
  );
207
229
  }
208
- return new WebGlCoreCtxTexture(this.glw, this.txMemManager, textureSource);
230
+ return new WebGlCtxTexture(
231
+ this.glw,
232
+ this.stage.txMemManager,
233
+ textureSource,
234
+ );
209
235
  }
210
236
 
211
237
  /**
@@ -226,48 +252,10 @@ export class WebGlCoreRenderer extends CoreRenderer {
226
252
 
227
253
  assertTruthy(texture !== null, 'Texture is required');
228
254
 
229
- /**
230
- * If the shader props contain any automatic properties, update it with the
231
- * current dimensions and or alpha that will be used to render the quad.
232
- */
233
- if (params.shaderProps !== null) {
234
- if (hasOwn(params.shaderProps, '$dimensions') == true) {
235
- const dimensions = params.shaderProps.$dimensions as Dimensions;
236
- dimensions.width = params.width;
237
- dimensions.height = params.height;
238
- }
239
-
240
- if (hasOwn(params.shaderProps, '$alpha') === true) {
241
- params.shaderProps.$alpha = params.alpha;
242
- }
243
- }
244
-
245
- let { curBufferIdx: bufferIdx, curRenderOp } = this;
246
- const targetDims = { width: -1, height: -1 };
247
- targetDims.width = params.width;
248
- targetDims.height = params.height;
249
-
250
- const targetShader =
251
- (params.shader as WebGlCoreShader) || this.defaultShader;
252
- assertTruthy(
253
- targetShader.getUniformLocation !== undefined,
254
- 'Invalid WebGL shader',
255
- );
255
+ let { curBufferIdx: bufferIdx } = this;
256
256
 
257
257
  if (this.reuseRenderOp(params) === false) {
258
- this.newRenderOp(
259
- targetShader,
260
- params.shaderProps as Record<string, unknown>,
261
- params.alpha,
262
- targetDims,
263
- params.clippingRect,
264
- bufferIdx,
265
- params.rtt,
266
- params.parentHasRenderTexture,
267
- params.framebufferDimensions,
268
- );
269
- curRenderOp = this.curRenderOp;
270
- assertTruthy(curRenderOp);
258
+ this.newRenderOp(params, bufferIdx);
271
259
  }
272
260
 
273
261
  let texCoordX1 = 0;
@@ -336,117 +324,54 @@ export class WebGlCoreRenderer extends CoreRenderer {
336
324
  [texCoordY1, texCoordY2] = [texCoordY2, texCoordY1];
337
325
  }
338
326
 
339
- const ctxTexture = texture.ctxTexture as WebGlCoreCtxTexture;
340
- assertTruthy(ctxTexture instanceof WebGlCoreCtxTexture);
327
+ const ctxTexture = texture.ctxTexture as WebGlCtxTexture;
328
+ assertTruthy(ctxTexture instanceof WebGlCtxTexture);
341
329
  const textureIdx = this.addTexture(ctxTexture, bufferIdx);
342
330
 
343
331
  assertTruthy(this.curRenderOp !== null);
344
- if (params.renderCoords) {
345
- // Upper-Left
346
- fQuadBuffer[bufferIdx++] = params.renderCoords.x1; // vertexX
347
- fQuadBuffer[bufferIdx++] = params.renderCoords.y1; // vertexY
348
- fQuadBuffer[bufferIdx++] = texCoordX1; // texCoordX
349
- fQuadBuffer[bufferIdx++] = texCoordY1; // texCoordY
350
- uiQuadBuffer[bufferIdx++] = params.colorTl; // color
351
- fQuadBuffer[bufferIdx++] = textureIdx; // texIndex
352
-
353
- // Upper-Right
354
- fQuadBuffer[bufferIdx++] = params.renderCoords.x2;
355
- fQuadBuffer[bufferIdx++] = params.renderCoords.y2;
356
- fQuadBuffer[bufferIdx++] = texCoordX2;
357
- fQuadBuffer[bufferIdx++] = texCoordY1;
358
- uiQuadBuffer[bufferIdx++] = params.colorTr;
359
- fQuadBuffer[bufferIdx++] = textureIdx;
360
-
361
- // Lower-Left
362
- fQuadBuffer[bufferIdx++] = params.renderCoords.x4;
363
- fQuadBuffer[bufferIdx++] = params.renderCoords.y4;
364
- fQuadBuffer[bufferIdx++] = texCoordX1;
365
- fQuadBuffer[bufferIdx++] = texCoordY2;
366
- uiQuadBuffer[bufferIdx++] = params.colorBl;
367
- fQuadBuffer[bufferIdx++] = textureIdx;
368
-
369
- // Lower-Right
370
- fQuadBuffer[bufferIdx++] = params.renderCoords.x3;
371
- fQuadBuffer[bufferIdx++] = params.renderCoords.y3;
372
- fQuadBuffer[bufferIdx++] = texCoordX2;
373
- fQuadBuffer[bufferIdx++] = texCoordY2;
374
- uiQuadBuffer[bufferIdx++] = params.colorBr;
375
- fQuadBuffer[bufferIdx++] = textureIdx;
376
- } else if (params.tb !== 0 || params.tc !== 0) {
377
- // Upper-Left
378
- fQuadBuffer[bufferIdx++] = params.tx; // vertexX
379
- fQuadBuffer[bufferIdx++] = params.ty; // vertexY
380
- fQuadBuffer[bufferIdx++] = texCoordX1; // texCoordX
381
- fQuadBuffer[bufferIdx++] = texCoordY1; // texCoordY
382
- uiQuadBuffer[bufferIdx++] = params.colorTl; // color
383
- fQuadBuffer[bufferIdx++] = textureIdx; // texIndex
384
-
385
- // Upper-Right
386
- fQuadBuffer[bufferIdx++] = params.tx + params.width * params.ta;
387
- fQuadBuffer[bufferIdx++] = params.ty + params.width * params.tc;
388
- fQuadBuffer[bufferIdx++] = texCoordX2;
389
- fQuadBuffer[bufferIdx++] = texCoordY1;
390
- uiQuadBuffer[bufferIdx++] = params.colorTr;
391
- fQuadBuffer[bufferIdx++] = textureIdx;
392
-
393
- // Lower-Left
394
- fQuadBuffer[bufferIdx++] = params.tx + params.height * params.tb;
395
- fQuadBuffer[bufferIdx++] = params.ty + params.height * params.td;
396
- fQuadBuffer[bufferIdx++] = texCoordX1;
397
- fQuadBuffer[bufferIdx++] = texCoordY2;
398
- uiQuadBuffer[bufferIdx++] = params.colorBl;
399
- fQuadBuffer[bufferIdx++] = textureIdx;
400
-
401
- // Lower-Right
402
- fQuadBuffer[bufferIdx++] =
403
- params.tx + params.width * params.ta + params.height * params.tb;
404
- fQuadBuffer[bufferIdx++] =
405
- params.ty + params.width * params.tc + params.height * params.td;
406
- fQuadBuffer[bufferIdx++] = texCoordX2;
407
- fQuadBuffer[bufferIdx++] = texCoordY2;
408
- uiQuadBuffer[bufferIdx++] = params.colorBr;
409
- fQuadBuffer[bufferIdx++] = textureIdx;
410
- } else {
411
- // Calculate the right corner of the quad
412
- // multiplied by the scale
413
- const rightCornerX = params.tx + params.width * params.ta;
414
- const rightCornerY = params.ty + params.height * params.td;
415
-
416
- // Upper-Left
417
- fQuadBuffer[bufferIdx++] = params.tx; // vertexX
418
- fQuadBuffer[bufferIdx++] = params.ty; // vertexY
419
- fQuadBuffer[bufferIdx++] = texCoordX1; // texCoordX
420
- fQuadBuffer[bufferIdx++] = texCoordY1; // texCoordY
421
- uiQuadBuffer[bufferIdx++] = params.colorTl; // color
422
- fQuadBuffer[bufferIdx++] = textureIdx; // texIndex
423
-
424
- // Upper-Right
425
- fQuadBuffer[bufferIdx++] = rightCornerX;
426
- fQuadBuffer[bufferIdx++] = params.ty;
427
- fQuadBuffer[bufferIdx++] = texCoordX2;
428
- fQuadBuffer[bufferIdx++] = texCoordY1;
429
- uiQuadBuffer[bufferIdx++] = params.colorTr;
430
- fQuadBuffer[bufferIdx++] = textureIdx;
431
-
432
- // Lower-Left
433
- fQuadBuffer[bufferIdx++] = params.tx;
434
- fQuadBuffer[bufferIdx++] = rightCornerY;
435
- fQuadBuffer[bufferIdx++] = texCoordX1;
436
- fQuadBuffer[bufferIdx++] = texCoordY2;
437
- uiQuadBuffer[bufferIdx++] = params.colorBl;
438
- fQuadBuffer[bufferIdx++] = textureIdx;
439
-
440
- // Lower-Right
441
- fQuadBuffer[bufferIdx++] = rightCornerX;
442
- fQuadBuffer[bufferIdx++] = rightCornerY;
443
- fQuadBuffer[bufferIdx++] = texCoordX2;
444
- fQuadBuffer[bufferIdx++] = texCoordY2;
445
- uiQuadBuffer[bufferIdx++] = params.colorBr;
446
- fQuadBuffer[bufferIdx++] = textureIdx;
447
- }
332
+ assertTruthy(params.renderCoords);
333
+
334
+ // Upper-Left
335
+ fQuadBuffer[bufferIdx++] = params.renderCoords.x1; // vertexX
336
+ fQuadBuffer[bufferIdx++] = params.renderCoords.y1; // vertexY
337
+ fQuadBuffer[bufferIdx++] = texCoordX1; // texCoordX
338
+ fQuadBuffer[bufferIdx++] = texCoordY1; // texCoordY
339
+ uiQuadBuffer[bufferIdx++] = params.colorTl; // color
340
+ fQuadBuffer[bufferIdx++] = textureIdx; // texIndex
341
+ fQuadBuffer[bufferIdx++] = 0; //node X coord
342
+ fQuadBuffer[bufferIdx++] = 0; //node y coord
343
+
344
+ // Upper-Right
345
+ fQuadBuffer[bufferIdx++] = params.renderCoords.x2;
346
+ fQuadBuffer[bufferIdx++] = params.renderCoords.y2;
347
+ fQuadBuffer[bufferIdx++] = texCoordX2;
348
+ fQuadBuffer[bufferIdx++] = texCoordY1;
349
+ uiQuadBuffer[bufferIdx++] = params.colorTr;
350
+ fQuadBuffer[bufferIdx++] = textureIdx;
351
+ fQuadBuffer[bufferIdx++] = 1; //node X coord
352
+ fQuadBuffer[bufferIdx++] = 0; //node y coord
353
+
354
+ // Lower-Left
355
+ fQuadBuffer[bufferIdx++] = params.renderCoords.x4;
356
+ fQuadBuffer[bufferIdx++] = params.renderCoords.y4;
357
+ fQuadBuffer[bufferIdx++] = texCoordX1;
358
+ fQuadBuffer[bufferIdx++] = texCoordY2;
359
+ uiQuadBuffer[bufferIdx++] = params.colorBl;
360
+ fQuadBuffer[bufferIdx++] = textureIdx;
361
+ fQuadBuffer[bufferIdx++] = 0; //node X coord
362
+ fQuadBuffer[bufferIdx++] = 1; //node y coord
363
+
364
+ // Lower-Right
365
+ fQuadBuffer[bufferIdx++] = params.renderCoords.x3;
366
+ fQuadBuffer[bufferIdx++] = params.renderCoords.y3;
367
+ fQuadBuffer[bufferIdx++] = texCoordX2;
368
+ fQuadBuffer[bufferIdx++] = texCoordY2;
369
+ uiQuadBuffer[bufferIdx++] = params.colorBr;
370
+ fQuadBuffer[bufferIdx++] = textureIdx;
371
+ fQuadBuffer[bufferIdx++] = 1; //node X coord
372
+ fQuadBuffer[bufferIdx++] = 1; //node y coord
373
+
448
374
  // Update the length of the current render op
449
- this.curRenderOp.length += WORDS_PER_QUAD;
450
375
  this.curRenderOp.numQuads++;
451
376
  this.curBufferIdx = bufferIdx;
452
377
  }
@@ -458,32 +383,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
458
383
  * @param shader
459
384
  * @param bufferIdx
460
385
  */
461
- private newRenderOp(
462
- shader: WebGlCoreShader,
463
- shaderProps: Record<string, unknown>,
464
- alpha: number,
465
- dimensions: Dimensions,
466
- clippingRect: RectWithValid,
467
- bufferIdx: number,
468
- renderToTexture?: boolean,
469
- parentHasRenderTexture?: boolean,
470
- framebufferDimensions?: Dimensions,
471
- ) {
472
- const curRenderOp = new WebGlCoreRenderOp(
473
- this.glw,
474
- this.options,
475
- this.quadBufferCollection,
476
- shader,
477
- shaderProps,
478
- alpha,
479
- clippingRect,
480
- dimensions,
481
- bufferIdx,
482
- 0, // Z-Index is only used for explictly added Render Ops
483
- renderToTexture,
484
- parentHasRenderTexture,
485
- framebufferDimensions,
486
- );
386
+ private newRenderOp(quad: QuadOptions | WebGlRenderOp, bufferIdx: number) {
387
+ const curRenderOp = new WebGlRenderOp(this, quad, bufferIdx);
487
388
  this.curRenderOp = curRenderOp;
488
389
  this.renderOps.push(curRenderOp);
489
390
  }
@@ -501,27 +402,18 @@ export class WebGlCoreRenderer extends CoreRenderer {
501
402
  * @returns Assigned Texture Index of the texture in the render op
502
403
  */
503
404
  private addTexture(
504
- texture: WebGlCoreCtxTexture,
405
+ texture: WebGlCtxTexture,
505
406
  bufferIdx: number,
506
407
  recursive?: boolean,
507
408
  ): number {
508
- const { curRenderOp } = this;
509
- assertTruthy(curRenderOp);
510
- const textureIdx = curRenderOp.addTexture(texture);
409
+ assertTruthy(this.curRenderOp);
410
+ const textureIdx = this.curRenderOp.addTexture(texture);
511
411
  // TODO: Refactor to be more DRY
512
412
  if (textureIdx === 0xffffffff) {
513
413
  if (recursive) {
514
414
  throw new Error('Unable to add texture to render op');
515
415
  }
516
-
517
- this.newRenderOp(
518
- curRenderOp.shader,
519
- curRenderOp.shaderProps,
520
- curRenderOp.alpha,
521
- curRenderOp.dimensions,
522
- curRenderOp.clippingRect,
523
- bufferIdx,
524
- );
416
+ this.newRenderOp(this.curRenderOp, bufferIdx);
525
417
  return this.addTexture(texture, bufferIdx, true);
526
418
  }
527
419
  return textureIdx;
@@ -533,36 +425,44 @@ export class WebGlCoreRenderer extends CoreRenderer {
533
425
  * @returns
534
426
  */
535
427
  reuseRenderOp(params: QuadOptions): boolean {
536
- const { shader, shaderProps, parentHasRenderTexture, rtt, clippingRect } =
537
- params;
538
-
539
- const targetShader = shader || this.defaultShader;
540
-
541
428
  // Switching shader program will require a new render operation
542
- if (this.curRenderOp?.shader !== targetShader) {
429
+ if (
430
+ this.curRenderOp?.shader.shaderKey !==
431
+ (params.shader as WebGlShaderNode).shaderKey
432
+ ) {
543
433
  return false;
544
434
  }
545
435
 
546
436
  // Switching clipping rect will require a new render operation
547
- if (compareRect(this.curRenderOp.clippingRect, clippingRect) === false) {
437
+ if (
438
+ compareRect(this.curRenderOp.clippingRect, params.clippingRect) === false
439
+ ) {
548
440
  return false;
549
441
  }
550
442
 
551
443
  // Force new render operation if rendering to texture
552
444
  // @todo: This needs to be improved, render operations could also be reused
553
445
  // for rendering to texture
554
- if (parentHasRenderTexture !== undefined || rtt !== undefined) {
446
+ if (
447
+ params.parentHasRenderTexture !== undefined ||
448
+ params.rtt !== undefined
449
+ ) {
555
450
  return false;
556
451
  }
557
452
 
453
+ if (
454
+ this.curRenderOp.shader.shaderKey === 'default' &&
455
+ params.shader?.shaderKey === 'default'
456
+ ) {
457
+ return true;
458
+ }
459
+
558
460
  // Check if the shader can batch the shader properties
559
461
  if (
560
- this.curRenderOp.shader !== this.defaultShader &&
561
- (shaderProps === null ||
562
- this.curRenderOp.shader.canBatchShaderProps(
563
- this.curRenderOp.shaderProps,
564
- shaderProps,
565
- ) === false)
462
+ this.curRenderOp.shader.program.reuseRenderOp(
463
+ params,
464
+ this.curRenderOp,
465
+ ) === false
566
466
  ) {
567
467
  return false;
568
468
  }
@@ -574,7 +474,7 @@ export class WebGlCoreRenderer extends CoreRenderer {
574
474
  /**
575
475
  * add RenderOp to the render pipeline
576
476
  */
577
- addRenderOp(renderable: WebGlCoreRenderOp) {
477
+ addRenderOp(renderable: WebGlRenderOp) {
578
478
  this.renderOps.push(renderable);
579
479
  this.curRenderOp = null;
580
480
  }
@@ -601,7 +501,7 @@ export class WebGlCoreRenderer extends CoreRenderer {
601
501
  this.quadBufferUsage = this.curBufferIdx * arr.BYTES_PER_ELEMENT;
602
502
 
603
503
  // Calculate the size of each quad in bytes (4 vertices per quad) times the size of each vertex in bytes
604
- const QUAD_SIZE_IN_BYTES = 4 * (6 * arr.BYTES_PER_ELEMENT); // 6 attributes per vertex
504
+ const QUAD_SIZE_IN_BYTES = 4 * (8 * arr.BYTES_PER_ELEMENT); // 8 attributes per vertex
605
505
  this.numQuadsRendered = this.quadBufferUsage / QUAD_SIZE_IN_BYTES;
606
506
  }
607
507
 
@@ -696,8 +596,6 @@ export class WebGlCoreRenderer extends CoreRenderer {
696
596
 
697
597
  renderRTTNodes() {
698
598
  const { glw } = this;
699
- const { txManager } = this.stage;
700
-
701
599
  // Render all associated RTT nodes to their textures
702
600
  for (let i = 0; i < this.rttNodes.length; i++) {
703
601
  const node = this.rttNodes[i];
@@ -725,9 +623,9 @@ export class WebGlCoreRenderer extends CoreRenderer {
725
623
  // So we can prevent rendering children of nested RTT nodes
726
624
  this.activeRttNode = node;
727
625
 
728
- assertTruthy(node.texture, 'RTT node missing texture');
626
+ assertTruthy(node.texture !== null, 'RTT node missing texture');
729
627
  const ctxTexture = node.texture.ctxTexture;
730
- assertTruthy(ctxTexture instanceof WebGlCoreCtxRenderTexture);
628
+ assertTruthy(ctxTexture instanceof WebGlCtxRenderTexture);
731
629
  this.renderToTextureActive = true;
732
630
 
733
631
  // Bind the the texture's framebuffer
@@ -785,8 +683,15 @@ export class WebGlCoreRenderer extends CoreRenderer {
785
683
  return bufferInfo;
786
684
  }
787
685
 
788
- override getDefShaderCtr(): BaseShaderController {
789
- return this.defShaderCtrl;
686
+ getDefaultShaderNode(): WebGlShaderNode {
687
+ if (this.defaultShaderNode !== null) {
688
+ return this.defaultShaderNode as WebGlShaderNode;
689
+ }
690
+ this.stage.shManager.registerShaderType('default', Default);
691
+ this.defaultShaderNode = this.stage.shManager.createShader(
692
+ 'default',
693
+ ) as WebGlShaderNode;
694
+ return this.defaultShaderNode;
790
695
  }
791
696
 
792
697
  /**