@jbrowse/render-core 5.0.0-beta.11 → 5.0.0-beta.14
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 +0 -1
- package/esm/coverageBand.js +0 -5
- 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 +18 -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/barMark.js +4 -2
- 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 +8 -5
- package/esm/marks/index.js +6 -4
- package/esm/marks/lineMark.d.ts +47 -7
- package/esm/marks/lineMark.js +53 -39
- package/esm/marks/linkMark.d.ts +43 -6
- package/esm/marks/linkMark.js +118 -21
- package/esm/marks/markBackend.d.ts +1 -1
- package/esm/marks/markBackend.js +1 -1
- package/esm/marks/markPlan.d.ts +4 -3
- package/esm/marks/markPlan.js +5 -4
- 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 +4 -2
- package/esm/marks/rowLane.js +7 -3
- 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 +8 -7
- package/esm/marks/spanMark.js +3 -3
- package/esm/marks/types.d.ts +8 -5
- package/esm/marks/types.js +8 -1
- 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/barMark.glsl.generated.d.ts +1 -1
- package/esm/shaders/barMark.glsl.generated.js +1 -1
- package/esm/shaders/barMark.wgsl.generated.d.ts +1 -1
- package/esm/shaders/barMark.wgsl.generated.js +1 -1
- 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 +4 -0
- package/esm/shaders/curveDistance.js.generated.js +113 -0
- package/esm/shaders/insertionGlyph.generated.d.ts +6 -0
- package/esm/shaders/insertionGlyph.generated.js +8 -0
- package/esm/shaders/lineCenterMark.glsl.generated.d.ts +2 -2
- package/esm/shaders/lineCenterMark.glsl.generated.js +2 -2
- package/esm/shaders/lineCenterMark.iface.generated.d.ts +11 -9
- package/esm/shaders/lineCenterMark.iface.generated.js +20 -18
- package/esm/shaders/lineCenterMark.wgsl.generated.d.ts +1 -1
- package/esm/shaders/lineCenterMark.wgsl.generated.js +1 -1
- package/esm/shaders/lineCommon.js.generated.d.ts +1 -0
- package/esm/shaders/lineCommon.js.generated.js +20 -0
- package/esm/shaders/lineStepMark.glsl.generated.d.ts +2 -2
- package/esm/shaders/lineStepMark.glsl.generated.js +2 -2
- package/esm/shaders/lineStepMark.iface.generated.d.ts +11 -9
- package/esm/shaders/lineStepMark.iface.generated.js +20 -18
- package/esm/shaders/lineStepMark.wgsl.generated.d.ts +1 -1
- package/esm/shaders/lineStepMark.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 +4 -2
- package/esm/shaders/linkMark.js.generated.js +33 -4
- 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/esm/shaders/spanMark.glsl.generated.d.ts +1 -1
- package/esm/shaders/spanMark.glsl.generated.js +1 -1
- package/esm/shaders/spanMark.wgsl.generated.d.ts +1 -1
- package/esm/shaders/spanMark.wgsl.generated.js +1 -1
- package/esm/slangPass.d.ts +5 -3
- package/esm/slangPass.js +2 -2
- package/package.json +7 -4
- package/src/shaders/arcHull.test.ts +87 -0
- package/src/shaders/barMark.glsl.generated.ts +1 -1
- package/src/shaders/barMark.slang +2 -2
- package/src/shaders/barMark.wgsl.generated.ts +1 -1
- 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 +112 -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/insertionGlyph.generated.ts +14 -0
- package/src/shaders/insertionGlyph.slang +59 -0
- package/src/shaders/lineCenterMark.glsl.generated.ts +2 -2
- package/src/shaders/lineCenterMark.iface.generated.ts +21 -18
- package/src/shaders/lineCenterMark.slang +19 -23
- package/src/shaders/lineCenterMark.wgsl.generated.ts +1 -1
- package/src/shaders/lineCommon.js.generated.ts +20 -0
- package/src/shaders/lineCommon.slang +18 -8
- package/src/shaders/lineStepMark.glsl.generated.ts +2 -2
- package/src/shaders/lineStepMark.iface.generated.ts +21 -18
- package/src/shaders/lineStepMark.slang +10 -6
- package/src/shaders/lineStepMark.wgsl.generated.ts +1 -1
- 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 +30 -4
- package/src/shaders/linkMark.slang +67 -24
- 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 +12 -8
- package/src/shaders/scoreScale.slang +1 -1
- package/src/shaders/spanMark.glsl.generated.ts +1 -1
- package/src/shaders/spanMark.slang +5 -5
- package/src/shaders/spanMark.wgsl.generated.ts +1 -1
- 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
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function connectorBudgetPx(dx: number, dy: number): number;
|
|
2
|
+
export declare function connectorHandlePx(budget: number, maxHandlePx: number): number;
|
|
3
|
+
export declare function connectorLiftPx(budget: number, dy: number, bend: number): number;
|
|
4
|
+
export declare function connectorTangent(strand: number, leading: number, reversed: number): number;
|
|
5
|
+
export declare function connectorStrokePx(width: number, dpr: number): number;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// AUTO-GENERATED by packages/shader-tools/src/shader-codegen from connectorMark.slang.
|
|
2
|
+
// Do not edit. Run `pnpm gen:shaders` to regenerate.
|
|
3
|
+
// Scalar twins of connectorMark.slang, transliterated from slangc's WGSL so
|
|
4
|
+
// the Canvas2D and SVG paths run the shader's own math. See adr-051.
|
|
5
|
+
function _max(a, b) {
|
|
6
|
+
return b > a || Number.isNaN(a) ? b : a;
|
|
7
|
+
}
|
|
8
|
+
function _min(a, b) {
|
|
9
|
+
return b < a || Number.isNaN(a) ? b : a;
|
|
10
|
+
}
|
|
11
|
+
export function connectorBudgetPx(dx, dy) {
|
|
12
|
+
let _t0 = _min(Math.abs(dy), 150.0);
|
|
13
|
+
return (Math.sqrt(((dx * dx) + (_t0 * _t0))) * 0.30000001192092896);
|
|
14
|
+
}
|
|
15
|
+
export function connectorHandlePx(budget, maxHandlePx) {
|
|
16
|
+
return _min(maxHandlePx, budget);
|
|
17
|
+
}
|
|
18
|
+
export function connectorLiftPx(budget, dy, bend) {
|
|
19
|
+
let _t0;
|
|
20
|
+
if ((bend < -1.00000001504746622e+29)) {
|
|
21
|
+
_t0 = _min(budget, _max(0.0, (30.0 - Math.abs(dy))));
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
_t0 = (-_min(bend, 110.0) / 0.75);
|
|
25
|
+
}
|
|
26
|
+
return _t0;
|
|
27
|
+
}
|
|
28
|
+
export function connectorTangent(strand, leading, reversed) {
|
|
29
|
+
let _t0;
|
|
30
|
+
if ((leading != 0.0)) {
|
|
31
|
+
_t0 = -1.0;
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
_t0 = 1.0;
|
|
35
|
+
}
|
|
36
|
+
let _t1 = (strand * _t0);
|
|
37
|
+
if ((reversed != 0.0)) {
|
|
38
|
+
_t0 = -1.0;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
_t0 = 1.0;
|
|
42
|
+
}
|
|
43
|
+
return (_t1 * _t0);
|
|
44
|
+
}
|
|
45
|
+
export function connectorStrokePx(width, dpr) {
|
|
46
|
+
return _max(width, (1.5 / dpr));
|
|
47
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const WGSL_SOURCE = "struct Uniforms_std140_0\n{\n @align(16) canvasHeight_0 : f32,\n @align(4) canvasWidth_0 : f32,\n @align(8) devicePixelRatio_0 : f32,\n @align(4) rowOffsetPx_0 : f32,\n @align(16) rowPitchPx_0 : f32,\n @align(4) maxHandlePx_0 : f32,\n @align(8) dashPx_0 : f32,\n @align(4) gapPx_0 : f32,\n @align(16) arrowPx_0 : f32,\n @align(4) regionCount_0 : u32,\n @align(8) zero_0 : f32,\n @align(16) ownEntry_0 : vec4<f32>,\n @align(16) regionTable_0 : array<vec4<f32>, i32(256)>,\n};\n\n@binding(1) @group(0) var<uniform> u_0 : Uniforms_std140_0;\nfn hpSplitUint_0( value_0 : u32) -> vec2<f32>\n{\n var lo_0 : u32 = (value_0 & (u32(4095)));\n return vec2<f32>(f32(value_0 - lo_0), f32(lo_0));\n}\n\nfn hpViewportOffsetBp_0( splitPos_0 : vec2<f32>, bpRange_0 : vec3<f32>, hpZero_0 : f32) -> f32\n{\n var floorBp_0 : f32 = -3.00000000549775576e+38f + hpZero_0;\n return max(bpRange_0.x - splitPos_0.x, floorBp_0) + max(bpRange_0.y - splitPos_0.y, floorBp_0);\n}\n\nfn viewRegionPx_0( bp_0 : u32, r_0 : vec4<f32>, hpZero_1 : f32) -> f32\n{\n return r_0.x - hpViewportOffsetBp_0(hpSplitUint_0(bp_0), vec3<f32>(r_0.y, r_0.z, 0.0f), hpZero_1) * r_0.w;\n}\n\nfn connectorBudgetPx_0( dx_0 : f32, dy_0 : f32) -> f32\n{\n var _S1 : f32 = min(abs(dy_0), 150.0f);\n return sqrt(dx_0 * dx_0 + _S1 * _S1) * 0.30000001192092896f;\n}\n\nfn connectorHandlePx_0( budget_0 : f32, maxHandlePx_1 : f32) -> f32\n{\n return min(maxHandlePx_1, budget_0);\n}\n\nfn connectorLiftPx_0( budget_1 : f32, dy_1 : f32, bend_0 : f32) -> f32\n{\n var _S2 : f32;\n if(bend_0 < -1.00000001504746622e+29f)\n {\n _S2 = min(budget_1, max(0.0f, 30.0f - abs(dy_1)));\n }\n else\n {\n _S2 = - min(bend_0, 110.0f) / 0.75f;\n }\n return _S2;\n}\n\nfn bitSet_0( bits_0 : u32, bit_0 : u32) -> f32\n{\n var _S3 : f32;\n if(((bits_0 & (bit_0))) != u32(0))\n {\n _S3 = 1.0f;\n }\n else\n {\n _S3 = 0.0f;\n }\n return _S3;\n}\n\nfn connectorTangent_0( strand_0 : f32, leading_0 : f32, reversed_0 : f32) -> f32\n{\n var _S4 : f32;\n if(leading_0 != 0.0f)\n {\n _S4 = -1.0f;\n }\n else\n {\n _S4 = 1.0f;\n }\n var _S5 : f32 = strand_0 * _S4;\n if(reversed_0 != 0.0f)\n {\n _S4 = -1.0f;\n }\n else\n {\n _S4 = 1.0f;\n }\n return _S5 * _S4;\n}\n\nstruct Cubic_0\n{\n p0_0 : vec2<f32>,\n p1_0 : vec2<f32>,\n p2_0 : vec2<f32>,\n p3_0 : vec2<f32>,\n};\n\nstruct ConnectorInstance_0\n{\n x_0 : u32,\n x2_0 : u32,\n x2Region_0 : u32,\n row_0 : u32,\n row2_0 : u32,\n bend_1 : f32,\n width_0 : f32,\n color_0 : u32,\n bits_1 : u32,\n};\n\nfn placeCubic_0( inst_0 : ConnectorInstance_0, entry2_0 : vec4<f32>) -> Cubic_0\n{\n var c_0 : Cubic_0;\n c_0.p0_0 = vec2<f32>(viewRegionPx_0(inst_0.x_0, u_0.ownEntry_0, u_0.zero_0), u_0.rowOffsetPx_0 + f32(inst_0.row_0) * u_0.rowPitchPx_0);\n c_0.p3_0 = vec2<f32>(viewRegionPx_0(inst_0.x2_0, entry2_0, u_0.zero_0), u_0.rowOffsetPx_0 + f32(inst_0.row2_0) * u_0.rowPitchPx_0);\n if((((inst_0.bits_1) & (u32(8)))) != u32(0))\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 var d_0 : vec2<f32> = c_0.p3_0 - c_0.p0_0;\n var _S6 : f32 = d_0.y;\n var budget_2 : f32 = connectorBudgetPx_0(d_0.x, _S6);\n var handle_0 : f32 = connectorHandlePx_0(budget_2, u_0.maxHandlePx_0);\n var lift_0 : f32 = connectorLiftPx_0(budget_2, _S6, inst_0.bend_1);\n var _S7 : f32 = 1.0f - 2.0f * bitSet_0(inst_0.bits_1, u32(1));\n var _S8 : f32;\n if((u_0.ownEntry_0.w) < 0.0f)\n {\n _S8 = 1.0f;\n }\n else\n {\n _S8 = 0.0f;\n }\n var t1_0 : f32 = connectorTangent_0(_S7, 0.0f, _S8);\n var _S9 : f32 = 1.0f - 2.0f * bitSet_0(inst_0.bits_1, u32(2));\n var _S10 : f32 = bitSet_0(inst_0.bits_1, u32(4));\n if((entry2_0.w) < 0.0f)\n {\n _S8 = 1.0f;\n }\n else\n {\n _S8 = 0.0f;\n }\n var t2_0 : f32 = connectorTangent_0(_S9, _S10, _S8);\n c_0.p1_0 = vec2<f32>(c_0.p0_0.x + handle_0 * t1_0, c_0.p0_0.y - lift_0);\n c_0.p2_0 = vec2<f32>(c_0.p3_0.x + handle_0 * t2_0, c_0.p3_0.y - lift_0);\n return c_0;\n}\n\nfn connectorStrokePx_0( width_1 : f32, dpr_0 : f32) -> f32\n{\n return max(width_1, 1.5f / dpr_0);\n}\n\nfn aaPx_0( dpr_1 : f32) -> f32\n{\n return 1.0f / max(dpr_1, 1.0f);\n}\n\nfn aaHalfPx_0( dpr_2 : f32) -> f32\n{\n return 0.5f * aaPx_0(dpr_2);\n}\n\nfn cubicDirection_0( c_1 : Cubic_0, t_0 : f32) -> vec2<f32>\n{\n var s_0 : f32 = 1.0f - t_0;\n var d_1 : vec2<f32> = vec2<f32>((3.0f * s_0 * s_0)) * (c_1.p1_0 - c_1.p0_0) + vec2<f32>((6.0f * s_0 * t_0)) * (c_1.p2_0 - c_1.p1_0) + vec2<f32>((3.0f * t_0 * t_0)) * (c_1.p3_0 - c_1.p2_0);\n var len_0 : f32 = length(d_1);\n if(len_0 > 9.99999997475242708e-07f)\n {\n return d_1 / vec2<f32>(len_0);\n }\n var chord_0 : vec2<f32> = c_1.p3_0 - c_1.p0_0;\n var chordLen_0 : f32 = length(chord_0);\n var _S11 : vec2<f32>;\n if(chordLen_0 > 9.99999997475242708e-07f)\n {\n _S11 = chord_0 / vec2<f32>(chordLen_0);\n }\n else\n {\n _S11 = vec2<f32>(1.0f, 0.0f);\n }\n return _S11;\n}\n\nfn cubicAt_0( c_2 : Cubic_0, t_1 : f32) -> vec2<f32>\n{\n var s_1 : f32 = 1.0f - t_1;\n var _S12 : f32 = 3.0f * s_1;\n return vec2<f32>((s_1 * s_1 * s_1)) * c_2.p0_0 + vec2<f32>((_S12 * s_1 * t_1)) * c_2.p1_0 + vec2<f32>((_S12 * t_1 * t_1)) * c_2.p2_0 + vec2<f32>((t_1 * t_1 * t_1)) * c_2.p3_0;\n}\n\nfn lengthTo_0( c_3 : Cubic_0, seg_0 : u32) -> f32\n{\n var prev_0 : vec2<f32> = c_3.p0_0;\n var k_0 : u32 = u32(1);\n var total_0 : f32 = 0.0f;\n for(;;)\n {\n if(k_0 <= seg_0)\n {\n }\n else\n {\n break;\n }\n var next_0 : vec2<f32> = cubicAt_0(c_3, f32(k_0) / 48.0f);\n var total_1 : f32 = total_0 + length(next_0 - prev_0);\n var _S13 : u32 = k_0 + u32(1);\n prev_0 = next_0;\n k_0 = _S13;\n total_0 = total_1;\n }\n return total_0;\n}\n\nstruct StripVertex_0\n{\n screen_0 : vec2<f32>,\n across_0 : f32,\n along_0 : f32,\n};\n\nfn curveVertex_0( c_4 : Cubic_0, seg_1 : u32, side_0 : f32, hw_0 : f32, dashed_0 : bool) -> StripVertex_0\n{\n var t_2 : f32 = f32(seg_1) / 48.0f;\n var dir_0 : vec2<f32> = cubicDirection_0(c_4, t_2);\n var v_0 : StripVertex_0;\n var _S14 : f32 = side_0 * hw_0;\n v_0.across_0 = _S14;\n v_0.screen_0 = cubicAt_0(c_4, t_2) + vec2<f32>(- dir_0.y, dir_0.x) * vec2<f32>(_S14);\n var _S15 : f32;\n if(dashed_0)\n {\n _S15 = lengthTo_0(c_4, seg_1);\n }\n else\n {\n _S15 = 0.0f;\n }\n v_0.along_0 = _S15;\n return v_0;\n}\n\nfn armEnd_0( c_5 : Cubic_0, a_0 : u32, strand2_0 : f32, reversed2_0 : bool) -> vec2<f32>\n{\n var _S16 : f32;\n if(reversed2_0)\n {\n _S16 = - strand2_0;\n }\n else\n {\n _S16 = strand2_0;\n }\n var back_0 : f32 = _S16 * - u_0.arrowPx_0;\n if(a_0 == u32(0))\n {\n _S16 = - u_0.arrowPx_0;\n }\n else\n {\n _S16 = u_0.arrowPx_0;\n }\n return c_5.p3_0 + vec2<f32>(back_0, _S16);\n}\n\nfn armCorner_0( c_6 : Cubic_0, a_1 : u32, corner_0 : u32, hw_1 : f32, strand2_1 : f32, reversed2_1 : bool) -> StripVertex_0\n{\n var axis_0 : vec2<f32> = armEnd_0(c_6, a_1, strand2_1, reversed2_1) - c_6.p3_0;\n var _S17 : f32 = max(length(axis_0), 9.99999997475242708e-07f);\n var dir_1 : vec2<f32> = axis_0 / vec2<f32>(_S17);\n var v_1 : StripVertex_0;\n var at_0 : f32;\n if((corner_0 % u32(2)) == u32(0))\n {\n at_0 = - hw_1;\n }\n else\n {\n at_0 = hw_1;\n }\n v_1.across_0 = at_0;\n v_1.along_0 = 0.0f;\n if(corner_0 >= u32(2))\n {\n at_0 = _S17;\n }\n else\n {\n at_0 = 0.0f;\n }\n v_1.screen_0 = c_6.p3_0 + dir_1 * vec2<f32>(at_0) + vec2<f32>(- dir_1.y, dir_1.x) * vec2<f32>(v_1.across_0);\n return v_1;\n}\n\nfn yPxToClipY_0( yPx_0 : f32, canvasHeight_1 : f32) -> f32\n{\n return 1.0f - yPx_0 / canvasHeight_1 * 2.0f;\n}\n\nfn unpackRGBA_0( c_7 : u32) -> vec4<f32>\n{\n return vec4<f32>(f32((((c_7 >> (u32(0)))) & (u32(255)))), f32((((c_7 >> (u32(8)))) & (u32(255)))), f32((((c_7 >> (u32(16)))) & (u32(255)))), f32((((c_7 >> (u32(24)))) & (u32(255))))) / vec4<f32>(255.0f);\n}\n\nstruct VsOut_0\n{\n @builtin(position) position_0 : vec4<f32>,\n @location(0) color_1 : vec4<f32>,\n @location(1) across_1 : f32,\n @location(2) along_1 : f32,\n @interpolate(flat) @location(3) halfWidthPx_0 : f32,\n @interpolate(flat) @location(4) dashed_1 : f32,\n};\n\nstruct vertexInput_0\n{\n @location(0) x_1 : u32,\n @location(1) x2_1 : u32,\n @location(2) x2Region_1 : u32,\n @location(3) row_1 : u32,\n @location(4) row2_1 : u32,\n @location(5) bend_2 : f32,\n @location(6) width_2 : f32,\n @location(7) color_2 : u32,\n @location(8) bits_2 : u32,\n};\n\n@vertex\nfn vs_main( _S18 : vertexInput_0, @builtin(vertex_index) vid_0 : u32) -> VsOut_0\n{\n var _S19 : ConnectorInstance_0 = ConnectorInstance_0( _S18.x_1, _S18.x2_1, _S18.x2Region_1, _S18.row_1, _S18.row2_1, _S18.bend_2, _S18.width_2, _S18.color_2, _S18.bits_2 );\n var placed_0 : bool = (_S18.x2Region_1) < (u_0.regionCount_0);\n var c_8 : Cubic_0 = placeCubic_0(_S19, u_0.regionTable_0[min(_S18.x2Region_1, u32(255))]);\n var halfWidth_0 : f32 = 0.5f * connectorStrokePx_0(_S18.width_2, u_0.devicePixelRatio_0);\n var hw_2 : f32 = halfWidth_0 + aaHalfPx_0(u_0.devicePixelRatio_0);\n var dashed_2 : bool = (((_S18.bits_2) & (u32(16)))) != u32(0);\n var arrow_0 : bool = (((_S18.bits_2) & (u32(32)))) != u32(0);\n var strand2_2 : f32 = 1.0f - 2.0f * bitSet_0(_S18.bits_2, u32(2));\n var reversed2_2 : bool = (u_0.regionTable_0[min(_S18.x2Region_1, u32(255))].w) < 0.0f;\n var v_2 : StripVertex_0;\n var onArm_0 : bool;\n var _S20 : f32;\n if(vid_0 < u32(98))\n {\n var _S21 : u32 = vid_0 / u32(2);\n if((vid_0 % u32(2)) == u32(0))\n {\n _S20 = -1.0f;\n }\n else\n {\n _S20 = 1.0f;\n }\n v_2 = curveVertex_0(c_8, _S21, _S20, hw_2, dashed_2);\n onArm_0 = false;\n }\n else\n {\n var j_0 : u32 = vid_0 - u32(98);\n var a_2 : u32 = j_0 / u32(6);\n var k_1 : u32 = j_0 % u32(6);\n var start_0 : StripVertex_0;\n if(a_2 == u32(0))\n {\n start_0 = curveVertex_0(c_8, u32(48), 1.0f, hw_2, dashed_2);\n }\n else\n {\n if(arrow_0)\n {\n start_0 = armCorner_0(c_8, u32(0), u32(3), hw_2, strand2_2, reversed2_2);\n }\n else\n {\n start_0 = curveVertex_0(c_8, u32(48), 1.0f, hw_2, dashed_2);\n }\n }\n if(k_1 == u32(0))\n {\n onArm_0 = true;\n }\n else\n {\n onArm_0 = !arrow_0;\n }\n if(onArm_0)\n {\n v_2 = start_0;\n onArm_0 = false;\n }\n else\n {\n var _S22 : u32;\n if(k_1 <= u32(2))\n {\n _S22 = u32(0);\n }\n else\n {\n _S22 = k_1 - u32(2);\n }\n v_2 = armCorner_0(c_8, a_2, _S22, hw_2, strand2_2, reversed2_2);\n onArm_0 = true;\n }\n }\n var o_0 : VsOut_0;\n var _S23 : vec4<f32>;\n if(placed_0)\n {\n _S23 = vec4<f32>(v_2.screen_0.x / u_0.canvasWidth_0 * 2.0f - 1.0f, yPxToClipY_0(v_2.screen_0.y, u_0.canvasHeight_0), 0.0f, 1.0f);\n }\n else\n {\n _S23 = vec4<f32>(-2.0f, -2.0f, 0.0f, 1.0f);\n }\n o_0.position_0 = _S23;\n o_0.color_1 = unpackRGBA_0(_S18.color_2);\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 onArm_0 = !onArm_0;\n }\n else\n {\n onArm_0 = false;\n }\n if(onArm_0)\n {\n _S20 = 1.0f;\n }\n else\n {\n _S20 = 0.0f;\n }\n o_0.dashed_1 = _S20;\n return o_0;\n}\n\nfn aaRamp_0( signedInk_0 : f32, widthPx_0 : f32) -> f32\n{\n return clamp(signedInk_0 / widthPx_0 + 0.5f, 0.0f, 1.0f);\n}\n\nfn dashCoverageAt_0( coord_0 : f32, dashPx_1 : f32, gapPx_1 : f32, aaPx_1 : f32) -> f32\n{\n var period_0 : f32 = dashPx_1 + gapPx_1;\n var shifted_0 : f32 = coord_0 + gapPx_1 * 0.5f;\n return aaRamp_0(dashPx_1 * 0.5f - abs(shifted_0 - period_0 * floor(shifted_0 / period_0) - period_0 * 0.5f), aaPx_1);\n}\n\nfn dashCoverage_0( coord_1 : f32, dashPx_2 : f32, gapPx_2 : f32, dpr_3 : f32) -> f32\n{\n return dashCoverageAt_0(coord_1, dashPx_2, gapPx_2, aaPx_0(dpr_3));\n}\n\nfn edgeCoverage_0( signedInkCssPx_0 : f32, dpr_4 : f32) -> f32\n{\n return aaRamp_0(signedInkCssPx_0, aaPx_0(dpr_4));\n}\n\nstruct pixelOutput_0\n{\n @location(0) output_0 : vec4<f32>,\n};\n\nstruct pixelInput_0\n{\n @location(0) color_3 : vec4<f32>,\n @location(1) across_2 : f32,\n @location(2) along_2 : f32,\n @interpolate(flat) @location(3) halfWidthPx_1 : f32,\n @interpolate(flat) @location(4) dashed_3 : f32,\n};\n\n@fragment\nfn fs_main( _S24 : pixelInput_0, @builtin(position) position_1 : vec4<f32>) -> pixelOutput_0\n{\n var _S25 : bool;\n if((_S24.dashed_3) > 0.5f)\n {\n _S25 = (u_0.dashPx_0) > 0.0f;\n }\n else\n {\n _S25 = false;\n }\n var dash_0 : f32;\n if(_S25)\n {\n dash_0 = dashCoverage_0(_S24.along_2, u_0.dashPx_0, u_0.gapPx_0, u_0.devicePixelRatio_0);\n }\n else\n {\n dash_0 = 1.0f;\n }\n var _S26 : pixelOutput_0 = pixelOutput_0( vec4<f32>(_S24.color_3.xyz, _S24.color_3.w * (edgeCoverage_0(_S24.halfWidthPx_1 - abs(_S24.across_2), u_0.devicePixelRatio_0) * dash_0)) );\n return _S26;\n}\n\n";
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
// AUTO-GENERATED by packages/shader-tools/src/shader-codegen from connectorMark.slang.
|
|
2
|
+
// Do not edit. Run `pnpm gen:shaders` to regenerate.
|
|
3
|
+
export const WGSL_SOURCE = "struct Uniforms_std140_0\n{\n @align(16) canvasHeight_0 : f32,\n @align(4) canvasWidth_0 : f32,\n @align(8) devicePixelRatio_0 : f32,\n @align(4) rowOffsetPx_0 : f32,\n @align(16) rowPitchPx_0 : f32,\n @align(4) maxHandlePx_0 : f32,\n @align(8) dashPx_0 : f32,\n @align(4) gapPx_0 : f32,\n @align(16) arrowPx_0 : f32,\n @align(4) regionCount_0 : u32,\n @align(8) zero_0 : f32,\n @align(16) ownEntry_0 : vec4<f32>,\n @align(16) regionTable_0 : array<vec4<f32>, i32(256)>,\n};\n\n@binding(1) @group(0) var<uniform> u_0 : Uniforms_std140_0;\nfn hpSplitUint_0( value_0 : u32) -> vec2<f32>\n{\n var lo_0 : u32 = (value_0 & (u32(4095)));\n return vec2<f32>(f32(value_0 - lo_0), f32(lo_0));\n}\n\nfn hpViewportOffsetBp_0( splitPos_0 : vec2<f32>, bpRange_0 : vec3<f32>, hpZero_0 : f32) -> f32\n{\n var floorBp_0 : f32 = -3.00000000549775576e+38f + hpZero_0;\n return max(bpRange_0.x - splitPos_0.x, floorBp_0) + max(bpRange_0.y - splitPos_0.y, floorBp_0);\n}\n\nfn viewRegionPx_0( bp_0 : u32, r_0 : vec4<f32>, hpZero_1 : f32) -> f32\n{\n return r_0.x - hpViewportOffsetBp_0(hpSplitUint_0(bp_0), vec3<f32>(r_0.y, r_0.z, 0.0f), hpZero_1) * r_0.w;\n}\n\nfn connectorBudgetPx_0( dx_0 : f32, dy_0 : f32) -> f32\n{\n var _S1 : f32 = min(abs(dy_0), 150.0f);\n return sqrt(dx_0 * dx_0 + _S1 * _S1) * 0.30000001192092896f;\n}\n\nfn connectorHandlePx_0( budget_0 : f32, maxHandlePx_1 : f32) -> f32\n{\n return min(maxHandlePx_1, budget_0);\n}\n\nfn connectorLiftPx_0( budget_1 : f32, dy_1 : f32, bend_0 : f32) -> f32\n{\n var _S2 : f32;\n if(bend_0 < -1.00000001504746622e+29f)\n {\n _S2 = min(budget_1, max(0.0f, 30.0f - abs(dy_1)));\n }\n else\n {\n _S2 = - min(bend_0, 110.0f) / 0.75f;\n }\n return _S2;\n}\n\nfn bitSet_0( bits_0 : u32, bit_0 : u32) -> f32\n{\n var _S3 : f32;\n if(((bits_0 & (bit_0))) != u32(0))\n {\n _S3 = 1.0f;\n }\n else\n {\n _S3 = 0.0f;\n }\n return _S3;\n}\n\nfn connectorTangent_0( strand_0 : f32, leading_0 : f32, reversed_0 : f32) -> f32\n{\n var _S4 : f32;\n if(leading_0 != 0.0f)\n {\n _S4 = -1.0f;\n }\n else\n {\n _S4 = 1.0f;\n }\n var _S5 : f32 = strand_0 * _S4;\n if(reversed_0 != 0.0f)\n {\n _S4 = -1.0f;\n }\n else\n {\n _S4 = 1.0f;\n }\n return _S5 * _S4;\n}\n\nstruct Cubic_0\n{\n p0_0 : vec2<f32>,\n p1_0 : vec2<f32>,\n p2_0 : vec2<f32>,\n p3_0 : vec2<f32>,\n};\n\nstruct ConnectorInstance_0\n{\n x_0 : u32,\n x2_0 : u32,\n x2Region_0 : u32,\n row_0 : u32,\n row2_0 : u32,\n bend_1 : f32,\n width_0 : f32,\n color_0 : u32,\n bits_1 : u32,\n};\n\nfn placeCubic_0( inst_0 : ConnectorInstance_0, entry2_0 : vec4<f32>) -> Cubic_0\n{\n var c_0 : Cubic_0;\n c_0.p0_0 = vec2<f32>(viewRegionPx_0(inst_0.x_0, u_0.ownEntry_0, u_0.zero_0), u_0.rowOffsetPx_0 + f32(inst_0.row_0) * u_0.rowPitchPx_0);\n c_0.p3_0 = vec2<f32>(viewRegionPx_0(inst_0.x2_0, entry2_0, u_0.zero_0), u_0.rowOffsetPx_0 + f32(inst_0.row2_0) * u_0.rowPitchPx_0);\n if((((inst_0.bits_1) & (u32(8)))) != u32(0))\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 var d_0 : vec2<f32> = c_0.p3_0 - c_0.p0_0;\n var _S6 : f32 = d_0.y;\n var budget_2 : f32 = connectorBudgetPx_0(d_0.x, _S6);\n var handle_0 : f32 = connectorHandlePx_0(budget_2, u_0.maxHandlePx_0);\n var lift_0 : f32 = connectorLiftPx_0(budget_2, _S6, inst_0.bend_1);\n var _S7 : f32 = 1.0f - 2.0f * bitSet_0(inst_0.bits_1, u32(1));\n var _S8 : f32;\n if((u_0.ownEntry_0.w) < 0.0f)\n {\n _S8 = 1.0f;\n }\n else\n {\n _S8 = 0.0f;\n }\n var t1_0 : f32 = connectorTangent_0(_S7, 0.0f, _S8);\n var _S9 : f32 = 1.0f - 2.0f * bitSet_0(inst_0.bits_1, u32(2));\n var _S10 : f32 = bitSet_0(inst_0.bits_1, u32(4));\n if((entry2_0.w) < 0.0f)\n {\n _S8 = 1.0f;\n }\n else\n {\n _S8 = 0.0f;\n }\n var t2_0 : f32 = connectorTangent_0(_S9, _S10, _S8);\n c_0.p1_0 = vec2<f32>(c_0.p0_0.x + handle_0 * t1_0, c_0.p0_0.y - lift_0);\n c_0.p2_0 = vec2<f32>(c_0.p3_0.x + handle_0 * t2_0, c_0.p3_0.y - lift_0);\n return c_0;\n}\n\nfn connectorStrokePx_0( width_1 : f32, dpr_0 : f32) -> f32\n{\n return max(width_1, 1.5f / dpr_0);\n}\n\nfn aaPx_0( dpr_1 : f32) -> f32\n{\n return 1.0f / max(dpr_1, 1.0f);\n}\n\nfn aaHalfPx_0( dpr_2 : f32) -> f32\n{\n return 0.5f * aaPx_0(dpr_2);\n}\n\nfn cubicDirection_0( c_1 : Cubic_0, t_0 : f32) -> vec2<f32>\n{\n var s_0 : f32 = 1.0f - t_0;\n var d_1 : vec2<f32> = vec2<f32>((3.0f * s_0 * s_0)) * (c_1.p1_0 - c_1.p0_0) + vec2<f32>((6.0f * s_0 * t_0)) * (c_1.p2_0 - c_1.p1_0) + vec2<f32>((3.0f * t_0 * t_0)) * (c_1.p3_0 - c_1.p2_0);\n var len_0 : f32 = length(d_1);\n if(len_0 > 9.99999997475242708e-07f)\n {\n return d_1 / vec2<f32>(len_0);\n }\n var chord_0 : vec2<f32> = c_1.p3_0 - c_1.p0_0;\n var chordLen_0 : f32 = length(chord_0);\n var _S11 : vec2<f32>;\n if(chordLen_0 > 9.99999997475242708e-07f)\n {\n _S11 = chord_0 / vec2<f32>(chordLen_0);\n }\n else\n {\n _S11 = vec2<f32>(1.0f, 0.0f);\n }\n return _S11;\n}\n\nfn cubicAt_0( c_2 : Cubic_0, t_1 : f32) -> vec2<f32>\n{\n var s_1 : f32 = 1.0f - t_1;\n var _S12 : f32 = 3.0f * s_1;\n return vec2<f32>((s_1 * s_1 * s_1)) * c_2.p0_0 + vec2<f32>((_S12 * s_1 * t_1)) * c_2.p1_0 + vec2<f32>((_S12 * t_1 * t_1)) * c_2.p2_0 + vec2<f32>((t_1 * t_1 * t_1)) * c_2.p3_0;\n}\n\nfn lengthTo_0( c_3 : Cubic_0, seg_0 : u32) -> f32\n{\n var prev_0 : vec2<f32> = c_3.p0_0;\n var k_0 : u32 = u32(1);\n var total_0 : f32 = 0.0f;\n for(;;)\n {\n if(k_0 <= seg_0)\n {\n }\n else\n {\n break;\n }\n var next_0 : vec2<f32> = cubicAt_0(c_3, f32(k_0) / 48.0f);\n var total_1 : f32 = total_0 + length(next_0 - prev_0);\n var _S13 : u32 = k_0 + u32(1);\n prev_0 = next_0;\n k_0 = _S13;\n total_0 = total_1;\n }\n return total_0;\n}\n\nstruct StripVertex_0\n{\n screen_0 : vec2<f32>,\n across_0 : f32,\n along_0 : f32,\n};\n\nfn curveVertex_0( c_4 : Cubic_0, seg_1 : u32, side_0 : f32, hw_0 : f32, dashed_0 : bool) -> StripVertex_0\n{\n var t_2 : f32 = f32(seg_1) / 48.0f;\n var dir_0 : vec2<f32> = cubicDirection_0(c_4, t_2);\n var v_0 : StripVertex_0;\n var _S14 : f32 = side_0 * hw_0;\n v_0.across_0 = _S14;\n v_0.screen_0 = cubicAt_0(c_4, t_2) + vec2<f32>(- dir_0.y, dir_0.x) * vec2<f32>(_S14);\n var _S15 : f32;\n if(dashed_0)\n {\n _S15 = lengthTo_0(c_4, seg_1);\n }\n else\n {\n _S15 = 0.0f;\n }\n v_0.along_0 = _S15;\n return v_0;\n}\n\nfn armEnd_0( c_5 : Cubic_0, a_0 : u32, strand2_0 : f32, reversed2_0 : bool) -> vec2<f32>\n{\n var _S16 : f32;\n if(reversed2_0)\n {\n _S16 = - strand2_0;\n }\n else\n {\n _S16 = strand2_0;\n }\n var back_0 : f32 = _S16 * - u_0.arrowPx_0;\n if(a_0 == u32(0))\n {\n _S16 = - u_0.arrowPx_0;\n }\n else\n {\n _S16 = u_0.arrowPx_0;\n }\n return c_5.p3_0 + vec2<f32>(back_0, _S16);\n}\n\nfn armCorner_0( c_6 : Cubic_0, a_1 : u32, corner_0 : u32, hw_1 : f32, strand2_1 : f32, reversed2_1 : bool) -> StripVertex_0\n{\n var axis_0 : vec2<f32> = armEnd_0(c_6, a_1, strand2_1, reversed2_1) - c_6.p3_0;\n var _S17 : f32 = max(length(axis_0), 9.99999997475242708e-07f);\n var dir_1 : vec2<f32> = axis_0 / vec2<f32>(_S17);\n var v_1 : StripVertex_0;\n var at_0 : f32;\n if((corner_0 % u32(2)) == u32(0))\n {\n at_0 = - hw_1;\n }\n else\n {\n at_0 = hw_1;\n }\n v_1.across_0 = at_0;\n v_1.along_0 = 0.0f;\n if(corner_0 >= u32(2))\n {\n at_0 = _S17;\n }\n else\n {\n at_0 = 0.0f;\n }\n v_1.screen_0 = c_6.p3_0 + dir_1 * vec2<f32>(at_0) + vec2<f32>(- dir_1.y, dir_1.x) * vec2<f32>(v_1.across_0);\n return v_1;\n}\n\nfn yPxToClipY_0( yPx_0 : f32, canvasHeight_1 : f32) -> f32\n{\n return 1.0f - yPx_0 / canvasHeight_1 * 2.0f;\n}\n\nfn unpackRGBA_0( c_7 : u32) -> vec4<f32>\n{\n return vec4<f32>(f32((((c_7 >> (u32(0)))) & (u32(255)))), f32((((c_7 >> (u32(8)))) & (u32(255)))), f32((((c_7 >> (u32(16)))) & (u32(255)))), f32((((c_7 >> (u32(24)))) & (u32(255))))) / vec4<f32>(255.0f);\n}\n\nstruct VsOut_0\n{\n @builtin(position) position_0 : vec4<f32>,\n @location(0) color_1 : vec4<f32>,\n @location(1) across_1 : f32,\n @location(2) along_1 : f32,\n @interpolate(flat) @location(3) halfWidthPx_0 : f32,\n @interpolate(flat) @location(4) dashed_1 : f32,\n};\n\nstruct vertexInput_0\n{\n @location(0) x_1 : u32,\n @location(1) x2_1 : u32,\n @location(2) x2Region_1 : u32,\n @location(3) row_1 : u32,\n @location(4) row2_1 : u32,\n @location(5) bend_2 : f32,\n @location(6) width_2 : f32,\n @location(7) color_2 : u32,\n @location(8) bits_2 : u32,\n};\n\n@vertex\nfn vs_main( _S18 : vertexInput_0, @builtin(vertex_index) vid_0 : u32) -> VsOut_0\n{\n var _S19 : ConnectorInstance_0 = ConnectorInstance_0( _S18.x_1, _S18.x2_1, _S18.x2Region_1, _S18.row_1, _S18.row2_1, _S18.bend_2, _S18.width_2, _S18.color_2, _S18.bits_2 );\n var placed_0 : bool = (_S18.x2Region_1) < (u_0.regionCount_0);\n var c_8 : Cubic_0 = placeCubic_0(_S19, u_0.regionTable_0[min(_S18.x2Region_1, u32(255))]);\n var halfWidth_0 : f32 = 0.5f * connectorStrokePx_0(_S18.width_2, u_0.devicePixelRatio_0);\n var hw_2 : f32 = halfWidth_0 + aaHalfPx_0(u_0.devicePixelRatio_0);\n var dashed_2 : bool = (((_S18.bits_2) & (u32(16)))) != u32(0);\n var arrow_0 : bool = (((_S18.bits_2) & (u32(32)))) != u32(0);\n var strand2_2 : f32 = 1.0f - 2.0f * bitSet_0(_S18.bits_2, u32(2));\n var reversed2_2 : bool = (u_0.regionTable_0[min(_S18.x2Region_1, u32(255))].w) < 0.0f;\n var v_2 : StripVertex_0;\n var onArm_0 : bool;\n var _S20 : f32;\n if(vid_0 < u32(98))\n {\n var _S21 : u32 = vid_0 / u32(2);\n if((vid_0 % u32(2)) == u32(0))\n {\n _S20 = -1.0f;\n }\n else\n {\n _S20 = 1.0f;\n }\n v_2 = curveVertex_0(c_8, _S21, _S20, hw_2, dashed_2);\n onArm_0 = false;\n }\n else\n {\n var j_0 : u32 = vid_0 - u32(98);\n var a_2 : u32 = j_0 / u32(6);\n var k_1 : u32 = j_0 % u32(6);\n var start_0 : StripVertex_0;\n if(a_2 == u32(0))\n {\n start_0 = curveVertex_0(c_8, u32(48), 1.0f, hw_2, dashed_2);\n }\n else\n {\n if(arrow_0)\n {\n start_0 = armCorner_0(c_8, u32(0), u32(3), hw_2, strand2_2, reversed2_2);\n }\n else\n {\n start_0 = curveVertex_0(c_8, u32(48), 1.0f, hw_2, dashed_2);\n }\n }\n if(k_1 == u32(0))\n {\n onArm_0 = true;\n }\n else\n {\n onArm_0 = !arrow_0;\n }\n if(onArm_0)\n {\n v_2 = start_0;\n onArm_0 = false;\n }\n else\n {\n var _S22 : u32;\n if(k_1 <= u32(2))\n {\n _S22 = u32(0);\n }\n else\n {\n _S22 = k_1 - u32(2);\n }\n v_2 = armCorner_0(c_8, a_2, _S22, hw_2, strand2_2, reversed2_2);\n onArm_0 = true;\n }\n }\n var o_0 : VsOut_0;\n var _S23 : vec4<f32>;\n if(placed_0)\n {\n _S23 = vec4<f32>(v_2.screen_0.x / u_0.canvasWidth_0 * 2.0f - 1.0f, yPxToClipY_0(v_2.screen_0.y, u_0.canvasHeight_0), 0.0f, 1.0f);\n }\n else\n {\n _S23 = vec4<f32>(-2.0f, -2.0f, 0.0f, 1.0f);\n }\n o_0.position_0 = _S23;\n o_0.color_1 = unpackRGBA_0(_S18.color_2);\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 onArm_0 = !onArm_0;\n }\n else\n {\n onArm_0 = false;\n }\n if(onArm_0)\n {\n _S20 = 1.0f;\n }\n else\n {\n _S20 = 0.0f;\n }\n o_0.dashed_1 = _S20;\n return o_0;\n}\n\nfn aaRamp_0( signedInk_0 : f32, widthPx_0 : f32) -> f32\n{\n return clamp(signedInk_0 / widthPx_0 + 0.5f, 0.0f, 1.0f);\n}\n\nfn dashCoverageAt_0( coord_0 : f32, dashPx_1 : f32, gapPx_1 : f32, aaPx_1 : f32) -> f32\n{\n var period_0 : f32 = dashPx_1 + gapPx_1;\n var shifted_0 : f32 = coord_0 + gapPx_1 * 0.5f;\n return aaRamp_0(dashPx_1 * 0.5f - abs(shifted_0 - period_0 * floor(shifted_0 / period_0) - period_0 * 0.5f), aaPx_1);\n}\n\nfn dashCoverage_0( coord_1 : f32, dashPx_2 : f32, gapPx_2 : f32, dpr_3 : f32) -> f32\n{\n return dashCoverageAt_0(coord_1, dashPx_2, gapPx_2, aaPx_0(dpr_3));\n}\n\nfn edgeCoverage_0( signedInkCssPx_0 : f32, dpr_4 : f32) -> f32\n{\n return aaRamp_0(signedInkCssPx_0, aaPx_0(dpr_4));\n}\n\nstruct pixelOutput_0\n{\n @location(0) output_0 : vec4<f32>,\n};\n\nstruct pixelInput_0\n{\n @location(0) color_3 : vec4<f32>,\n @location(1) across_2 : f32,\n @location(2) along_2 : f32,\n @interpolate(flat) @location(3) halfWidthPx_1 : f32,\n @interpolate(flat) @location(4) dashed_3 : f32,\n};\n\n@fragment\nfn fs_main( _S24 : pixelInput_0, @builtin(position) position_1 : vec4<f32>) -> pixelOutput_0\n{\n var _S25 : bool;\n if((_S24.dashed_3) > 0.5f)\n {\n _S25 = (u_0.dashPx_0) > 0.0f;\n }\n else\n {\n _S25 = false;\n }\n var dash_0 : f32;\n if(_S25)\n {\n dash_0 = dashCoverage_0(_S24.along_2, u_0.dashPx_0, u_0.gapPx_0, u_0.devicePixelRatio_0);\n }\n else\n {\n dash_0 = 1.0f;\n }\n var _S26 : pixelOutput_0 = pixelOutput_0( vec4<f32>(_S24.color_3.xyz, _S24.color_3.w * (edgeCoverage_0(_S24.halfWidthPx_1 - abs(_S24.across_2), u_0.devicePixelRatio_0) * dash_0)) );\n return _S26;\n}\n\n";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const GLSL_VERTEX = "#version 300 es\nprecision highp float;\nprecision highp int;\nstruct CoverageBandUniforms_0\n{\n float bpHi_0;\n float bpLo_0;\n float bpLen_0;\n float hpZero_0;\n float canvasW_0;\n float canvasH_0;\n float covHeight_0;\n float covYOffset_0;\n float covTop_0;\n float regionMaxDepth_0;\n float depthDomainMax_0;\n float depthDomainMin_0;\n float coverageSymlogConstant_0;\n float binSize_0;\n float interbaseHeight_0;\n float snpMinFreq_0;\n float reversed_0;\n int coverageScaleType_0;\n uint colorCoverage_0;\n uint colorBaseA_0;\n uint colorBaseC_0;\n uint colorBaseG_0;\n uint colorBaseT_0;\n uint colorBaseN_0;\n uint colorInsertionIndicator_0;\n uint colorSoftclipIndicator_0;\n uint colorHardclipIndicator_0;\n};\n\n\nlayout(std140) uniform Uniforms\n{\n float bpHi_0;\n float bpLo_0;\n float bpLen_0;\n float hpZero_0;\n float canvasW_0;\n float canvasH_0;\n float covHeight_0;\n float covYOffset_0;\n float covTop_0;\n float regionMaxDepth_0;\n float depthDomainMax_0;\n float depthDomainMin_0;\n float coverageSymlogConstant_0;\n float binSize_0;\n float interbaseHeight_0;\n float snpMinFreq_0;\n float reversed_0;\n int coverageScaleType_0;\n uint colorCoverage_0;\n uint colorBaseA_0;\n uint colorBaseC_0;\n uint colorBaseG_0;\n uint colorBaseT_0;\n uint colorBaseN_0;\n uint colorInsertionIndicator_0;\n uint colorSoftclipIndicator_0;\n uint colorHardclipIndicator_0;\n}u_0;\n\nvec2 quadLocal_0(uint vid_0)\n{\n\n uint v_0 = vid_0 % 6U;\n\n bool _S1 = v_0 == 0U;\n\n bool _S2;\n\n if(_S1)\n {\n\n _S2 = true;\n\n }\n else\n {\n\n _S2 = v_0 == 2U;\n\n }\n\n if(_S2)\n {\n\n _S2 = true;\n\n }\n else\n {\n\n _S2 = v_0 == 3U;\n\n }\n\n float _S3;\n\n if(_S2)\n {\n\n _S3 = 0.0;\n\n }\n else\n {\n\n _S3 = 1.0;\n\n }\n if(_S1)\n {\n\n _S2 = true;\n\n }\n else\n {\n\n _S2 = v_0 == 1U;\n\n }\n\n if(_S2)\n {\n\n _S2 = true;\n\n }\n else\n {\n\n _S2 = v_0 == 4U;\n\n }\n\n float _S4;\n\n if(_S2)\n {\n\n _S4 = 0.0;\n\n }\n else\n {\n\n _S4 = 1.0;\n\n }\n\n return vec2(_S3, _S4);\n}\n\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 hpToClipX_0(vec2 splitPos_0, vec3 bpRange_0, float hpZero_1)\n{\n\n float floorBp_0 = -3.00000000549775576e+38 + hpZero_1;\n float step_0 = 2.0 / bpRange_0.z;\n\n\n return dot(vec3(-1.0, max(splitPos_0.x - bpRange_0.x, floorBp_0), max(splitPos_0.y - bpRange_0.y, floorBp_0)), vec3(1.0, step_0, step_0));\n}\n\n\nfloat covBpToClipX_0(uint bp_0, CoverageBandUniforms_0 u_1)\n{\n\n return hpToClipX_0(hpSplitUint_0(bp_0), vec3(u_1.bpHi_0, u_1.bpLo_0, u_1.bpLen_0), u_1.hpZero_0);\n}\n\
|
|
1
|
+
export declare const GLSL_VERTEX = "#version 300 es\nprecision highp float;\nprecision highp int;\nstruct CoverageBandUniforms_0\n{\n float bpHi_0;\n float bpLo_0;\n float bpLen_0;\n float hpZero_0;\n float canvasW_0;\n float canvasH_0;\n float covHeight_0;\n float covYOffset_0;\n float covTop_0;\n float regionMaxDepth_0;\n float depthDomainMax_0;\n float depthDomainMin_0;\n float coverageSymlogConstant_0;\n float binSize_0;\n float interbaseHeight_0;\n float snpMinFreq_0;\n float reversed_0;\n int coverageScaleType_0;\n uint colorCoverage_0;\n uint colorBaseA_0;\n uint colorBaseC_0;\n uint colorBaseG_0;\n uint colorBaseT_0;\n uint colorBaseN_0;\n uint colorInsertionIndicator_0;\n uint colorSoftclipIndicator_0;\n uint colorHardclipIndicator_0;\n};\n\n\nlayout(std140) uniform Uniforms\n{\n float bpHi_0;\n float bpLo_0;\n float bpLen_0;\n float hpZero_0;\n float canvasW_0;\n float canvasH_0;\n float covHeight_0;\n float covYOffset_0;\n float covTop_0;\n float regionMaxDepth_0;\n float depthDomainMax_0;\n float depthDomainMin_0;\n float coverageSymlogConstant_0;\n float binSize_0;\n float interbaseHeight_0;\n float snpMinFreq_0;\n float reversed_0;\n int coverageScaleType_0;\n uint colorCoverage_0;\n uint colorBaseA_0;\n uint colorBaseC_0;\n uint colorBaseG_0;\n uint colorBaseT_0;\n uint colorBaseN_0;\n uint colorInsertionIndicator_0;\n uint colorSoftclipIndicator_0;\n uint colorHardclipIndicator_0;\n}u_0;\n\nvec2 quadLocal_0(uint vid_0)\n{\n\n uint v_0 = vid_0 % 6U;\n\n bool _S1 = v_0 == 0U;\n\n bool _S2;\n\n if(_S1)\n {\n\n _S2 = true;\n\n }\n else\n {\n\n _S2 = v_0 == 2U;\n\n }\n\n if(_S2)\n {\n\n _S2 = true;\n\n }\n else\n {\n\n _S2 = v_0 == 3U;\n\n }\n\n float _S3;\n\n if(_S2)\n {\n\n _S3 = 0.0;\n\n }\n else\n {\n\n _S3 = 1.0;\n\n }\n if(_S1)\n {\n\n _S2 = true;\n\n }\n else\n {\n\n _S2 = v_0 == 1U;\n\n }\n\n if(_S2)\n {\n\n _S2 = true;\n\n }\n else\n {\n\n _S2 = v_0 == 4U;\n\n }\n\n float _S4;\n\n if(_S2)\n {\n\n _S4 = 0.0;\n\n }\n else\n {\n\n _S4 = 1.0;\n\n }\n\n return vec2(_S3, _S4);\n}\n\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 hpToClipX_0(vec2 splitPos_0, vec3 bpRange_0, float hpZero_1)\n{\n\n float floorBp_0 = -3.00000000549775576e+38 + hpZero_1;\n float step_0 = 2.0 / bpRange_0.z;\n\n\n return dot(vec3(-1.0, max(splitPos_0.x - bpRange_0.x, floorBp_0), max(splitPos_0.y - bpRange_0.y, floorBp_0)), vec3(1.0, step_0, step_0));\n}\n\n\nfloat covBpToClipX_0(uint bp_0, CoverageBandUniforms_0 u_1)\n{\n\n return hpToClipX_0(hpSplitUint_0(bp_0), vec3(u_1.bpHi_0, u_1.bpLo_0, u_1.bpLen_0), u_1.hpZero_0);\n}\n\nfloat covFlipX_0(float x_0, CoverageBandUniforms_0 u_2)\n{\n\n return mix(x_0, - x_0, u_2.reversed_0);\n}\n\n\nfloat clipXToPx_0(float clipX_0, float canvasWidth_0)\n{\n\n return (clipX_0 + 1.0) * 0.5 * canvasWidth_0;\n}\n\n\nfloat interbaseBarLeftPx_0(float centerPx_0)\n{\n\n return floor(centerPx_0);\n}\n\n\nfloat pxToClipX_0(float xPx_0, float canvasWidth_1)\n{\n\n return xPx_0 / canvasWidth_1 * 2.0 - 1.0;\n}\n\n\nfloat pxToClipLen_0(float px_0, float size_0)\n{\n\n return px_0 * 2.0 / size_0;\n}\n\n\nfloat interbaseEdgePx_0(float offset_0, float interbaseHeight_1)\n{\n\n return floor(4.5) + floor(offset_0 * interbaseHeight_1 + 0.5);\n}\n\n\nfloat yPxToClipY_0(float yPx_0, float canvasHeight_0)\n{\n\n return 1.0 - yPx_0 / canvasHeight_0 * 2.0;\n}\n\n\nfloat covAreaTop_0(CoverageBandUniforms_0 u_3)\n{\n\n return yPxToClipY_0(u_3.covTop_0, u_3.canvasH_0);\n}\n\n\nvec4 unpackRGBA_0(uint c_0)\n{\n\n return vec4(float((c_0 >> 0U) & 255U), float((c_0 >> 8U) & 255U), float((c_0 >> 16U) & 255U), float((c_0 >> 24U) & 255U)) / 255.0;\n}\n\n\nvec3 covClipKindColor_0(float ct_0, CoverageBandUniforms_0 u_4)\n{\n\n int ci_0 = int(ct_0);\n if(ci_0 == 2)\n {\n\n return unpackRGBA_0(u_4.colorSoftclipIndicator_0).xyz;\n }\n\n if(ci_0 == 3)\n {\n\n return unpackRGBA_0(u_4.colorHardclipIndicator_0).xyz;\n }\n\n return unpackRGBA_0(u_4.colorInsertionIndicator_0).xyz;\n}\n\n\nout vec4 v_color;\n\n\nlayout(location = 0)\nin uint a_position;\n\n\nlayout(location = 1)\nin float a_yOffset;\n\n\nlayout(location = 2)\nin float a_segHeight;\n\n\nlayout(location = 3)\nin float a_colorType;\n\n\nstruct CoverageVsOut_0\n{\n vec4 position_0;\n vec4 color_0;\n};\n\n\nvoid main()\n{\n vec2 local_0 = quadLocal_0(uint(gl_VertexID));\n\n CoverageBandUniforms_0 _S5 = CoverageBandUniforms_0(u_0.bpHi_0, u_0.bpLo_0, u_0.bpLen_0, u_0.hpZero_0, u_0.canvasW_0, u_0.canvasH_0, u_0.covHeight_0, u_0.covYOffset_0, u_0.covTop_0, u_0.regionMaxDepth_0, u_0.depthDomainMax_0, u_0.depthDomainMin_0, u_0.coverageSymlogConstant_0, u_0.binSize_0, u_0.interbaseHeight_0, u_0.snpMinFreq_0, u_0.reversed_0, u_0.coverageScaleType_0, u_0.colorCoverage_0, u_0.colorBaseA_0, u_0.colorBaseC_0, u_0.colorBaseG_0, u_0.colorBaseT_0, u_0.colorBaseN_0, u_0.colorInsertionIndicator_0, u_0.colorSoftclipIndicator_0, u_0.colorHardclipIndicator_0);\n\n\n float x0_0 = pxToClipX_0(interbaseBarLeftPx_0(clipXToPx_0(covFlipX_0(covBpToClipX_0(a_position, _S5), _S5), u_0.canvasW_0)), u_0.canvasW_0);\n\n float _S6 = covAreaTop_0(_S5);\n\n CoverageVsOut_0 o_0;\n\n o_0.position_0 = vec4(mix(x0_0, x0_0 + pxToClipLen_0(1.0, u_0.canvasW_0), local_0.x), mix(_S6 - pxToClipLen_0(interbaseEdgePx_0(a_yOffset + a_segHeight, u_0.interbaseHeight_0), u_0.canvasH_0), _S6 - pxToClipLen_0(interbaseEdgePx_0(a_yOffset, u_0.interbaseHeight_0), u_0.canvasH_0), local_0.y), 0.0, 1.0);\n o_0.color_0 = vec4(covClipKindColor_0(a_colorType, _S5), 1.0);\n CoverageVsOut_0 _S7 = o_0;\n\n gl_Position = o_0.position_0;\n\n v_color = _S7.color_0;\n\n return;\n}\n\n";
|
|
2
2
|
export declare const GLSL_FRAGMENT = "#version 300 es\nprecision highp float;\nprecision highp int;\nlayout(location = 0)\nout vec4 entryPointParam_fs_main_0;\n\n\nin vec4 v_color;\n\n\nvoid main()\n{\n\n entryPointParam_fs_main_0 = v_color;\n\n return;\n}\n\n";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// AUTO-GENERATED by packages/shader-tools/src/shader-codegen from coverageInterbase.slang.
|
|
2
2
|
// Do not edit. Run `pnpm gen:shaders` to regenerate.
|
|
3
|
-
export const GLSL_VERTEX = "#version 300 es\nprecision highp float;\nprecision highp int;\nstruct CoverageBandUniforms_0\n{\n float bpHi_0;\n float bpLo_0;\n float bpLen_0;\n float hpZero_0;\n float canvasW_0;\n float canvasH_0;\n float covHeight_0;\n float covYOffset_0;\n float covTop_0;\n float regionMaxDepth_0;\n float depthDomainMax_0;\n float depthDomainMin_0;\n float coverageSymlogConstant_0;\n float binSize_0;\n float interbaseHeight_0;\n float snpMinFreq_0;\n float reversed_0;\n int coverageScaleType_0;\n uint colorCoverage_0;\n uint colorBaseA_0;\n uint colorBaseC_0;\n uint colorBaseG_0;\n uint colorBaseT_0;\n uint colorBaseN_0;\n uint colorInsertionIndicator_0;\n uint colorSoftclipIndicator_0;\n uint colorHardclipIndicator_0;\n};\n\n\nlayout(std140) uniform Uniforms\n{\n float bpHi_0;\n float bpLo_0;\n float bpLen_0;\n float hpZero_0;\n float canvasW_0;\n float canvasH_0;\n float covHeight_0;\n float covYOffset_0;\n float covTop_0;\n float regionMaxDepth_0;\n float depthDomainMax_0;\n float depthDomainMin_0;\n float coverageSymlogConstant_0;\n float binSize_0;\n float interbaseHeight_0;\n float snpMinFreq_0;\n float reversed_0;\n int coverageScaleType_0;\n uint colorCoverage_0;\n uint colorBaseA_0;\n uint colorBaseC_0;\n uint colorBaseG_0;\n uint colorBaseT_0;\n uint colorBaseN_0;\n uint colorInsertionIndicator_0;\n uint colorSoftclipIndicator_0;\n uint colorHardclipIndicator_0;\n}u_0;\n\nvec2 quadLocal_0(uint vid_0)\n{\n\n uint v_0 = vid_0 % 6U;\n\n bool _S1 = v_0 == 0U;\n\n bool _S2;\n\n if(_S1)\n {\n\n _S2 = true;\n\n }\n else\n {\n\n _S2 = v_0 == 2U;\n\n }\n\n if(_S2)\n {\n\n _S2 = true;\n\n }\n else\n {\n\n _S2 = v_0 == 3U;\n\n }\n\n float _S3;\n\n if(_S2)\n {\n\n _S3 = 0.0;\n\n }\n else\n {\n\n _S3 = 1.0;\n\n }\n if(_S1)\n {\n\n _S2 = true;\n\n }\n else\n {\n\n _S2 = v_0 == 1U;\n\n }\n\n if(_S2)\n {\n\n _S2 = true;\n\n }\n else\n {\n\n _S2 = v_0 == 4U;\n\n }\n\n float _S4;\n\n if(_S2)\n {\n\n _S4 = 0.0;\n\n }\n else\n {\n\n _S4 = 1.0;\n\n }\n\n return vec2(_S3, _S4);\n}\n\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 hpToClipX_0(vec2 splitPos_0, vec3 bpRange_0, float hpZero_1)\n{\n\n float floorBp_0 = -3.00000000549775576e+38 + hpZero_1;\n float step_0 = 2.0 / bpRange_0.z;\n\n\n return dot(vec3(-1.0, max(splitPos_0.x - bpRange_0.x, floorBp_0), max(splitPos_0.y - bpRange_0.y, floorBp_0)), vec3(1.0, step_0, step_0));\n}\n\n\nfloat covBpToClipX_0(uint bp_0, CoverageBandUniforms_0 u_1)\n{\n\n return hpToClipX_0(hpSplitUint_0(bp_0), vec3(u_1.bpHi_0, u_1.bpLo_0, u_1.bpLen_0), u_1.hpZero_0);\n}\n\
|
|
3
|
+
export const GLSL_VERTEX = "#version 300 es\nprecision highp float;\nprecision highp int;\nstruct CoverageBandUniforms_0\n{\n float bpHi_0;\n float bpLo_0;\n float bpLen_0;\n float hpZero_0;\n float canvasW_0;\n float canvasH_0;\n float covHeight_0;\n float covYOffset_0;\n float covTop_0;\n float regionMaxDepth_0;\n float depthDomainMax_0;\n float depthDomainMin_0;\n float coverageSymlogConstant_0;\n float binSize_0;\n float interbaseHeight_0;\n float snpMinFreq_0;\n float reversed_0;\n int coverageScaleType_0;\n uint colorCoverage_0;\n uint colorBaseA_0;\n uint colorBaseC_0;\n uint colorBaseG_0;\n uint colorBaseT_0;\n uint colorBaseN_0;\n uint colorInsertionIndicator_0;\n uint colorSoftclipIndicator_0;\n uint colorHardclipIndicator_0;\n};\n\n\nlayout(std140) uniform Uniforms\n{\n float bpHi_0;\n float bpLo_0;\n float bpLen_0;\n float hpZero_0;\n float canvasW_0;\n float canvasH_0;\n float covHeight_0;\n float covYOffset_0;\n float covTop_0;\n float regionMaxDepth_0;\n float depthDomainMax_0;\n float depthDomainMin_0;\n float coverageSymlogConstant_0;\n float binSize_0;\n float interbaseHeight_0;\n float snpMinFreq_0;\n float reversed_0;\n int coverageScaleType_0;\n uint colorCoverage_0;\n uint colorBaseA_0;\n uint colorBaseC_0;\n uint colorBaseG_0;\n uint colorBaseT_0;\n uint colorBaseN_0;\n uint colorInsertionIndicator_0;\n uint colorSoftclipIndicator_0;\n uint colorHardclipIndicator_0;\n}u_0;\n\nvec2 quadLocal_0(uint vid_0)\n{\n\n uint v_0 = vid_0 % 6U;\n\n bool _S1 = v_0 == 0U;\n\n bool _S2;\n\n if(_S1)\n {\n\n _S2 = true;\n\n }\n else\n {\n\n _S2 = v_0 == 2U;\n\n }\n\n if(_S2)\n {\n\n _S2 = true;\n\n }\n else\n {\n\n _S2 = v_0 == 3U;\n\n }\n\n float _S3;\n\n if(_S2)\n {\n\n _S3 = 0.0;\n\n }\n else\n {\n\n _S3 = 1.0;\n\n }\n if(_S1)\n {\n\n _S2 = true;\n\n }\n else\n {\n\n _S2 = v_0 == 1U;\n\n }\n\n if(_S2)\n {\n\n _S2 = true;\n\n }\n else\n {\n\n _S2 = v_0 == 4U;\n\n }\n\n float _S4;\n\n if(_S2)\n {\n\n _S4 = 0.0;\n\n }\n else\n {\n\n _S4 = 1.0;\n\n }\n\n return vec2(_S3, _S4);\n}\n\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 hpToClipX_0(vec2 splitPos_0, vec3 bpRange_0, float hpZero_1)\n{\n\n float floorBp_0 = -3.00000000549775576e+38 + hpZero_1;\n float step_0 = 2.0 / bpRange_0.z;\n\n\n return dot(vec3(-1.0, max(splitPos_0.x - bpRange_0.x, floorBp_0), max(splitPos_0.y - bpRange_0.y, floorBp_0)), vec3(1.0, step_0, step_0));\n}\n\n\nfloat covBpToClipX_0(uint bp_0, CoverageBandUniforms_0 u_1)\n{\n\n return hpToClipX_0(hpSplitUint_0(bp_0), vec3(u_1.bpHi_0, u_1.bpLo_0, u_1.bpLen_0), u_1.hpZero_0);\n}\n\nfloat covFlipX_0(float x_0, CoverageBandUniforms_0 u_2)\n{\n\n return mix(x_0, - x_0, u_2.reversed_0);\n}\n\n\nfloat clipXToPx_0(float clipX_0, float canvasWidth_0)\n{\n\n return (clipX_0 + 1.0) * 0.5 * canvasWidth_0;\n}\n\n\nfloat interbaseBarLeftPx_0(float centerPx_0)\n{\n\n return floor(centerPx_0);\n}\n\n\nfloat pxToClipX_0(float xPx_0, float canvasWidth_1)\n{\n\n return xPx_0 / canvasWidth_1 * 2.0 - 1.0;\n}\n\n\nfloat pxToClipLen_0(float px_0, float size_0)\n{\n\n return px_0 * 2.0 / size_0;\n}\n\n\nfloat interbaseEdgePx_0(float offset_0, float interbaseHeight_1)\n{\n\n return floor(4.5) + floor(offset_0 * interbaseHeight_1 + 0.5);\n}\n\n\nfloat yPxToClipY_0(float yPx_0, float canvasHeight_0)\n{\n\n return 1.0 - yPx_0 / canvasHeight_0 * 2.0;\n}\n\n\nfloat covAreaTop_0(CoverageBandUniforms_0 u_3)\n{\n\n return yPxToClipY_0(u_3.covTop_0, u_3.canvasH_0);\n}\n\n\nvec4 unpackRGBA_0(uint c_0)\n{\n\n return vec4(float((c_0 >> 0U) & 255U), float((c_0 >> 8U) & 255U), float((c_0 >> 16U) & 255U), float((c_0 >> 24U) & 255U)) / 255.0;\n}\n\n\nvec3 covClipKindColor_0(float ct_0, CoverageBandUniforms_0 u_4)\n{\n\n int ci_0 = int(ct_0);\n if(ci_0 == 2)\n {\n\n return unpackRGBA_0(u_4.colorSoftclipIndicator_0).xyz;\n }\n\n if(ci_0 == 3)\n {\n\n return unpackRGBA_0(u_4.colorHardclipIndicator_0).xyz;\n }\n\n return unpackRGBA_0(u_4.colorInsertionIndicator_0).xyz;\n}\n\n\nout vec4 v_color;\n\n\nlayout(location = 0)\nin uint a_position;\n\n\nlayout(location = 1)\nin float a_yOffset;\n\n\nlayout(location = 2)\nin float a_segHeight;\n\n\nlayout(location = 3)\nin float a_colorType;\n\n\nstruct CoverageVsOut_0\n{\n vec4 position_0;\n vec4 color_0;\n};\n\n\nvoid main()\n{\n vec2 local_0 = quadLocal_0(uint(gl_VertexID));\n\n CoverageBandUniforms_0 _S5 = CoverageBandUniforms_0(u_0.bpHi_0, u_0.bpLo_0, u_0.bpLen_0, u_0.hpZero_0, u_0.canvasW_0, u_0.canvasH_0, u_0.covHeight_0, u_0.covYOffset_0, u_0.covTop_0, u_0.regionMaxDepth_0, u_0.depthDomainMax_0, u_0.depthDomainMin_0, u_0.coverageSymlogConstant_0, u_0.binSize_0, u_0.interbaseHeight_0, u_0.snpMinFreq_0, u_0.reversed_0, u_0.coverageScaleType_0, u_0.colorCoverage_0, u_0.colorBaseA_0, u_0.colorBaseC_0, u_0.colorBaseG_0, u_0.colorBaseT_0, u_0.colorBaseN_0, u_0.colorInsertionIndicator_0, u_0.colorSoftclipIndicator_0, u_0.colorHardclipIndicator_0);\n\n\n float x0_0 = pxToClipX_0(interbaseBarLeftPx_0(clipXToPx_0(covFlipX_0(covBpToClipX_0(a_position, _S5), _S5), u_0.canvasW_0)), u_0.canvasW_0);\n\n float _S6 = covAreaTop_0(_S5);\n\n CoverageVsOut_0 o_0;\n\n o_0.position_0 = vec4(mix(x0_0, x0_0 + pxToClipLen_0(1.0, u_0.canvasW_0), local_0.x), mix(_S6 - pxToClipLen_0(interbaseEdgePx_0(a_yOffset + a_segHeight, u_0.interbaseHeight_0), u_0.canvasH_0), _S6 - pxToClipLen_0(interbaseEdgePx_0(a_yOffset, u_0.interbaseHeight_0), u_0.canvasH_0), local_0.y), 0.0, 1.0);\n o_0.color_0 = vec4(covClipKindColor_0(a_colorType, _S5), 1.0);\n CoverageVsOut_0 _S7 = o_0;\n\n gl_Position = o_0.position_0;\n\n v_color = _S7.color_0;\n\n return;\n}\n\n";
|
|
4
4
|
export const GLSL_FRAGMENT = "#version 300 es\nprecision highp float;\nprecision highp int;\nlayout(location = 0)\nout vec4 entryPointParam_fs_main_0;\n\n\nin vec4 v_color;\n\n\nvoid main()\n{\n\n entryPointParam_fs_main_0 = v_color;\n\n return;\n}\n\n";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const WGSL_SOURCE = "struct CoverageBandUniforms_std140_0\n{\n @align(16) bpHi_0 : f32,\n @align(4) bpLo_0 : f32,\n @align(8) bpLen_0 : f32,\n @align(4) hpZero_0 : f32,\n @align(16) canvasW_0 : f32,\n @align(4) canvasH_0 : f32,\n @align(8) covHeight_0 : f32,\n @align(4) covYOffset_0 : f32,\n @align(16) covTop_0 : f32,\n @align(4) regionMaxDepth_0 : f32,\n @align(8) depthDomainMax_0 : f32,\n @align(4) depthDomainMin_0 : f32,\n @align(16) coverageSymlogConstant_0 : f32,\n @align(4) binSize_0 : f32,\n @align(8) interbaseHeight_0 : f32,\n @align(4) snpMinFreq_0 : f32,\n @align(16) reversed_0 : f32,\n @align(4) coverageScaleType_0 : i32,\n @align(8) colorCoverage_0 : u32,\n @align(4) colorBaseA_0 : u32,\n @align(16) colorBaseC_0 : u32,\n @align(4) colorBaseG_0 : u32,\n @align(8) colorBaseT_0 : u32,\n @align(4) colorBaseN_0 : u32,\n @align(16) colorInsertionIndicator_0 : u32,\n @align(4) colorSoftclipIndicator_0 : u32,\n @align(8) colorHardclipIndicator_0 : u32,\n};\n\n@binding(1) @group(0) var<uniform> u_0 : CoverageBandUniforms_std140_0;\nfn quadLocal_0( vid_0 : u32) -> vec2<f32>\n{\n var v_0 : u32 = vid_0 % u32(6);\n var _S1 : bool = v_0 == u32(0);\n var _S2 : bool;\n if(_S1)\n {\n _S2 = true;\n }\n else\n {\n _S2 = v_0 == u32(2);\n }\n if(_S2)\n {\n _S2 = true;\n }\n else\n {\n _S2 = v_0 == u32(3);\n }\n var _S3 : f32;\n if(_S2)\n {\n _S3 = 0.0f;\n }\n else\n {\n _S3 = 1.0f;\n }\n if(_S1)\n {\n _S2 = true;\n }\n else\n {\n _S2 = v_0 == u32(1);\n }\n if(_S2)\n {\n _S2 = true;\n }\n else\n {\n _S2 = v_0 == u32(4);\n }\n var _S4 : f32;\n if(_S2)\n {\n _S4 = 0.0f;\n }\n else\n {\n _S4 = 1.0f;\n }\n return vec2<f32>(_S3, _S4);\n}\n\nfn hpSplitUint_0( value_0 : u32) -> vec2<f32>\n{\n var lo_0 : u32 = (value_0 & (u32(4095)));\n return vec2<f32>(f32(value_0 - lo_0), f32(lo_0));\n}\n\nfn hpToClipX_0( splitPos_0 : vec2<f32>, bpRange_0 : vec3<f32>, hpZero_1 : f32) -> f32\n{\n var floorBp_0 : f32 = -3.00000000549775576e+38f + hpZero_1;\n var step_0 : f32 = 2.0f / bpRange_0.z;\n return dot(vec3<f32>(-1.0f, max(splitPos_0.x - bpRange_0.x, floorBp_0), max(splitPos_0.y - bpRange_0.y, floorBp_0)), vec3<f32>(1.0f, step_0, step_0));\n}\n\nfn covBpToClipX_0( bp_0 : u32, u_1 : ptr<function, CoverageBandUniforms_std140_0>) -> f32\n{\n return hpToClipX_0(hpSplitUint_0(bp_0), vec3<f32>((*u_1).bpHi_0, (*u_1).bpLo_0, (*u_1).bpLen_0), (*u_1).hpZero_0);\n}\n\nfn
|
|
1
|
+
export declare const WGSL_SOURCE = "struct CoverageBandUniforms_std140_0\n{\n @align(16) bpHi_0 : f32,\n @align(4) bpLo_0 : f32,\n @align(8) bpLen_0 : f32,\n @align(4) hpZero_0 : f32,\n @align(16) canvasW_0 : f32,\n @align(4) canvasH_0 : f32,\n @align(8) covHeight_0 : f32,\n @align(4) covYOffset_0 : f32,\n @align(16) covTop_0 : f32,\n @align(4) regionMaxDepth_0 : f32,\n @align(8) depthDomainMax_0 : f32,\n @align(4) depthDomainMin_0 : f32,\n @align(16) coverageSymlogConstant_0 : f32,\n @align(4) binSize_0 : f32,\n @align(8) interbaseHeight_0 : f32,\n @align(4) snpMinFreq_0 : f32,\n @align(16) reversed_0 : f32,\n @align(4) coverageScaleType_0 : i32,\n @align(8) colorCoverage_0 : u32,\n @align(4) colorBaseA_0 : u32,\n @align(16) colorBaseC_0 : u32,\n @align(4) colorBaseG_0 : u32,\n @align(8) colorBaseT_0 : u32,\n @align(4) colorBaseN_0 : u32,\n @align(16) colorInsertionIndicator_0 : u32,\n @align(4) colorSoftclipIndicator_0 : u32,\n @align(8) colorHardclipIndicator_0 : u32,\n};\n\n@binding(1) @group(0) var<uniform> u_0 : CoverageBandUniforms_std140_0;\nfn quadLocal_0( vid_0 : u32) -> vec2<f32>\n{\n var v_0 : u32 = vid_0 % u32(6);\n var _S1 : bool = v_0 == u32(0);\n var _S2 : bool;\n if(_S1)\n {\n _S2 = true;\n }\n else\n {\n _S2 = v_0 == u32(2);\n }\n if(_S2)\n {\n _S2 = true;\n }\n else\n {\n _S2 = v_0 == u32(3);\n }\n var _S3 : f32;\n if(_S2)\n {\n _S3 = 0.0f;\n }\n else\n {\n _S3 = 1.0f;\n }\n if(_S1)\n {\n _S2 = true;\n }\n else\n {\n _S2 = v_0 == u32(1);\n }\n if(_S2)\n {\n _S2 = true;\n }\n else\n {\n _S2 = v_0 == u32(4);\n }\n var _S4 : f32;\n if(_S2)\n {\n _S4 = 0.0f;\n }\n else\n {\n _S4 = 1.0f;\n }\n return vec2<f32>(_S3, _S4);\n}\n\nfn hpSplitUint_0( value_0 : u32) -> vec2<f32>\n{\n var lo_0 : u32 = (value_0 & (u32(4095)));\n return vec2<f32>(f32(value_0 - lo_0), f32(lo_0));\n}\n\nfn hpToClipX_0( splitPos_0 : vec2<f32>, bpRange_0 : vec3<f32>, hpZero_1 : f32) -> f32\n{\n var floorBp_0 : f32 = -3.00000000549775576e+38f + hpZero_1;\n var step_0 : f32 = 2.0f / bpRange_0.z;\n return dot(vec3<f32>(-1.0f, max(splitPos_0.x - bpRange_0.x, floorBp_0), max(splitPos_0.y - bpRange_0.y, floorBp_0)), vec3<f32>(1.0f, step_0, step_0));\n}\n\nfn covBpToClipX_0( bp_0 : u32, u_1 : ptr<function, CoverageBandUniforms_std140_0>) -> f32\n{\n return hpToClipX_0(hpSplitUint_0(bp_0), vec3<f32>((*u_1).bpHi_0, (*u_1).bpLo_0, (*u_1).bpLen_0), (*u_1).hpZero_0);\n}\n\nfn covFlipX_0( x_0 : f32, u_2 : ptr<function, CoverageBandUniforms_std140_0>) -> f32\n{\n return mix(x_0, - x_0, (*u_2).reversed_0);\n}\n\nfn clipXToPx_0( clipX_0 : f32, canvasWidth_0 : f32) -> f32\n{\n return (clipX_0 + 1.0f) * 0.5f * canvasWidth_0;\n}\n\nfn interbaseBarLeftPx_0( centerPx_0 : f32) -> f32\n{\n return floor(centerPx_0);\n}\n\nfn pxToClipX_0( xPx_0 : f32, canvasWidth_1 : f32) -> f32\n{\n return xPx_0 / canvasWidth_1 * 2.0f - 1.0f;\n}\n\nfn pxToClipLen_0( px_0 : f32, size_0 : f32) -> f32\n{\n return px_0 * 2.0f / size_0;\n}\n\nfn interbaseEdgePx_0( offset_0 : f32, interbaseHeight_1 : f32) -> f32\n{\n return floor(4.5f) + floor(offset_0 * interbaseHeight_1 + 0.5f);\n}\n\nfn yPxToClipY_0( yPx_0 : f32, canvasHeight_0 : f32) -> f32\n{\n return 1.0f - yPx_0 / canvasHeight_0 * 2.0f;\n}\n\nfn covAreaTop_0( u_3 : ptr<function, CoverageBandUniforms_std140_0>) -> f32\n{\n return yPxToClipY_0((*u_3).covTop_0, (*u_3).canvasH_0);\n}\n\nfn unpackRGBA_0( c_0 : u32) -> vec4<f32>\n{\n return vec4<f32>(f32((((c_0 >> (u32(0)))) & (u32(255)))), f32((((c_0 >> (u32(8)))) & (u32(255)))), f32((((c_0 >> (u32(16)))) & (u32(255)))), f32((((c_0 >> (u32(24)))) & (u32(255))))) / vec4<f32>(255.0f);\n}\n\nfn covClipKindColor_0( ct_0 : f32, u_4 : ptr<function, CoverageBandUniforms_std140_0>) -> vec3<f32>\n{\n var ci_0 : i32 = i32(ct_0);\n if(ci_0 == i32(2))\n {\n return unpackRGBA_0((*u_4).colorSoftclipIndicator_0).xyz;\n }\n if(ci_0 == i32(3))\n {\n return unpackRGBA_0((*u_4).colorHardclipIndicator_0).xyz;\n }\n return unpackRGBA_0((*u_4).colorInsertionIndicator_0).xyz;\n}\n\nstruct CoverageVsOut_0\n{\n @builtin(position) position_0 : vec4<f32>,\n @location(0) color_0 : vec4<f32>,\n};\n\nstruct vertexInput_0\n{\n @location(0) position_1 : u32,\n @location(1) yOffset_0 : f32,\n @location(2) segHeight_0 : f32,\n @location(3) colorType_0 : f32,\n};\n\n@vertex\nfn vs_main( _S5 : vertexInput_0, @builtin(vertex_index) vid_1 : u32) -> CoverageVsOut_0\n{\n var local_0 : vec2<f32> = quadLocal_0(vid_1);\n var _S6 : CoverageBandUniforms_std140_0 = u_0;\n var _S7 : f32 = covBpToClipX_0(_S5.position_1, &(_S6));\n var _S8 : f32 = covFlipX_0(_S7, &(_S6));\n var x0_0 : f32 = pxToClipX_0(interbaseBarLeftPx_0(clipXToPx_0(_S8, u_0.canvasW_0)), u_0.canvasW_0);\n var x1_0 : f32 = x0_0 + pxToClipLen_0(1.0f, u_0.canvasW_0);\n var topPx_0 : f32 = interbaseEdgePx_0(_S5.yOffset_0, u_0.interbaseHeight_0);\n var botPx_0 : f32 = interbaseEdgePx_0(_S5.yOffset_0 + _S5.segHeight_0, u_0.interbaseHeight_0);\n var _S9 : f32 = covAreaTop_0(&(_S6));\n var o_0 : CoverageVsOut_0;\n o_0.position_0 = vec4<f32>(mix(x0_0, x1_0, local_0.x), mix(_S9 - pxToClipLen_0(botPx_0, u_0.canvasH_0), _S9 - pxToClipLen_0(topPx_0, u_0.canvasH_0), local_0.y), 0.0f, 1.0f);\n var _S10 : vec3<f32> = covClipKindColor_0(_S5.colorType_0, &(_S6));\n o_0.color_0 = vec4<f32>(_S10, 1.0f);\n return o_0;\n}\n\nstruct pixelOutput_0\n{\n @location(0) output_0 : vec4<f32>,\n};\n\nstruct pixelInput_0\n{\n @location(0) color_1 : vec4<f32>,\n};\n\n@fragment\nfn fs_main( _S11 : pixelInput_0, @builtin(position) position_2 : vec4<f32>) -> pixelOutput_0\n{\n var _S12 : pixelOutput_0 = pixelOutput_0( _S11.color_1 );\n return _S12;\n}\n\n";
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// AUTO-GENERATED by packages/shader-tools/src/shader-codegen from coverageInterbase.slang.
|
|
2
2
|
// Do not edit. Run `pnpm gen:shaders` to regenerate.
|
|
3
|
-
export const WGSL_SOURCE = "struct CoverageBandUniforms_std140_0\n{\n @align(16) bpHi_0 : f32,\n @align(4) bpLo_0 : f32,\n @align(8) bpLen_0 : f32,\n @align(4) hpZero_0 : f32,\n @align(16) canvasW_0 : f32,\n @align(4) canvasH_0 : f32,\n @align(8) covHeight_0 : f32,\n @align(4) covYOffset_0 : f32,\n @align(16) covTop_0 : f32,\n @align(4) regionMaxDepth_0 : f32,\n @align(8) depthDomainMax_0 : f32,\n @align(4) depthDomainMin_0 : f32,\n @align(16) coverageSymlogConstant_0 : f32,\n @align(4) binSize_0 : f32,\n @align(8) interbaseHeight_0 : f32,\n @align(4) snpMinFreq_0 : f32,\n @align(16) reversed_0 : f32,\n @align(4) coverageScaleType_0 : i32,\n @align(8) colorCoverage_0 : u32,\n @align(4) colorBaseA_0 : u32,\n @align(16) colorBaseC_0 : u32,\n @align(4) colorBaseG_0 : u32,\n @align(8) colorBaseT_0 : u32,\n @align(4) colorBaseN_0 : u32,\n @align(16) colorInsertionIndicator_0 : u32,\n @align(4) colorSoftclipIndicator_0 : u32,\n @align(8) colorHardclipIndicator_0 : u32,\n};\n\n@binding(1) @group(0) var<uniform> u_0 : CoverageBandUniforms_std140_0;\nfn quadLocal_0( vid_0 : u32) -> vec2<f32>\n{\n var v_0 : u32 = vid_0 % u32(6);\n var _S1 : bool = v_0 == u32(0);\n var _S2 : bool;\n if(_S1)\n {\n _S2 = true;\n }\n else\n {\n _S2 = v_0 == u32(2);\n }\n if(_S2)\n {\n _S2 = true;\n }\n else\n {\n _S2 = v_0 == u32(3);\n }\n var _S3 : f32;\n if(_S2)\n {\n _S3 = 0.0f;\n }\n else\n {\n _S3 = 1.0f;\n }\n if(_S1)\n {\n _S2 = true;\n }\n else\n {\n _S2 = v_0 == u32(1);\n }\n if(_S2)\n {\n _S2 = true;\n }\n else\n {\n _S2 = v_0 == u32(4);\n }\n var _S4 : f32;\n if(_S2)\n {\n _S4 = 0.0f;\n }\n else\n {\n _S4 = 1.0f;\n }\n return vec2<f32>(_S3, _S4);\n}\n\nfn hpSplitUint_0( value_0 : u32) -> vec2<f32>\n{\n var lo_0 : u32 = (value_0 & (u32(4095)));\n return vec2<f32>(f32(value_0 - lo_0), f32(lo_0));\n}\n\nfn hpToClipX_0( splitPos_0 : vec2<f32>, bpRange_0 : vec3<f32>, hpZero_1 : f32) -> f32\n{\n var floorBp_0 : f32 = -3.00000000549775576e+38f + hpZero_1;\n var step_0 : f32 = 2.0f / bpRange_0.z;\n return dot(vec3<f32>(-1.0f, max(splitPos_0.x - bpRange_0.x, floorBp_0), max(splitPos_0.y - bpRange_0.y, floorBp_0)), vec3<f32>(1.0f, step_0, step_0));\n}\n\nfn covBpToClipX_0( bp_0 : u32, u_1 : ptr<function, CoverageBandUniforms_std140_0>) -> f32\n{\n return hpToClipX_0(hpSplitUint_0(bp_0), vec3<f32>((*u_1).bpHi_0, (*u_1).bpLo_0, (*u_1).bpLen_0), (*u_1).hpZero_0);\n}\n\nfn
|
|
3
|
+
export const WGSL_SOURCE = "struct CoverageBandUniforms_std140_0\n{\n @align(16) bpHi_0 : f32,\n @align(4) bpLo_0 : f32,\n @align(8) bpLen_0 : f32,\n @align(4) hpZero_0 : f32,\n @align(16) canvasW_0 : f32,\n @align(4) canvasH_0 : f32,\n @align(8) covHeight_0 : f32,\n @align(4) covYOffset_0 : f32,\n @align(16) covTop_0 : f32,\n @align(4) regionMaxDepth_0 : f32,\n @align(8) depthDomainMax_0 : f32,\n @align(4) depthDomainMin_0 : f32,\n @align(16) coverageSymlogConstant_0 : f32,\n @align(4) binSize_0 : f32,\n @align(8) interbaseHeight_0 : f32,\n @align(4) snpMinFreq_0 : f32,\n @align(16) reversed_0 : f32,\n @align(4) coverageScaleType_0 : i32,\n @align(8) colorCoverage_0 : u32,\n @align(4) colorBaseA_0 : u32,\n @align(16) colorBaseC_0 : u32,\n @align(4) colorBaseG_0 : u32,\n @align(8) colorBaseT_0 : u32,\n @align(4) colorBaseN_0 : u32,\n @align(16) colorInsertionIndicator_0 : u32,\n @align(4) colorSoftclipIndicator_0 : u32,\n @align(8) colorHardclipIndicator_0 : u32,\n};\n\n@binding(1) @group(0) var<uniform> u_0 : CoverageBandUniforms_std140_0;\nfn quadLocal_0( vid_0 : u32) -> vec2<f32>\n{\n var v_0 : u32 = vid_0 % u32(6);\n var _S1 : bool = v_0 == u32(0);\n var _S2 : bool;\n if(_S1)\n {\n _S2 = true;\n }\n else\n {\n _S2 = v_0 == u32(2);\n }\n if(_S2)\n {\n _S2 = true;\n }\n else\n {\n _S2 = v_0 == u32(3);\n }\n var _S3 : f32;\n if(_S2)\n {\n _S3 = 0.0f;\n }\n else\n {\n _S3 = 1.0f;\n }\n if(_S1)\n {\n _S2 = true;\n }\n else\n {\n _S2 = v_0 == u32(1);\n }\n if(_S2)\n {\n _S2 = true;\n }\n else\n {\n _S2 = v_0 == u32(4);\n }\n var _S4 : f32;\n if(_S2)\n {\n _S4 = 0.0f;\n }\n else\n {\n _S4 = 1.0f;\n }\n return vec2<f32>(_S3, _S4);\n}\n\nfn hpSplitUint_0( value_0 : u32) -> vec2<f32>\n{\n var lo_0 : u32 = (value_0 & (u32(4095)));\n return vec2<f32>(f32(value_0 - lo_0), f32(lo_0));\n}\n\nfn hpToClipX_0( splitPos_0 : vec2<f32>, bpRange_0 : vec3<f32>, hpZero_1 : f32) -> f32\n{\n var floorBp_0 : f32 = -3.00000000549775576e+38f + hpZero_1;\n var step_0 : f32 = 2.0f / bpRange_0.z;\n return dot(vec3<f32>(-1.0f, max(splitPos_0.x - bpRange_0.x, floorBp_0), max(splitPos_0.y - bpRange_0.y, floorBp_0)), vec3<f32>(1.0f, step_0, step_0));\n}\n\nfn covBpToClipX_0( bp_0 : u32, u_1 : ptr<function, CoverageBandUniforms_std140_0>) -> f32\n{\n return hpToClipX_0(hpSplitUint_0(bp_0), vec3<f32>((*u_1).bpHi_0, (*u_1).bpLo_0, (*u_1).bpLen_0), (*u_1).hpZero_0);\n}\n\nfn covFlipX_0( x_0 : f32, u_2 : ptr<function, CoverageBandUniforms_std140_0>) -> f32\n{\n return mix(x_0, - x_0, (*u_2).reversed_0);\n}\n\nfn clipXToPx_0( clipX_0 : f32, canvasWidth_0 : f32) -> f32\n{\n return (clipX_0 + 1.0f) * 0.5f * canvasWidth_0;\n}\n\nfn interbaseBarLeftPx_0( centerPx_0 : f32) -> f32\n{\n return floor(centerPx_0);\n}\n\nfn pxToClipX_0( xPx_0 : f32, canvasWidth_1 : f32) -> f32\n{\n return xPx_0 / canvasWidth_1 * 2.0f - 1.0f;\n}\n\nfn pxToClipLen_0( px_0 : f32, size_0 : f32) -> f32\n{\n return px_0 * 2.0f / size_0;\n}\n\nfn interbaseEdgePx_0( offset_0 : f32, interbaseHeight_1 : f32) -> f32\n{\n return floor(4.5f) + floor(offset_0 * interbaseHeight_1 + 0.5f);\n}\n\nfn yPxToClipY_0( yPx_0 : f32, canvasHeight_0 : f32) -> f32\n{\n return 1.0f - yPx_0 / canvasHeight_0 * 2.0f;\n}\n\nfn covAreaTop_0( u_3 : ptr<function, CoverageBandUniforms_std140_0>) -> f32\n{\n return yPxToClipY_0((*u_3).covTop_0, (*u_3).canvasH_0);\n}\n\nfn unpackRGBA_0( c_0 : u32) -> vec4<f32>\n{\n return vec4<f32>(f32((((c_0 >> (u32(0)))) & (u32(255)))), f32((((c_0 >> (u32(8)))) & (u32(255)))), f32((((c_0 >> (u32(16)))) & (u32(255)))), f32((((c_0 >> (u32(24)))) & (u32(255))))) / vec4<f32>(255.0f);\n}\n\nfn covClipKindColor_0( ct_0 : f32, u_4 : ptr<function, CoverageBandUniforms_std140_0>) -> vec3<f32>\n{\n var ci_0 : i32 = i32(ct_0);\n if(ci_0 == i32(2))\n {\n return unpackRGBA_0((*u_4).colorSoftclipIndicator_0).xyz;\n }\n if(ci_0 == i32(3))\n {\n return unpackRGBA_0((*u_4).colorHardclipIndicator_0).xyz;\n }\n return unpackRGBA_0((*u_4).colorInsertionIndicator_0).xyz;\n}\n\nstruct CoverageVsOut_0\n{\n @builtin(position) position_0 : vec4<f32>,\n @location(0) color_0 : vec4<f32>,\n};\n\nstruct vertexInput_0\n{\n @location(0) position_1 : u32,\n @location(1) yOffset_0 : f32,\n @location(2) segHeight_0 : f32,\n @location(3) colorType_0 : f32,\n};\n\n@vertex\nfn vs_main( _S5 : vertexInput_0, @builtin(vertex_index) vid_1 : u32) -> CoverageVsOut_0\n{\n var local_0 : vec2<f32> = quadLocal_0(vid_1);\n var _S6 : CoverageBandUniforms_std140_0 = u_0;\n var _S7 : f32 = covBpToClipX_0(_S5.position_1, &(_S6));\n var _S8 : f32 = covFlipX_0(_S7, &(_S6));\n var x0_0 : f32 = pxToClipX_0(interbaseBarLeftPx_0(clipXToPx_0(_S8, u_0.canvasW_0)), u_0.canvasW_0);\n var x1_0 : f32 = x0_0 + pxToClipLen_0(1.0f, u_0.canvasW_0);\n var topPx_0 : f32 = interbaseEdgePx_0(_S5.yOffset_0, u_0.interbaseHeight_0);\n var botPx_0 : f32 = interbaseEdgePx_0(_S5.yOffset_0 + _S5.segHeight_0, u_0.interbaseHeight_0);\n var _S9 : f32 = covAreaTop_0(&(_S6));\n var o_0 : CoverageVsOut_0;\n o_0.position_0 = vec4<f32>(mix(x0_0, x1_0, local_0.x), mix(_S9 - pxToClipLen_0(botPx_0, u_0.canvasH_0), _S9 - pxToClipLen_0(topPx_0, u_0.canvasH_0), local_0.y), 0.0f, 1.0f);\n var _S10 : vec3<f32> = covClipKindColor_0(_S5.colorType_0, &(_S6));\n o_0.color_0 = vec4<f32>(_S10, 1.0f);\n return o_0;\n}\n\nstruct pixelOutput_0\n{\n @location(0) output_0 : vec4<f32>,\n};\n\nstruct pixelInput_0\n{\n @location(0) color_1 : vec4<f32>,\n};\n\n@fragment\nfn fs_main( _S11 : pixelInput_0, @builtin(position) position_2 : vec4<f32>) -> pixelOutput_0\n{\n var _S12 : pixelOutput_0 = pixelOutput_0( _S11.color_1 );\n return _S12;\n}\n\n";
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
export declare function distToWideCirclePx(x: number, y: number, r: number): number;
|
|
2
|
+
export declare function legSweepAngle(radiusPx: number, yReachPx: number): number;
|
|
2
3
|
export declare function wideCircleLeg(seg: number, segments: number, legSweep: number): [number, number];
|
|
3
4
|
export declare function wideCircleLegStep(seg: number, segments: number, legSweep: number): number;
|
|
4
5
|
export declare function ellipseHullPoint(cosA: number, sinA: number, cosHalf: number, sinHalf: number, rx: number, ry: number, padPx: number): [number, number];
|
|
5
6
|
export declare function wideCircleHullPoint(sinB: number, sinHalfB: number, cosHalf: number, radiusPx: number, padPx: number): [number, number];
|
|
7
|
+
export declare function farDomeParam(dPx: number, rxPx: number): number;
|
|
8
|
+
export declare function farDomeHullPoint(u: number, stepU: number, rxPx: number, ryPx: number, padPx: number): [number, number];
|
|
9
|
+
export declare function farDomeDistancePx(dPx: number, hPx: number, rxPx: number, ryPx: number): number;
|
|
@@ -2,13 +2,22 @@
|
|
|
2
2
|
// Do not edit. Run `pnpm gen:shaders` to regenerate.
|
|
3
3
|
// Scalar twins of curveDistance.slang, transliterated from slangc's WGSL so
|
|
4
4
|
// the Canvas2D and SVG paths run the shader's own math. See adr-051.
|
|
5
|
+
function _clamp(x, lo, hi) {
|
|
6
|
+
return _min(_max(x, lo), hi);
|
|
7
|
+
}
|
|
5
8
|
function _max(a, b) {
|
|
6
9
|
return b > a || Number.isNaN(a) ? b : a;
|
|
7
10
|
}
|
|
11
|
+
function _min(a, b) {
|
|
12
|
+
return b < a || Number.isNaN(a) ? b : a;
|
|
13
|
+
}
|
|
8
14
|
export function distToWideCirclePx(x, y, r) {
|
|
9
15
|
let rk = ((2.0 * x) + (((x * x) + (y * y)) / r));
|
|
10
16
|
return Math.abs((rk / (Math.sqrt(_max((1.0 + (rk / r)), 0.0)) + 1.0)));
|
|
11
17
|
}
|
|
18
|
+
export function legSweepAngle(radiusPx, yReachPx) {
|
|
19
|
+
return Math.asin(_clamp((yReachPx / _max(radiusPx, 9.99999997475242708e-07)), 0.0, 1.0));
|
|
20
|
+
}
|
|
12
21
|
export function wideCircleLeg(seg, segments, legSweep) {
|
|
13
22
|
let half = Math.trunc(segments / 2);
|
|
14
23
|
if ((seg <= half)) {
|
|
@@ -85,3 +94,107 @@ export function wideCircleHullPoint(sinB, sinHalfB, cosHalf, radiusPx, padPx) {
|
|
|
85
94
|
let sh2 = (sinHalfB * sinHalfB);
|
|
86
95
|
return [((grow * (1.0 - (2.0 * sh2))) - ((2.0 * radiusPx) * sh2)), ((radiusPx + grow) * sinB)];
|
|
87
96
|
}
|
|
97
|
+
export function farDomeParam(dPx, rxPx) {
|
|
98
|
+
return Math.sqrt(_clamp((dPx / (2.0 * _max(rxPx, 9.99999997475242708e-07))), 0.0, 0.8399999737739563));
|
|
99
|
+
}
|
|
100
|
+
export function farDomeHullPoint(u, stepU, rxPx, ryPx, padPx) {
|
|
101
|
+
let _t0 = _max(ryPx, 9.99999997475242708e-07);
|
|
102
|
+
let _t1 = _max(u, (0.5 * stepU));
|
|
103
|
+
let nx = (-_t0 * (1.0 - ((2.0 * _t1) * _t1)));
|
|
104
|
+
let _t2 = (2.0 * rxPx);
|
|
105
|
+
let ny = ((_t2 * _t1) * Math.sqrt((1.0 - (_t1 * _t1))));
|
|
106
|
+
let _t3 = _max(((nx * nx) + (ny * ny)), 9.99999968265522539e-21);
|
|
107
|
+
let reach = (padPx + (((((((Math.sign(padPx)) | 0)) * 0.5) * rxPx) * stepU) * stepU));
|
|
108
|
+
let _t4 = Math.sqrt(_t3);
|
|
109
|
+
let along = (reach / _t4);
|
|
110
|
+
let d = ((_t2 * u) * u);
|
|
111
|
+
let _t5 = (u * u);
|
|
112
|
+
let h = (((2.0 * _t0) * u) * Math.sqrt((1.0 - _t5)));
|
|
113
|
+
let folded;
|
|
114
|
+
if ((padPx < 0.0)) {
|
|
115
|
+
folded = (_t5 < 0.5);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
folded = false;
|
|
119
|
+
}
|
|
120
|
+
if (folded) {
|
|
121
|
+
folded = ((_t3 * _t4) < (((-2.0 * reach) * rxPx) * _t0));
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
folded = false;
|
|
125
|
+
}
|
|
126
|
+
let _t6;
|
|
127
|
+
if (folded) {
|
|
128
|
+
if ((u > 0.0)) {
|
|
129
|
+
_t6 = (d - reach);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
_t6 = d;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
_t6 = (d + (nx * along));
|
|
137
|
+
}
|
|
138
|
+
let _t7;
|
|
139
|
+
if (folded) {
|
|
140
|
+
_t7 = (h + reach);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
_t7 = (h + (ny * along));
|
|
144
|
+
}
|
|
145
|
+
return [_t6, _t7];
|
|
146
|
+
}
|
|
147
|
+
function farDomeDistSq(u, dPx, hPx, rx, ry) {
|
|
148
|
+
let ox = ((((2.0 * rx) * u) * u) - dPx);
|
|
149
|
+
let oy = ((((2.0 * ry) * u) * Math.sqrt(_max((1.0 - (u * u)), 0.0))) - hPx);
|
|
150
|
+
return ((ox * ox) + (oy * oy));
|
|
151
|
+
}
|
|
152
|
+
function farDomeStep(u, dPx, hPx, rx, ry) {
|
|
153
|
+
let w = Math.sqrt(_max((1.0 - (u * u)), 9.99999997475242708e-07));
|
|
154
|
+
let ox = ((((2.0 * rx) * u) * u) - dPx);
|
|
155
|
+
let _t0 = (2.0 * ry);
|
|
156
|
+
let _t1 = (_t0 * u);
|
|
157
|
+
let oy = ((_t1 * w) - hPx);
|
|
158
|
+
let _t2 = (4.0 * rx);
|
|
159
|
+
let dx = (_t2 * u);
|
|
160
|
+
let _t3 = ((2.0 * u) * u);
|
|
161
|
+
let dy = ((_t0 * (1.0 - _t3)) / w);
|
|
162
|
+
let whole = _clamp((u - (((ox * dx) + (oy * dy)) / _max(((((dx * dx) + (dy * dy)) + (ox * _t2)) + (oy * ((_t1 * (_t3 - 3.0)) / ((w * w) * w)))), 9.999999960041972e-13))), 0.0, 0.99900001287460327);
|
|
163
|
+
let half = (0.5 * (u + whole));
|
|
164
|
+
let here = ((ox * ox) + (oy * oy));
|
|
165
|
+
let _t4;
|
|
166
|
+
if ((farDomeDistSq(whole, dPx, hPx, rx, ry) < here)) {
|
|
167
|
+
_t4 = whole;
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
if ((farDomeDistSq(half, dPx, hPx, rx, ry) < here)) {
|
|
171
|
+
_t4 = half;
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
_t4 = u;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
return _t4;
|
|
178
|
+
}
|
|
179
|
+
export function farDomeDistancePx(dPx, hPx, rxPx, ryPx) {
|
|
180
|
+
let _t0 = _max(rxPx, 9.99999997475242708e-07);
|
|
181
|
+
let _t1 = _max(ryPx, 9.99999997475242708e-07);
|
|
182
|
+
let q = _clamp((hPx / _t1), 0.0, 1.0);
|
|
183
|
+
let c = Math.sqrt((1.0 - (q * q)));
|
|
184
|
+
let uH;
|
|
185
|
+
if ((dPx > _t0)) {
|
|
186
|
+
uH = Math.sqrt((0.5 * (1.0 + c)));
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
uH = (q / Math.sqrt((2.0 * (1.0 + c))));
|
|
190
|
+
}
|
|
191
|
+
let uD = Math.sqrt(_clamp((dPx / (2.0 * _t0)), 0.0, 1.0));
|
|
192
|
+
let u;
|
|
193
|
+
if ((farDomeDistSq(uH, dPx, hPx, _t0, _t1) < farDomeDistSq(uD, dPx, hPx, _t0, _t1))) {
|
|
194
|
+
u = uH;
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
u = uD;
|
|
198
|
+
}
|
|
199
|
+
return Math.sqrt(farDomeDistSq(farDomeStep(farDomeStep(farDomeStep(farDomeStep(u, dPx, hPx, _t0, _t1), dPx, hPx, _t0, _t1), dPx, hPx, _t0, _t1), dPx, hPx, _t0, _t1), dPx, hPx, _t0, _t1));
|
|
200
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const LONG_INSERTION_MIN_LENGTH = 10;
|
|
2
|
+
export declare const LONG_INSERTION_TEXT_THRESHOLD_PX = 15;
|
|
3
|
+
export declare const MIN_HEIGHT_FOR_TEXT = 5;
|
|
4
|
+
export declare const INSERTION_SERIF_MIN_PX_PER_BP = 3;
|
|
5
|
+
export declare const SERIF_HALF_W_PX = 2;
|
|
6
|
+
export declare const SERIF_H_PX = 2;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// AUTO-GENERATED by packages/shader-tools/src/shader-codegen from insertionGlyph.slang.
|
|
2
|
+
// Do not edit. Run `pnpm gen:shaders` to regenerate.
|
|
3
|
+
export const LONG_INSERTION_MIN_LENGTH = 10;
|
|
4
|
+
export const LONG_INSERTION_TEXT_THRESHOLD_PX = 15;
|
|
5
|
+
export const MIN_HEIGHT_FOR_TEXT = 5;
|
|
6
|
+
export const INSERTION_SERIF_MIN_PX_PER_BP = 3;
|
|
7
|
+
export const SERIF_HALF_W_PX = 2;
|
|
8
|
+
export const SERIF_H_PX = 2;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const GLSL_VERTEX = "#version 300 es\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\n\n\nlayout(std140) uniform Uniforms\n{\n vec3 bpRangeX_0;\n float canvasHeight_0;\n float domainMin_0;\n float domainMax_0;\n int valueScaleType_0;\n float valueSymlogConstant_0;\n int rampMode_0;\n float rampMin_0;\n float rampMax_0;\n float rampMidNorm_0;\n int colorCutCount_0;\n vec4 colorCuts_0[2];\n vec4 colorBands_0[9];\n float rowHeight_0;\n float rowBandPx_0;\n float rowOffsetPx_0;\n float origin_0;\n float lineWidth_0;\n float zero_0;\n float viewportWidth_0;\n float devicePixelRatio_0;\n int rowTableKeys_0;\n}u_0;\n\nuniform sampler2D u_colorRamp;\n\n\nuniform sampler2D u_rowTable;\n\n\nvec4 unpackRGBA_0(uint c_0)\n{\n\n return vec4(float((c_0 >> 0U) & 255U), float((c_0 >> 8U) & 255U), float((c_0 >> 16U) & 255U), float((c_0 >> 24U) & 255U)) / 255.0;\n}\n\n\nfloat rampMidT_0(float t_0, float mid_0)\n{\n\n float _S1 = max(mid_0, 1.0 - mid_0);\n return clamp((t_0 + (_S1 - mid_0)) / (2.0 * _S1), 0.0, 1.0);\n}\n\n\nfloat colorCutAt_0(int i_0, vec4 cutsLo_0, vec4 cutsHi_0)\n{\n\n float _S2;\n if(i_0 < 4)\n {\n\n _S2 = cutsLo_0[i_0];\n\n }\n else\n {\n\n _S2 = cutsHi_0[i_0 - 4];\n\n }\n\n return _S2;\n}\n\n\nint thresholdBand_0(float value_0, int cutCount_0, vec4 cutsLo_1, vec4 cutsHi_1)\n{\n\n int band_0 = 0;\n\n int i_1 = 0;\n\n for(;;)\n {\n\n if(i_1 < cutCount_0)\n {\n }\n else\n {\n\n break;\n }\n\n if(value_0 >= (colorCutAt_0(i_1, cutsLo_1, cutsHi_1)))\n {\n\n band_0 = i_1 + 1;\n\n }\n\n i_1 = i_1 + 1;\n\n }\n\n return band_0;\n}\n\n\nfloat log1pf_0(float x_0)\n{\n\n float u_1 = 1.0 + x_0;\n\n float _S3;\n if(u_1 == 1.0)\n {\n\n _S3 = x_0;\n\n }\n else\n {\n\n _S3 = log(u_1) * (x_0 / (u_1 - 1.0));\n\n }\n\n return _S3;\n}\n\nfloat symlogTransform_0(float x_1, float c_1)\n{\n\n return float((int(sign((x_1))))) * log1pf_0(abs(x_1 / c_1));\n}\n\n\nfloat normalizeScoreUnclamped_0(float score_0, float domainMin_1, float domainMax_1, int scaleType_0, float symlogConstant_0)\n{\n\n float tMax_0;\n\n float tMin_0;\n\n float t_1;\n\n\n\n if(scaleType_0 == 2)\n {\n\n float _S4 = symlogTransform_0(score_0, symlogConstant_0);\n float _S5 = symlogTransform_0(domainMin_1, symlogConstant_0);\n\n tMax_0 = symlogTransform_0(domainMax_1, symlogConstant_0);\n\n tMin_0 = _S5;\n\n t_1 = _S4;\n\n }\n else\n {\n\n if(scaleType_0 == 1)\n {\n if(domainMin_1 > 0.0)\n {\n\n tMax_0 = domainMin_1;\n\n }\n else\n {\n\n tMax_0 = 1.0;\n\n }\n float _S6 = log2(max(score_0, tMax_0));\n float _S7 = log2(tMax_0);\n\n tMax_0 = log2(max(domainMax_1, tMax_0));\n\n tMin_0 = _S7;\n\n t_1 = _S6;\n\n }\n else\n {\n\n tMax_0 = domainMax_1;\n\n tMin_0 = domainMin_1;\n\n t_1 = score_0;\n\n }\n\n }\n\n float tRange_0 = tMax_0 - tMin_0;\n if(tRange_0 <= 0.0)\n {\n\n if(t_1 > tMin_0)\n {\n\n tMax_0 = 1.0;\n\n }\n else\n {\n\n tMax_0 = 0.0;\n\n }\n\n return tMax_0;\n }\n return (t_1 - tMin_0) / tRange_0;\n}\n\nfloat normalizeScore_0(float score_1, float domainMin_2, float domainMax_2, int scaleType_1, float symlogConstant_1)\n{\n\n return clamp(normalizeScoreUnclamped_0(score_1, domainMin_2, domainMax_2, scaleType_1, symlogConstant_1), 0.0, 1.0);\n}\n\n\nuint rowTableWidth_0(uint keys_0)\n{\n\n return max(min(keys_0, 2048U), 1U);\n}\n\nuint rowTablePlaneHeight_0(uint keys_1)\n{\n\n uint w_0 = rowTableWidth_0(keys_1);\n uint _S8 = (keys_1 + w_0 - 1U) / w_0;\n\n return max(_S8, 1U);\n}\n\nuint rowTableTexelX_0(uint key_0, uint keys_2)\n{\n\n uint _S9 = key_0 % rowTableWidth_0(keys_2);\n\n return _S9;\n}\n\n\nuint rowTableTexelY_0(uint key_1, uint keys_3)\n{\n\n uint _S10 = key_1 / rowTableWidth_0(keys_3);\n\n return _S10;\n}\n\n\nuint byteOf_0(float channel_0)\n{\n\n return uint(channel_0 * 255.0 + 0.5);\n}\n\n\nvec2 hpSplitUint_0(uint value_1)\n{\n\n uint lo_0 = value_1 & 4095U;\n\n return vec2(float(value_1 - lo_0), float(lo_0));\n}\n\n\nfloat hpToClipX_0(vec2 splitPos_0, vec3 bpRange_0, float hpZero_0)\n{\n\n float floorBp_0 = -3.00000000549775576e+38 + hpZero_0;\n float step_0 = 2.0 / bpRange_0.z;\n\n\n return dot(vec3(-1.0, max(splitPos_0.x - bpRange_0.x, floorBp_0), max(splitPos_0.y - bpRange_0.y, floorBp_0)), vec3(1.0, step_0, step_0));\n}\n\n\nfloat rowBandTopPx_0(float rowOffsetPx_1, float rowHeight_1, uint slot_0)\n{\n\n return rowOffsetPx_1 + rowHeight_1 * float(slot_0);\n}\n\n\nfloat valueToYPxScaled_0(float value_2, float domainMin_3, float domainMax_3, float h_0, int scaleType_2, float symlogConstant_2)\n{\n\n return (1.0 - normalizeScore_0(value_2, domainMin_3, domainMax_3, scaleType_2, symlogConstant_2)) * h_0;\n}\n\n\nstruct CapsuleFrame_0\n{\n vec2 tangent_0;\n vec2 normal_0;\n};\n\n\nCapsuleFrame_0 capsuleFrame_0(vec2 delta_0, float len_0)\n{\n\n CapsuleFrame_0 f_0;\n\n vec2 _S11;\n if(len_0 > 0.00009999999747379)\n {\n\n _S11 = delta_0 / len_0;\n\n }\n else\n {\n\n _S11 = vec2(1.0, 0.0);\n\n }\n\n f_0.tangent_0 = _S11;\n f_0.normal_0 = vec2(- _S11.y, _S11.x);\n return f_0;\n}\n\n\nfloat aaPx_0(float dpr_0)\n{\n\n return 1.0 / max(dpr_0, 1.0);\n}\n\n\nfloat aaHalfPx_0(float dpr_1)\n{\n\n return 0.5 * aaPx_0(dpr_1);\n}\n\n\nvec2 quadLocal_0(uint vid_0)\n{\n\n uint v_0 = vid_0 % 6U;\n\n bool _S12 = v_0 == 0U;\n\n bool _S13;\n\n if(_S12)\n {\n\n _S13 = true;\n\n }\n else\n {\n\n _S13 = v_0 == 2U;\n\n }\n\n if(_S13)\n {\n\n _S13 = true;\n\n }\n else\n {\n\n _S13 = v_0 == 3U;\n\n }\n\n float _S14;\n\n if(_S13)\n {\n\n _S14 = 0.0;\n\n }\n else\n {\n\n _S14 = 1.0;\n\n }\n if(_S12)\n {\n\n _S13 = true;\n\n }\n else\n {\n\n _S13 = v_0 == 1U;\n\n }\n\n if(_S13)\n {\n\n _S13 = true;\n\n }\n else\n {\n\n _S13 = v_0 == 4U;\n\n }\n\n float _S15;\n\n if(_S13)\n {\n\n _S15 = 0.0;\n\n }\n else\n {\n\n _S15 = 1.0;\n\n }\n\n return vec2(_S14, _S15);\n}\n\n\nvec2 capsuleQuadLocal_0(uint vid_1, float halfLenPx_0, float halfWidthPx_0, float dpr_2)\n{\n\n float ext_0 = halfWidthPx_0 + aaHalfPx_0(dpr_2);\n vec2 q_0 = quadLocal_0(vid_1) * 2.0 - 1.0;\n return vec2(q_0.x * (halfLenPx_0 + ext_0), q_0.y * ext_0);\n}\n\n\nfloat pxToClipLen_0(float px_0, float size_0)\n{\n\n return px_0 * 2.0 / size_0;\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\nflat out vec4 v_color;\n\n\nout vec2 v_localPos;\n\n\nflat out float v_segHalfLen;\n\n\nflat out vec2 v_colorLine;\n\n\nflat out vec4 v_cutYsLo;\n\n\nflat out vec4 v_cutYsHi;\n\n\nlayout(location = 0)\nin uint a_x;\n\n\nlayout(location = 1)\nin uint a_x2;\n\n\nlayout(location = 2)\nin float a_y;\n\n\nlayout(location = 3)\nin uint a_color;\n\n\nlayout(location = 4)\nin uint a_row;\n\n\nlayout(location = 5)\nin uint a_prevX;\n\n\nlayout(location = 6)\nin uint a_prevX2;\n\n\nlayout(location = 7)\nin float a_prevY;\n\n\nstruct VsOut_0\n{\n vec4 position_0;\n vec4 color_0;\n vec2 localPos_0;\n float segHalfLen_0;\n vec2 colorLine_0;\n vec4 cutYsLo_0;\n vec4 cutYsHi_0;\n};\n\n\nvec4 rampColor_0(float _S16)\n{\n\n return (textureLod((u_colorRamp), (vec2((clamp(_S16, 0.0, 1.0) * 255.0 + 0.5) / 256.0, 0.5)), (0.0)));\n}\n\n\nvec4 markScaleColor_0(uint _S17, int _S18, float _S19, float _S20, float _S21, int _S22, vec4 _S23, vec4 _S24)\n{\n\n if(_S18 == 0)\n {\n\n return unpackRGBA_0(_S17);\n }\n if(_S17 == 2143289345U)\n {\n\n return unpackRGBA_0(4289703855U);\n }\n\n int scaleType_3;\n\n if((_S17 & 2139095040U) == 2139095040U)\n {\n\n if((_S17 & 8388607U) != 0U)\n {\n\n return unpackRGBA_0(4286611584U);\n }\n\n bool negative_0 = (_S17 & 2147483648U) != 0U;\n if(_S18 == 3)\n {\n\n if(negative_0)\n {\n\n scaleType_3 = 0;\n\n }\n else\n {\n\n scaleType_3 = _S22;\n\n }\n\n return u_0.colorBands_0[scaleType_3];\n }\n\n float _S25;\n\n if(negative_0)\n {\n\n _S25 = 0.0;\n\n }\n else\n {\n\n _S25 = 1.0;\n\n }\n\n return rampColor_0(rampMidT_0(_S25, _S21));\n }\n float value_3 = uintBitsToFloat(_S17);\n if(_S18 == 3)\n {\n\n return u_0.colorBands_0[thresholdBand_0(value_3, _S22, _S23, _S24)];\n }\n if(_S18 == 2)\n {\n\n scaleType_3 = 1;\n\n }\n else\n {\n\n scaleType_3 = 0;\n\n }\n return rampColor_0(rampMidT_0(normalizeScore_0(value_3, _S19, _S20, scaleType_3, 1.0), _S21));\n}\n\n\nstruct RowPlacement_0\n{\n bool hidden_0;\n uint slot_1;\n vec4 color_1;\n};\n\n\nRowPlacement_0 rowTableLookup_0(uint _S26, int _S27, vec4 _S28)\n{\n\n RowPlacement_0 p_0;\n p_0.hidden_0 = false;\n p_0.slot_1 = _S26;\n p_0.color_1 = _S28;\n if(_S27 < 0)\n {\n\n return p_0;\n }\n uint n_0 = uint(_S27);\n if(_S26 >= n_0)\n {\n\n p_0.hidden_0 = true;\n return p_0;\n }\n uint h_1 = rowTablePlaneHeight_0(n_0);\n uint _S29 = rowTableTexelX_0(_S26, n_0);\n\n float u_2 = (float(_S29) + 0.5) / float(rowTableWidth_0(n_0));\n float rows_0 = float(2U * h_1);\n uint y_0 = rowTableTexelY_0(_S26, n_0);\n vec4 s_0 = (textureLod((u_rowTable), (vec2(u_2, (float(y_0) + 0.5) / rows_0)), (0.0)));\n if((s_0.w) < 0.5)\n {\n\n p_0.hidden_0 = true;\n return p_0;\n }\n p_0.slot_1 = ((byteOf_0(s_0.x)) | ((byteOf_0(s_0.y)) << 8)) | ((byteOf_0(s_0.z)) << 16);\n vec4 c_2 = (textureLod((u_rowTable), (vec2(u_2, (float(y_0 + h_1) + 0.5) / rows_0)), (0.0)));\n\n vec4 _S30;\n if((c_2.w) > 0.0)\n {\n\n _S30 = c_2;\n\n }\n else\n {\n\n _S30 = _S28;\n\n }\n\n p_0.color_1 = _S30;\n return p_0;\n}\n\n\nfloat lineBpToClipX_0(uint _S31)\n{\n\n return hpToClipX_0(hpSplitUint_0(_S31), u_0.bpRangeX_0, u_0.zero_0);\n}\n\n\nfloat lineValueYPx_0(float _S32, float _S33)\n{\n\n return _S33 + valueToYPxScaled_0(_S32, u_0.domainMin_0, u_0.domainMax_0, u_0.rowBandPx_0, u_0.valueScaleType_0, u_0.valueSymlogConstant_0);\n}\n\n\nfloat lineColorYPx_0(float _S34, float _S35)\n{\n\n return _S35 + (1.0 - normalizeScoreUnclamped_0(_S34, u_0.domainMin_0, u_0.domainMax_0, u_0.valueScaleType_0, u_0.valueSymlogConstant_0)) * u_0.rowBandPx_0;\n}\n\n\nvec4 lineCutYsPx_0(int _S36, float _S37)\n{\n\n vec4 ys_0 = vec4(0.0);\n\n int k_0 = 0;\n for(;;)\n {\n\n if(k_0 < 4)\n {\n }\n else\n {\n\n break;\n }\n\n int _S38 = _S36 + k_0;\n\n if(_S38 < (u_0.colorCutCount_0))\n {\n\n ys_0[k_0] = lineColorYPx_0(colorCutAt_0(_S38, u_0.colorCuts_0[0], u_0.colorCuts_0[1]), _S37);\n\n }\n\n k_0 = k_0 + 1;\n\n }\n\n return ys_0;\n}\n\n\nvoid main()\n{\n\n VsOut_0 o_0;\n\n RowPlacement_0 _S39 = rowTableLookup_0(a_row, u_0.rowTableKeys_0, markScaleColor_0(a_color, u_0.rampMode_0, u_0.rampMin_0, u_0.rampMax_0, u_0.rampMidNorm_0, u_0.colorCutCount_0, u_0.colorCuts_0[0], u_0.colorCuts_0[1]));\n\n\n if(_S39.hidden_0)\n {\n\n o_0.position_0 = vec4(2.0, 2.0, 0.0, 1.0);\n const vec4 _S40 = vec4(0.0);\n\n o_0.color_0 = _S40;\n const vec2 _S41 = vec2(0.0);\n\n o_0.localPos_0 = _S41;\n o_0.segHalfLen_0 = 0.0;\n o_0.colorLine_0 = _S41;\n o_0.cutYsLo_0 = _S40;\n o_0.cutYsHi_0 = _S40;\n VsOut_0 _S42 = o_0;\n\n gl_Position = o_0.position_0;\n\n v_color = _S42.color_0;\n\n v_localPos = _S42.localPos_0;\n\n v_segHalfLen = _S42.segHalfLen_0;\n\n v_colorLine = _S42.colorLine_0;\n\n v_cutYsLo = _S42.cutYsLo_0;\n\n v_cutYsHi = _S42.cutYsHi_0;\n\n return;\n }\n\n\n float bandTop_0 = rowBandTopPx_0(u_0.rowOffsetPx_0, u_0.rowHeight_0, _S39.slot_1);\n bool hasPrev_0 = a_prevX != 4294967295U;\n float midCurrX_0 = (lineBpToClipX_0(a_x) + lineBpToClipX_0(a_x2)) * 0.5;\n\n float midPrevX_0;\n\n\n\n if(hasPrev_0)\n {\n\n midPrevX_0 = (lineBpToClipX_0(a_prevX) + lineBpToClipX_0(a_prevX2)) * 0.5;\n\n }\n else\n {\n\n midPrevX_0 = midCurrX_0;\n\n }\n\n float _S43 = lineValueYPx_0(a_y, bandTop_0);\n\n float prevYPx_0;\n\n\n if(hasPrev_0)\n {\n\n prevYPx_0 = lineValueYPx_0(a_prevY, bandTop_0);\n\n }\n else\n {\n\n prevYPx_0 = _S43;\n\n }\n\n vec2 deltaPx_0 = vec2((midCurrX_0 - midPrevX_0) * u_0.viewportWidth_0 * 0.5, _S43 - prevYPx_0);\n\n float len_1 = length(deltaPx_0);\n CapsuleFrame_0 f_1 = capsuleFrame_0(deltaPx_0, len_1);\n\n float _S44 = len_1 * 0.5;\n\n vec2 local_0 = capsuleQuadLocal_0(uint(gl_VertexID), _S44, u_0.lineWidth_0 * 0.5, u_0.devicePixelRatio_0);\n vec2 off_0 = f_1.tangent_0 * local_0.x + f_1.normal_0 * local_0.y;\n o_0.position_0 = vec4((midPrevX_0 + midCurrX_0) * 0.5 + pxToClipLen_0(off_0.x, u_0.viewportWidth_0), yPxToClipY_0((prevYPx_0 + _S43) * 0.5 + off_0.y, u_0.canvasHeight_0), 0.0, 1.0);\n\n o_0.color_0 = _S39.color_1;\n o_0.localPos_0 = local_0;\n o_0.segHalfLen_0 = _S44;\n\n float _S45 = lineColorYPx_0(a_y, bandTop_0);\n\n float prevColorYPx_0;\n\n if(hasPrev_0)\n {\n\n prevColorYPx_0 = lineColorYPx_0(a_prevY, bandTop_0);\n\n }\n else\n {\n\n prevColorYPx_0 = _S45;\n\n }\n\n float _S46 = (prevColorYPx_0 + _S45) * 0.5;\n if(len_1 > 0.00009999999747379)\n {\n\n midPrevX_0 = (_S45 - prevColorYPx_0) / len_1;\n\n }\n else\n {\n\n midPrevX_0 = 0.0;\n\n }\n\n o_0.colorLine_0 = vec2(_S46, midPrevX_0);\n\n\n o_0.cutYsLo_0 = lineCutYsPx_0(0, bandTop_0);\n o_0.cutYsHi_0 = lineCutYsPx_0(4, bandTop_0);\n VsOut_0 _S47 = o_0;\n\n gl_Position = o_0.position_0;\n\n v_color = _S47.color_0;\n\n v_localPos = _S47.localPos_0;\n\n v_segHalfLen = _S47.segHalfLen_0;\n\n v_colorLine = _S47.colorLine_0;\n\n v_cutYsLo = _S47.cutYsLo_0;\n\n v_cutYsHi = _S47.cutYsHi_0;\n\n return;\n}\n\n";
|
|
2
|
-
export declare const GLSL_FRAGMENT = "#version 300 es\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\n\n\nlayout(std140) uniform Uniforms\n{\n vec3 bpRangeX_0;\n float canvasHeight_0;\n float domainMin_0;\n float domainMax_0;\n int valueScaleType_0;\n float valueSymlogConstant_0;\n int rampMode_0;\n float rampMin_0;\n float rampMax_0;\n float rampMidNorm_0;\n int colorCutCount_0;\n vec4 colorCuts_0[2];\n vec4 colorBands_0[9];\n float rowHeight_0;\n float rowBandPx_0;\n float rowOffsetPx_0;\n float origin_0;\n float lineWidth_0;\n float zero_0;\n float viewportWidth_0;\n float devicePixelRatio_0;\n int rowTableKeys_0;\n}u_0;\n\nfloat capsuleDistPx_0(float
|
|
1
|
+
export declare const GLSL_VERTEX = "#version 300 es\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\n\n\nlayout(std140) uniform Uniforms\n{\n vec3 bpRangeX_0;\n float canvasHeight_0;\n float domainMin_0;\n float domainMax_0;\n int valueScaleType_0;\n float valueSymlogConstant_0;\n int rampMode_0;\n float rampMin_0;\n float rampMax_0;\n float rampMidNorm_0;\n int colorCutCount_0;\n vec4 colorCuts_0[2];\n vec4 colorBands_0[9];\n int colorFromY_0;\n float rowHeight_0;\n float rowBandPx_0;\n float rowOffsetPx_0;\n float origin_0;\n float lineWidth_0;\n float zero_0;\n float viewportWidth_0;\n float devicePixelRatio_0;\n int rowTableKeys_0;\n}u_0;\n\nuniform sampler2D u_colorRamp;\n\n\nuniform sampler2D u_rowTable;\n\n\nvec4 unpackRGBA_0(uint c_0)\n{\n\n return vec4(float((c_0 >> 0U) & 255U), float((c_0 >> 8U) & 255U), float((c_0 >> 16U) & 255U), float((c_0 >> 24U) & 255U)) / 255.0;\n}\n\n\nfloat rampMidT_0(float t_0, float mid_0)\n{\n\n float _S1 = max(mid_0, 1.0 - mid_0);\n return clamp((t_0 + (_S1 - mid_0)) / (2.0 * _S1), 0.0, 1.0);\n}\n\n\nfloat colorCutAt_0(int i_0, vec4 cutsLo_0, vec4 cutsHi_0)\n{\n\n float _S2;\n if(i_0 < 4)\n {\n\n _S2 = cutsLo_0[i_0];\n\n }\n else\n {\n\n _S2 = cutsHi_0[i_0 - 4];\n\n }\n\n return _S2;\n}\n\n\nint thresholdBand_0(float value_0, int cutCount_0, vec4 cutsLo_1, vec4 cutsHi_1)\n{\n\n int band_0 = 0;\n\n int i_1 = 0;\n\n for(;;)\n {\n\n if(i_1 < cutCount_0)\n {\n }\n else\n {\n\n break;\n }\n\n if(value_0 >= (colorCutAt_0(i_1, cutsLo_1, cutsHi_1)))\n {\n\n band_0 = i_1 + 1;\n\n }\n\n i_1 = i_1 + 1;\n\n }\n\n return band_0;\n}\n\n\nfloat log1pf_0(float x_0)\n{\n\n float u_1 = 1.0 + x_0;\n\n float _S3;\n if(u_1 == 1.0)\n {\n\n _S3 = x_0;\n\n }\n else\n {\n\n _S3 = log(u_1) * (x_0 / (u_1 - 1.0));\n\n }\n\n return _S3;\n}\n\nfloat symlogTransform_0(float x_1, float c_1)\n{\n\n return float((int(sign((x_1))))) * log1pf_0(abs(x_1 / c_1));\n}\n\n\nfloat normalizeScoreUnclamped_0(float score_0, float domainMin_1, float domainMax_1, int scaleType_0, float symlogConstant_0)\n{\n\n float tMax_0;\n\n float tMin_0;\n\n float t_1;\n\n\n\n if(scaleType_0 == 2)\n {\n\n float _S4 = symlogTransform_0(score_0, symlogConstant_0);\n float _S5 = symlogTransform_0(domainMin_1, symlogConstant_0);\n\n tMax_0 = symlogTransform_0(domainMax_1, symlogConstant_0);\n\n tMin_0 = _S5;\n\n t_1 = _S4;\n\n }\n else\n {\n\n if(scaleType_0 == 1)\n {\n if(domainMin_1 > 0.0)\n {\n\n tMax_0 = domainMin_1;\n\n }\n else\n {\n\n tMax_0 = 1.0;\n\n }\n float _S6 = log2(max(score_0, tMax_0));\n float _S7 = log2(tMax_0);\n\n tMax_0 = log2(max(domainMax_1, tMax_0));\n\n tMin_0 = _S7;\n\n t_1 = _S6;\n\n }\n else\n {\n\n tMax_0 = domainMax_1;\n\n tMin_0 = domainMin_1;\n\n t_1 = score_0;\n\n }\n\n }\n\n float tRange_0 = tMax_0 - tMin_0;\n if(tRange_0 <= 0.0)\n {\n\n if(t_1 > tMin_0)\n {\n\n tMax_0 = 1.0;\n\n }\n else\n {\n\n tMax_0 = 0.0;\n\n }\n\n return tMax_0;\n }\n return (t_1 - tMin_0) / tRange_0;\n}\n\nfloat normalizeScore_0(float score_1, float domainMin_2, float domainMax_2, int scaleType_1, float symlogConstant_1)\n{\n\n return clamp(normalizeScoreUnclamped_0(score_1, domainMin_2, domainMax_2, scaleType_1, symlogConstant_1), 0.0, 1.0);\n}\n\n\nuint rowTableWidth_0(uint keys_0)\n{\n\n return max(min(keys_0, 2048U), 1U);\n}\n\nuint rowTablePlaneHeight_0(uint keys_1)\n{\n\n uint w_0 = rowTableWidth_0(keys_1);\n uint _S8 = (keys_1 + w_0 - 1U) / w_0;\n\n return max(_S8, 1U);\n}\n\nuint rowTableTexelX_0(uint key_0, uint keys_2)\n{\n\n uint _S9 = key_0 % rowTableWidth_0(keys_2);\n\n return _S9;\n}\n\n\nuint rowTableTexelY_0(uint key_1, uint keys_3)\n{\n\n uint _S10 = key_1 / rowTableWidth_0(keys_3);\n\n return _S10;\n}\n\n\nuint byteOf_0(float channel_0)\n{\n\n return uint(channel_0 * 255.0 + 0.5);\n}\n\n\nvec2 hpSplitUint_0(uint value_1)\n{\n\n uint lo_0 = value_1 & 4095U;\n\n return vec2(float(value_1 - lo_0), float(lo_0));\n}\n\n\nfloat hpToClipX_0(vec2 splitPos_0, vec3 bpRange_0, float hpZero_0)\n{\n\n float floorBp_0 = -3.00000000549775576e+38 + hpZero_0;\n float step_0 = 2.0 / bpRange_0.z;\n\n\n return dot(vec3(-1.0, max(splitPos_0.x - bpRange_0.x, floorBp_0), max(splitPos_0.y - bpRange_0.y, floorBp_0)), vec3(1.0, step_0, step_0));\n}\n\n\nfloat rowBandTopPx_0(float rowOffsetPx_1, float rowHeight_1, uint slot_0)\n{\n\n return rowOffsetPx_1 + rowHeight_1 * float(slot_0);\n}\n\n\nfloat valueToYPxScaled_0(float value_2, float domainMin_3, float domainMax_3, float h_0, int scaleType_2, float symlogConstant_2)\n{\n\n return (1.0 - normalizeScore_0(value_2, domainMin_3, domainMax_3, scaleType_2, symlogConstant_2)) * h_0;\n}\n\n\nfloat aaPx_0(float dpr_0)\n{\n\n return 1.0 / max(dpr_0, 1.0);\n}\n\n\nfloat aaHalfPx_0(float dpr_1)\n{\n\n return 0.5 * aaPx_0(dpr_1);\n}\n\n\nstruct CapsuleFrame_0\n{\n vec2 tangent_0;\n vec2 normal_0;\n};\n\n\nCapsuleFrame_0 capsuleFrame_0(vec2 delta_0, float len_0)\n{\n\n CapsuleFrame_0 f_0;\n\n vec2 _S11;\n if(len_0 > 0.00009999999747379)\n {\n\n _S11 = delta_0 / len_0;\n\n }\n else\n {\n\n _S11 = vec2(1.0, 0.0);\n\n }\n\n f_0.tangent_0 = _S11;\n f_0.normal_0 = vec2(- _S11.y, _S11.x);\n return f_0;\n}\n\n\nvec2 quadLocal_0(uint vid_0)\n{\n\n uint v_0 = vid_0 % 6U;\n\n bool _S12 = v_0 == 0U;\n\n bool _S13;\n\n if(_S12)\n {\n\n _S13 = true;\n\n }\n else\n {\n\n _S13 = v_0 == 2U;\n\n }\n\n if(_S13)\n {\n\n _S13 = true;\n\n }\n else\n {\n\n _S13 = v_0 == 3U;\n\n }\n\n float _S14;\n\n if(_S13)\n {\n\n _S14 = 0.0;\n\n }\n else\n {\n\n _S14 = 1.0;\n\n }\n if(_S12)\n {\n\n _S13 = true;\n\n }\n else\n {\n\n _S13 = v_0 == 1U;\n\n }\n\n if(_S13)\n {\n\n _S13 = true;\n\n }\n else\n {\n\n _S13 = v_0 == 4U;\n\n }\n\n float _S15;\n\n if(_S13)\n {\n\n _S15 = 0.0;\n\n }\n else\n {\n\n _S15 = 1.0;\n\n }\n\n return vec2(_S14, _S15);\n}\n\n\nstruct SegmentCorner_0\n{\n bool atEnd_0;\n vec2 offsetPx_0;\n vec3 local_0;\n};\n\n\nSegmentCorner_0 segmentCorner_0(uint vid_1, vec2 deltaPx_0, float alongPadPx_0, float acrossPadPx_0)\n{\n\n float len_1 = length(deltaPx_0);\n CapsuleFrame_0 f_1 = capsuleFrame_0(deltaPx_0, len_1);\n vec2 q_0 = quadLocal_0(vid_1) * 2.0 - 1.0;\n float across_0 = q_0.y * acrossPadPx_0;\n SegmentCorner_0 c_2;\n float _S16 = q_0.x;\n\n bool _S17 = _S16 > 0.0;\n\n c_2.atEnd_0 = _S17;\n c_2.offsetPx_0 = f_1.tangent_0 * (_S16 * alongPadPx_0) + f_1.normal_0 * across_0;\n float far_0 = len_1 + alongPadPx_0;\n\n vec3 _S18;\n\n if(_S17)\n {\n\n _S18 = vec3(far_0, - alongPadPx_0, across_0);\n\n }\n else\n {\n\n _S18 = vec3(- alongPadPx_0, far_0, across_0);\n\n }\n\n c_2.local_0 = _S18;\n\n\n return c_2;\n}\n\n\n\nSegmentCorner_0 capsuleCorner_0(uint vid_2, vec2 deltaPx_1, float halfWidthPx_0, float dpr_2)\n{\n\n float ext_0 = halfWidthPx_0 + aaHalfPx_0(dpr_2);\n return segmentCorner_0(vid_2, deltaPx_1, ext_0, ext_0);\n}\n\n\nfloat pxToClipLen_0(float px_0, float size_0)\n{\n\n return px_0 * 2.0 / size_0;\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\nbool lineColorAlongY_0(int rampMode_1, int colorFromY_1, bool overridden_0)\n{\n\n bool _S19;\n if(rampMode_1 == 3)\n {\n\n _S19 = colorFromY_1 != 0;\n\n }\n else\n {\n\n _S19 = false;\n\n }\n\n if(_S19)\n {\n\n _S19 = !overridden_0;\n\n }\n else\n {\n\n _S19 = false;\n\n }\n\n return _S19;\n}\n\n\nflat out vec4 v_color;\n\n\nout vec3 v_localPos;\n\n\nflat out vec2 v_colorLine;\n\n\nflat out vec4 v_cutYsLo;\n\n\nflat out vec4 v_cutYsHi;\n\n\nflat out float v_colorAlongY;\n\n\nlayout(location = 0)\nin uint a_x;\n\n\nlayout(location = 1)\nin uint a_x2;\n\n\nlayout(location = 2)\nin float a_y;\n\n\nlayout(location = 3)\nin uint a_color;\n\n\nlayout(location = 4)\nin uint a_row;\n\n\nlayout(location = 5)\nin uint a_prevX;\n\n\nlayout(location = 6)\nin uint a_prevX2;\n\n\nlayout(location = 7)\nin float a_prevY;\n\n\nstruct VsOut_0\n{\n vec4 position_0;\n vec4 color_0;\n vec3 localPos_0;\n vec2 colorLine_0;\n vec4 cutYsLo_0;\n vec4 cutYsHi_0;\n float colorAlongY_0;\n};\n\n\nvec4 rampColor_0(float _S20)\n{\n\n return (textureLod((u_colorRamp), (vec2((clamp(_S20, 0.0, 1.0) * 255.0 + 0.5) / 256.0, 0.5)), (0.0)));\n}\n\n\nvec4 markScaleColor_0(uint _S21, int _S22, float _S23, float _S24, float _S25, int _S26, vec4 _S27, vec4 _S28)\n{\n\n if(_S22 == 0)\n {\n\n return unpackRGBA_0(_S21);\n }\n if(_S21 == 2143289345U)\n {\n\n return unpackRGBA_0(4289703855U);\n }\n\n int scaleType_3;\n\n if((_S21 & 2139095040U) == 2139095040U)\n {\n\n if((_S21 & 8388607U) != 0U)\n {\n\n return unpackRGBA_0(4286611584U);\n }\n\n bool negative_0 = (_S21 & 2147483648U) != 0U;\n if(_S22 == 3)\n {\n\n if(negative_0)\n {\n\n scaleType_3 = 0;\n\n }\n else\n {\n\n scaleType_3 = _S26;\n\n }\n\n return u_0.colorBands_0[scaleType_3];\n }\n\n float _S29;\n\n if(negative_0)\n {\n\n _S29 = 0.0;\n\n }\n else\n {\n\n _S29 = 1.0;\n\n }\n\n return rampColor_0(rampMidT_0(_S29, _S25));\n }\n float value_3 = uintBitsToFloat(_S21);\n if(_S22 == 3)\n {\n\n return u_0.colorBands_0[thresholdBand_0(value_3, _S26, _S27, _S28)];\n }\n if(_S22 == 2)\n {\n\n scaleType_3 = 1;\n\n }\n else\n {\n\n scaleType_3 = 0;\n\n }\n return rampColor_0(rampMidT_0(normalizeScore_0(value_3, _S23, _S24, scaleType_3, 1.0), _S25));\n}\n\n\nstruct RowPlacement_0\n{\n bool hidden_0;\n uint slot_1;\n vec4 color_1;\n bool overridden_1;\n};\n\n\nRowPlacement_0 rowTableLookup_0(uint _S30, int _S31, vec4 _S32)\n{\n\n RowPlacement_0 p_0;\n p_0.hidden_0 = false;\n p_0.slot_1 = _S30;\n p_0.color_1 = _S32;\n p_0.overridden_1 = false;\n if(_S31 < 0)\n {\n\n return p_0;\n }\n uint n_0 = uint(_S31);\n if(_S30 >= n_0)\n {\n\n p_0.hidden_0 = true;\n return p_0;\n }\n uint h_1 = rowTablePlaneHeight_0(n_0);\n uint _S33 = rowTableTexelX_0(_S30, n_0);\n\n float u_2 = (float(_S33) + 0.5) / float(rowTableWidth_0(n_0));\n float rows_0 = float(2U * h_1);\n uint y_0 = rowTableTexelY_0(_S30, n_0);\n vec4 s_0 = (textureLod((u_rowTable), (vec2(u_2, (float(y_0) + 0.5) / rows_0)), (0.0)));\n if((s_0.w) < 0.5)\n {\n\n p_0.hidden_0 = true;\n return p_0;\n }\n p_0.slot_1 = ((byteOf_0(s_0.x)) | ((byteOf_0(s_0.y)) << 8)) | ((byteOf_0(s_0.z)) << 16);\n vec4 c_3 = (textureLod((u_rowTable), (vec2(u_2, (float(y_0 + h_1) + 0.5) / rows_0)), (0.0)));\n bool _S34 = (c_3.w) > 0.0;\n\n p_0.overridden_1 = _S34;\n\n vec4 _S35;\n if(_S34)\n {\n\n _S35 = c_3;\n\n }\n else\n {\n\n _S35 = _S32;\n\n }\n\n p_0.color_1 = _S35;\n return p_0;\n}\n\n\nfloat lineBpToClipX_0(uint _S36)\n{\n\n return hpToClipX_0(hpSplitUint_0(_S36), u_0.bpRangeX_0, u_0.zero_0);\n}\n\n\nfloat lineValueYPx_0(float _S37, float _S38)\n{\n\n return _S38 + valueToYPxScaled_0(_S37, u_0.domainMin_0, u_0.domainMax_0, u_0.rowBandPx_0, u_0.valueScaleType_0, u_0.valueSymlogConstant_0);\n}\n\n\nfloat lineColorYPx_0(float _S39, float _S40)\n{\n\n return _S40 + (1.0 - normalizeScoreUnclamped_0(_S39, u_0.domainMin_0, u_0.domainMax_0, u_0.valueScaleType_0, u_0.valueSymlogConstant_0)) * u_0.rowBandPx_0;\n}\n\n\nvec4 lineCutYsPx_0(int _S41, float _S42)\n{\n\n vec4 ys_0 = vec4(0.0);\n\n int k_0 = 0;\n for(;;)\n {\n\n if(k_0 < 4)\n {\n }\n else\n {\n\n break;\n }\n\n int _S43 = _S41 + k_0;\n\n if(_S43 < (u_0.colorCutCount_0))\n {\n\n ys_0[k_0] = lineColorYPx_0(colorCutAt_0(_S43, u_0.colorCuts_0[0], u_0.colorCuts_0[1]), _S42);\n\n }\n\n k_0 = k_0 + 1;\n\n }\n\n return ys_0;\n}\n\n\nvoid main()\n{\n\n VsOut_0 o_0;\n\n RowPlacement_0 _S44 = rowTableLookup_0(a_row, u_0.rowTableKeys_0, markScaleColor_0(a_color, u_0.rampMode_0, u_0.rampMin_0, u_0.rampMax_0, u_0.rampMidNorm_0, u_0.colorCutCount_0, u_0.colorCuts_0[0], u_0.colorCuts_0[1]));\n\n\n if(_S44.hidden_0)\n {\n\n o_0.position_0 = vec4(2.0, 2.0, 0.0, 1.0);\n const vec4 _S45 = vec4(0.0);\n\n o_0.color_0 = _S45;\n o_0.localPos_0 = vec3(0.0);\n o_0.colorLine_0 = vec2(0.0);\n o_0.cutYsLo_0 = _S45;\n o_0.cutYsHi_0 = _S45;\n o_0.colorAlongY_0 = 0.0;\n VsOut_0 _S46 = o_0;\n\n gl_Position = o_0.position_0;\n\n v_color = _S46.color_0;\n\n v_localPos = _S46.localPos_0;\n\n v_colorLine = _S46.colorLine_0;\n\n v_cutYsLo = _S46.cutYsLo_0;\n\n v_cutYsHi = _S46.cutYsHi_0;\n\n v_colorAlongY = _S46.colorAlongY_0;\n\n return;\n }\n\n\n float bandTop_0 = rowBandTopPx_0(u_0.rowOffsetPx_0, u_0.rowHeight_0, _S44.slot_1);\n bool hasPrev_0 = a_prevX != 4294967295U;\n float midCurrX_0 = (lineBpToClipX_0(a_x) + lineBpToClipX_0(a_x2)) * 0.5;\n\n float midPrevX_0;\n\n\n\n if(hasPrev_0)\n {\n\n midPrevX_0 = (lineBpToClipX_0(a_prevX) + lineBpToClipX_0(a_prevX2)) * 0.5;\n\n }\n else\n {\n\n midPrevX_0 = midCurrX_0;\n\n }\n\n float _S47 = lineValueYPx_0(a_y, bandTop_0);\n\n float prevYPx_0;\n\n\n if(hasPrev_0)\n {\n\n prevYPx_0 = lineValueYPx_0(a_prevY, bandTop_0);\n\n }\n else\n {\n\n prevYPx_0 = _S47;\n\n }\n\n\n vec2 deltaPx_2 = vec2((midCurrX_0 - midPrevX_0) * u_0.viewportWidth_0 * 0.5, _S47 - prevYPx_0);\n\n float len_2 = length(deltaPx_2);\n\n SegmentCorner_0 c_4 = capsuleCorner_0(uint(gl_VertexID), deltaPx_2, u_0.lineWidth_0 * 0.5, u_0.devicePixelRatio_0);\n\n if(c_4.atEnd_0)\n {\n\n midPrevX_0 = midCurrX_0;\n\n }\n\n float _S48 = midPrevX_0 + pxToClipLen_0(c_4.offsetPx_0.x, u_0.viewportWidth_0);\n if(c_4.atEnd_0)\n {\n\n midPrevX_0 = _S47;\n\n }\n else\n {\n\n midPrevX_0 = prevYPx_0;\n\n }\n\n o_0.position_0 = vec4(_S48, yPxToClipY_0(midPrevX_0 + c_4.offsetPx_0.y, u_0.canvasHeight_0), 0.0, 1.0);\n\n o_0.color_0 = _S44.color_1;\n o_0.localPos_0 = c_4.local_0;\n\n float _S49 = lineColorYPx_0(a_y, bandTop_0);\n\n float prevColorYPx_0;\n\n if(hasPrev_0)\n {\n\n prevColorYPx_0 = lineColorYPx_0(a_prevY, bandTop_0);\n\n }\n else\n {\n\n prevColorYPx_0 = _S49;\n\n }\n\n\n if(len_2 > 0.00009999999747379)\n {\n\n midPrevX_0 = (_S49 - prevColorYPx_0) / len_2;\n\n }\n else\n {\n\n midPrevX_0 = 0.0;\n\n }\n\n o_0.colorLine_0 = vec2(prevColorYPx_0, midPrevX_0);\n\n\n o_0.cutYsLo_0 = lineCutYsPx_0(0, bandTop_0);\n o_0.cutYsHi_0 = lineCutYsPx_0(4, bandTop_0);\n\n if(lineColorAlongY_0(u_0.rampMode_0, u_0.colorFromY_0, _S44.overridden_1))\n {\n\n midPrevX_0 = 1.0;\n\n }\n else\n {\n\n midPrevX_0 = 0.0;\n\n }\n\n o_0.colorAlongY_0 = midPrevX_0;\n\n VsOut_0 _S50 = o_0;\n\n gl_Position = o_0.position_0;\n\n v_color = _S50.color_0;\n\n v_localPos = _S50.localPos_0;\n\n v_colorLine = _S50.colorLine_0;\n\n v_cutYsLo = _S50.cutYsLo_0;\n\n v_cutYsHi = _S50.cutYsHi_0;\n\n v_colorAlongY = _S50.colorAlongY_0;\n\n return;\n}\n\n";
|
|
2
|
+
export declare const GLSL_FRAGMENT = "#version 300 es\nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\n\n\nlayout(std140) uniform Uniforms\n{\n vec3 bpRangeX_0;\n float canvasHeight_0;\n float domainMin_0;\n float domainMax_0;\n int valueScaleType_0;\n float valueSymlogConstant_0;\n int rampMode_0;\n float rampMin_0;\n float rampMax_0;\n float rampMidNorm_0;\n int colorCutCount_0;\n vec4 colorCuts_0[2];\n vec4 colorBands_0[9];\n int colorFromY_0;\n float rowHeight_0;\n float rowBandPx_0;\n float rowOffsetPx_0;\n float origin_0;\n float lineWidth_0;\n float zero_0;\n float viewportWidth_0;\n float devicePixelRatio_0;\n int rowTableKeys_0;\n}u_0;\n\nfloat capsuleDistPx_0(float fromStartPx_0, float fromEndPx_0, float acrossPx_0)\n{\n\n float _S1 = max(max(- fromStartPx_0, - fromEndPx_0), 0.0);\n return sqrt(_S1 * _S1 + acrossPx_0 * acrossPx_0);\n}\n\nfloat capsuleDist_0(vec3 local_0)\n{\n\n return capsuleDistPx_0(local_0.x, local_0.y, local_0.z);\n}\n\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 edgeCoverage_0(float signedInkCssPx_0, float dpr_1)\n{\n\n return aaRamp_0(signedInkCssPx_0, aaPx_0(dpr_1));\n}\n\n\nfloat colorCutAt_0(int i_0, vec4 cutsLo_0, vec4 cutsHi_0)\n{\n\n float _S2;\n if(i_0 < 4)\n {\n\n _S2 = cutsLo_0[i_0];\n\n }\n else\n {\n\n _S2 = cutsHi_0[i_0 - 4];\n\n }\n\n return _S2;\n}\n\n\nint thresholdBandAtYPx_0(float yPx_0, int cutCount_0, vec4 cutYsLo_0, vec4 cutYsHi_0)\n{\n\n int band_0 = 0;\n\n int i_1 = 0;\n\n for(;;)\n {\n\n if(i_1 < cutCount_0)\n {\n }\n else\n {\n\n break;\n }\n\n if(yPx_0 <= (colorCutAt_0(i_1, cutYsLo_0, cutYsHi_0)))\n {\n\n band_0 = i_1 + 1;\n\n }\n\n i_1 = i_1 + 1;\n\n }\n\n return band_0;\n}\n\n\nlayout(location = 0)\nout vec4 entryPointParam_fs_main_0;\n\n\nflat in vec4 v_color;\n\n\nin vec3 v_localPos;\n\n\nflat in vec2 v_colorLine;\n\n\nflat in vec4 v_cutYsLo;\n\n\nflat in vec4 v_cutYsHi;\n\n\nflat in float v_colorAlongY;\n\n\nvec4 lineFragmentColor_0(float _S3, vec4 _S4, vec4 _S5, vec4 _S6, float _S7)\n{\n\n if(_S7 < 0.5)\n {\n\n return _S6;\n }\n return u_0.colorBands_0[thresholdBandAtYPx_0(_S3, u_0.colorCutCount_0, _S4, _S5)];\n}\n\n\nvoid main()\n{\n float alpha_0 = edgeCoverage_0(u_0.lineWidth_0 * 0.5 - capsuleDist_0(v_localPos), u_0.devicePixelRatio_0);\n if(alpha_0 <= 0.0)\n {\n\n discard;\n\n }\n\n vec4 _S8 = lineFragmentColor_0(v_colorLine.x + v_colorLine.y * clamp(v_localPos.x, 0.0, v_localPos.x + v_localPos.y), v_cutYsLo, v_cutYsHi, v_color, v_colorAlongY);\n\n entryPointParam_fs_main_0 = vec4(_S8.xyz * alpha_0, _S8.w * alpha_0);\n\n return;\n}\n\n";
|