@solidtv/renderer 1.5.6 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/dist/src/core/CoreNode.js +2 -2
  2. package/dist/src/core/CoreNode.js.map +1 -1
  3. package/dist/src/core/CoreTextureManager.d.ts +31 -0
  4. package/dist/src/core/CoreTextureManager.js +87 -6
  5. package/dist/src/core/CoreTextureManager.js.map +1 -1
  6. package/dist/src/core/Stage.js +11 -2
  7. package/dist/src/core/Stage.js.map +1 -1
  8. package/dist/src/core/lib/WebGlContextWrapper.d.ts +17 -1
  9. package/dist/src/core/lib/WebGlContextWrapper.js +21 -0
  10. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
  11. package/dist/src/core/lib/colorParser.d.ts +4 -1
  12. package/dist/src/core/lib/colorParser.js +16 -6
  13. package/dist/src/core/lib/colorParser.js.map +1 -1
  14. package/dist/src/core/platforms/web/WebPlatform.js +60 -50
  15. package/dist/src/core/platforms/web/WebPlatform.js.map +1 -1
  16. package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +4 -0
  17. package/dist/src/core/renderers/canvas/CanvasRenderer.js +28 -13
  18. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
  19. package/dist/src/core/renderers/canvas/CanvasShaderNode.js +1 -0
  20. package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -1
  21. package/dist/src/core/renderers/webgl/SdfRenderOp.js +2 -2
  22. package/dist/src/core/renderers/webgl/SdfRenderOp.js.map +1 -1
  23. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +43 -0
  24. package/dist/src/core/renderers/webgl/WebGlRenderer.js +109 -10
  25. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
  26. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +21 -13
  27. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
  28. package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +8 -3
  29. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +12 -11
  30. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -1
  31. package/dist/src/core/shaders/canvas/Rounded.js +3 -3
  32. package/dist/src/core/shaders/canvas/Rounded.js.map +1 -1
  33. package/dist/src/core/shaders/canvas/RoundedWithShadow.js +3 -3
  34. package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
  35. package/dist/src/core/shaders/canvas/utils/render.js +3 -3
  36. package/dist/src/core/shaders/canvas/utils/render.js.map +1 -1
  37. package/dist/src/core/shaders/webgl/Border.js +12 -11
  38. package/dist/src/core/shaders/webgl/Border.js.map +1 -1
  39. package/dist/src/core/shaders/webgl/HolePunch.js +12 -5
  40. package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
  41. package/dist/src/core/shaders/webgl/LinearGradient.js +3 -19
  42. package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
  43. package/dist/src/core/shaders/webgl/RadialGradient.js +3 -20
  44. package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
  45. package/dist/src/core/shaders/webgl/RadialProgress.js +15 -23
  46. package/dist/src/core/shaders/webgl/RadialProgress.js.map +1 -1
  47. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +35 -32
  48. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
  49. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +58 -45
  50. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
  51. package/dist/src/core/shaders/webgl/RoundedWithShadow.js +15 -13
  52. package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -1
  53. package/dist/src/core/shaders/webgl/Shadow.js +4 -5
  54. package/dist/src/core/shaders/webgl/Shadow.js.map +1 -1
  55. package/dist/src/core/text-rendering/SdfTextRenderer.js +23 -10
  56. package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -1
  57. package/dist/src/core/text-rendering/TextLayoutEngine.js +14 -2
  58. package/dist/src/core/text-rendering/TextLayoutEngine.js.map +1 -1
  59. package/dist/src/main-api/Renderer.d.ts +28 -5
  60. package/dist/src/main-api/Renderer.js +5 -1
  61. package/dist/src/main-api/Renderer.js.map +1 -1
  62. package/dist/src/utils.js +1 -1
  63. package/dist/src/utils.js.map +1 -1
  64. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  65. package/package.json +1 -1
  66. package/src/core/CoreNode.ts +2 -2
  67. package/src/core/CoreTextureManager.test.ts +147 -0
  68. package/src/core/CoreTextureManager.ts +97 -8
  69. package/src/core/Stage.renderListUpdate.test.ts +73 -0
  70. package/src/core/Stage.ts +13 -1
  71. package/src/core/lib/WebGlContextWrapper.test.ts +23 -1
  72. package/src/core/lib/WebGlContextWrapper.ts +23 -1
  73. package/src/core/lib/colorParser.test.ts +46 -0
  74. package/src/core/lib/colorParser.ts +17 -6
  75. package/src/core/platforms/web/WebPlatform.ts +63 -52
  76. package/src/core/renderers/canvas/CanvasRenderer.test.ts +230 -0
  77. package/src/core/renderers/canvas/CanvasRenderer.ts +29 -15
  78. package/src/core/renderers/canvas/CanvasShaderNode.test.ts +73 -0
  79. package/src/core/renderers/canvas/CanvasShaderNode.ts +1 -0
  80. package/src/core/renderers/webgl/SdfRenderOp.ts +2 -2
  81. package/src/core/renderers/webgl/WebGlRenderer.reuseRenderOp.test.ts +122 -0
  82. package/src/core/renderers/webgl/WebGlRenderer.sdfBuffer.test.ts +302 -0
  83. package/src/core/renderers/webgl/WebGlRenderer.ts +151 -11
  84. package/src/core/renderers/webgl/WebGlShaderProgram.reuseRenderOp.test.ts +150 -0
  85. package/src/core/renderers/webgl/WebGlShaderProgram.ts +27 -15
  86. package/src/core/renderers/webgl/WebGlShaderProgram.uniformDedup.test.ts +4 -2
  87. package/src/core/renderers/webgl/internal/ShaderUtils.test.ts +124 -0
  88. package/src/core/renderers/webgl/internal/ShaderUtils.ts +14 -13
  89. package/src/core/shaders/canvas/Rounded.ts +3 -3
  90. package/src/core/shaders/canvas/RoundedWithShadow.ts +3 -3
  91. package/src/core/shaders/canvas/utils/render.ts +3 -3
  92. package/src/core/shaders/webgl/Border.ts +12 -11
  93. package/src/core/shaders/webgl/HolePunch.ts +12 -5
  94. package/src/core/shaders/webgl/LinearGradient.ts +3 -19
  95. package/src/core/shaders/webgl/RadialGradient.ts +3 -20
  96. package/src/core/shaders/webgl/RadialProgress.ts +15 -23
  97. package/src/core/shaders/webgl/RoundedWithBorder.ts +35 -32
  98. package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +58 -45
  99. package/src/core/shaders/webgl/RoundedWithShadow.ts +15 -13
  100. package/src/core/shaders/webgl/Shadow.ts +4 -5
  101. package/src/core/text-rendering/SdfTextRenderer.test.ts +177 -0
  102. package/src/core/text-rendering/SdfTextRenderer.ts +38 -10
  103. package/src/core/text-rendering/TextLayoutEngine.ts +15 -2
  104. package/src/core/text-rendering/tests/TextLayoutEngine.test.ts +99 -0
  105. package/src/main-api/Renderer.ts +35 -6
  106. package/src/utils.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"WebGlShaderProgram.js","sourceRoot":"","sources":["../../../../../src/core/renderers/webgl/WebGlShaderProgram.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WebGlShaderProgram.js","sourceRoot":"","sources":["../../../../../src/core/renderers/webgl/WebGlShaderProgram.ts"],"names":[],"mappings":"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"}
