@lightningjs/renderer 0.0.1

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 (314) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +4 -0
  3. package/README.md +184 -0
  4. package/dist/exports/core-api.d.ts +73 -0
  5. package/dist/exports/core-api.js +95 -0
  6. package/dist/exports/core-api.js.map +1 -0
  7. package/dist/exports/main-api.d.ts +28 -0
  8. package/dist/exports/main-api.js +45 -0
  9. package/dist/exports/main-api.js.map +1 -0
  10. package/dist/exports/utils.d.ts +23 -0
  11. package/dist/exports/utils.js +42 -0
  12. package/dist/exports/utils.js.map +1 -0
  13. package/dist/src/common/CommonTypes.d.ts +38 -0
  14. package/dist/src/common/CommonTypes.js +20 -0
  15. package/dist/src/common/CommonTypes.js.map +1 -0
  16. package/dist/src/common/EventEmitter.d.ts +12 -0
  17. package/dist/src/common/EventEmitter.js +66 -0
  18. package/dist/src/common/EventEmitter.js.map +1 -0
  19. package/dist/src/common/IAnimationController.d.ts +9 -0
  20. package/dist/src/common/IAnimationController.js +20 -0
  21. package/dist/src/common/IAnimationController.js.map +1 -0
  22. package/dist/src/core/CoreExtension.d.ts +12 -0
  23. package/dist/src/core/CoreExtension.js +29 -0
  24. package/dist/src/core/CoreExtension.js.map +1 -0
  25. package/dist/src/core/CoreNode.d.ts +147 -0
  26. package/dist/src/core/CoreNode.js +498 -0
  27. package/dist/src/core/CoreNode.js.map +1 -0
  28. package/dist/src/core/CoreShaderManager.d.ts +29 -0
  29. package/dist/src/core/CoreShaderManager.js +58 -0
  30. package/dist/src/core/CoreShaderManager.js.map +1 -0
  31. package/dist/src/core/CoreTextNode.d.ts +64 -0
  32. package/dist/src/core/CoreTextNode.js +251 -0
  33. package/dist/src/core/CoreTextNode.js.map +1 -0
  34. package/dist/src/core/CoreTextureManager.d.ts +173 -0
  35. package/dist/src/core/CoreTextureManager.js +190 -0
  36. package/dist/src/core/CoreTextureManager.js.map +1 -0
  37. package/dist/src/core/Matrix2DContext.d.ts +15 -0
  38. package/dist/src/core/Matrix2DContext.js +45 -0
  39. package/dist/src/core/Matrix2DContext.js.map +1 -0
  40. package/dist/src/core/Stage.d.ts +53 -0
  41. package/dist/src/core/Stage.js +214 -0
  42. package/dist/src/core/Stage.js.map +1 -0
  43. package/dist/src/core/animations/AnimationManager.d.ts +7 -0
  44. package/dist/src/core/animations/AnimationManager.js +34 -0
  45. package/dist/src/core/animations/AnimationManager.js.map +1 -0
  46. package/dist/src/core/animations/CoreAnimation.d.ts +27 -0
  47. package/dist/src/core/animations/CoreAnimation.js +103 -0
  48. package/dist/src/core/animations/CoreAnimation.js.map +1 -0
  49. package/dist/src/core/animations/CoreAnimationController.d.ts +21 -0
  50. package/dist/src/core/animations/CoreAnimationController.js +96 -0
  51. package/dist/src/core/animations/CoreAnimationController.js.map +1 -0
  52. package/dist/src/core/lib/glm/common.d.ts +162 -0
  53. package/dist/src/core/lib/glm/common.js +81 -0
  54. package/dist/src/core/lib/glm/common.js.map +1 -0
  55. package/dist/src/core/lib/glm/index.d.ts +11 -0
  56. package/dist/src/core/lib/glm/index.js +30 -0
  57. package/dist/src/core/lib/glm/index.js.map +1 -0
  58. package/dist/src/core/lib/glm/mat2.d.ts +219 -0
  59. package/dist/src/core/lib/glm/mat2.js +396 -0
  60. package/dist/src/core/lib/glm/mat2.js.map +1 -0
  61. package/dist/src/core/lib/glm/mat2d.d.ts +237 -0
  62. package/dist/src/core/lib/glm/mat2d.js +442 -0
  63. package/dist/src/core/lib/glm/mat2d.js.map +1 -0
  64. package/dist/src/core/lib/glm/mat3.d.ts +283 -0
  65. package/dist/src/core/lib/glm/mat3.js +680 -0
  66. package/dist/src/core/lib/glm/mat3.js.map +1 -0
  67. package/dist/src/core/lib/glm/mat4.d.ts +550 -0
  68. package/dist/src/core/lib/glm/mat4.js +1802 -0
  69. package/dist/src/core/lib/glm/mat4.js.map +1 -0
  70. package/dist/src/core/lib/glm/quat.d.ts +363 -0
  71. package/dist/src/core/lib/glm/quat.js +693 -0
  72. package/dist/src/core/lib/glm/quat.js.map +1 -0
  73. package/dist/src/core/lib/glm/quat2.d.ts +356 -0
  74. package/dist/src/core/lib/glm/quat2.js +754 -0
  75. package/dist/src/core/lib/glm/quat2.js.map +1 -0
  76. package/dist/src/core/lib/glm/vec2.d.ts +365 -0
  77. package/dist/src/core/lib/glm/vec2.js +569 -0
  78. package/dist/src/core/lib/glm/vec2.js.map +1 -0
  79. package/dist/src/core/lib/glm/vec3.d.ts +406 -0
  80. package/dist/src/core/lib/glm/vec3.js +720 -0
  81. package/dist/src/core/lib/glm/vec3.js.map +1 -0
  82. package/dist/src/core/lib/glm/vec4.d.ts +330 -0
  83. package/dist/src/core/lib/glm/vec4.js +608 -0
  84. package/dist/src/core/lib/glm/vec4.js.map +1 -0
  85. package/dist/src/core/lib/utils.d.ts +27 -0
  86. package/dist/src/core/lib/utils.js +108 -0
  87. package/dist/src/core/lib/utils.js.map +1 -0
  88. package/dist/src/core/platform.d.ts +10 -0
  89. package/dist/src/core/platform.js +37 -0
  90. package/dist/src/core/platform.js.map +1 -0
  91. package/dist/src/core/renderers/CoreContextTexture.d.ts +6 -0
  92. package/dist/src/core/renderers/CoreContextTexture.js +25 -0
  93. package/dist/src/core/renderers/CoreContextTexture.js.map +1 -0
  94. package/dist/src/core/renderers/CoreRenderOp.d.ts +3 -0
  95. package/dist/src/core/renderers/CoreRenderOp.js +21 -0
  96. package/dist/src/core/renderers/CoreRenderOp.js.map +1 -0
  97. package/dist/src/core/renderers/CoreRenderer.d.ts +39 -0
  98. package/dist/src/core/renderers/CoreRenderer.js +26 -0
  99. package/dist/src/core/renderers/CoreRenderer.js.map +1 -0
  100. package/dist/src/core/renderers/CoreShader.d.ts +9 -0
  101. package/dist/src/core/renderers/CoreShader.js +28 -0
  102. package/dist/src/core/renderers/CoreShader.js.map +1 -0
  103. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +7 -0
  104. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +32 -0
  105. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +1 -0
  106. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +46 -0
  107. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +163 -0
  108. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -0
  109. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +27 -0
  110. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +82 -0
  111. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +1 -0
  112. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +100 -0
  113. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +372 -0
  114. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -0
  115. package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +39 -0
  116. package/dist/src/core/renderers/webgl/WebGlCoreShader.js +187 -0
  117. package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -0
  118. package/dist/src/core/renderers/webgl/internal/BufferCollection.d.ts +27 -0
  119. package/dist/src/core/renderers/webgl/internal/BufferCollection.js +48 -0
  120. package/dist/src/core/renderers/webgl/internal/BufferCollection.js.map +1 -0
  121. package/dist/src/core/renderers/webgl/internal/RendererUtils.d.ts +39 -0
  122. package/dist/src/core/renderers/webgl/internal/RendererUtils.js +92 -0
  123. package/dist/src/core/renderers/webgl/internal/RendererUtils.js.map +1 -0
  124. package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +46 -0
  125. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +50 -0
  126. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -0
  127. package/dist/src/core/renderers/webgl/internal/WebGlUtils.d.ts +10 -0
  128. package/dist/src/core/renderers/webgl/internal/WebGlUtils.js +31 -0
  129. package/dist/src/core/renderers/webgl/internal/WebGlUtils.js.map +1 -0
  130. package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +9 -0
  131. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +89 -0
  132. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +1 -0
  133. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +10 -0
  134. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +119 -0
  135. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +1 -0
  136. package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +53 -0
  137. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +299 -0
  138. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -0
  139. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +29 -0
  140. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +135 -0
  141. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +1 -0
  142. package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +45 -0
  143. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +137 -0
  144. package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -0
  145. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +15 -0
  146. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +68 -0
  147. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +1 -0
  148. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +14 -0
  149. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +54 -0
  150. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +1 -0
  151. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +15 -0
  152. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +68 -0
  153. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +1 -0
  154. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +15 -0
  155. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +68 -0
  156. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +1 -0
  157. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +15 -0
  158. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +68 -0
  159. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +1 -0
  160. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +1 -0
  161. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +33 -0
  162. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +1 -0
  163. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +17 -0
  164. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +98 -0
  165. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +1 -0
  166. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +6 -0
  167. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +32 -0
  168. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +1 -0
  169. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +16 -0
  170. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +140 -0
  171. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -0
  172. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +14 -0
  173. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +82 -0
  174. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +1 -0
  175. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +44 -0
  176. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +61 -0
  177. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +1 -0
  178. package/dist/src/core/scene/Scene.d.ts +59 -0
  179. package/dist/src/core/scene/Scene.js +106 -0
  180. package/dist/src/core/scene/Scene.js.map +1 -0
  181. package/dist/src/core/text-rendering/TextTextureRendererUtils.d.ts +53 -0
  182. package/dist/src/core/text-rendering/TextTextureRendererUtils.js +156 -0
  183. package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -0
  184. package/dist/src/core/text-rendering/TrFontManager.d.ts +25 -0
  185. package/dist/src/core/text-rendering/TrFontManager.js +75 -0
  186. package/dist/src/core/text-rendering/TrFontManager.js.map +1 -0
  187. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.d.ts +29 -0
  188. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +88 -0
  189. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -0
  190. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.d.ts +103 -0
  191. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js +21 -0
  192. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js.map +1 -0
  193. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.d.ts +59 -0
  194. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js +86 -0
  195. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js.map +1 -0
  196. package/dist/src/core/text-rendering/font-face-types/TrFontFace.d.ts +48 -0
  197. package/dist/src/core/text-rendering/font-face-types/TrFontFace.js +54 -0
  198. package/dist/src/core/text-rendering/font-face-types/TrFontFace.js.map +1 -0
  199. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.d.ts +11 -0
  200. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +54 -0
  201. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js.map +1 -0
  202. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +45 -0
  203. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +492 -0
  204. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -0
  205. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +115 -0
  206. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +493 -0
  207. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -0
  208. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +67 -0
  209. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +452 -0
  210. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -0
  211. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.d.ts +12 -0
  212. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js +61 -0
  213. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js.map +1 -0
  214. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.d.ts +33 -0
  215. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js +52 -0
  216. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js.map +1 -0
  217. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.d.ts +13 -0
  218. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js +32 -0
  219. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js.map +1 -0
  220. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.d.ts +21 -0
  221. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js +53 -0
  222. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js.map +1 -0
  223. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.d.ts +4 -0
  224. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js +34 -0
  225. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js.map +1 -0
  226. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +18 -0
  227. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +294 -0
  228. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -0
  229. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +20 -0
  230. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +55 -0
  231. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +1 -0
  232. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.d.ts +10 -0
  233. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js +39 -0
  234. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js.map +1 -0
  235. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +254 -0
  236. package/dist/src/core/text-rendering/renderers/TextRenderer.js +100 -0
  237. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -0
  238. package/dist/src/core/textures/ColorTexture.d.ts +35 -0
  239. package/dist/src/core/textures/ColorTexture.js +62 -0
  240. package/dist/src/core/textures/ColorTexture.js.map +1 -0
  241. package/dist/src/core/textures/ImageTexture.d.ts +51 -0
  242. package/dist/src/core/textures/ImageTexture.js +76 -0
  243. package/dist/src/core/textures/ImageTexture.js.map +1 -0
  244. package/dist/src/core/textures/NoiseTexture.d.ts +42 -0
  245. package/dist/src/core/textures/NoiseTexture.js +63 -0
  246. package/dist/src/core/textures/NoiseTexture.js.map +1 -0
  247. package/dist/src/core/textures/SubTexture.d.ts +57 -0
  248. package/dist/src/core/textures/SubTexture.js +82 -0
  249. package/dist/src/core/textures/SubTexture.js.map +1 -0
  250. package/dist/src/core/textures/Texture.d.ts +92 -0
  251. package/dist/src/core/textures/Texture.js +105 -0
  252. package/dist/src/core/textures/Texture.js.map +1 -0
  253. package/dist/src/core/utils.d.ts +15 -0
  254. package/dist/src/core/utils.js +183 -0
  255. package/dist/src/core/utils.js.map +1 -0
  256. package/dist/src/main-api/INode.d.ts +390 -0
  257. package/dist/src/main-api/INode.js +20 -0
  258. package/dist/src/main-api/INode.js.map +1 -0
  259. package/dist/src/main-api/IRenderDriver.d.ts +20 -0
  260. package/dist/src/main-api/IRenderDriver.js +20 -0
  261. package/dist/src/main-api/IRenderDriver.js.map +1 -0
  262. package/dist/src/main-api/RendererMain.d.ts +232 -0
  263. package/dist/src/main-api/RendererMain.js +303 -0
  264. package/dist/src/main-api/RendererMain.js.map +1 -0
  265. package/dist/src/render-drivers/main/MainOnlyNode.d.ts +84 -0
  266. package/dist/src/render-drivers/main/MainOnlyNode.js +324 -0
  267. package/dist/src/render-drivers/main/MainOnlyNode.js.map +1 -0
  268. package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +39 -0
  269. package/dist/src/render-drivers/main/MainOnlyTextNode.js +165 -0
  270. package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +1 -0
  271. package/dist/src/render-drivers/main/MainRenderDriver.d.ts +17 -0
  272. package/dist/src/render-drivers/main/MainRenderDriver.js +88 -0
  273. package/dist/src/render-drivers/main/MainRenderDriver.js.map +1 -0
  274. package/dist/src/render-drivers/threadx/NodeStruct.d.ts +81 -0
  275. package/dist/src/render-drivers/threadx/NodeStruct.js +254 -0
  276. package/dist/src/render-drivers/threadx/NodeStruct.js.map +1 -0
  277. package/dist/src/render-drivers/threadx/SharedNode.d.ts +36 -0
  278. package/dist/src/render-drivers/threadx/SharedNode.js +57 -0
  279. package/dist/src/render-drivers/threadx/SharedNode.js.map +1 -0
  280. package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +34 -0
  281. package/dist/src/render-drivers/threadx/TextNodeStruct.js +156 -0
  282. package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +1 -0
  283. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +20 -0
  284. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +84 -0
  285. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +1 -0
  286. package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +37 -0
  287. package/dist/src/render-drivers/threadx/ThreadXMainNode.js +121 -0
  288. package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +1 -0
  289. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +23 -0
  290. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +50 -0
  291. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +1 -0
  292. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.d.ts +21 -0
  293. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +194 -0
  294. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +1 -0
  295. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +48 -0
  296. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +32 -0
  297. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +1 -0
  298. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +19 -0
  299. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +172 -0
  300. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +1 -0
  301. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +22 -0
  302. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +101 -0
  303. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +1 -0
  304. package/dist/src/render-drivers/threadx/worker/renderer.d.ts +1 -0
  305. package/dist/src/render-drivers/threadx/worker/renderer.js +130 -0
  306. package/dist/src/render-drivers/threadx/worker/renderer.js.map +1 -0
  307. package/dist/src/render-drivers/utils.d.ts +10 -0
  308. package/dist/src/render-drivers/utils.js +41 -0
  309. package/dist/src/render-drivers/utils.js.map +1 -0
  310. package/dist/src/utils.d.ts +79 -0
  311. package/dist/src/utils.js +162 -0
  312. package/dist/src/utils.js.map +1 -0
  313. package/dist/tsconfig.dist.tsbuildinfo +1 -0
  314. package/package.json +74 -0
