@lightningjs/renderer 3.0.0-beta19 → 3.0.0-beta20

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 (204) hide show
  1. package/dist/src/core/Autosizer.d.ts +9 -3
  2. package/dist/src/core/Autosizer.js +37 -19
  3. package/dist/src/core/Autosizer.js.map +1 -1
  4. package/dist/src/core/CoreNode.d.ts +1 -1
  5. package/dist/src/core/CoreNode.js +30 -13
  6. package/dist/src/core/CoreNode.js.map +1 -1
  7. package/dist/src/core/Stage.js +1 -1
  8. package/dist/src/core/Stage.js.map +1 -1
  9. package/dist/src/core/lib/WebGlContextWrapper.d.ts +5 -5
  10. package/dist/src/core/platform.d.ts +10 -0
  11. package/dist/src/core/platform.js +81 -0
  12. package/dist/src/core/platform.js.map +1 -0
  13. package/dist/src/core/renderers/CoreShader.d.ts +9 -0
  14. package/dist/src/core/renderers/CoreShader.js +28 -0
  15. package/dist/src/core/renderers/CoreShader.js.map +1 -0
  16. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +33 -0
  17. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +250 -0
  18. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +1 -0
  19. package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +17 -0
  20. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +125 -0
  21. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -0
  22. package/dist/src/core/renderers/canvas/CanvasRenderer.js +22 -38
  23. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
  24. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +14 -0
  25. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +138 -0
  26. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -0
  27. package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +19 -0
  28. package/dist/src/core/renderers/canvas/internal/ColorUtils.js +58 -0
  29. package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -0
  30. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +10 -0
  31. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js +43 -0
  32. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +1 -0
  33. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +12 -0
  34. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +58 -0
  35. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +1 -0
  36. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +9 -0
  37. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +38 -0
  38. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +1 -0
  39. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +69 -0
  40. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +272 -0
  41. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -0
  42. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +34 -0
  43. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +114 -0
  44. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +1 -0
  45. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +133 -0
  46. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +649 -0
  47. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -0
  48. package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +78 -0
  49. package/dist/src/core/renderers/webgl/WebGlCoreShader.js +202 -0
  50. package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -0
  51. package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +1 -1
  52. package/dist/src/core/renderers/webgl/WebGlRenderOp.js +1 -1
  53. package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -1
  54. package/dist/src/core/renderers/webgl/WebGlRenderer.js +17 -10
  55. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
  56. package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +9 -0
  57. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +84 -0
  58. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +1 -0
  59. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +10 -0
  60. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +108 -0
  61. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +1 -0
  62. package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +29 -0
  63. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +408 -0
  64. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -0
  65. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +28 -0
  66. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +126 -0
  67. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +1 -0
  68. package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +47 -0
  69. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +148 -0
  70. package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -0
  71. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +31 -0
  72. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +71 -0
  73. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +1 -0
  74. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +30 -0
  75. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +58 -0
  76. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +1 -0
  77. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +31 -0
  78. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +71 -0
  79. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +1 -0
  80. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +31 -0
  81. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +71 -0
  82. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +1 -0
  83. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +31 -0
  84. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +71 -0
  85. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +1 -0
  86. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +9 -0
  87. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +136 -0
  88. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +1 -0
  89. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.d.ts +36 -0
  90. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +85 -0
  91. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +1 -0
  92. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +45 -0
  93. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +104 -0
  94. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +1 -0
  95. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +22 -0
  96. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +45 -0
  97. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +1 -0
  98. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.d.ts +58 -0
  99. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +80 -0
  100. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +1 -0
  101. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +35 -0
  102. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +134 -0
  103. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -0
  104. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +40 -0
  105. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +143 -0
  106. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +1 -0
  107. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.d.ts +61 -0
  108. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +127 -0
  109. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +1 -0
  110. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +40 -0
  111. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +71 -0
  112. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +1 -0
  113. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +115 -0
  114. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +61 -0
  115. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +1 -0
  116. package/dist/src/core/shaders/webgl/Default.js +6 -7
  117. package/dist/src/core/shaders/webgl/Default.js.map +1 -1
  118. package/dist/src/core/shaders/webgl/SdfShader.js +6 -7
  119. package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
  120. package/dist/src/core/text-rendering/TextRenderingUtils.d.ts +12 -0
  121. package/dist/src/core/text-rendering/TextRenderingUtils.js +14 -0
  122. package/dist/src/core/text-rendering/TextRenderingUtils.js.map +1 -0
  123. package/dist/src/core/text-rendering/TextTextureRendererUtils.d.ts +72 -0
  124. package/dist/src/core/text-rendering/TextTextureRendererUtils.js +217 -0
  125. package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -0
  126. package/dist/src/core/text-rendering/TrFontManager.d.ts +26 -0
  127. package/dist/src/core/text-rendering/TrFontManager.js +131 -0
  128. package/dist/src/core/text-rendering/TrFontManager.js.map +1 -0
  129. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.d.ts +39 -0
  130. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +125 -0
  131. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -0
  132. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.d.ts +103 -0
  133. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js +21 -0
  134. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js.map +1 -0
  135. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.d.ts +62 -0
  136. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js +88 -0
  137. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js.map +1 -0
  138. package/dist/src/core/text-rendering/font-face-types/TrFontFace.d.ts +118 -0
  139. package/dist/src/core/text-rendering/font-face-types/TrFontFace.js +63 -0
  140. package/dist/src/core/text-rendering/font-face-types/TrFontFace.js.map +1 -0
  141. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.d.ts +14 -0
  142. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +66 -0
  143. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js.map +1 -0
  144. package/dist/src/core/text-rendering/font-face-types/utils.d.ts +1 -0
  145. package/dist/src/core/text-rendering/font-face-types/utils.js +38 -0
  146. package/dist/src/core/text-rendering/font-face-types/utils.js.map +1 -0
  147. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +59 -0
  148. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +397 -0
  149. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -0
  150. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +120 -0
  151. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +551 -0
  152. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -0
  153. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +92 -0
  154. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +607 -0
  155. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -0
  156. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.d.ts +12 -0
  157. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js +61 -0
  158. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js.map +1 -0
  159. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.d.ts +33 -0
  160. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js +52 -0
  161. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js.map +1 -0
  162. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.d.ts +13 -0
  163. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js +32 -0
  164. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js.map +1 -0
  165. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.d.ts +23 -0
  166. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js +84 -0
  167. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js.map +1 -0
  168. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.d.ts +4 -0
  169. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js +34 -0
  170. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js.map +1 -0
  171. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +20 -0
  172. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +308 -0
  173. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -0
  174. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.d.ts +10 -0
  175. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js +40 -0
  176. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js.map +1 -0
  177. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.d.ts +26 -0
  178. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js +70 -0
  179. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js.map +1 -0
  180. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.d.ts +16 -0
  181. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js +39 -0
  182. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js.map +1 -0
  183. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +373 -0
  184. package/dist/src/core/text-rendering/renderers/TextRenderer.js +178 -0
  185. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -0
  186. package/dist/src/main-api/DynamicShaderController.d.ts +29 -0
  187. package/dist/src/main-api/DynamicShaderController.js +58 -0
  188. package/dist/src/main-api/DynamicShaderController.js.map +1 -0
  189. package/dist/src/main-api/Inspector.js +5 -6
  190. package/dist/src/main-api/Inspector.js.map +1 -1
  191. package/dist/src/main-api/ShaderController.d.ts +31 -0
  192. package/dist/src/main-api/ShaderController.js +37 -0
  193. package/dist/src/main-api/ShaderController.js.map +1 -0
  194. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  195. package/dist/tsconfig.tsbuildinfo +1 -0
  196. package/package.json +1 -1
  197. package/src/core/CoreNode.ts +38 -19
  198. package/src/core/Stage.ts +1 -1
  199. package/src/core/renderers/canvas/CanvasRenderer.ts +36 -55
  200. package/src/core/renderers/webgl/WebGlRenderOp.ts +2 -2
  201. package/src/core/renderers/webgl/WebGlRenderer.ts +22 -10
  202. package/src/core/shaders/webgl/Default.ts +6 -7
  203. package/src/core/shaders/webgl/SdfShader.ts +6 -7
  204. package/src/main-api/Inspector.ts +5 -6
