minerva-design 1.0.2 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (354) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +21 -19
  3. package/dist/charts/canvas.d.cts +7 -0
  4. package/dist/charts/canvas.d.ts +7 -0
  5. package/dist/charts/core.cjs +1 -0
  6. package/dist/charts/core.d.cts +7 -0
  7. package/dist/charts/core.d.ts +7 -0
  8. package/dist/charts/core.js +6 -0
  9. package/dist/charts/engine/axis.cjs +2 -0
  10. package/dist/charts/engine/axis.cjs.map +1 -0
  11. package/dist/charts/engine/axis.d.cts +13 -0
  12. package/dist/charts/engine/axis.d.ts +13 -0
  13. package/dist/charts/engine/axis.js +38 -0
  14. package/dist/charts/engine/axis.js.map +1 -0
  15. package/dist/charts/engine/canvas.cjs +2 -0
  16. package/dist/charts/engine/canvas.cjs.map +1 -0
  17. package/dist/charts/engine/canvas.d.cts +85 -0
  18. package/dist/charts/engine/canvas.d.ts +85 -0
  19. package/dist/charts/engine/canvas.js +165 -0
  20. package/dist/charts/engine/canvas.js.map +1 -0
  21. package/dist/charts/engine/chart.cjs +3 -0
  22. package/dist/charts/engine/chart.cjs.map +1 -0
  23. package/dist/charts/engine/chart.d.cts +6 -0
  24. package/dist/charts/engine/chart.d.ts +6 -0
  25. package/dist/charts/engine/chart.js +566 -0
  26. package/dist/charts/engine/chart.js.map +1 -0
  27. package/dist/charts/engine/color.cjs +2 -0
  28. package/dist/charts/engine/color.cjs.map +1 -0
  29. package/dist/charts/engine/color.d.cts +33 -0
  30. package/dist/charts/engine/color.d.ts +33 -0
  31. package/dist/charts/engine/color.js +167 -0
  32. package/dist/charts/engine/color.js.map +1 -0
  33. package/dist/charts/engine/controller.cjs +3 -0
  34. package/dist/charts/engine/controller.cjs.map +1 -0
  35. package/dist/charts/engine/controller.d.cts +182 -0
  36. package/dist/charts/engine/controller.d.ts +182 -0
  37. package/dist/charts/engine/controller.js +528 -0
  38. package/dist/charts/engine/controller.js.map +1 -0
  39. package/dist/charts/engine/data.cjs +2 -0
  40. package/dist/charts/engine/data.cjs.map +1 -0
  41. package/dist/charts/engine/data.d.cts +29 -0
  42. package/dist/charts/engine/data.d.ts +29 -0
  43. package/dist/charts/engine/data.js +104 -0
  44. package/dist/charts/engine/data.js.map +1 -0
  45. package/dist/charts/engine/decimate.cjs +2 -0
  46. package/dist/charts/engine/decimate.cjs.map +1 -0
  47. package/dist/charts/engine/decimate.d.cts +13 -0
  48. package/dist/charts/engine/decimate.d.ts +13 -0
  49. package/dist/charts/engine/decimate.js +28 -0
  50. package/dist/charts/engine/decimate.js.map +1 -0
  51. package/dist/charts/engine/dom.cjs +2 -0
  52. package/dist/charts/engine/dom.cjs.map +1 -0
  53. package/dist/charts/engine/dom.d.cts +21 -0
  54. package/dist/charts/engine/dom.d.ts +21 -0
  55. package/dist/charts/engine/dom.js +125 -0
  56. package/dist/charts/engine/dom.js.map +1 -0
  57. package/dist/charts/engine/format.cjs +2 -0
  58. package/dist/charts/engine/format.cjs.map +1 -0
  59. package/dist/charts/engine/format.d.cts +9 -0
  60. package/dist/charts/engine/format.d.ts +9 -0
  61. package/dist/charts/engine/format.js +34 -0
  62. package/dist/charts/engine/format.js.map +1 -0
  63. package/dist/charts/engine/items.cjs +2 -0
  64. package/dist/charts/engine/items.cjs.map +1 -0
  65. package/dist/charts/engine/items.d.cts +8 -0
  66. package/dist/charts/engine/items.d.ts +8 -0
  67. package/dist/charts/engine/items.js +91 -0
  68. package/dist/charts/engine/items.js.map +1 -0
  69. package/dist/charts/engine/layout.cjs +2 -0
  70. package/dist/charts/engine/layout.cjs.map +1 -0
  71. package/dist/charts/engine/layout.d.cts +37 -0
  72. package/dist/charts/engine/layout.d.ts +37 -0
  73. package/dist/charts/engine/layout.js +26 -0
  74. package/dist/charts/engine/layout.js.map +1 -0
  75. package/dist/charts/engine/model.cjs +2 -0
  76. package/dist/charts/engine/model.cjs.map +1 -0
  77. package/dist/charts/engine/model.d.cts +74 -0
  78. package/dist/charts/engine/model.d.ts +74 -0
  79. package/dist/charts/engine/model.js +175 -0
  80. package/dist/charts/engine/model.js.map +1 -0
  81. package/dist/charts/engine/overlay.cjs +2 -0
  82. package/dist/charts/engine/overlay.cjs.map +1 -0
  83. package/dist/charts/engine/overlay.d.cts +78 -0
  84. package/dist/charts/engine/overlay.d.ts +78 -0
  85. package/dist/charts/engine/overlay.js +137 -0
  86. package/dist/charts/engine/overlay.js.map +1 -0
  87. package/dist/charts/engine/presets.cjs +3 -0
  88. package/dist/charts/engine/presets.cjs.map +1 -0
  89. package/dist/charts/engine/presets.d.cts +103 -0
  90. package/dist/charts/engine/presets.d.ts +103 -0
  91. package/dist/charts/engine/presets.js +153 -0
  92. package/dist/charts/engine/presets.js.map +1 -0
  93. package/dist/charts/engine/renderers/canvas2d.cjs +2 -0
  94. package/dist/charts/engine/renderers/canvas2d.cjs.map +1 -0
  95. package/dist/charts/engine/renderers/canvas2d.d.cts +20 -0
  96. package/dist/charts/engine/renderers/canvas2d.d.ts +20 -0
  97. package/dist/charts/engine/renderers/canvas2d.js +193 -0
  98. package/dist/charts/engine/renderers/canvas2d.js.map +1 -0
  99. package/dist/charts/engine/renderers/detect.cjs +2 -0
  100. package/dist/charts/engine/renderers/detect.cjs.map +1 -0
  101. package/dist/charts/engine/renderers/detect.d.cts +12 -0
  102. package/dist/charts/engine/renderers/detect.d.ts +12 -0
  103. package/dist/charts/engine/renderers/detect.js +33 -0
  104. package/dist/charts/engine/renderers/detect.js.map +1 -0
  105. package/dist/charts/engine/renderers/range.cjs +2 -0
  106. package/dist/charts/engine/renderers/range.cjs.map +1 -0
  107. package/dist/charts/engine/renderers/range.d.cts +5 -0
  108. package/dist/charts/engine/renderers/range.d.ts +5 -0
  109. package/dist/charts/engine/renderers/range.js +32 -0
  110. package/dist/charts/engine/renderers/range.js.map +1 -0
  111. package/dist/charts/engine/renderers/shaders.cjs +266 -0
  112. package/dist/charts/engine/renderers/shaders.cjs.map +1 -0
  113. package/dist/charts/engine/renderers/shaders.d.cts +20 -0
  114. package/dist/charts/engine/renderers/shaders.d.ts +20 -0
  115. package/dist/charts/engine/renderers/shaders.js +251 -0
  116. package/dist/charts/engine/renderers/shaders.js.map +1 -0
  117. package/dist/charts/engine/renderers/types.cjs +2 -0
  118. package/dist/charts/engine/renderers/types.cjs.map +1 -0
  119. package/dist/charts/engine/renderers/types.d.cts +83 -0
  120. package/dist/charts/engine/renderers/types.d.ts +83 -0
  121. package/dist/charts/engine/renderers/types.js +6 -0
  122. package/dist/charts/engine/renderers/types.js.map +1 -0
  123. package/dist/charts/engine/renderers/webgl2.cjs +2 -0
  124. package/dist/charts/engine/renderers/webgl2.cjs.map +1 -0
  125. package/dist/charts/engine/renderers/webgl2.d.cts +5 -0
  126. package/dist/charts/engine/renderers/webgl2.d.ts +5 -0
  127. package/dist/charts/engine/renderers/webgl2.js +134 -0
  128. package/dist/charts/engine/renderers/webgl2.js.map +1 -0
  129. package/dist/charts/engine/renderers/webgpu.cjs +2 -0
  130. package/dist/charts/engine/renderers/webgpu.cjs.map +1 -0
  131. package/dist/charts/engine/renderers/webgpu.d.cts +6 -0
  132. package/dist/charts/engine/renderers/webgpu.d.ts +6 -0
  133. package/dist/charts/engine/renderers/webgpu.js +220 -0
  134. package/dist/charts/engine/renderers/webgpu.js.map +1 -0
  135. package/dist/charts/engine/scale.cjs +2 -0
  136. package/dist/charts/engine/scale.cjs.map +1 -0
  137. package/dist/charts/engine/scale.d.cts +13 -0
  138. package/dist/charts/engine/scale.d.ts +13 -0
  139. package/dist/charts/engine/scale.js +37 -0
  140. package/dist/charts/engine/scale.js.map +1 -0
  141. package/dist/charts/engine/scene.cjs +2 -0
  142. package/dist/charts/engine/scene.cjs.map +1 -0
  143. package/dist/charts/engine/scene.d.cts +89 -0
  144. package/dist/charts/engine/scene.d.ts +89 -0
  145. package/dist/charts/engine/scene.js +241 -0
  146. package/dist/charts/engine/scene.js.map +1 -0
  147. package/dist/charts/engine/spatial.cjs +2 -0
  148. package/dist/charts/engine/spatial.cjs.map +1 -0
  149. package/dist/charts/engine/spatial.d.cts +18 -0
  150. package/dist/charts/engine/spatial.d.ts +18 -0
  151. package/dist/charts/engine/spatial.js +53 -0
  152. package/dist/charts/engine/spatial.js.map +1 -0
  153. package/dist/charts/engine/theme.cjs +2 -0
  154. package/dist/charts/engine/theme.cjs.map +1 -0
  155. package/dist/charts/engine/theme.d.cts +45 -0
  156. package/dist/charts/engine/theme.d.ts +45 -0
  157. package/dist/charts/engine/theme.js +86 -0
  158. package/dist/charts/engine/theme.js.map +1 -0
  159. package/dist/charts/engine/time.cjs +2 -0
  160. package/dist/charts/engine/time.cjs.map +1 -0
  161. package/dist/charts/engine/time.d.cts +10 -0
  162. package/dist/charts/engine/time.d.ts +10 -0
  163. package/dist/charts/engine/time.js +189 -0
  164. package/dist/charts/engine/time.js.map +1 -0
  165. package/dist/charts/engine/types.d.cts +356 -0
  166. package/dist/charts/engine/types.d.ts +356 -0
  167. package/dist/charts/engine/viewport.cjs +2 -0
  168. package/dist/charts/engine/viewport.cjs.map +1 -0
  169. package/dist/charts/engine/viewport.d.cts +12 -0
  170. package/dist/charts/engine/viewport.d.ts +12 -0
  171. package/dist/charts/engine/viewport.js +15 -0
  172. package/dist/charts/engine/viewport.js.map +1 -0
  173. package/dist/charts/index.cjs +1 -0
  174. package/dist/charts/index.d.cts +4 -0
  175. package/dist/charts/index.d.ts +4 -0
  176. package/dist/charts/index.js +10 -0
  177. package/dist/charts/react/Chart.cjs +2 -0
  178. package/dist/charts/react/Chart.cjs.map +1 -0
  179. package/dist/charts/react/Chart.d.cts +35 -0
  180. package/dist/charts/react/Chart.d.ts +35 -0
  181. package/dist/charts/react/Chart.js +117 -0
  182. package/dist/charts/react/Chart.js.map +1 -0
  183. package/dist/charts/react/charts.cjs +2 -0
  184. package/dist/charts/react/charts.cjs.map +1 -0
  185. package/dist/charts/react/charts.d.cts +13 -0
  186. package/dist/charts/react/charts.d.ts +13 -0
  187. package/dist/charts/react/charts.js +133 -0
  188. package/dist/charts/react/charts.js.map +1 -0
  189. package/dist/charts/react/types.d.cts +136 -0
  190. package/dist/charts/react/types.d.ts +136 -0
  191. package/dist/native/charts/src/canvas.cjs +1 -0
  192. package/dist/native/charts/src/canvas.js +6 -0
  193. package/dist/native/charts/src/engine/axis.cjs +2 -0
  194. package/dist/native/charts/src/engine/axis.cjs.map +1 -0
  195. package/dist/native/charts/src/engine/axis.js +38 -0
  196. package/dist/native/charts/src/engine/axis.js.map +1 -0
  197. package/dist/native/charts/src/engine/canvas.cjs +1 -0
  198. package/dist/native/charts/src/engine/canvas.js +1 -0
  199. package/dist/native/charts/src/engine/color.cjs +2 -0
  200. package/dist/native/charts/src/engine/color.cjs.map +1 -0
  201. package/dist/native/charts/src/engine/color.js +130 -0
  202. package/dist/native/charts/src/engine/color.js.map +1 -0
  203. package/dist/native/charts/src/engine/controller.cjs +3 -0
  204. package/dist/native/charts/src/engine/controller.cjs.map +1 -0
  205. package/dist/native/charts/src/engine/controller.js +528 -0
  206. package/dist/native/charts/src/engine/controller.js.map +1 -0
  207. package/dist/native/charts/src/engine/data.cjs +2 -0
  208. package/dist/native/charts/src/engine/data.cjs.map +1 -0
  209. package/dist/native/charts/src/engine/data.js +104 -0
  210. package/dist/native/charts/src/engine/data.js.map +1 -0
  211. package/dist/native/charts/src/engine/decimate.cjs +2 -0
  212. package/dist/native/charts/src/engine/decimate.cjs.map +1 -0
  213. package/dist/native/charts/src/engine/decimate.js +28 -0
  214. package/dist/native/charts/src/engine/decimate.js.map +1 -0
  215. package/dist/native/charts/src/engine/format.cjs +2 -0
  216. package/dist/native/charts/src/engine/format.cjs.map +1 -0
  217. package/dist/native/charts/src/engine/format.js +34 -0
  218. package/dist/native/charts/src/engine/format.js.map +1 -0
  219. package/dist/native/charts/src/engine/layout.cjs +2 -0
  220. package/dist/native/charts/src/engine/layout.cjs.map +1 -0
  221. package/dist/native/charts/src/engine/layout.js +26 -0
  222. package/dist/native/charts/src/engine/layout.js.map +1 -0
  223. package/dist/native/charts/src/engine/model.cjs +2 -0
  224. package/dist/native/charts/src/engine/model.cjs.map +1 -0
  225. package/dist/native/charts/src/engine/model.js +175 -0
  226. package/dist/native/charts/src/engine/model.js.map +1 -0
  227. package/dist/native/charts/src/engine/overlay.cjs +2 -0
  228. package/dist/native/charts/src/engine/overlay.cjs.map +1 -0
  229. package/dist/native/charts/src/engine/overlay.js +49 -0
  230. package/dist/native/charts/src/engine/overlay.js.map +1 -0
  231. package/dist/native/charts/src/engine/presets.cjs +3 -0
  232. package/dist/native/charts/src/engine/presets.cjs.map +1 -0
  233. package/dist/native/charts/src/engine/presets.js +147 -0
  234. package/dist/native/charts/src/engine/presets.js.map +1 -0
  235. package/dist/native/charts/src/engine/scale.cjs +2 -0
  236. package/dist/native/charts/src/engine/scale.cjs.map +1 -0
  237. package/dist/native/charts/src/engine/scale.js +37 -0
  238. package/dist/native/charts/src/engine/scale.js.map +1 -0
  239. package/dist/native/charts/src/engine/scene.cjs +2 -0
  240. package/dist/native/charts/src/engine/scene.cjs.map +1 -0
  241. package/dist/native/charts/src/engine/scene.js +241 -0
  242. package/dist/native/charts/src/engine/scene.js.map +1 -0
  243. package/dist/native/charts/src/engine/spatial.cjs +2 -0
  244. package/dist/native/charts/src/engine/spatial.cjs.map +1 -0
  245. package/dist/native/charts/src/engine/spatial.js +53 -0
  246. package/dist/native/charts/src/engine/spatial.js.map +1 -0
  247. package/dist/native/charts/src/engine/theme.cjs +2 -0
  248. package/dist/native/charts/src/engine/theme.cjs.map +1 -0
  249. package/dist/native/charts/src/engine/theme.js +62 -0
  250. package/dist/native/charts/src/engine/theme.js.map +1 -0
  251. package/dist/native/charts/src/engine/time.cjs +2 -0
  252. package/dist/native/charts/src/engine/time.cjs.map +1 -0
  253. package/dist/native/charts/src/engine/time.js +189 -0
  254. package/dist/native/charts/src/engine/time.js.map +1 -0
  255. package/dist/native/charts/src/engine/viewport.cjs +2 -0
  256. package/dist/native/charts/src/engine/viewport.cjs.map +1 -0
  257. package/dist/native/charts/src/engine/viewport.js +12 -0
  258. package/dist/native/charts/src/engine/viewport.js.map +1 -0
  259. package/dist/native/components/Chart/ChartBase.cjs +2 -0
  260. package/dist/native/components/Chart/ChartBase.cjs.map +1 -0
  261. package/dist/native/components/Chart/ChartBase.d.cts +29 -0
  262. package/dist/native/components/Chart/ChartBase.d.ts +29 -0
  263. package/dist/native/components/Chart/ChartBase.js +287 -0
  264. package/dist/native/components/Chart/ChartBase.js.map +1 -0
  265. package/dist/native/components/Chart/charts.cjs +2 -0
  266. package/dist/native/components/Chart/charts.cjs.map +1 -0
  267. package/dist/native/components/Chart/charts.d.cts +19 -0
  268. package/dist/native/components/Chart/charts.d.ts +19 -0
  269. package/dist/native/components/Chart/charts.js +173 -0
  270. package/dist/native/components/Chart/charts.js.map +1 -0
  271. package/dist/native/components/Chart/index.cjs +1 -0
  272. package/dist/native/components/Chart/index.d.cts +2 -0
  273. package/dist/native/components/Chart/index.d.ts +2 -0
  274. package/dist/native/components/Chart/index.js +2 -0
  275. package/dist/native/components/Chart/measure.cjs +2 -0
  276. package/dist/native/components/Chart/measure.cjs.map +1 -0
  277. package/dist/native/components/Chart/measure.d.cts +5 -0
  278. package/dist/native/components/Chart/measure.d.ts +5 -0
  279. package/dist/native/components/Chart/measure.js +11 -0
  280. package/dist/native/components/Chart/measure.js.map +1 -0
  281. package/dist/native/components/Chart/scene.cjs +2 -0
  282. package/dist/native/components/Chart/scene.cjs.map +1 -0
  283. package/dist/native/components/Chart/scene.d.cts +41 -0
  284. package/dist/native/components/Chart/scene.d.ts +41 -0
  285. package/dist/native/components/Chart/scene.js +419 -0
  286. package/dist/native/components/Chart/scene.js.map +1 -0
  287. package/dist/native/components/Chart/theme.cjs +2 -0
  288. package/dist/native/components/Chart/theme.cjs.map +1 -0
  289. package/dist/native/components/Chart/theme.d.cts +10 -0
  290. package/dist/native/components/Chart/theme.d.ts +10 -0
  291. package/dist/native/components/Chart/theme.js +10 -0
  292. package/dist/native/components/Chart/theme.js.map +1 -0
  293. package/dist/native/components/Chart/types.d.cts +129 -0
  294. package/dist/native/components/Chart/types.d.ts +129 -0
  295. package/dist/native/index.cjs +1 -1
  296. package/dist/native/index.d.cts +1 -0
  297. package/dist/native/index.d.ts +1 -0
  298. package/dist/native/index.js +6 -4
  299. package/dist/native/manifest.d.cts +7 -0
  300. package/dist/native/manifest.d.ts +7 -0
  301. package/dist/native/source/components/Chart/ChartBase.tsx +545 -0
  302. package/dist/native/source/components/Chart/charts.tsx +291 -0
  303. package/dist/native/source/components/Chart/index.ts +8 -0
  304. package/dist/native/source/components/Chart/measure.ts +50 -0
  305. package/dist/native/source/components/Chart/scene.tsx +987 -0
  306. package/dist/native/source/components/Chart/theme.ts +16 -0
  307. package/dist/native/source/components/Chart/types.ts +194 -0
  308. package/dist/native/source/index.ts +1 -0
  309. package/dist/native/source/manifest.ts +14 -0
  310. package/dist/taro/charts.d.ts +144 -0
  311. package/dist/taro/index.d.ts +1 -0
  312. package/dist/taro/index.js +3064 -618
  313. package/dist/uni/BarChart.vue +75 -0
  314. package/dist/uni/BarChart.vue.d.ts +111 -0
  315. package/dist/uni/Chart.vue +68 -0
  316. package/dist/uni/Chart.vue.d.ts +100 -0
  317. package/dist/uni/LineChart.vue +75 -0
  318. package/dist/uni/LineChart.vue.d.ts +111 -0
  319. package/dist/uni/ProgressIndicator.vue.d.ts +1 -1
  320. package/dist/uni/QuadrantChart.vue +184 -0
  321. package/dist/uni/QuadrantChart.vue.d.ts +173 -0
  322. package/dist/uni/ScatterChart.vue +69 -0
  323. package/dist/uni/ScatterChart.vue.d.ts +100 -0
  324. package/dist/uni/chart-canvas.d.ts +68 -0
  325. package/dist/uni/chart-canvas.js +363 -0
  326. package/dist/uni/chart-types.d.ts +135 -0
  327. package/dist/uni/chart-types.js +84 -0
  328. package/dist/uni/charts-canvas.d.ts +1 -0
  329. package/dist/uni/charts-canvas.js +8 -0
  330. package/dist/uni/index.d.ts +6 -0
  331. package/dist/uni/index.js +6 -0
  332. package/dist/weapp/bar-chart/index.js +1 -0
  333. package/dist/weapp/bar-chart/index.json +1 -0
  334. package/dist/weapp/bar-chart/index.wxml +1 -0
  335. package/dist/weapp/bar-chart/index.wxss +1 -0
  336. package/dist/weapp/chart/index.js +1 -0
  337. package/dist/weapp/chart/index.json +1 -0
  338. package/dist/weapp/chart/index.wxml +1 -0
  339. package/dist/weapp/chart/index.wxss +1 -0
  340. package/dist/weapp/controls.js +4019 -266
  341. package/dist/weapp/line-chart/index.js +1 -0
  342. package/dist/weapp/line-chart/index.json +1 -0
  343. package/dist/weapp/line-chart/index.wxml +1 -0
  344. package/dist/weapp/line-chart/index.wxss +1 -0
  345. package/dist/weapp/quadrant-chart/index.js +1 -0
  346. package/dist/weapp/quadrant-chart/index.json +1 -0
  347. package/dist/weapp/quadrant-chart/index.wxml +1 -0
  348. package/dist/weapp/quadrant-chart/index.wxss +1 -0
  349. package/dist/weapp/scatter-chart/index.js +1 -0
  350. package/dist/weapp/scatter-chart/index.json +1 -0
  351. package/dist/weapp/scatter-chart/index.wxml +1 -0
  352. package/dist/weapp/scatter-chart/index.wxss +1 -0
  353. package/dist/weapp/types.d.ts +295 -0
  354. package/package.json +48 -2