@@ -0,0 +1,82 @@
1
+ /*
2
+ * If not stated otherwise in this file or this component's LICENSE file the
3
+ * following copyright and licenses apply:
4
+ *
5
+ * Copyright 2023 Comcast
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the License);
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ */
19
+ import { CoreRenderOp } from '../CoreRenderOp.js';
20
+ import { WebGlCoreShader } from './WebGlCoreShader.js';
21
+ const MAX_TEXTURES = 8; // TODO: get from gl
22
+ /**
23
+ * Can render multiple quads with multiple textures (up to vertex shader texture limit)
24
+ *
25
+ */
26
+ export class WebGlCoreRenderOp extends CoreRenderOp {
27
+ gl;
28
+ options;
29
+ buffers;
30
+ shader;
31
+ shaderProps;
32
+ dimensions;
33
+ bufferIdx;
34
+ zIndex;
35
+ length = 0;
36
+ numQuads = 0;
37
+ textures = [];
38
+ maxTextures;
39
+ constructor(gl, options, buffers, shader, shaderProps, dimensions, bufferIdx, zIndex) {
40
+ super();
41
+ this.gl = gl;
42
+ this.options = options;
43
+ this.buffers = buffers;
44
+ this.shader = shader;
45
+ this.shaderProps = shaderProps;
46
+ this.dimensions = dimensions;
47
+ this.bufferIdx = bufferIdx;
48
+ this.zIndex = zIndex;
49
+ this.gl = gl;
50
+ this.maxTextures = shader.supportsIndexedTextures
51
+ ? gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS)
52
+ : 1;
53
+ }
54
+ addTexture(texture) {
55
+ const { textures, maxTextures } = this;
56
+ const existingIdx = textures.findIndex((t) => t === texture);
57
+ if (existingIdx !== -1) {
58
+ return existingIdx;
59
+ }
60
+ const newIdx = textures.length;
61
+ if (newIdx >= maxTextures) {
62
+ return 0xffffffff;
63
+ }
64
+ this.textures.push(texture);
65
+ return newIdx;
66
+ }
67
+ draw() {
68
+ const { gl, shader, shaderProps, options } = this;
69
+ // shaderOp.draw(this);
70
+ const { shManager } = options;
71
+ shManager.useShader(shader);
72
+ shader.bindRenderOp(this);
73
+ shader.bindProps(shaderProps);
74
+ // TODO: Reduce calculations required
75
+ const quadIdx = (this.bufferIdx / 24) * 6 * 2;
76
+ // TODO: Move these somewhere else?
77
+ gl.enable(gl.BLEND);
78
+ gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
79
+ gl.drawElements(gl.TRIANGLES, 6 * this.numQuads, gl.UNSIGNED_SHORT, quadIdx);
80
+ }
81
+ }
82
+ //# sourceMappingURL=WebGlCoreRenderOp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebGlCoreRenderOp.js","sourceRoot":"","sources":["../../../../../src/core/renderers/webgl/WebGlCoreRenderOp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAMvD,MAAM,YAAY,GAAG,CAAC,CAAC,CAAC,oBAAoB;AAE5C;;;GAGG;AACH,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IAOtC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAbX,MAAM,GAAG,CAAC,CAAC;IACX,QAAQ,GAAG,CAAC,CAAC;IACb,QAAQ,GAA0B,EAAE,CAAC;IAC5B,WAAW,CAAS;IAE7B,YACW,EAAkD,EAClD,OAAiC,EACjC,OAAyB,EACzB,MAAuB,EACvB,WAAoC,EACpC,UAAsB,EACtB,SAAiB,EACjB,MAAc;QAEvB,KAAK,EAAE,CAAC;QATC,OAAE,GAAF,EAAE,CAAgD;QAClD,YAAO,GAAP,OAAO,CAA0B;QACjC,YAAO,GAAP,OAAO,CAAkB;QACzB,WAAM,GAAN,MAAM,CAAiB;QACvB,gBAAW,GAAX,WAAW,CAAyB;QACpC,eAAU,GAAV,UAAU,CAAY;QACtB,cAAS,GAAT,SAAS,CAAQ;QACjB,WAAM,GAAN,MAAM,CAAQ;QAGvB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,uBAAuB;YAC/C,CAAC,CAAE,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,8BAA8B,CAAY;YAChE,CAAC,CAAC,CAAC,CAAC;IACR,CAAC;IAED,UAAU,CAAC,OAA4B;QACrC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;QACvC,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC;QAC7D,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE;YACtB,OAAO,WAAW,CAAC;SACpB;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC/B,IAAI,MAAM,IAAI,WAAW,EAAE;YACzB,OAAO,UAAU,CAAC;SACnB;QACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI;QACF,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAClD,uBAAuB;QAEvB,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;QAC9B,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC5B,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAE9B,qCAAqC;QACrC,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE9C,mCAAmC;QACnC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACpB,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC;QAE7C,EAAE,CAAC,YAAY,CACb,EAAE,CAAC,SAAS,EACZ,CAAC,GAAG,IAAI,CAAC,QAAQ,EACjB,EAAE,CAAC,cAAc,EACjB,OAAO,CACR,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,100 @@
1
+ import { CoreRenderer, type QuadOptions as QuadOptions } from '../CoreRenderer.js';
2
+ import { WebGlCoreRenderOp } from './WebGlCoreRenderOp.js';
3
+ import type { CoreContextTexture } from '../CoreContextTexture.js';
4
+ import { type CoreWebGlParameters, type CoreWebGlExtensions } from './internal/RendererUtils.js';
5
+ import { Texture } from '../../textures/Texture.js';
6
+ import type { Stage } from '../../Stage.js';
7
+ import type { CoreTextureManager } from '../../CoreTextureManager.js';
8
+ import { CoreShaderManager } from '../../CoreShaderManager.js';
9
+ import type { CoreShader } from '../CoreShader.js';
10
+ import { BufferCollection } from './internal/BufferCollection.js';
11
+ export interface WebGlCoreRendererOptions {
12
+ stage: Stage;
13
+ canvas: HTMLCanvasElement | OffscreenCanvas;
14
+ pixelRatio: number;
15
+ txManager: CoreTextureManager;
16
+ shManager: CoreShaderManager;
17
+ clearColor: number;
18
+ bufferMemory: number;
19
+ }
20
+ interface CoreWebGlSystem {
21
+ parameters: CoreWebGlParameters;
22
+ extensions: CoreWebGlExtensions;
23
+ }
24
+ export declare class WebGlCoreRenderer extends CoreRenderer {
25
+ gl: WebGLRenderingContext;
26
+ system: CoreWebGlSystem;
27
+ txManager: CoreTextureManager;
28
+ shManager: CoreShaderManager;
29
+ options: Required<WebGlCoreRendererOptions>;
30
+ quadBuffer: ArrayBuffer;
31
+ fQuadBuffer: Float32Array;
32
+ uiQuadBuffer: Uint32Array;
33
+ renderOps: WebGlCoreRenderOp[];
34
+ curBufferIdx: number;
35
+ curRenderOp: WebGlCoreRenderOp | null;
36
+ renderables: Array<QuadOptions | WebGlCoreRenderOp>;
37
+ defaultShader: CoreShader;
38
+ quadBufferCollection: BufferCollection;
39
+ /**
40
+ * White pixel texture used by default when no texture is specified.
41
+ */
42
+ defaultTexture: Texture;
43
+ constructor(options: WebGlCoreRendererOptions);
44
+ reset(): void;
45
+ getShaderManager(): CoreShaderManager;
46
+ createCtxTexture(textureSource: Texture): CoreContextTexture;
47
+ /**
48
+ * Add a renderable to the current set of renderables.
49
+ *
50
+ * @remarks
51
+ * If a {@link QuadOptions} structure is provided, this will ultimately result
52
+ * in a render ops being created, merged and added to the render ops list.
53
+ *
54
+ * If a direct {@link WebGlCoreRenderOp} instance is provided, it will be
55
+ * added to the render ops list as-is. Be sure to set the zIndex correctly of
56
+ * the render op to ensure proper rendering order.
57
+ *
58
+ * @param renderable
59
+ */
60
+ addRenderable(renderable: QuadOptions | WebGlCoreRenderOp): void;
61
+ private addQuad;
62
+ /**
63
+ * Replace the existing RenderOp with a new one that uses the specified Shader
64
+ * and starts at the specified buffer index.
65
+ *
66
+ * @param shader
67
+ * @param bufferIdx
68
+ */
69
+ private newRenderOp;
70
+ /**
71
+ * Add a texture to the current RenderOp. If the texture cannot be added to the
72
+ * current RenderOp, a new RenderOp will be created and the texture will be added
73
+ * to that one.
74
+ *
75
+ * If the texture cannot be added to the new RenderOp, an error will be thrown.
76
+ *
77
+ * @param texture
78
+ * @param bufferIdx
79
+ * @param recursive
80
+ * @returns Assigned Texture Index of the texture in the render op
81
+ */
82
+ private addTexture;
83
+ /**
84
+ * Sort renderable children and add them to the render ops.
85
+ * @todo:
86
+ * - move to merge sort to keep relative order
87
+ * - support z-index parent locking
88
+ *
89
+ */
90
+ sortRenderables(): void;
91
+ /**
92
+ * Render the current set of RenderOps to render to the specified surface.
93
+ *
94
+ * TODO: 'screen' is the only supported surface at the moment.
95
+ *
96
+ * @param surface
97
+ */
98
+ render(surface?: 'screen' | CoreContextTexture): void;
99
+ }
100
+ export {};
@@ -0,0 +1,372 @@
1
+ /*
2
+ * If not stated otherwise in this file or this component's LICENSE file the
3
+ * following copyright and licenses apply:
4
+ *
5
+ * Copyright 2023 Comcast
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the License);
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ */
19
+ import { assertTruthy, createWebGLContext, mergeColorAlphaPremultiplied, } from '../../../utils.js';
20
+ import { CoreRenderer, } from '../CoreRenderer.js';
21
+ import { WebGlCoreRenderOp } from './WebGlCoreRenderOp.js';
22
+ import { createIndexBuffer, getWebGlParameters, getWebGlExtensions, } from './internal/RendererUtils.js';
23
+ import { WebGlCoreCtxTexture } from './WebGlCoreCtxTexture.js';
24
+ import { Texture } from '../../textures/Texture.js';
25
+ import { ColorTexture } from '../../textures/ColorTexture.js';
26
+ import { SubTexture } from '../../textures/SubTexture.js';
27
+ import { WebGlCoreCtxSubTexture } from './WebGlCoreCtxSubTexture.js';
28
+ import { CoreShaderManager } from '../../CoreShaderManager.js';
29
+ import { BufferCollection } from './internal/BufferCollection.js';
30
+ import { getNormalizedRgbaComponents } from '../../lib/utils.js';
31
+ import { WebGlCoreShader } from './WebGlCoreShader.js';
32
+ const WORDS_PER_QUAD = 24;
33
+ const BYTES_PER_QUAD = WORDS_PER_QUAD * 4;
34
+ export class WebGlCoreRenderer extends CoreRenderer {
35
+ //// WebGL Native Context and Data
36
+ gl;
37
+ system;
38
+ //// Core Managers
39
+ txManager;
40
+ shManager;
41
+ //// Options
42
+ options;
43
+ //// Persistent data
44
+ quadBuffer = new ArrayBuffer(1024 * 1024 * 4);
45
+ fQuadBuffer = new Float32Array(this.quadBuffer);
46
+ uiQuadBuffer = new Uint32Array(this.quadBuffer);
47
+ renderOps = [];
48
+ //// Render Op / Buffer Filling State
49
+ curBufferIdx = 0;
50
+ curRenderOp = null;
51
+ renderables = [];
52
+ //// Default Shader
53
+ defaultShader;
54
+ quadBufferCollection;
55
+ /**
56
+ * White pixel texture used by default when no texture is specified.
57
+ */
58
+ defaultTexture;
59
+ constructor(options) {
60
+ super(options.stage);
61
+ const { canvas, clearColor, bufferMemory } = options;
62
+ this.options = options;
63
+ this.txManager = options.txManager;
64
+ this.shManager = options.shManager;
65
+ this.defaultTexture = new ColorTexture(this.txManager);
66
+ const gl = createWebGLContext(canvas);
67
+ if (!gl) {
68
+ throw new Error('Unable to create WebGL context');
69
+ }
70
+ this.gl = gl;
71
+ const color = getNormalizedRgbaComponents(clearColor);
72
+ gl.viewport(0, 0, canvas.width, canvas.height);
73
+ gl.clearColor(color[0], color[1], color[2], color[3]);
74
+ createIndexBuffer(gl, bufferMemory);
75
+ this.system = {
76
+ parameters: getWebGlParameters(gl),
77
+ extensions: getWebGlExtensions(gl),
78
+ };
79
+ this.shManager.renderer = this;
80
+ this.defaultShader = this.shManager.loadShader('DefaultShaderBatched').shader;
81
+ const quadBuffer = gl.createBuffer();
82
+ assertTruthy(quadBuffer);
83
+ const stride = 6 * Float32Array.BYTES_PER_ELEMENT;
84
+ this.quadBufferCollection = new BufferCollection([
85
+ {
86
+ buffer: quadBuffer,
87
+ attributes: {
88
+ a_position: {
89
+ name: 'a_position',
90
+ size: 2,
91
+ type: gl.FLOAT,
92
+ normalized: false,
93
+ stride,
94
+ offset: 0, // start at the beginning of the buffer
95
+ },
96
+ a_textureCoordinate: {
97
+ name: 'a_textureCoordinate',
98
+ size: 2,
99
+ type: gl.FLOAT,
100
+ normalized: false,
101
+ stride,
102
+ offset: 2 * Float32Array.BYTES_PER_ELEMENT,
103
+ },
104
+ a_color: {
105
+ name: 'a_color',
106
+ size: 4,
107
+ type: gl.UNSIGNED_BYTE,
108
+ normalized: true,
109
+ stride,
110
+ offset: 4 * Float32Array.BYTES_PER_ELEMENT,
111
+ },
112
+ a_textureIndex: {
113
+ name: 'a_textureIndex',
114
+ size: 1,
115
+ type: gl.FLOAT,
116
+ normalized: false,
117
+ stride,
118
+ offset: 5 * Float32Array.BYTES_PER_ELEMENT,
119
+ },
120
+ },
121
+ },
122
+ ]);
123
+ }
124
+ reset() {
125
+ this.curBufferIdx = 0;
126
+ this.curRenderOp = null;
127
+ this.renderOps.length = 0;
128
+ this.gl.clear(this.gl.COLOR_BUFFER_BIT);
129
+ }
130
+ getShaderManager() {
131
+ return this.shManager;
132
+ }
133
+ createCtxTexture(textureSource) {
134
+ if (textureSource instanceof SubTexture) {
135
+ return new WebGlCoreCtxSubTexture(this.gl, textureSource);
136
+ }
137
+ return new WebGlCoreCtxTexture(this.gl, textureSource);
138
+ }
139
+ /**
140
+ * Add a renderable to the current set of renderables.
141
+ *
142
+ * @remarks
143
+ * If a {@link QuadOptions} structure is provided, this will ultimately result
144
+ * in a render ops being created, merged and added to the render ops list.
145
+ *
146
+ * If a direct {@link WebGlCoreRenderOp} instance is provided, it will be
147
+ * added to the render ops list as-is. Be sure to set the zIndex correctly of
148
+ * the render op to ensure proper rendering order.
149
+ *
150
+ * @param renderable
151
+ */
152
+ addRenderable(renderable) {
153
+ this.renderables?.push(renderable);
154
+ }
155
+ addQuad(params) {
156
+ const { fQuadBuffer, uiQuadBuffer } = this;
157
+ const { width, height, colorTl, colorTr, colorBl, colorBr, textureOptions, shader, shaderProps, alpha, wpx, wpy, ta, tb, tc, td, } = params;
158
+ let { texture } = params;
159
+ texture = texture ?? this.defaultTexture;
160
+ assertTruthy(texture instanceof Texture, 'Invalid texture type');
161
+ let { curBufferIdx: bufferIdx, curRenderOp } = this;
162
+ const targetDims = {
163
+ width,
164
+ height,
165
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
166
+ };
167
+ const targetShader = shader || this.defaultShader;
168
+ if (curRenderOp) {
169
+ if (curRenderOp.shader !== targetShader) {
170
+ curRenderOp = null;
171
+ }
172
+ else if (curRenderOp.shader !== this.defaultShader &&
173
+ (curRenderOp.shaderProps !== shaderProps ||
174
+ curRenderOp.dimensions !== targetDims)) {
175
+ curRenderOp = null;
176
+ }
177
+ }
178
+ assertTruthy(targetShader instanceof WebGlCoreShader);
179
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any
180
+ if (!curRenderOp) {
181
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
182
+ this.newRenderOp(targetShader, shaderProps, targetDims, bufferIdx);
183
+ curRenderOp = this.curRenderOp;
184
+ assertTruthy(curRenderOp);
185
+ }
186
+ const flipX = textureOptions?.flipX ?? false;
187
+ const flipY = textureOptions?.flipY ?? false;
188
+ let texCoordX1 = 0;
189
+ let texCoordY1 = 0;
190
+ let texCoordX2 = 1;
191
+ let texCoordY2 = 1;
192
+ if (texture instanceof SubTexture) {
193
+ const { x: tx, y: ty, width: tw, height: th } = texture.props;
194
+ const { width: parentW = 0, height: parentH = 0 } = texture.parentTexture
195
+ .dimensions || { width: 0, height: 0 };
196
+ texCoordX1 = tx / parentW;
197
+ texCoordX2 = texCoordX1 + tw / parentW;
198
+ texCoordY1 = ty / parentH;
199
+ texCoordY2 = texCoordY1 + th / parentH;
200
+ texture = texture.parentTexture;
201
+ }
202
+ // Flip texture coordinates if dictated by texture options
203
+ if (flipX) {
204
+ [texCoordX1, texCoordX2] = [texCoordX2, texCoordX1];
205
+ }
206
+ if (flipY) {
207
+ [texCoordY1, texCoordY2] = [texCoordY2, texCoordY1];
208
+ }
209
+ const { txManager } = this.stage;
210
+ const ctxTexture = txManager.getCtxTexture(texture);
211
+ assertTruthy(ctxTexture instanceof WebGlCoreCtxTexture);
212
+ const textureIdx = this.addTexture(ctxTexture, bufferIdx);
213
+ curRenderOp = this.curRenderOp;
214
+ assertTruthy(curRenderOp);
215
+ // render quad advanced
216
+ if (tb !== 0 || tc !== 0) {
217
+ // Upper-Left
218
+ fQuadBuffer[bufferIdx++] = wpx; // vertexX
219
+ fQuadBuffer[bufferIdx++] = wpy; // vertexY
220
+ fQuadBuffer[bufferIdx++] = texCoordX1; // texCoordX
221
+ fQuadBuffer[bufferIdx++] = texCoordY1; // texCoordY
222
+ uiQuadBuffer[bufferIdx++] = mergeColorAlphaPremultiplied(colorTl, alpha, true); // color
223
+ fQuadBuffer[bufferIdx++] = textureIdx; // texIndex
224
+ // Upper-Right
225
+ fQuadBuffer[bufferIdx++] = wpx + width * ta;
226
+ fQuadBuffer[bufferIdx++] = wpy + width * tc;
227
+ fQuadBuffer[bufferIdx++] = texCoordX2;
228
+ fQuadBuffer[bufferIdx++] = texCoordY1;
229
+ uiQuadBuffer[bufferIdx++] = mergeColorAlphaPremultiplied(colorTr, alpha, true);
230
+ fQuadBuffer[bufferIdx++] = textureIdx;
231
+ // Lower-Left
232
+ fQuadBuffer[bufferIdx++] = wpx + height * tb;
233
+ fQuadBuffer[bufferIdx++] = wpy + height * td;
234
+ fQuadBuffer[bufferIdx++] = texCoordX1;
235
+ fQuadBuffer[bufferIdx++] = texCoordY2;
236
+ uiQuadBuffer[bufferIdx++] = mergeColorAlphaPremultiplied(colorBl, alpha, true);
237
+ fQuadBuffer[bufferIdx++] = textureIdx;
238
+ // Lower-Right
239
+ fQuadBuffer[bufferIdx++] = wpx + width * ta + height * tb;
240
+ fQuadBuffer[bufferIdx++] = wpy + width * tc + height * td;
241
+ fQuadBuffer[bufferIdx++] = texCoordX2;
242
+ fQuadBuffer[bufferIdx++] = texCoordY2;
243
+ uiQuadBuffer[bufferIdx++] = mergeColorAlphaPremultiplied(colorBr, alpha, true);
244
+ fQuadBuffer[bufferIdx++] = textureIdx;
245
+ }
246
+ else {
247
+ // Calculate the right corner of the quad
248
+ // multiplied by the scale
249
+ const rightCornerX = wpx + width * ta;
250
+ const rightCornerY = wpy + height * td;
251
+ // Upper-Left
252
+ fQuadBuffer[bufferIdx++] = wpx; // vertexX
253
+ fQuadBuffer[bufferIdx++] = wpy; // vertexY
254
+ fQuadBuffer[bufferIdx++] = texCoordX1; // texCoordX
255
+ fQuadBuffer[bufferIdx++] = texCoordY1; // texCoordY
256
+ uiQuadBuffer[bufferIdx++] = mergeColorAlphaPremultiplied(colorTl, alpha, true); // color
257
+ fQuadBuffer[bufferIdx++] = textureIdx; // texIndex
258
+ // Upper-Right
259
+ fQuadBuffer[bufferIdx++] = rightCornerX;
260
+ fQuadBuffer[bufferIdx++] = wpy;
261
+ fQuadBuffer[bufferIdx++] = texCoordX2;
262
+ fQuadBuffer[bufferIdx++] = texCoordY1;
263
+ uiQuadBuffer[bufferIdx++] = mergeColorAlphaPremultiplied(colorTr, alpha, true);
264
+ fQuadBuffer[bufferIdx++] = textureIdx;
265
+ // Lower-Left
266
+ fQuadBuffer[bufferIdx++] = wpx;
267
+ fQuadBuffer[bufferIdx++] = rightCornerY;
268
+ fQuadBuffer[bufferIdx++] = texCoordX1;
269
+ fQuadBuffer[bufferIdx++] = texCoordY2;
270
+ uiQuadBuffer[bufferIdx++] = mergeColorAlphaPremultiplied(colorBl, alpha, true);
271
+ fQuadBuffer[bufferIdx++] = textureIdx;
272
+ // Lower-Right
273
+ fQuadBuffer[bufferIdx++] = rightCornerX;
274
+ fQuadBuffer[bufferIdx++] = rightCornerY;
275
+ fQuadBuffer[bufferIdx++] = texCoordX2;
276
+ fQuadBuffer[bufferIdx++] = texCoordY2;
277
+ uiQuadBuffer[bufferIdx++] = mergeColorAlphaPremultiplied(colorBr, alpha, true);
278
+ fQuadBuffer[bufferIdx++] = textureIdx;
279
+ }
280
+ // Update the length of the current render op
281
+ curRenderOp.length += WORDS_PER_QUAD;
282
+ curRenderOp.numQuads++;
283
+ this.curBufferIdx = bufferIdx;
284
+ }
285
+ /**
286
+ * Replace the existing RenderOp with a new one that uses the specified Shader
287
+ * and starts at the specified buffer index.
288
+ *
289
+ * @param shader
290
+ * @param bufferIdx
291
+ */
292
+ newRenderOp(shader, shaderProps, dimensions, bufferIdx) {
293
+ const curRenderOp = new WebGlCoreRenderOp(this.gl, this.options, this.quadBufferCollection, shader, shaderProps, dimensions, bufferIdx, 0);
294
+ this.curRenderOp = curRenderOp;
295
+ this.renderOps.push(curRenderOp);
296
+ }
297
+ /**
298
+ * Add a texture to the current RenderOp. If the texture cannot be added to the
299
+ * current RenderOp, a new RenderOp will be created and the texture will be added
300
+ * to that one.
301
+ *
302
+ * If the texture cannot be added to the new RenderOp, an error will be thrown.
303
+ *
304
+ * @param texture
305
+ * @param bufferIdx
306
+ * @param recursive
307
+ * @returns Assigned Texture Index of the texture in the render op
308
+ */
309
+ addTexture(texture, bufferIdx, recursive) {
310
+ const { curRenderOp } = this;
311
+ assertTruthy(curRenderOp);
312
+ const textureIdx = curRenderOp.addTexture(texture);
313
+ // TODO: Refactor to be more DRY
314
+ if (textureIdx === 0xffffffff) {
315
+ if (recursive) {
316
+ throw new Error('Unable to add texture to render op');
317
+ }
318
+ const { shader, shaderProps, dimensions } = curRenderOp;
319
+ this.newRenderOp(shader, shaderProps, dimensions, bufferIdx);
320
+ return this.addTexture(texture, bufferIdx, true);
321
+ }
322
+ return textureIdx;
323
+ }
324
+ /**
325
+ * Sort renderable children and add them to the render ops.
326
+ * @todo:
327
+ * - move to merge sort to keep relative order
328
+ * - support z-index parent locking
329
+ *
330
+ */
331
+ sortRenderables() {
332
+ const { renderables } = this;
333
+ renderables.sort((a, b) => a.zIndex - b.zIndex);
334
+ renderables.forEach((renderable) => {
335
+ if (renderable instanceof WebGlCoreRenderOp) {
336
+ this.renderOps.push(renderable);
337
+ this.curRenderOp = null;
338
+ }
339
+ else {
340
+ this.addQuad(renderable);
341
+ }
342
+ });
343
+ }
344
+ /**
345
+ * Render the current set of RenderOps to render to the specified surface.
346
+ *
347
+ * TODO: 'screen' is the only supported surface at the moment.
348
+ *
349
+ * @param surface
350
+ */
351
+ render(surface = 'screen') {
352
+ const { gl, quadBuffer } = this;
353
+ const arr = new Float32Array(quadBuffer, 0, this.curBufferIdx);
354
+ const buffer = this.quadBufferCollection.getBuffer('a_position') ?? null;
355
+ gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
356
+ gl.bufferData(gl.ARRAY_BUFFER, arr, gl.DYNAMIC_DRAW);
357
+ const doLog = false; // idx++ % 100 === 0;
358
+ if (doLog) {
359
+ console.log('renderOps', this.renderOps.length);
360
+ }
361
+ this.renderOps.forEach((renderOp, i) => {
362
+ if (doLog) {
363
+ console.log('renderOp', i, renderOp.numQuads);
364
+ }
365
+ renderOp.draw();
366
+ });
367
+ // clean up
368
+ this.renderables = [];
369
+ }
370
+ }
371
+ const idx = 0;
372
+ //# sourceMappingURL=WebGlCoreRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebGlCoreRenderer.js","sourceRoot":"","sources":["../../../../../src/core/renderers/webgl/WebGlCoreRenderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { CoreShader } from '../CoreShader.js';
2
+ import type { WebGlCoreCtxTexture } from './WebGlCoreCtxTexture.js';
3
+ import type { WebGlCoreRenderOp } from './WebGlCoreRenderOp.js';
4
+ import type { WebGlCoreRenderer } from './WebGlCoreRenderer.js';
5
+ import type { BufferCollection } from './internal/BufferCollection.js';
6
+ import { type ShaderOptions, type UniformMethodMap, type ShaderProgramSources } from './internal/ShaderUtils.js';
7
+ export declare abstract class WebGlCoreShader extends CoreShader {
8
+ protected boundBufferCollection: BufferCollection | null;
9
+ protected buffersBound: boolean;
10
+ protected program: WebGLProgram;
11
+ /**
12
+ * Vertex Array Object
13
+ *
14
+ * @remarks
15
+ * Used by WebGL2 Only
16
+ */
17
+ protected vao: WebGLVertexArrayObject | undefined;
18
+ protected renderer: WebGlCoreRenderer;
19
+ protected gl: WebGLRenderingContext;
20
+ protected attributeBuffers: Record<string, WebGLBuffer>;
21
+ protected attributeLocations: Record<string, number>;
22
+ protected attributeNames: string[];
23
+ protected uniformLocations: Record<string, WebGLUniformLocation>;
24
+ protected uniformTypes: Record<string, keyof UniformMethodMap>;
25
+ readonly supportsIndexedTextures: boolean;
26
+ constructor(options: ShaderOptions);
27
+ private bindBufferAttribute;
28
+ disableAttribute(location: number): void;
29
+ disableAttributes(): void;
30
+ bindRenderOp(renderOp: WebGlCoreRenderOp): void;
31
+ setUniform(name: string, value: any): void;
32
+ bindBufferCollection(buffer: BufferCollection): void;
33
+ bindProps(props: Record<string, unknown>): void;
34
+ bindTextures(textures: WebGlCoreCtxTexture[]): void;
35
+ bindUniforms(renderOp: WebGlCoreRenderOp): void;
36
+ attach(): void;
37
+ detach(): void;
38
+ protected static shaderSources?: ShaderProgramSources;
39
+ }