@@ -27,7 +27,6 @@ import {
27
27
  } from '../CoreRenderer.js';
28
28
  import { CanvasTexture } from './CanvasTexture.js';
29
29
  import { parseColor } from '../../lib/colorParser.js';
30
- import { assertTruthy } from '../../../utils.js';
31
30
  import { CanvasShaderNode, type CanvasShaderType } from './CanvasShaderNode.js';
32
31
  import { normalizeCanvasColor } from '../../lib/colorCache.js';
33
32
 
@@ -43,7 +42,6 @@ export class CanvasRenderer extends CoreRenderer {
43
42
  super(options);
44
43
 
45
44
  this.mode = 'canvas';
46
-
47
45
  const { canvas } = options;
48
46
  this.canvas = canvas as HTMLCanvasElement;
49
47
  this.context = canvas.getContext('2d') as CanvasRenderingContext2D;
@@ -72,28 +70,15 @@ export class CanvasRenderer extends CoreRenderer {
72
70
  const ctx = this.context;
73
71
  const { tx, ty, ta, tb, tc, td, clippingRect } = quad;
74
72
  let texture = quad.texture;
75
- const textureType = texture?.type;
76
- assertTruthy(textureType, 'Texture type is not defined');
77
-
78
- // The Canvas2D renderer only supports image and color textures
79
- if (
80
- textureType !== TextureType.image &&
81
- textureType !== TextureType.color &&
82
- textureType !== TextureType.subTexture &&
83
- textureType !== TextureType.noise
84
- ) {
85
- return;
86
- }
87
-
88
- if (texture) {
89
- if (texture instanceof SubTexture) {
90
- texture = texture.parentTexture;
91
- }
92
-
93
- if (texture.state === 'freed') {
94
- return;
95
- }
96
- if (texture.state !== 'loaded') {
73
+ // The Canvas2D renderer only supports image textures, no textures are used for color blocks
74
+ if (texture !== null) {
75
+ const textureType = texture.type;
76
+ if (
77
+ textureType !== TextureType.image &&
78
+ textureType !== TextureType.subTexture &&
79
+ textureType !== TextureType.color &&
80
+ textureType !== TextureType.noise
81
+ ) {
97
82
  return;
98
83
  }
99
84
  }
@@ -151,50 +136,46 @@ export class CanvasRenderer extends CoreRenderer {
151
136
 
152
137
  renderContext(quad: QuadOptions) {
153
138
  const color = quad.colorTl;
154
- const textureType = quad.texture?.type;
155
- if (
156
- (textureType === TextureType.image ||
157
- textureType === TextureType.subTexture ||
158
- textureType === TextureType.noise) &&
159
- quad.texture?.ctxTexture
160
- ) {
139
+ const texture = quad.texture!;
140
+ const textureType = texture.type;
141
+ if (textureType !== TextureType.color) {
161
142
  const tintColor = parseColor(color);
162
- const image = (quad.texture.ctxTexture as CanvasTexture).getImage(
163
- tintColor,
164
- );
165
- this.context.globalAlpha = tintColor.a ?? quad.alpha;
166
- if (textureType === TextureType.subTexture) {
143
+ if (textureType !== TextureType.subTexture) {
144
+ const image = (texture.ctxTexture as CanvasTexture).getImage(tintColor);
145
+ this.context.globalAlpha = tintColor.a ?? quad.alpha;
167
146
  this.context.drawImage(
168
147
  image,
169
- (quad.texture as SubTexture).props.x,
170
- (quad.texture as SubTexture).props.y,
171
- (quad.texture as SubTexture).props.w,
172
- (quad.texture as SubTexture).props.h,
173
148
  quad.tx,
174
149
  quad.ty,
175
150
  quad.width,
176
151
  quad.height,
177
152
  );
178
- } else {
179
- try {
180
- this.context.drawImage(
181
- image,
182
- quad.tx,
183
- quad.ty,
184
- quad.width,
185
- quad.height,
186
- );
187
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
188
- } catch (error) {
189
- // noop
190
- }
153
+ this.context.globalAlpha = 1;
154
+ return;
191
155
  }
156
+ const image = (
157
+ (texture as SubTexture).parentTexture.ctxTexture as CanvasTexture
158
+ ).getImage(tintColor);
159
+ const props = (texture as SubTexture).props;
160
+
161
+ this.context.globalAlpha = tintColor.a ?? quad.alpha;
162
+ this.context.drawImage(
163
+ image,
164
+ props.x,
165
+ props.y,
166
+ props.w,
167
+ props.h,
168
+ quad.tx,
169
+ quad.ty,
170
+ quad.width,
171
+ quad.height,
172
+ );
192
173
  this.context.globalAlpha = 1;
193
174
  return;
194
175
  }
195
176
  const hasGradient =
196
177
  quad.colorTl !== quad.colorTr || quad.colorTl !== quad.colorBr;
197
- if (textureType === TextureType.color && hasGradient) {
178
+ if (hasGradient === true) {
198
179
  let endX: number = quad.tx;
199
180
  let endY: number = quad.ty;
200
181
  let endColor: number;
@@ -219,7 +200,7 @@ export class CanvasRenderer extends CoreRenderer {
219
200
  gradient.addColorStop(1, normalizeCanvasColor(endColor));
220
201
  this.context.fillStyle = gradient;
221
202
  this.context.fillRect(quad.tx, quad.ty, quad.width, quad.height);
222
- } else if (textureType === TextureType.color) {
203
+ } else {
223
204
  this.context.fillStyle = normalizeCanvasColor(color);
224
205
  this.context.fillRect(quad.tx, quad.ty, quad.width, quad.height);
225
206
  }
@@ -63,7 +63,7 @@ export class WebGlRenderOp extends CoreRenderOp {
63
63
  readonly clippingRect: RectWithValid;
64
64
  readonly rtt: boolean;
65
65
  readonly parentHasRenderTexture: boolean;
66
- readonly framebufferDimensions?: Dimensions | null;
66
+ readonly framebufferDimensions: Dimensions | null;
67
67
  readonly alpha: number;
68
68
  readonly pixelRatio: number;
69
69
  readonly time?: number | null;
@@ -80,7 +80,7 @@ export class WebGlRenderOp extends CoreRenderOp {
80
80
  this.height = quad.height;
81
81
  this.clippingRect = quad.clippingRect;
82
82
  this.parentHasRenderTexture = quad.parentHasRenderTexture;
83
- this.framebufferDimensions = quad.framebufferDimensions;
83
+ this.framebufferDimensions = quad.framebufferDimensions || null;
84
84
  this.rtt = quad.rtt;
85
85
  this.alpha = quad.alpha;
86
86
  this.pixelRatio =
@@ -258,11 +258,9 @@ export class WebGlRenderer extends CoreRenderer {
258
258
  const u = this.uiQuadBuffer;
259
259
  let i = this.curBufferIdx;
260
260
 
261
- let ro = this.curRenderOp!;
262
- const reuse = this.reuseRenderOp(params) === false;
263
- if (reuse) {
261
+ const reuse = this.reuseRenderOp(params);
262
+ if (reuse === false) {
264
263
  this.newRenderOp(params, i);
265
- ro = this.curRenderOp!;
266
264
  }
267
265
 
268
266
  let tx = params.texture!;
@@ -320,7 +318,7 @@ export class WebGlRenderer extends CoreRenderer {
320
318
  f[i + 30] = 1;
321
319
  f[i + 31] = 1;
322
320
 
323
- ro.numQuads++;
321
+ this.curRenderOp!.numQuads++;
324
322
  this.curBufferIdx = i + 32;
325
323
  }
326
324
 
@@ -387,16 +385,30 @@ export class WebGlRenderer extends CoreRenderer {
387
385
  return false;
388
386
  }
389
387
 
390
- // Force new render operation if rendering to texture
391
- // @todo: This needs to be improved, render operations could also be reused
392
- // for rendering to texture
388
+ // Force new render operation if rendering to texture is different
393
389
  if (
394
- params.parentHasRenderTexture !== undefined ||
395
- params.rtt !== undefined
390
+ this.curRenderOp.parentHasRenderTexture !==
391
+ params.parentHasRenderTexture ||
392
+ this.curRenderOp.rtt !== params.rtt
396
393
  ) {
397
394
  return false;
398
395
  }
399
396
 
397
+ if (
398
+ params.parentHasRenderTexture === true &&
399
+ this.curRenderOp.framebufferDimensions !== null &&
400
+ params.framebufferDimensions !== null
401
+ ) {
402
+ if (
403
+ this.curRenderOp.framebufferDimensions.w !==
404
+ params.framebufferDimensions.w ||
405
+ this.curRenderOp.framebufferDimensions.h !==
406
+ params.framebufferDimensions.h
407
+ ) {
408
+ return false;
409
+ }
410
+ }
411
+
400
412
  if (
401
413
  this.curRenderOp.shader.shaderKey === 'default' &&
402
414
  params.shader?.shaderKey === 'default'
@@ -57,15 +57,15 @@ export const Default: WebGlShaderType = {
57
57
  varying vec2 v_nodeCoords;
58
58
 
59
59
  void main() {
60
- vec2 normalized = a_position * u_pixelRatio;
61
- vec2 screenSpace = vec2(2.0 / u_resolution.x, -2.0 / u_resolution.y);
60
+ vec2 normalized = a_position * u_pixelRatio / u_resolution;
61
+ vec2 zero_two = normalized * 2.0;
62
+ vec2 clip_space = zero_two - 1.0;
62
63
 
63
64
  v_color = a_color;
64
- v_nodeCoords = a_nodeCoords;
65
65
  v_textureCoords = a_textureCoords;
66
+ v_nodeCoords = a_nodeCoords;
66
67
 
67
- gl_Position = vec4(normalized.x * screenSpace.x - 1.0, normalized.y * -abs(screenSpace.y) + 1.0, 0.0, 1.0);
68
- gl_Position.y = -sign(screenSpace.y) * gl_Position.y;
68
+ gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);
69
69
  }
70
70
  `,
71
71
  fragment: `
@@ -82,8 +82,7 @@ export const Default: WebGlShaderType = {
82
82
  varying vec2 v_textureCoords;
83
83
 
84
84
  void main() {
85
- vec4 color = texture2D(u_texture, v_textureCoords);
86
- gl_FragColor = vec4(v_color) * texture2D(u_texture, v_textureCoords);
85
+ gl_FragColor = v_color * texture2D(u_texture, v_textureCoords);
87
86
  }
88
87
  `,
89
88
  };
@@ -76,8 +76,10 @@ export const Sdf: WebGlShaderType<SdfShaderProps> = {
76
76
  uniform mat3 u_transform;
77
77
  uniform float u_pixelRatio;
78
78
  uniform float u_size;
79
+ uniform float u_distanceRange;
79
80
 
80
81
  varying vec2 v_texcoord;
82
+ varying float v_scaledDistRange;
81
83
 
82
84
  void main() {
83
85
  vec2 scrolledPosition = a_position * u_size;
@@ -88,7 +90,7 @@ export const Sdf: WebGlShaderType<SdfShaderProps> = {
88
90
 
89
91
  gl_Position = vec4(screenSpace, 0.0, 1.0);
90
92
  v_texcoord = a_textureCoords;
91
-
93
+ v_scaledDistRange = u_distanceRange * u_pixelRatio;
92
94
  }
93
95
  `,
94
96
  fragment: `
@@ -99,20 +101,17 @@ export const Sdf: WebGlShaderType<SdfShaderProps> = {
99
101
  # endif
100
102
  uniform vec4 u_color;
101
103
  uniform sampler2D u_texture;
102
- uniform float u_distanceRange;
103
- uniform float u_pixelRatio;
104
- uniform int u_debug;
105
104
 
106
105
  varying vec2 v_texcoord;
106
+ varying float v_scaledDistRange;
107
107
 
108
108
  float median(float r, float g, float b) {
109
- return max(min(r, g), min(max(r, g), b));
109
+ return clamp(b, min(r, g), max(r, g));
110
110
  }
111
111
 
112
112
  void main() {
113
113
  vec3 sample = texture2D(u_texture, v_texcoord).rgb;
114
- float scaledDistRange = u_distanceRange * u_pixelRatio;
115
- float sigDist = scaledDistRange * (median(sample.r, sample.g, sample.b) - 0.5);
114
+ float sigDist = v_scaledDistRange * (median(sample.r, sample.g, sample.b) - 0.5);
116
115
  float opacity = clamp(sigDist + 0.5, 0.0, 1.0) * u_color.a;
117
116
 
118
117
  // Build the final color.
@@ -102,16 +102,14 @@ const stylePropertyMap: {
102
102
  },
103
103
  w: (w) => {
104
104
  if (w === 0) {
105
- // Set to 1px instead of 0px so Playwright's toBeVisible() passes
106
- return { prop: 'width', value: '1px' };
105
+ return { prop: 'width', value: 'auto' };
107
106
  }
108
107
 
109
108
  return { prop: 'width', value: `${w}px` };
110
109
  },
111
110
  h: (h) => {
112
111
  if (h === 0) {
113
- // Set to 1px instead of 0px so Playwright's toBeVisible() passes
114
- return { prop: 'height', value: '1px' };
112
+ return { prop: 'height', value: 'auto' };
115
113
  }
116
114
 
117
115
  return { prop: 'height', value: `${h}px` };
@@ -911,8 +909,9 @@ export class Inspector {
911
909
  if (property === 'text') {
912
910
  div.innerHTML = String(value);
913
911
 
914
- // Keep DOM text invisible without breaking Playwright visibility checks by using color:transparent instead of opacity:0
915
- div.style.color = 'transparent';
912
+ // Keep DOM text invisible without breaking visibility checks
913
+ // Use very low opacity (0.001) instead of 0 so Playwright still detects it
914
+ div.style.opacity = '0.001';
916
915
  div.style.pointerEvents = 'none';
917
916
  div.style.userSelect = 'none';
918
917
  return;