@lightningjs/renderer 2.7.1 → 2.8.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 (200) hide show
  1. package/dist/exports/core-api.d.ts +74 -0
  2. package/dist/exports/core-api.js +96 -0
  3. package/dist/exports/core-api.js.map +1 -0
  4. package/dist/exports/main-api.d.ts +30 -0
  5. package/dist/exports/main-api.js +45 -0
  6. package/dist/exports/main-api.js.map +1 -0
  7. package/dist/src/core/CoreExtension.d.ts +12 -0
  8. package/dist/src/core/CoreExtension.js +29 -0
  9. package/dist/src/core/CoreExtension.js.map +1 -0
  10. package/dist/src/core/CoreNode.d.ts +2 -0
  11. package/dist/src/core/CoreNode.js +27 -8
  12. package/dist/src/core/CoreNode.js.map +1 -1
  13. package/dist/src/core/CoreShaderManager.js.map +1 -1
  14. package/dist/src/core/CoreStuff.d.ts +1 -0
  15. package/dist/src/core/CoreStuff.js +138 -0
  16. package/dist/src/core/CoreStuff.js.map +1 -0
  17. package/dist/src/core/LngNode.d.ts +736 -0
  18. package/dist/src/core/LngNode.js +1174 -0
  19. package/dist/src/core/LngNode.js.map +1 -0
  20. package/dist/src/core/Matrix2DContext.d.ts +15 -0
  21. package/dist/src/core/Matrix2DContext.js +45 -0
  22. package/dist/src/core/Matrix2DContext.js.map +1 -0
  23. package/dist/src/core/ShaderNode.d.ts +10 -0
  24. package/dist/src/core/ShaderNode.js +30 -0
  25. package/dist/src/core/ShaderNode.js.map +1 -0
  26. package/dist/src/core/Stage.d.ts +1 -0
  27. package/dist/src/core/Stage.js +4 -0
  28. package/dist/src/core/Stage.js.map +1 -1
  29. package/dist/src/core/TextNode.d.ts +103 -0
  30. package/dist/src/core/TextNode.js +331 -0
  31. package/dist/src/core/TextNode.js.map +1 -0
  32. package/dist/src/core/lib/Coords.d.ts +14 -0
  33. package/dist/src/core/lib/Coords.js +55 -0
  34. package/dist/src/core/lib/Coords.js.map +1 -0
  35. package/dist/src/core/lib/glm/common.d.ts +162 -0
  36. package/dist/src/core/lib/glm/common.js +81 -0
  37. package/dist/src/core/lib/glm/common.js.map +1 -0
  38. package/dist/src/core/lib/glm/index.d.ts +11 -0
  39. package/dist/src/core/lib/glm/index.js +30 -0
  40. package/dist/src/core/lib/glm/index.js.map +1 -0
  41. package/dist/src/core/lib/glm/mat2.d.ts +219 -0
  42. package/dist/src/core/lib/glm/mat2.js +396 -0
  43. package/dist/src/core/lib/glm/mat2.js.map +1 -0
  44. package/dist/src/core/lib/glm/mat2d.d.ts +237 -0
  45. package/dist/src/core/lib/glm/mat2d.js +442 -0
  46. package/dist/src/core/lib/glm/mat2d.js.map +1 -0
  47. package/dist/src/core/lib/glm/mat3.d.ts +283 -0
  48. package/dist/src/core/lib/glm/mat3.js +680 -0
  49. package/dist/src/core/lib/glm/mat3.js.map +1 -0
  50. package/dist/src/core/lib/glm/mat4.d.ts +550 -0
  51. package/dist/src/core/lib/glm/mat4.js +1802 -0
  52. package/dist/src/core/lib/glm/mat4.js.map +1 -0
  53. package/dist/src/core/lib/glm/quat.d.ts +363 -0
  54. package/dist/src/core/lib/glm/quat.js +693 -0
  55. package/dist/src/core/lib/glm/quat.js.map +1 -0
  56. package/dist/src/core/lib/glm/quat2.d.ts +356 -0
  57. package/dist/src/core/lib/glm/quat2.js +754 -0
  58. package/dist/src/core/lib/glm/quat2.js.map +1 -0
  59. package/dist/src/core/lib/glm/vec2.d.ts +365 -0
  60. package/dist/src/core/lib/glm/vec2.js +569 -0
  61. package/dist/src/core/lib/glm/vec2.js.map +1 -0
  62. package/dist/src/core/lib/glm/vec3.d.ts +406 -0
  63. package/dist/src/core/lib/glm/vec3.js +720 -0
  64. package/dist/src/core/lib/glm/vec3.js.map +1 -0
  65. package/dist/src/core/lib/glm/vec4.d.ts +330 -0
  66. package/dist/src/core/lib/glm/vec4.js +608 -0
  67. package/dist/src/core/lib/glm/vec4.js.map +1 -0
  68. package/dist/src/core/renderers/CoreRenderer.d.ts +1 -0
  69. package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
  70. package/dist/src/core/renderers/CoreShaderManager.d.ts +19 -0
  71. package/dist/src/core/renderers/CoreShaderManager.js +33 -0
  72. package/dist/src/core/renderers/CoreShaderManager.js.map +1 -0
  73. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +6 -0
  74. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +8 -0
  75. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +1 -1
  76. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +8 -1
  77. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +25 -4
  78. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
  79. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.d.ts +27 -0
  80. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js +82 -0
  81. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js.map +1 -0
  82. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.d.ts +11 -0
  83. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js +34 -0
  84. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js.map +1 -0
  85. package/dist/src/core/renderers/webgl/internal/RendererUtils.d.ts +4 -0
  86. package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +1 -0
  87. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +1 -0
  88. package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -1
  89. package/dist/src/core/scene/Scene.d.ts +59 -0
  90. package/dist/src/core/scene/Scene.js +106 -0
  91. package/dist/src/core/scene/Scene.js.map +1 -0
  92. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +8 -1
  93. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  94. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +20 -0
  95. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +55 -0
  96. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +1 -0
  97. package/dist/src/main-api/ICoreDriver.d.ts +27 -0
  98. package/dist/src/main-api/ICoreDriver.js +20 -0
  99. package/dist/src/main-api/ICoreDriver.js.map +1 -0
  100. package/dist/src/main-api/IRenderDriver.d.ts +20 -0
  101. package/dist/src/main-api/IRenderDriver.js +20 -0
  102. package/dist/src/main-api/IRenderDriver.js.map +1 -0
  103. package/dist/src/main-api/IShaderController.d.ts +14 -0
  104. package/dist/src/main-api/IShaderController.js +30 -0
  105. package/dist/src/main-api/IShaderController.js.map +1 -0
  106. package/dist/src/main-api/IShaderNode.d.ts +17 -0
  107. package/dist/src/main-api/IShaderNode.js +19 -0
  108. package/dist/src/main-api/IShaderNode.js.map +1 -0
  109. package/dist/src/main-api/Renderer.d.ts +6 -0
  110. package/dist/src/main-api/Renderer.js +8 -0
  111. package/dist/src/main-api/Renderer.js.map +1 -1
  112. package/dist/src/main-api/RendererMain.d.ts +375 -0
  113. package/dist/src/main-api/RendererMain.js +365 -0
  114. package/dist/src/main-api/RendererMain.js.map +1 -0
  115. package/dist/src/main-api/ShaderController.js.map +1 -1
  116. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.d.ts +9 -0
  117. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js +38 -0
  118. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js.map +1 -0
  119. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.d.ts +56 -0
  120. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js +101 -0
  121. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +1 -0
  122. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.d.ts +32 -0
  123. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js +28 -0
  124. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js.map +1 -0
  125. package/dist/src/render-drivers/main/MainCoreDriver.d.ts +24 -0
  126. package/dist/src/render-drivers/main/MainCoreDriver.js +118 -0
  127. package/dist/src/render-drivers/main/MainCoreDriver.js.map +1 -0
  128. package/dist/src/render-drivers/main/MainOnlyNode.d.ts +99 -0
  129. package/dist/src/render-drivers/main/MainOnlyNode.js +396 -0
  130. package/dist/src/render-drivers/main/MainOnlyNode.js.map +1 -0
  131. package/dist/src/render-drivers/main/MainOnlyShaderController.d.ts +6 -0
  132. package/dist/src/render-drivers/main/MainOnlyShaderController.js +15 -0
  133. package/dist/src/render-drivers/main/MainOnlyShaderController.js.map +1 -0
  134. package/dist/src/render-drivers/main/MainOnlyShaderNode.d.ts +7 -0
  135. package/dist/src/render-drivers/main/MainOnlyShaderNode.js +34 -0
  136. package/dist/src/render-drivers/main/MainOnlyShaderNode.js.map +1 -0
  137. package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +47 -0
  138. package/dist/src/render-drivers/main/MainOnlyTextNode.js +205 -0
  139. package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +1 -0
  140. package/dist/src/render-drivers/main/MainRenderDriver.d.ts +17 -0
  141. package/dist/src/render-drivers/main/MainRenderDriver.js +88 -0
  142. package/dist/src/render-drivers/main/MainRenderDriver.js.map +1 -0
  143. package/dist/src/render-drivers/threadx/NodeStruct.d.ts +90 -0
  144. package/dist/src/render-drivers/threadx/NodeStruct.js +281 -0
  145. package/dist/src/render-drivers/threadx/NodeStruct.js.map +1 -0
  146. package/dist/src/render-drivers/threadx/SharedNode.d.ts +39 -0
  147. package/dist/src/render-drivers/threadx/SharedNode.js +60 -0
  148. package/dist/src/render-drivers/threadx/SharedNode.js.map +1 -0
  149. package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +44 -0
  150. package/dist/src/render-drivers/threadx/TextNodeStruct.js +201 -0
  151. package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +1 -0
  152. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +28 -0
  153. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +234 -0
  154. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +1 -0
  155. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +20 -0
  156. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +84 -0
  157. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +1 -0
  158. package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +44 -0
  159. package/dist/src/render-drivers/threadx/ThreadXMainNode.js +154 -0
  160. package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +1 -0
  161. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.d.ts +6 -0
  162. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js +16 -0
  163. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js.map +1 -0
  164. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.d.ts +7 -0
  165. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js +15 -0
  166. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js.map +1 -0
  167. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +28 -0
  168. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +55 -0
  169. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +1 -0
  170. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.d.ts +21 -0
  171. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +198 -0
  172. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +1 -0
  173. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +70 -0
  174. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +32 -0
  175. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +1 -0
  176. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +19 -0
  177. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +177 -0
  178. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +1 -0
  179. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +27 -0
  180. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +108 -0
  181. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +1 -0
  182. package/dist/src/render-drivers/threadx/worker/renderer.d.ts +1 -0
  183. package/dist/src/render-drivers/threadx/worker/renderer.js +145 -0
  184. package/dist/src/render-drivers/threadx/worker/renderer.js.map +1 -0
  185. package/dist/src/render-drivers/utils.d.ts +12 -0
  186. package/dist/src/render-drivers/utils.js +69 -0
  187. package/dist/src/render-drivers/utils.js.map +1 -0
  188. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  189. package/package.json +2 -1
  190. package/src/core/CoreNode.ts +30 -9
  191. package/src/core/CoreShaderManager.ts +1 -1
  192. package/src/core/Stage.ts +5 -0
  193. package/src/core/renderers/CoreRenderer.ts +1 -0
  194. package/src/core/renderers/canvas/CanvasCoreRenderer.ts +9 -0
  195. package/src/core/renderers/webgl/WebGlCoreRenderer.ts +35 -5
  196. package/src/core/renderers/webgl/internal/RendererUtils.ts +5 -0
  197. package/src/core/renderers/webgl/shaders/SdfShader.ts +2 -0
  198. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +8 -1
  199. package/src/main-api/Renderer.ts +9 -0
  200. package/src/main-api/ShaderController.ts +0 -1
