@lightningjs/renderer 2.19.0 → 2.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. package/dist/exports/utils.d.ts +2 -1
  2. package/dist/exports/utils.js +2 -1
  3. package/dist/exports/utils.js.map +1 -1
  4. package/dist/src/core/CoreNode.js +11 -11
  5. package/dist/src/core/CoreNode.js.map +1 -1
  6. package/dist/src/core/TextureMemoryManager.js +1 -1
  7. package/dist/src/core/TextureMemoryManager.js.map +1 -1
  8. package/dist/src/core/lib/WebGlContextWrapper.d.ts +14 -0
  9. package/dist/src/core/lib/WebGlContextWrapper.js +35 -0
  10. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
  11. package/dist/src/core/lib/textureCompression.d.ts +14 -2
  12. package/dist/src/core/lib/textureCompression.js +301 -65
  13. package/dist/src/core/lib/textureCompression.js.map +1 -1
  14. package/dist/src/core/renderers/CoreRenderer.d.ts +2 -2
  15. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +4 -0
  16. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +14 -11
  17. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
  18. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +1 -1
  19. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +49 -20
  20. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
  21. package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +2 -7
  22. package/dist/src/core/renderers/webgl/WebGlCoreShader.js +18 -49
  23. package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -1
  24. package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +0 -2
  25. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -1
  26. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +3 -6
  27. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +1 -1
  28. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +0 -11
  29. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +1 -1
  30. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +5 -10
  31. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -1
  32. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +5 -10
  33. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +1 -1
  34. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +0 -12
  35. package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -1
  36. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +1 -1
  37. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +1 -1
  38. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +1 -1
  39. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +1 -1
  40. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +5 -5
  41. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +1 -1
  42. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +1 -1
  43. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +1 -1
  44. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +1 -1
  45. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +5 -5
  46. package/dist/src/core/textures/Texture.d.ts +12 -5
  47. package/dist/src/core/textures/Texture.js.map +1 -1
  48. package/dist/src/main-api/Inspector.js +10 -6
  49. package/dist/src/main-api/Inspector.js.map +1 -1
  50. package/dist/src/main-api/Renderer.js +1 -1
  51. package/dist/src/main-api/Renderer.js.map +1 -1
  52. package/dist/src/utils.d.ts +1 -6
  53. package/dist/src/utils.js +2 -9
  54. package/dist/src/utils.js.map +1 -1
  55. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  56. package/exports/utils.ts +7 -1
  57. package/package.json +1 -1
  58. package/src/core/CoreNode.ts +12 -14
  59. package/src/core/TextureMemoryManager.ts +1 -1
  60. package/src/core/lib/WebGlContextWrapper.ts +49 -0
  61. package/src/core/lib/textureCompression.ts +416 -75
  62. package/src/core/renderers/CoreRenderer.ts +2 -2
  63. package/src/core/renderers/webgl/WebGlCoreCtxTexture.ts +16 -14
  64. package/src/core/renderers/webgl/WebGlCoreRenderOp.ts +1 -1
  65. package/src/core/renderers/webgl/WebGlCoreRenderer.ts +53 -32
  66. package/src/core/renderers/webgl/WebGlCoreShader.ts +27 -75
  67. package/src/core/renderers/webgl/internal/ShaderUtils.ts +0 -2
  68. package/src/core/renderers/webgl/shaders/DefaultShader.ts +3 -6
  69. package/src/core/renderers/webgl/shaders/DefaultShaderBatched.ts +0 -11
  70. package/src/core/renderers/webgl/shaders/DynamicShader.ts +5 -10
  71. package/src/core/renderers/webgl/shaders/RoundedRectangle.ts +5 -10
  72. package/src/core/renderers/webgl/shaders/SdfShader.ts +0 -12
  73. package/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.ts +1 -1
  74. package/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.ts +1 -1
  75. package/src/core/renderers/webgl/shaders/effects/BorderRightEffect.ts +1 -1
  76. package/src/core/renderers/webgl/shaders/effects/BorderTopEffect.ts +1 -1
  77. package/src/core/renderers/webgl/shaders/effects/FadeOutEffect.ts +5 -5
  78. package/src/core/renderers/webgl/shaders/effects/HolePunchEffect.ts +1 -1
  79. package/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts +1 -1
  80. package/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts +1 -1
  81. package/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.ts +1 -1
  82. package/src/core/renderers/webgl/shaders/effects/RadiusEffect.ts +5 -5
  83. package/src/core/textures/Texture.ts +13 -6
  84. package/src/main-api/Inspector.ts +10 -6
  85. package/src/main-api/Renderer.ts +1 -1
  86. package/src/utils.ts +4 -4
  87. package/dist/exports/canvas-shaders.d.ts +0 -10
  88. package/dist/exports/canvas-shaders.js +0 -27
  89. package/dist/exports/canvas-shaders.js.map +0 -1
  90. package/dist/exports/webgl-shaders.d.ts +0 -11
  91. package/dist/exports/webgl-shaders.js +0 -28
  92. package/dist/exports/webgl-shaders.js.map +0 -1
  93. package/dist/src/core/lib/colorCache.d.ts +0 -1
  94. package/dist/src/core/lib/colorCache.js +0 -19
  95. package/dist/src/core/lib/colorCache.js.map +0 -1
  96. package/dist/src/core/lib/colorParser.d.ts +0 -21
  97. package/dist/src/core/lib/colorParser.js +0 -72
  98. package/dist/src/core/lib/colorParser.js.map +0 -1
  99. package/dist/src/core/platforms/Platform.d.ts +0 -37
  100. package/dist/src/core/platforms/Platform.js +0 -22
  101. package/dist/src/core/platforms/Platform.js.map +0 -1
  102. package/dist/src/core/platforms/web/WebPlatform.d.ts +0 -9
  103. package/dist/src/core/platforms/web/WebPlatform.js +0 -84
  104. package/dist/src/core/platforms/web/WebPlatform.js.map +0 -1
  105. package/dist/src/core/renderers/CoreShaderNode.d.ts +0 -59
  106. package/dist/src/core/renderers/CoreShaderNode.js +0 -113
  107. package/dist/src/core/renderers/CoreShaderNode.js.map +0 -1
  108. package/dist/src/core/renderers/CoreShaderProgram.d.ts +0 -4
  109. package/dist/src/core/renderers/CoreShaderProgram.js +0 -20
  110. package/dist/src/core/renderers/CoreShaderProgram.js.map +0 -1
  111. package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +0 -35
  112. package/dist/src/core/renderers/canvas/CanvasRenderer.js +0 -201
  113. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +0 -1
  114. package/dist/src/core/renderers/canvas/CanvasShaderNode.d.ts +0 -21
  115. package/dist/src/core/renderers/canvas/CanvasShaderNode.js +0 -58
  116. package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +0 -1
  117. package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +0 -16
  118. package/dist/src/core/renderers/canvas/CanvasTexture.js +0 -125
  119. package/dist/src/core/renderers/canvas/CanvasTexture.js.map +0 -1
  120. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +0 -12
  121. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +0 -57
  122. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +0 -1
  123. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +0 -22
  124. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +0 -67
  125. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +0 -1
  126. package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +0 -56
  127. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +0 -236
  128. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +0 -1
  129. package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +0 -44
  130. package/dist/src/core/renderers/webgl/WebGlRenderOp.js +0 -125
  131. package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +0 -1
  132. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +0 -136
  133. package/dist/src/core/renderers/webgl/WebGlRenderer.js +0 -573
  134. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +0 -1
  135. package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +0 -222
  136. package/dist/src/core/renderers/webgl/WebGlShaderNode.js +0 -331
  137. package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +0 -1
  138. package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +0 -37
  139. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +0 -218
  140. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +0 -1
  141. package/dist/src/core/shaders/canvas/Border.d.ts +0 -9
  142. package/dist/src/core/shaders/canvas/Border.js +0 -57
  143. package/dist/src/core/shaders/canvas/Border.js.map +0 -1
  144. package/dist/src/core/shaders/canvas/HolePunch.d.ts +0 -7
  145. package/dist/src/core/shaders/canvas/HolePunch.js +0 -38
  146. package/dist/src/core/shaders/canvas/HolePunch.js.map +0 -1
  147. package/dist/src/core/shaders/canvas/LinearGradient.d.ts +0 -10
  148. package/dist/src/core/shaders/canvas/LinearGradient.js +0 -48
  149. package/dist/src/core/shaders/canvas/LinearGradient.js.map +0 -1
  150. package/dist/src/core/shaders/canvas/RadialGradient.d.ts +0 -11
  151. package/dist/src/core/shaders/canvas/RadialGradient.js +0 -70
  152. package/dist/src/core/shaders/canvas/RadialGradient.js.map +0 -1
  153. package/dist/src/core/shaders/canvas/Rounded.d.ts +0 -7
  154. package/dist/src/core/shaders/canvas/Rounded.js +0 -33
  155. package/dist/src/core/shaders/canvas/Rounded.js.map +0 -1
  156. package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +0 -7
  157. package/dist/src/core/shaders/canvas/RoundedWithBorder.js +0 -43
  158. package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +0 -1
  159. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +0 -8
  160. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +0 -41
  161. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +0 -1
  162. package/dist/src/core/shaders/canvas/RoundedWithShadow.d.ts +0 -7
  163. package/dist/src/core/shaders/canvas/RoundedWithShadow.js +0 -40
  164. package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +0 -1
  165. package/dist/src/core/shaders/canvas/Shadow.d.ts +0 -8
  166. package/dist/src/core/shaders/canvas/Shadow.js +0 -31
  167. package/dist/src/core/shaders/canvas/Shadow.js.map +0 -1
  168. package/dist/src/core/shaders/canvas/utils/render.d.ts +0 -5
  169. package/dist/src/core/shaders/canvas/utils/render.js +0 -84
  170. package/dist/src/core/shaders/canvas/utils/render.js.map +0 -1
  171. package/dist/src/core/shaders/templates/BorderTemplate.d.ts +0 -37
  172. package/dist/src/core/shaders/templates/BorderTemplate.js +0 -73
  173. package/dist/src/core/shaders/templates/BorderTemplate.js.map +0 -1
  174. package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +0 -46
  175. package/dist/src/core/shaders/templates/HolePunchTemplate.js +0 -35
  176. package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +0 -1
  177. package/dist/src/core/shaders/templates/LinearGradientTemplate.d.ts +0 -23
  178. package/dist/src/core/shaders/templates/LinearGradientTemplate.js +0 -47
  179. package/dist/src/core/shaders/templates/LinearGradientTemplate.js.map +0 -1
  180. package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +0 -31
  181. package/dist/src/core/shaders/templates/RadialGradientTemplate.js +0 -49
  182. package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +0 -1
  183. package/dist/src/core/shaders/templates/RoundedTemplate.d.ts +0 -29
  184. package/dist/src/core/shaders/templates/RoundedTemplate.js +0 -67
  185. package/dist/src/core/shaders/templates/RoundedTemplate.js.map +0 -1
  186. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +0 -7
  187. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js +0 -24
  188. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js.map +0 -1
  189. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +0 -6
  190. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js +0 -23
  191. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js.map +0 -1
  192. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +0 -6
  193. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js +0 -23
  194. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js.map +0 -1
  195. package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +0 -34
  196. package/dist/src/core/shaders/templates/ShadowTemplate.js +0 -66
  197. package/dist/src/core/shaders/templates/ShadowTemplate.js.map +0 -1
  198. package/dist/src/core/shaders/utils.d.ts +0 -5
  199. package/dist/src/core/shaders/utils.js +0 -41
  200. package/dist/src/core/shaders/utils.js.map +0 -1
  201. package/dist/src/core/shaders/webgl/Border.d.ts +0 -3
  202. package/dist/src/core/shaders/webgl/Border.js +0 -110
  203. package/dist/src/core/shaders/webgl/Border.js.map +0 -1
  204. package/dist/src/core/shaders/webgl/Default.d.ts +0 -2
  205. package/dist/src/core/shaders/webgl/Default.js +0 -86
  206. package/dist/src/core/shaders/webgl/Default.js.map +0 -1
  207. package/dist/src/core/shaders/webgl/DefaultBatched.d.ts +0 -2
  208. package/dist/src/core/shaders/webgl/DefaultBatched.js +0 -104
  209. package/dist/src/core/shaders/webgl/DefaultBatched.js.map +0 -1
  210. package/dist/src/core/shaders/webgl/HolePunch.d.ts +0 -3
  211. package/dist/src/core/shaders/webgl/HolePunch.js +0 -65
  212. package/dist/src/core/shaders/webgl/HolePunch.js.map +0 -1
  213. package/dist/src/core/shaders/webgl/LinearGradient.d.ts +0 -3
  214. package/dist/src/core/shaders/webgl/LinearGradient.js +0 -99
  215. package/dist/src/core/shaders/webgl/LinearGradient.js.map +0 -1
  216. package/dist/src/core/shaders/webgl/RadialGradient.d.ts +0 -3
  217. package/dist/src/core/shaders/webgl/RadialGradient.js +0 -96
  218. package/dist/src/core/shaders/webgl/RadialGradient.js.map +0 -1
  219. package/dist/src/core/shaders/webgl/Rounded.d.ts +0 -7
  220. package/dist/src/core/shaders/webgl/Rounded.js +0 -86
  221. package/dist/src/core/shaders/webgl/Rounded.js.map +0 -1
  222. package/dist/src/core/shaders/webgl/RoundedWithBorder.d.ts +0 -3
  223. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +0 -140
  224. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +0 -1
  225. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.d.ts +0 -3
  226. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +0 -162
  227. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +0 -1
  228. package/dist/src/core/shaders/webgl/RoundedWithShadow.d.ts +0 -3
  229. package/dist/src/core/shaders/webgl/RoundedWithShadow.js +0 -84
  230. package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +0 -1
  231. package/dist/src/core/shaders/webgl/SdfShader.d.ts +0 -30
  232. package/dist/src/core/shaders/webgl/SdfShader.js +0 -107
  233. package/dist/src/core/shaders/webgl/SdfShader.js.map +0 -1
  234. package/dist/src/core/shaders/webgl/Shadow.d.ts +0 -3
  235. package/dist/src/core/shaders/webgl/Shadow.js +0 -110
  236. package/dist/src/core/shaders/webgl/Shadow.js.map +0 -1
  237. package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +0 -59
  238. package/dist/src/core/text-rendering/CanvasFontHandler.js +0 -221
  239. package/dist/src/core/text-rendering/CanvasFontHandler.js.map +0 -1
  240. package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +0 -17
  241. package/dist/src/core/text-rendering/CanvasTextRenderer.js +0 -157
  242. package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +0 -1
  243. package/dist/src/core/text-rendering/SdfFontHandler.d.ts +0 -182
  244. package/dist/src/core/text-rendering/SdfFontHandler.js +0 -388
  245. package/dist/src/core/text-rendering/SdfFontHandler.js.map +0 -1
  246. package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +0 -17
  247. package/dist/src/core/text-rendering/SdfTextRenderer.js +0 -311
  248. package/dist/src/core/text-rendering/SdfTextRenderer.js.map +0 -1
  249. package/dist/src/core/text-rendering/TextLayoutEngine.d.ts +0 -19
  250. package/dist/src/core/text-rendering/TextLayoutEngine.js +0 -324
  251. package/dist/src/core/text-rendering/TextLayoutEngine.js.map +0 -1
  252. package/dist/src/core/text-rendering/TextRenderer.d.ts +0 -368
  253. package/dist/src/core/text-rendering/TextRenderer.js +0 -20
  254. package/dist/src/core/text-rendering/TextRenderer.js.map +0 -1
  255. package/dist/src/core/text-rendering/Utils.d.ts +0 -30
  256. package/dist/src/core/text-rendering/Utils.js +0 -84
  257. package/dist/src/core/text-rendering/Utils.js.map +0 -1