@@ -65,9 +65,14 @@ export declare function createShader(glw: WebGlContextWrapper, type: number, sou
65
65
  export declare function createProgram(glw: WebGlContextWrapper, vertexShader: WebGLShader, fragmentShader: WebGLShader): WebGLProgram;
66
66
  export declare const DefaultVertexSource = "\n # ifdef GL_FRAGMENT_PRECISION_HIGH\n precision highp float;\n # else\n precision mediump float;\n # endif\n\n attribute vec2 a_position;\n attribute vec2 a_textureCoords;\n attribute vec4 a_color;\n attribute vec2 a_nodeCoords;\n\n uniform vec2 u_resolution;\n uniform float u_pixelRatio;\n uniform vec2 u_dimensions;\n uniform vec4 u_shadow;\n\n varying vec4 v_color;\n varying vec2 v_textureCoords;\n\n void main() {\n vec2 normalized = a_position * u_pixelRatio;\n vec2 screenSpace = vec2(2.0 / u_resolution.x, -2.0 / u_resolution.y);\n\n vec2 outerEdge = clamp(a_textureCoords * 2.0 - vec2(1.0), -1.0, 1.0);\n vec2 shadowEdge = outerEdge;\n vec2 vertexPos = normalized + outerEdge + shadowEdge;\n v_color = a_color;\n v_textureCoords = a_textureCoords;\n\n gl_Position = vec4(vertexPos.x * screenSpace.x - 1.0, -sign(screenSpace.y) * (vertexPos.y * -abs(screenSpace.y)) + 1.0, 0.0, 1.0);\n }\n";
67
67
  /**
68
- * generate fragment source for
69
- * @param stops
70
- * @returns
68
+ * Generates branchless gradient-stop evaluation statements for a fragment
69
+ * shader. Expects a `float dist` in scope and `u_stops`/`u_colors` uniform
70
+ * arrays of length `stops`; leaves the result in `vec4 colorOut`.
71
+ *
72
+ * The accumulated `mix()` chain is exactly equivalent to selecting the
73
+ * segment containing `dist` (for ascending stops): below a segment the
74
+ * smoothstep is 0 (no-op), above it is 1 (fully replaced by the next color).
75
+ * No `if`/ternary — Mali 400-class fragment pipelines serialize any branch.
71
76
  */
72
77
  export declare function genGradientColors(stops: number): string;
73
78
  export {};
@@ -65,19 +65,20 @@ export const DefaultVertexSource = `
65
65
  }
66
66
  `;
67
67
  /**
68
- * generate fragment source for
69
- * @param stops
70
- * @returns
68
+ * Generates branchless gradient-stop evaluation statements for a fragment
69
+ * shader. Expects a `float dist` in scope and `u_stops`/`u_colors` uniform
70
+ * arrays of length `stops`; leaves the result in `vec4 colorOut`.
71
+ *
72
+ * The accumulated `mix()` chain is exactly equivalent to selecting the
73
+ * segment containing `dist` (for ascending stops): below a segment the
74
+ * smoothstep is 0 (no-op), above it is 1 (fully replaced by the next color).
75
+ * No `if`/ternary — Mali 400-class fragment pipelines serialize any branch.
71
76
  */
72
77
  export function genGradientColors(stops) {
73
- let result = `
74
- float stopCalc = (dist - u_stops[0]) / (u_stops[1] - u_stops[0]);
75
- vec4 colorOut = mix(u_colors[0], u_colors[1], stopCalc);
76
- `;
77
- if (stops > 2) {
78
- for (let i = 2; i < stops; i++) {
79
- result += `colorOut = mix(colorOut, u_colors[${i}], clamp((dist - u_stops[${i - 1}]) / (u_stops[${i}] - u_stops[${i - 1}]), 0.0, 1.0));`;
80
- }
78
+ let result = `vec4 colorOut = u_colors[0];`;
79
+ for (let i = 1; i < stops; i++) {
80
+ result += `
81
+ colorOut = mix(colorOut, u_colors[${i}], smoothstep(u_stops[${i - 1}], u_stops[${i}], dist));`;
81
82
  }
82
83
  return result;
83
84
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ShaderUtils.js","sourceRoot":"","sources":["../../../../../../src/core/renderers/webgl/internal/ShaderUtils.ts"],"names":[],"mappings":"AA6JA,kBAAkB;AAElB,MAAM,UAAU,YAAY,CAC1B,GAAwB,EACxB,IAAY,EACZ,MAAc;IAEd,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,gCACE,IAAI,KAAK,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,iBACjD,IAAI,OAAO,CAAC,CAAC,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACvD,CAAC;IACJ,CAAC;IAED,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1B,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IACrE,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5C,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,GAAwB,EACxB,YAAyB,EACzB,cAA2B;IAE3B,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC;IACpC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IAED,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACxC,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAC1C,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACzB,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IACpE,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,OAAO,GACX,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,4BAA4B,CAAC;IACjE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtB,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC3B,MAAM,IAAI,KAAK,CAAC,kCAAkC,OAAO,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgClC,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,IAAI,MAAM,GAAG;;;GAGZ,CAAC;IACF,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,MAAM,IAAI,qCAAqC,CAAC,4BAC9C,CAAC,GAAG,CACN,iBAAiB,CAAC,eAAe,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAC1D,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"ShaderUtils.js","sourceRoot":"","sources":["../../../../../../src/core/renderers/webgl/internal/ShaderUtils.ts"],"names":[],"mappings":"AA6JA,kBAAkB;AAElB,MAAM,UAAU,YAAY,CAC1B,GAAwB,EACxB,IAAY,EACZ,MAAc;IAEd,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,gCACE,IAAI,KAAK,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,iBACjD,IAAI,OAAO,CAAC,CAAC,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACvD,CAAC;IACJ,CAAC;IAED,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1B,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IACrE,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5C,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,GAAwB,EACxB,YAAyB,EACzB,cAA2B;IAE3B,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC;IACpC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IAED,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACxC,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAC1C,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACzB,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IACpE,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,OAAO,GACX,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,4BAA4B,CAAC;IACjE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtB,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC3B,MAAM,IAAI,KAAK,CAAC,kCAAkC,OAAO,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgClC,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,IAAI,MAAM,GAAG,8BAA8B,CAAC;IAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,IAAI;0CAC4B,CAAC,yBACrC,CAAC,GAAG,CACN,cAAc,CAAC,YAAY,CAAC;IAC9B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -8,9 +8,9 @@ export const Rounded = {
8
8
  this.computed.radius = calcFactoredRadiusArray(this.props.radius, node.w, node.h);
9
9
  },
10
10
  render(ctx, node, renderContext) {
11
- const path = new Path2D();
12
- roundRect(path, node.globalTransform.tx, node.globalTransform.ty, node.props.w, node.props.h, this.computed.radius);
13
- ctx.clip(path);
11
+ ctx.beginPath();
12
+ roundRect(ctx, node.globalTransform.tx, node.globalTransform.ty, node.props.w, node.props.h, this.computed.radius);
13
+ ctx.clip();
14
14
  renderContext();
15
15
  },
16
16
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Rounded.js","sourceRoot":"","sources":["../../../../../src/core/shaders/canvas/Rounded.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAG7D,OAAO,EACL,eAAe,GAEhB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAM9C,MAAM,CAAC,MAAM,OAAO,GAA0D;IAC5E,KAAK,EAAE,eAAe,CAAC,KAAK;IAC5B,cAAc,EAAE,IAAI;IACpB,MAAM,CAAC,IAAI;QACT,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,uBAAuB,CAC5C,IAAI,CAAC,KAAM,CAAC,MAAc,EAC1B,IAAI,CAAC,CAAC,EACN,IAAI,CAAC,CAAC,CACP,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa;QAC7B,MAAM,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;QAC1B,SAAS,CACP,IAAI,EACJ,IAAI,CAAC,eAAgB,CAAC,EAAE,EACxB,IAAI,CAAC,eAAgB,CAAC,EAAE,EACxB,IAAI,CAAC,KAAK,CAAC,CAAC,EACZ,IAAI,CAAC,KAAK,CAAC,CAAC,EACZ,IAAI,CAAC,QAAQ,CAAC,MAAO,CACtB,CAAC;QACF,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEf,aAAa,EAAE,CAAC;IAClB,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"Rounded.js","sourceRoot":"","sources":["../../../../../src/core/shaders/canvas/Rounded.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAG7D,OAAO,EACL,eAAe,GAEhB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAM9C,MAAM,CAAC,MAAM,OAAO,GAA0D;IAC5E,KAAK,EAAE,eAAe,CAAC,KAAK;IAC5B,cAAc,EAAE,IAAI;IACpB,MAAM,CAAC,IAAI;QACT,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,uBAAuB,CAC5C,IAAI,CAAC,KAAM,CAAC,MAAc,EAC1B,IAAI,CAAC,CAAC,EACN,IAAI,CAAC,CAAC,CACP,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa;QAC7B,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,SAAS,CACP,GAAG,EACH,IAAI,CAAC,eAAgB,CAAC,EAAE,EACxB,IAAI,CAAC,eAAgB,CAAC,EAAE,EACxB,IAAI,CAAC,KAAK,CAAC,CAAC,EACZ,IAAI,CAAC,KAAK,CAAC,CAAC,EACZ,IAAI,CAAC,QAAQ,CAAC,MAAO,CACtB,CAAC;QACF,GAAG,CAAC,IAAI,EAAE,CAAC;QAEX,aAAa,EAAE,CAAC;IAClB,CAAC;CACF,CAAC"}
@@ -18,9 +18,9 @@ export const RoundedWithShadow = {
18
18
  if (this.props['shadow-color'] !== 0) {
19
19
  render.shadow(ctx, tx, ty, w, h, computed.shadowColor, this.props['shadow-projection'], computed.shadowRadius, this.stage.pixelRatio);
20
20
  }
21
- const path = new Path2D();
22
- render.roundRect(path, tx, ty, w, h, computed.radius);
23
- ctx.clip(path);
21
+ ctx.beginPath();
22
+ render.roundRect(ctx, tx, ty, w, h, computed.radius);
23
+ ctx.clip();
24
24
  renderContext();
25
25
  },
26
26
  };
@@ -1 +1 @@
1
- {"version":3,"file":"RoundedWithShadow.js","sourceRoot":"","sources":["../../../../../src/core/shaders/canvas/RoundedWithShadow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAG7D,OAAO,EACL,yBAAyB,GAE1B,MAAM,2CAA2C,CAAC;AAGnD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAI5C,MAAM,CAAC,MAAM,iBAAiB,GAG1B;IACF,KAAK,EAAE,yBAAyB,CAAC,KAAK;IACtC,cAAc,EAAE,IAAI;IACpB,MAAM,CAAC,IAAI;QACT,MAAM,KAAK,GAAG,IAAI,CAAC,KAAM,CAAC;QAC1B,MAAM,MAAM,GAAG,uBAAuB,CACpC,KAAK,CAAC,MAAc,EACpB,IAAI,CAAC,CAAC,EACN,IAAI,CAAC,CAAC,CACP,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,QAAQ,CAAC,YAAY,GAAG,MAAM,CAAC,GAAG,CACrC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,CAChC,CAAC;IACZ,CAAC;IACD,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa;QAC7B,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,eAAgB,CAAC;QACzC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAA0B,CAAC;QAEjD,IAAI,IAAI,CAAC,KAAM,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,MAAM,CACX,GAAG,EACH,EAAE,EACF,EAAE,EACF,CAAC,EACD,CAAC,EACD,QAAQ,CAAC,WAAW,EACpB,IAAI,CAAC,KAAM,CAAC,mBAAmB,CAAC,EAChC,QAAQ,CAAC,YAAY,EACrB,IAAI,CAAC,KAAK,CAAC,UAAU,CACtB,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;QAC1B,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACf,aAAa,EAAE,CAAC;IAClB,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"RoundedWithShadow.js","sourceRoot":"","sources":["../../../../../src/core/shaders/canvas/RoundedWithShadow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAG7D,OAAO,EACL,yBAAyB,GAE1B,MAAM,2CAA2C,CAAC;AAGnD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAI5C,MAAM,CAAC,MAAM,iBAAiB,GAG1B;IACF,KAAK,EAAE,yBAAyB,CAAC,KAAK;IACtC,cAAc,EAAE,IAAI;IACpB,MAAM,CAAC,IAAI;QACT,MAAM,KAAK,GAAG,IAAI,CAAC,KAAM,CAAC;QAC1B,MAAM,MAAM,GAAG,uBAAuB,CACpC,KAAK,CAAC,MAAc,EACpB,IAAI,CAAC,CAAC,EACN,IAAI,CAAC,CAAC,CACP,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,QAAQ,CAAC,YAAY,GAAG,MAAM,CAAC,GAAG,CACrC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,CAChC,CAAC;IACZ,CAAC;IACD,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa;QAC7B,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,eAAgB,CAAC;QACzC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAA0B,CAAC;QAEjD,IAAI,IAAI,CAAC,KAAM,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,MAAM,CACX,GAAG,EACH,EAAE,EACF,EAAE,EACF,CAAC,EACD,CAAC,EACD,QAAQ,CAAC,WAAW,EACpB,IAAI,CAAC,KAAM,CAAC,mBAAmB,CAAC,EAChC,QAAQ,CAAC,YAAY,EACrB,IAAI,CAAC,KAAK,CAAC,UAAU,CACtB,CAAC;QACJ,CAAC;QAED,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACrD,GAAG,CAAC,IAAI,EAAE,CAAC;QACX,aAAa,EAAE,CAAC;IAClB,CAAC;CACF,CAAC"}
@@ -25,9 +25,9 @@ export function roundedRectWithBorder(ctx, x, y, width, height, radius, borderGa
25
25
  innerH += height;
26
26
  //draw node content first
27
27
  ctx.save();
28
- const path = new Path2D();
29
- roundRect(path, x, y, width, height, radius);
30
- ctx.clip(path);
28
+ ctx.beginPath();
29
+ roundRect(ctx, x, y, width, height, radius);
30
+ ctx.clip();
31
31
  renderContext();
32
32
  ctx.restore();
33
33
  //draw border by clipping inner area from outer area
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../../../../src/core/shaders/canvas/utils/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../../../../src/core/shaders/canvas/utils/render.ts"],"names":[],"mappings":"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"}
@@ -129,24 +129,25 @@ export const Border = {
129
129
  float outerDist = box(boxUv + v_outerBorderUv, v_outerSize - edgeWidth);
130
130
  float innerDist = box(boxUv + v_innerBorderUv, v_innerSize - edgeWidth);
131
131
 
132
- if(u_borderGap == 0.0) {
133
- float outerAlpha = 1.0 - smoothstep(-0.5 * edgeWidth, 0.5 * edgeWidth, outerDist);
134
- float innerAlpha = 1.0 - smoothstep(-0.5 * edgeWidth, 0.5 * edgeWidth, innerDist);
135
- resultColor = mix(resultColor, u_borderColor, outerAlpha * u_borderColor.a);
136
- resultColor = mix(resultColor, color, innerAlpha);
137
- gl_FragColor = resultColor * u_alpha;
138
- return;
139
- }
132
+ float outerAlpha = 1.0 - smoothstep(-0.5 * edgeWidth, 0.5 * edgeWidth, outerDist);
133
+ float innerAlpha = 1.0 - smoothstep(-0.5 * edgeWidth, 0.5 * edgeWidth, innerDist);
140
134
 
141
135
  float nodeDist = box(boxUv, v_halfDimensions - edgeWidth);
142
136
  float nodeAlpha = 1.0 - smoothstep(-0.5 * edgeWidth, 0.5 * edgeWidth, nodeDist);
143
137
 
144
138
  float borderDist = max(-innerDist, outerDist);
145
139
  float borderAlpha = 1.0 - smoothstep(-0.5 * edgeWidth, 0.5 * edgeWidth, borderDist);
146
- resultColor = mix(resultColor, color, nodeAlpha);
147
- resultColor = mix(resultColor, u_borderColor, borderAlpha * u_borderColor.a);
148
140
 
149
- gl_FragColor = resultColor * u_alpha;
141
+ // Branchless gap select -- Mali 400 serializes uniform branches, so both
142
+ // composites are computed and mix()-selected on hasGap instead.
143
+ vec4 resNoGap = mix(resultColor, u_borderColor, outerAlpha * u_borderColor.a);
144
+ resNoGap = mix(resNoGap, color, innerAlpha);
145
+
146
+ vec4 resGap = mix(resultColor, color, nodeAlpha);
147
+ resGap = mix(resGap, u_borderColor, borderAlpha * u_borderColor.a);
148
+
149
+ float hasGap = step(0.0001, abs(u_borderGap));
150
+ gl_FragColor = mix(resNoGap, resGap, hasGap) * u_alpha;
150
151
  }
151
152
  `,
152
153
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Border.js","sourceRoot":"","sources":["../../../../../src/core/shaders/webgl/Border.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,GAEf,MAAM,gCAAgC,CAAC;AAIxC,MAAM,CAAC,MAAM,MAAM,GAAiC;IAClD,KAAK,EAAE,cAAc,CAAC,KAAK;IAC3B,MAAM,CAAC,IAAI;QACT,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,IAAI,CAAC,KAAM,CAAC,CAAS,CAAC,CAAC;QACxD,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,IAAI,CAAC,KAAM,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,KAAM,CAAC,GAAa,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,KAAM,CAAC,KAAe,CAAC,CAAC;IAC/D,CAAC;IACD,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+EP;IACD,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DT;CACF,CAAC"}
1
+ {"version":3,"file":"Border.js","sourceRoot":"","sources":["../../../../../src/core/shaders/webgl/Border.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,GAEf,MAAM,gCAAgC,CAAC;AAIxC,MAAM,CAAC,MAAM,MAAM,GAAiC;IAClD,KAAK,EAAE,cAAc,CAAC,KAAK;IAC3B,MAAM,CAAC,IAAI;QACT,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,IAAI,CAAC,KAAM,CAAC,CAAS,CAAC,CAAC;QACxD,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,IAAI,CAAC,KAAM,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,KAAM,CAAC,GAAa,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,KAAM,CAAC,KAAe,CAAC,CAAC;IAC/D,CAAC;IACD,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+EP;IACD,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DT;CACF,CAAC"}
@@ -36,11 +36,18 @@ export const HolePunch = {
36
36
  void main() {
37
37
  vec4 color = texture2D(u_texture, v_textureCoords) * v_color;
38
38
  vec2 p = (v_textureCoords.xy * u_dimensions.xy - u_pos) - u_size;
39
- vec4 r = u_radius;
40
- r.xy = (p.x > 0.0) ? r.yz : r.xw;
41
- r.x = (p.y > 0.0) ? r.y : r.x;
42
- p = abs(p) - u_size + r.x;
43
- float dist = min(max(p.x, p.y), 0.0) + length(max(p, 0.0)) - r.x + 2.0;
39
+
40
+ // Branchless radius selection based on quadrant
41
+ // x: TL, y: TR, z: BR, w: BL
42
+ vec2 stepVal = step(vec2(0.0), p);
43
+ float r = mix(
44
+ mix(u_radius.x, u_radius.y, stepVal.x),
45
+ mix(u_radius.w, u_radius.z, stepVal.x),
46
+ stepVal.y
47
+ );
48
+
49
+ p = abs(p) - u_size + r;
50
+ float dist = min(max(p.x, p.y), 0.0) + length(max(p, 0.0)) - r + 2.0;
44
51
  float roundedAlpha = 1.0 - smoothstep(0.0, u_pixelRatio, dist);
45
52
  gl_FragColor = mix(color, vec4(0.0), min(color.a, roundedAlpha));
46
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"HolePunch.js","sourceRoot":"","sources":["../../../../../src/core/shaders/webgl/HolePunch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EACL,iBAAiB,GAElB,MAAM,mCAAmC,CAAC;AAI3C,MAAM,CAAC,MAAM,SAAS,GAAoC;IACxD,KAAK,EAAE,iBAAiB,CAAC,KAAK;IAC9B,MAAM;QACJ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAM,CAAC;QAC1B,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1C,0DAA0D;QAC1D,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QAEvD,IAAI,CAAC,UAAU,CACb,UAAU,EACV,uBAAuB,CAAC,KAAK,CAAC,MAAc,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAChE,CAAC;IACJ,CAAC;IACD,eAAe,CAAC,KAAqB;QACnC,OAAO,eAAe,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;IACtD,CAAC;IACD,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCT;CACF,CAAC"}
1
+ {"version":3,"file":"HolePunch.js","sourceRoot":"","sources":["../../../../../src/core/shaders/webgl/HolePunch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EACL,iBAAiB,GAElB,MAAM,mCAAmC,CAAC;AAI3C,MAAM,CAAC,MAAM,SAAS,GAAoC;IACxD,KAAK,EAAE,iBAAiB,CAAC,KAAK;IAC9B,MAAM;QACJ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAM,CAAC;QAC1B,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1C,0DAA0D;QAC1D,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QAEvD,IAAI,CAAC,UAAU,CACb,UAAU,EACV,uBAAuB,CAAC,KAAK,CAAC,MAAc,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAChE,CAAC;IACJ,CAAC;IACD,eAAe,CAAC,KAAqB;QACnC,OAAO,eAAe,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;IACtD,CAAC;IACD,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCT;CACF,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { getNormalizedRgbaComponents } from '../../lib/utils.js';
2
2
  import { LinearGradientTemplate, } from '../templates/LinearGradientTemplate.js';
3
+ import { genGradientColors } from '../../renderers/webgl/internal/ShaderUtils.js';
3
4
  export const LinearGradient = {
4
5
  props: LinearGradientTemplate.props,
5
6
  update(node) {
@@ -45,7 +46,6 @@ export const LinearGradient = {
45
46
  # endif
46
47
 
47
48
  #define MAX_STOPS ${props.colors.length}
48
- #define LAST_STOP ${props.colors.length - 1}
49
49
 
50
50
  uniform float u_alpha;
51
51
 
@@ -61,24 +61,8 @@ export const LinearGradient = {
61
61
 
62
62
  vec4 getGradientColor(float dist) {
63
63
  dist = clamp(dist, 0.0, 1.0);
64
-
65
- if(dist <= u_stops[0]) {
66
- return u_colors[0];
67
- }
68
-
69
- if(dist >= u_stops[LAST_STOP]) {
70
- return u_colors[LAST_STOP];
71
- }
72
-
73
- for(int i = 0; i < LAST_STOP; i++) {
74
- float left = u_stops[i];
75
- float right = u_stops[i + 1];
76
- if(dist >= left && dist <= right) {
77
- float lDist = smoothstep(left, right, dist);
78
- return mix(u_colors[i], u_colors[i + 1], lDist);
79
- }
80
- }
81
- return u_colors[LAST_STOP];
64
+ ${genGradientColors(props.colors.length)}
65
+ return colorOut;
82
66
  }
83
67
 
84
68
  void main() {
@@ -1 +1 @@
1
- {"version":3,"file":"LinearGradient.js","sourceRoot":"","sources":["../../../../../src/core/shaders/webgl/LinearGradient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LinearGradient.js","sourceRoot":"","sources":["../../../../../src/core/shaders/webgl/LinearGradient.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { getNormalizedRgbaComponents } from '../../lib/utils.js';
2
2
  import { RadialGradientTemplate, } from '../templates/RadialGradientTemplate.js';
3
+ import { genGradientColors } from '../../renderers/webgl/internal/ShaderUtils.js';
3
4
  export const RadialGradient = {
4
5
  props: RadialGradientTemplate.props,
5
6
  update(node) {
@@ -26,7 +27,6 @@ export const RadialGradient = {
26
27
  # endif
27
28
 
28
29
  #define MAX_STOPS ${props.colors.length}
29
- #define LAST_STOP ${props.colors.length - 1}
30
30
 
31
31
  uniform float u_alpha;
32
32
  uniform vec2 u_dimensions;
@@ -45,25 +45,8 @@ export const RadialGradient = {
45
45
 
46
46
  vec4 getGradientColor(float dist) {
47
47
  dist = clamp(dist, 0.0, 1.0);
48
-
49
- if(dist <= u_stops[0]) {
50
- return u_colors[0];
51
- }
52
-
53
- if(dist >= u_stops[LAST_STOP]) {
54
- return u_colors[LAST_STOP];
55
- }
56
-
57
- for(int i = 0; i < LAST_STOP; i++) {
58
- float left = u_stops[i];
59
- float right = u_stops[i + 1];
60
- if(dist >= left && dist <= right) {
61
- float lDist = smoothstep(left, right, dist);
62
- return mix(u_colors[i], u_colors[i + 1], lDist);
63
- }
64
- }
65
-
66
- return u_colors[LAST_STOP];
48
+ ${genGradientColors(props.colors.length)}
49
+ return colorOut;
67
50
  }
68
51
 
69
52
  void main() {
@@ -1 +1 @@
1
- {"version":3,"file":"RadialGradient.js","sourceRoot":"","sources":["../../../../../src/core/shaders/webgl/RadialGradient.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EACL,sBAAsB,GAEvB,MAAM,wCAAwC,CAAC;AAIhD,MAAM,CAAC,MAAM,cAAc,GAAyC;IAClE,KAAK,EAAE,sBAAsB,CAAC,KAAK;IACnC,MAAM,CAAC,IAAc;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAM,CAAC;QAC1B,IAAI,CAAC,SAAS,CACZ,cAAc,EACd,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EACvB,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CACxB,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,2BAA2B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC;YAC3D,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,eAAe,CAAC,KAA0B;QACxC,OAAO,UAAU,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACzC,CAAC;IACD,QAAQ,CAAC,QAAuB,EAAE,KAA0B;QAC1D,OAAO;;;;;;;0BAOe,KAAK,CAAC,MAAM,CAAC,MAAM;0BACnB,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAiD5C,CAAC;IACJ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"RadialGradient.js","sourceRoot":"","sources":["../../../../../src/core/shaders/webgl/RadialGradient.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EACL,sBAAsB,GAEvB,MAAM,wCAAwC,CAAC;AAGhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAElF,MAAM,CAAC,MAAM,cAAc,GAAyC;IAClE,KAAK,EAAE,sBAAsB,CAAC,KAAK;IACnC,MAAM,CAAC,IAAc;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAM,CAAC;QAC1B,IAAI,CAAC,SAAS,CACZ,cAAc,EACd,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EACvB,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CACxB,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,2BAA2B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC;YAC3D,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,eAAe,CAAC,KAA0B;QACxC,OAAO,UAAU,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACzC,CAAC;IACD,QAAQ,CAAC,QAAuB,EAAE,KAA0B;QAC1D,OAAO;;;;;;;0BAOe,KAAK,CAAC,MAAM,CAAC,MAAM;;;;;;;;;;;;;;;;;;;UAmBnC,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;;;;;;;;;;;;;KAa3C,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { getNormalizedRgbaComponents } from '../../lib/utils.js';
2
2
  import { RadialProgressTemplate, } from '../templates/RadialProgressTemplate.js';
3
+ import { genGradientColors } from '../../renderers/webgl/internal/ShaderUtils.js';
3
4
  export const RadialProgress = {
4
5
  props: RadialProgressTemplate.props,
5
6
  time: true,
@@ -38,7 +39,6 @@ export const RadialProgress = {
38
39
  # endif
39
40
 
40
41
  #define MAX_STOPS ${maxStops}
41
- #define LAST_STOP ${maxStops - 1}
42
42
  #define CAP_ROUND ${props.cap}
43
43
  #define HAS_TRACK ${props.trackColor !== 0 ? 1 : 0}
44
44
 
@@ -68,22 +68,8 @@ export const RadialProgress = {
68
68
 
69
69
  vec4 getGradientColor(float dist) {
70
70
  dist = clamp(dist, 0.0, 1.0);
71
-
72
- if (dist <= u_stops[0]) {
73
- return u_colors[0];
74
- }
75
- if (dist >= u_stops[LAST_STOP]) {
76
- return u_colors[LAST_STOP];
77
- }
78
- for (int i = 0; i < LAST_STOP; i++) {
79
- float left = u_stops[i];
80
- float right = u_stops[i + 1];
81
- if (dist >= left && dist <= right) {
82
- float lDist = smoothstep(left, right, dist);
83
- return mix(u_colors[i], u_colors[i + 1], lDist);
84
- }
85
- }
86
- return u_colors[LAST_STOP];
71
+ ${genGradientColors(maxStops)}
72
+ return colorOut;
87
73
  }
88
74
 
89
75
  // Coverage of a disc centered at \`c\` with radius \`r\` at pixel \`p\` (with 1px AA)
@@ -97,9 +83,13 @@ export const RadialProgress = {
97
83
  // Effective progress: when u_duration > 0 the shader self-animates from
98
84
  // u_time, otherwise we use the static u_progress prop. countdown == 1
99
85
  // drains (1 -> 0), countdown == 0 fills (0 -> 1).
100
- float cyclePos = u_duration > 0.0 ? fract(u_time / u_duration) : 0.0;
101
- float animProgress = u_countdown > 0.5 ? 1.0 - cyclePos : cyclePos;
102
- float progress = u_duration > 0.0 ? animProgress : u_progress;
86
+ // Branchless (Mali 400 serializes uniform branches): the mix()-guarded
87
+ // denominator keeps the division finite when u_duration == 0 -- a
88
+ // max()-clamped epsilon would overflow fp16 mediump to Inf/NaN.
89
+ float hasDuration = step(0.0001, u_duration);
90
+ float cyclePos = fract(u_time / mix(1.0, u_duration, hasDuration)) * hasDuration;
91
+ float animProgress = mix(cyclePos, 1.0 - cyclePos, step(0.5, u_countdown));
92
+ float progress = mix(u_progress, animProgress, hasDuration);
103
93
 
104
94
  vec2 p = v_nodeCoords.xy * u_dimensions - u_center;
105
95
  float dist = length(p);
@@ -116,7 +106,7 @@ export const RadialProgress = {
116
106
 
117
107
  // Filled arc coverage (1 if in filled arc, else 0). When progress >= 1 the
118
108
  // whole ring is filled regardless of \`t\` -- guards against the mod() seam.
119
- float arcCoverage = progress >= 1.0 ? 1.0 : step(t, progress);
109
+ float arcCoverage = max(step(1.0, progress), step(t, progress));
120
110
  float fillCoverage = ringCoverage * arcCoverage;
121
111
 
122
112
  #if CAP_ROUND
@@ -132,8 +122,10 @@ export const RadialProgress = {
132
122
  #endif
133
123
 
134
124
  // Sample gradient. Normalize \`t\` to the *filled* portion so the gradient
135
- // spans the visible arc end-to-end regardless of progress.
136
- float gradT = progress > 0.0 ? clamp(t / progress, 0.0, 1.0) : 0.0;
125
+ // spans the visible arc end-to-end regardless of progress. mix()-guarded
126
+ // denominator: safe at progress == 0 without fp16 overflow.
127
+ float hasProgress = step(0.000001, progress);
128
+ float gradT = clamp(t / mix(1.0, progress, hasProgress), 0.0, 1.0) * hasProgress;
137
129
  vec4 fillCol = getGradientColor(gradT);
138
130
 
139
131
  // Composite: track under fill (if track enabled), both gated by ringCoverage.
@@ -1 +1 @@
1
- {"version":3,"file":"RadialProgress.js","sourceRoot":"","sources":["../../../../../src/core/shaders/webgl/RadialProgress.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RadialProgress.js","sourceRoot":"","sources":["../../../../../src/core/shaders/webgl/RadialProgress.ts"],"names":[],"mappings":"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"}
@@ -53,6 +53,15 @@ export const RoundedWithBorder = {
53
53
  v_innerSize = vec2(0.0);
54
54
  v_outerSize = vec2(0.0);
55
55
 
56
+ // Defaults for the zero-border case: the fragment shader is branchless
57
+ // and always evaluates the border SDFs, so every varying must carry a
58
+ // finite value (an unwritten varying is undefined and can poison the
59
+ // final mix() with NaN).
60
+ v_outerBorderUv = vec2(0.0);
61
+ v_innerBorderUv = vec2(0.0);
62
+ v_outerBorderRadius = u_radius;
63
+ v_innerBorderRadius = u_radius;
64
+
56
65
  if(borderZero == 0.0) {
57
66
  vec4 adjustedBorderWidth = u_borderWidth - 1.0 + clamp(u_borderWidth, -1.0, 1.0);
58
67
 
@@ -61,9 +70,6 @@ export const RoundedWithBorder = {
61
70
  float borderBottom = adjustedBorderWidth.z;
62
71
  float borderLeft = adjustedBorderWidth.w;
63
72
 
64
- v_outerBorderUv = vec2(0.0);
65
- v_innerBorderUv = vec2(0.0);
66
-
67
73
  vec2 borderSize = vec2(borderRight + borderLeft, borderTop + borderBottom);
68
74
  vec2 extraSize = borderSize * u_borderAlign;
69
75
  float gapLeft = step(0.001, borderLeft) * u_borderGap;
@@ -148,52 +154,49 @@ export const RoundedWithBorder = {
148
154
  varying vec4 v_outerBorderRadius;
149
155
  varying vec2 v_halfDimensions;
150
156
 
157
+ // Branchless quadrant radius select (r: x TL, y TR, z BR, w BL) --
158
+ // Mali 400-class fragment pipelines serialize any branch, ternaries included.
159
+ float quadRadius(vec2 p, vec4 r) {
160
+ vec2 stepVal = step(vec2(0.0), p);
161
+ return mix(mix(r.x, r.y, stepVal.x), mix(r.w, r.z, stepVal.x), stepVal.y);
162
+ }
163
+
151
164
  float roundedBox(vec2 p, vec2 s, vec4 r) {
152
- r.xy = (p.x > 0.0) ? r.yz : r.xw;
153
- r.x = (p.y > 0.0) ? r.y : r.x;
154
- vec2 q = abs(p) - s + r.x;
155
- return (min(max(q.x, q.y), 0.0) + length(max(q, 0.0))) - r.x;
165
+ float rad = quadRadius(p, r);
166
+ vec2 q = abs(p) - s + rad;
167
+ return (min(max(q.x, q.y), 0.0) + length(max(q, 0.0))) - rad;
156
168
  }
157
169
 
158
170
  void main() {
159
171
  vec4 color = texture2D(u_texture, v_textureCoords) * v_color;
160
- vec4 resultColor = vec4(0.0);
161
172
  vec2 boxUv = v_nodeCoords.xy * u_dimensions - v_halfDimensions;
162
173
  float borderZero = 1.0 - step(0.001, dot(abs(u_borderWidth), vec4(1.0)));
163
174
  float edgeWidth = 1.0 / u_pixelRatio;
164
175
 
165
- float nodeDist;
166
- float nodeAlpha;
167
-
168
- if(borderZero == 1.0) {
169
- nodeDist = roundedBox(boxUv, v_halfDimensions - edgeWidth, u_radius);
170
- nodeAlpha = 1.0 - smoothstep(-0.5 * edgeWidth, 0.5 * edgeWidth, nodeDist);
171
- gl_FragColor = (color * nodeAlpha) * u_alpha;
172
- return;
173
- }
176
+ float nodeDist = roundedBox(boxUv, v_halfDimensions - edgeWidth, u_radius);
177
+ float nodeAlpha = 1.0 - smoothstep(-0.5 * edgeWidth, 0.5 * edgeWidth, nodeDist);
174
178
 
175
179
  float outerDist = roundedBox(boxUv + v_outerBorderUv, v_outerSize - edgeWidth, v_outerBorderRadius);
176
180
  float innerDist = roundedBox(boxUv + v_innerBorderUv, v_innerSize - edgeWidth, v_innerBorderRadius);
177
-
178
- if(u_borderGap == 0.0) {
179
- float outerAlpha = 1.0 - smoothstep(-0.5 * edgeWidth, 0.5 * edgeWidth, outerDist);
180
- float innerAlpha = 1.0 - smoothstep(-0.5 * edgeWidth, 0.5 * edgeWidth, innerDist);
181
- resultColor = mix(resultColor, u_borderColor, outerAlpha * u_borderColor.a);
182
- resultColor = mix(resultColor, color, innerAlpha);
183
- gl_FragColor = resultColor * u_alpha;
184
- return;
185
- }
186
-
187
- nodeDist = roundedBox(boxUv, v_halfDimensions - edgeWidth, u_radius);
188
- nodeAlpha = 1.0 - smoothstep(-0.5 * edgeWidth, 0.5 * edgeWidth, nodeDist);
181
+ float outerAlpha = 1.0 - smoothstep(-0.5 * edgeWidth, 0.5 * edgeWidth, outerDist);
189
182
  float innerAlpha = 1.0 - smoothstep(-0.5 * edgeWidth, 0.5 * edgeWidth, innerDist);
190
- float gapAlpha = max(0.0, innerAlpha - nodeAlpha);
191
183
 
184
+ float gapAlpha = max(0.0, innerAlpha - nodeAlpha);
192
185
  float borderDist = max(-innerDist, outerDist);
193
186
  float borderAlpha = 1.0 - smoothstep(-0.5 * edgeWidth, 0.5 * edgeWidth, borderDist);
194
187
 
195
- resultColor = (color * nodeAlpha) + (u_fillColor * gapAlpha);
196
- resultColor = mix(resultColor, u_borderColor, borderAlpha * u_borderColor.a);
188
+ // Branchless path select -- Mali 400 serializes uniform branches, so all
189
+ // three composites (no gap / gap / zero border) are computed and
190
+ // mix()-selected instead of if/else'd.
191
+ vec4 resNoGap = mix(vec4(0.0), u_borderColor, outerAlpha * u_borderColor.a);
192
+ resNoGap = mix(resNoGap, color, innerAlpha);
193
+
194
+ vec4 resGap = (color * nodeAlpha) + (u_fillColor * gapAlpha);
195
+ resGap = mix(resGap, u_borderColor, borderAlpha * u_borderColor.a);
196
+
197
+ float hasGap = step(0.0001, abs(u_borderGap));
198
+ vec4 resultColor = mix(resNoGap, resGap, hasGap);
199
+ resultColor = mix(resultColor, color * nodeAlpha, borderZero);
197
200
  gl_FragColor = resultColor * u_alpha;
198
201
  }
199
202
  `,
@@ -1 +1 @@
1
- {"version":3,"file":"RoundedWithBorder.js","sourceRoot":"","sources":["../../../../../src/core/shaders/webgl/RoundedWithBorder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAG7D,OAAO,EACL,yBAAyB,GAE1B,MAAM,2CAA2C,CAAC;AAEnD,MAAM,CAAC,MAAM,iBAAiB,GAA4C;IACxE,KAAK,EAAE,yBAAyB,CAAC,KAAK;IACtC,MAAM,CAAC,IAAc;QACnB,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,IAAI,CAAC,KAAM,CAAC,cAAc,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,KAAM,CAAC,aAAa,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,IAAI,CAAC,KAAM,CAAC,UAAU,CAAS,CAAC,CAAC;QAClE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,KAAM,CAAC,YAAY,CAAW,CAAC,CAAC;QACnE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,KAAM,CAAC,cAAc,CAAW,CAAC,CAAC;QAEvE,IAAI,CAAC,UAAU,CACb,UAAU,EACV,uBAAuB,CAAC,IAAI,CAAC,KAAM,CAAC,MAAc,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CACpE,CAAC;IACJ,CAAC;IACD,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyGP;IACD,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgFT;CACF,CAAC"}
1
+ {"version":3,"file":"RoundedWithBorder.js","sourceRoot":"","sources":["../../../../../src/core/shaders/webgl/RoundedWithBorder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAG7D,OAAO,EACL,yBAAyB,GAE1B,MAAM,2CAA2C,CAAC;AAEnD,MAAM,CAAC,MAAM,iBAAiB,GAA4C;IACxE,KAAK,EAAE,yBAAyB,CAAC,KAAK;IACtC,MAAM,CAAC,IAAc;QACnB,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,IAAI,CAAC,KAAM,CAAC,cAAc,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,KAAM,CAAC,aAAa,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,IAAI,CAAC,KAAM,CAAC,UAAU,CAAS,CAAC,CAAC;QAClE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,KAAM,CAAC,YAAY,CAAW,CAAC,CAAC;QACnE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,KAAM,CAAC,cAAc,CAAW,CAAC,CAAC;QAEvE,IAAI,CAAC,UAAU,CACb,UAAU,EACV,uBAAuB,CAAC,IAAI,CAAC,KAAM,CAAC,MAAc,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CACpE,CAAC;IACJ,CAAC;IACD,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+GP;IACD,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6ET;CACF,CAAC"}