@@ -742,6 +742,7 @@ export class CoreNode extends EventEmitter {
742
742
  public calcZIndex = 0;
743
743
  public hasRTTupdates = false;
744
744
  public parentHasRenderTexture = false;
745
+ public rttParent: CoreNode | null = null;
745
746
 
746
747
  constructor(readonly stage: Stage, props: CoreNodeProps) {
747
748
  super();
@@ -1134,7 +1135,18 @@ export class CoreNode extends EventEmitter {
1134
1135
  continue;
1135
1136
  }
1136
1137
 
1137
- child.update(delta, this.clippingRect);
1138
+ let childClippingRect = this.clippingRect;
1139
+ if (this.rtt === true) {
1140
+ childClippingRect = {
1141
+ x: 0,
1142
+ y: 0,
1143
+ width: 0,
1144
+ height: 0,
1145
+ valid: false,
1146
+ };
1147
+ }
1148
+
1149
+ child.update(delta, childClippingRect);
1138
1150
  }
1139
1151
  }
1140
1152
 
@@ -1165,17 +1177,20 @@ export class CoreNode extends EventEmitter {
1165
1177
  this.childUpdateType = 0;
1166
1178
  }
1167
1179
 
1168
- private notifyParentRTTOfUpdate() {
1169
- if (this.parent === null) {
1170
- return;
1171
- }
1172
-
1180
+ private findParentRTTNode(): CoreNode | null {
1173
1181
  let rttNode: CoreNode | null = this.parent;
1174
- // Traverse up to find the RTT root node
1175
1182
  while (rttNode && !rttNode.rtt) {
1176
1183
  rttNode = rttNode.parent;
1177
1184
  }
1185
+ return rttNode;
1186
+ }
1187
+
1188
+ private notifyParentRTTOfUpdate() {
1189
+ if (this.parent === null) {
1190
+ return;
1191
+ }
1178
1192
 
1193
+ const rttNode = this.rttParent || this.findParentRTTNode();
1179
1194
  if (!rttNode) {
1180
1195
  return;
1181
1196
  }
@@ -1266,6 +1281,11 @@ export class CoreNode extends EventEmitter {
1266
1281
  return CoreNodeRenderState.InViewport;
1267
1282
  }
1268
1283
 
1284
+ // if we are part of a parent render texture, we're always in bounds
1285
+ if (this.parentHasRenderTexture === true) {
1286
+ return CoreNodeRenderState.InBounds;
1287
+ }
1288
+
1269
1289
  // check if we dont have dimensions, take our parent's render state
1270
1290
  if (
1271
1291
  this.parent !== null &&
@@ -1991,7 +2011,7 @@ export class CoreNode extends EventEmitter {
1991
2011
  }
1992
2012
  this.props.rtt = value;
1993
2013
 
1994
- if (value) {
2014
+ if (value === true) {
1995
2015
  this.initRenderTexture();
1996
2016
  this.markChildrenWithRTT();
1997
2017
  } else {
@@ -2000,7 +2020,7 @@ export class CoreNode extends EventEmitter {
2000
2020
 
2001
2021
  this.setUpdateType(UpdateType.RenderTexture);
2002
2022
 
2003
- if (this.parentHasRenderTexture) {
2023
+ if (this.parentHasRenderTexture === true) {
2004
2024
  this.notifyParentRTTOfUpdate();
2005
2025
  }
2006
2026
  }
@@ -2054,6 +2074,7 @@ export class CoreNode extends EventEmitter {
2054
2074
  for (const child of this.children) {
2055
2075
  // force child to update everything as the RTT inheritance has changed
2056
2076
  child.parentHasRenderTexture = false;
2077
+ child.rttParent = null;
2057
2078
  child.setUpdateType(UpdateType.All);
2058
2079
  child.clearRTTInheritance();
2059
2080
  }
@@ -198,7 +198,7 @@ export class CoreShaderManager {
198
198
 
199
199
  if (shType === 'DynamicShader') {
200
200
  return this.loadDynamicShader(
201
- props!,
201
+ props as DynamicShaderProps,
202
202
  ) as unknown as ShaderController<Type>;
203
203
  }
204
204
 
package/src/core/Stage.ts CHANGED
@@ -266,6 +266,11 @@ export class Stage {
266
266
  }
267
267
  }
268
268
 
269
+ setClearColor(color: number) {
270
+ this.renderer.updateClearColor(color);
271
+ this.renderRequested = true;
272
+ }
273
+
269
274
  updateFrameTime() {
270
275
  const newFrameTime = getTimeStamp();
271
276
  this.lastFrameTime = this.currentFrameTime;
@@ -110,4 +110,5 @@ export abstract class CoreRenderer {
110
110
  abstract renderToTexture(node: CoreNode): void;
111
111
  abstract getBufferInfo(): BufferInfo | null;
112
112
  abstract getDefShaderCtr(): BaseShaderController;
113
+ abstract updateClearColor(color: number): void;
113
114
  }
@@ -331,4 +331,13 @@ export class CanvasCoreRenderer extends CoreRenderer {
331
331
  getBufferInfo(): null {
332
332
  return null;
333
333
  }
334
+
335
+ /**
336
+ * Updates the clear color of the canvas renderer.
337
+ *
338
+ * @param color - The color to set as the clear color.
339
+ */
340
+ updateClearColor(color: number) {
341
+ this.clearColor = color ? getRgbaComponents(color) : undefined;
342
+ }
334
343
  }
@@ -32,6 +32,7 @@ import {
32
32
  type CoreWebGlExtensions,
33
33
  getWebGlParameters,
34
34
  getWebGlExtensions,
35
+ type WebGlColor,
35
36
  } from './internal/RendererUtils.js';
36
37
  import { WebGlCoreCtxTexture } from './WebGlCoreCtxTexture.js';
37
38
  import { Texture, TextureType } from '../../textures/Texture.js';
@@ -86,6 +87,11 @@ export class WebGlCoreRenderer extends CoreRenderer {
86
87
  defaultShader: WebGlCoreShader;
87
88
  quadBufferCollection: BufferCollection;
88
89
 
90
+ clearColor: WebGlColor = {
91
+ raw: 0x00000000,
92
+ normalized: [0, 0, 0, 0],
93
+ };
94
+
89
95
  /**
90
96
  * White pixel texture used by default when no texture is specified.
91
97
  */
@@ -127,10 +133,10 @@ export class WebGlCoreRenderer extends CoreRenderer {
127
133
  options.contextSpy,
128
134
  );
129
135
  const glw = (this.glw = new WebGlContextWrapper(gl));
130
-
131
- const color = getNormalizedRgbaComponents(clearColor);
132
136
  glw.viewport(0, 0, canvas.width, canvas.height);
133
- glw.clearColor(color[0]!, color[1]!, color[2]!, color[3]!);
137
+
138
+ this.updateClearColor(clearColor);
139
+
134
140
  glw.setBlend(true);
135
141
  glw.blendFunc(glw.ONE, glw.ONE_MINUS_SRC_ALPHA);
136
142
 
@@ -754,9 +760,9 @@ export class WebGlCoreRenderer extends CoreRenderer {
754
760
  node.hasRTTupdates = false;
755
761
  }
756
762
 
757
- const color = getNormalizedRgbaComponents(this.stage.options.clearColor);
763
+ const clearColor = this.clearColor.normalized;
758
764
  // Restore the default clear color
759
- glw.clearColor(color[0]!, color[1]!, color[2]!, color[3]!);
765
+ glw.clearColor(clearColor[0], clearColor[1], clearColor[2], clearColor[3]);
760
766
 
761
767
  // Bind the default framebuffer
762
768
  glw.bindFramebuffer(null);
@@ -784,4 +790,28 @@ export class WebGlCoreRenderer extends CoreRenderer {
784
790
  override getDefShaderCtr(): BaseShaderController {
785
791
  return this.defShaderCtrl;
786
792
  }
793
+
794
+ /**
795
+ * Updates the WebGL context's clear color and clears the color buffer.
796
+ *
797
+ * @param color - The color to set as the clear color, represented as a 32-bit integer.
798
+ */
799
+ updateClearColor(color: number) {
800
+ if (this.clearColor.raw === color) {
801
+ return;
802
+ }
803
+ const glw = this.glw;
804
+ const normalizedColor = getNormalizedRgbaComponents(color);
805
+ glw.clearColor(
806
+ normalizedColor[0],
807
+ normalizedColor[1],
808
+ normalizedColor[2],
809
+ normalizedColor[3],
810
+ );
811
+ this.clearColor = {
812
+ raw: color,
813
+ normalized: normalizedColor,
814
+ };
815
+ glw.clear();
816
+ }
787
817
  }
@@ -146,3 +146,8 @@ export function isHTMLImageElement(obj: unknown): obj is HTMLImageElement {
146
146
  obj.constructor.name === 'HTMLImageElement'
147
147
  );
148
148
  }
149
+
150
+ export interface WebGlColor {
151
+ raw: number;
152
+ normalized: [number, number, number, number];
153
+ }
@@ -79,6 +79,8 @@ export class SdfShader extends WebGlCoreShader {
79
79
  });
80
80
  }
81
81
 
82
+ static z$__type__Props: SdfShaderProps;
83
+
82
84
  override bindTextures(textures: WebGlCoreCtxTexture[]) {
83
85
  const { glw } = this;
84
86
  glw.activeTexture(0);
@@ -146,7 +146,14 @@ export class SdfTextRenderer extends TextRenderer<SdfTextRendererState> {
146
146
 
147
147
  constructor(stage: Stage) {
148
148
  super(stage);
149
- this.sdfShader = this.stage.shManager.loadShader('SdfShader').shader;
149
+ this.sdfShader = this.stage.shManager.loadShader('SdfShader', {
150
+ transform: new Float32Array(),
151
+ color: 0,
152
+ size: 0,
153
+ scrollY: 0,
154
+ distanceRange: 0,
155
+ debug: false,
156
+ }).shader;
150
157
  this.rendererBounds = {
151
158
  x1: 0,
152
159
  y1: 0,
@@ -658,4 +658,13 @@ export class RendererMain extends EventEmitter {
658
658
  rerender() {
659
659
  throw new Error('Not implemented');
660
660
  }
661
+
662
+ /**
663
+ * Sets the clear color for the stage.
664
+ *
665
+ * @param color - The color to set as the clear color.
666
+ */
667
+ setClearColor(color: number) {
668
+ this.stage.setClearColor(color);
669
+ }
661
670
  }
@@ -55,7 +55,6 @@ export class ShaderController<S extends keyof ShaderMap>
55
55
  stage: Stage,
56
56
  ) {
57
57
  this.resolvedProps = props;
58
-
59
58
  const keys = Object.keys(props);
60
59
  const l = keys.length;
61
60