@@ -0,0 +1,266 @@
1
+ var e=`
2
+ struct U {
3
+ xform: vec4f,
4
+ viewport: vec4f,
5
+ color: vec4f,
6
+ params: vec4f,
7
+ };
8
+ @group(0) @binding(0) var<uniform> u: U;
9
+
10
+ fn gap(p: vec2f) -> bool {
11
+ return abs(p.x) > 1e37 || abs(p.y) > 1e37;
12
+ }
13
+ fn toClip(p: vec2f) -> vec2f {
14
+ return vec2f(p.x * u.xform.x + u.xform.y, p.y * u.xform.z + u.xform.w);
15
+ }
16
+ fn toPx(p: vec2f) -> vec2f {
17
+ return (toClip(p) * 0.5 + 0.5) * u.viewport.xy;
18
+ }
19
+ fn pxToClip(p: vec2f) -> vec4f {
20
+ return vec4f(p / u.viewport.xy * 2.0 - 1.0, 0.0, 1.0);
21
+ }
22
+ fn corner(vi: u32) -> vec2f {
23
+ return vec2f(f32(vi & 1u), f32(vi >> 1u));
24
+ }
25
+ const HIDDEN = vec4f(2.0, 2.0, 2.0, 1.0);
26
+ `,t=`${e}
27
+ struct Out {
28
+ @builtin(position) pos: vec4f,
29
+ @location(0) local: vec2f,
30
+ @location(1) len: f32,
31
+ };
32
+ @vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) a: vec2f, @location(1) b: vec2f) -> Out {
33
+ var out: Out;
34
+ if (gap(a) || gap(b)) {
35
+ out.pos = HIDDEN;
36
+ return out;
37
+ }
38
+ let pa = toPx(a);
39
+ let pb = toPx(b);
40
+ let d = pb - pa;
41
+ let len = length(d);
42
+ var dir = vec2f(1.0, 0.0);
43
+ if (len > 1e-6) { dir = d / len; }
44
+ let nrm = vec2f(-dir.y, dir.x);
45
+ let hw = u.params.x + 1.0;
46
+ let c = corner(vi);
47
+ let along = mix(-hw, len + hw, c.x);
48
+ let across = mix(-hw, hw, c.y);
49
+ out.pos = pxToClip(pa + dir * along + nrm * across);
50
+ out.local = vec2f(along, across);
51
+ out.len = len;
52
+ return out;
53
+ }
54
+ @fragment fn fs(v: Out) -> @location(0) vec4f {
55
+ let x = clamp(v.local.x, 0.0, v.len);
56
+ let dist = length(vec2f(v.local.x - x, v.local.y));
57
+ let a = clamp(u.params.x - dist + 0.5, 0.0, 1.0) * u.color.a;
58
+ return vec4f(u.color.rgb * a, a);
59
+ }
60
+ `,n=`${e}
61
+ struct Out {
62
+ @builtin(position) pos: vec4f,
63
+ @location(0) t: f32,
64
+ };
65
+ @vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) a: vec2f, @location(1) b: vec2f) -> Out {
66
+ var out: Out;
67
+ if (gap(a) || gap(b)) {
68
+ out.pos = HIDDEN;
69
+ return out;
70
+ }
71
+ let c = corner(vi);
72
+ let p = select(a, b, c.y > 0.5);
73
+ let y = select(u.params.x, p.y, c.x > 0.5);
74
+ out.pos = vec4f(toClip(vec2f(p.x, y)), 0.0, 1.0);
75
+ out.t = c.x;
76
+ return out;
77
+ }
78
+ @fragment fn fs(v: Out) -> @location(0) vec4f {
79
+ let a = u.color.a * u.params.y * (0.3 + 0.7 * v.t);
80
+ return vec4f(u.color.rgb * a, a);
81
+ }
82
+ `,r=`${e}
83
+ struct Out {
84
+ @builtin(position) pos: vec4f,
85
+ @location(0) local: vec2f,
86
+ @location(1) @interpolate(flat) hs: vec2f,
87
+ };
88
+ @vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) inst: vec3f) -> Out {
89
+ var out: Out;
90
+ if (gap(inst.xy) || abs(inst.z) > 1e37) {
91
+ out.pos = HIDDEN;
92
+ return out;
93
+ }
94
+ let hw = max(abs(u.params.x * u.xform.x) * 0.5 * u.viewport.x, 0.5);
95
+ let p0 = toPx(inst.xy);
96
+ let y1 = toPx(vec2f(inst.x, inst.z)).y;
97
+ let lo = min(p0.y, y1);
98
+ let hi = max(p0.y, y1);
99
+ let hsz = vec2f(hw, (hi - lo) * 0.5);
100
+ let center = vec2f(p0.x, (lo + hi) * 0.5);
101
+ let ext = hsz + vec2f(1.0);
102
+ let c = corner(vi) * 2.0 - 1.0;
103
+ out.pos = pxToClip(center + c * ext);
104
+ out.local = c * ext;
105
+ out.hs = hsz;
106
+ return out;
107
+ }
108
+ @fragment fn fs(v: Out) -> @location(0) vec4f {
109
+ let r = min(u.params.y * u.viewport.z, min(v.hs.x, v.hs.y));
110
+ let q = abs(v.local) - v.hs + vec2f(r);
111
+ let d = length(max(q, vec2f(0.0))) + min(max(q.x, q.y), 0.0) - r;
112
+ let a = clamp(0.5 - d, 0.0, 1.0) * u.color.a;
113
+ return vec4f(u.color.rgb * a, a);
114
+ }
115
+ `,i=`${e}
116
+ struct Out {
117
+ @builtin(position) pos: vec4f,
118
+ @location(0) local: vec2f,
119
+ @location(1) @interpolate(flat) r: f32,
120
+ @location(2) @interpolate(flat) color: vec4f,
121
+ };
122
+ @vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) p: vec2f, @location(1) size: f32, @location(2) color: vec4f) -> Out {
123
+ var out: Out;
124
+ if (gap(p) || !(size > 0.0)) {
125
+ out.pos = HIDDEN;
126
+ return out;
127
+ }
128
+ let r = size * 0.5 * u.viewport.z;
129
+ let ext = r + 1.0;
130
+ let c = corner(vi) * 2.0 - 1.0;
131
+ out.pos = pxToClip(toPx(p) + c * ext);
132
+ out.local = c * ext;
133
+ out.r = r;
134
+ out.color = color;
135
+ return out;
136
+ }
137
+ @fragment fn fs(v: Out) -> @location(0) vec4f {
138
+ let d = length(v.local) - v.r;
139
+ let cover = clamp(0.5 - d, 0.0, 1.0);
140
+ let inner = clamp(0.5 - (d + u.params.y * u.viewport.z), 0.0, 1.0);
141
+ let a = v.color.a * (inner * u.params.x + (cover - inner));
142
+ return vec4f(v.color.rgb * a, a);
143
+ }
144
+ `,a=`#version 300 es
145
+ precision highp float;
146
+ uniform vec4 u_xform;
147
+ uniform vec4 u_viewport;
148
+ uniform vec4 u_color;
149
+ uniform vec4 u_params;
150
+ `,o=`${a}
151
+ bool gap(vec2 p) { return abs(p.x) > 1e37 || abs(p.y) > 1e37; }
152
+ vec2 toClip(vec2 p) { return vec2(p.x * u_xform.x + u_xform.y, p.y * u_xform.z + u_xform.w); }
153
+ vec2 toPx(vec2 p) { return (toClip(p) * 0.5 + 0.5) * u_viewport.xy; }
154
+ vec4 pxToClip(vec2 p) { return vec4(p / u_viewport.xy * 2.0 - 1.0, 0.0, 1.0); }
155
+ vec2 corner() { return vec2(float(gl_VertexID & 1), float(gl_VertexID >> 1)); }
156
+ const vec4 HIDDEN = vec4(2.0, 2.0, 2.0, 1.0);
157
+ `,s={vertex:`${o}
158
+ in vec2 a_a;
159
+ in vec2 a_b;
160
+ out vec2 v_local;
161
+ out float v_len;
162
+ void main() {
163
+ v_local = vec2(0.0);
164
+ v_len = 0.0;
165
+ if (gap(a_a) || gap(a_b)) { gl_Position = HIDDEN; return; }
166
+ vec2 pa = toPx(a_a);
167
+ vec2 pb = toPx(a_b);
168
+ vec2 d = pb - pa;
169
+ float len = length(d);
170
+ vec2 dir = len > 1e-6 ? d / len : vec2(1.0, 0.0);
171
+ vec2 nrm = vec2(-dir.y, dir.x);
172
+ float hw = u_params.x + 1.0;
173
+ vec2 c = corner();
174
+ float along = mix(-hw, len + hw, c.x);
175
+ float across = mix(-hw, hw, c.y);
176
+ gl_Position = pxToClip(pa + dir * along + nrm * across);
177
+ v_local = vec2(along, across);
178
+ v_len = len;
179
+ }`,fragment:`${a}
180
+ in vec2 v_local;
181
+ in float v_len;
182
+ out vec4 outColor;
183
+ void main() {
184
+ float x = clamp(v_local.x, 0.0, v_len);
185
+ float dist = length(vec2(v_local.x - x, v_local.y));
186
+ float a = clamp(u_params.x - dist + 0.5, 0.0, 1.0) * u_color.a;
187
+ outColor = vec4(u_color.rgb * a, a);
188
+ }`},c={vertex:`${o}
189
+ in vec2 a_a;
190
+ in vec2 a_b;
191
+ out float v_t;
192
+ void main() {
193
+ v_t = 0.0;
194
+ if (gap(a_a) || gap(a_b)) { gl_Position = HIDDEN; return; }
195
+ vec2 c = corner();
196
+ vec2 p = c.y > 0.5 ? a_b : a_a;
197
+ float y = c.x > 0.5 ? p.y : u_params.x;
198
+ gl_Position = vec4(toClip(vec2(p.x, y)), 0.0, 1.0);
199
+ v_t = c.x;
200
+ }`,fragment:`${a}
201
+ in float v_t;
202
+ out vec4 outColor;
203
+ void main() {
204
+ float a = u_color.a * u_params.y * (0.3 + 0.7 * v_t);
205
+ outColor = vec4(u_color.rgb * a, a);
206
+ }`},l={vertex:`${o}
207
+ in vec3 a_inst;
208
+ out vec2 v_local;
209
+ flat out vec2 v_half;
210
+ void main() {
211
+ v_local = vec2(0.0);
212
+ v_half = vec2(0.0);
213
+ if (gap(a_inst.xy) || abs(a_inst.z) > 1e37) { gl_Position = HIDDEN; return; }
214
+ float hw = max(abs(u_params.x * u_xform.x) * 0.5 * u_viewport.x, 0.5);
215
+ vec2 p0 = toPx(a_inst.xy);
216
+ float y1 = toPx(vec2(a_inst.x, a_inst.z)).y;
217
+ float lo = min(p0.y, y1);
218
+ float hi = max(p0.y, y1);
219
+ vec2 hsz = vec2(hw, (hi - lo) * 0.5);
220
+ vec2 center = vec2(p0.x, (lo + hi) * 0.5);
221
+ vec2 ext = hsz + vec2(1.0);
222
+ vec2 c = corner() * 2.0 - 1.0;
223
+ gl_Position = pxToClip(center + c * ext);
224
+ v_local = c * ext;
225
+ v_half = hsz;
226
+ }`,fragment:`${a}
227
+ in vec2 v_local;
228
+ flat in vec2 v_half;
229
+ out vec4 outColor;
230
+ void main() {
231
+ float r = min(u_params.y * u_viewport.z, min(v_half.x, v_half.y));
232
+ vec2 q = abs(v_local) - v_half + vec2(r);
233
+ float d = length(max(q, vec2(0.0))) + min(max(q.x, q.y), 0.0) - r;
234
+ float a = clamp(0.5 - d, 0.0, 1.0) * u_color.a;
235
+ outColor = vec4(u_color.rgb * a, a);
236
+ }`},u={vertex:`${o}
237
+ in vec2 a_pos;
238
+ in float a_size;
239
+ in vec4 a_color;
240
+ out vec2 v_local;
241
+ flat out float v_r;
242
+ flat out vec4 v_color;
243
+ void main() {
244
+ v_local = vec2(0.0);
245
+ v_r = 0.0;
246
+ v_color = a_color;
247
+ if (gap(a_pos) || !(a_size > 0.0)) { gl_Position = HIDDEN; return; }
248
+ float r = a_size * 0.5 * u_viewport.z;
249
+ float ext = r + 1.0;
250
+ vec2 c = corner() * 2.0 - 1.0;
251
+ gl_Position = pxToClip(toPx(a_pos) + c * ext);
252
+ v_local = c * ext;
253
+ v_r = r;
254
+ }`,fragment:`${a}
255
+ in vec2 v_local;
256
+ flat in float v_r;
257
+ flat in vec4 v_color;
258
+ out vec4 outColor;
259
+ void main() {
260
+ float d = length(v_local) - v_r;
261
+ float cover = clamp(0.5 - d, 0.0, 1.0);
262
+ float inner = clamp(0.5 - (d + u_params.y * u_viewport.z), 0.0, 1.0);
263
+ float a = v_color.a * (inner * u_params.x + (cover - inner));
264
+ outColor = vec4(v_color.rgb * a, a);
265
+ }`};exports.GLSL_AREA=c,exports.GLSL_BAR=l,exports.GLSL_LINE=s,exports.GLSL_SCATTER=u,exports.WGSL_AREA=n,exports.WGSL_BAR=r,exports.WGSL_LINE=t,exports.WGSL_SCATTER=i;
266
+ //# sourceMappingURL=shaders.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shaders.cjs","names":["WGSL_COMMON","WGSL_LINE","WGSL_AREA","WGSL_BAR","WGSL_SCATTER","GLSL_HEADER","GLSL_VERTEX_COMMON","GLSL_LINE","GLSL_AREA","GLSL_BAR","GLSL_SCATTER"],"sources":["../../../../../charts/src/engine/renderers/shaders.ts"],"sourcesContent":["// WGSL (WebGPU) and GLSL ES 3.0 (WebGL2) programs. Every primitive is an\n// instanced 4-vertex triangle strip; anti-aliasing comes from signed\n// distance functions in pixel space (no MSAA needed).\n//\n// Uniforms (both backends):\n// xform = (xScale, xOffset, yScale, yOffset) relative data -> clip\n// viewport = (width px, height px, dpr, 0)\n// color = straight RGBA of the series\n// params = line: (half width px) | area: (baseline, opacity)\n// bar: (half width in x units, radius px) | scatter: (opacity, stroke px)\n// Output colors are premultiplied.\n\nconst WGSL_COMMON = /* wgsl */ `\nstruct U {\n xform: vec4f,\n viewport: vec4f,\n color: vec4f,\n params: vec4f,\n};\n@group(0) @binding(0) var<uniform> u: U;\n\nfn gap(p: vec2f) -> bool {\n return abs(p.x) > 1e37 || abs(p.y) > 1e37;\n}\nfn toClip(p: vec2f) -> vec2f {\n return vec2f(p.x * u.xform.x + u.xform.y, p.y * u.xform.z + u.xform.w);\n}\nfn toPx(p: vec2f) -> vec2f {\n return (toClip(p) * 0.5 + 0.5) * u.viewport.xy;\n}\nfn pxToClip(p: vec2f) -> vec4f {\n return vec4f(p / u.viewport.xy * 2.0 - 1.0, 0.0, 1.0);\n}\nfn corner(vi: u32) -> vec2f {\n return vec2f(f32(vi & 1u), f32(vi >> 1u));\n}\nconst HIDDEN = vec4f(2.0, 2.0, 2.0, 1.0);\n`;\n\nexport const WGSL_LINE = /* wgsl */ `${WGSL_COMMON}\nstruct Out {\n @builtin(position) pos: vec4f,\n @location(0) local: vec2f,\n @location(1) len: f32,\n};\n@vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) a: vec2f, @location(1) b: vec2f) -> Out {\n var out: Out;\n if (gap(a) || gap(b)) {\n out.pos = HIDDEN;\n return out;\n }\n let pa = toPx(a);\n let pb = toPx(b);\n let d = pb - pa;\n let len = length(d);\n var dir = vec2f(1.0, 0.0);\n if (len > 1e-6) { dir = d / len; }\n let nrm = vec2f(-dir.y, dir.x);\n let hw = u.params.x + 1.0;\n let c = corner(vi);\n let along = mix(-hw, len + hw, c.x);\n let across = mix(-hw, hw, c.y);\n out.pos = pxToClip(pa + dir * along + nrm * across);\n out.local = vec2f(along, across);\n out.len = len;\n return out;\n}\n@fragment fn fs(v: Out) -> @location(0) vec4f {\n let x = clamp(v.local.x, 0.0, v.len);\n let dist = length(vec2f(v.local.x - x, v.local.y));\n let a = clamp(u.params.x - dist + 0.5, 0.0, 1.0) * u.color.a;\n return vec4f(u.color.rgb * a, a);\n}\n`;\n\nexport const WGSL_AREA = /* wgsl */ `${WGSL_COMMON}\nstruct Out {\n @builtin(position) pos: vec4f,\n @location(0) t: f32,\n};\n@vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) a: vec2f, @location(1) b: vec2f) -> Out {\n var out: Out;\n if (gap(a) || gap(b)) {\n out.pos = HIDDEN;\n return out;\n }\n let c = corner(vi);\n let p = select(a, b, c.y > 0.5);\n let y = select(u.params.x, p.y, c.x > 0.5);\n out.pos = vec4f(toClip(vec2f(p.x, y)), 0.0, 1.0);\n out.t = c.x;\n return out;\n}\n@fragment fn fs(v: Out) -> @location(0) vec4f {\n let a = u.color.a * u.params.y * (0.3 + 0.7 * v.t);\n return vec4f(u.color.rgb * a, a);\n}\n`;\n\nexport const WGSL_BAR = /* wgsl */ `${WGSL_COMMON}\nstruct Out {\n @builtin(position) pos: vec4f,\n @location(0) local: vec2f,\n @location(1) @interpolate(flat) hs: vec2f,\n};\n@vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) inst: vec3f) -> Out {\n var out: Out;\n if (gap(inst.xy) || abs(inst.z) > 1e37) {\n out.pos = HIDDEN;\n return out;\n }\n let hw = max(abs(u.params.x * u.xform.x) * 0.5 * u.viewport.x, 0.5);\n let p0 = toPx(inst.xy);\n let y1 = toPx(vec2f(inst.x, inst.z)).y;\n let lo = min(p0.y, y1);\n let hi = max(p0.y, y1);\n let hsz = vec2f(hw, (hi - lo) * 0.5);\n let center = vec2f(p0.x, (lo + hi) * 0.5);\n let ext = hsz + vec2f(1.0);\n let c = corner(vi) * 2.0 - 1.0;\n out.pos = pxToClip(center + c * ext);\n out.local = c * ext;\n out.hs = hsz;\n return out;\n}\n@fragment fn fs(v: Out) -> @location(0) vec4f {\n let r = min(u.params.y * u.viewport.z, min(v.hs.x, v.hs.y));\n let q = abs(v.local) - v.hs + vec2f(r);\n let d = length(max(q, vec2f(0.0))) + min(max(q.x, q.y), 0.0) - r;\n let a = clamp(0.5 - d, 0.0, 1.0) * u.color.a;\n return vec4f(u.color.rgb * a, a);\n}\n`;\n\nexport const WGSL_SCATTER = /* wgsl */ `${WGSL_COMMON}\nstruct Out {\n @builtin(position) pos: vec4f,\n @location(0) local: vec2f,\n @location(1) @interpolate(flat) r: f32,\n @location(2) @interpolate(flat) color: vec4f,\n};\n@vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) p: vec2f, @location(1) size: f32, @location(2) color: vec4f) -> Out {\n var out: Out;\n if (gap(p) || !(size > 0.0)) {\n out.pos = HIDDEN;\n return out;\n }\n let r = size * 0.5 * u.viewport.z;\n let ext = r + 1.0;\n let c = corner(vi) * 2.0 - 1.0;\n out.pos = pxToClip(toPx(p) + c * ext);\n out.local = c * ext;\n out.r = r;\n out.color = color;\n return out;\n}\n@fragment fn fs(v: Out) -> @location(0) vec4f {\n let d = length(v.local) - v.r;\n let cover = clamp(0.5 - d, 0.0, 1.0);\n let inner = clamp(0.5 - (d + u.params.y * u.viewport.z), 0.0, 1.0);\n let a = v.color.a * (inner * u.params.x + (cover - inner));\n return vec4f(v.color.rgb * a, a);\n}\n`;\n\nconst GLSL_HEADER = /* glsl */ `#version 300 es\nprecision highp float;\nuniform vec4 u_xform;\nuniform vec4 u_viewport;\nuniform vec4 u_color;\nuniform vec4 u_params;\n`;\n\nconst GLSL_VERTEX_COMMON = /* glsl */ `${GLSL_HEADER}\nbool gap(vec2 p) { return abs(p.x) > 1e37 || abs(p.y) > 1e37; }\nvec2 toClip(vec2 p) { return vec2(p.x * u_xform.x + u_xform.y, p.y * u_xform.z + u_xform.w); }\nvec2 toPx(vec2 p) { return (toClip(p) * 0.5 + 0.5) * u_viewport.xy; }\nvec4 pxToClip(vec2 p) { return vec4(p / u_viewport.xy * 2.0 - 1.0, 0.0, 1.0); }\nvec2 corner() { return vec2(float(gl_VertexID & 1), float(gl_VertexID >> 1)); }\nconst vec4 HIDDEN = vec4(2.0, 2.0, 2.0, 1.0);\n`;\n\nexport const GLSL_LINE = {\n vertex: /* glsl */ `${GLSL_VERTEX_COMMON}\nin vec2 a_a;\nin vec2 a_b;\nout vec2 v_local;\nout float v_len;\nvoid main() {\n v_local = vec2(0.0);\n v_len = 0.0;\n if (gap(a_a) || gap(a_b)) { gl_Position = HIDDEN; return; }\n vec2 pa = toPx(a_a);\n vec2 pb = toPx(a_b);\n vec2 d = pb - pa;\n float len = length(d);\n vec2 dir = len > 1e-6 ? d / len : vec2(1.0, 0.0);\n vec2 nrm = vec2(-dir.y, dir.x);\n float hw = u_params.x + 1.0;\n vec2 c = corner();\n float along = mix(-hw, len + hw, c.x);\n float across = mix(-hw, hw, c.y);\n gl_Position = pxToClip(pa + dir * along + nrm * across);\n v_local = vec2(along, across);\n v_len = len;\n}`,\n fragment: /* glsl */ `${GLSL_HEADER}\nin vec2 v_local;\nin float v_len;\nout vec4 outColor;\nvoid main() {\n float x = clamp(v_local.x, 0.0, v_len);\n float dist = length(vec2(v_local.x - x, v_local.y));\n float a = clamp(u_params.x - dist + 0.5, 0.0, 1.0) * u_color.a;\n outColor = vec4(u_color.rgb * a, a);\n}`,\n};\n\nexport const GLSL_AREA = {\n vertex: /* glsl */ `${GLSL_VERTEX_COMMON}\nin vec2 a_a;\nin vec2 a_b;\nout float v_t;\nvoid main() {\n v_t = 0.0;\n if (gap(a_a) || gap(a_b)) { gl_Position = HIDDEN; return; }\n vec2 c = corner();\n vec2 p = c.y > 0.5 ? a_b : a_a;\n float y = c.x > 0.5 ? p.y : u_params.x;\n gl_Position = vec4(toClip(vec2(p.x, y)), 0.0, 1.0);\n v_t = c.x;\n}`,\n fragment: /* glsl */ `${GLSL_HEADER}\nin float v_t;\nout vec4 outColor;\nvoid main() {\n float a = u_color.a * u_params.y * (0.3 + 0.7 * v_t);\n outColor = vec4(u_color.rgb * a, a);\n}`,\n};\n\nexport const GLSL_BAR = {\n vertex: /* glsl */ `${GLSL_VERTEX_COMMON}\nin vec3 a_inst;\nout vec2 v_local;\nflat out vec2 v_half;\nvoid main() {\n v_local = vec2(0.0);\n v_half = vec2(0.0);\n if (gap(a_inst.xy) || abs(a_inst.z) > 1e37) { gl_Position = HIDDEN; return; }\n float hw = max(abs(u_params.x * u_xform.x) * 0.5 * u_viewport.x, 0.5);\n vec2 p0 = toPx(a_inst.xy);\n float y1 = toPx(vec2(a_inst.x, a_inst.z)).y;\n float lo = min(p0.y, y1);\n float hi = max(p0.y, y1);\n vec2 hsz = vec2(hw, (hi - lo) * 0.5);\n vec2 center = vec2(p0.x, (lo + hi) * 0.5);\n vec2 ext = hsz + vec2(1.0);\n vec2 c = corner() * 2.0 - 1.0;\n gl_Position = pxToClip(center + c * ext);\n v_local = c * ext;\n v_half = hsz;\n}`,\n fragment: /* glsl */ `${GLSL_HEADER}\nin vec2 v_local;\nflat in vec2 v_half;\nout vec4 outColor;\nvoid main() {\n float r = min(u_params.y * u_viewport.z, min(v_half.x, v_half.y));\n vec2 q = abs(v_local) - v_half + vec2(r);\n float d = length(max(q, vec2(0.0))) + min(max(q.x, q.y), 0.0) - r;\n float a = clamp(0.5 - d, 0.0, 1.0) * u_color.a;\n outColor = vec4(u_color.rgb * a, a);\n}`,\n};\n\nexport const GLSL_SCATTER = {\n vertex: /* glsl */ `${GLSL_VERTEX_COMMON}\nin vec2 a_pos;\nin float a_size;\nin vec4 a_color;\nout vec2 v_local;\nflat out float v_r;\nflat out vec4 v_color;\nvoid main() {\n v_local = vec2(0.0);\n v_r = 0.0;\n v_color = a_color;\n if (gap(a_pos) || !(a_size > 0.0)) { gl_Position = HIDDEN; return; }\n float r = a_size * 0.5 * u_viewport.z;\n float ext = r + 1.0;\n vec2 c = corner() * 2.0 - 1.0;\n gl_Position = pxToClip(toPx(a_pos) + c * ext);\n v_local = c * ext;\n v_r = r;\n}`,\n fragment: /* glsl */ `${GLSL_HEADER}\nin vec2 v_local;\nflat in float v_r;\nflat in vec4 v_color;\nout vec4 outColor;\nvoid main() {\n float d = length(v_local) - v_r;\n float cover = clamp(0.5 - d, 0.0, 1.0);\n float inner = clamp(0.5 - (d + u_params.y * u_viewport.z), 0.0, 1.0);\n float a = v_color.a * (inner * u_params.x + (cover - inner));\n outColor = vec4(v_color.rgb * a, a);\n}`,\n};\n"],"mappings":"AAYA,IAAMA,EAAyB;;;;;;;;;;;;;;;;;;;;;;;;;EA2BlBC,EAAuB,GAAGD,EAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoCtCE,EAAuB,GAAGF,EAAY;;;;;;;;;;;;;;;;;;;;;;EAwBtCG,EAAsB,GAAGH,EAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmCrCI,EAA0B,GAAGJ,EAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BhDK,EAAyB;;;;;;EAQzBC,EAAgC,GAAGD,EAAY;;;;;;;EASxCE,EAAY,CACvB,OAAmB,GAAGD,EAAmB;;;;;;;;;;;;;;;;;;;;;;GAuBzC,SAAqB,GAAGD,EAAY;;;;;;;;;EAUtC,EAEaG,EAAY,CACvB,OAAmB,GAAGF,EAAmB;;;;;;;;;;;;GAazC,SAAqB,GAAGD,EAAY;;;;;;EAOtC,EAEaI,EAAW,CACtB,OAAmB,GAAGH,EAAmB;;;;;;;;;;;;;;;;;;;;GAqBzC,SAAqB,GAAGD,EAAY;;;;;;;;;;EAWtC,EAEaK,EAAe,CAC1B,OAAmB,GAAGJ,EAAmB;;;;;;;;;;;;;;;;;;GAmBzC,SAAqB,GAAGD,EAAY;;;;;;;;;;;EAYtC"}
@@ -0,0 +1,20 @@
1
+ export declare const WGSL_LINE = "\nstruct U {\n xform: vec4f,\n viewport: vec4f,\n color: vec4f,\n params: vec4f,\n};\n@group(0) @binding(0) var<uniform> u: U;\n\nfn gap(p: vec2f) -> bool {\n return abs(p.x) > 1e37 || abs(p.y) > 1e37;\n}\nfn toClip(p: vec2f) -> vec2f {\n return vec2f(p.x * u.xform.x + u.xform.y, p.y * u.xform.z + u.xform.w);\n}\nfn toPx(p: vec2f) -> vec2f {\n return (toClip(p) * 0.5 + 0.5) * u.viewport.xy;\n}\nfn pxToClip(p: vec2f) -> vec4f {\n return vec4f(p / u.viewport.xy * 2.0 - 1.0, 0.0, 1.0);\n}\nfn corner(vi: u32) -> vec2f {\n return vec2f(f32(vi & 1u), f32(vi >> 1u));\n}\nconst HIDDEN = vec4f(2.0, 2.0, 2.0, 1.0);\n\nstruct Out {\n @builtin(position) pos: vec4f,\n @location(0) local: vec2f,\n @location(1) len: f32,\n};\n@vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) a: vec2f, @location(1) b: vec2f) -> Out {\n var out: Out;\n if (gap(a) || gap(b)) {\n out.pos = HIDDEN;\n return out;\n }\n let pa = toPx(a);\n let pb = toPx(b);\n let d = pb - pa;\n let len = length(d);\n var dir = vec2f(1.0, 0.0);\n if (len > 1e-6) { dir = d / len; }\n let nrm = vec2f(-dir.y, dir.x);\n let hw = u.params.x + 1.0;\n let c = corner(vi);\n let along = mix(-hw, len + hw, c.x);\n let across = mix(-hw, hw, c.y);\n out.pos = pxToClip(pa + dir * along + nrm * across);\n out.local = vec2f(along, across);\n out.len = len;\n return out;\n}\n@fragment fn fs(v: Out) -> @location(0) vec4f {\n let x = clamp(v.local.x, 0.0, v.len);\n let dist = length(vec2f(v.local.x - x, v.local.y));\n let a = clamp(u.params.x - dist + 0.5, 0.0, 1.0) * u.color.a;\n return vec4f(u.color.rgb * a, a);\n}\n";
2
+ export declare const WGSL_AREA = "\nstruct U {\n xform: vec4f,\n viewport: vec4f,\n color: vec4f,\n params: vec4f,\n};\n@group(0) @binding(0) var<uniform> u: U;\n\nfn gap(p: vec2f) -> bool {\n return abs(p.x) > 1e37 || abs(p.y) > 1e37;\n}\nfn toClip(p: vec2f) -> vec2f {\n return vec2f(p.x * u.xform.x + u.xform.y, p.y * u.xform.z + u.xform.w);\n}\nfn toPx(p: vec2f) -> vec2f {\n return (toClip(p) * 0.5 + 0.5) * u.viewport.xy;\n}\nfn pxToClip(p: vec2f) -> vec4f {\n return vec4f(p / u.viewport.xy * 2.0 - 1.0, 0.0, 1.0);\n}\nfn corner(vi: u32) -> vec2f {\n return vec2f(f32(vi & 1u), f32(vi >> 1u));\n}\nconst HIDDEN = vec4f(2.0, 2.0, 2.0, 1.0);\n\nstruct Out {\n @builtin(position) pos: vec4f,\n @location(0) t: f32,\n};\n@vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) a: vec2f, @location(1) b: vec2f) -> Out {\n var out: Out;\n if (gap(a) || gap(b)) {\n out.pos = HIDDEN;\n return out;\n }\n let c = corner(vi);\n let p = select(a, b, c.y > 0.5);\n let y = select(u.params.x, p.y, c.x > 0.5);\n out.pos = vec4f(toClip(vec2f(p.x, y)), 0.0, 1.0);\n out.t = c.x;\n return out;\n}\n@fragment fn fs(v: Out) -> @location(0) vec4f {\n let a = u.color.a * u.params.y * (0.3 + 0.7 * v.t);\n return vec4f(u.color.rgb * a, a);\n}\n";
3
+ export declare const WGSL_BAR = "\nstruct U {\n xform: vec4f,\n viewport: vec4f,\n color: vec4f,\n params: vec4f,\n};\n@group(0) @binding(0) var<uniform> u: U;\n\nfn gap(p: vec2f) -> bool {\n return abs(p.x) > 1e37 || abs(p.y) > 1e37;\n}\nfn toClip(p: vec2f) -> vec2f {\n return vec2f(p.x * u.xform.x + u.xform.y, p.y * u.xform.z + u.xform.w);\n}\nfn toPx(p: vec2f) -> vec2f {\n return (toClip(p) * 0.5 + 0.5) * u.viewport.xy;\n}\nfn pxToClip(p: vec2f) -> vec4f {\n return vec4f(p / u.viewport.xy * 2.0 - 1.0, 0.0, 1.0);\n}\nfn corner(vi: u32) -> vec2f {\n return vec2f(f32(vi & 1u), f32(vi >> 1u));\n}\nconst HIDDEN = vec4f(2.0, 2.0, 2.0, 1.0);\n\nstruct Out {\n @builtin(position) pos: vec4f,\n @location(0) local: vec2f,\n @location(1) @interpolate(flat) hs: vec2f,\n};\n@vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) inst: vec3f) -> Out {\n var out: Out;\n if (gap(inst.xy) || abs(inst.z) > 1e37) {\n out.pos = HIDDEN;\n return out;\n }\n let hw = max(abs(u.params.x * u.xform.x) * 0.5 * u.viewport.x, 0.5);\n let p0 = toPx(inst.xy);\n let y1 = toPx(vec2f(inst.x, inst.z)).y;\n let lo = min(p0.y, y1);\n let hi = max(p0.y, y1);\n let hsz = vec2f(hw, (hi - lo) * 0.5);\n let center = vec2f(p0.x, (lo + hi) * 0.5);\n let ext = hsz + vec2f(1.0);\n let c = corner(vi) * 2.0 - 1.0;\n out.pos = pxToClip(center + c * ext);\n out.local = c * ext;\n out.hs = hsz;\n return out;\n}\n@fragment fn fs(v: Out) -> @location(0) vec4f {\n let r = min(u.params.y * u.viewport.z, min(v.hs.x, v.hs.y));\n let q = abs(v.local) - v.hs + vec2f(r);\n let d = length(max(q, vec2f(0.0))) + min(max(q.x, q.y), 0.0) - r;\n let a = clamp(0.5 - d, 0.0, 1.0) * u.color.a;\n return vec4f(u.color.rgb * a, a);\n}\n";
4
+ export declare const WGSL_SCATTER = "\nstruct U {\n xform: vec4f,\n viewport: vec4f,\n color: vec4f,\n params: vec4f,\n};\n@group(0) @binding(0) var<uniform> u: U;\n\nfn gap(p: vec2f) -> bool {\n return abs(p.x) > 1e37 || abs(p.y) > 1e37;\n}\nfn toClip(p: vec2f) -> vec2f {\n return vec2f(p.x * u.xform.x + u.xform.y, p.y * u.xform.z + u.xform.w);\n}\nfn toPx(p: vec2f) -> vec2f {\n return (toClip(p) * 0.5 + 0.5) * u.viewport.xy;\n}\nfn pxToClip(p: vec2f) -> vec4f {\n return vec4f(p / u.viewport.xy * 2.0 - 1.0, 0.0, 1.0);\n}\nfn corner(vi: u32) -> vec2f {\n return vec2f(f32(vi & 1u), f32(vi >> 1u));\n}\nconst HIDDEN = vec4f(2.0, 2.0, 2.0, 1.0);\n\nstruct Out {\n @builtin(position) pos: vec4f,\n @location(0) local: vec2f,\n @location(1) @interpolate(flat) r: f32,\n @location(2) @interpolate(flat) color: vec4f,\n};\n@vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) p: vec2f, @location(1) size: f32, @location(2) color: vec4f) -> Out {\n var out: Out;\n if (gap(p) || !(size > 0.0)) {\n out.pos = HIDDEN;\n return out;\n }\n let r = size * 0.5 * u.viewport.z;\n let ext = r + 1.0;\n let c = corner(vi) * 2.0 - 1.0;\n out.pos = pxToClip(toPx(p) + c * ext);\n out.local = c * ext;\n out.r = r;\n out.color = color;\n return out;\n}\n@fragment fn fs(v: Out) -> @location(0) vec4f {\n let d = length(v.local) - v.r;\n let cover = clamp(0.5 - d, 0.0, 1.0);\n let inner = clamp(0.5 - (d + u.params.y * u.viewport.z), 0.0, 1.0);\n let a = v.color.a * (inner * u.params.x + (cover - inner));\n return vec4f(v.color.rgb * a, a);\n}\n";
5
+ export declare const GLSL_LINE: {
6
+ vertex: string;
7
+ fragment: string;
8
+ };
9
+ export declare const GLSL_AREA: {
10
+ vertex: string;
11
+ fragment: string;
12
+ };
13
+ export declare const GLSL_BAR: {
14
+ vertex: string;
15
+ fragment: string;
16
+ };
17
+ export declare const GLSL_SCATTER: {
18
+ vertex: string;
19
+ fragment: string;
20
+ };
@@ -0,0 +1,20 @@
1
+ export declare const WGSL_LINE = "\nstruct U {\n xform: vec4f,\n viewport: vec4f,\n color: vec4f,\n params: vec4f,\n};\n@group(0) @binding(0) var<uniform> u: U;\n\nfn gap(p: vec2f) -> bool {\n return abs(p.x) > 1e37 || abs(p.y) > 1e37;\n}\nfn toClip(p: vec2f) -> vec2f {\n return vec2f(p.x * u.xform.x + u.xform.y, p.y * u.xform.z + u.xform.w);\n}\nfn toPx(p: vec2f) -> vec2f {\n return (toClip(p) * 0.5 + 0.5) * u.viewport.xy;\n}\nfn pxToClip(p: vec2f) -> vec4f {\n return vec4f(p / u.viewport.xy * 2.0 - 1.0, 0.0, 1.0);\n}\nfn corner(vi: u32) -> vec2f {\n return vec2f(f32(vi & 1u), f32(vi >> 1u));\n}\nconst HIDDEN = vec4f(2.0, 2.0, 2.0, 1.0);\n\nstruct Out {\n @builtin(position) pos: vec4f,\n @location(0) local: vec2f,\n @location(1) len: f32,\n};\n@vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) a: vec2f, @location(1) b: vec2f) -> Out {\n var out: Out;\n if (gap(a) || gap(b)) {\n out.pos = HIDDEN;\n return out;\n }\n let pa = toPx(a);\n let pb = toPx(b);\n let d = pb - pa;\n let len = length(d);\n var dir = vec2f(1.0, 0.0);\n if (len > 1e-6) { dir = d / len; }\n let nrm = vec2f(-dir.y, dir.x);\n let hw = u.params.x + 1.0;\n let c = corner(vi);\n let along = mix(-hw, len + hw, c.x);\n let across = mix(-hw, hw, c.y);\n out.pos = pxToClip(pa + dir * along + nrm * across);\n out.local = vec2f(along, across);\n out.len = len;\n return out;\n}\n@fragment fn fs(v: Out) -> @location(0) vec4f {\n let x = clamp(v.local.x, 0.0, v.len);\n let dist = length(vec2f(v.local.x - x, v.local.y));\n let a = clamp(u.params.x - dist + 0.5, 0.0, 1.0) * u.color.a;\n return vec4f(u.color.rgb * a, a);\n}\n";
2
+ export declare const WGSL_AREA = "\nstruct U {\n xform: vec4f,\n viewport: vec4f,\n color: vec4f,\n params: vec4f,\n};\n@group(0) @binding(0) var<uniform> u: U;\n\nfn gap(p: vec2f) -> bool {\n return abs(p.x) > 1e37 || abs(p.y) > 1e37;\n}\nfn toClip(p: vec2f) -> vec2f {\n return vec2f(p.x * u.xform.x + u.xform.y, p.y * u.xform.z + u.xform.w);\n}\nfn toPx(p: vec2f) -> vec2f {\n return (toClip(p) * 0.5 + 0.5) * u.viewport.xy;\n}\nfn pxToClip(p: vec2f) -> vec4f {\n return vec4f(p / u.viewport.xy * 2.0 - 1.0, 0.0, 1.0);\n}\nfn corner(vi: u32) -> vec2f {\n return vec2f(f32(vi & 1u), f32(vi >> 1u));\n}\nconst HIDDEN = vec4f(2.0, 2.0, 2.0, 1.0);\n\nstruct Out {\n @builtin(position) pos: vec4f,\n @location(0) t: f32,\n};\n@vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) a: vec2f, @location(1) b: vec2f) -> Out {\n var out: Out;\n if (gap(a) || gap(b)) {\n out.pos = HIDDEN;\n return out;\n }\n let c = corner(vi);\n let p = select(a, b, c.y > 0.5);\n let y = select(u.params.x, p.y, c.x > 0.5);\n out.pos = vec4f(toClip(vec2f(p.x, y)), 0.0, 1.0);\n out.t = c.x;\n return out;\n}\n@fragment fn fs(v: Out) -> @location(0) vec4f {\n let a = u.color.a * u.params.y * (0.3 + 0.7 * v.t);\n return vec4f(u.color.rgb * a, a);\n}\n";
3
+ export declare const WGSL_BAR = "\nstruct U {\n xform: vec4f,\n viewport: vec4f,\n color: vec4f,\n params: vec4f,\n};\n@group(0) @binding(0) var<uniform> u: U;\n\nfn gap(p: vec2f) -> bool {\n return abs(p.x) > 1e37 || abs(p.y) > 1e37;\n}\nfn toClip(p: vec2f) -> vec2f {\n return vec2f(p.x * u.xform.x + u.xform.y, p.y * u.xform.z + u.xform.w);\n}\nfn toPx(p: vec2f) -> vec2f {\n return (toClip(p) * 0.5 + 0.5) * u.viewport.xy;\n}\nfn pxToClip(p: vec2f) -> vec4f {\n return vec4f(p / u.viewport.xy * 2.0 - 1.0, 0.0, 1.0);\n}\nfn corner(vi: u32) -> vec2f {\n return vec2f(f32(vi & 1u), f32(vi >> 1u));\n}\nconst HIDDEN = vec4f(2.0, 2.0, 2.0, 1.0);\n\nstruct Out {\n @builtin(position) pos: vec4f,\n @location(0) local: vec2f,\n @location(1) @interpolate(flat) hs: vec2f,\n};\n@vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) inst: vec3f) -> Out {\n var out: Out;\n if (gap(inst.xy) || abs(inst.z) > 1e37) {\n out.pos = HIDDEN;\n return out;\n }\n let hw = max(abs(u.params.x * u.xform.x) * 0.5 * u.viewport.x, 0.5);\n let p0 = toPx(inst.xy);\n let y1 = toPx(vec2f(inst.x, inst.z)).y;\n let lo = min(p0.y, y1);\n let hi = max(p0.y, y1);\n let hsz = vec2f(hw, (hi - lo) * 0.5);\n let center = vec2f(p0.x, (lo + hi) * 0.5);\n let ext = hsz + vec2f(1.0);\n let c = corner(vi) * 2.0 - 1.0;\n out.pos = pxToClip(center + c * ext);\n out.local = c * ext;\n out.hs = hsz;\n return out;\n}\n@fragment fn fs(v: Out) -> @location(0) vec4f {\n let r = min(u.params.y * u.viewport.z, min(v.hs.x, v.hs.y));\n let q = abs(v.local) - v.hs + vec2f(r);\n let d = length(max(q, vec2f(0.0))) + min(max(q.x, q.y), 0.0) - r;\n let a = clamp(0.5 - d, 0.0, 1.0) * u.color.a;\n return vec4f(u.color.rgb * a, a);\n}\n";
4
+ export declare const WGSL_SCATTER = "\nstruct U {\n xform: vec4f,\n viewport: vec4f,\n color: vec4f,\n params: vec4f,\n};\n@group(0) @binding(0) var<uniform> u: U;\n\nfn gap(p: vec2f) -> bool {\n return abs(p.x) > 1e37 || abs(p.y) > 1e37;\n}\nfn toClip(p: vec2f) -> vec2f {\n return vec2f(p.x * u.xform.x + u.xform.y, p.y * u.xform.z + u.xform.w);\n}\nfn toPx(p: vec2f) -> vec2f {\n return (toClip(p) * 0.5 + 0.5) * u.viewport.xy;\n}\nfn pxToClip(p: vec2f) -> vec4f {\n return vec4f(p / u.viewport.xy * 2.0 - 1.0, 0.0, 1.0);\n}\nfn corner(vi: u32) -> vec2f {\n return vec2f(f32(vi & 1u), f32(vi >> 1u));\n}\nconst HIDDEN = vec4f(2.0, 2.0, 2.0, 1.0);\n\nstruct Out {\n @builtin(position) pos: vec4f,\n @location(0) local: vec2f,\n @location(1) @interpolate(flat) r: f32,\n @location(2) @interpolate(flat) color: vec4f,\n};\n@vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) p: vec2f, @location(1) size: f32, @location(2) color: vec4f) -> Out {\n var out: Out;\n if (gap(p) || !(size > 0.0)) {\n out.pos = HIDDEN;\n return out;\n }\n let r = size * 0.5 * u.viewport.z;\n let ext = r + 1.0;\n let c = corner(vi) * 2.0 - 1.0;\n out.pos = pxToClip(toPx(p) + c * ext);\n out.local = c * ext;\n out.r = r;\n out.color = color;\n return out;\n}\n@fragment fn fs(v: Out) -> @location(0) vec4f {\n let d = length(v.local) - v.r;\n let cover = clamp(0.5 - d, 0.0, 1.0);\n let inner = clamp(0.5 - (d + u.params.y * u.viewport.z), 0.0, 1.0);\n let a = v.color.a * (inner * u.params.x + (cover - inner));\n return vec4f(v.color.rgb * a, a);\n}\n";
5
+ export declare const GLSL_LINE: {
6
+ vertex: string;
7
+ fragment: string;
8
+ };
9
+ export declare const GLSL_AREA: {
10
+ vertex: string;
11
+ fragment: string;
12
+ };
13
+ export declare const GLSL_BAR: {
14
+ vertex: string;
15
+ fragment: string;
16
+ };
17
+ export declare const GLSL_SCATTER: {
18
+ vertex: string;
19
+ fragment: string;
20
+ };
@@ -0,0 +1,251 @@
1
+ //#region src/engine/renderers/shaders.ts
2
+ var e = "\nstruct U {\n xform: vec4f,\n viewport: vec4f,\n color: vec4f,\n params: vec4f,\n};\n@group(0) @binding(0) var<uniform> u: U;\n\nfn gap(p: vec2f) -> bool {\n return abs(p.x) > 1e37 || abs(p.y) > 1e37;\n}\nfn toClip(p: vec2f) -> vec2f {\n return vec2f(p.x * u.xform.x + u.xform.y, p.y * u.xform.z + u.xform.w);\n}\nfn toPx(p: vec2f) -> vec2f {\n return (toClip(p) * 0.5 + 0.5) * u.viewport.xy;\n}\nfn pxToClip(p: vec2f) -> vec4f {\n return vec4f(p / u.viewport.xy * 2.0 - 1.0, 0.0, 1.0);\n}\nfn corner(vi: u32) -> vec2f {\n return vec2f(f32(vi & 1u), f32(vi >> 1u));\n}\nconst HIDDEN = vec4f(2.0, 2.0, 2.0, 1.0);\n", t = `${e}
3
+ struct Out {
4
+ @builtin(position) pos: vec4f,
5
+ @location(0) local: vec2f,
6
+ @location(1) len: f32,
7
+ };
8
+ @vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) a: vec2f, @location(1) b: vec2f) -> Out {
9
+ var out: Out;
10
+ if (gap(a) || gap(b)) {
11
+ out.pos = HIDDEN;
12
+ return out;
13
+ }
14
+ let pa = toPx(a);
15
+ let pb = toPx(b);
16
+ let d = pb - pa;
17
+ let len = length(d);
18
+ var dir = vec2f(1.0, 0.0);
19
+ if (len > 1e-6) { dir = d / len; }
20
+ let nrm = vec2f(-dir.y, dir.x);
21
+ let hw = u.params.x + 1.0;
22
+ let c = corner(vi);
23
+ let along = mix(-hw, len + hw, c.x);
24
+ let across = mix(-hw, hw, c.y);
25
+ out.pos = pxToClip(pa + dir * along + nrm * across);
26
+ out.local = vec2f(along, across);
27
+ out.len = len;
28
+ return out;
29
+ }
30
+ @fragment fn fs(v: Out) -> @location(0) vec4f {
31
+ let x = clamp(v.local.x, 0.0, v.len);
32
+ let dist = length(vec2f(v.local.x - x, v.local.y));
33
+ let a = clamp(u.params.x - dist + 0.5, 0.0, 1.0) * u.color.a;
34
+ return vec4f(u.color.rgb * a, a);
35
+ }
36
+ `, n = `${e}
37
+ struct Out {
38
+ @builtin(position) pos: vec4f,
39
+ @location(0) t: f32,
40
+ };
41
+ @vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) a: vec2f, @location(1) b: vec2f) -> Out {
42
+ var out: Out;
43
+ if (gap(a) || gap(b)) {
44
+ out.pos = HIDDEN;
45
+ return out;
46
+ }
47
+ let c = corner(vi);
48
+ let p = select(a, b, c.y > 0.5);
49
+ let y = select(u.params.x, p.y, c.x > 0.5);
50
+ out.pos = vec4f(toClip(vec2f(p.x, y)), 0.0, 1.0);
51
+ out.t = c.x;
52
+ return out;
53
+ }
54
+ @fragment fn fs(v: Out) -> @location(0) vec4f {
55
+ let a = u.color.a * u.params.y * (0.3 + 0.7 * v.t);
56
+ return vec4f(u.color.rgb * a, a);
57
+ }
58
+ `, r = `${e}
59
+ struct Out {
60
+ @builtin(position) pos: vec4f,
61
+ @location(0) local: vec2f,
62
+ @location(1) @interpolate(flat) hs: vec2f,
63
+ };
64
+ @vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) inst: vec3f) -> Out {
65
+ var out: Out;
66
+ if (gap(inst.xy) || abs(inst.z) > 1e37) {
67
+ out.pos = HIDDEN;
68
+ return out;
69
+ }
70
+ let hw = max(abs(u.params.x * u.xform.x) * 0.5 * u.viewport.x, 0.5);
71
+ let p0 = toPx(inst.xy);
72
+ let y1 = toPx(vec2f(inst.x, inst.z)).y;
73
+ let lo = min(p0.y, y1);
74
+ let hi = max(p0.y, y1);
75
+ let hsz = vec2f(hw, (hi - lo) * 0.5);
76
+ let center = vec2f(p0.x, (lo + hi) * 0.5);
77
+ let ext = hsz + vec2f(1.0);
78
+ let c = corner(vi) * 2.0 - 1.0;
79
+ out.pos = pxToClip(center + c * ext);
80
+ out.local = c * ext;
81
+ out.hs = hsz;
82
+ return out;
83
+ }
84
+ @fragment fn fs(v: Out) -> @location(0) vec4f {
85
+ let r = min(u.params.y * u.viewport.z, min(v.hs.x, v.hs.y));
86
+ let q = abs(v.local) - v.hs + vec2f(r);
87
+ let d = length(max(q, vec2f(0.0))) + min(max(q.x, q.y), 0.0) - r;
88
+ let a = clamp(0.5 - d, 0.0, 1.0) * u.color.a;
89
+ return vec4f(u.color.rgb * a, a);
90
+ }
91
+ `, i = `${e}
92
+ struct Out {
93
+ @builtin(position) pos: vec4f,
94
+ @location(0) local: vec2f,
95
+ @location(1) @interpolate(flat) r: f32,
96
+ @location(2) @interpolate(flat) color: vec4f,
97
+ };
98
+ @vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) p: vec2f, @location(1) size: f32, @location(2) color: vec4f) -> Out {
99
+ var out: Out;
100
+ if (gap(p) || !(size > 0.0)) {
101
+ out.pos = HIDDEN;
102
+ return out;
103
+ }
104
+ let r = size * 0.5 * u.viewport.z;
105
+ let ext = r + 1.0;
106
+ let c = corner(vi) * 2.0 - 1.0;
107
+ out.pos = pxToClip(toPx(p) + c * ext);
108
+ out.local = c * ext;
109
+ out.r = r;
110
+ out.color = color;
111
+ return out;
112
+ }
113
+ @fragment fn fs(v: Out) -> @location(0) vec4f {
114
+ let d = length(v.local) - v.r;
115
+ let cover = clamp(0.5 - d, 0.0, 1.0);
116
+ let inner = clamp(0.5 - (d + u.params.y * u.viewport.z), 0.0, 1.0);
117
+ let a = v.color.a * (inner * u.params.x + (cover - inner));
118
+ return vec4f(v.color.rgb * a, a);
119
+ }
120
+ `, a = "#version 300 es\nprecision highp float;\nuniform vec4 u_xform;\nuniform vec4 u_viewport;\nuniform vec4 u_color;\nuniform vec4 u_params;\n", o = `${a}
121
+ bool gap(vec2 p) { return abs(p.x) > 1e37 || abs(p.y) > 1e37; }
122
+ vec2 toClip(vec2 p) { return vec2(p.x * u_xform.x + u_xform.y, p.y * u_xform.z + u_xform.w); }
123
+ vec2 toPx(vec2 p) { return (toClip(p) * 0.5 + 0.5) * u_viewport.xy; }
124
+ vec4 pxToClip(vec2 p) { return vec4(p / u_viewport.xy * 2.0 - 1.0, 0.0, 1.0); }
125
+ vec2 corner() { return vec2(float(gl_VertexID & 1), float(gl_VertexID >> 1)); }
126
+ const vec4 HIDDEN = vec4(2.0, 2.0, 2.0, 1.0);
127
+ `, s = {
128
+ vertex: `${o}
129
+ in vec2 a_a;
130
+ in vec2 a_b;
131
+ out vec2 v_local;
132
+ out float v_len;
133
+ void main() {
134
+ v_local = vec2(0.0);
135
+ v_len = 0.0;
136
+ if (gap(a_a) || gap(a_b)) { gl_Position = HIDDEN; return; }
137
+ vec2 pa = toPx(a_a);
138
+ vec2 pb = toPx(a_b);
139
+ vec2 d = pb - pa;
140
+ float len = length(d);
141
+ vec2 dir = len > 1e-6 ? d / len : vec2(1.0, 0.0);
142
+ vec2 nrm = vec2(-dir.y, dir.x);
143
+ float hw = u_params.x + 1.0;
144
+ vec2 c = corner();
145
+ float along = mix(-hw, len + hw, c.x);
146
+ float across = mix(-hw, hw, c.y);
147
+ gl_Position = pxToClip(pa + dir * along + nrm * across);
148
+ v_local = vec2(along, across);
149
+ v_len = len;
150
+ }`,
151
+ fragment: `${a}
152
+ in vec2 v_local;
153
+ in float v_len;
154
+ out vec4 outColor;
155
+ void main() {
156
+ float x = clamp(v_local.x, 0.0, v_len);
157
+ float dist = length(vec2(v_local.x - x, v_local.y));
158
+ float a = clamp(u_params.x - dist + 0.5, 0.0, 1.0) * u_color.a;
159
+ outColor = vec4(u_color.rgb * a, a);
160
+ }`
161
+ }, c = {
162
+ vertex: `${o}
163
+ in vec2 a_a;
164
+ in vec2 a_b;
165
+ out float v_t;
166
+ void main() {
167
+ v_t = 0.0;
168
+ if (gap(a_a) || gap(a_b)) { gl_Position = HIDDEN; return; }
169
+ vec2 c = corner();
170
+ vec2 p = c.y > 0.5 ? a_b : a_a;
171
+ float y = c.x > 0.5 ? p.y : u_params.x;
172
+ gl_Position = vec4(toClip(vec2(p.x, y)), 0.0, 1.0);
173
+ v_t = c.x;
174
+ }`,
175
+ fragment: `${a}
176
+ in float v_t;
177
+ out vec4 outColor;
178
+ void main() {
179
+ float a = u_color.a * u_params.y * (0.3 + 0.7 * v_t);
180
+ outColor = vec4(u_color.rgb * a, a);
181
+ }`
182
+ }, l = {
183
+ vertex: `${o}
184
+ in vec3 a_inst;
185
+ out vec2 v_local;
186
+ flat out vec2 v_half;
187
+ void main() {
188
+ v_local = vec2(0.0);
189
+ v_half = vec2(0.0);
190
+ if (gap(a_inst.xy) || abs(a_inst.z) > 1e37) { gl_Position = HIDDEN; return; }
191
+ float hw = max(abs(u_params.x * u_xform.x) * 0.5 * u_viewport.x, 0.5);
192
+ vec2 p0 = toPx(a_inst.xy);
193
+ float y1 = toPx(vec2(a_inst.x, a_inst.z)).y;
194
+ float lo = min(p0.y, y1);
195
+ float hi = max(p0.y, y1);
196
+ vec2 hsz = vec2(hw, (hi - lo) * 0.5);
197
+ vec2 center = vec2(p0.x, (lo + hi) * 0.5);
198
+ vec2 ext = hsz + vec2(1.0);
199
+ vec2 c = corner() * 2.0 - 1.0;
200
+ gl_Position = pxToClip(center + c * ext);
201
+ v_local = c * ext;
202
+ v_half = hsz;
203
+ }`,
204
+ fragment: `${a}
205
+ in vec2 v_local;
206
+ flat in vec2 v_half;
207
+ out vec4 outColor;
208
+ void main() {
209
+ float r = min(u_params.y * u_viewport.z, min(v_half.x, v_half.y));
210
+ vec2 q = abs(v_local) - v_half + vec2(r);
211
+ float d = length(max(q, vec2(0.0))) + min(max(q.x, q.y), 0.0) - r;
212
+ float a = clamp(0.5 - d, 0.0, 1.0) * u_color.a;
213
+ outColor = vec4(u_color.rgb * a, a);
214
+ }`
215
+ }, u = {
216
+ vertex: `${o}
217
+ in vec2 a_pos;
218
+ in float a_size;
219
+ in vec4 a_color;
220
+ out vec2 v_local;
221
+ flat out float v_r;
222
+ flat out vec4 v_color;
223
+ void main() {
224
+ v_local = vec2(0.0);
225
+ v_r = 0.0;
226
+ v_color = a_color;
227
+ if (gap(a_pos) || !(a_size > 0.0)) { gl_Position = HIDDEN; return; }
228
+ float r = a_size * 0.5 * u_viewport.z;
229
+ float ext = r + 1.0;
230
+ vec2 c = corner() * 2.0 - 1.0;
231
+ gl_Position = pxToClip(toPx(a_pos) + c * ext);
232
+ v_local = c * ext;
233
+ v_r = r;
234
+ }`,
235
+ fragment: `${a}
236
+ in vec2 v_local;
237
+ flat in float v_r;
238
+ flat in vec4 v_color;
239
+ out vec4 outColor;
240
+ void main() {
241
+ float d = length(v_local) - v_r;
242
+ float cover = clamp(0.5 - d, 0.0, 1.0);
243
+ float inner = clamp(0.5 - (d + u_params.y * u_viewport.z), 0.0, 1.0);
244
+ float a = v_color.a * (inner * u_params.x + (cover - inner));
245
+ outColor = vec4(v_color.rgb * a, a);
246
+ }`
247
+ };
248
+ //#endregion
249
+ export { c as GLSL_AREA, l as GLSL_BAR, s as GLSL_LINE, u as GLSL_SCATTER, n as WGSL_AREA, r as WGSL_BAR, t as WGSL_LINE, i as WGSL_SCATTER };
250
+
251
+ //# sourceMappingURL=shaders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shaders.js","names":["WGSL_COMMON","WGSL_LINE","WGSL_AREA","WGSL_BAR","WGSL_SCATTER","GLSL_HEADER","GLSL_VERTEX_COMMON","GLSL_LINE","GLSL_AREA","GLSL_BAR","GLSL_SCATTER"],"sources":["../../../../../charts/src/engine/renderers/shaders.ts"],"sourcesContent":["// WGSL (WebGPU) and GLSL ES 3.0 (WebGL2) programs. Every primitive is an\n// instanced 4-vertex triangle strip; anti-aliasing comes from signed\n// distance functions in pixel space (no MSAA needed).\n//\n// Uniforms (both backends):\n// xform = (xScale, xOffset, yScale, yOffset) relative data -> clip\n// viewport = (width px, height px, dpr, 0)\n// color = straight RGBA of the series\n// params = line: (half width px) | area: (baseline, opacity)\n// bar: (half width in x units, radius px) | scatter: (opacity, stroke px)\n// Output colors are premultiplied.\n\nconst WGSL_COMMON = /* wgsl */ `\nstruct U {\n xform: vec4f,\n viewport: vec4f,\n color: vec4f,\n params: vec4f,\n};\n@group(0) @binding(0) var<uniform> u: U;\n\nfn gap(p: vec2f) -> bool {\n return abs(p.x) > 1e37 || abs(p.y) > 1e37;\n}\nfn toClip(p: vec2f) -> vec2f {\n return vec2f(p.x * u.xform.x + u.xform.y, p.y * u.xform.z + u.xform.w);\n}\nfn toPx(p: vec2f) -> vec2f {\n return (toClip(p) * 0.5 + 0.5) * u.viewport.xy;\n}\nfn pxToClip(p: vec2f) -> vec4f {\n return vec4f(p / u.viewport.xy * 2.0 - 1.0, 0.0, 1.0);\n}\nfn corner(vi: u32) -> vec2f {\n return vec2f(f32(vi & 1u), f32(vi >> 1u));\n}\nconst HIDDEN = vec4f(2.0, 2.0, 2.0, 1.0);\n`;\n\nexport const WGSL_LINE = /* wgsl */ `${WGSL_COMMON}\nstruct Out {\n @builtin(position) pos: vec4f,\n @location(0) local: vec2f,\n @location(1) len: f32,\n};\n@vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) a: vec2f, @location(1) b: vec2f) -> Out {\n var out: Out;\n if (gap(a) || gap(b)) {\n out.pos = HIDDEN;\n return out;\n }\n let pa = toPx(a);\n let pb = toPx(b);\n let d = pb - pa;\n let len = length(d);\n var dir = vec2f(1.0, 0.0);\n if (len > 1e-6) { dir = d / len; }\n let nrm = vec2f(-dir.y, dir.x);\n let hw = u.params.x + 1.0;\n let c = corner(vi);\n let along = mix(-hw, len + hw, c.x);\n let across = mix(-hw, hw, c.y);\n out.pos = pxToClip(pa + dir * along + nrm * across);\n out.local = vec2f(along, across);\n out.len = len;\n return out;\n}\n@fragment fn fs(v: Out) -> @location(0) vec4f {\n let x = clamp(v.local.x, 0.0, v.len);\n let dist = length(vec2f(v.local.x - x, v.local.y));\n let a = clamp(u.params.x - dist + 0.5, 0.0, 1.0) * u.color.a;\n return vec4f(u.color.rgb * a, a);\n}\n`;\n\nexport const WGSL_AREA = /* wgsl */ `${WGSL_COMMON}\nstruct Out {\n @builtin(position) pos: vec4f,\n @location(0) t: f32,\n};\n@vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) a: vec2f, @location(1) b: vec2f) -> Out {\n var out: Out;\n if (gap(a) || gap(b)) {\n out.pos = HIDDEN;\n return out;\n }\n let c = corner(vi);\n let p = select(a, b, c.y > 0.5);\n let y = select(u.params.x, p.y, c.x > 0.5);\n out.pos = vec4f(toClip(vec2f(p.x, y)), 0.0, 1.0);\n out.t = c.x;\n return out;\n}\n@fragment fn fs(v: Out) -> @location(0) vec4f {\n let a = u.color.a * u.params.y * (0.3 + 0.7 * v.t);\n return vec4f(u.color.rgb * a, a);\n}\n`;\n\nexport const WGSL_BAR = /* wgsl */ `${WGSL_COMMON}\nstruct Out {\n @builtin(position) pos: vec4f,\n @location(0) local: vec2f,\n @location(1) @interpolate(flat) hs: vec2f,\n};\n@vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) inst: vec3f) -> Out {\n var out: Out;\n if (gap(inst.xy) || abs(inst.z) > 1e37) {\n out.pos = HIDDEN;\n return out;\n }\n let hw = max(abs(u.params.x * u.xform.x) * 0.5 * u.viewport.x, 0.5);\n let p0 = toPx(inst.xy);\n let y1 = toPx(vec2f(inst.x, inst.z)).y;\n let lo = min(p0.y, y1);\n let hi = max(p0.y, y1);\n let hsz = vec2f(hw, (hi - lo) * 0.5);\n let center = vec2f(p0.x, (lo + hi) * 0.5);\n let ext = hsz + vec2f(1.0);\n let c = corner(vi) * 2.0 - 1.0;\n out.pos = pxToClip(center + c * ext);\n out.local = c * ext;\n out.hs = hsz;\n return out;\n}\n@fragment fn fs(v: Out) -> @location(0) vec4f {\n let r = min(u.params.y * u.viewport.z, min(v.hs.x, v.hs.y));\n let q = abs(v.local) - v.hs + vec2f(r);\n let d = length(max(q, vec2f(0.0))) + min(max(q.x, q.y), 0.0) - r;\n let a = clamp(0.5 - d, 0.0, 1.0) * u.color.a;\n return vec4f(u.color.rgb * a, a);\n}\n`;\n\nexport const WGSL_SCATTER = /* wgsl */ `${WGSL_COMMON}\nstruct Out {\n @builtin(position) pos: vec4f,\n @location(0) local: vec2f,\n @location(1) @interpolate(flat) r: f32,\n @location(2) @interpolate(flat) color: vec4f,\n};\n@vertex fn vs(@builtin(vertex_index) vi: u32, @location(0) p: vec2f, @location(1) size: f32, @location(2) color: vec4f) -> Out {\n var out: Out;\n if (gap(p) || !(size > 0.0)) {\n out.pos = HIDDEN;\n return out;\n }\n let r = size * 0.5 * u.viewport.z;\n let ext = r + 1.0;\n let c = corner(vi) * 2.0 - 1.0;\n out.pos = pxToClip(toPx(p) + c * ext);\n out.local = c * ext;\n out.r = r;\n out.color = color;\n return out;\n}\n@fragment fn fs(v: Out) -> @location(0) vec4f {\n let d = length(v.local) - v.r;\n let cover = clamp(0.5 - d, 0.0, 1.0);\n let inner = clamp(0.5 - (d + u.params.y * u.viewport.z), 0.0, 1.0);\n let a = v.color.a * (inner * u.params.x + (cover - inner));\n return vec4f(v.color.rgb * a, a);\n}\n`;\n\nconst GLSL_HEADER = /* glsl */ `#version 300 es\nprecision highp float;\nuniform vec4 u_xform;\nuniform vec4 u_viewport;\nuniform vec4 u_color;\nuniform vec4 u_params;\n`;\n\nconst GLSL_VERTEX_COMMON = /* glsl */ `${GLSL_HEADER}\nbool gap(vec2 p) { return abs(p.x) > 1e37 || abs(p.y) > 1e37; }\nvec2 toClip(vec2 p) { return vec2(p.x * u_xform.x + u_xform.y, p.y * u_xform.z + u_xform.w); }\nvec2 toPx(vec2 p) { return (toClip(p) * 0.5 + 0.5) * u_viewport.xy; }\nvec4 pxToClip(vec2 p) { return vec4(p / u_viewport.xy * 2.0 - 1.0, 0.0, 1.0); }\nvec2 corner() { return vec2(float(gl_VertexID & 1), float(gl_VertexID >> 1)); }\nconst vec4 HIDDEN = vec4(2.0, 2.0, 2.0, 1.0);\n`;\n\nexport const GLSL_LINE = {\n vertex: /* glsl */ `${GLSL_VERTEX_COMMON}\nin vec2 a_a;\nin vec2 a_b;\nout vec2 v_local;\nout float v_len;\nvoid main() {\n v_local = vec2(0.0);\n v_len = 0.0;\n if (gap(a_a) || gap(a_b)) { gl_Position = HIDDEN; return; }\n vec2 pa = toPx(a_a);\n vec2 pb = toPx(a_b);\n vec2 d = pb - pa;\n float len = length(d);\n vec2 dir = len > 1e-6 ? d / len : vec2(1.0, 0.0);\n vec2 nrm = vec2(-dir.y, dir.x);\n float hw = u_params.x + 1.0;\n vec2 c = corner();\n float along = mix(-hw, len + hw, c.x);\n float across = mix(-hw, hw, c.y);\n gl_Position = pxToClip(pa + dir * along + nrm * across);\n v_local = vec2(along, across);\n v_len = len;\n}`,\n fragment: /* glsl */ `${GLSL_HEADER}\nin vec2 v_local;\nin float v_len;\nout vec4 outColor;\nvoid main() {\n float x = clamp(v_local.x, 0.0, v_len);\n float dist = length(vec2(v_local.x - x, v_local.y));\n float a = clamp(u_params.x - dist + 0.5, 0.0, 1.0) * u_color.a;\n outColor = vec4(u_color.rgb * a, a);\n}`,\n};\n\nexport const GLSL_AREA = {\n vertex: /* glsl */ `${GLSL_VERTEX_COMMON}\nin vec2 a_a;\nin vec2 a_b;\nout float v_t;\nvoid main() {\n v_t = 0.0;\n if (gap(a_a) || gap(a_b)) { gl_Position = HIDDEN; return; }\n vec2 c = corner();\n vec2 p = c.y > 0.5 ? a_b : a_a;\n float y = c.x > 0.5 ? p.y : u_params.x;\n gl_Position = vec4(toClip(vec2(p.x, y)), 0.0, 1.0);\n v_t = c.x;\n}`,\n fragment: /* glsl */ `${GLSL_HEADER}\nin float v_t;\nout vec4 outColor;\nvoid main() {\n float a = u_color.a * u_params.y * (0.3 + 0.7 * v_t);\n outColor = vec4(u_color.rgb * a, a);\n}`,\n};\n\nexport const GLSL_BAR = {\n vertex: /* glsl */ `${GLSL_VERTEX_COMMON}\nin vec3 a_inst;\nout vec2 v_local;\nflat out vec2 v_half;\nvoid main() {\n v_local = vec2(0.0);\n v_half = vec2(0.0);\n if (gap(a_inst.xy) || abs(a_inst.z) > 1e37) { gl_Position = HIDDEN; return; }\n float hw = max(abs(u_params.x * u_xform.x) * 0.5 * u_viewport.x, 0.5);\n vec2 p0 = toPx(a_inst.xy);\n float y1 = toPx(vec2(a_inst.x, a_inst.z)).y;\n float lo = min(p0.y, y1);\n float hi = max(p0.y, y1);\n vec2 hsz = vec2(hw, (hi - lo) * 0.5);\n vec2 center = vec2(p0.x, (lo + hi) * 0.5);\n vec2 ext = hsz + vec2(1.0);\n vec2 c = corner() * 2.0 - 1.0;\n gl_Position = pxToClip(center + c * ext);\n v_local = c * ext;\n v_half = hsz;\n}`,\n fragment: /* glsl */ `${GLSL_HEADER}\nin vec2 v_local;\nflat in vec2 v_half;\nout vec4 outColor;\nvoid main() {\n float r = min(u_params.y * u_viewport.z, min(v_half.x, v_half.y));\n vec2 q = abs(v_local) - v_half + vec2(r);\n float d = length(max(q, vec2(0.0))) + min(max(q.x, q.y), 0.0) - r;\n float a = clamp(0.5 - d, 0.0, 1.0) * u_color.a;\n outColor = vec4(u_color.rgb * a, a);\n}`,\n};\n\nexport const GLSL_SCATTER = {\n vertex: /* glsl */ `${GLSL_VERTEX_COMMON}\nin vec2 a_pos;\nin float a_size;\nin vec4 a_color;\nout vec2 v_local;\nflat out float v_r;\nflat out vec4 v_color;\nvoid main() {\n v_local = vec2(0.0);\n v_r = 0.0;\n v_color = a_color;\n if (gap(a_pos) || !(a_size > 0.0)) { gl_Position = HIDDEN; return; }\n float r = a_size * 0.5 * u_viewport.z;\n float ext = r + 1.0;\n vec2 c = corner() * 2.0 - 1.0;\n gl_Position = pxToClip(toPx(a_pos) + c * ext);\n v_local = c * ext;\n v_r = r;\n}`,\n fragment: /* glsl */ `${GLSL_HEADER}\nin vec2 v_local;\nflat in float v_r;\nflat in vec4 v_color;\nout vec4 outColor;\nvoid main() {\n float d = length(v_local) - v_r;\n float cover = clamp(0.5 - d, 0.0, 1.0);\n float inner = clamp(0.5 - (d + u_params.y * u_viewport.z), 0.0, 1.0);\n float a = v_color.a * (inner * u_params.x + (cover - inner));\n outColor = vec4(v_color.rgb * a, a);\n}`,\n};\n"],"mappings":";AAYA,IAAMA,IAAyB,mnBA2BlBC,IAAuB,GAAGD,EAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCtCE,IAAuB,GAAGF,EAAY;;;;;;;;;;;;;;;;;;;;;;GAwBtCG,IAAsB,GAAGH,EAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCrCI,IAA0B,GAAGJ,EAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BhDK,IAAyB,6IAQzBC,IAAgC,GAAGD,EAAY;;;;;;;GASxCE,IAAY;CACvB,QAAmB,GAAGD,EAAmB;;;;;;;;;;;;;;;;;;;;;;;CAuBzC,UAAqB,GAAGD,EAAY;;;;;;;;;;AAUtC,GAEaG,IAAY;CACvB,QAAmB,GAAGF,EAAmB;;;;;;;;;;;;;CAazC,UAAqB,GAAGD,EAAY;;;;;;;AAOtC,GAEaI,IAAW;CACtB,QAAmB,GAAGH,EAAmB;;;;;;;;;;;;;;;;;;;;;CAqBzC,UAAqB,GAAGD,EAAY;;;;;;;;;;;AAWtC,GAEaK,IAAe;CAC1B,QAAmB,GAAGJ,EAAmB;;;;;;;;;;;;;;;;;;;CAmBzC,UAAqB,GAAGD,EAAY;;;;;;;;;;;;AAYtC"}
@@ -0,0 +1,2 @@
1
+ var e=3e38;exports.GAP=e;
2
+ //# sourceMappingURL=types.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.cjs","names":["GAP"],"sources":["../../../../../charts/src/engine/renderers/types.ts"],"sourcesContent":["// Contract between the chart and its data-layer backends.\n\nimport type { Rgba } from \"../color\";\nimport type { ChartRendererKind } from \"../types\";\n\n/**\n * Data -> clip-space transform. Positions are uploaded relative to an\n * origin (float32 keeps its precision for timestamps), so\n * `clip = relative * scale + offset`.\n */\nexport interface RenderTransform {\n xScale: number;\n xOffset: number;\n yScale: number;\n yOffset: number;\n}\n\nexport interface RenderFrame {\n transform: RenderTransform;\n /** Size of the drawing buffer in device pixels */\n width: number;\n height: number;\n /** Device pixel ratio */\n dpr: number;\n}\n\n/** Missing values are written as this sentinel (NaN is unreliable in shaders) */\nexport const GAP = 3e38;\n\ninterface RenderItemBase {\n /** Identifies the GPU resources of the item */\n key: string;\n /** Changes when the buffers must be uploaded again */\n version: number;\n /** Straight RGBA */\n color: Rgba;\n}\n\nexport interface LineItem extends RenderItemBase {\n kind: \"line\";\n /** Interleaved relative x, y */\n points: Float32Array;\n count: number;\n /** CSS pixels */\n width: number;\n sorted: boolean;\n}\n\nexport interface AreaItem extends RenderItemBase {\n kind: \"area\";\n points: Float32Array;\n count: number;\n /** Relative y of the baseline */\n baseline: number;\n opacity: number;\n sorted: boolean;\n}\n\nexport interface BarItem extends RenderItemBase {\n kind: \"bar\";\n /** Interleaved relative x (center), y0, y1 */\n instances: Float32Array;\n count: number;\n /** Half of the bar width, in relative x units */\n halfWidth: number;\n /** Corner radius in CSS pixels */\n radius: number;\n /** Instances are sorted by x */\n sorted: boolean;\n}\n\nexport interface ScatterItem extends RenderItemBase {\n kind: \"scatter\";\n /** Per point: x f32, y f32, diameter (CSS px) f32, color unorm8x4 */\n instances: ArrayBuffer;\n count: number;\n opacity: number;\n /** Outline width in CSS pixels */\n stroke: number;\n}\n\nexport type RenderItem = LineItem | AreaItem | BarItem | ScatterItem;\n\nexport interface ChartRenderer {\n readonly kind: ChartRendererKind;\n readonly canvas: HTMLCanvasElement;\n /** Drawing buffer size in device pixels */\n resize(width: number, height: number): void;\n render(items: readonly RenderItem[], frame: RenderFrame): void;\n destroy(): void;\n}\n\n/** Called when the backend is lost (GPU reset, too many contexts, ...) */\nexport type RendererLostHandler = () => void;\n\nexport const SCATTER_STRIDE = 16;\n"],"mappings":"AA2BA,IAAaA,EAAM"}