@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
@@ -136,7 +136,7 @@ export class WebGlCoreRenderer extends CoreRenderer {
136
136
  this.defaultShader = this.defShaderCtrl.shader as WebGlCoreShader;
137
137
  const quadBuffer = glw.createBuffer();
138
138
  assertTruthy(quadBuffer);
139
- const stride = 6 * Float32Array.BYTES_PER_ELEMENT;
139
+ const stride = 8 * Float32Array.BYTES_PER_ELEMENT;
140
140
  this.quadBufferCollection = new BufferCollection([
141
141
  {
142
142
  buffer: quadBuffer,
@@ -173,6 +173,14 @@ export class WebGlCoreRenderer extends CoreRenderer {
173
173
  stride,
174
174
  offset: 5 * Float32Array.BYTES_PER_ELEMENT,
175
175
  },
176
+ a_nodeCoordinate: {
177
+ name: 'a_nodeCoordinate',
178
+ size: 2,
179
+ type: glw.FLOAT,
180
+ normalized: false,
181
+ stride,
182
+ offset: 6 * Float32Array.BYTES_PER_ELEMENT,
183
+ },
176
184
  },
177
185
  },
178
186
  ]);
@@ -230,7 +238,7 @@ export class WebGlCoreRenderer extends CoreRenderer {
230
238
  * If the shader props contain any automatic properties, update it with the
231
239
  * current dimensions and or alpha that will be used to render the quad.
232
240
  */
233
- if (params.shaderProps !== null) {
241
+ if (params.shader !== this.defaultShader) {
234
242
  if (hasOwn(params.shaderProps, '$dimensions') == true) {
235
243
  const dimensions = params.shaderProps.$dimensions as Dimensions;
236
244
  dimensions.width = params.width;
@@ -243,20 +251,11 @@ export class WebGlCoreRenderer extends CoreRenderer {
243
251
  }
244
252
 
245
253
  let { curBufferIdx: bufferIdx, curRenderOp } = this;
246
- const targetDims = { width: -1, height: -1 };
247
- targetDims.width = params.width;
248
- targetDims.height = params.height;
249
-
250
- const targetShader =
251
- (params.shader as WebGlCoreShader) || this.defaultShader;
252
- assertTruthy(
253
- targetShader.getUniformLocation !== undefined,
254
- 'Invalid WebGL shader',
255
- );
254
+ const targetDims = { width: params.width, height: params.height };
256
255
 
257
256
  if (this.reuseRenderOp(params) === false) {
258
257
  this.newRenderOp(
259
- targetShader,
258
+ params.shader as WebGlCoreShader,
260
259
  params.shaderProps as Record<string, unknown>,
261
260
  params.alpha,
262
261
  targetDims,
@@ -270,6 +269,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
270
269
  assertTruthy(curRenderOp);
271
270
  }
272
271
 
272
+ let ctxTexture = undefined;
273
+
273
274
  let texCoordX1 = 0;
274
275
  let texCoordY1 = 0;
275
276
  let texCoordX2 = 1;
@@ -290,6 +291,13 @@ export class WebGlCoreRenderer extends CoreRenderer {
290
291
  texCoordY1 = ty / parentH;
291
292
  texCoordY2 = texCoordY1 + th / parentH;
292
293
  texture = (texture as SubTexture).parentTexture;
294
+ ctxTexture = texture.ctxTexture as WebGlCoreCtxTexture;
295
+ } else {
296
+ ctxTexture = texture.ctxTexture as WebGlCoreCtxTexture;
297
+ texCoordX1 = ctxTexture.txCoordX1;
298
+ texCoordY1 = ctxTexture.txCoordY1;
299
+ texCoordX2 = ctxTexture.txCoordX2;
300
+ texCoordY2 = ctxTexture.txCoordY2;
293
301
  }
294
302
 
295
303
  if (
@@ -336,14 +344,6 @@ export class WebGlCoreRenderer extends CoreRenderer {
336
344
  [texCoordY1, texCoordY2] = [texCoordY2, texCoordY1];
337
345
  }
338
346
 
339
- let ctxTexture = texture.ctxTexture as WebGlCoreCtxTexture;
340
- if (ctxTexture === undefined) {
341
- ctxTexture = this.stage.defaultTexture?.ctxTexture as WebGlCoreCtxTexture;
342
- console.warn(
343
- 'WebGL Renderer: Texture does not have a ctxTexture, using default texture instead',
344
- );
345
- }
346
-
347
347
  const textureIdx = this.addTexture(ctxTexture, bufferIdx);
348
348
 
349
349
  assertTruthy(this.curRenderOp !== null);
@@ -355,6 +355,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
355
355
  fQuadBuffer[bufferIdx++] = texCoordY1; // texCoordY
356
356
  uiQuadBuffer[bufferIdx++] = params.colorTl; // color
357
357
  fQuadBuffer[bufferIdx++] = textureIdx; // texIndex
358
+ fQuadBuffer[bufferIdx++] = 0;
359
+ fQuadBuffer[bufferIdx++] = 0;
358
360
 
359
361
  // Upper-Right
360
362
  fQuadBuffer[bufferIdx++] = params.renderCoords.x2;
@@ -363,6 +365,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
363
365
  fQuadBuffer[bufferIdx++] = texCoordY1;
364
366
  uiQuadBuffer[bufferIdx++] = params.colorTr;
365
367
  fQuadBuffer[bufferIdx++] = textureIdx;
368
+ fQuadBuffer[bufferIdx++] = 1;
369
+ fQuadBuffer[bufferIdx++] = 0;
366
370
 
367
371
  // Lower-Left
368
372
  fQuadBuffer[bufferIdx++] = params.renderCoords.x4;
@@ -371,6 +375,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
371
375
  fQuadBuffer[bufferIdx++] = texCoordY2;
372
376
  uiQuadBuffer[bufferIdx++] = params.colorBl;
373
377
  fQuadBuffer[bufferIdx++] = textureIdx;
378
+ fQuadBuffer[bufferIdx++] = 0;
379
+ fQuadBuffer[bufferIdx++] = 1;
374
380
 
375
381
  // Lower-Right
376
382
  fQuadBuffer[bufferIdx++] = params.renderCoords.x3;
@@ -379,6 +385,9 @@ export class WebGlCoreRenderer extends CoreRenderer {
379
385
  fQuadBuffer[bufferIdx++] = texCoordY2;
380
386
  uiQuadBuffer[bufferIdx++] = params.colorBr;
381
387
  fQuadBuffer[bufferIdx++] = textureIdx;
388
+
389
+ fQuadBuffer[bufferIdx++] = 1;
390
+ fQuadBuffer[bufferIdx++] = 1;
382
391
  } else if (params.tb !== 0 || params.tc !== 0) {
383
392
  // Upper-Left
384
393
  fQuadBuffer[bufferIdx++] = params.tx; // vertexX
@@ -387,6 +396,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
387
396
  fQuadBuffer[bufferIdx++] = texCoordY1; // texCoordY
388
397
  uiQuadBuffer[bufferIdx++] = params.colorTl; // color
389
398
  fQuadBuffer[bufferIdx++] = textureIdx; // texIndex
399
+ fQuadBuffer[bufferIdx++] = 0;
400
+ fQuadBuffer[bufferIdx++] = 0;
390
401
 
391
402
  // Upper-Right
392
403
  fQuadBuffer[bufferIdx++] = params.tx + params.width * params.ta;
@@ -395,6 +406,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
395
406
  fQuadBuffer[bufferIdx++] = texCoordY1;
396
407
  uiQuadBuffer[bufferIdx++] = params.colorTr;
397
408
  fQuadBuffer[bufferIdx++] = textureIdx;
409
+ fQuadBuffer[bufferIdx++] = 1;
410
+ fQuadBuffer[bufferIdx++] = 0;
398
411
 
399
412
  // Lower-Left
400
413
  fQuadBuffer[bufferIdx++] = params.tx + params.height * params.tb;
@@ -403,6 +416,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
403
416
  fQuadBuffer[bufferIdx++] = texCoordY2;
404
417
  uiQuadBuffer[bufferIdx++] = params.colorBl;
405
418
  fQuadBuffer[bufferIdx++] = textureIdx;
419
+ fQuadBuffer[bufferIdx++] = 0;
420
+ fQuadBuffer[bufferIdx++] = 1;
406
421
 
407
422
  // Lower-Right
408
423
  fQuadBuffer[bufferIdx++] =
@@ -413,6 +428,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
413
428
  fQuadBuffer[bufferIdx++] = texCoordY2;
414
429
  uiQuadBuffer[bufferIdx++] = params.colorBr;
415
430
  fQuadBuffer[bufferIdx++] = textureIdx;
431
+ fQuadBuffer[bufferIdx++] = 1;
432
+ fQuadBuffer[bufferIdx++] = 1;
416
433
  } else {
417
434
  // Calculate the right corner of the quad
418
435
  // multiplied by the scale
@@ -426,6 +443,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
426
443
  fQuadBuffer[bufferIdx++] = texCoordY1; // texCoordY
427
444
  uiQuadBuffer[bufferIdx++] = params.colorTl; // color
428
445
  fQuadBuffer[bufferIdx++] = textureIdx; // texIndex
446
+ fQuadBuffer[bufferIdx++] = 0;
447
+ fQuadBuffer[bufferIdx++] = 0;
429
448
 
430
449
  // Upper-Right
431
450
  fQuadBuffer[bufferIdx++] = rightCornerX;
@@ -434,6 +453,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
434
453
  fQuadBuffer[bufferIdx++] = texCoordY1;
435
454
  uiQuadBuffer[bufferIdx++] = params.colorTr;
436
455
  fQuadBuffer[bufferIdx++] = textureIdx;
456
+ fQuadBuffer[bufferIdx++] = 1;
457
+ fQuadBuffer[bufferIdx++] = 0;
437
458
 
438
459
  // Lower-Left
439
460
  fQuadBuffer[bufferIdx++] = params.tx;
@@ -442,6 +463,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
442
463
  fQuadBuffer[bufferIdx++] = texCoordY2;
443
464
  uiQuadBuffer[bufferIdx++] = params.colorBl;
444
465
  fQuadBuffer[bufferIdx++] = textureIdx;
466
+ fQuadBuffer[bufferIdx++] = 0;
467
+ fQuadBuffer[bufferIdx++] = 1;
445
468
 
446
469
  // Lower-Right
447
470
  fQuadBuffer[bufferIdx++] = rightCornerX;
@@ -450,9 +473,10 @@ export class WebGlCoreRenderer extends CoreRenderer {
450
473
  fQuadBuffer[bufferIdx++] = texCoordY2;
451
474
  uiQuadBuffer[bufferIdx++] = params.colorBr;
452
475
  fQuadBuffer[bufferIdx++] = textureIdx;
476
+ fQuadBuffer[bufferIdx++] = 1;
477
+ fQuadBuffer[bufferIdx++] = 1;
453
478
  }
454
479
  // Update the length of the current render op
455
- this.curRenderOp.length += WORDS_PER_QUAD;
456
480
  this.curRenderOp.numQuads++;
457
481
  this.curBufferIdx = bufferIdx;
458
482
  }
@@ -542,10 +566,8 @@ export class WebGlCoreRenderer extends CoreRenderer {
542
566
  const { shader, shaderProps, parentHasRenderTexture, rtt, clippingRect } =
543
567
  params;
544
568
 
545
- const targetShader = shader || this.defaultShader;
546
-
547
569
  // Switching shader program will require a new render operation
548
- if (this.curRenderOp?.shader !== targetShader) {
570
+ if (this.curRenderOp?.shader !== shader) {
549
571
  return false;
550
572
  }
551
573
 
@@ -557,18 +579,17 @@ export class WebGlCoreRenderer extends CoreRenderer {
557
579
  // Force new render operation if rendering to texture
558
580
  // @todo: This needs to be improved, render operations could also be reused
559
581
  // for rendering to texture
560
- if (parentHasRenderTexture !== undefined || rtt !== undefined) {
582
+ if (parentHasRenderTexture === true || rtt === true) {
561
583
  return false;
562
584
  }
563
585
 
564
586
  // Check if the shader can batch the shader properties
565
587
  if (
566
588
  this.curRenderOp.shader !== this.defaultShader &&
567
- (shaderProps === null ||
568
- this.curRenderOp.shader.canBatchShaderProps(
569
- this.curRenderOp.shaderProps,
570
- shaderProps,
571
- ) === false)
589
+ this.curRenderOp.shader.canBatchShaderProps(
590
+ this.curRenderOp.shaderProps,
591
+ shaderProps,
592
+ ) === false
572
593
  ) {
573
594
  return false;
574
595
  }
@@ -607,7 +628,7 @@ export class WebGlCoreRenderer extends CoreRenderer {
607
628
  this.quadBufferUsage = this.curBufferIdx * arr.BYTES_PER_ELEMENT;
608
629
 
609
630
  // Calculate the size of each quad in bytes (4 vertices per quad) times the size of each vertex in bytes
610
- const QUAD_SIZE_IN_BYTES = 4 * (6 * arr.BYTES_PER_ELEMENT); // 6 attributes per vertex
631
+ const QUAD_SIZE_IN_BYTES = 4 * (8 * arr.BYTES_PER_ELEMENT); // 8 attributes per vertex
611
632
  this.numQuadsRendered = this.quadBufferUsage / QUAD_SIZE_IN_BYTES;
612
633
  }
613
634
 
@@ -65,7 +65,6 @@ export interface AlphaShaderProp {
65
65
  }
66
66
 
67
67
  export abstract class WebGlCoreShader extends CoreShader {
68
- protected boundBufferCollection: BufferCollection | null = null;
69
68
  protected buffersBound = false;
70
69
  protected program: WebGLProgram;
71
70
  /**
@@ -77,11 +76,8 @@ export abstract class WebGlCoreShader extends CoreShader {
77
76
  protected vao: WebGLVertexArrayObject | undefined;
78
77
  protected renderer: WebGlCoreRenderer;
79
78
  protected glw: WebGlContextWrapper;
80
- protected attributeBuffers: Record<string, WebGLBuffer>;
81
- protected attributeLocations: Record<string, number>;
82
- protected attributeNames: string[];
79
+ protected attributeLocations: string[];
83
80
  protected uniformLocations: Record<string, WebGLUniformLocation>;
84
- protected uniformTypes: Record<string, keyof UniformMethodMap>;
85
81
  readonly supportsIndexedTextures: boolean;
86
82
 
87
83
  constructor(options: ShaderOptions) {
@@ -160,61 +156,8 @@ export abstract class WebGlCoreShader extends CoreShader {
160
156
  }
161
157
  this.program = program;
162
158
 
163
- this.attributeLocations = {} as Record<string, number>;
164
- this.attributeBuffers = {} as Record<string, number>;
165
- this.attributeNames = [];
166
-
167
- [...options.attributes].forEach((attributeName) => {
168
- const location = glw.getAttribLocation(this.program, attributeName);
169
- if (location < 0) {
170
- throw new Error(
171
- `${this.constructor.name}: Vertex shader must have an attribute "${attributeName}"!`,
172
- );
173
- }
174
- const buffer = glw.createBuffer();
175
- if (!buffer) {
176
- throw new Error(
177
- `${this.constructor.name}: Could not create buffer for attribute "${attributeName}"`,
178
- );
179
- }
180
-
181
- this.attributeLocations[attributeName] = location;
182
- this.attributeBuffers[attributeName] = buffer;
183
- this.attributeNames.push(attributeName);
184
- });
185
-
186
- this.uniformLocations = {} as Record<string, WebGLRenderingContext>;
187
- this.uniformTypes = {} as Record<string, keyof UniformMethodMap>;
188
- options.uniforms.forEach((uniform: UniformInfo) => {
189
- const location = glw.getUniformLocation(this.program, uniform.name);
190
- this.uniformTypes[uniform.name] = uniform.uniform;
191
- if (!location) {
192
- console.warn(
193
- `Shader "${this.constructor.name}" could not get uniform location for "${uniform.name}"`,
194
- );
195
- return;
196
- }
197
- this.uniformLocations[uniform.name] = location;
198
- });
199
- }
200
-
201
- private bindBufferAttribute(
202
- location: number,
203
- buffer: WebGLBuffer,
204
- attribute: AttributeInfo,
205
- ) {
206
- const { glw } = this;
207
- glw.enableVertexAttribArray(location);
208
-
209
- glw.vertexAttribPointer(
210
- buffer,
211
- location,
212
- attribute.size,
213
- attribute.type,
214
- attribute.normalized,
215
- attribute.stride,
216
- attribute.offset,
217
- );
159
+ this.attributeLocations = glw.getAttributeLocations(this.program);
160
+ this.uniformLocations = glw.getUniformLocations(this.program);
218
161
  }
219
162
 
220
163
  disableAttribute(location: number) {
@@ -222,10 +165,11 @@ export abstract class WebGlCoreShader extends CoreShader {
222
165
  }
223
166
 
224
167
  disableAttributes() {
225
- for (const loc in this.attributeLocations) {
226
- this.disableAttribute(this.attributeLocations[loc] as number);
168
+ const glw = this.glw;
169
+ const attribLen = this.attributeLocations.length;
170
+ for (let i = 0; i < attribLen; i++) {
171
+ glw.disableVertexAttribArray(i);
227
172
  }
228
- this.boundBufferCollection = null;
229
173
  }
230
174
 
231
175
  /**
@@ -325,21 +269,29 @@ export abstract class WebGlCoreShader extends CoreShader {
325
269
  }
326
270
 
327
271
  bindBufferCollection(buffer: BufferCollection) {
328
- if (this.boundBufferCollection === buffer) {
329
- return;
330
- }
331
- for (const attributeName in this.attributeLocations) {
332
- const resolvedBuffer = buffer.getBuffer(attributeName);
333
- const resolvedInfo = buffer.getAttributeInfo(attributeName);
334
- assertTruthy(resolvedBuffer, `Buffer for "${attributeName}" not found`);
335
- assertTruthy(resolvedInfo);
336
- this.bindBufferAttribute(
337
- this.attributeLocations[attributeName]!,
272
+ const { glw } = this;
273
+ const attribs = this.attributeLocations;
274
+ const attribLen = attribs.length;
275
+
276
+ for (let i = 0; i < attribLen; i++) {
277
+ const name = attribs[i]!;
278
+
279
+ const resolvedBuffer = buffer.getBuffer(name);
280
+ const resolvedInfo = buffer.getAttributeInfo(name);
281
+ if (resolvedBuffer === undefined || resolvedInfo === undefined) {
282
+ continue;
283
+ }
284
+ glw.enableVertexAttribArray(i);
285
+ glw.vertexAttribPointer(
338
286
  resolvedBuffer,
339
- resolvedInfo,
287
+ i,
288
+ resolvedInfo.size,
289
+ resolvedInfo.type,
290
+ resolvedInfo.normalized,
291
+ resolvedInfo.stride,
292
+ resolvedInfo.offset,
340
293
  );
341
294
  }
342
- this.boundBufferCollection = buffer;
343
295
  }
344
296
 
345
297
  protected override bindProps(props: Record<string, unknown>) {
@@ -37,8 +37,6 @@ export interface UniformInfo {
37
37
 
38
38
  export interface ShaderOptions {
39
39
  renderer: WebGlCoreRenderer;
40
- attributes: string[];
41
- uniforms: UniformInfo[];
42
40
  shaderSources?: ShaderProgramSources;
43
41
  supportsIndexedTextures?: boolean;
44
42
  webgl1Extensions?: string[];
@@ -26,12 +26,6 @@ export class DefaultShader extends WebGlCoreShader {
26
26
  constructor(renderer: WebGlCoreRenderer) {
27
27
  super({
28
28
  renderer,
29
- attributes: ['a_position', 'a_textureCoordinate', 'a_color'],
30
- uniforms: [
31
- { name: 'u_resolution', uniform: 'uniform2fv' },
32
- { name: 'u_pixelRatio', uniform: 'uniform1f' },
33
- { name: 'u_texture', uniform: 'uniform2fv' },
34
- ],
35
29
  });
36
30
  }
37
31
 
@@ -51,6 +45,7 @@ export class DefaultShader extends WebGlCoreShader {
51
45
 
52
46
  attribute vec2 a_position;
53
47
  attribute vec2 a_textureCoordinate;
48
+ attribute vec2 a_nodeCoordinate;
54
49
  attribute vec4 a_color;
55
50
 
56
51
  uniform vec2 u_resolution;
@@ -59,6 +54,7 @@ export class DefaultShader extends WebGlCoreShader {
59
54
 
60
55
  varying vec4 v_color;
61
56
  varying vec2 v_textureCoordinate;
57
+ varying vec2 v_nodeCoordinate;
62
58
 
63
59
  void main() {
64
60
  vec2 normalized = a_position * u_pixelRatio;
@@ -66,6 +62,7 @@ export class DefaultShader extends WebGlCoreShader {
66
62
 
67
63
  v_color = a_color;
68
64
  v_textureCoordinate = a_textureCoordinate;
65
+ v_nodeCoordinate = a_nodeCoordinate;
69
66
 
70
67
  gl_Position = vec4(normalized.x * screenSpace.x - 1.0, normalized.y * -abs(screenSpace.y) + 1.0, 0.0, 1.0);
71
68
  gl_Position.y = -sign(screenSpace.y) * gl_Position.y;
@@ -29,17 +29,6 @@ export class DefaultShaderBatched extends WebGlCoreShader {
29
29
  constructor(renderer: WebGlCoreRenderer) {
30
30
  super({
31
31
  renderer,
32
- attributes: [
33
- 'a_position',
34
- 'a_textureCoordinate',
35
- 'a_color',
36
- 'a_textureIndex',
37
- ],
38
- uniforms: [
39
- { name: 'u_resolution', uniform: 'uniform2fv' },
40
- { name: 'u_pixelRatio', uniform: 'uniform1f' },
41
- { name: 'u_textures[0]', uniform: 'uniform1iv' },
42
- ],
43
32
  });
44
33
  }
45
34
 
@@ -118,15 +118,6 @@ export class DynamicShader extends WebGlCoreShader {
118
118
  const shader = DynamicShader.createShader(props, effectContructors);
119
119
  super({
120
120
  renderer,
121
- attributes: ['a_position', 'a_textureCoordinate', 'a_color'],
122
- uniforms: [
123
- { name: 'u_resolution', uniform: 'uniform2fv' },
124
- { name: 'u_pixelRatio', uniform: 'uniform1f' },
125
- { name: 'u_texture', uniform: 'uniform2fv' },
126
- { name: 'u_dimensions', uniform: 'uniform2fv' },
127
- { name: 'u_alpha', uniform: 'uniform1f' },
128
- ...shader.uniforms,
129
- ],
130
121
  shaderSources: {
131
122
  vertex: shader.vertex,
132
123
  fragment: shader.fragment,
@@ -504,6 +495,7 @@ export class DynamicShader extends WebGlCoreShader {
504
495
  # endif
505
496
 
506
497
  attribute vec2 a_textureCoordinate;
498
+ attribute vec2 a_nodeCoordinate;
507
499
  attribute vec2 a_position;
508
500
  attribute vec4 a_color;
509
501
  attribute float a_textureIndex;
@@ -514,6 +506,7 @@ export class DynamicShader extends WebGlCoreShader {
514
506
  varying vec4 v_color;
515
507
  varying vec2 v_textureCoordinate;
516
508
  varying float v_textureIndex;
509
+ varying vec2 v_nodeCoordinate;
517
510
 
518
511
  void main(){
519
512
  vec2 normalized = a_position * u_pixelRatio / u_resolution;
@@ -524,6 +517,7 @@ export class DynamicShader extends WebGlCoreShader {
524
517
  v_color = a_color;
525
518
  v_textureCoordinate = a_textureCoordinate;
526
519
  v_textureIndex = a_textureIndex;
520
+ v_nodeCoordinate = a_nodeCoordinate;
527
521
 
528
522
  // flip y
529
523
  gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);
@@ -555,13 +549,14 @@ export class DynamicShader extends WebGlCoreShader {
555
549
 
556
550
  varying vec4 v_color;
557
551
  varying vec2 v_textureCoordinate;
552
+ varying vec2 v_nodeCoordinate;
558
553
 
559
554
  ${methods}
560
555
 
561
556
  ${effectMethods}
562
557
 
563
558
  void main() {
564
- vec2 p = v_textureCoordinate.xy * u_dimensions - u_dimensions * 0.5;
559
+ vec2 p = v_nodeCoordinate.xy * u_dimensions - u_dimensions * 0.5;
565
560
  vec2 d = abs(p) - (u_dimensions) * 0.5;
566
561
  float lng_DefaultMask = min(max(d.x, d.y), 0.0) + length(max(d, 0.0));
567
562
 
@@ -45,14 +45,6 @@ export class RoundedRectangle extends WebGlCoreShader {
45
45
  constructor(renderer: WebGlCoreRenderer) {
46
46
  super({
47
47
  renderer,
48
- attributes: ['a_position', 'a_textureCoordinate', 'a_color'],
49
- uniforms: [
50
- { name: 'u_resolution', uniform: 'uniform2fv' },
51
- { name: 'u_pixelRatio', uniform: 'uniform1f' },
52
- { name: 'u_texture', uniform: 'uniform2f' },
53
- { name: 'u_dimensions', uniform: 'uniform2fv' },
54
- { name: 'u_radius', uniform: 'uniform1f' },
55
- ],
56
48
  });
57
49
  }
58
50
 
@@ -109,13 +101,14 @@ export class RoundedRectangle extends WebGlCoreShader {
109
101
  attribute vec2 a_textureCoordinate;
110
102
  attribute vec4 a_color;
111
103
  attribute float a_textureIndex;
112
- attribute float a_depth;
104
+ attribute vec2 a_nodeCoordinate;
113
105
 
114
106
  uniform vec2 u_resolution;
115
107
  uniform float u_pixelRatio;
116
108
 
117
109
  varying vec4 v_color;
118
110
  varying vec2 v_textureCoordinate;
111
+ varying vec2 v_nodeCoordinate;
119
112
 
120
113
  void main() {
121
114
  vec2 normalized = a_position * u_pixelRatio / u_resolution;
@@ -125,6 +118,7 @@ export class RoundedRectangle extends WebGlCoreShader {
125
118
  // pass to fragment
126
119
  v_color = a_color;
127
120
  v_textureCoordinate = a_textureCoordinate;
121
+ v_nodeCoordinate = a_nodeCoordinate;
128
122
 
129
123
  // flip y
130
124
  gl_Position = vec4(clip_space * vec2(1.0, -1.0), 0, 1);
@@ -144,6 +138,7 @@ export class RoundedRectangle extends WebGlCoreShader {
144
138
 
145
139
  varying vec4 v_color;
146
140
  varying vec2 v_textureCoordinate;
141
+ varying vec2 v_nodeCoordinate;
147
142
 
148
143
  float boxDist(vec2 p, vec2 size, float radius){
149
144
  size -= vec2(radius);
@@ -159,7 +154,7 @@ export class RoundedRectangle extends WebGlCoreShader {
159
154
  vec4 color = texture2D(u_texture, v_textureCoordinate) * v_color;
160
155
  vec2 halfDimensions = u_dimensions * 0.5;
161
156
 
162
- float d = boxDist(v_textureCoordinate.xy * u_dimensions - halfDimensions, halfDimensions + 0.5, u_radius);
157
+ float d = boxDist(v_nodeCoordinate.xy * u_dimensions - halfDimensions, halfDimensions + 0.5, u_radius);
163
158
  gl_FragColor = mix(vec4(0.0), color, fillMask(d));
164
159
  }
165
160
  `,
@@ -64,18 +64,6 @@ export class SdfShader extends WebGlCoreShader {
64
64
  constructor(renderer: WebGlCoreRenderer) {
65
65
  super({
66
66
  renderer,
67
- attributes: ['a_position', 'a_textureCoordinate'],
68
- uniforms: [
69
- { name: 'u_resolution', uniform: 'uniform2fv' },
70
- { name: 'u_transform', uniform: 'uniformMatrix3fv' },
71
- { name: 'u_scrollY', uniform: 'uniform1f' },
72
- { name: 'u_pixelRatio', uniform: 'uniform1f' },
73
- { name: 'u_texture', uniform: 'uniform2f' },
74
- { name: 'u_color', uniform: 'uniform4fv' },
75
- { name: 'u_size', uniform: 'uniform1f' },
76
- { name: 'u_distanceRange', uniform: 'uniform1f' },
77
- { name: 'u_debug', uniform: 'uniform1i' },
78
- ],
79
67
  });
80
68
  }
81
69
 
@@ -91,7 +91,7 @@ export class BorderBottomEffect extends ShaderEffect {
91
91
 
92
92
  static override onEffectMask = `
93
93
  vec2 pos = vec2(0.0, u_dimensions.y - width * 0.5);
94
- float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(u_dimensions.x, width*0.5));
94
+ float mask = $rectDist(v_nodeCoordinate.xy * u_dimensions - pos, vec2(u_dimensions.x, width*0.5));
95
95
  return mix(shaderColor, maskColor, $fillMask(mask));
96
96
  `;
97
97
 
@@ -91,7 +91,7 @@ export class BorderLeftEffect extends ShaderEffect {
91
91
 
92
92
  static override onEffectMask = `
93
93
  vec2 pos = vec2(width * 0.5, 0.0);
94
- float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(width*0.5, u_dimensions.y));
94
+ float mask = $rectDist(v_nodeCoordinate.xy * u_dimensions - pos, vec2(width*0.5, u_dimensions.y));
95
95
  return mix(shaderColor, maskColor, $fillMask(mask));
96
96
  `;
97
97
 
@@ -91,7 +91,7 @@ export class BorderRightEffect extends ShaderEffect {
91
91
 
92
92
  static override onEffectMask = `
93
93
  vec2 pos = vec2(u_dimensions.x - width * 0.5, 0.0);
94
- float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(width*0.5, u_dimensions.y));
94
+ float mask = $rectDist(v_nodeCoordinate.xy * u_dimensions - pos, vec2(width*0.5, u_dimensions.y));
95
95
  return mix(shaderColor, maskColor, $fillMask(mask));
96
96
  `;
97
97
 
@@ -91,7 +91,7 @@ export class BorderTopEffect extends ShaderEffect {
91
91
 
92
92
  static override onEffectMask = `
93
93
  vec2 pos = vec2(0.0, width * 0.5);
94
- float mask = $rectDist(v_textureCoordinate.xy * u_dimensions - pos, vec2(u_dimensions.x, width*0.5));
94
+ float mask = $rectDist(v_nodeCoordinate.xy * u_dimensions - pos, vec2(u_dimensions.x, width*0.5));
95
95
  return mix(shaderColor, maskColor, $fillMask(mask));
96
96
  `;
97
97
 
@@ -82,7 +82,7 @@ export class FadeOutEffect extends ShaderEffect {
82
82
  }
83
83
 
84
84
  static override onColorize = `
85
- vec2 point = v_textureCoordinate.xy * u_dimensions.xy;
85
+ vec2 point = v_nodeCoordinate.xy * u_dimensions.xy;
86
86
  vec2 pos1;
87
87
  vec2 pos2;
88
88
  vec2 d;
@@ -99,16 +99,16 @@ export class FadeOutEffect extends ShaderEffect {
99
99
  }
100
100
 
101
101
  if(fade[1] > 0.0) {
102
- pos1 = vec2(point.x - u_dimensions.x - fade[1], v_textureCoordinate.y);
103
- pos2 = vec2(point.x - u_dimensions.x, v_textureCoordinate.y);
102
+ pos1 = vec2(point.x - u_dimensions.x - fade[1], v_nodeCoordinate.y);
103
+ pos2 = vec2(point.x - u_dimensions.x, v_nodeCoordinate.y);
104
104
  d = pos1 - pos2;
105
105
  c = dot(pos2, d) / dot(d, d);
106
106
  result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));
107
107
  }
108
108
 
109
109
  if(fade[2] > 0.0) {
110
- pos1 = vec2(v_textureCoordinate.x, point.y - u_dimensions.y - fade[2]);
111
- pos2 = vec2(v_textureCoordinate.x, point.y - u_dimensions.y);
110
+ pos1 = vec2(v_nodeCoordinate.x, point.y - u_dimensions.y - fade[2]);
111
+ pos2 = vec2(v_nodeCoordinate.x, point.y - u_dimensions.y);
112
112
  d = pos1 - pos2;
113
113
  c = dot(pos2, d) / dot(d, d);
114
114
  result = mix(vec4(0.0), result, smoothstep(0.0, 1.0, clamp(c, 0.0, 1.0)));
@@ -142,7 +142,7 @@ export class HolePunchEffect extends ShaderEffect {
142
142
  static override onShaderMask = `
143
143
  vec2 halfDimensions = u_dimensions * 0.5;
144
144
  vec2 size = vec2(width, height) * 0.5;
145
- vec2 basePos = v_textureCoordinate.xy * u_dimensions.xy - vec2(x, y);
145
+ vec2 basePos = v_nodeCoordinate.xy * u_dimensions.xy - vec2(x, y);
146
146
  vec2 pos = basePos - size;
147
147
  float r = radius[0] * step(pos.x, 0.5) * step(pos.y, 0.5);
148
148
  r = r + radius[1] * step(0.5, pos.x) * step(pos.y, 0.5);
@@ -146,7 +146,7 @@ export class LinearGradientEffect extends ShaderEffect {
146
146
  vec2 f = $calcPoint(lineDist * 0.5, a);
147
147
  vec2 t = $calcPoint(lineDist * 0.5, a + PI);
148
148
  vec2 gradVec = t - f;
149
- float dist = dot(v_textureCoordinate.xy * u_dimensions - f, gradVec) / dot(gradVec, gradVec);
149
+ float dist = dot(v_nodeCoordinate.xy * u_dimensions - f, gradVec) / dot(gradVec, gradVec);
150
150
 
151
151
  //return early if dist is lower or equal to first stop
152
152
  if(dist <= stops[0]) {