@@ -162,7 +162,7 @@ export class RadialGradientEffect extends ShaderEffect {
162
162
  static override onColorize = (props: RadialGradientEffectProps) => {
163
163
  const colors = props.colors!.length || 1;
164
164
  return `
165
- vec2 point = v_textureCoordinate.xy * u_dimensions;
165
+ vec2 point = v_nodeCoordinate.xy * u_dimensions;
166
166
  vec2 projection = vec2(pivot.x * u_dimensions.x, pivot.y * u_dimensions.y);
167
167
 
168
168
  float dist = length((point - projection) / vec2(width, height));
@@ -162,7 +162,7 @@ export class RadialProgressEffect extends ShaderEffect {
162
162
 
163
163
  float endAngle = range * progress - 0.0005;
164
164
 
165
- vec2 uv = v_textureCoordinate.xy * u_dimensions.xy - u_dimensions * 0.5;
165
+ vec2 uv = v_nodeCoordinate.xy * u_dimensions.xy - u_dimensions * 0.5;
166
166
 
167
167
  uv = $rotateUV(uv, -(offset));
168
168
  float linewidth = width * u_pixelRatio;
@@ -97,11 +97,11 @@ export class RadiusEffect extends ShaderEffect {
97
97
 
98
98
  static override onShaderMask = `
99
99
  vec2 halfDimensions = u_dimensions * 0.5;
100
- float r = radius[0] * step(v_textureCoordinate.x, 0.5) * step(v_textureCoordinate.y, 0.5);
101
- r = r + radius[1] * step(0.5, v_textureCoordinate.x) * step(v_textureCoordinate.y, 0.5);
102
- r = r + radius[2] * step(0.5, v_textureCoordinate.x) * step(0.5, v_textureCoordinate.y);
103
- r = r + radius[3] * step(v_textureCoordinate.x, 0.5) * step(0.5, v_textureCoordinate.y);
104
- return $boxDist(v_textureCoordinate.xy * u_dimensions - halfDimensions, halfDimensions, r);
100
+ float r = radius[0] * step(v_nodeCoordinate.x, 0.5) * step(v_nodeCoordinate.y, 0.5);
101
+ r = r + radius[1] * step(0.5, v_nodeCoordinate.x) * step(v_nodeCoordinate.y, 0.5);
102
+ r = r + radius[2] * step(0.5, v_nodeCoordinate.x) * step(0.5, v_nodeCoordinate.y);
103
+ r = r + radius[3] * step(v_nodeCoordinate.x, 0.5) * step(0.5, v_nodeCoordinate.y);
104
+ return $boxDist(v_nodeCoordinate.xy * u_dimensions - halfDimensions, halfDimensions, r);
105
105
  `;
106
106
 
107
107
  static override onEffectMask = `
@@ -45,7 +45,7 @@ export type TextureLoadedEventHandler = (
45
45
  /**
46
46
  * Represents compressed texture data.
47
47
  */
48
- interface CompressedData {
48
+ export interface CompressedData {
49
49
  /**
50
50
  * GLenum spcifying compression format
51
51
  */
@@ -54,12 +54,12 @@ interface CompressedData {
54
54
  /**
55
55
  * All mipmap levels
56
56
  */
57
- mipmaps?: ArrayBuffer[];
57
+ mipmaps: ArrayBuffer[];
58
58
 
59
59
  /**
60
- * Supported container types ('pvr' or 'ktx').
60
+ * Supported container types ('pvr', 'ktx', 'astc').
61
61
  */
62
- type: 'pvr' | 'ktx';
62
+ type: 'pvr' | 'ktx' | 'astc';
63
63
 
64
64
  /**
65
65
  * The width of the compressed texture in pixels. Defaults to 0.
@@ -72,6 +72,15 @@ interface CompressedData {
72
72
  * The height of the compressed texture in pixels.
73
73
  **/
74
74
  height: number;
75
+
76
+ /**
77
+ * block info
78
+ */
79
+ blockInfo: {
80
+ width: number;
81
+ height: number;
82
+ bytes: number;
83
+ };
75
84
  }
76
85
 
77
86
  /**
@@ -298,7 +307,6 @@ export abstract class Texture extends EventEmitter {
298
307
  // We've exceeded the max retry count, do not attempt to load again
299
308
  return;
300
309
  }
301
-
302
310
  this.txManager.loadTexture(this);
303
311
  }
304
312
 
@@ -386,7 +394,6 @@ export abstract class Texture extends EventEmitter {
386
394
  if (this.state === state) {
387
395
  return;
388
396
  }
389
-
390
397
  let payload: Error | Dimensions | null = null;
391
398
  if (state === 'loaded') {
392
399
  // Clear any previous error when successfully loading
@@ -52,14 +52,16 @@ const stylePropertyMap: {
52
52
  },
53
53
  width: (w) => {
54
54
  if (w === 0) {
55
- return null;
55
+ // Set to 1px instead of 0px so visibility checks (e.g. Playwright) keep treating the node as visible
56
+ return { prop: 'width', value: '1px' };
56
57
  }
57
58
 
58
59
  return { prop: 'width', value: `${w}px` };
59
60
  },
60
61
  height: (h) => {
61
62
  if (h === 0) {
62
- return null;
63
+ // Set to 1px instead of 0px so visibility checks (e.g. Playwright) keep treating the node as visible
64
+ return { prop: 'height', value: '1px' };
63
65
  }
64
66
 
65
67
  return { prop: 'height', value: `${h}px` };
@@ -179,6 +181,7 @@ const knownProperties = new Set<string>([
179
181
  'src',
180
182
  'parent',
181
183
  'data',
184
+ 'text',
182
185
  'texture',
183
186
  ]);
184
187
 
@@ -192,7 +195,7 @@ export class Inspector {
192
195
  private textureMetrics = new Map<Texture, TextureMetrics>();
193
196
 
194
197
  constructor(canvas: HTMLCanvasElement, settings: RendererMainSettings) {
195
- if (isProductionEnvironment()) return;
198
+ if (isProductionEnvironment) return;
196
199
 
197
200
  if (!settings) {
198
201
  throw new Error('settings is required');
@@ -575,9 +578,10 @@ export class Inspector {
575
578
  if (property === 'text') {
576
579
  div.innerHTML = String(value);
577
580
 
578
- // hide text because we can't render SDF fonts
579
- // it would look weird and obstruct the WebGL rendering
580
- div.style.visibility = 'hidden';
581
+ // Keep DOM text invisible without breaking visibility checks by using color:transparent instead of opacity:0
582
+ div.style.color = 'transparent';
583
+ div.style.pointerEvents = 'none';
584
+ div.style.userSelect = 'none';
581
585
  return;
582
586
  }
583
587
 
@@ -515,7 +515,7 @@ export class RendererMain extends EventEmitter {
515
515
  targetEl.appendChild(canvas);
516
516
 
517
517
  // Initialize inspector (if enabled)
518
- if (inspector && !isProductionEnvironment()) {
518
+ if (inspector && !isProductionEnvironment) {
519
519
  this.inspector = new inspector(canvas, resolvedSettings);
520
520
  }
521
521
  }
package/src/utils.ts CHANGED
@@ -80,7 +80,7 @@ export function assertTruthy(
80
80
  condition: unknown,
81
81
  message?: string,
82
82
  ): asserts condition {
83
- if (isProductionEnvironment() === true) return;
83
+ if (isProductionEnvironment) return;
84
84
  if (!condition) {
85
85
  throw new Error(message || 'Assertion failed');
86
86
  }
@@ -235,9 +235,9 @@ export function getImageAspectRatio(width: number, height: number): number {
235
235
  *
236
236
  * @returns
237
237
  */
238
- export function isProductionEnvironment(): boolean {
239
- return import.meta.env && import.meta.env.PROD;
240
- }
238
+ declare const __DEV__: boolean;
239
+ export const isProductionEnvironment =
240
+ typeof __DEV__ !== 'undefined' ? !__DEV__ : true;
241
241
 
242
242
  /**
243
243
  * Returns a new unique ID
@@ -1,10 +0,0 @@
1
- export * from '../src/core/renderers/canvas/CanvasShaderNode.js';
2
- export { Rounded } from '../src/core/shaders/canvas/Rounded.js';
3
- export { RoundedWithBorder } from '../src/core/shaders/canvas/RoundedWithBorder.js';
4
- export { RoundedWithBorderAndShadow } from '../src/core/shaders/canvas/RoundedWithBorderAndShadow.js';
5
- export { RoundedWithShadow } from '../src/core/shaders/canvas/RoundedWithShadow.js';
6
- export { Border } from '../src/core/shaders/canvas/Border.js';
7
- export { Shadow } from '../src/core/shaders/canvas/Shadow.js';
8
- export { HolePunch } from '../src/core/shaders/canvas/HolePunch.js';
9
- export { LinearGradient } from '../src/core/shaders/canvas/LinearGradient.js';
10
- export { RadialGradient } from '../src/core/shaders/canvas/RadialGradient.js';
@@ -1,27 +0,0 @@
1
- /*
2
- * Copyright 2023 Comcast Cable Communications Management, LLC
3
- * Licensed under the Apache License, Version 2.0 (the "License");
4
- * you may not use this file except in compliance with the License.
5
- * You may obtain a copy of the License at
6
- *
7
- * http://www.apache.org/licenses/LICENSE-2.0
8
- *
9
- * Unless required by applicable law or agreed to in writing, software
10
- * distributed under the License is distributed on an "AS IS" BASIS,
11
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- * See the License for the specific language governing permissions and
13
- * limitations under the License.
14
- *
15
- * SPDX-License-Identifier: Apache-2.0
16
- */
17
- export * from '../src/core/renderers/canvas/CanvasShaderNode.js';
18
- export { Rounded } from '../src/core/shaders/canvas/Rounded.js';
19
- export { RoundedWithBorder } from '../src/core/shaders/canvas/RoundedWithBorder.js';
20
- export { RoundedWithBorderAndShadow } from '../src/core/shaders/canvas/RoundedWithBorderAndShadow.js';
21
- export { RoundedWithShadow } from '../src/core/shaders/canvas/RoundedWithShadow.js';
22
- export { Border } from '../src/core/shaders/canvas/Border.js';
23
- export { Shadow } from '../src/core/shaders/canvas/Shadow.js';
24
- export { HolePunch } from '../src/core/shaders/canvas/HolePunch.js';
25
- export { LinearGradient } from '../src/core/shaders/canvas/LinearGradient.js';
26
- export { RadialGradient } from '../src/core/shaders/canvas/RadialGradient.js';
27
- //# sourceMappingURL=canvas-shaders.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"canvas-shaders.js","sourceRoot":"","sources":["../../exports/canvas-shaders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,cAAc,kDAAkD,CAAC;AAEjE,OAAO,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iDAAiD,CAAC;AACpF,OAAO,EAAE,0BAA0B,EAAE,MAAM,0DAA0D,CAAC;AACtG,OAAO,EAAE,iBAAiB,EAAE,MAAM,iDAAiD,CAAC;AACpF,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAC"}
@@ -1,11 +0,0 @@
1
- export * from '../src/core/renderers/webgl/WebGlShaderNode.js';
2
- export { Rounded } from '../src/core/shaders/webgl/Rounded.js';
3
- export { RoundedWithBorder } from '../src/core/shaders/webgl/RoundedWithBorder.js';
4
- export { RoundedWithBorderAndShadow } from '../src/core/shaders/webgl/RoundedWithBorderAndShadow.js';
5
- export { RoundedWithShadow } from '../src/core/shaders/webgl/RoundedWithShadow.js';
6
- export { Border } from '../src/core/shaders/webgl/Border.js';
7
- export { Shadow } from '../src/core/shaders/webgl/Shadow.js';
8
- export { HolePunch } from '../src/core/shaders/webgl/HolePunch.js';
9
- export { LinearGradient } from '../src/core/shaders/webgl/LinearGradient.js';
10
- export { RadialGradient } from '../src/core/shaders/webgl/RadialGradient.js';
11
- export { Default } from '../src/core/shaders/webgl/Default.js';
@@ -1,28 +0,0 @@
1
- /*
2
- * Copyright 2023 Comcast Cable Communications Management, LLC
3
- * Licensed under the Apache License, Version 2.0 (the "License");
4
- * you may not use this file except in compliance with the License.
5
- * You may obtain a copy of the License at
6
- *
7
- * http://www.apache.org/licenses/LICENSE-2.0
8
- *
9
- * Unless required by applicable law or agreed to in writing, software
10
- * distributed under the License is distributed on an "AS IS" BASIS,
11
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- * See the License for the specific language governing permissions and
13
- * limitations under the License.
14
- *
15
- * SPDX-License-Identifier: Apache-2.0
16
- */
17
- export * from '../src/core/renderers/webgl/WebGlShaderNode.js';
18
- export { Rounded } from '../src/core/shaders/webgl/Rounded.js';
19
- export { RoundedWithBorder } from '../src/core/shaders/webgl/RoundedWithBorder.js';
20
- export { RoundedWithBorderAndShadow } from '../src/core/shaders/webgl/RoundedWithBorderAndShadow.js';
21
- export { RoundedWithShadow } from '../src/core/shaders/webgl/RoundedWithShadow.js';
22
- export { Border } from '../src/core/shaders/webgl/Border.js';
23
- export { Shadow } from '../src/core/shaders/webgl/Shadow.js';
24
- export { HolePunch } from '../src/core/shaders/webgl/HolePunch.js';
25
- export { LinearGradient } from '../src/core/shaders/webgl/LinearGradient.js';
26
- export { RadialGradient } from '../src/core/shaders/webgl/RadialGradient.js';
27
- export { Default } from '../src/core/shaders/webgl/Default.js';
28
- //# sourceMappingURL=webgl-shaders.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webgl-shaders.js","sourceRoot":"","sources":["../../exports/webgl-shaders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,cAAc,gDAAgD,CAAC;AAE/D,OAAO,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AACnF,OAAO,EAAE,0BAA0B,EAAE,MAAM,yDAAyD,CAAC;AACrG,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AACnF,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC"}
@@ -1 +0,0 @@
1
- export declare function normalizeCanvasColor(color: number, isRGBA?: boolean): string;
@@ -1,19 +0,0 @@
1
- import { parseToAbgrString, parseToRgbaString } from './colorParser.js';
2
- const parsedArgbColors = new Map();
3
- const parsedRgbaColors = new Map();
4
- export function normalizeCanvasColor(color, isRGBA = false) {
5
- let targetCache = isRGBA === true ? parsedRgbaColors : parsedArgbColors;
6
- let out = targetCache.get(color);
7
- if (out !== undefined) {
8
- return out;
9
- }
10
- if (isRGBA === true) {
11
- out = parseToRgbaString(color);
12
- }
13
- else {
14
- out = parseToAbgrString(color);
15
- }
16
- targetCache.set(color, out);
17
- return out;
18
- }
19
- //# sourceMappingURL=colorCache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"colorCache.js","sourceRoot":"","sources":["../../../../src/core/lib/colorCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAExE,MAAM,gBAAgB,GAAwB,IAAI,GAAG,EAAE,CAAC;AACxD,MAAM,gBAAgB,GAAwB,IAAI,GAAG,EAAE,CAAC;AAExD,MAAM,UAAU,oBAAoB,CAAC,KAAa,EAAE,SAAkB,KAAK;IACzE,IAAI,WAAW,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC;IACxE,IAAI,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,GAAG,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;SAAM,CAAC;QACN,GAAG,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IACD,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC5B,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1,21 +0,0 @@
1
- export interface IParsedColor {
2
- isWhite: boolean;
3
- a: number;
4
- r: number;
5
- g: number;
6
- b: number;
7
- }
8
- /**
9
- * Extract color components
10
- */
11
- export declare function parseColor(abgr: number): IParsedColor;
12
- export declare function parseToAbgrString(abgr: number): string;
13
- export declare function parseToRgbaString(rgba: number): string;
14
- /**
15
- * Extract color components
16
- */
17
- export declare function parseColorRgba(rgba: number): IParsedColor;
18
- /**
19
- * Format a parsed color into a rgba CSS color
20
- */
21
- export declare function formatRgba({ a, r, g, b }: IParsedColor): string;
@@ -1,72 +0,0 @@
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 Cable Communications Management, LLC.
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
- const WHITE = {
20
- isWhite: true,
21
- a: 1,
22
- r: 0xff,
23
- g: 0xff,
24
- b: 0xff,
25
- };
26
- /**
27
- * Extract color components
28
- */
29
- export function parseColor(abgr) {
30
- if (abgr === 0xffffffff) {
31
- return WHITE;
32
- }
33
- const a = ((abgr >>> 24) & 0xff) / 255;
34
- const b = (abgr >>> 16) & 0xff & 0xff;
35
- const g = (abgr >>> 8) & 0xff & 0xff;
36
- const r = abgr & 0xff & 0xff;
37
- return { isWhite: false, a, r, g, b };
38
- }
39
- export function parseToAbgrString(abgr) {
40
- const a = ((abgr >>> 24) & 0xff) / 255;
41
- const b = (abgr >>> 16) & 0xff & 0xff;
42
- const g = (abgr >>> 8) & 0xff & 0xff;
43
- const r = abgr & 0xff & 0xff;
44
- return `rgba(${r},${g},${b},${a})`;
45
- }
46
- export function parseToRgbaString(rgba) {
47
- const r = (rgba >>> 24) & 0xff;
48
- const g = (rgba >>> 16) & 0xff & 0xff;
49
- const b = (rgba >>> 8) & 0xff & 0xff;
50
- const a = (rgba & 0xff & 0xff) / 255;
51
- return `rgba(${r},${g},${b},${a})`;
52
- }
53
- /**
54
- * Extract color components
55
- */
56
- export function parseColorRgba(rgba) {
57
- if (rgba === 0xffffffff) {
58
- return WHITE;
59
- }
60
- const r = (rgba >>> 24) & 0xff;
61
- const g = (rgba >>> 16) & 0xff & 0xff;
62
- const b = (rgba >>> 8) & 0xff & 0xff;
63
- const a = (rgba & 0xff & 0xff) / 255;
64
- return { isWhite: false, r, g, b, a };
65
- }
66
- /**
67
- * Format a parsed color into a rgba CSS color
68
- */
69
- export function formatRgba({ a, r, g, b }) {
70
- return `rgba(${r},${g},${b},${a})`;
71
- }
72
- //# sourceMappingURL=colorParser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"colorParser.js","sourceRoot":"","sources":["../../../../src/core/lib/colorParser.ts"],"names":[],"mappings":"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"}
@@ -1,37 +0,0 @@
1
- import { type Stage } from '../Stage.js';
2
- export declare abstract class Platform {
3
- /**
4
- * Creates a new canvas element.
5
- * @returns The created HTMLCanvasElement.
6
- */
7
- abstract createCanvas(): HTMLCanvasElement;
8
- /**
9
- * Get a DOM element by ID
10
- * @returns The DOM element (or null)
11
- */
12
- abstract getElementById(id: string): HTMLElement | null;
13
- /**
14
- * Starts the main rendering loop, calling the provided update function every frame.
15
- * @param Stage - The stage for rendering
16
- */
17
- abstract startLoop(stage: Stage): void;
18
- /**
19
- * Abstracted createImageBitmap method.
20
- * @param blob - The image source to create the ImageBitmap from.
21
- * @param sxOrOptions - The source rectangle x coordinate or ImageBitmapOptions.
22
- * @param sy - The source rectangle y coordinate.
23
- * @param sw - The source rectangle width.
24
- * @param sh - The source rectangle height.
25
- * @param options - The ImageBitmapOptions.
26
- * @returns A promise that resolves with the created ImageBitmap.
27
- */
28
- abstract createImageBitmap(blob: ImageBitmapSource): Promise<ImageBitmap>;
29
- abstract createImageBitmap(blob: ImageBitmapSource, options: ImageBitmapOptions): Promise<ImageBitmap>;
30
- abstract createImageBitmap(blob: ImageBitmapSource, sx: number, sy: number, sw: number, sh: number): Promise<ImageBitmap>;
31
- abstract createImageBitmap(blob: ImageBitmapSource, sx: number, sy: number, sw: number, sh: number, options: ImageBitmapOptions): Promise<ImageBitmap>;
32
- /**
33
- * Retrieves the current timestamp.
34
- * @returns The current timestamp.
35
- */
36
- abstract getTimeStamp(): number;
37
- }
@@ -1,22 +0,0 @@
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 Cable Communications Management, LLC.
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 {} from '../Stage.js';
20
- export class Platform {
21
- }
22
- //# sourceMappingURL=Platform.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Platform.js","sourceRoot":"","sources":["../../../../src/core/platforms/Platform.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAc,MAAM,aAAa,CAAC;AAEzC,MAAM,OAAgB,QAAQ;CAuD7B"}
@@ -1,9 +0,0 @@
1
- import { Platform } from '../Platform.js';
2
- import type { Stage } from '../../Stage.js';
3
- export declare class WebPlatform extends Platform {
4
- createCanvas(): HTMLCanvasElement;
5
- getElementById(id: string): HTMLElement | null;
6
- startLoop(stage: Stage): void;
7
- createImageBitmap(blob: ImageBitmapSource, sxOrOptions?: number | ImageBitmapOptions, sy?: number, sw?: number, sh?: number, options?: ImageBitmapOptions): Promise<ImageBitmap>;
8
- getTimeStamp(): number;
9
- }
@@ -1,84 +0,0 @@
1
- import { Platform } from '../Platform.js';
2
- export class WebPlatform extends Platform {
3
- ////////////////////////
4
- // Platform-specific methods
5
- ////////////////////////
6
- createCanvas() {
7
- const canvas = document.createElement('canvas');
8
- return canvas;
9
- }
10
- getElementById(id) {
11
- return document.getElementById(id);
12
- }
13
- ////////////////////////
14
- // Update loop
15
- ////////////////////////
16
- startLoop(stage) {
17
- let isIdle = false;
18
- let lastFrameTime = 0;
19
- const runLoop = (currentTime = 0) => {
20
- const targetFrameTime = stage.targetFrameTime;
21
- // Check if we should throttle this frame
22
- if (targetFrameTime > 0 &&
23
- currentTime - lastFrameTime < targetFrameTime) {
24
- // Too early for next frame, schedule with setTimeout for precise timing
25
- const delay = targetFrameTime - (currentTime - lastFrameTime);
26
- setTimeout(() => requestAnimationFrame(runLoop), delay);
27
- return;
28
- }
29
- stage.updateFrameTime();
30
- stage.updateAnimations();
31
- if (!stage.hasSceneUpdates()) {
32
- // We still need to calculate the fps else it looks like the app is frozen
33
- stage.calculateFps();
34
- if (targetFrameTime > 0) {
35
- // Use setTimeout for throttled idle frames
36
- setTimeout(() => requestAnimationFrame(runLoop), Math.max(targetFrameTime, 16.666666666666668));
37
- }
38
- else {
39
- // Use standard idle timeout when not throttling
40
- setTimeout(() => requestAnimationFrame(runLoop), 16.666666666666668);
41
- }
42
- if (!isIdle) {
43
- stage.shManager.cleanup();
44
- stage.eventBus.emit('idle');
45
- isIdle = true;
46
- }
47
- if (stage.txMemManager.checkCleanup() === true) {
48
- stage.txMemManager.cleanup(false);
49
- }
50
- stage.flushFrameEvents();
51
- return;
52
- }
53
- isIdle = false;
54
- stage.drawFrame();
55
- stage.flushFrameEvents();
56
- // Schedule next frame
57
- if (targetFrameTime > 0) {
58
- // Use setTimeout + rAF combination for precise FPS control
59
- const nextFrameDelay = Math.max(0, targetFrameTime - (performance.now() - currentTime));
60
- setTimeout(() => requestAnimationFrame(runLoop), nextFrameDelay);
61
- }
62
- else {
63
- // Use standard rAF when not throttling
64
- requestAnimationFrame(runLoop);
65
- }
66
- };
67
- requestAnimationFrame(runLoop);
68
- }
69
- ////////////////////////
70
- // ImageBitmap
71
- ////////////////////////
72
- createImageBitmap(blob, sxOrOptions, sy, sw, sh, options) {
73
- if (typeof sxOrOptions === 'number') {
74
- return createImageBitmap(blob, sxOrOptions, sy ?? 0, sw ?? 0, sh ?? 0, options);
75
- }
76
- else {
77
- return createImageBitmap(blob, sxOrOptions);
78
- }
79
- }
80
- getTimeStamp() {
81
- return performance ? performance.now() : Date.now();
82
- }
83
- }
84
- //# sourceMappingURL=WebPlatform.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WebPlatform.js","sourceRoot":"","sources":["../../../../../src/core/platforms/web/WebPlatform.ts"],"names":[],"mappings":"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"}
@@ -1,59 +0,0 @@
1
- import { type CoreNode } from '../CoreNode.js';
2
- import type { Stage } from '../Stage.js';
3
- export interface AdvShaderProp<T = any, Props = Record<string, unknown>> {
4
- /**
5
- * default value
6
- */
7
- default: T;
8
- resolve?: (this: AdvShaderProp<T, Props>, value: T, props: Props) => T;
9
- transform?: (start: T, end: T, progress: number) => T;
10
- }
11
- export type AdvancedShaderProp<T = any, Props = Record<string, unknown>> = (AdvShaderProp<T, Props> & {
12
- set: (value: T, props: Props) => void;
13
- get: (props: Props) => T;
14
- }) | (AdvShaderProp<T, Props> & {
15
- set?: never;
16
- get?: never;
17
- });
18
- export type ShaderProp<T, Props> = T | AdvancedShaderProp<T, Props>;
19
- export type ShaderProps<Props> = {
20
- [K in keyof Props]: ShaderProp<Props[K], Props>;
21
- };
22
- export declare function isAdvancedShaderProp(obj: any): obj is AdvancedShaderProp;
23
- export declare function resolveShaderProps(props: Record<string, unknown>, propsConfig: ShaderProps<Record<string, unknown>>): void;
24
- /**
25
- * CoreShaderType is a template for ShaderTypes the renderer.
26
- * You could view a ShaderType as a configuration object that contains methods,
27
- * and values that you can use to alter the way a node is drawn by the Renderer.
28
- */
29
- export interface CoreShaderType<Props extends object = any> {
30
- /**
31
- * Values you use to draw the Shader
32
- */
33
- props?: ShaderProps<Props>;
34
- /**
35
- * used for making a cache key to check for reusability, currently only used for webgl ShaderTypes but might be needed for other types of renderer
36
- */
37
- getCacheMarkers?: (props: Props) => string;
38
- }
39
- /**
40
- * CoreShaderNode is a base class that manages the shader prop values.
41
- * When a prop is being updated the CoreShaderNode will notify either the associated CoreNode,
42
- * or the Stage that there has been a change and a new render of the scene.
43
- */
44
- export declare class CoreShaderNode<Props extends object = Record<string, unknown>> {
45
- readonly shaderKey: string;
46
- readonly stage: Stage;
47
- readonly shaderType: CoreShaderType<Props>;
48
- protected propsConfig: ShaderProps<Props> | undefined;
49
- readonly resolvedProps: Props | undefined;
50
- protected definedProps: Props | undefined;
51
- protected node: CoreNode | null;
52
- update: (() => void) | undefined;
53
- constructor(shaderKey: string, type: CoreShaderType<Props>, stage: Stage, props?: Props);
54
- private defineProps;
55
- attachNode(node: CoreNode): void;
56
- createValueKey(): string;
57
- get props(): Props | undefined;
58
- set props(props: Props | undefined);
59
- }