@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,13 @@
|
|
|
1
|
+
// A displayed region as the view-spanning marks (`link`, `connector`) place a
|
|
2
|
+
// bp through it. The table entry is (anchorPx, anchorBpHi, anchorBpLo,
|
|
3
|
+
// signedPxPerBp): an anchor bp near the view, split so a foot's offset from it
|
|
4
|
+
// stays inside float32 at any chromosome position.
|
|
5
|
+
module viewRegion;
|
|
6
|
+
|
|
7
|
+
import hpmath;
|
|
8
|
+
|
|
9
|
+
public static const uint VIEW_REGION_MAX = 256u;
|
|
10
|
+
|
|
11
|
+
public float viewRegionPx(uint bp, float4 r, float hpZero) {
|
|
12
|
+
return r.x - hpViewportOffsetBp(hpSplitUint(bp), float3(r.y, r.z, 0.0), hpZero) * r.w;
|
|
13
|
+
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
// AUTO-GENERATED by packages/shader-tools/src/shader-codegen from coverageIndicator.slang.
|
|
2
|
-
// Do not edit. Run `pnpm gen:shaders` to regenerate.
|
|
3
|
-
export * from './coverageIndicator.iface.generated.js';
|
|
4
|
-
export const SOURCE = {
|
|
5
|
-
wgsl: () => import('./coverageIndicator.wgsl.generated.js'),
|
|
6
|
-
glsl: () => import('./coverageIndicator.glsl.generated.js'),
|
|
7
|
-
};
|
|
@@ -1,2 +0,0 @@
|
|
|
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 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\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_0)\n{\n\n return 1.0 - yPx_0 / canvasHeight_0 * 2.0;\n}\n\n\nfloat covAreaTop_0(CoverageBandUniforms_0 u_2)\n{\n\n return yPxToClipY_0(u_2.covTop_0, u_2.canvasH_0);\n}\n\n\nfloat covFlipX_0(float x_0, CoverageBandUniforms_0 u_3)\n{\n\n return mix(x_0, - x_0, u_3.reversed_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\nout vec3 v_bary;\n\n\nlayout(location = 0)\nin uint a_position;\n\n\nlayout(location = 1)\nin float a_colorType;\n\n\nstruct VsOut_0\n{\n vec4 position_0;\n vec4 color_0;\n vec3 bary_0;\n};\n\nvoid main()\n{\n\n VsOut_0 o_0;\n uint v_0 = uint(gl_VertexID) % 3U;\n\n CoverageBandUniforms_0 _S1 = 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 float cx_0 = covBpToClipX_0(a_position, _S1);\n float tw_0 = pxToClipLen_0(7.0, u_0.canvasW_0);\n float th_0 = pxToClipLen_0(4.5, u_0.canvasH_0);\n\n float top_0 = covAreaTop_0(_S1);\n\n float sx_0;\n\n float sy_0;\n\n if(v_0 == 0U)\n {\n\n float _S2 = cx_0 - tw_0 * 0.5;\n\n o_0.bary_0 = vec3(1.0, 0.0, 0.0);\n\n sx_0 = _S2;\n\n sy_0 = top_0;\n\n }\n else\n {\n\n if(v_0 == 1U)\n {\n\n float _S3 = cx_0 + tw_0 * 0.5;\n\n o_0.bary_0 = vec3(0.0, 1.0, 0.0);\n\n sx_0 = _S3;\n\n sy_0 = top_0;\n\n }\n else\n {\n\n float _S4 = top_0 - th_0;\n\n o_0.bary_0 = vec3(0.0, 0.0, 1.0);\n\n sx_0 = cx_0;\n\n sy_0 = _S4;\n\n }\n\n }\n\n\n\n o_0.position_0 = vec4(covFlipX_0(sx_0, _S1), sy_0, 0.0, 1.0);\n o_0.color_0 = vec4(covClipKindColor_0(a_colorType, _S1), 1.0);\n VsOut_0 _S5 = o_0;\n\n gl_Position = o_0.position_0;\n\n v_color = _S5.color_0;\n\n v_bary = _S5.bary_0;\n\n return;\n}\n\n";
|
|
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\nin vec3 v_bary;\n\n\nvoid main()\n{\n\n entryPointParam_fs_main_0 = vec4(v_color.xyz, v_color.w * smoothstep(0.0, 1.0, min(v_bary.y * 3.70000004768371582, v_bary.x * 3.70000004768371582)));\n\n return;\n}\n\n";
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
// AUTO-GENERATED by packages/shader-tools/src/shader-codegen from coverageIndicator.slang.
|
|
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 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\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_0)\n{\n\n return 1.0 - yPx_0 / canvasHeight_0 * 2.0;\n}\n\n\nfloat covAreaTop_0(CoverageBandUniforms_0 u_2)\n{\n\n return yPxToClipY_0(u_2.covTop_0, u_2.canvasH_0);\n}\n\n\nfloat covFlipX_0(float x_0, CoverageBandUniforms_0 u_3)\n{\n\n return mix(x_0, - x_0, u_3.reversed_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\nout vec3 v_bary;\n\n\nlayout(location = 0)\nin uint a_position;\n\n\nlayout(location = 1)\nin float a_colorType;\n\n\nstruct VsOut_0\n{\n vec4 position_0;\n vec4 color_0;\n vec3 bary_0;\n};\n\nvoid main()\n{\n\n VsOut_0 o_0;\n uint v_0 = uint(gl_VertexID) % 3U;\n\n CoverageBandUniforms_0 _S1 = 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 float cx_0 = covBpToClipX_0(a_position, _S1);\n float tw_0 = pxToClipLen_0(7.0, u_0.canvasW_0);\n float th_0 = pxToClipLen_0(4.5, u_0.canvasH_0);\n\n float top_0 = covAreaTop_0(_S1);\n\n float sx_0;\n\n float sy_0;\n\n if(v_0 == 0U)\n {\n\n float _S2 = cx_0 - tw_0 * 0.5;\n\n o_0.bary_0 = vec3(1.0, 0.0, 0.0);\n\n sx_0 = _S2;\n\n sy_0 = top_0;\n\n }\n else\n {\n\n if(v_0 == 1U)\n {\n\n float _S3 = cx_0 + tw_0 * 0.5;\n\n o_0.bary_0 = vec3(0.0, 1.0, 0.0);\n\n sx_0 = _S3;\n\n sy_0 = top_0;\n\n }\n else\n {\n\n float _S4 = top_0 - th_0;\n\n o_0.bary_0 = vec3(0.0, 0.0, 1.0);\n\n sx_0 = cx_0;\n\n sy_0 = _S4;\n\n }\n\n }\n\n\n\n o_0.position_0 = vec4(covFlipX_0(sx_0, _S1), sy_0, 0.0, 1.0);\n o_0.color_0 = vec4(covClipKindColor_0(a_colorType, _S1), 1.0);\n VsOut_0 _S5 = o_0;\n\n gl_Position = o_0.position_0;\n\n v_color = _S5.color_0;\n\n v_bary = _S5.bary_0;\n\n return;\n}\n\n";
|
|
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\nin vec3 v_bary;\n\n\nvoid main()\n{\n\n entryPointParam_fs_main_0 = vec4(v_color.xyz, v_color.w * smoothstep(0.0, 1.0, min(v_bary.y * 3.70000004768371582, v_bary.x * 3.70000004768371582)));\n\n return;\n}\n\n";
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import type { VertexAttributeLayout, ShaderBinding } from '@jbrowse/render-core/hal';
|
|
2
|
-
export declare const BINDINGS: readonly ShaderBinding[];
|
|
3
|
-
export declare const VERTS_PER_INSTANCE = 3;
|
|
4
|
-
export declare const UNIFORMS_SIZE_BYTES = 112;
|
|
5
|
-
export declare const UNIFORM_OFFSET_F32: {
|
|
6
|
-
readonly bpHi: 0;
|
|
7
|
-
readonly bpLo: 1;
|
|
8
|
-
readonly bpLen: 2;
|
|
9
|
-
readonly hpZero: 3;
|
|
10
|
-
readonly canvasW: 4;
|
|
11
|
-
readonly canvasH: 5;
|
|
12
|
-
readonly covHeight: 6;
|
|
13
|
-
readonly covYOffset: 7;
|
|
14
|
-
readonly covTop: 8;
|
|
15
|
-
readonly regionMaxDepth: 9;
|
|
16
|
-
readonly depthDomainMax: 10;
|
|
17
|
-
readonly depthDomainMin: 11;
|
|
18
|
-
readonly coverageSymlogConstant: 12;
|
|
19
|
-
readonly binSize: 13;
|
|
20
|
-
readonly interbaseHeight: 14;
|
|
21
|
-
readonly snpMinFreq: 15;
|
|
22
|
-
readonly reversed: 16;
|
|
23
|
-
};
|
|
24
|
-
export declare const UNIFORM_OFFSET_U32: {
|
|
25
|
-
readonly colorCoverage: 18;
|
|
26
|
-
readonly colorBaseA: 19;
|
|
27
|
-
readonly colorBaseC: 20;
|
|
28
|
-
readonly colorBaseG: 21;
|
|
29
|
-
readonly colorBaseT: 22;
|
|
30
|
-
readonly colorBaseN: 23;
|
|
31
|
-
readonly colorInsertionIndicator: 24;
|
|
32
|
-
readonly colorSoftclipIndicator: 25;
|
|
33
|
-
readonly colorHardclipIndicator: 26;
|
|
34
|
-
};
|
|
35
|
-
export declare const UNIFORM_OFFSET_I32: {
|
|
36
|
-
readonly coverageScaleType: 17;
|
|
37
|
-
};
|
|
38
|
-
export interface Uniforms {
|
|
39
|
-
bpHi: number;
|
|
40
|
-
bpLo: number;
|
|
41
|
-
bpLen: number;
|
|
42
|
-
hpZero: number;
|
|
43
|
-
canvasW: number;
|
|
44
|
-
canvasH: number;
|
|
45
|
-
covHeight: number;
|
|
46
|
-
covYOffset: number;
|
|
47
|
-
covTop: number;
|
|
48
|
-
regionMaxDepth: number;
|
|
49
|
-
depthDomainMax: number;
|
|
50
|
-
depthDomainMin: number;
|
|
51
|
-
coverageSymlogConstant: number;
|
|
52
|
-
binSize: number;
|
|
53
|
-
interbaseHeight: number;
|
|
54
|
-
snpMinFreq: number;
|
|
55
|
-
reversed: number;
|
|
56
|
-
coverageScaleType: number;
|
|
57
|
-
colorCoverage: number;
|
|
58
|
-
colorBaseA: number;
|
|
59
|
-
colorBaseC: number;
|
|
60
|
-
colorBaseG: number;
|
|
61
|
-
colorBaseT: number;
|
|
62
|
-
colorBaseN: number;
|
|
63
|
-
colorInsertionIndicator: number;
|
|
64
|
-
colorSoftclipIndicator: number;
|
|
65
|
-
colorHardclipIndicator: number;
|
|
66
|
-
}
|
|
67
|
-
export declare function writeUniforms(buf: ArrayBuffer, uniforms: Uniforms): void;
|
|
68
|
-
export declare const INSTANCE_STRIDE_BYTES = 8;
|
|
69
|
-
export declare const INSTANCE_STRIDE_WORDS = 2;
|
|
70
|
-
export declare const INSTANCE_OFFSET_F32: {
|
|
71
|
-
readonly colorType: 1;
|
|
72
|
-
};
|
|
73
|
-
export declare const INSTANCE_OFFSET_U32: {
|
|
74
|
-
readonly position: 0;
|
|
75
|
-
};
|
|
76
|
-
export declare const VERTEX_ATTRIBUTES: readonly VertexAttributeLayout[];
|
|
77
|
-
export interface InstanceArrays {
|
|
78
|
-
position: ArrayLike<number>;
|
|
79
|
-
colorType: ArrayLike<number>;
|
|
80
|
-
}
|
|
81
|
-
export declare function packInstances(arrays: InstanceArrays, numInstances: number, buf?: ArrayBuffer): ArrayBuffer;
|
|
82
|
-
export declare function getInstancePosition(u32: Uint32Array, i: number): number;
|
|
83
|
-
export declare function setInstancePosition(u32: Uint32Array, i: number, v: number): void;
|
|
84
|
-
export declare function getInstanceColorType(f32: Float32Array, i: number): number;
|
|
85
|
-
export declare function setInstanceColorType(f32: Float32Array, i: number, v: number): void;
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
// AUTO-GENERATED by packages/shader-tools/src/shader-codegen from coverageIndicator.slang.
|
|
2
|
-
// Do not edit. Run `pnpm gen:shaders` to regenerate.
|
|
3
|
-
export const BINDINGS = [
|
|
4
|
-
{ index: 1, kind: 'uniform', name: 'u', stages: ['vertex'] },
|
|
5
|
-
];
|
|
6
|
-
export const VERTS_PER_INSTANCE = 3;
|
|
7
|
-
export const UNIFORMS_SIZE_BYTES = 112;
|
|
8
|
-
// Word indices into a Float32Array view over the uniform buffer.
|
|
9
|
-
export const UNIFORM_OFFSET_F32 = {
|
|
10
|
-
bpHi: 0,
|
|
11
|
-
bpLo: 1,
|
|
12
|
-
bpLen: 2,
|
|
13
|
-
hpZero: 3,
|
|
14
|
-
canvasW: 4,
|
|
15
|
-
canvasH: 5,
|
|
16
|
-
covHeight: 6,
|
|
17
|
-
covYOffset: 7,
|
|
18
|
-
covTop: 8,
|
|
19
|
-
regionMaxDepth: 9,
|
|
20
|
-
depthDomainMax: 10,
|
|
21
|
-
depthDomainMin: 11,
|
|
22
|
-
coverageSymlogConstant: 12,
|
|
23
|
-
binSize: 13,
|
|
24
|
-
interbaseHeight: 14,
|
|
25
|
-
snpMinFreq: 15,
|
|
26
|
-
reversed: 16,
|
|
27
|
-
};
|
|
28
|
-
// Word indices into a Uint32Array view over the uniform buffer.
|
|
29
|
-
export const UNIFORM_OFFSET_U32 = {
|
|
30
|
-
colorCoverage: 18,
|
|
31
|
-
colorBaseA: 19,
|
|
32
|
-
colorBaseC: 20,
|
|
33
|
-
colorBaseG: 21,
|
|
34
|
-
colorBaseT: 22,
|
|
35
|
-
colorBaseN: 23,
|
|
36
|
-
colorInsertionIndicator: 24,
|
|
37
|
-
colorSoftclipIndicator: 25,
|
|
38
|
-
colorHardclipIndicator: 26,
|
|
39
|
-
};
|
|
40
|
-
// Word indices into a Int32Array view over the uniform buffer.
|
|
41
|
-
export const UNIFORM_OFFSET_I32 = {
|
|
42
|
-
coverageScaleType: 17,
|
|
43
|
-
};
|
|
44
|
-
export function writeUniforms(buf, uniforms) {
|
|
45
|
-
const f32 = new Float32Array(buf);
|
|
46
|
-
const u32 = new Uint32Array(buf);
|
|
47
|
-
const i32 = new Int32Array(buf);
|
|
48
|
-
f32[0] = uniforms.bpHi;
|
|
49
|
-
f32[1] = uniforms.bpLo;
|
|
50
|
-
f32[2] = uniforms.bpLen;
|
|
51
|
-
f32[3] = uniforms.hpZero;
|
|
52
|
-
f32[4] = uniforms.canvasW;
|
|
53
|
-
f32[5] = uniforms.canvasH;
|
|
54
|
-
f32[6] = uniforms.covHeight;
|
|
55
|
-
f32[7] = uniforms.covYOffset;
|
|
56
|
-
f32[8] = uniforms.covTop;
|
|
57
|
-
f32[9] = uniforms.regionMaxDepth;
|
|
58
|
-
f32[10] = uniforms.depthDomainMax;
|
|
59
|
-
f32[11] = uniforms.depthDomainMin;
|
|
60
|
-
f32[12] = uniforms.coverageSymlogConstant;
|
|
61
|
-
f32[13] = uniforms.binSize;
|
|
62
|
-
f32[14] = uniforms.interbaseHeight;
|
|
63
|
-
f32[15] = uniforms.snpMinFreq;
|
|
64
|
-
f32[16] = uniforms.reversed;
|
|
65
|
-
i32[17] = uniforms.coverageScaleType;
|
|
66
|
-
u32[18] = uniforms.colorCoverage;
|
|
67
|
-
u32[19] = uniforms.colorBaseA;
|
|
68
|
-
u32[20] = uniforms.colorBaseC;
|
|
69
|
-
u32[21] = uniforms.colorBaseG;
|
|
70
|
-
u32[22] = uniforms.colorBaseT;
|
|
71
|
-
u32[23] = uniforms.colorBaseN;
|
|
72
|
-
u32[24] = uniforms.colorInsertionIndicator;
|
|
73
|
-
u32[25] = uniforms.colorSoftclipIndicator;
|
|
74
|
-
u32[26] = uniforms.colorHardclipIndicator;
|
|
75
|
-
}
|
|
76
|
-
export const INSTANCE_STRIDE_BYTES = 8;
|
|
77
|
-
export const INSTANCE_STRIDE_WORDS = 2;
|
|
78
|
-
// Word indices into a Float32Array view over the instance buffer.
|
|
79
|
-
export const INSTANCE_OFFSET_F32 = {
|
|
80
|
-
colorType: 1,
|
|
81
|
-
};
|
|
82
|
-
// Word indices into a Uint32Array view over the instance buffer.
|
|
83
|
-
export const INSTANCE_OFFSET_U32 = {
|
|
84
|
-
position: 0,
|
|
85
|
-
};
|
|
86
|
-
export const VERTEX_ATTRIBUTES = [
|
|
87
|
-
{ name: 'a_position', components: 1, type: 'uint', offsetBytes: 0, integer: true },
|
|
88
|
-
{ name: 'a_colorType', components: 1, type: 'float', offsetBytes: 4, integer: false },
|
|
89
|
-
];
|
|
90
|
-
export function packInstances(arrays, numInstances, buf = new ArrayBuffer(numInstances * INSTANCE_STRIDE_BYTES)) {
|
|
91
|
-
const f32 = new Float32Array(buf);
|
|
92
|
-
const u32 = new Uint32Array(buf);
|
|
93
|
-
const { position, colorType } = arrays;
|
|
94
|
-
for (let i = 0; i < numInstances; i++) {
|
|
95
|
-
const o = i * INSTANCE_STRIDE_WORDS;
|
|
96
|
-
u32[o + 0] = position[i];
|
|
97
|
-
f32[o + 1] = colorType[i];
|
|
98
|
-
}
|
|
99
|
-
return buf;
|
|
100
|
-
}
|
|
101
|
-
// Instance `i`'s `position`.
|
|
102
|
-
export function getInstancePosition(u32, i) {
|
|
103
|
-
return u32[i * INSTANCE_STRIDE_WORDS];
|
|
104
|
-
}
|
|
105
|
-
export function setInstancePosition(u32, i, v) {
|
|
106
|
-
u32[i * INSTANCE_STRIDE_WORDS] = v;
|
|
107
|
-
}
|
|
108
|
-
// Instance `i`'s `colorType`.
|
|
109
|
-
export function getInstanceColorType(f32, i) {
|
|
110
|
-
return f32[i * INSTANCE_STRIDE_WORDS + 1];
|
|
111
|
-
}
|
|
112
|
-
export function setInstanceColorType(f32, i, v) {
|
|
113
|
-
f32[i * INSTANCE_STRIDE_WORDS + 1] = v;
|
|
114
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
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 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 pxToClipLen_0( px_0 : f32, size_0 : f32) -> f32\n{\n return px_0 * 2.0f / size_0;\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_2 : ptr<function, CoverageBandUniforms_std140_0>) -> f32\n{\n return yPxToClipY_0((*u_2).covTop_0, (*u_2).canvasH_0);\n}\n\nfn covFlipX_0( x_0 : f32, u_3 : ptr<function, CoverageBandUniforms_std140_0>) -> f32\n{\n return mix(x_0, - x_0, (*u_3).reversed_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 VsOut_0\n{\n @builtin(position) position_0 : vec4<f32>,\n @location(0) color_0 : vec4<f32>,\n @location(1) bary_0 : vec3<f32>,\n};\n\nstruct vertexInput_0\n{\n @location(0) position_1 : u32,\n @location(1) colorType_0 : f32,\n};\n\n@vertex\nfn vs_main( _S1 : vertexInput_0, @builtin(vertex_index) vid_0 : u32) -> VsOut_0\n{\n var o_0 : VsOut_0;\n var v_0 : u32 = vid_0 % u32(3);\n var _S2 : CoverageBandUniforms_std140_0 = u_0;\n var _S3 : f32 = covBpToClipX_0(_S1.position_1, &(_S2));\n var tw_0 : f32 = pxToClipLen_0(7.0f, u_0.canvasW_0);\n var th_0 : f32 = pxToClipLen_0(4.5f, u_0.canvasH_0);\n var _S4 : f32 = covAreaTop_0(&(_S2));\n var sx_0 : f32;\n var sy_0 : f32;\n if(v_0 == u32(0))\n {\n var _S5 : f32 = _S3 - tw_0 * 0.5f;\n o_0.bary_0 = vec3<f32>(1.0f, 0.0f, 0.0f);\n sx_0 = _S5;\n sy_0 = _S4;\n }\n else\n {\n if(v_0 == u32(1))\n {\n var _S6 : f32 = _S3 + tw_0 * 0.5f;\n o_0.bary_0 = vec3<f32>(0.0f, 1.0f, 0.0f);\n sx_0 = _S6;\n sy_0 = _S4;\n }\n else\n {\n var _S7 : f32 = _S4 - th_0;\n o_0.bary_0 = vec3<f32>(0.0f, 0.0f, 1.0f);\n sx_0 = _S3;\n sy_0 = _S7;\n }\n }\n var _S8 : f32 = covFlipX_0(sx_0, &(_S2));\n o_0.position_0 = vec4<f32>(_S8, sy_0, 0.0f, 1.0f);\n var _S9 : vec3<f32> = covClipKindColor_0(_S1.colorType_0, &(_S2));\n o_0.color_0 = vec4<f32>(_S9, 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 @location(1) bary_1 : vec3<f32>,\n};\n\n@fragment\nfn fs_main( _S10 : pixelInput_0, @builtin(position) position_2 : vec4<f32>) -> pixelOutput_0\n{\n var _S11 : pixelOutput_0 = pixelOutput_0( vec4<f32>(_S10.color_1.xyz, _S10.color_1.w * smoothstep(0.0f, 1.0f, min(_S10.bary_1.y * 3.70000004768371582f, _S10.bary_1.x * 3.70000004768371582f))) );\n return _S11;\n}\n\n";
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
// AUTO-GENERATED by packages/shader-tools/src/shader-codegen from coverageIndicator.slang.
|
|
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 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 pxToClipLen_0( px_0 : f32, size_0 : f32) -> f32\n{\n return px_0 * 2.0f / size_0;\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_2 : ptr<function, CoverageBandUniforms_std140_0>) -> f32\n{\n return yPxToClipY_0((*u_2).covTop_0, (*u_2).canvasH_0);\n}\n\nfn covFlipX_0( x_0 : f32, u_3 : ptr<function, CoverageBandUniforms_std140_0>) -> f32\n{\n return mix(x_0, - x_0, (*u_3).reversed_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 VsOut_0\n{\n @builtin(position) position_0 : vec4<f32>,\n @location(0) color_0 : vec4<f32>,\n @location(1) bary_0 : vec3<f32>,\n};\n\nstruct vertexInput_0\n{\n @location(0) position_1 : u32,\n @location(1) colorType_0 : f32,\n};\n\n@vertex\nfn vs_main( _S1 : vertexInput_0, @builtin(vertex_index) vid_0 : u32) -> VsOut_0\n{\n var o_0 : VsOut_0;\n var v_0 : u32 = vid_0 % u32(3);\n var _S2 : CoverageBandUniforms_std140_0 = u_0;\n var _S3 : f32 = covBpToClipX_0(_S1.position_1, &(_S2));\n var tw_0 : f32 = pxToClipLen_0(7.0f, u_0.canvasW_0);\n var th_0 : f32 = pxToClipLen_0(4.5f, u_0.canvasH_0);\n var _S4 : f32 = covAreaTop_0(&(_S2));\n var sx_0 : f32;\n var sy_0 : f32;\n if(v_0 == u32(0))\n {\n var _S5 : f32 = _S3 - tw_0 * 0.5f;\n o_0.bary_0 = vec3<f32>(1.0f, 0.0f, 0.0f);\n sx_0 = _S5;\n sy_0 = _S4;\n }\n else\n {\n if(v_0 == u32(1))\n {\n var _S6 : f32 = _S3 + tw_0 * 0.5f;\n o_0.bary_0 = vec3<f32>(0.0f, 1.0f, 0.0f);\n sx_0 = _S6;\n sy_0 = _S4;\n }\n else\n {\n var _S7 : f32 = _S4 - th_0;\n o_0.bary_0 = vec3<f32>(0.0f, 0.0f, 1.0f);\n sx_0 = _S3;\n sy_0 = _S7;\n }\n }\n var _S8 : f32 = covFlipX_0(sx_0, &(_S2));\n o_0.position_0 = vec4<f32>(_S8, sy_0, 0.0f, 1.0f);\n var _S9 : vec3<f32> = covClipKindColor_0(_S1.colorType_0, &(_S2));\n o_0.color_0 = vec4<f32>(_S9, 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 @location(1) bary_1 : vec3<f32>,\n};\n\n@fragment\nfn fs_main( _S10 : pixelInput_0, @builtin(position) position_2 : vec4<f32>) -> pixelOutput_0\n{\n var _S11 : pixelOutput_0 = pixelOutput_0( vec4<f32>(_S10.color_1.xyz, _S10.color_1.w * smoothstep(0.0f, 1.0f, min(_S10.bary_1.y * 3.70000004768371582f, _S10.bary_1.x * 3.70000004768371582f))) );\n return _S11;\n}\n\n";
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
// AUTO-GENERATED by packages/shader-tools/src/shader-codegen from coverageIndicator.slang.
|
|
2
|
-
// Do not edit. Run `pnpm gen:shaders` to regenerate.
|
|
3
|
-
|
|
4
|
-
import type { ShaderSource } from '@jbrowse/render-core/hal'
|
|
5
|
-
|
|
6
|
-
export * from './coverageIndicator.iface.generated.ts'
|
|
7
|
-
|
|
8
|
-
export const SOURCE: ShaderSource = {
|
|
9
|
-
wgsl: () => import('./coverageIndicator.wgsl.generated.ts'),
|
|
10
|
-
glsl: () => import('./coverageIndicator.glsl.generated.ts'),
|
|
11
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
// AUTO-GENERATED by packages/shader-tools/src/shader-codegen from coverageIndicator.slang.
|
|
2
|
-
// Do not edit. Run `pnpm gen:shaders` to regenerate.
|
|
3
|
-
|
|
4
|
-
export const GLSL_VERTEX = "#version 300 es\nprecision highp float;\nprecision highp int;\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 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\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_0)\n{\n\n return 1.0 - yPx_0 / canvasHeight_0 * 2.0;\n}\n\n\nfloat covAreaTop_0(CoverageBandUniforms_0 u_2)\n{\n\n return yPxToClipY_0(u_2.covTop_0, u_2.canvasH_0);\n}\n\n\nfloat covFlipX_0(float x_0, CoverageBandUniforms_0 u_3)\n{\n\n return mix(x_0, - x_0, u_3.reversed_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\nout vec3 v_bary;\n\n\nlayout(location = 0)\nin uint a_position;\n\n\nlayout(location = 1)\nin float a_colorType;\n\n\nstruct VsOut_0\n{\n vec4 position_0;\n vec4 color_0;\n vec3 bary_0;\n};\n\nvoid main()\n{\n\n VsOut_0 o_0;\n uint v_0 = uint(gl_VertexID) % 3U;\n\n CoverageBandUniforms_0 _S1 = 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 float cx_0 = covBpToClipX_0(a_position, _S1);\n float tw_0 = pxToClipLen_0(7.0, u_0.canvasW_0);\n float th_0 = pxToClipLen_0(4.5, u_0.canvasH_0);\n\n float top_0 = covAreaTop_0(_S1);\n\n float sx_0;\n\n float sy_0;\n\n if(v_0 == 0U)\n {\n\n float _S2 = cx_0 - tw_0 * 0.5;\n\n o_0.bary_0 = vec3(1.0, 0.0, 0.0);\n\n sx_0 = _S2;\n\n sy_0 = top_0;\n\n }\n else\n {\n\n if(v_0 == 1U)\n {\n\n float _S3 = cx_0 + tw_0 * 0.5;\n\n o_0.bary_0 = vec3(0.0, 1.0, 0.0);\n\n sx_0 = _S3;\n\n sy_0 = top_0;\n\n }\n else\n {\n\n float _S4 = top_0 - th_0;\n\n o_0.bary_0 = vec3(0.0, 0.0, 1.0);\n\n sx_0 = cx_0;\n\n sy_0 = _S4;\n\n }\n\n }\n\n\n\n o_0.position_0 = vec4(covFlipX_0(sx_0, _S1), sy_0, 0.0, 1.0);\n o_0.color_0 = vec4(covClipKindColor_0(a_colorType, _S1), 1.0);\n VsOut_0 _S5 = o_0;\n\n gl_Position = o_0.position_0;\n\n v_color = _S5.color_0;\n\n v_bary = _S5.bary_0;\n\n return;\n}\n\n"
|
|
5
|
-
|
|
6
|
-
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\nin vec3 v_bary;\n\n\nvoid main()\n{\n\n entryPointParam_fs_main_0 = vec4(v_color.xyz, v_color.w * smoothstep(0.0, 1.0, min(v_bary.y * 3.70000004768371582, v_bary.x * 3.70000004768371582)));\n\n return;\n}\n\n"
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
// AUTO-GENERATED by packages/shader-tools/src/shader-codegen from coverageIndicator.slang.
|
|
2
|
-
// Do not edit. Run `pnpm gen:shaders` to regenerate.
|
|
3
|
-
|
|
4
|
-
import type { VertexAttributeLayout, ShaderBinding } from '@jbrowse/render-core/hal'
|
|
5
|
-
|
|
6
|
-
export const BINDINGS: readonly ShaderBinding[] = [
|
|
7
|
-
{ index: 1, kind: 'uniform', name: 'u', stages: ['vertex'] },
|
|
8
|
-
]
|
|
9
|
-
|
|
10
|
-
export const VERTS_PER_INSTANCE = 3
|
|
11
|
-
|
|
12
|
-
export const UNIFORMS_SIZE_BYTES = 112
|
|
13
|
-
|
|
14
|
-
// Word indices into a Float32Array view over the uniform buffer.
|
|
15
|
-
export const UNIFORM_OFFSET_F32 = {
|
|
16
|
-
bpHi: 0,
|
|
17
|
-
bpLo: 1,
|
|
18
|
-
bpLen: 2,
|
|
19
|
-
hpZero: 3,
|
|
20
|
-
canvasW: 4,
|
|
21
|
-
canvasH: 5,
|
|
22
|
-
covHeight: 6,
|
|
23
|
-
covYOffset: 7,
|
|
24
|
-
covTop: 8,
|
|
25
|
-
regionMaxDepth: 9,
|
|
26
|
-
depthDomainMax: 10,
|
|
27
|
-
depthDomainMin: 11,
|
|
28
|
-
coverageSymlogConstant: 12,
|
|
29
|
-
binSize: 13,
|
|
30
|
-
interbaseHeight: 14,
|
|
31
|
-
snpMinFreq: 15,
|
|
32
|
-
reversed: 16,
|
|
33
|
-
} as const
|
|
34
|
-
|
|
35
|
-
// Word indices into a Uint32Array view over the uniform buffer.
|
|
36
|
-
export const UNIFORM_OFFSET_U32 = {
|
|
37
|
-
colorCoverage: 18,
|
|
38
|
-
colorBaseA: 19,
|
|
39
|
-
colorBaseC: 20,
|
|
40
|
-
colorBaseG: 21,
|
|
41
|
-
colorBaseT: 22,
|
|
42
|
-
colorBaseN: 23,
|
|
43
|
-
colorInsertionIndicator: 24,
|
|
44
|
-
colorSoftclipIndicator: 25,
|
|
45
|
-
colorHardclipIndicator: 26,
|
|
46
|
-
} as const
|
|
47
|
-
|
|
48
|
-
// Word indices into a Int32Array view over the uniform buffer.
|
|
49
|
-
export const UNIFORM_OFFSET_I32 = {
|
|
50
|
-
coverageScaleType: 17,
|
|
51
|
-
} as const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
export interface Uniforms {
|
|
55
|
-
bpHi: number
|
|
56
|
-
bpLo: number
|
|
57
|
-
bpLen: number
|
|
58
|
-
hpZero: number
|
|
59
|
-
canvasW: number
|
|
60
|
-
canvasH: number
|
|
61
|
-
covHeight: number
|
|
62
|
-
covYOffset: number
|
|
63
|
-
covTop: number
|
|
64
|
-
regionMaxDepth: number
|
|
65
|
-
depthDomainMax: number
|
|
66
|
-
depthDomainMin: number
|
|
67
|
-
coverageSymlogConstant: number
|
|
68
|
-
binSize: number
|
|
69
|
-
interbaseHeight: number
|
|
70
|
-
snpMinFreq: number
|
|
71
|
-
reversed: number
|
|
72
|
-
coverageScaleType: number
|
|
73
|
-
colorCoverage: number
|
|
74
|
-
colorBaseA: number
|
|
75
|
-
colorBaseC: number
|
|
76
|
-
colorBaseG: number
|
|
77
|
-
colorBaseT: number
|
|
78
|
-
colorBaseN: number
|
|
79
|
-
colorInsertionIndicator: number
|
|
80
|
-
colorSoftclipIndicator: number
|
|
81
|
-
colorHardclipIndicator: number
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
export function writeUniforms(buf: ArrayBuffer, uniforms: Uniforms) {
|
|
85
|
-
const f32 = new Float32Array(buf)
|
|
86
|
-
const u32 = new Uint32Array(buf)
|
|
87
|
-
const i32 = new Int32Array(buf)
|
|
88
|
-
f32[0] = uniforms.bpHi
|
|
89
|
-
f32[1] = uniforms.bpLo
|
|
90
|
-
f32[2] = uniforms.bpLen
|
|
91
|
-
f32[3] = uniforms.hpZero
|
|
92
|
-
f32[4] = uniforms.canvasW
|
|
93
|
-
f32[5] = uniforms.canvasH
|
|
94
|
-
f32[6] = uniforms.covHeight
|
|
95
|
-
f32[7] = uniforms.covYOffset
|
|
96
|
-
f32[8] = uniforms.covTop
|
|
97
|
-
f32[9] = uniforms.regionMaxDepth
|
|
98
|
-
f32[10] = uniforms.depthDomainMax
|
|
99
|
-
f32[11] = uniforms.depthDomainMin
|
|
100
|
-
f32[12] = uniforms.coverageSymlogConstant
|
|
101
|
-
f32[13] = uniforms.binSize
|
|
102
|
-
f32[14] = uniforms.interbaseHeight
|
|
103
|
-
f32[15] = uniforms.snpMinFreq
|
|
104
|
-
f32[16] = uniforms.reversed
|
|
105
|
-
i32[17] = uniforms.coverageScaleType
|
|
106
|
-
u32[18] = uniforms.colorCoverage
|
|
107
|
-
u32[19] = uniforms.colorBaseA
|
|
108
|
-
u32[20] = uniforms.colorBaseC
|
|
109
|
-
u32[21] = uniforms.colorBaseG
|
|
110
|
-
u32[22] = uniforms.colorBaseT
|
|
111
|
-
u32[23] = uniforms.colorBaseN
|
|
112
|
-
u32[24] = uniforms.colorInsertionIndicator
|
|
113
|
-
u32[25] = uniforms.colorSoftclipIndicator
|
|
114
|
-
u32[26] = uniforms.colorHardclipIndicator
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
export const INSTANCE_STRIDE_BYTES = 8
|
|
118
|
-
export const INSTANCE_STRIDE_WORDS = 2
|
|
119
|
-
|
|
120
|
-
// Word indices into a Float32Array view over the instance buffer.
|
|
121
|
-
export const INSTANCE_OFFSET_F32 = {
|
|
122
|
-
colorType: 1,
|
|
123
|
-
} as const
|
|
124
|
-
|
|
125
|
-
// Word indices into a Uint32Array view over the instance buffer.
|
|
126
|
-
export const INSTANCE_OFFSET_U32 = {
|
|
127
|
-
position: 0,
|
|
128
|
-
} as const
|
|
129
|
-
|
|
130
|
-
export const VERTEX_ATTRIBUTES: readonly VertexAttributeLayout[] = [
|
|
131
|
-
{ name: 'a_position', components: 1, type: 'uint', offsetBytes: 0, integer: true },
|
|
132
|
-
{ name: 'a_colorType', components: 1, type: 'float', offsetBytes: 4, integer: false },
|
|
133
|
-
]
|
|
134
|
-
|
|
135
|
-
export interface InstanceArrays {
|
|
136
|
-
position: ArrayLike<number>
|
|
137
|
-
colorType: ArrayLike<number>
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
export function packInstances(
|
|
141
|
-
arrays: InstanceArrays,
|
|
142
|
-
numInstances: number,
|
|
143
|
-
buf: ArrayBuffer = new ArrayBuffer(numInstances * INSTANCE_STRIDE_BYTES),
|
|
144
|
-
) {
|
|
145
|
-
const f32 = new Float32Array(buf)
|
|
146
|
-
const u32 = new Uint32Array(buf)
|
|
147
|
-
const { position, colorType } = arrays
|
|
148
|
-
for (let i = 0; i < numInstances; i++) {
|
|
149
|
-
const o = i * INSTANCE_STRIDE_WORDS
|
|
150
|
-
u32[o + 0] = position[i]!
|
|
151
|
-
f32[o + 1] = colorType[i]!
|
|
152
|
-
}
|
|
153
|
-
return buf
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
// Instance `i`'s `position`.
|
|
157
|
-
export function getInstancePosition(u32: Uint32Array, i: number) {
|
|
158
|
-
return u32[i * INSTANCE_STRIDE_WORDS]!
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
export function setInstancePosition(u32: Uint32Array, i: number, v: number) {
|
|
162
|
-
u32[i * INSTANCE_STRIDE_WORDS] = v
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
// Instance `i`'s `colorType`.
|
|
166
|
-
export function getInstanceColorType(f32: Float32Array, i: number) {
|
|
167
|
-
return f32[i * INSTANCE_STRIDE_WORDS + 1]!
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
export function setInstanceColorType(f32: Float32Array, i: number, v: number) {
|
|
171
|
-
f32[i * INSTANCE_STRIDE_WORDS + 1] = v
|
|
172
|
-
}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
// Indicator triangles: a single 7x4.5px triangle per instance pinned to the top
|
|
2
|
-
// of the coverage band, marking an insertion / softclip / hardclip site whose
|
|
3
|
-
// histogram bar hangs below it. Barycentric coords in the fragment shader give
|
|
4
|
-
// cheap diagonal-edge anti-aliasing. See coverageBand.slang.
|
|
5
|
-
//! targets: wgsl, glsl
|
|
6
|
-
//! layout-out: packages/alignments-core/src/indicatorLayout.generated.ts
|
|
7
|
-
|
|
8
|
-
import coverageBand;
|
|
9
|
-
import hpmath;
|
|
10
|
-
|
|
11
|
-
public static const uint VERTS_PER_INSTANCE = 3u;
|
|
12
|
-
// TRIANGLE_HW / TRIANGLE_H come from coverageBand — coverageInterbase hangs its
|
|
13
|
-
// bars below this triangle and must use the same height.
|
|
14
|
-
|
|
15
|
-
[[vk::binding(1, 0)]] ConstantBuffer<CoverageBandUniforms> u;
|
|
16
|
-
|
|
17
|
-
struct Instance {
|
|
18
|
-
uint position : ATTR0;
|
|
19
|
-
float colorType : ATTR1; // 1=insertion 2=softclip 3=hardclip
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
struct VsOut {
|
|
23
|
-
float4 position : SV_Position;
|
|
24
|
-
float4 color : COLOR0;
|
|
25
|
-
float3 bary : COLOR1;
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
[shader("vertex")]
|
|
29
|
-
VsOut vs_main(Instance inst, uint vid : SV_VertexID) {
|
|
30
|
-
VsOut o;
|
|
31
|
-
uint v = vid % 3u;
|
|
32
|
-
|
|
33
|
-
float cx = covBpToClipX(inst.position, u);
|
|
34
|
-
float tw = pxToClipLen(TRIANGLE_HW * 2.0, u.canvasW); // full triangle width
|
|
35
|
-
float th = pxToClipLen(TRIANGLE_H, u.canvasH);
|
|
36
|
-
|
|
37
|
-
float top = covAreaTop(u);
|
|
38
|
-
float sx, sy;
|
|
39
|
-
if (v == 0u) { sx = cx - tw * 0.5; sy = top; o.bary = float3(1.0, 0.0, 0.0); }
|
|
40
|
-
else if (v == 1u) { sx = cx + tw * 0.5; sy = top; o.bary = float3(0.0, 1.0, 0.0); }
|
|
41
|
-
else { sx = cx; sy = top - th; o.bary = float3(0.0, 0.0, 1.0); }
|
|
42
|
-
|
|
43
|
-
o.position = float4(covFlipX(sx, u), sy, 0.0, 1.0);
|
|
44
|
-
o.color = float4(covClipKindColor(inst.colorType, u), 1.0);
|
|
45
|
-
return o;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
// Barycentric -> approximate px distance from each diagonal edge, for the
|
|
49
|
-
// smoothstep fade below. NOT the triangle's altitude despite the round number:
|
|
50
|
-
// for the 7x4.5 triangle that is 7*4.5/hypot(3.5, 4.5) = 5.53px, so this scale
|
|
51
|
-
// spreads the fade over ~1.5px rather than 1px. Left as-is — it is a softness
|
|
52
|
-
// knob, and tightening it visibly sharpens every indicator.
|
|
53
|
-
static const float EDGE_FADE_SCALE_PX = 3.7;
|
|
54
|
-
|
|
55
|
-
[shader("fragment")]
|
|
56
|
-
float4 fs_main(VsOut fragIn) : SV_Target {
|
|
57
|
-
float dLeft = fragIn.bary.y * EDGE_FADE_SCALE_PX;
|
|
58
|
-
float dRight = fragIn.bary.x * EDGE_FADE_SCALE_PX;
|
|
59
|
-
float aa = smoothstep(0.0, 1.0, min(dLeft, dRight));
|
|
60
|
-
return float4(fragIn.color.rgb, fragIn.color.a * aa);
|
|
61
|
-
}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
// AUTO-GENERATED by packages/shader-tools/src/shader-codegen from coverageIndicator.slang.
|
|
2
|
-
// Do not edit. Run `pnpm gen:shaders` to regenerate.
|
|
3
|
-
|
|
4
|
-
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 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 pxToClipLen_0( px_0 : f32, size_0 : f32) -> f32\n{\n return px_0 * 2.0f / size_0;\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_2 : ptr<function, CoverageBandUniforms_std140_0>) -> f32\n{\n return yPxToClipY_0((*u_2).covTop_0, (*u_2).canvasH_0);\n}\n\nfn covFlipX_0( x_0 : f32, u_3 : ptr<function, CoverageBandUniforms_std140_0>) -> f32\n{\n return mix(x_0, - x_0, (*u_3).reversed_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 VsOut_0\n{\n @builtin(position) position_0 : vec4<f32>,\n @location(0) color_0 : vec4<f32>,\n @location(1) bary_0 : vec3<f32>,\n};\n\nstruct vertexInput_0\n{\n @location(0) position_1 : u32,\n @location(1) colorType_0 : f32,\n};\n\n@vertex\nfn vs_main( _S1 : vertexInput_0, @builtin(vertex_index) vid_0 : u32) -> VsOut_0\n{\n var o_0 : VsOut_0;\n var v_0 : u32 = vid_0 % u32(3);\n var _S2 : CoverageBandUniforms_std140_0 = u_0;\n var _S3 : f32 = covBpToClipX_0(_S1.position_1, &(_S2));\n var tw_0 : f32 = pxToClipLen_0(7.0f, u_0.canvasW_0);\n var th_0 : f32 = pxToClipLen_0(4.5f, u_0.canvasH_0);\n var _S4 : f32 = covAreaTop_0(&(_S2));\n var sx_0 : f32;\n var sy_0 : f32;\n if(v_0 == u32(0))\n {\n var _S5 : f32 = _S3 - tw_0 * 0.5f;\n o_0.bary_0 = vec3<f32>(1.0f, 0.0f, 0.0f);\n sx_0 = _S5;\n sy_0 = _S4;\n }\n else\n {\n if(v_0 == u32(1))\n {\n var _S6 : f32 = _S3 + tw_0 * 0.5f;\n o_0.bary_0 = vec3<f32>(0.0f, 1.0f, 0.0f);\n sx_0 = _S6;\n sy_0 = _S4;\n }\n else\n {\n var _S7 : f32 = _S4 - th_0;\n o_0.bary_0 = vec3<f32>(0.0f, 0.0f, 1.0f);\n sx_0 = _S3;\n sy_0 = _S7;\n }\n }\n var _S8 : f32 = covFlipX_0(sx_0, &(_S2));\n o_0.position_0 = vec4<f32>(_S8, sy_0, 0.0f, 1.0f);\n var _S9 : vec3<f32> = covClipKindColor_0(_S1.colorType_0, &(_S2));\n o_0.color_0 = vec4<f32>(_S9, 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 @location(1) bary_1 : vec3<f32>,\n};\n\n@fragment\nfn fs_main( _S10 : pixelInput_0, @builtin(position) position_2 : vec4<f32>) -> pixelOutput_0\n{\n var _S11 : pixelOutput_0 = pixelOutput_0( vec4<f32>(_S10.color_1.xyz, _S10.color_1.w * smoothstep(0.0f, 1.0f, min(_S10.bary_1.y * 3.70000004768371582f, _S10.bary_1.x * 3.70000004768371582f))) );\n return _S11;\n}\n\n"
|