@jbrowse/render-core 5.0.0-beta.13 → 5.0.0-beta.15
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.
- package/esm/OverlayCanvas.d.ts +3 -2
- package/esm/OverlayCanvas.js +4 -2
- package/esm/RenderCanvas.d.ts +4 -3
- package/esm/RenderCanvas.js +4 -2
- package/esm/ScrollLockedOverlay.d.ts +2 -2
- package/esm/ScrollLockedOverlay.js +3 -2
- package/esm/blockClipUtils.d.ts +5 -5
- package/esm/blockClipUtils.js +4 -3
- package/esm/canvas2dUtils.d.ts +15 -21
- package/esm/canvas2dUtils.js +25 -55
- package/esm/colorRampLut.d.ts +2 -2
- package/esm/colorRampLut.js +2 -2
- package/esm/coverageBand.d.ts +1 -2
- package/esm/coverageBand.js +1 -6
- package/esm/coverageBandBuffers.d.ts +8 -5
- package/esm/createRenderingBackend.d.ts +1 -1
- package/esm/displayPhase.d.ts +5 -9
- package/esm/displayPhase.js +2 -2
- package/esm/hal/mockHal.d.ts +3 -4
- package/esm/hal/mockHal.js +5 -4
- package/esm/hal/types.d.ts +5 -5
- package/esm/hal/webgl2Hal.d.ts +4 -1
- package/esm/hal/webgl2Hal.js +15 -6
- package/esm/hal/webgpuHal.js +2 -2
- package/esm/linkFeet.d.ts +4 -0
- package/esm/linkFeet.js +7 -0
- package/esm/marks/barMark.d.ts +1 -1
- package/esm/marks/colorFill.d.ts +4 -4
- package/esm/marks/colorFill.js +4 -4
- package/esm/marks/connectorMark.d.ts +48 -0
- package/esm/marks/connectorMark.js +285 -0
- package/esm/marks/drawAgainstHit.d.ts +1 -1
- package/esm/marks/drawAgainstHit.js +4 -4
- package/esm/marks/glyphPaint.d.ts +5 -4
- package/esm/marks/glyphPaint.js +17 -7
- package/esm/marks/index.d.ts +6 -3
- package/esm/marks/index.js +5 -3
- package/esm/marks/lineMark.d.ts +44 -10
- package/esm/marks/lineMark.js +20 -19
- package/esm/marks/linkMark.d.ts +22 -5
- package/esm/marks/linkMark.js +103 -25
- package/esm/marks/markBackend.d.ts +1 -1
- package/esm/marks/markBackend.js +1 -1
- package/esm/marks/markRamp.d.ts +11 -11
- package/esm/marks/markRamp.js +9 -9
- package/esm/marks/pointMark.d.ts +11 -5
- package/esm/marks/pointMark.js +34 -9
- package/esm/marks/rowLane.d.ts +3 -3
- package/esm/marks/rowLane.js +2 -2
- package/esm/marks/rowTable.d.ts +5 -5
- package/esm/marks/rowTable.js +4 -4
- package/esm/marks/ruleMark.js +1 -0
- package/esm/marks/spanMark.d.ts +4 -4
- package/esm/marks/types.d.ts +4 -4
- package/esm/marks/types.js +5 -0
- package/esm/perRegionRenderingBackend.d.ts +1 -1
- package/esm/perRegionRenderingBackend.js +1 -1
- package/esm/regionDataMap.d.ts +2 -2
- package/esm/regionDataMap.js +2 -2
- package/esm/shaders/capsule.js.generated.d.ts +1 -1
- package/esm/shaders/capsule.js.generated.js +2 -2
- package/esm/shaders/connectorMark.consts.generated.d.ts +11 -0
- package/esm/shaders/connectorMark.consts.generated.js +13 -0
- package/esm/shaders/{coverageIndicator.generated.d.ts → connectorMark.generated.d.ts} +2 -1
- package/esm/shaders/connectorMark.generated.js +8 -0
- package/esm/shaders/connectorMark.glsl.generated.d.ts +2 -0
- package/esm/shaders/connectorMark.glsl.generated.js +4 -0
- package/esm/shaders/connectorMark.iface.generated.d.ts +88 -0
- package/esm/shaders/connectorMark.iface.generated.js +1194 -0
- package/esm/shaders/connectorMark.js.generated.d.ts +5 -0
- package/esm/shaders/connectorMark.js.generated.js +47 -0
- package/esm/shaders/connectorMark.wgsl.generated.d.ts +1 -0
- package/esm/shaders/connectorMark.wgsl.generated.js +3 -0
- package/esm/shaders/coverageInterbase.glsl.generated.d.ts +1 -1
- package/esm/shaders/coverageInterbase.glsl.generated.js +1 -1
- package/esm/shaders/coverageInterbase.wgsl.generated.d.ts +1 -1
- package/esm/shaders/coverageInterbase.wgsl.generated.js +1 -1
- package/esm/shaders/curveDistance.js.generated.d.ts +3 -0
- package/esm/shaders/curveDistance.js.generated.js +104 -0
- package/esm/shaders/lineCenterMark.glsl.generated.d.ts +2 -2
- package/esm/shaders/lineCenterMark.glsl.generated.js +2 -2
- package/esm/shaders/lineCenterMark.wgsl.generated.d.ts +1 -1
- package/esm/shaders/lineCenterMark.wgsl.generated.js +1 -1
- package/esm/shaders/linkMark.consts.generated.d.ts +1 -0
- package/esm/shaders/linkMark.consts.generated.js +1 -0
- package/esm/shaders/linkMark.glsl.generated.d.ts +2 -2
- package/esm/shaders/linkMark.glsl.generated.js +2 -2
- package/esm/shaders/linkMark.js.generated.d.ts +2 -1
- package/esm/shaders/linkMark.js.generated.js +30 -1
- package/esm/shaders/linkMark.wgsl.generated.d.ts +1 -1
- package/esm/shaders/linkMark.wgsl.generated.js +1 -1
- package/esm/shaders/pointMark.glsl.generated.d.ts +1 -1
- package/esm/shaders/pointMark.glsl.generated.js +1 -1
- package/esm/shaders/pointMark.iface.generated.d.ts +10 -8
- package/esm/shaders/pointMark.iface.generated.js +18 -16
- package/esm/shaders/pointMark.wgsl.generated.d.ts +1 -1
- package/esm/shaders/pointMark.wgsl.generated.js +1 -1
- package/package.json +7 -4
- package/src/shaders/arcHull.test.ts +87 -0
- package/src/shaders/barMark.slang +2 -2
- package/src/shaders/capsule.js.generated.ts +2 -2
- package/src/shaders/capsule.slang +69 -24
- package/src/shaders/clipStrip.slang +1 -1
- package/src/shaders/colorPack.slang +2 -2
- package/src/shaders/colorRampLut.slang +7 -7
- package/src/shaders/connectorMark.consts.generated.ts +24 -0
- package/src/shaders/connectorMark.generated.ts +12 -0
- package/src/shaders/connectorMark.glsl.generated.ts +6 -0
- package/src/shaders/connectorMark.iface.generated.ts +1270 -0
- package/src/shaders/connectorMark.js.generated.ts +52 -0
- package/src/shaders/connectorMark.slang +287 -0
- package/src/shaders/connectorMark.wgsl.generated.ts +4 -0
- package/src/shaders/coverageBand.slang +10 -12
- package/src/shaders/coverageInterbase.glsl.generated.ts +1 -1
- package/src/shaders/coverageInterbase.slang +24 -21
- package/src/shaders/coverageInterbase.wgsl.generated.ts +1 -1
- package/src/shaders/coverageSnp.slang +1 -1
- package/src/shaders/curveDistance.js.generated.ts +100 -0
- package/src/shaders/curveDistance.slang +104 -1
- package/src/shaders/farDome.test.ts +117 -0
- package/src/shaders/hpClampFloor.test.ts +0 -4
- package/src/shaders/lineCenterMark.glsl.generated.ts +2 -2
- package/src/shaders/lineCenterMark.slang +14 -22
- package/src/shaders/lineCenterMark.wgsl.generated.ts +1 -1
- package/src/shaders/lineCommon.slang +10 -10
- package/src/shaders/lineStepMark.slang +5 -5
- package/src/shaders/linkMark.consts.generated.ts +2 -0
- package/src/shaders/linkMark.glsl.generated.ts +2 -2
- package/src/shaders/linkMark.js.generated.ts +27 -1
- package/src/shaders/linkMark.slang +58 -18
- package/src/shaders/linkMark.wgsl.generated.ts +1 -1
- package/src/shaders/markColor.slang +10 -10
- package/src/shaders/pointMark.glsl.generated.ts +1 -1
- package/src/shaders/pointMark.iface.generated.ts +19 -16
- package/src/shaders/pointMark.slang +12 -8
- package/src/shaders/pointMark.wgsl.generated.ts +1 -1
- package/src/shaders/rowRect.slang +3 -3
- package/src/shaders/rowTable.slang +7 -7
- package/src/shaders/scoreScale.slang +1 -1
- package/src/shaders/spanMark.slang +5 -5
- package/src/shaders/viewRegion.slang +13 -0
- package/esm/shaders/coverageIndicator.generated.js +0 -7
- package/esm/shaders/coverageIndicator.glsl.generated.d.ts +0 -2
- package/esm/shaders/coverageIndicator.glsl.generated.js +0 -4
- package/esm/shaders/coverageIndicator.iface.generated.d.ts +0 -85
- package/esm/shaders/coverageIndicator.iface.generated.js +0 -114
- package/esm/shaders/coverageIndicator.wgsl.generated.d.ts +0 -1
- package/esm/shaders/coverageIndicator.wgsl.generated.js +0 -3
- package/src/shaders/coverageIndicator.generated.ts +0 -11
- package/src/shaders/coverageIndicator.glsl.generated.ts +0 -6
- package/src/shaders/coverageIndicator.iface.generated.ts +0 -172
- package/src/shaders/coverageIndicator.slang +0 -61
- package/src/shaders/coverageIndicator.wgsl.generated.ts +0 -4
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
// Sampling a 256×1
|
|
1
|
+
// Sampling a 256×1 color-ramp LUT texture by a [0,1] scalar — the mechanism
|
|
2
2
|
// HiC's contact map and both LD heatmap variants reached independently, down to
|
|
3
3
|
// the binding slot, and wiggle density's third spelling. The module owns ONLY
|
|
4
|
-
// the sampling: each consumer keeps its own scale (`
|
|
5
|
-
//
|
|
4
|
+
// the sampling: each consumer keeps its own scale (`normalizeScore` for all
|
|
5
|
+
// three, LD adding its `ldValueComputed` sentinel gate and wiggle its
|
|
6
6
|
// `densityGradientT`) and declares its own `[[vk::binding(2, 0)]]
|
|
7
7
|
// Sampler2D<float4> colorRamp;` — a module can take a sampler as a parameter
|
|
8
8
|
// but not declare the binding for its importer, and inherits the `linear`
|
|
@@ -27,7 +27,7 @@ module colorRampLut;
|
|
|
27
27
|
// Where a normalized value `t` reads the ramp when its middle stop sits at
|
|
28
28
|
// `mid`: both sides of the middle on one scale, the farther end reaching its
|
|
29
29
|
// end stop and the nearer stopping short, so equal distances from the middle
|
|
30
|
-
// take equal
|
|
30
|
+
// take equal colors — ggplot2's `rescale_mid`. A `mid` of 0.5 reads `t`
|
|
31
31
|
// itself, exactly, so a ramp with no middle declared reads its table as it
|
|
32
32
|
// always did, and a moving domain moves one uniform and no table.
|
|
33
33
|
public float rampMidT(float t, float mid) {
|
|
@@ -40,12 +40,12 @@ public float rampMidT(float t, float mid) {
|
|
|
40
40
|
// and sampled by another is a half-shade of drift at every entry.
|
|
41
41
|
public static const float RAMP_LUT_ENTRIES = 256.0;
|
|
42
42
|
|
|
43
|
-
// The
|
|
43
|
+
// The color at `t` in [0, 1], straight (non-premultiplied) alpha. Sampled at
|
|
44
44
|
// the texture's vertical center, mip level 0 — the ramp has no other row and no
|
|
45
45
|
// other level.
|
|
46
46
|
//
|
|
47
47
|
// `t` is remapped into texel space rather than passed through. The builder
|
|
48
|
-
// defines entry i as the
|
|
48
|
+
// defines entry i as the color at `i / (N - 1)`, while a linear-filtered
|
|
49
49
|
// texture puts entry i's center at `(i + 0.5) / N`, so sampling at `t` returns
|
|
50
50
|
// a blend of two neighbours at every entry but the ends — half a step off the
|
|
51
51
|
// table the Canvas2D and SVG twins index. `clamp` lands an out-of-range scalar
|
|
@@ -55,7 +55,7 @@ public float4 rampColor(Sampler2D<float4> ramp, float t) {
|
|
|
55
55
|
return ramp.SampleLevel(float2(u, 0.5), 0.0);
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
// The same sample with its
|
|
58
|
+
// The same sample with its color multiplied through its alpha, for a fragment
|
|
59
59
|
// returned under `//! blend: premultiplied`. Alpha itself is unchanged, so a
|
|
60
60
|
// consumer's own alpha test (HiC's MIN_VISIBLE_ALPHA discard) reads the same
|
|
61
61
|
// number either side of this call.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// AUTO-GENERATED by packages/shader-tools/src/shader-codegen from connectorMark.slang.
|
|
2
|
+
// Do not edit. Run `pnpm gen:shaders` to regenerate.
|
|
3
|
+
|
|
4
|
+
export const CONNECTOR_CURVE_SEGMENTS = 48
|
|
5
|
+
|
|
6
|
+
export const CONNECTOR_BOW = -1e+30
|
|
7
|
+
|
|
8
|
+
export const CONNECTOR_MAX_REACH_PX = 110
|
|
9
|
+
|
|
10
|
+
export const CONNECTOR_APEX_RATIO = 0.75
|
|
11
|
+
|
|
12
|
+
export const CONNECTOR_MAX_HANDLE_PX = 200
|
|
13
|
+
|
|
14
|
+
export const CONNECTOR_MINUS_1 = 1
|
|
15
|
+
|
|
16
|
+
export const CONNECTOR_MINUS_2 = 2
|
|
17
|
+
|
|
18
|
+
export const CONNECTOR_LEADING_2 = 4
|
|
19
|
+
|
|
20
|
+
export const CONNECTOR_STRAIGHT = 8
|
|
21
|
+
|
|
22
|
+
export const CONNECTOR_DASHED = 16
|
|
23
|
+
|
|
24
|
+
export const CONNECTOR_ARROW = 32
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// AUTO-GENERATED by packages/shader-tools/src/shader-codegen from connectorMark.slang.
|
|
2
|
+
// Do not edit. Run `pnpm gen:shaders` to regenerate.
|
|
3
|
+
|
|
4
|
+
import type { ShaderSource } from '@jbrowse/render-core/hal'
|
|
5
|
+
|
|
6
|
+
export * from './connectorMark.iface.generated.ts'
|
|
7
|
+
export * from './connectorMark.consts.generated.ts'
|
|
8
|
+
|
|
9
|
+
export const SOURCE: ShaderSource = {
|
|
10
|
+
wgsl: () => import('./connectorMark.wgsl.generated.ts'),
|
|
11
|
+
glsl: () => import('./connectorMark.glsl.generated.ts'),
|
|
12
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// AUTO-GENERATED by packages/shader-tools/src/shader-codegen from connectorMark.slang.
|
|
2
|
+
// Do not edit. Run `pnpm gen:shaders` to regenerate.
|
|
3
|
+
|
|
4
|
+
export const GLSL_VERTEX = "#version 300 es\nprecision highp float;\nprecision highp int;\n\n\n\nlayout(std140) uniform Uniforms\n{\n float canvasHeight_0;\n float canvasWidth_0;\n float devicePixelRatio_0;\n float rowOffsetPx_0;\n float rowPitchPx_0;\n float maxHandlePx_0;\n float dashPx_0;\n float gapPx_0;\n float arrowPx_0;\n uint regionCount_0;\n float zero_0;\n vec4 ownEntry_0;\n vec4 regionTable_0[256];\n}u_0;\n\nvec2 hpSplitUint_0(uint value_0)\n{\n\n uint lo_0 = value_0 & 4095U;\n\n return vec2(float(value_0 - lo_0), float(lo_0));\n}\n\n\nfloat hpViewportOffsetBp_0(vec2 splitPos_0, vec3 bpRange_0, float hpZero_0)\n{\n\n float floorBp_0 = -3.00000000549775576e+38 + hpZero_0;\n\n\n return max(bpRange_0.x - splitPos_0.x, floorBp_0) + max(bpRange_0.y - splitPos_0.y, floorBp_0);\n}\n\n\nfloat viewRegionPx_0(uint bp_0, vec4 r_0, float hpZero_1)\n{\n\n return r_0.x - hpViewportOffsetBp_0(hpSplitUint_0(bp_0), vec3(r_0.y, r_0.z, 0.0), hpZero_1) * r_0.w;\n}\n\n\nfloat connectorBudgetPx_0(float dx_0, float dy_0)\n{\n\n float _S1 = min(abs(dy_0), 150.0);\n return sqrt(dx_0 * dx_0 + _S1 * _S1) * 0.30000001192092896;\n}\n\nfloat connectorHandlePx_0(float budget_0, float maxHandlePx_1)\n{\n\n return min(maxHandlePx_1, budget_0);\n}\n\n\n\n\nfloat connectorLiftPx_0(float budget_1, float dy_1, float bend_0)\n{\n\n float _S2;\n\n if(bend_0 < -1.00000001504746622e+29)\n {\n\n _S2 = min(budget_1, max(0.0, 30.0 - abs(dy_1)));\n\n }\n else\n {\n\n _S2 = - min(bend_0, 110.0) / 0.75;\n\n }\n\n return _S2;\n}\n\n\nfloat bitSet_0(uint bits_0, uint bit_0)\n{\n\n float _S3;\n if((bits_0 & bit_0) != 0U)\n {\n\n _S3 = 1.0;\n\n }\n else\n {\n\n _S3 = 0.0;\n\n }\n\n return _S3;\n}\n\n\nfloat connectorTangent_0(float strand_0, float leading_0, float reversed_0)\n{\n\n float _S4;\n if(leading_0 != 0.0)\n {\n\n _S4 = -1.0;\n\n }\n else\n {\n\n _S4 = 1.0;\n\n }\n\n float _S5 = strand_0 * _S4;\n\n if(reversed_0 != 0.0)\n {\n\n _S4 = -1.0;\n\n }\n else\n {\n\n _S4 = 1.0;\n\n }\n\n return _S5 * _S4;\n}\n\n\nstruct Cubic_0\n{\n vec2 p0_0;\n vec2 p1_0;\n vec2 p2_0;\n vec2 p3_0;\n};\n\n\nstruct ConnectorInstance_0\n{\n uint x_0;\n uint x2_0;\n uint x2Region_0;\n uint row_0;\n uint row2_0;\n float bend_1;\n float width_0;\n uint color_0;\n uint bits_1;\n};\n\n\nCubic_0 placeCubic_0(ConnectorInstance_0 inst_0, vec4 entry2_0)\n{\n\n Cubic_0 c_0;\n c_0.p0_0 = vec2(viewRegionPx_0(inst_0.x_0, u_0.ownEntry_0, u_0.zero_0), u_0.rowOffsetPx_0 + float(inst_0.row_0) * u_0.rowPitchPx_0);\n\n c_0.p3_0 = vec2(viewRegionPx_0(inst_0.x2_0, entry2_0, u_0.zero_0), u_0.rowOffsetPx_0 + float(inst_0.row2_0) * u_0.rowPitchPx_0);\n\n if(((inst_0.bits_1) & 8U) != 0U)\n {\n\n c_0.p1_0 = c_0.p0_0;\n c_0.p2_0 = c_0.p3_0;\n return c_0;\n }\n vec2 d_0 = c_0.p3_0 - c_0.p0_0;\n float _S6 = d_0.y;\n\n float budget_2 = connectorBudgetPx_0(d_0.x, _S6);\n float handle_0 = connectorHandlePx_0(budget_2, u_0.maxHandlePx_0);\n float lift_0 = connectorLiftPx_0(budget_2, _S6, inst_0.bend_1);\n float _S7 = 1.0 - 2.0 * bitSet_0(inst_0.bits_1, 1U);\n\n float _S8;\n if((u_0.ownEntry_0.w) < 0.0)\n {\n\n _S8 = 1.0;\n\n }\n else\n {\n\n _S8 = 0.0;\n\n }\n\n float t1_0 = connectorTangent_0(_S7, 0.0, _S8);\n\n float _S9 = 1.0 - 2.0 * bitSet_0(inst_0.bits_1, 2U);\n float _S10 = bitSet_0(inst_0.bits_1, 4U);\n if((entry2_0.w) < 0.0)\n {\n\n _S8 = 1.0;\n\n }\n else\n {\n\n _S8 = 0.0;\n\n }\n\n float t2_0 = connectorTangent_0(_S9, _S10, _S8);\n\n\n c_0.p1_0 = vec2(c_0.p0_0.x + handle_0 * t1_0, c_0.p0_0.y - lift_0);\n c_0.p2_0 = vec2(c_0.p3_0.x + handle_0 * t2_0, c_0.p3_0.y - lift_0);\n return c_0;\n}\n\n\nfloat connectorStrokePx_0(float width_1, float dpr_0)\n{\n\n return max(width_1, 1.5 / dpr_0);\n}\n\n\nfloat aaPx_0(float dpr_1)\n{\n\n return 1.0 / max(dpr_1, 1.0);\n}\n\n\nfloat aaHalfPx_0(float dpr_2)\n{\n\n return 0.5 * aaPx_0(dpr_2);\n}\n\n\nvec2 cubicDirection_0(Cubic_0 c_1, float t_0)\n{\n\n float s_0 = 1.0 - t_0;\n\n vec2 d_1 = 3.0 * s_0 * s_0 * (c_1.p1_0 - c_1.p0_0) + 6.0 * s_0 * t_0 * (c_1.p2_0 - c_1.p1_0) + 3.0 * t_0 * t_0 * (c_1.p3_0 - c_1.p2_0);\n float len_0 = length(d_1);\n if(len_0 > 9.99999997475242708e-07)\n {\n\n return d_1 / len_0;\n }\n\n vec2 chord_0 = c_1.p3_0 - c_1.p0_0;\n float chordLen_0 = length(chord_0);\n\n vec2 _S11;\n if(chordLen_0 > 9.99999997475242708e-07)\n {\n\n _S11 = chord_0 / chordLen_0;\n\n }\n else\n {\n\n _S11 = vec2(1.0, 0.0);\n\n }\n\n return _S11;\n}\n\n\nvec2 cubicAt_0(Cubic_0 c_2, float t_1)\n{\n\n float s_1 = 1.0 - t_1;\n float _S12 = 3.0 * s_1;\n\n return s_1 * s_1 * s_1 * c_2.p0_0 + _S12 * s_1 * t_1 * c_2.p1_0 + _S12 * t_1 * t_1 * c_2.p2_0 + t_1 * t_1 * t_1 * c_2.p3_0;\n}\n\n\nfloat lengthTo_0(Cubic_0 c_3, uint seg_0)\n{\n\n vec2 prev_0 = c_3.p0_0;\n\n uint k_0 = 1U;\n\n float total_0 = 0.0;\n\n\n for(;;)\n {\n\n if(k_0 <= seg_0)\n {\n }\n else\n {\n\n break;\n }\n\n vec2 next_0 = cubicAt_0(c_3, float(k_0) / 48.0);\n float total_1 = total_0 + length(next_0 - prev_0);\n\n uint _S13 = k_0 + 1U;\n\n prev_0 = next_0;\n\n k_0 = _S13;\n\n total_0 = total_1;\n\n }\n\n return total_0;\n}\n\nstruct StripVertex_0\n{\n vec2 screen_0;\n float across_0;\n float along_0;\n};\n\n\nStripVertex_0 curveVertex_0(Cubic_0 c_4, uint seg_1, float side_0, float hw_0, bool dashed_0)\n{\n\n float t_2 = float(seg_1) / 48.0;\n vec2 dir_0 = cubicDirection_0(c_4, t_2);\n StripVertex_0 v_0;\n float _S14 = side_0 * hw_0;\n\n v_0.across_0 = _S14;\n v_0.screen_0 = cubicAt_0(c_4, t_2) + vec2(- dir_0.y, dir_0.x) * _S14;\n\n float _S15;\n if(dashed_0)\n {\n\n _S15 = lengthTo_0(c_4, seg_1);\n\n }\n else\n {\n\n _S15 = 0.0;\n\n }\n\n v_0.along_0 = _S15;\n return v_0;\n}\n\n\n\nvec2 armEnd_0(Cubic_0 c_5, uint a_0, float strand2_0, bool reversed2_0)\n{\n\n float _S16;\n if(reversed2_0)\n {\n\n _S16 = - strand2_0;\n\n }\n else\n {\n\n _S16 = strand2_0;\n\n }\n\n float back_0 = _S16 * - u_0.arrowPx_0;\n if(a_0 == 0U)\n {\n\n _S16 = - u_0.arrowPx_0;\n\n }\n else\n {\n\n _S16 = u_0.arrowPx_0;\n\n }\n\n return c_5.p3_0 + vec2(back_0, _S16);\n}\n\nStripVertex_0 armCorner_0(Cubic_0 c_6, uint a_1, uint corner_0, float hw_1, float strand2_1, bool reversed2_1)\n{\n vec2 axis_0 = armEnd_0(c_6, a_1, strand2_1, reversed2_1) - c_6.p3_0;\n float _S17 = max(length(axis_0), 9.99999997475242708e-07);\n vec2 dir_1 = axis_0 / _S17;\n StripVertex_0 v_1;\n\n float at_0;\n if((corner_0 % 2U) == 0U)\n {\n\n at_0 = - hw_1;\n\n }\n else\n {\n\n at_0 = hw_1;\n\n }\n\n v_1.across_0 = at_0;\n v_1.along_0 = 0.0;\n if(corner_0 >= 2U)\n {\n\n at_0 = _S17;\n\n }\n else\n {\n\n at_0 = 0.0;\n\n }\n v_1.screen_0 = c_6.p3_0 + dir_1 * at_0 + vec2(- dir_1.y, dir_1.x) * v_1.across_0;\n return v_1;\n}\n\n\nfloat yPxToClipY_0(float yPx_0, float canvasHeight_1)\n{\n\n return 1.0 - yPx_0 / canvasHeight_1 * 2.0;\n}\n\n\nvec4 unpackRGBA_0(uint c_7)\n{\n\n return vec4(float((c_7 >> 0U) & 255U), float((c_7 >> 8U) & 255U), float((c_7 >> 16U) & 255U), float((c_7 >> 24U) & 255U)) / 255.0;\n}\n\n\nout vec4 v_color;\n\n\nout float v_across;\n\n\nout float v_along;\n\n\nflat out float v_halfWidthPx;\n\n\nflat out float v_dashed;\n\n\nlayout(location = 0)\nin uint a_x;\n\n\nlayout(location = 1)\nin uint a_x2;\n\n\nlayout(location = 2)\nin uint a_x2Region;\n\n\nlayout(location = 3)\nin uint a_row;\n\n\nlayout(location = 4)\nin uint a_row2;\n\n\nlayout(location = 5)\nin float a_bend;\n\n\nlayout(location = 6)\nin float a_width;\n\n\nlayout(location = 7)\nin uint a_color;\n\n\nlayout(location = 8)\nin uint a_bits;\n\n\nstruct VsOut_0\n{\n vec4 position_0;\n vec4 color_1;\n float across_1;\n float along_1;\n float halfWidthPx_0;\n float dashed_1;\n};\n\n\nvoid main()\n{\n\n bool placed_0 = a_x2Region < (u_0.regionCount_0);\n\n ConnectorInstance_0 _S18 = ConnectorInstance_0(a_x, a_x2, a_x2Region, a_row, a_row2, a_bend, a_width, a_color, a_bits);\n\n Cubic_0 c_8 = placeCubic_0(_S18, u_0.regionTable_0[min(a_x2Region, 255U)]);\n float halfWidth_0 = 0.5 * connectorStrokePx_0(a_width, u_0.devicePixelRatio_0);\n float hw_2 = halfWidth_0 + aaHalfPx_0(u_0.devicePixelRatio_0);\n bool dashed_2 = (a_bits & 16U) != 0U;\n bool arrow_0 = (a_bits & 32U) != 0U;\n float strand2_2 = 1.0 - 2.0 * bitSet_0(a_bits, 2U);\n bool reversed2_2 = (u_0.regionTable_0[min(a_x2Region, 255U)].w) < 0.0;\n\n StripVertex_0 v_2;\n\n bool onArm_0;\n\n float _S19;\n\n\n\n if(uint(gl_VertexID) < 98U)\n {\n\n uint _S20 = uint(gl_VertexID) / 2U;\n\n if((uint(gl_VertexID) % 2U) == 0U)\n {\n\n _S19 = -1.0;\n\n }\n else\n {\n\n _S19 = 1.0;\n\n }\n\n v_2 = curveVertex_0(c_8, _S20, _S19, hw_2, dashed_2);\n\n onArm_0 = false;\n\n }\n else\n {\n uint j_0 = uint(gl_VertexID) - 98U;\n uint a_2 = j_0 / 6U;\n uint k_1 = j_0 % 6U;\n\n StripVertex_0 start_0;\n\n\n\n if(a_2 == 0U)\n {\n\n start_0 = curveVertex_0(c_8, 48U, 1.0, hw_2, dashed_2);\n\n }\n else\n {\n\n if(arrow_0)\n {\n\n start_0 = armCorner_0(c_8, 0U, 3U, hw_2, strand2_2, reversed2_2);\n\n }\n else\n {\n\n start_0 = curveVertex_0(c_8, 48U, 1.0, hw_2, dashed_2);\n\n }\n\n }\n\n\n if(k_1 == 0U)\n {\n\n onArm_0 = true;\n\n }\n else\n {\n\n onArm_0 = !arrow_0;\n\n }\n\n if(onArm_0)\n {\n\n v_2 = start_0;\n\n onArm_0 = false;\n\n }\n else\n {\n\n uint _S21;\n\n\n if(k_1 <= 2U)\n {\n\n _S21 = 0U;\n\n }\n else\n {\n\n _S21 = k_1 - 2U;\n\n }\n\n v_2 = armCorner_0(c_8, a_2, _S21, hw_2, strand2_2, reversed2_2);\n\n onArm_0 = true;\n\n }\n\n }\n\n VsOut_0 o_0;\n\n vec4 _S22;\n\n if(placed_0)\n {\n\n _S22 = vec4(v_2.screen_0.x / u_0.canvasWidth_0 * 2.0 - 1.0, yPxToClipY_0(v_2.screen_0.y, u_0.canvasHeight_0), 0.0, 1.0);\n\n }\n else\n {\n\n _S22 = vec4(-2.0, -2.0, 0.0, 1.0);\n\n }\n\n o_0.position_0 = _S22;\n\n\n\n o_0.color_1 = unpackRGBA_0(a_color);\n o_0.across_1 = v_2.across_0;\n o_0.along_1 = v_2.along_0;\n o_0.halfWidthPx_0 = halfWidth_0;\n if(dashed_2)\n {\n\n onArm_0 = !onArm_0;\n\n }\n else\n {\n\n onArm_0 = false;\n\n }\n\n if(onArm_0)\n {\n\n _S19 = 1.0;\n\n }\n else\n {\n\n _S19 = 0.0;\n\n }\n\n o_0.dashed_1 = _S19;\n VsOut_0 _S23 = o_0;\n\n gl_Position = o_0.position_0;\n\n v_color = _S23.color_1;\n\n v_across = _S23.across_1;\n\n v_along = _S23.along_1;\n\n v_halfWidthPx = _S23.halfWidthPx_0;\n\n v_dashed = _S23.dashed_1;\n\n return;\n}\n\n"
|
|
5
|
+
|
|
6
|
+
export const GLSL_FRAGMENT = "#version 300 es\nprecision highp float;\nprecision highp int;\n\n\n\nlayout(std140) uniform Uniforms\n{\n float canvasHeight_0;\n float canvasWidth_0;\n float devicePixelRatio_0;\n float rowOffsetPx_0;\n float rowPitchPx_0;\n float maxHandlePx_0;\n float dashPx_0;\n float gapPx_0;\n float arrowPx_0;\n uint regionCount_0;\n float zero_0;\n vec4 ownEntry_0;\n vec4 regionTable_0[256];\n}u_0;\n\nfloat aaPx_0(float dpr_0)\n{\n\n return 1.0 / max(dpr_0, 1.0);\n}\n\n\nfloat aaRamp_0(float signedInk_0, float widthPx_0)\n{\n\n return clamp(signedInk_0 / widthPx_0 + 0.5, 0.0, 1.0);\n}\n\n\nfloat dashCoverageAt_0(float coord_0, float dashPx_1, float gapPx_1, float aaPx_1)\n{\n float period_0 = dashPx_1 + gapPx_1;\n float shifted_0 = coord_0 + gapPx_1 * 0.5;\n\n return aaRamp_0(dashPx_1 * 0.5 - abs(shifted_0 - period_0 * floor(shifted_0 / period_0) - period_0 * 0.5), aaPx_1);\n}\n\nfloat dashCoverage_0(float coord_1, float dashPx_2, float gapPx_2, float dpr_1)\n{\n\n return dashCoverageAt_0(coord_1, dashPx_2, gapPx_2, aaPx_0(dpr_1));\n}\n\n\nfloat edgeCoverage_0(float signedInkCssPx_0, float dpr_2)\n{\n\n return aaRamp_0(signedInkCssPx_0, aaPx_0(dpr_2));\n}\n\n\nlayout(location = 0)\nout vec4 entryPointParam_fs_main_0;\n\n\nin vec4 v_color;\n\n\nin float v_across;\n\n\nin float v_along;\n\n\nflat in float v_halfWidthPx;\n\n\nflat in float v_dashed;\n\n\nvoid main()\n{\n\n bool _S1;\n if(v_dashed > 0.5)\n {\n\n _S1 = (u_0.dashPx_0) > 0.0;\n\n }\n else\n {\n\n _S1 = false;\n\n }\n\n float dash_0;\n if(_S1)\n {\n\n dash_0 = dashCoverage_0(v_along, u_0.dashPx_0, u_0.gapPx_0, u_0.devicePixelRatio_0);\n\n }\n else\n {\n\n dash_0 = 1.0;\n\n }\n\n entryPointParam_fs_main_0 = vec4(v_color.xyz, v_color.w * (edgeCoverage_0(v_halfWidthPx - abs(v_across), u_0.devicePixelRatio_0) * dash_0));\n\n return;\n}\n\n"
|