velo-plot 1.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +119 -0
- package/dist/EventEmitter-DAbs2K1C.js +60 -0
- package/dist/EventEmitter-DAbs2K1C.js.map +1 -0
- package/dist/core/Chart.d.ts +15 -0
- package/dist/core/ChartControls.d.ts +41 -0
- package/dist/core/ChartInitQueue.d.ts +50 -0
- package/dist/core/ChartLegend.d.ts +74 -0
- package/dist/core/ChartStatistics.d.ts +18 -0
- package/dist/core/EventEmitter.d.ts +30 -0
- package/dist/core/InteractionManager.d.ts +96 -0
- package/dist/core/OverlayRenderer.d.ts +89 -0
- package/dist/core/Series.d.ts +4 -0
- package/dist/core/animation/AnimationEngine.d.ts +156 -0
- package/dist/core/animation/index.d.ts +6 -0
- package/dist/core/annotations/AnnotationManager.d.ts +61 -0
- package/dist/core/annotations/index.d.ts +5 -0
- package/dist/core/annotations/types.d.ts +159 -0
- package/dist/core/chart/ChartAnimatedNavigation.d.ts +53 -0
- package/dist/core/chart/ChartAxisManager.d.ts +61 -0
- package/dist/core/chart/ChartCore.d.ts +336 -0
- package/dist/core/chart/ChartExporter.d.ts +18 -0
- package/dist/core/chart/ChartNavigation.d.ts +33 -0
- package/dist/core/chart/ChartPluginBridge.d.ts +34 -0
- package/dist/core/chart/ChartRenderLoop.d.ts +100 -0
- package/dist/core/chart/ChartRenderer.d.ts +52 -0
- package/dist/core/chart/ChartScaling.d.ts +31 -0
- package/dist/core/chart/ChartSeries.d.ts +4 -0
- package/dist/core/chart/ChartSetup.d.ts +67 -0
- package/dist/core/chart/ChartStateManager.d.ts +54 -0
- package/dist/core/chart/ChartUI.d.ts +40 -0
- package/dist/core/chart/exporter/SVGExporter.d.ts +6 -0
- package/dist/core/chart/exporter/index.d.ts +5 -0
- package/dist/core/chart/index.d.ts +14 -0
- package/dist/core/chart/series/SeriesActions.d.ts +7 -0
- package/dist/core/chart/series/SeriesBuffer.d.ts +4 -0
- package/dist/core/chart/series/index.d.ts +6 -0
- package/dist/core/chart/series/types.d.ts +22 -0
- package/dist/core/chart/types.d.ts +188 -0
- package/dist/core/clipboard/index.d.ts +137 -0
- package/dist/core/debug/index.d.ts +143 -0
- package/dist/core/index.d.ts +17 -0
- package/dist/core/keybindings/index.d.ts +157 -0
- package/dist/core/layout/index.d.ts +12 -0
- package/dist/core/layout/types.d.ts +165 -0
- package/dist/core/loading/index.d.ts +104 -0
- package/dist/core/locale/index.d.ts +91 -0
- package/dist/core/responsive/ResponsiveManager.d.ts +133 -0
- package/dist/core/responsive/index.d.ts +4 -0
- package/dist/core/selection/SelectionManager.d.ts +165 -0
- package/dist/core/selection/index.d.ts +4 -0
- package/dist/core/series/Series.d.ts +73 -0
- package/dist/core/series/SeriesBounds.d.ts +3 -0
- package/dist/core/series/SeriesDataUtils.d.ts +7 -0
- package/dist/core/series/index.d.ts +6 -0
- package/dist/core/sync/index.d.ts +147 -0
- package/dist/core/theme-editor/index.d.ts +122 -0
- package/dist/examples/PluginDemonstration.d.ts +20 -0
- package/dist/examples.d.ts +25 -0
- package/dist/gpu/adapter/gpuRenderer.d.ts +135 -0
- package/dist/gpu/adapter/index.d.ts +7 -0
- package/dist/gpu/adapter/seriesAdapter.d.ts +88 -0
- package/dist/gpu/backends/webgl/WebGLBackend.d.ts +42 -0
- package/dist/gpu/backends/webgl/index.d.ts +5 -0
- package/dist/gpu/backends/webgl/programFactory.d.ts +30 -0
- package/dist/gpu/backends/webgl/shaders.d.ts +14 -0
- package/dist/gpu/backends/webgpu/MassiveDataRenderer.d.ts +111 -0
- package/dist/gpu/backends/webgpu/WebGPUBackend.d.ts +58 -0
- package/dist/gpu/backends/webgpu/pipelines/bandPipeline.d.ts +24 -0
- package/dist/gpu/backends/webgpu/pipelines/heatmapPipeline.d.ts +28 -0
- package/dist/gpu/backends/webgpu/pipelines/index.d.ts +10 -0
- package/dist/gpu/backends/webgpu/pipelines/instancedLinePipeline.d.ts +23 -0
- package/dist/gpu/backends/webgpu/pipelines/instancedPointPipeline.d.ts +25 -0
- package/dist/gpu/backends/webgpu/pipelines/linePipeline.d.ts +23 -0
- package/dist/gpu/backends/webgpu/pipelines/pointPipeline.d.ts +28 -0
- package/dist/gpu/backends/webgpu/pipelines/trianglePipeline.d.ts +5 -0
- package/dist/gpu/backends/webgpu/pipelines/triangleShader.d.ts +1 -0
- package/dist/gpu/backends/webgpu/shaders/heatmap.wgsl.d.ts +8 -0
- package/dist/gpu/backends/webgpu/shaders/index.d.ts +8 -0
- package/dist/gpu/backends/webgpu/shaders/instanced.wgsl.d.ts +16 -0
- package/dist/gpu/backends/webgpu/shaders/line.wgsl.d.ts +8 -0
- package/dist/gpu/backends/webgpu/shaders/point.wgsl.d.ts +9 -0
- package/dist/gpu/benchmark/benchmark.d.ts +74 -0
- package/dist/gpu/benchmark/index.d.ts +5 -0
- package/dist/gpu/compute/gpuCompute.d.ts +72 -0
- package/dist/gpu/compute/index.d.ts +6 -0
- package/dist/gpu/compute/shaders.d.ts +9 -0
- package/dist/gpu/drawList.d.ts +77 -0
- package/dist/gpu/examples/gallery.d.ts +20 -0
- package/dist/gpu/examples/index.d.ts +3 -0
- package/dist/gpu/examples/webgpu-line-demo.d.ts +8 -0
- package/dist/gpu/examples/webgpu-triangle.d.ts +1 -0
- package/dist/gpu/frame.d.ts +25 -0
- package/dist/gpu/index.d.ts +24 -0
- package/dist/gpu/resources/bufferStore.d.ts +40 -0
- package/dist/gpu/resources/index.d.ts +9 -0
- package/dist/gpu/resources/pipelineCache.d.ts +33 -0
- package/dist/gpu/resources/textureStore.d.ts +41 -0
- package/dist/gpu/types.d.ts +47 -0
- package/dist/index-BMiZoKmm.js +536 -0
- package/dist/index-BMiZoKmm.js.map +1 -0
- package/dist/index-Ce2JgkH_.js +282 -0
- package/dist/index-Ce2JgkH_.js.map +1 -0
- package/dist/index-D8ifudJH.js +2431 -0
- package/dist/index-D8ifudJH.js.map +1 -0
- package/dist/index-Dag88bW4.js +499 -0
- package/dist/index-Dag88bW4.js.map +1 -0
- package/dist/index-qhscKTDy.js +309 -0
- package/dist/index-qhscKTDy.js.map +1 -0
- package/dist/index-x4stH3jD.js +282 -0
- package/dist/index-x4stH3jD.js.map +1 -0
- package/dist/index.core-CYu3tydL.js +7252 -0
- package/dist/index.core-CYu3tydL.js.map +1 -0
- package/dist/index.core.d.ts +20 -0
- package/dist/index.d.ts +51 -0
- package/dist/overlay/CanvasOverlay.d.ts +102 -0
- package/dist/overlay/index.d.ts +4 -0
- package/dist/plugins/3d/Area3DRenderer.d.ts +122 -0
- package/dist/plugins/3d/Axes3D.d.ts +104 -0
- package/dist/plugins/3d/Bubble3DRenderer.d.ts +198 -0
- package/dist/plugins/3d/Impulse3DRenderer.d.ts +130 -0
- package/dist/plugins/3d/Line3DRenderer.d.ts +118 -0
- package/dist/plugins/3d/PointCloud3DRenderer.d.ts +84 -0
- package/dist/plugins/3d/Raycaster3D.d.ts +137 -0
- package/dist/plugins/3d/Ribbon3DRenderer.d.ts +83 -0
- package/dist/plugins/3d/SurfaceBar3DRenderer.d.ts +92 -0
- package/dist/plugins/3d/SurfaceMesh3DRenderer.d.ts +130 -0
- package/dist/plugins/3d/Tooltip3D.d.ts +71 -0
- package/dist/plugins/3d/VectorField3DRenderer.d.ts +86 -0
- package/dist/plugins/3d/Voxel3DRenderer.d.ts +89 -0
- package/dist/plugins/3d/Waterfall3DRenderer.d.ts +94 -0
- package/dist/plugins/3d/camera/OrbitCamera.d.ts +99 -0
- package/dist/plugins/3d/camera/index.d.ts +1 -0
- package/dist/plugins/3d/colorThemes.d.ts +39 -0
- package/dist/plugins/3d/controls/OrbitController.d.ts +69 -0
- package/dist/plugins/3d/controls/index.d.ts +1 -0
- package/dist/plugins/3d/index.d.ts +50 -0
- package/dist/plugins/3d/math/Mat4.d.ts +33 -0
- package/dist/plugins/3d/math/Vec3.d.ts +37 -0
- package/dist/plugins/3d/math/index.d.ts +4 -0
- package/dist/plugins/3d/mesh/InstancedMesh.d.ts +42 -0
- package/dist/plugins/3d/mesh/geometry.d.ts +34 -0
- package/dist/plugins/3d/mesh/index.d.ts +2 -0
- package/dist/plugins/3d/series/Area3D.d.ts +17 -0
- package/dist/plugins/3d/series/Column3D.d.ts +20 -0
- package/dist/plugins/3d/series/Heatmap3D.d.ts +17 -0
- package/dist/plugins/3d/series/Impulse3D.d.ts +16 -0
- package/dist/plugins/3d/series/PointLine3D.d.ts +20 -0
- package/dist/plugins/3d/series/Ribbon3D.d.ts +17 -0
- package/dist/plugins/3d/series/Scatter3D.d.ts +21 -0
- package/dist/plugins/3d/series/SurfaceMesh3D.d.ts +35 -0
- package/dist/plugins/3d/series/Waterfall3D.d.ts +38 -0
- package/dist/plugins/3d/series/index.d.ts +13 -0
- package/dist/plugins/3d/series/types.d.ts +143 -0
- package/dist/plugins/3d/shader/index.d.ts +2 -0
- package/dist/plugins/3d/shader/programs.d.ts +24 -0
- package/dist/plugins/3d/shader/sources.d.ts +27 -0
- package/dist/plugins/3d/types.d.ts +71 -0
- package/dist/plugins/3d.d.ts +3 -0
- package/dist/plugins/3d.js +5498 -0
- package/dist/plugins/3d.js.map +1 -0
- package/dist/plugins/PluginContext.d.ts +53 -0
- package/dist/plugins/PluginManager.d.ts +129 -0
- package/dist/plugins/PluginRegistry.d.ts +38 -0
- package/dist/plugins/analysis/SeriesFit.d.ts +3 -0
- package/dist/plugins/analysis/contours.d.ts +20 -0
- package/dist/plugins/analysis/fft.d.ts +138 -0
- package/dist/plugins/analysis/filters.d.ts +76 -0
- package/dist/plugins/analysis/fitting.d.ts +24 -0
- package/dist/plugins/analysis/index.d.ts +29 -0
- package/dist/plugins/analysis/indicators.d.ts +148 -0
- package/dist/plugins/analysis/math.d.ts +32 -0
- package/dist/plugins/analysis/statistics.d.ts +78 -0
- package/dist/plugins/analysis/utils.d.ts +150 -0
- package/dist/plugins/analysis.d.ts +3 -0
- package/dist/plugins/analysis.js +1202 -0
- package/dist/plugins/analysis.js.map +1 -0
- package/dist/plugins/annotations/index.d.ts +16 -0
- package/dist/plugins/annotations.d.ts +3 -0
- package/dist/plugins/annotations.js +438 -0
- package/dist/plugins/annotations.js.map +1 -0
- package/dist/plugins/anomaly-detection/algorithms.d.ts +38 -0
- package/dist/plugins/anomaly-detection/index.d.ts +16 -0
- package/dist/plugins/anomaly-detection/types.d.ts +57 -0
- package/dist/plugins/broken-axis/BrokenAxisScale.d.ts +24 -0
- package/dist/plugins/broken-axis/exports.d.ts +6 -0
- package/dist/plugins/broken-axis/index.d.ts +6 -0
- package/dist/plugins/broken-axis/types.d.ts +50 -0
- package/dist/plugins/builtins/crosshair/CrosshairPlugin.d.ts +40 -0
- package/dist/plugins/builtins/crosshair/index.d.ts +1 -0
- package/dist/plugins/builtins/data-logger/DataLoggerPlugin.d.ts +11 -0
- package/dist/plugins/builtins/data-logger/index.d.ts +1 -0
- package/dist/plugins/builtins/direction-indicator/DirectionIndicatorPlugin.d.ts +17 -0
- package/dist/plugins/builtins/direction-indicator/index.d.ts +2 -0
- package/dist/plugins/builtins/grid-highlight/GridHighlightPlugin.d.ts +17 -0
- package/dist/plugins/builtins/grid-highlight/index.d.ts +1 -0
- package/dist/plugins/builtins/index.d.ts +25 -0
- package/dist/plugins/builtins/stats/StatsPlugin.d.ts +11 -0
- package/dist/plugins/builtins/stats/index.d.ts +1 -0
- package/dist/plugins/builtins/watermark/WatermarkPlugin.d.ts +15 -0
- package/dist/plugins/builtins/watermark/index.d.ts +1 -0
- package/dist/plugins/caching/exports.d.ts +6 -0
- package/dist/plugins/caching/index.d.ts +6 -0
- package/dist/plugins/caching/types.d.ts +120 -0
- package/dist/plugins/clipboard/index.d.ts +20 -0
- package/dist/plugins/clipboard.d.ts +3 -0
- package/dist/plugins/clipboard.js +270 -0
- package/dist/plugins/clipboard.js.map +1 -0
- package/dist/plugins/context-menu/index.d.ts +12 -0
- package/dist/plugins/context-menu/renderer.d.ts +43 -0
- package/dist/plugins/context-menu/types.d.ts +202 -0
- package/dist/plugins/context-menu.d.ts +3 -0
- package/dist/plugins/context-menu.js +621 -0
- package/dist/plugins/context-menu.js.map +1 -0
- package/dist/plugins/data-export/formatters.d.ts +34 -0
- package/dist/plugins/data-export/index.d.ts +15 -0
- package/dist/plugins/data-export/types.d.ts +166 -0
- package/dist/plugins/data-export.d.ts +3 -0
- package/dist/plugins/data-export.js +463 -0
- package/dist/plugins/data-export.js.map +1 -0
- package/dist/plugins/data-transform/index.d.ts +6 -0
- package/dist/plugins/data-transform/types.d.ts +34 -0
- package/dist/plugins/debug/index.d.ts +24 -0
- package/dist/plugins/debug.d.ts +3 -0
- package/dist/plugins/debug.js +330 -0
- package/dist/plugins/debug.js.map +1 -0
- package/dist/plugins/drag-edit/exports.d.ts +6 -0
- package/dist/plugins/drag-edit/index.d.ts +6 -0
- package/dist/plugins/drag-edit/types.d.ts +118 -0
- package/dist/plugins/forecasting/algorithms.d.ts +6 -0
- package/dist/plugins/forecasting/exports.d.ts +3 -0
- package/dist/plugins/forecasting/index.d.ts +11 -0
- package/dist/plugins/forecasting/types.d.ts +88 -0
- package/dist/plugins/gpu/index.d.ts +24 -0
- package/dist/plugins/gpu.d.ts +3 -0
- package/dist/plugins/gpu.js +2430 -0
- package/dist/plugins/gpu.js.map +1 -0
- package/dist/plugins/i18n/index.d.ts +22 -0
- package/dist/plugins/i18n.d.ts +3 -0
- package/dist/plugins/i18n.js +37 -0
- package/dist/plugins/i18n.js.map +1 -0
- package/dist/plugins/index.d.ts +110 -0
- package/dist/plugins/keyboard/index.d.ts +15 -0
- package/dist/plugins/keyboard.d.ts +3 -0
- package/dist/plugins/keyboard.js +8 -0
- package/dist/plugins/keyboard.js.map +1 -0
- package/dist/plugins/latex/exports.d.ts +6 -0
- package/dist/plugins/latex/index.d.ts +8 -0
- package/dist/plugins/latex/parser.d.ts +6 -0
- package/dist/plugins/latex/renderer.d.ts +6 -0
- package/dist/plugins/latex/symbols.d.ts +28 -0
- package/dist/plugins/latex/types.d.ts +88 -0
- package/dist/plugins/lazy-load/exports.d.ts +6 -0
- package/dist/plugins/lazy-load/index.d.ts +6 -0
- package/dist/plugins/lazy-load/types.d.ts +121 -0
- package/dist/plugins/loading/index.d.ts +15 -0
- package/dist/plugins/loading.d.ts +3 -0
- package/dist/plugins/loading.js +7 -0
- package/dist/plugins/loading.js.map +1 -0
- package/dist/plugins/ml-integration/exports.d.ts +11 -0
- package/dist/plugins/ml-integration/index.d.ts +6 -0
- package/dist/plugins/ml-integration/native-algorithms.d.ts +69 -0
- package/dist/plugins/ml-integration/types.d.ts +74 -0
- package/dist/plugins/offscreen/exports.d.ts +6 -0
- package/dist/plugins/offscreen/index.d.ts +6 -0
- package/dist/plugins/offscreen/pool.d.ts +32 -0
- package/dist/plugins/offscreen/types.d.ts +35 -0
- package/dist/plugins/pattern-recognition/index.d.ts +6 -0
- package/dist/plugins/pattern-recognition/patterns.d.ts +3 -0
- package/dist/plugins/pattern-recognition/types.d.ts +245 -0
- package/dist/plugins/radar/index.d.ts +6 -0
- package/dist/plugins/radar/types.d.ts +40 -0
- package/dist/plugins/regression/algorithms.d.ts +6 -0
- package/dist/plugins/regression/index.d.ts +6 -0
- package/dist/plugins/regression/types.d.ts +261 -0
- package/dist/plugins/roi/exports.d.ts +6 -0
- package/dist/plugins/roi/index.d.ts +49 -0
- package/dist/plugins/roi/types.d.ts +60 -0
- package/dist/plugins/snapshot/index.d.ts +11 -0
- package/dist/plugins/snapshot/types.d.ts +38 -0
- package/dist/plugins/streaming/index.d.ts +32 -0
- package/dist/plugins/streaming.d.ts +3 -0
- package/dist/plugins/streaming.js +13 -0
- package/dist/plugins/streaming.js.map +1 -0
- package/dist/plugins/sync/index.d.ts +22 -0
- package/dist/plugins/sync.d.ts +3 -0
- package/dist/plugins/sync.js +261 -0
- package/dist/plugins/sync.js.map +1 -0
- package/dist/plugins/theme-editor/index.d.ts +18 -0
- package/dist/plugins/theme-editor.d.ts +3 -0
- package/dist/plugins/theme-editor.js +7 -0
- package/dist/plugins/theme-editor.js.map +1 -0
- package/dist/plugins/tools/delta-tool/index.d.ts +159 -0
- package/dist/plugins/tools/index.d.ts +21 -0
- package/dist/plugins/tools/peak-tool/index.d.ts +159 -0
- package/dist/plugins/tools/tooltip/TooltipManager.d.ts +213 -0
- package/dist/plugins/tools/tooltip/TooltipPositioner.d.ts +83 -0
- package/dist/plugins/tools/tooltip/TooltipRenderer.d.ts +64 -0
- package/dist/plugins/tools/tooltip/index.d.ts +18 -0
- package/dist/plugins/tools/tooltip/templates/AnnotationTemplate.d.ts +18 -0
- package/dist/plugins/tools/tooltip/templates/CrosshairTemplate.d.ts +39 -0
- package/dist/plugins/tools/tooltip/templates/DefaultTemplate.d.ts +30 -0
- package/dist/plugins/tools/tooltip/templates/HeatmapTemplate.d.ts +34 -0
- package/dist/plugins/tools/tooltip/templates/MinimalTemplate.d.ts +26 -0
- package/dist/plugins/tools/tooltip/templates/RangeTemplate.d.ts +18 -0
- package/dist/plugins/tools/tooltip/templates/ScientificTemplate.d.ts +34 -0
- package/dist/plugins/tools/tooltip/templates/index.d.ts +27 -0
- package/dist/plugins/tools/tooltip/themes.d.ts +48 -0
- package/dist/plugins/tools/tooltip/types.d.ts +396 -0
- package/dist/plugins/tools.d.ts +3 -0
- package/dist/plugins/tools.js +9 -0
- package/dist/plugins/tools.js.map +1 -0
- package/dist/plugins/types.d.ts +451 -0
- package/dist/plugins/video-recorder/exports.d.ts +6 -0
- package/dist/plugins/video-recorder/index.d.ts +6 -0
- package/dist/plugins/video-recorder/types.d.ts +55 -0
- package/dist/plugins/virtualization/exports.d.ts +6 -0
- package/dist/plugins/virtualization/index.d.ts +6 -0
- package/dist/plugins/virtualization/types.d.ts +48 -0
- package/dist/react/SciPlot.d.ts +60 -0
- package/dist/react/index.d.ts +5 -0
- package/dist/react/useSciPlot.d.ts +56 -0
- package/dist/renderer/BarRenderer.d.ts +14 -0
- package/dist/renderer/CandlestickRenderer.d.ts +12 -0
- package/dist/renderer/GaugeRenderer.d.ts +3 -0
- package/dist/renderer/HeatmapRenderer.d.ts +15 -0
- package/dist/renderer/NativeWebGLRenderer.d.ts +16 -0
- package/dist/renderer/PolarRenderer.d.ts +64 -0
- package/dist/renderer/RendererInterface.d.ts +70 -0
- package/dist/renderer/SankeyRenderer.d.ts +3 -0
- package/dist/renderer/WebGPURenderer.d.ts +16 -0
- package/dist/renderer/index.d.ts +13 -0
- package/dist/renderer/native/NativeWebGLRenderer.d.ts +31 -0
- package/dist/renderer/native/bufferStore.d.ts +11 -0
- package/dist/renderer/native/draw.d.ts +47 -0
- package/dist/renderer/native/programFactory.d.ts +3 -0
- package/dist/renderer/native/renderFrame.d.ts +3 -0
- package/dist/renderer/native/shaderSources.d.ts +6 -0
- package/dist/renderer/native/textureStore.d.ts +8 -0
- package/dist/renderer/native/types.d.ts +77 -0
- package/dist/renderer/native/utils.d.ts +31 -0
- package/dist/renderer/radar/RadarRenderer.d.ts +71 -0
- package/dist/renderer/radar/index.d.ts +10 -0
- package/dist/renderer/shaders.d.ts +77 -0
- package/dist/renderer/ternary/TernaryRenderer.d.ts +39 -0
- package/dist/renderer/ternary/index.d.ts +6 -0
- package/dist/renderer/ternary/types.d.ts +56 -0
- package/dist/scales/index.d.ts +54 -0
- package/dist/serialization/index.d.ts +153 -0
- package/dist/streaming/backpressure.d.ts +179 -0
- package/dist/streaming/index.d.ts +7 -0
- package/dist/streaming/mock.d.ts +12 -0
- package/dist/streaming/types.d.ts +57 -0
- package/dist/streaming/utils.d.ts +19 -0
- package/dist/streaming/websocket.d.ts +6 -0
- package/dist/testing/index.d.ts +225 -0
- package/dist/theme/colorSchemes.d.ts +56 -0
- package/dist/theme/index.d.ts +138 -0
- package/dist/types.d.ts +753 -0
- package/dist/utils-Dbro9-qM.js +254 -0
- package/dist/utils-Dbro9-qM.js.map +1 -0
- package/dist/velo-plot.d.ts +1 -0
- package/dist/velo-plot.full.d.ts +1 -0
- package/dist/velo-plot.full.js +5804 -0
- package/dist/velo-plot.full.js.map +1 -0
- package/dist/velo-plot.js +31 -0
- package/dist/velo-plot.js.map +1 -0
- package/dist/workers/downsample.d.ts +34 -0
- package/dist/workers/downsample.worker.d.ts +46 -0
- package/package.json +185 -0
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { SeriesStyle } from './seriesAdapter';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Bounds interface matching the original
|
|
5
|
+
*/
|
|
6
|
+
export interface Bounds {
|
|
7
|
+
xMin: number;
|
|
8
|
+
xMax: number;
|
|
9
|
+
yMin: number;
|
|
10
|
+
yMax: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Series render data matching NativeSeriesRenderData
|
|
14
|
+
*/
|
|
15
|
+
export interface GpuSeriesRenderData {
|
|
16
|
+
id: string;
|
|
17
|
+
type: "line" | "scatter" | "line+scatter" | "step" | "step+scatter" | "band" | "bar" | "heatmap";
|
|
18
|
+
visible: boolean;
|
|
19
|
+
style: SeriesStyle;
|
|
20
|
+
/** Y-bounds for multi-axis support */
|
|
21
|
+
yBounds?: {
|
|
22
|
+
min: number;
|
|
23
|
+
max: number;
|
|
24
|
+
};
|
|
25
|
+
/** Heatmap specific */
|
|
26
|
+
zBounds?: {
|
|
27
|
+
min: number;
|
|
28
|
+
max: number;
|
|
29
|
+
};
|
|
30
|
+
colormap?: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Render options matching NativeRenderOptions
|
|
34
|
+
*/
|
|
35
|
+
export interface GpuRenderOptions {
|
|
36
|
+
bounds: Bounds;
|
|
37
|
+
backgroundColor?: [number, number, number, number];
|
|
38
|
+
plotArea?: {
|
|
39
|
+
x: number;
|
|
40
|
+
y: number;
|
|
41
|
+
width: number;
|
|
42
|
+
height: number;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Backend preference
|
|
47
|
+
*/
|
|
48
|
+
export type BackendPreference = "webgpu" | "webgl" | "auto";
|
|
49
|
+
/**
|
|
50
|
+
* GPU Renderer options
|
|
51
|
+
*/
|
|
52
|
+
export interface GpuRendererOptions {
|
|
53
|
+
backend?: BackendPreference;
|
|
54
|
+
powerPreference?: "low-power" | "high-performance";
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* GPU Renderer - Unified renderer using the GPU abstraction layer
|
|
58
|
+
*/
|
|
59
|
+
export declare class GpuRenderer {
|
|
60
|
+
private canvas;
|
|
61
|
+
private options;
|
|
62
|
+
private backend;
|
|
63
|
+
private adapter;
|
|
64
|
+
private dpr;
|
|
65
|
+
private isInitialized;
|
|
66
|
+
private backendType;
|
|
67
|
+
private bufferDataMap;
|
|
68
|
+
private stepBufferDataMap;
|
|
69
|
+
private colormapDataMap;
|
|
70
|
+
constructor(canvas: HTMLCanvasElement, options?: GpuRendererOptions);
|
|
71
|
+
/**
|
|
72
|
+
* Initialize the renderer
|
|
73
|
+
*/
|
|
74
|
+
init(): Promise<boolean>;
|
|
75
|
+
/**
|
|
76
|
+
* Check if renderer is available
|
|
77
|
+
*/
|
|
78
|
+
get available(): boolean;
|
|
79
|
+
/**
|
|
80
|
+
* Get the active backend type
|
|
81
|
+
*/
|
|
82
|
+
get activeBackend(): "webgpu" | "webgl" | null;
|
|
83
|
+
/**
|
|
84
|
+
* Set device pixel ratio
|
|
85
|
+
*/
|
|
86
|
+
setDPR(dpr: number): void;
|
|
87
|
+
/**
|
|
88
|
+
* Create or update a buffer
|
|
89
|
+
*/
|
|
90
|
+
createBuffer(id: string, data: Float32Array): void;
|
|
91
|
+
/**
|
|
92
|
+
* Update a buffer partially
|
|
93
|
+
*/
|
|
94
|
+
updateBuffer(id: string, data: Float32Array, offsetInBytes: number): boolean;
|
|
95
|
+
/**
|
|
96
|
+
* Get a buffer's data
|
|
97
|
+
*/
|
|
98
|
+
getBuffer(id: string): Float32Array | undefined;
|
|
99
|
+
/**
|
|
100
|
+
* Delete a buffer
|
|
101
|
+
*/
|
|
102
|
+
deleteBuffer(id: string): void;
|
|
103
|
+
/**
|
|
104
|
+
* Create or update a step buffer
|
|
105
|
+
*/
|
|
106
|
+
createStepBuffer(id: string, data: Float32Array): void;
|
|
107
|
+
/**
|
|
108
|
+
* Create colormap texture
|
|
109
|
+
*/
|
|
110
|
+
createColormapTexture(id: string, data: Uint8Array): void;
|
|
111
|
+
/**
|
|
112
|
+
* Render a frame
|
|
113
|
+
*/
|
|
114
|
+
render(series: GpuSeriesRenderData[], options: GpuRenderOptions): void;
|
|
115
|
+
/**
|
|
116
|
+
* Build draw list from series data
|
|
117
|
+
*/
|
|
118
|
+
private buildDrawList;
|
|
119
|
+
/**
|
|
120
|
+
* Handle canvas resize
|
|
121
|
+
*/
|
|
122
|
+
resize(): void;
|
|
123
|
+
/**
|
|
124
|
+
* Get renderer limits
|
|
125
|
+
*/
|
|
126
|
+
getLimits(): Record<string, unknown>;
|
|
127
|
+
/**
|
|
128
|
+
* Destroy the renderer
|
|
129
|
+
*/
|
|
130
|
+
destroy(): void;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Create a GPU renderer (async)
|
|
134
|
+
*/
|
|
135
|
+
export declare function createGpuRenderer(canvas: HTMLCanvasElement, options?: GpuRendererOptions): Promise<GpuRenderer | null>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adapter Index - Export all adapter utilities
|
|
3
|
+
*/
|
|
4
|
+
export { SeriesAdapter, parseColorToRGBA, } from './seriesAdapter';
|
|
5
|
+
export type { SeriesData, SeriesStyle, } from './seriesAdapter';
|
|
6
|
+
export { GpuRenderer, createGpuRenderer, } from './gpuRenderer';
|
|
7
|
+
export type { Bounds, GpuSeriesRenderData, GpuRenderOptions, BackendPreference, GpuRendererOptions, } from './gpuRenderer';
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { DrawList } from '../drawList';
|
|
2
|
+
import { GpuBackend, RGBA } from '../types';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Series style from the original renderer
|
|
6
|
+
*/
|
|
7
|
+
export interface SeriesStyle {
|
|
8
|
+
color?: string | RGBA;
|
|
9
|
+
opacity?: number;
|
|
10
|
+
lineWidth?: number;
|
|
11
|
+
pointSize?: number;
|
|
12
|
+
symbol?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Series render data from the chart system
|
|
16
|
+
*/
|
|
17
|
+
export interface SeriesData {
|
|
18
|
+
id: string;
|
|
19
|
+
type: "line" | "scatter" | "line+scatter" | "step" | "step+scatter" | "band" | "bar" | "heatmap";
|
|
20
|
+
visible: boolean;
|
|
21
|
+
/** Main vertex data */
|
|
22
|
+
data: Float32Array;
|
|
23
|
+
/** Style properties */
|
|
24
|
+
style: SeriesStyle;
|
|
25
|
+
/** For step charts */
|
|
26
|
+
stepData?: Float32Array;
|
|
27
|
+
/** Y-axis bounds for multi-axis support */
|
|
28
|
+
yBounds?: {
|
|
29
|
+
min: number;
|
|
30
|
+
max: number;
|
|
31
|
+
};
|
|
32
|
+
/** For heatmaps */
|
|
33
|
+
zBounds?: {
|
|
34
|
+
min: number;
|
|
35
|
+
max: number;
|
|
36
|
+
};
|
|
37
|
+
colormapData?: Uint8Array;
|
|
38
|
+
colormap?: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Mutable color tuple for internal use
|
|
42
|
+
*/
|
|
43
|
+
type MutableRGBA = [number, number, number, number];
|
|
44
|
+
/**
|
|
45
|
+
* Parse color from various formats to RGBA
|
|
46
|
+
*/
|
|
47
|
+
export declare function parseColorToRGBA(color: string | RGBA | undefined): MutableRGBA;
|
|
48
|
+
/**
|
|
49
|
+
* Series Adapter class
|
|
50
|
+
*
|
|
51
|
+
* Manages the conversion of chart series to GPU resources and draw calls.
|
|
52
|
+
*/
|
|
53
|
+
export declare class SeriesAdapter {
|
|
54
|
+
private backend;
|
|
55
|
+
private seriesBufferMap;
|
|
56
|
+
private seriesStepBufferMap;
|
|
57
|
+
private seriesTextureMap;
|
|
58
|
+
constructor(backend: GpuBackend);
|
|
59
|
+
/**
|
|
60
|
+
* Get buffer ID for a series
|
|
61
|
+
*/
|
|
62
|
+
private getBufferId;
|
|
63
|
+
/**
|
|
64
|
+
* Get step buffer ID for a series
|
|
65
|
+
*/
|
|
66
|
+
private getStepBufferId;
|
|
67
|
+
/**
|
|
68
|
+
* Get texture ID for a series
|
|
69
|
+
*/
|
|
70
|
+
private getTextureId;
|
|
71
|
+
/**
|
|
72
|
+
* Update series data in GPU buffers
|
|
73
|
+
*/
|
|
74
|
+
updateSeries(series: SeriesData): void;
|
|
75
|
+
/**
|
|
76
|
+
* Remove a series from GPU resources
|
|
77
|
+
*/
|
|
78
|
+
removeSeries(seriesId: string): void;
|
|
79
|
+
/**
|
|
80
|
+
* Build draw list from series array
|
|
81
|
+
*/
|
|
82
|
+
buildDrawList(seriesArray: SeriesData[]): DrawList;
|
|
83
|
+
/**
|
|
84
|
+
* Cleanup all resources
|
|
85
|
+
*/
|
|
86
|
+
destroy(): void;
|
|
87
|
+
}
|
|
88
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { BufferDescriptor, BufferId, GpuBackend, GpuBackendInfo, GpuViewport, Texture1DDescriptor, TextureId } from '../../types';
|
|
2
|
+
import { DrawList } from '../../drawList';
|
|
3
|
+
import { FrameUniforms } from '../../frame';
|
|
4
|
+
|
|
5
|
+
export interface WebGLBackendOptions {
|
|
6
|
+
antialias?: boolean;
|
|
7
|
+
preserveDrawingBuffer?: boolean;
|
|
8
|
+
powerPreference?: "default" | "low-power" | "high-performance";
|
|
9
|
+
}
|
|
10
|
+
export declare class WebGLBackend implements GpuBackend {
|
|
11
|
+
readonly info: GpuBackendInfo;
|
|
12
|
+
private canvas;
|
|
13
|
+
private opts;
|
|
14
|
+
private gl;
|
|
15
|
+
private viewport;
|
|
16
|
+
private dpr;
|
|
17
|
+
private programs;
|
|
18
|
+
private buffers;
|
|
19
|
+
private textures;
|
|
20
|
+
constructor(canvas: HTMLCanvasElement, opts?: WebGLBackendOptions);
|
|
21
|
+
static isSupported(): boolean;
|
|
22
|
+
init(): Promise<void>;
|
|
23
|
+
setViewport(viewport: GpuViewport): void;
|
|
24
|
+
createOrUpdateBuffer(id: BufferId, data: ArrayBufferView, desc?: Partial<BufferDescriptor>): void;
|
|
25
|
+
deleteBuffer(id: BufferId): void;
|
|
26
|
+
createOrUpdateTexture1D(id: TextureId, data: Uint8Array, desc?: Partial<Texture1DDescriptor>): void;
|
|
27
|
+
deleteTexture(id: TextureId): void;
|
|
28
|
+
render(drawList: DrawList, frame: FrameUniforms): void;
|
|
29
|
+
renderWithBounds(drawList: DrawList, frame: FrameUniforms, bounds: {
|
|
30
|
+
xMin: number;
|
|
31
|
+
xMax: number;
|
|
32
|
+
yMin: number;
|
|
33
|
+
yMax: number;
|
|
34
|
+
}): void;
|
|
35
|
+
private renderDrawCall;
|
|
36
|
+
private renderLine;
|
|
37
|
+
private renderPoints;
|
|
38
|
+
private renderBand;
|
|
39
|
+
private renderTriangles;
|
|
40
|
+
private renderHeatmap;
|
|
41
|
+
destroy(): void;
|
|
42
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WebGL Program Factory
|
|
3
|
+
*
|
|
4
|
+
* Utilities for compiling and linking WebGL shader programs.
|
|
5
|
+
*/
|
|
6
|
+
export interface ShaderProgram {
|
|
7
|
+
program: WebGLProgram;
|
|
8
|
+
attributes: Record<string, number>;
|
|
9
|
+
uniforms: Record<string, WebGLUniformLocation | null>;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Create a shader program from source
|
|
13
|
+
*/
|
|
14
|
+
export declare function createProgram(gl: WebGLRenderingContext, vertSource: string, fragSource: string, attributeNames: string[], uniformNames: string[]): ShaderProgram;
|
|
15
|
+
/**
|
|
16
|
+
* All programs used by the WebGL backend
|
|
17
|
+
*/
|
|
18
|
+
export interface ProgramBundle {
|
|
19
|
+
line: ShaderProgram;
|
|
20
|
+
point: ShaderProgram;
|
|
21
|
+
heatmap: ShaderProgram;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Create all shader programs
|
|
25
|
+
*/
|
|
26
|
+
export declare function createAllPrograms(gl: WebGLRenderingContext): ProgramBundle;
|
|
27
|
+
/**
|
|
28
|
+
* Destroy all programs
|
|
29
|
+
*/
|
|
30
|
+
export declare function destroyPrograms(gl: WebGLRenderingContext, bundle: ProgramBundle): void;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WebGL Shader Sources
|
|
3
|
+
*
|
|
4
|
+
* GLSL shaders for the WebGL backend.
|
|
5
|
+
* These match the functionality of the WebGPU WGSL shaders.
|
|
6
|
+
*/
|
|
7
|
+
export declare const LINE_VERT_GLSL = "\nprecision highp float;\nattribute vec2 aPosition;\nuniform vec2 uScale;\nuniform vec2 uTranslate;\n\nvoid main() {\n vec2 pos = aPosition * uScale + uTranslate;\n gl_Position = vec4(pos, 0.0, 1.0);\n}\n";
|
|
8
|
+
export declare const LINE_FRAG_GLSL = "\nprecision highp float;\nuniform vec4 uColor;\n\nvoid main() {\n gl_FragColor = uColor;\n}\n";
|
|
9
|
+
export declare const POINT_VERT_GLSL = "\nprecision highp float;\nattribute vec2 aPosition;\nuniform vec2 uScale;\nuniform vec2 uTranslate;\nuniform float uPointSize;\n\nvoid main() {\n vec2 pos = aPosition * uScale + uTranslate;\n gl_Position = vec4(pos, 0.0, 1.0);\n gl_PointSize = uPointSize;\n}\n";
|
|
10
|
+
export declare const POINT_FRAG_GLSL = "\nprecision highp float;\nuniform vec4 uColor;\nuniform int uSymbol;\n\nfloat sdCircle(vec2 p, float r) {\n return length(p) - r;\n}\n\nfloat sdBox(vec2 p, vec2 b) {\n vec2 d = abs(p) - b;\n return length(max(d, 0.0)) + min(max(d.x, d.y), 0.0);\n}\n\nfloat sdTriangle(vec2 p, float r) {\n const float k = sqrt(3.0);\n p.x = abs(p.x) - r;\n p.y = p.y + r / k;\n if (p.x + k * p.y > 0.0) p = vec2(p.x - k * p.y, -k * p.x - p.y) / 2.0;\n p.x -= clamp(p.x, -2.0 * r, 0.0);\n return -length(p) * sign(p.y);\n}\n\nfloat sdDiamond(vec2 p, float r) {\n return (abs(p.x) + abs(p.y)) - r;\n}\n\nfloat sdCross(vec2 p, float r, float thickness) {\n vec2 d = abs(p);\n float s1 = sdBox(d, vec2(r, thickness));\n float s2 = sdBox(d, vec2(thickness, r));\n return min(s1, s2);\n}\n\nfloat sdX(vec2 p, float r, float thickness) {\n float c = cos(0.785398);\n float s = sin(0.785398);\n mat2 m = mat2(c, -s, s, c);\n return sdCross(m * p, r, thickness);\n}\n\nfloat sdStar(vec2 p, float r, float rf) {\n const vec2 k1 = vec2(0.80901699, -0.58778525);\n const vec2 k2 = vec2(-k1.x, k1.y);\n p.x = abs(p.x);\n p -= 2.0 * max(dot(k1, p), 0.0) * k1;\n p -= 2.0 * max(dot(k2, p), 0.0) * k2;\n p.x = abs(p.x);\n p.y -= r;\n vec2 ba = rf * vec2(-k1.y, k1.x) - vec2(0, 1);\n float h = clamp(dot(p, ba) / dot(ba, ba), 0.0, r);\n return length(p - ba * h) * sign(p.y * ba.x - p.x * ba.y);\n}\n\nvoid main() {\n vec2 p = gl_PointCoord - vec2(0.5);\n float d = 0.0;\n\n if (uSymbol == 0) {\n d = sdCircle(p, 0.45);\n } else if (uSymbol == 1) {\n d = sdBox(p, vec2(0.35));\n } else if (uSymbol == 2) {\n d = sdDiamond(p, 0.45);\n } else if (uSymbol == 3) {\n d = sdTriangle(vec2(p.x, p.y + 0.1), 0.4);\n } else if (uSymbol == 4) {\n d = sdTriangle(vec2(p.x, -p.y + 0.1), 0.4);\n } else if (uSymbol == 5) {\n d = sdCross(p, 0.45, 0.15);\n } else if (uSymbol == 6) {\n d = sdX(p, 0.45, 0.15);\n } else if (uSymbol == 7) {\n d = sdStar(p, 0.45, 0.4);\n }\n\n if (d > 0.02) discard;\n\n float alpha = 1.0 - smoothstep(0.0, 0.02, d);\n gl_FragColor = vec4(uColor.rgb, uColor.a * alpha);\n}\n";
|
|
11
|
+
export declare const HEATMAP_VERT_GLSL = "\nprecision highp float;\nattribute vec2 aPosition;\nattribute float aValue;\nuniform vec2 uScale;\nuniform vec2 uTranslate;\nvarying float vValue;\n\nvoid main() {\n gl_Position = vec4(aPosition * uScale + uTranslate, 0.0, 1.0);\n vValue = aValue;\n}\n";
|
|
12
|
+
export declare const HEATMAP_FRAG_GLSL = "\nprecision highp float;\nvarying float vValue;\nuniform float uMinValue;\nuniform float uMaxValue;\nuniform sampler2D uColormap;\n\nvoid main() {\n float range = uMaxValue - uMinValue;\n float t = (vValue - uMinValue) / (range != 0.0 ? range : 1.0);\n t = clamp(t, 0.0, 1.0);\n gl_FragColor = texture2D(uColormap, vec2(t, 0.5));\n}\n";
|
|
13
|
+
export declare const TRIANGLE_VERT_GLSL = "\nprecision highp float;\nattribute vec2 aPosition;\nattribute vec4 aColor;\nuniform vec2 uScale;\nuniform vec2 uTranslate;\nvarying vec4 vColor;\n\nvoid main() {\n vec2 pos = aPosition * uScale + uTranslate;\n gl_Position = vec4(pos, 0.0, 1.0);\n vColor = aColor;\n}\n";
|
|
14
|
+
export declare const TRIANGLE_FRAG_GLSL = "\nprecision highp float;\nvarying vec4 vColor;\n\nvoid main() {\n gl_FragColor = vColor;\n}\n";
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MassiveDataRenderer - Optimized renderer for 100M+ points
|
|
3
|
+
*
|
|
4
|
+
* Features:
|
|
5
|
+
* - Chunked buffer upload with progress
|
|
6
|
+
* - Batched draw calls to avoid GPU timeout
|
|
7
|
+
* - LOD (Level of Detail) with GPU downsampling
|
|
8
|
+
* - Storage buffers for instanced rendering
|
|
9
|
+
* - Streaming data generation
|
|
10
|
+
*/
|
|
11
|
+
export interface MassiveDataConfig {
|
|
12
|
+
maxPointsPerBatch: number;
|
|
13
|
+
chunkSizeBytes: number;
|
|
14
|
+
enableLOD: boolean;
|
|
15
|
+
lodLevels: number;
|
|
16
|
+
onProgress?: (phase: string, progress: number) => void;
|
|
17
|
+
onStats?: (stats: RenderStats) => void;
|
|
18
|
+
}
|
|
19
|
+
export interface RenderStats {
|
|
20
|
+
totalPoints: number;
|
|
21
|
+
renderedPoints: number;
|
|
22
|
+
bufferSizeMB: number;
|
|
23
|
+
uploadTimeMs: number;
|
|
24
|
+
frameTimeMs: number;
|
|
25
|
+
fps: number;
|
|
26
|
+
lodLevel: number;
|
|
27
|
+
batchCount: number;
|
|
28
|
+
}
|
|
29
|
+
export interface LODLevel {
|
|
30
|
+
buffer: any;
|
|
31
|
+
pointCount: number;
|
|
32
|
+
factor: number;
|
|
33
|
+
}
|
|
34
|
+
export declare class MassiveDataRenderer {
|
|
35
|
+
private device;
|
|
36
|
+
private context;
|
|
37
|
+
private format;
|
|
38
|
+
private config;
|
|
39
|
+
private linePipeline;
|
|
40
|
+
private lineBindGroupLayout;
|
|
41
|
+
private uniformBuffer;
|
|
42
|
+
private storageBuffer;
|
|
43
|
+
private bindGroup;
|
|
44
|
+
private totalPoints;
|
|
45
|
+
private lodLevels;
|
|
46
|
+
private currentLOD;
|
|
47
|
+
private lastFrameTime;
|
|
48
|
+
private frameCount;
|
|
49
|
+
private lastFpsTime;
|
|
50
|
+
private currentFps;
|
|
51
|
+
private viewport;
|
|
52
|
+
constructor(device: any, // GPUDevice
|
|
53
|
+
context: any, // GPUCanvasContext
|
|
54
|
+
format: any, // GPUTextureFormat
|
|
55
|
+
config?: Partial<MassiveDataConfig>);
|
|
56
|
+
/**
|
|
57
|
+
* Initialize render pipelines
|
|
58
|
+
*/
|
|
59
|
+
init(): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Set viewport dimensions
|
|
62
|
+
*/
|
|
63
|
+
setViewport(width: number, height: number): void;
|
|
64
|
+
/**
|
|
65
|
+
* Upload data with chunked progress
|
|
66
|
+
*/
|
|
67
|
+
uploadData(data: Float32Array): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* Build LOD levels using GPU downsampling
|
|
70
|
+
*/
|
|
71
|
+
private buildLOD;
|
|
72
|
+
/**
|
|
73
|
+
* Select appropriate LOD level based on visible range
|
|
74
|
+
*/
|
|
75
|
+
selectLOD(visibleRange: number, totalRange: number): number;
|
|
76
|
+
/**
|
|
77
|
+
* Render frame with batching
|
|
78
|
+
*/
|
|
79
|
+
render(options: {
|
|
80
|
+
bounds: {
|
|
81
|
+
xMin: number;
|
|
82
|
+
xMax: number;
|
|
83
|
+
yMin: number;
|
|
84
|
+
yMax: number;
|
|
85
|
+
};
|
|
86
|
+
color?: [number, number, number, number];
|
|
87
|
+
lineWidth?: number;
|
|
88
|
+
time?: number;
|
|
89
|
+
lodLevel?: number;
|
|
90
|
+
}): void;
|
|
91
|
+
/**
|
|
92
|
+
* Generate streaming sine wave data
|
|
93
|
+
*/
|
|
94
|
+
static generateSineWaveData(pointCount: number, onProgress?: (progress: number) => void): Promise<Float32Array>;
|
|
95
|
+
/**
|
|
96
|
+
* Get current stats
|
|
97
|
+
*/
|
|
98
|
+
getStats(): RenderStats;
|
|
99
|
+
/**
|
|
100
|
+
* Get available LOD levels
|
|
101
|
+
*/
|
|
102
|
+
getLODLevels(): {
|
|
103
|
+
level: number;
|
|
104
|
+
pointCount: number;
|
|
105
|
+
factor: number;
|
|
106
|
+
}[];
|
|
107
|
+
/**
|
|
108
|
+
* Cleanup resources
|
|
109
|
+
*/
|
|
110
|
+
destroy(): void;
|
|
111
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { BufferDescriptor, BufferId, GpuBackend, GpuBackendInfo, GpuViewport, Texture1DDescriptor, TextureId } from '../../types';
|
|
2
|
+
import { DrawList } from '../../drawList';
|
|
3
|
+
import { FrameUniforms } from '../../frame';
|
|
4
|
+
|
|
5
|
+
export interface WebGPUBackendOptions {
|
|
6
|
+
powerPreference?: "low-power" | "high-performance";
|
|
7
|
+
preferredFormat?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare class WebGPUBackend implements GpuBackend {
|
|
10
|
+
readonly info: GpuBackendInfo;
|
|
11
|
+
private canvas;
|
|
12
|
+
private opts;
|
|
13
|
+
private viewport;
|
|
14
|
+
private adapter;
|
|
15
|
+
private device;
|
|
16
|
+
private context;
|
|
17
|
+
private format;
|
|
18
|
+
private buffers;
|
|
19
|
+
private textures;
|
|
20
|
+
private trianglePipeline;
|
|
21
|
+
private linePipeline;
|
|
22
|
+
private pointPipeline;
|
|
23
|
+
private bandPipeline;
|
|
24
|
+
private heatmapPipeline;
|
|
25
|
+
private heatmapBindGroups;
|
|
26
|
+
constructor(canvas: HTMLCanvasElement, opts?: WebGPUBackendOptions);
|
|
27
|
+
static isSupported(): boolean;
|
|
28
|
+
init(): Promise<void>;
|
|
29
|
+
setViewport(viewport: GpuViewport): void;
|
|
30
|
+
createOrUpdateBuffer(id: BufferId, data: ArrayBufferView, desc?: Partial<BufferDescriptor>): void;
|
|
31
|
+
deleteBuffer(id: BufferId): void;
|
|
32
|
+
createOrUpdateTexture1D(id: TextureId, data: Uint8Array, desc?: Partial<Texture1DDescriptor>): void;
|
|
33
|
+
deleteTexture(id: TextureId): void;
|
|
34
|
+
/**
|
|
35
|
+
* Initialize all pipelines lazily
|
|
36
|
+
*/
|
|
37
|
+
private ensurePipelines;
|
|
38
|
+
render(drawList: DrawList, frame: FrameUniforms): void;
|
|
39
|
+
/**
|
|
40
|
+
* Render with explicit bounds (for integration with chart system)
|
|
41
|
+
*/
|
|
42
|
+
renderWithBounds(drawList: DrawList, frame: FrameUniforms, bounds: {
|
|
43
|
+
xMin: number;
|
|
44
|
+
xMax: number;
|
|
45
|
+
yMin: number;
|
|
46
|
+
yMax: number;
|
|
47
|
+
}): void;
|
|
48
|
+
/**
|
|
49
|
+
* Render a single draw call
|
|
50
|
+
*/
|
|
51
|
+
private renderDrawCall;
|
|
52
|
+
private renderTriangles;
|
|
53
|
+
private renderLine;
|
|
54
|
+
private renderPoints;
|
|
55
|
+
private renderBand;
|
|
56
|
+
private renderHeatmap;
|
|
57
|
+
destroy(): void;
|
|
58
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Band Pipeline - WebGPU pipeline for rendering band/area fills
|
|
3
|
+
*
|
|
4
|
+
* Uses triangle-strip topology for efficient area rendering.
|
|
5
|
+
* Reuses the line shader with different primitive topology.
|
|
6
|
+
* Uses `any` types for WebGPU objects to avoid requiring @webgpu/types.
|
|
7
|
+
*/
|
|
8
|
+
export interface BandPipelineBundle {
|
|
9
|
+
pipeline: any;
|
|
10
|
+
bindGroupLayout: any;
|
|
11
|
+
uniformBuffer: any;
|
|
12
|
+
bindGroup: any;
|
|
13
|
+
vertexStride: number;
|
|
14
|
+
}
|
|
15
|
+
export interface BandUniforms {
|
|
16
|
+
scale: [number, number];
|
|
17
|
+
translate: [number, number];
|
|
18
|
+
color: [number, number, number, number];
|
|
19
|
+
}
|
|
20
|
+
export declare function createBandPipeline(device: any, // GPUDevice
|
|
21
|
+
format: string): BandPipelineBundle;
|
|
22
|
+
export declare function updateBandUniforms(device: any, // GPUDevice
|
|
23
|
+
uniformBuffer: any, // GPUBuffer
|
|
24
|
+
uniforms: BandUniforms): void;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Heatmap Pipeline - WebGPU pipeline for rendering heatmaps with colormap textures
|
|
3
|
+
*
|
|
4
|
+
* Uses `any` types for WebGPU objects to avoid requiring @webgpu/types.
|
|
5
|
+
*/
|
|
6
|
+
export interface HeatmapPipelineBundle {
|
|
7
|
+
pipeline: any;
|
|
8
|
+
bindGroupLayout: any;
|
|
9
|
+
uniformBuffer: any;
|
|
10
|
+
sampler: any;
|
|
11
|
+
vertexStride: number;
|
|
12
|
+
}
|
|
13
|
+
export interface HeatmapUniforms {
|
|
14
|
+
scale: [number, number];
|
|
15
|
+
translate: [number, number];
|
|
16
|
+
minValue: number;
|
|
17
|
+
maxValue: number;
|
|
18
|
+
}
|
|
19
|
+
export declare function createHeatmapPipeline(device: any, // GPUDevice
|
|
20
|
+
format: string): HeatmapPipelineBundle;
|
|
21
|
+
export declare function createHeatmapBindGroup(device: any, // GPUDevice
|
|
22
|
+
layout: any, // GPUBindGroupLayout
|
|
23
|
+
uniformBuffer: any, // GPUBuffer
|
|
24
|
+
sampler: any, // GPUSampler
|
|
25
|
+
colormapTexture: any): any;
|
|
26
|
+
export declare function updateHeatmapUniforms(device: any, // GPUDevice
|
|
27
|
+
uniformBuffer: any, // GPUBuffer
|
|
28
|
+
uniforms: HeatmapUniforms): void;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pipeline Index - Export all WebGPU pipelines
|
|
3
|
+
*/
|
|
4
|
+
export { createTrianglePipeline, type TrianglePipelineBundle, } from './trianglePipeline';
|
|
5
|
+
export { createLinePipeline, updateLineUniforms, type LinePipelineBundle, type LineUniforms, } from './linePipeline';
|
|
6
|
+
export { createPointPipeline, updatePointUniforms, SYMBOL_MAP, type PointPipelineBundle, type PointUniforms, } from './pointPipeline';
|
|
7
|
+
export { createHeatmapPipeline, createHeatmapBindGroup, updateHeatmapUniforms, type HeatmapPipelineBundle, type HeatmapUniforms, } from './heatmapPipeline';
|
|
8
|
+
export { createBandPipeline, updateBandUniforms, type BandPipelineBundle, type BandUniforms, } from './bandPipeline';
|
|
9
|
+
export { createInstancedLinePipeline, createInstancedLineBindGroup, updateInstancedLineUniforms, type InstancedLinePipelineBundle, type InstancedLineUniforms, } from './instancedLinePipeline';
|
|
10
|
+
export { createInstancedPointPipeline, createInstancedPointBindGroup, updateInstancedPointUniforms, SYMBOL_TYPE_MAP, type InstancedPointPipelineBundle, type InstancedPointUniforms, } from './instancedPointPipeline';
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Instanced Line Pipeline - For rendering large datasets efficiently
|
|
3
|
+
*
|
|
4
|
+
* Uses storage buffers and instancing to render millions of line segments.
|
|
5
|
+
* Each instance represents one line segment between consecutive points.
|
|
6
|
+
*/
|
|
7
|
+
export interface InstancedLinePipelineBundle {
|
|
8
|
+
pipeline: any;
|
|
9
|
+
bindGroupLayout: any;
|
|
10
|
+
uniformBuffer: any;
|
|
11
|
+
vertexStride: number;
|
|
12
|
+
}
|
|
13
|
+
export interface InstancedLineUniforms {
|
|
14
|
+
scale: [number, number];
|
|
15
|
+
translate: [number, number];
|
|
16
|
+
color: [number, number, number, number];
|
|
17
|
+
lineWidth: number;
|
|
18
|
+
aspectRatio: number;
|
|
19
|
+
pointCount: number;
|
|
20
|
+
}
|
|
21
|
+
export declare function createInstancedLinePipeline(device: any, format: string): InstancedLinePipelineBundle;
|
|
22
|
+
export declare function createInstancedLineBindGroup(device: any, layout: any, uniformBuffer: any, pointBuffer: any): any;
|
|
23
|
+
export declare function updateInstancedLineUniforms(device: any, uniformBuffer: any, uniforms: InstancedLineUniforms): void;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Instanced Point Pipeline - For rendering large scatter datasets
|
|
3
|
+
*
|
|
4
|
+
* Uses storage buffers and instancing to render millions of points.
|
|
5
|
+
*/
|
|
6
|
+
export interface InstancedPointPipelineBundle {
|
|
7
|
+
pipeline: any;
|
|
8
|
+
bindGroupLayout: any;
|
|
9
|
+
uniformBuffer: any;
|
|
10
|
+
vertexStride: number;
|
|
11
|
+
}
|
|
12
|
+
export interface InstancedPointUniforms {
|
|
13
|
+
scale: [number, number];
|
|
14
|
+
translate: [number, number];
|
|
15
|
+
color: [number, number, number, number];
|
|
16
|
+
pointSize: number;
|
|
17
|
+
symbolType: number;
|
|
18
|
+
viewportWidth: number;
|
|
19
|
+
viewportHeight: number;
|
|
20
|
+
pointCount: number;
|
|
21
|
+
}
|
|
22
|
+
export declare function createInstancedPointPipeline(device: any, format: string): InstancedPointPipelineBundle;
|
|
23
|
+
export declare function createInstancedPointBindGroup(device: any, layout: any, uniformBuffer: any, pointBuffer: any): any;
|
|
24
|
+
export declare function updateInstancedPointUniforms(device: any, uniformBuffer: any, uniforms: InstancedPointUniforms): void;
|
|
25
|
+
export declare const SYMBOL_TYPE_MAP: Record<string, number>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Line Pipeline - WebGPU pipeline for rendering lines with uniform buffer
|
|
3
|
+
*
|
|
4
|
+
* Uses `any` types for WebGPU objects to avoid requiring @webgpu/types
|
|
5
|
+
* (following the pattern of the original WebGPUBackend.ts)
|
|
6
|
+
*/
|
|
7
|
+
export interface LinePipelineBundle {
|
|
8
|
+
pipeline: any;
|
|
9
|
+
bindGroupLayout: any;
|
|
10
|
+
uniformBuffer: any;
|
|
11
|
+
bindGroup: any;
|
|
12
|
+
vertexStride: number;
|
|
13
|
+
}
|
|
14
|
+
export interface LineUniforms {
|
|
15
|
+
scale: [number, number];
|
|
16
|
+
translate: [number, number];
|
|
17
|
+
color: [number, number, number, number];
|
|
18
|
+
}
|
|
19
|
+
export declare function createLinePipeline(device: any, // GPUDevice
|
|
20
|
+
format: string): LinePipelineBundle;
|
|
21
|
+
export declare function updateLineUniforms(device: any, // GPUDevice
|
|
22
|
+
uniformBuffer: any, // GPUBuffer
|
|
23
|
+
uniforms: LineUniforms): void;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Point Pipeline - WebGPU pipeline for rendering scatter points with SDF symbols
|
|
3
|
+
*
|
|
4
|
+
* Uses instanced rendering where each point is rendered as a quad (2 triangles).
|
|
5
|
+
* Uses `any` types for WebGPU objects to avoid requiring @webgpu/types.
|
|
6
|
+
*/
|
|
7
|
+
export interface PointPipelineBundle {
|
|
8
|
+
pipeline: any;
|
|
9
|
+
bindGroupLayout: any;
|
|
10
|
+
uniformBuffer: any;
|
|
11
|
+
bindGroup: any;
|
|
12
|
+
quadBuffer: any;
|
|
13
|
+
vertexStride: number;
|
|
14
|
+
}
|
|
15
|
+
export interface PointUniforms {
|
|
16
|
+
scale: [number, number];
|
|
17
|
+
translate: [number, number];
|
|
18
|
+
color: [number, number, number, number];
|
|
19
|
+
pointSize: number;
|
|
20
|
+
symbol: number;
|
|
21
|
+
viewport: [number, number];
|
|
22
|
+
}
|
|
23
|
+
export declare function createPointPipeline(device: any, // GPUDevice
|
|
24
|
+
format: string): PointPipelineBundle;
|
|
25
|
+
export declare function updatePointUniforms(device: any, // GPUDevice
|
|
26
|
+
uniformBuffer: any, // GPUBuffer
|
|
27
|
+
uniforms: PointUniforms): void;
|
|
28
|
+
export declare const SYMBOL_MAP: Record<string, number>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const TRIANGLE_SHADER_WGSL = "\nstruct VSOut {\n @builtin(position) pos: vec4<f32>,\n @location(0) color: vec4<f32>,\n};\n\n@vertex\nfn vs_main(\n @location(0) position: vec2<f32>,\n @location(1) color: vec4<f32>\n) -> VSOut {\n var out: VSOut;\n out.pos = vec4<f32>(position, 0.0, 1.0);\n out.color = color;\n return out;\n}\n\n@fragment\nfn fs_main(in: VSOut) -> @location(0) vec4<f32> {\n return in.color;\n}\n";
|