m4-w-fast 1.1.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 (298) hide show
  1. package/README.md +6 -0
  2. package/dist/index.cjs +1 -1
  3. package/dist/index.d.ts +1 -1
  4. package/dist/index.js +1 -1
  5. package/dist/index.mjs +1 -1
  6. package/dist/intersect.worker.js +2 -2
  7. package/dist/isoBands.worker.js +1 -1
  8. package/dist/m4-w-fast.umd.js +1 -1
  9. package/dist/raster-leaflet/index.cjs +2 -0
  10. package/dist/raster-leaflet/index.d.ts +5 -0
  11. package/dist/raster-leaflet/index.js +1 -0
  12. package/dist/raster-leaflet/index.mjs +2 -0
  13. package/dist/raster-leaflet/m4-w-raster-leaflet.umd.js +2 -0
  14. package/dist/raster-mars3d/cesiumRasterPlaneRenderer.d.ts +28 -0
  15. package/dist/raster-mars3d/cesiumRasterPlaneRenderer.js +1 -0
  16. package/dist/raster-mars3d/cesiumRasterTextureAdapter.d.ts +14 -0
  17. package/dist/raster-mars3d/cesiumRasterTextureAdapter.js +1 -0
  18. package/dist/raster-mars3d/index.cjs +2 -0
  19. package/dist/raster-mars3d/index.d.ts +6 -0
  20. package/dist/raster-mars3d/index.js +1 -0
  21. package/dist/raster-mars3d/index.mjs +2 -0
  22. package/dist/raster-mars3d/m4-w-raster-mars3d.umd.js +2 -0
  23. package/dist/raster-mars3d/mars3dRasterImageryProvider.d.ts +30 -0
  24. package/dist/raster-mars3d/mars3dRasterImageryProvider.js +1 -0
  25. package/dist/raster-mars3d/mars3dRasterPlaneLayer.d.ts +3 -0
  26. package/dist/raster-mars3d/mars3dRasterPlaneLayer.js +1 -0
  27. package/dist/raster-mars3d/rasterPlaneCesiumTypes.d.ts +95 -0
  28. package/dist/raster-mars3d/rasterPlaneCesiumTypes.js +1 -0
  29. package/dist/raster-mars3d/rasterPlaneGeometry.d.ts +5 -0
  30. package/dist/raster-mars3d/rasterPlaneGeometry.js +1 -0
  31. package/dist/raster-mars3d/rasterPlaneGridChunks.d.ts +4 -0
  32. package/dist/raster-mars3d/rasterPlaneGridChunks.js +1 -0
  33. package/dist/raster-mars3d/rasterPlaneMaterial.d.ts +21 -0
  34. package/dist/raster-mars3d/rasterPlaneMaterial.js +1 -0
  35. package/dist/raster-mars3d/rasterPlaneTypes.d.ts +33 -0
  36. package/dist/raster-mars3d/rasterPlaneTypes.js +1 -0
  37. package/dist/raster-mars3d/types.d.ts +30 -0
  38. package/dist/raster-mars3d/types.js +1 -0
  39. package/dist/raster-overlay/color.d.ts +1 -1
  40. package/dist/raster-overlay/color.js +1 -1
  41. package/dist/raster-overlay/core.d.ts +1 -1
  42. package/dist/raster-overlay/core.js +1 -1
  43. package/dist/raster-overlay/index.cjs +2 -2
  44. package/dist/raster-overlay/index.d.ts +5 -2
  45. package/dist/raster-overlay/index.js +1 -1
  46. package/dist/raster-overlay/index.mjs +2 -2
  47. package/dist/raster-overlay/leaflet-renderers/createRenderer.d.ts +3 -7
  48. package/dist/raster-overlay/leaflet-renderers/createRenderer.js +1 -1
  49. package/dist/raster-overlay/leaflet-renderers/renderer.d.ts +1 -59
  50. package/dist/raster-overlay/leafletLayer.d.ts +4 -0
  51. package/dist/raster-overlay/leafletLayer.js +1 -1
  52. package/dist/raster-overlay/leafletTypes.d.ts +21 -0
  53. package/dist/raster-overlay/leafletTypes.js +1 -0
  54. package/dist/raster-overlay/m4-w-raster-overlay.umd.js +2 -2
  55. package/dist/raster-overlay/query.d.ts +1 -1
  56. package/dist/raster-overlay/query.js +1 -1
  57. package/dist/raster-overlay/rasterTypes.d.ts +73 -0
  58. package/dist/raster-overlay/rasterTypes.js +1 -0
  59. package/dist/raster-overlay/rendering/createRasterRenderer.d.ts +4 -0
  60. package/dist/raster-overlay/rendering/createRasterRenderer.js +1 -0
  61. package/dist/raster-overlay/rendering/index.d.ts +5 -0
  62. package/dist/raster-overlay/rendering/index.js +1 -0
  63. package/dist/raster-overlay/rendering/rasterRenderState.d.ts +27 -0
  64. package/dist/raster-overlay/rendering/rasterRenderState.js +1 -0
  65. package/dist/raster-overlay/rendering/renderer.d.ts +15 -0
  66. package/dist/raster-overlay/rendering/renderer.js +1 -0
  67. package/dist/raster-overlay/rendering/webgl2RasterRenderer.d.ts +34 -0
  68. package/dist/raster-overlay/rendering/webgl2RasterRenderer.js +1 -0
  69. package/dist/raster-overlay/rendering/webgpuRasterRenderer.d.ts +42 -0
  70. package/dist/raster-overlay/rendering/webgpuRasterRenderer.js +1 -0
  71. package/dist/raster-overlay/types.d.ts +2 -235
  72. package/dist/raster-rendering/index.cjs +2 -0
  73. package/dist/raster-rendering/index.d.ts +8 -0
  74. package/dist/raster-rendering/index.js +1 -0
  75. package/dist/raster-rendering/index.mjs +2 -0
  76. package/dist/raster-rendering/m4-w-raster-rendering.umd.js +2 -0
  77. package/dist/raster-rendering/types.d.ts +13 -0
  78. package/dist/raster-rendering/types.js +1 -0
  79. package/dist/raster-rendering/webgpuRasterTileRenderer.d.ts +29 -0
  80. package/dist/raster-rendering/webgpuRasterTileRenderer.js +1 -0
  81. package/dist/readFile.d.ts +2 -2
  82. package/dist/readFile.js +1 -1
  83. package/dist/rendering/index.d.ts +6 -0
  84. package/dist/rendering/index.js +1 -0
  85. package/dist/rendering/renderer.d.ts +35 -0
  86. package/dist/rendering/renderer.js +1 -0
  87. package/dist/rendering/types.d.ts +20 -0
  88. package/dist/rendering/types.js +1 -0
  89. package/dist/rendering/webgl2/baseWebgl2Renderer.d.ts +37 -0
  90. package/dist/rendering/webgl2/baseWebgl2Renderer.js +1 -0
  91. package/dist/rendering/webgl2/index.d.ts +4 -0
  92. package/dist/rendering/webgl2/index.js +1 -0
  93. package/dist/rendering/webgl2/types.d.ts +24 -0
  94. package/dist/rendering/webgl2/types.js +1 -0
  95. package/dist/rendering/webgl2/webgl2CoverageResources.d.ts +29 -0
  96. package/dist/rendering/webgl2/webgl2CoverageResources.js +1 -0
  97. package/dist/rendering/webgl2/webgl2VisualizationResources.d.ts +33 -0
  98. package/dist/rendering/webgl2/webgl2VisualizationResources.js +1 -0
  99. package/dist/rendering/webgpu/baseWebgpuRenderer.d.ts +181 -0
  100. package/dist/rendering/webgpu/baseWebgpuRenderer.js +1 -0
  101. package/dist/rendering/webgpu/index.d.ts +3 -0
  102. package/dist/rendering/webgpu/index.js +1 -0
  103. package/dist/rendering/webgpu/types.d.ts +33 -0
  104. package/dist/rendering/webgpu/types.js +1 -0
  105. package/dist/rendering/webgpu/visualizationParams.d.ts +25 -0
  106. package/dist/rendering/webgpu/visualizationParams.js +1 -0
  107. package/dist/rendering/webgpu/visualizationResources.d.ts +50 -0
  108. package/dist/rendering/webgpu/visualizationResources.js +1 -0
  109. package/dist/rendering/webgpu/webgpuCoverageResources.d.ts +36 -0
  110. package/dist/rendering/webgpu/webgpuCoverageResources.js +1 -0
  111. package/dist/road-overlay/coordinateTransform.js +1 -1
  112. package/dist/road-overlay/index.cjs +2 -2
  113. package/dist/road-overlay/index.d.ts +3 -1
  114. package/dist/road-overlay/index.js +1 -1
  115. package/dist/road-overlay/index.mjs +2 -2
  116. package/dist/road-overlay/leaflet-renderers/createRenderer.d.ts +3 -7
  117. package/dist/road-overlay/leaflet-renderers/createRenderer.js +1 -1
  118. package/dist/road-overlay/leaflet-renderers/renderer.d.ts +1 -82
  119. package/dist/road-overlay/leafletLayer.d.ts +2 -0
  120. package/dist/road-overlay/leafletLayer.js +1 -1
  121. package/dist/road-overlay/m4-w-road-overlay.umd.js +2 -2
  122. package/dist/road-overlay/options.d.ts +5 -1
  123. package/dist/road-overlay/options.js +1 -1
  124. package/dist/road-overlay/rendering/index.d.ts +4 -0
  125. package/dist/road-overlay/rendering/index.js +1 -0
  126. package/dist/road-overlay/rendering/renderer.d.ts +54 -0
  127. package/dist/road-overlay/rendering/renderer.js +1 -0
  128. package/dist/road-overlay/rendering/roadRenderState.d.ts +137 -0
  129. package/dist/road-overlay/rendering/roadRenderState.js +1 -0
  130. package/dist/road-overlay/rendering/webgl2RoadRenderer.d.ts +38 -0
  131. package/dist/road-overlay/rendering/webgl2RoadRenderer.js +1 -0
  132. package/dist/road-overlay/rendering/webgpuRoadRenderer.d.ts +134 -0
  133. package/dist/road-overlay/rendering/webgpuRoadRenderer.js +1 -0
  134. package/dist/road-overlay/roadData.d.ts +3 -2
  135. package/dist/road-overlay/roadData.js +1 -1
  136. package/dist/road-overlay/roadGeometry.d.ts +2 -2
  137. package/dist/road-overlay/roadGeometry.js +1 -1
  138. package/dist/road-overlay/roadMesh.d.ts +7 -5
  139. package/dist/road-overlay/roadMesh.js +1 -1
  140. package/dist/road-overlay/types.d.ts +10 -2
  141. package/dist/shared/coordinate-shader/webgl2/index.d.ts +3 -0
  142. package/dist/shared/coordinate-shader/webgl2/index.js +1 -0
  143. package/dist/shared/coordinate-shader/webgpu/index.d.ts +5 -0
  144. package/dist/shared/coordinate-shader/webgpu/index.js +1 -0
  145. package/dist/shared/coverage/index.d.ts +1 -0
  146. package/dist/shared/coverage/index.js +1 -0
  147. package/dist/shared/coverage/types.d.ts +8 -0
  148. package/dist/shared/coverage/types.js +1 -0
  149. package/dist/shared/map/index.d.ts +2 -0
  150. package/dist/shared/map/index.js +1 -0
  151. package/dist/shared/map/leaflet.d.ts +7 -0
  152. package/dist/shared/map/leaflet.js +1 -0
  153. package/dist/shared/map/types.d.ts +19 -0
  154. package/dist/shared/map/types.js +1 -0
  155. package/dist/shared/polygon/contains.d.ts +3 -0
  156. package/dist/shared/polygon/contains.js +1 -0
  157. package/dist/shared/polygon/index.d.ts +3 -0
  158. package/dist/shared/polygon/index.js +1 -0
  159. package/dist/shared/polygon/polygonMesh.d.ts +3 -0
  160. package/dist/shared/polygon/polygonMesh.js +1 -0
  161. package/dist/shared/polygon/types.d.ts +11 -0
  162. package/dist/shared/polygon/types.js +1 -0
  163. package/dist/shared/shader/assemble.d.ts +5 -0
  164. package/dist/shared/shader/assemble.js +1 -0
  165. package/dist/shared/visualization/index.d.ts +2 -0
  166. package/dist/shared/visualization/index.js +1 -0
  167. package/dist/shared/visualization/shader/webgl2/index.d.ts +1 -0
  168. package/dist/shared/visualization/shader/webgl2/index.js +1 -0
  169. package/dist/shared/visualization/shader/webgpu/index.d.ts +10 -0
  170. package/dist/shared/visualization/shader/webgpu/index.js +1 -0
  171. package/dist/shared/visualization/types.d.ts +68 -0
  172. package/dist/shared/visualization/types.js +1 -0
  173. package/dist/shared/visualization/utils.d.ts +46 -0
  174. package/dist/shared/visualization/utils.js +1 -0
  175. package/dist/volume-mars3d/createMars3dVolumeScene.d.ts +3 -0
  176. package/dist/volume-mars3d/createMars3dVolumeScene.js +1 -0
  177. package/dist/volume-mars3d/index.cjs +1 -0
  178. package/dist/volume-mars3d/index.d.ts +2 -0
  179. package/dist/volume-mars3d/index.js +1 -0
  180. package/dist/volume-mars3d/index.mjs +1 -0
  181. package/dist/volume-mars3d/m4-w-volume-mars3d.umd.js +1 -0
  182. package/dist/volume-mars3d/mars3dCanvasCompensation.d.ts +22 -0
  183. package/dist/volume-mars3d/mars3dCanvasCompensation.js +1 -0
  184. package/dist/volume-mars3d/mars3dRaymarchShader.d.ts +1 -0
  185. package/dist/volume-mars3d/mars3dRaymarchShader.js +1 -0
  186. package/dist/volume-mars3d/mars3dVolumeLayer.d.ts +2 -0
  187. package/dist/volume-mars3d/mars3dVolumeLayer.js +1 -0
  188. package/dist/volume-mars3d/mars3dVolumeRenderer.d.ts +56 -0
  189. package/dist/volume-mars3d/mars3dVolumeRenderer.js +1 -0
  190. package/dist/volume-mars3d/volumeMars3dTypes.d.ts +85 -0
  191. package/dist/volume-mars3d/volumeMars3dTypes.js +1 -0
  192. package/dist/volume-mars3d-native/index.cjs +1 -0
  193. package/dist/volume-mars3d-native/index.d.ts +4 -0
  194. package/dist/volume-mars3d-native/index.js +1 -0
  195. package/dist/volume-mars3d-native/index.mjs +1 -0
  196. package/dist/volume-mars3d-native/liveUpdateScheduler.d.ts +10 -0
  197. package/dist/volume-mars3d-native/liveUpdateScheduler.js +1 -0
  198. package/dist/volume-mars3d-native/m4-w-volume-mars3d-native.umd.js +1 -0
  199. package/dist/volume-mars3d-native/mars3dNativeSliceLayer.d.ts +2 -0
  200. package/dist/volume-mars3d-native/mars3dNativeSliceLayer.js +1 -0
  201. package/dist/volume-mars3d-native/mars3dNativeSliceRenderer.d.ts +56 -0
  202. package/dist/volume-mars3d-native/mars3dNativeSliceRenderer.js +1 -0
  203. package/dist/volume-mars3d-native/mars3dNativeVolumeLayer.d.ts +2 -0
  204. package/dist/volume-mars3d-native/mars3dNativeVolumeLayer.js +1 -0
  205. package/dist/volume-mars3d-native/mars3dNativeVolumeRenderer.d.ts +34 -0
  206. package/dist/volume-mars3d-native/mars3dNativeVolumeRenderer.js +1 -0
  207. package/dist/volume-mars3d-native/nativeAxisSliceRenderer.d.ts +40 -0
  208. package/dist/volume-mars3d-native/nativeAxisSliceRenderer.js +1 -0
  209. package/dist/volume-mars3d-native/nativeSliceAtlas.d.ts +50 -0
  210. package/dist/volume-mars3d-native/nativeSliceAtlas.js +1 -0
  211. package/dist/volume-mars3d-native/nativeSliceRuntimeTypes.d.ts +17 -0
  212. package/dist/volume-mars3d-native/nativeSliceRuntimeTypes.js +1 -0
  213. package/dist/volume-mars3d-native/nativeTypes.d.ts +174 -0
  214. package/dist/volume-mars3d-native/nativeTypes.js +1 -0
  215. package/dist/volume-mars3d-native/nativeVoxelProvider.d.ts +6 -0
  216. package/dist/volume-mars3d-native/nativeVoxelProvider.js +1 -0
  217. package/dist/volume-mars3d-native/nativeVoxelShader.d.ts +2 -0
  218. package/dist/volume-mars3d-native/nativeVoxelShader.js +1 -0
  219. package/dist/volume-mars3d-native/voxelData.d.ts +9 -0
  220. package/dist/volume-mars3d-native/voxelData.js +1 -0
  221. package/dist/volume-scene/brickLayout.d.ts +75 -0
  222. package/dist/volume-scene/brickLayout.js +1 -0
  223. package/dist/volume-scene/brickResidency.d.ts +54 -0
  224. package/dist/volume-scene/brickResidency.js +1 -0
  225. package/dist/volume-scene/camera.d.ts +22 -0
  226. package/dist/volume-scene/camera.js +1 -0
  227. package/dist/volume-scene/cameraTypes.d.ts +37 -0
  228. package/dist/volume-scene/cameraTypes.js +1 -0
  229. package/dist/volume-scene/createVolumeScene.d.ts +4 -0
  230. package/dist/volume-scene/createVolumeScene.js +1 -0
  231. package/dist/volume-scene/geographicTypes.d.ts +16 -0
  232. package/dist/volume-scene/geographicTypes.js +1 -0
  233. package/dist/volume-scene/geographicVolume.d.ts +4 -0
  234. package/dist/volume-scene/geographicVolume.js +1 -0
  235. package/dist/volume-scene/inMemoryVolumeSource.d.ts +3 -0
  236. package/dist/volume-scene/inMemoryVolumeSource.js +1 -0
  237. package/dist/volume-scene/index.cjs +1 -0
  238. package/dist/volume-scene/index.d.ts +12 -0
  239. package/dist/volume-scene/index.js +1 -0
  240. package/dist/volume-scene/index.mjs +1 -0
  241. package/dist/volume-scene/m4-w-volume-scene.umd.js +1 -0
  242. package/dist/volume-scene/matrix.d.ts +11 -0
  243. package/dist/volume-scene/matrix.js +1 -0
  244. package/dist/volume-scene/profileTypes.d.ts +20 -0
  245. package/dist/volume-scene/profileTypes.js +1 -0
  246. package/dist/volume-scene/rendering/webgpu/index.d.ts +2 -0
  247. package/dist/volume-scene/rendering/webgpu/index.js +1 -0
  248. package/dist/volume-scene/rendering/webgpu/webgpuBrickAtlas.d.ts +59 -0
  249. package/dist/volume-scene/rendering/webgpu/webgpuBrickAtlas.js +1 -0
  250. package/dist/volume-scene/rendering/webgpu/webgpuSceneAttachments.d.ts +11 -0
  251. package/dist/volume-scene/rendering/webgpu/webgpuSceneAttachments.js +1 -0
  252. package/dist/volume-scene/rendering/webgpu/webgpuSceneMeshResources.d.ts +12 -0
  253. package/dist/volume-scene/rendering/webgpu/webgpuSceneMeshResources.js +1 -0
  254. package/dist/volume-scene/rendering/webgpu/webgpuSliceResources.d.ts +21 -0
  255. package/dist/volume-scene/rendering/webgpu/webgpuSliceResources.js +1 -0
  256. package/dist/volume-scene/rendering/webgpu/webgpuTransferResources.d.ts +16 -0
  257. package/dist/volume-scene/rendering/webgpu/webgpuTransferResources.js +1 -0
  258. package/dist/volume-scene/rendering/webgpu/webgpuVolumeSceneRenderer.d.ts +126 -0
  259. package/dist/volume-scene/rendering/webgpu/webgpuVolumeSceneRenderer.js +1 -0
  260. package/dist/volume-scene/rendering/webgpu/webgpuVolumeTypes.d.ts +108 -0
  261. package/dist/volume-scene/rendering/webgpu/webgpuVolumeTypes.js +1 -0
  262. package/dist/volume-scene/routeProfileMesh.d.ts +7 -0
  263. package/dist/volume-scene/routeProfileMesh.js +1 -0
  264. package/dist/volume-scene/sceneTypes.d.ts +136 -0
  265. package/dist/volume-scene/sceneTypes.js +1 -0
  266. package/dist/volume-scene/sliceInteractionController.d.ts +27 -0
  267. package/dist/volume-scene/sliceInteractionController.js +1 -0
  268. package/dist/volume-scene/sliceMarkerOverlay.d.ts +28 -0
  269. package/dist/volume-scene/sliceMarkerOverlay.js +1 -0
  270. package/dist/volume-scene/sliceState.d.ts +34 -0
  271. package/dist/volume-scene/sliceState.js +1 -0
  272. package/dist/volume-scene/sliceTypes.d.ts +52 -0
  273. package/dist/volume-scene/sliceTypes.js +1 -0
  274. package/dist/volume-scene/sourceTypes.d.ts +47 -0
  275. package/dist/volume-scene/sourceTypes.js +1 -0
  276. package/dist/volume-scene/transferTypes.d.ts +12 -0
  277. package/dist/volume-scene/transferTypes.js +1 -0
  278. package/dist/volume-scene/volumeBrickData.d.ts +3 -0
  279. package/dist/volume-scene/volumeBrickData.js +1 -0
  280. package/dist/volume-scene/volumeScene.d.ts +103 -0
  281. package/dist/volume-scene/volumeScene.js +1 -0
  282. package/dist/volume-scene/volumeTransfer.d.ts +8 -0
  283. package/dist/volume-scene/volumeTransfer.js +1 -0
  284. package/dist/volume-scene/volumeValidation.d.ts +27 -0
  285. package/dist/volume-scene/volumeValidation.js +1 -0
  286. package/package.json +6 -3
  287. package/dist/raster-overlay/leaflet-renderers/cpuRenderer.d.ts +0 -0
  288. package/dist/raster-overlay/leaflet-renderers/cpuRenderer.js +0 -1
  289. package/dist/raster-overlay/leaflet-renderers/rasterRendererUtils.d.ts +0 -52
  290. package/dist/raster-overlay/leaflet-renderers/rasterRendererUtils.js +0 -1
  291. package/dist/raster-overlay/leaflet-renderers/webgl2Renderer.d.ts +0 -111
  292. package/dist/raster-overlay/leaflet-renderers/webgl2Renderer.js +0 -1
  293. package/dist/raster-overlay/leaflet-renderers/webglRenderer.d.ts +0 -0
  294. package/dist/raster-overlay/leaflet-renderers/webglRenderer.js +0 -1
  295. package/dist/raster-overlay/leaflet-renderers/webgpuRenderer.d.ts +0 -114
  296. package/dist/raster-overlay/leaflet-renderers/webgpuRenderer.js +0 -1
  297. package/dist/road-overlay/leaflet-renderers/webgpuRenderer.d.ts +0 -55
  298. package/dist/road-overlay/leaflet-renderers/webgpuRenderer.js +0 -1
@@ -1,114 +0,0 @@
1
- import type { RasterColorRange, RasterColorStop, RasterGrid, RasterRendererCreateOptions, RasterColorMode, RasterSampleMode } from '../types';
2
- import type { RasterLeafletCrs, RasterLeafletRenderer, RasterLeafletRenderViewport } from './renderer';
3
- /**
4
- * WebGPU renderer for Leaflet raster overlays.
5
- * WebGPU 栅格渲染器
6
- */
7
- export declare class WebgpuRenderer implements RasterLeafletRenderer {
8
- private grid;
9
- private colorRange;
10
- private colorStops;
11
- private opacity;
12
- private colorMode;
13
- private sampleMode;
14
- private canvas;
15
- private crs;
16
- private resources;
17
- private pipeline;
18
- private texture;
19
- private textureView;
20
- private paramsBuffer;
21
- private bindGroup;
22
- private lastViewport;
23
- private destroyed;
24
- private colorStopMins;
25
- private colorStopMaxs;
26
- private colorStopColors;
27
- private colorStopMinsBuffer;
28
- private colorStopMaxsBuffer;
29
- private colorStopColorsBuffer;
30
- private readonly paramsData;
31
- constructor(options: RasterRendererCreateOptions);
32
- /**
33
- * 初始化上下文和基础绘制资源
34
- * - navigator.gpu -> adapter -> device -> context -> format -> pipeline -> buffers/textures -> bindGroup
35
- * @param canvas
36
- * @param crs
37
- */
38
- initialize(canvas: HTMLCanvasElement, crs: RasterLeafletCrs | null): Promise<void>;
39
- render(viewport: RasterLeafletRenderViewport): void;
40
- setColorRange(range: RasterColorRange): void;
41
- setColorStops(colorStops: RasterColorStop[]): void;
42
- setGrid(grid: RasterGrid): void;
43
- setOpacity(opacity: number): void;
44
- setColorMode(colorMode: RasterColorMode): void;
45
- setSampleMode(sampleMode: RasterSampleMode): void;
46
- destroy(): void;
47
- private getResources;
48
- /**
49
- * Create the minimal render pipeline for testing WebGPU drawing.
50
- * 创建最小渲染管线, 用来测试 WebGPU 是否能正常绘制
51
- * @private
52
- */
53
- private createPipeline;
54
- /**
55
- * Upload raster grid values as a single-channel float texture.
56
- * 将栅格值上传为单通道浮点纹理.
57
- * @private
58
- */
59
- private uploadGridTexture;
60
- /**
61
- * Create the GPU buffer used by the shader to read render parameters.
62
- * 创建 shader 用来读取渲染参数的 GPU buffer.
63
- * @private
64
- */
65
- private createParamsBuffer;
66
- /**
67
- * Write the current viewport and render state into the params buffer.
68
- * 把当前视口和渲染状态写入参数 buffer.
69
- * @param viewport
70
- * @private
71
- */
72
- private writeParams;
73
- /**
74
- * Create the bind group that exposes buffers and textures to the shader.
75
- * 创建 bind group, 把 buffer 和 texture 暴露给 shader.
76
- *
77
- * - Binding layout: 绑定布局:
78
- * - binding 0: params buffer 参数buffer
79
- * - binding 1: raster value texture 栅格值纹理
80
- * @private
81
- */
82
- private createBindGroup;
83
- /**
84
- * Convert color stops into flat arrays for GPU upload.
85
- * 将色标配置转换成可上传到 GPU 的扁平数组.
86
- * @private
87
- */
88
- private updateColorStopArrays;
89
- /**
90
- * Create GPU buffers for color stop data.
91
- * 创建色标数据对应的 GPU buffer.
92
- * @private
93
- */
94
- private createColorStopBuffers;
95
- /**
96
- * Write color stop arrays into GPU buffers.
97
- * 把色标数组写入 GPU buffer.
98
- * @private
99
- */
100
- private writeColorStops;
101
- /**
102
- * Watch for WebGPU device lost events and attempt to restore the device.
103
- * 监听 WebGPU 设备丢失事件, 并尝试恢复设备.
104
- * @param device
105
- * @private
106
- */
107
- private watchDeviceLost;
108
- /**
109
- * Attempt to restore the WebGPU device and reinitialize resources.
110
- * 尝试恢复 WebGPU 设备并重新初始化资源.
111
- * @private
112
- */
113
- private restoreDevice;
114
- }
@@ -1 +0,0 @@
1
- const _0x4754f4=_0x2a07;(function(_0x478c5f,_0x2ee4e3){const _0x47ada1=_0x2a07,_0x3e5bad=_0x478c5f();while(!![]){try{const _0x22ff00=-parseInt(_0x47ada1(0xc3))/0x1*(-parseInt(_0x47ada1(0xd4))/0x2)+-parseInt(_0x47ada1(0xd7))/0x3*(parseInt(_0x47ada1(0xdb))/0x4)+-parseInt(_0x47ada1(0xcd))/0x5*(parseInt(_0x47ada1(0xd6))/0x6)+-parseInt(_0x47ada1(0x101))/0x7+parseInt(_0x47ada1(0x11e))/0x8*(-parseInt(_0x47ada1(0x128))/0x9)+-parseInt(_0x47ada1(0xcc))/0xa+-parseInt(_0x47ada1(0x102))/0xb*(-parseInt(_0x47ada1(0xf6))/0xc);if(_0x22ff00===_0x2ee4e3)break;else _0x3e5bad['push'](_0x3e5bad['shift']());}catch(_0x2819fd){_0x3e5bad['push'](_0x3e5bad['shift']());}}}(_0x3577,0x6215c));import _0x156980 from'./shader/webgpu/vertex-fullscreen.wgsl?raw';import _0x133145 from'./shader/webgpu/fragment-common.wgsl?raw';import _0x4be263 from'./shader/webgpu/coordinate-3857.wgsl?raw';import _0x58034a from'./shader/webgpu/coordinate-3395.wgsl?raw';import _0x43f530 from'./shader/webgpu/coordinate-4326.wgsl?raw';import _0x40daa9 from'./shader/webgpu/coordinate-simple.wgsl?raw';import{clampOpacity,colorModeToShaderValue,createColorStopArrays,createFragmentSource,sampleModeToShaderValue}from'./rasterRendererUtils';const coordinateSources={'epsg3857':_0x4be263,'epsg4326':_0x43f530,'epsg3395':_0x58034a,'simple':_0x40daa9};export class WebgpuRenderer{[_0x4754f4(0xe4)];[_0x4754f4(0x100)];[_0x4754f4(0xde)];[_0x4754f4(0x11d)];[_0x4754f4(0x109)];[_0x4754f4(0xcf)];[_0x4754f4(0x11f)]=null;[_0x4754f4(0xdd)]=null;[_0x4754f4(0x113)]=null;[_0x4754f4(0xc5)]=null;[_0x4754f4(0xf2)]=null;[_0x4754f4(0xd3)]=null;[_0x4754f4(0xba)]=null;['bindGroup']=null;[_0x4754f4(0xca)]=null;[_0x4754f4(0xe0)]=![];[_0x4754f4(0x11b)];[_0x4754f4(0xf8)];[_0x4754f4(0xf9)];[_0x4754f4(0xe7)]=null;[_0x4754f4(0xaf)]=null;[_0x4754f4(0xb1)]=null;[_0x4754f4(0x110)]=new Float32Array(0x1c);constructor(_0x272b80){const _0x5ef9e3=_0x4754f4;this[_0x5ef9e3(0xe4)]=_0x272b80[_0x5ef9e3(0xe4)],this['colorRange']=_0x272b80[_0x5ef9e3(0x100)]??null,this[_0x5ef9e3(0xde)]=[..._0x272b80[_0x5ef9e3(0xde)]],this[_0x5ef9e3(0x11d)]=_0x272b80[_0x5ef9e3(0x11d)]??0x1,this[_0x5ef9e3(0x109)]=_0x272b80[_0x5ef9e3(0x109)]??_0x5ef9e3(0xff),this[_0x5ef9e3(0xcf)]=_0x272b80[_0x5ef9e3(0xcf)]??_0x5ef9e3(0xc7),this[_0x5ef9e3(0x11b)]=new Float32Array(this[_0x5ef9e3(0xde)][_0x5ef9e3(0xdc)]),this['colorStopMaxs']=new Float32Array(this[_0x5ef9e3(0xde)][_0x5ef9e3(0xdc)]),this[_0x5ef9e3(0xf9)]=new Float32Array(this[_0x5ef9e3(0xde)][_0x5ef9e3(0xdc)]*0x4),this['updateColorStopArrays']();}async[_0x4754f4(0xdf)](_0x14fa99,_0x27e910){const _0x5ca1fc=_0x4754f4;this['destroyed']=![],this['canvas']=_0x14fa99,this[_0x5ca1fc(0xdd)]=_0x27e910;if(!_0x27e910)return;const _0x3fdbf3=navigator[_0x5ca1fc(0x116)];if(!_0x3fdbf3)throw new Error(_0x5ca1fc(0xf0));const _0xc031d3=await _0x3fdbf3['requestAdapter']();if(!_0xc031d3)throw new Error(_0x5ca1fc(0xb2));const _0x39d350=await _0xc031d3[_0x5ca1fc(0xd1)]();this[_0x5ca1fc(0xd5)](_0x39d350);const _0x5b9821=_0x14fa99[_0x5ca1fc(0x103)](_0x5ca1fc(0x118));if(!_0x5b9821)throw new Error(_0x5ca1fc(0x10b));const _0x456e05=_0x3fdbf3[_0x5ca1fc(0x106)]();_0x5b9821['configure']({'device':_0x39d350,'format':_0x456e05,'alphaMode':_0x5ca1fc(0x10d)}),this[_0x5ca1fc(0x113)]={'adapter':_0xc031d3,'device':_0x39d350,'context':_0x5b9821,'format':_0x456e05},this[_0x5ca1fc(0xbd)](),this[_0x5ca1fc(0x10e)](),this['createColorStopBuffers'](),this[_0x5ca1fc(0xd2)](),this[_0x5ca1fc(0xfa)]();}[_0x4754f4(0x104)](_0x50e11f){const _0x1971e4=_0x4754f4;this['lastViewport']=_0x50e11f;if(!this['crs'])return;this['writeParams'](_0x50e11f);const _0x4755fc=this[_0x1971e4(0xe6)](),_0x375305=_0x4755fc[_0x1971e4(0xe9)],_0x25cde6=_0x375305['createCommandEncoder'](),_0xbd8f95=_0x25cde6[_0x1971e4(0x111)]({'colorAttachments':[{'view':_0x4755fc[_0x1971e4(0xbf)][_0x1971e4(0xbb)]()[_0x1971e4(0xea)](),'clearValue':{'r':0x0,'g':0x0,'b':0x0,'a':0x0},'loadOp':_0x1971e4(0x10c),'storeOp':'store'}]});if(!this['pipeline'])throw new Error(_0x1971e4(0xf5));if(!this['bindGroup'])throw new Error(_0x1971e4(0xbe));_0xbd8f95['setPipeline'](this[_0x1971e4(0xc5)]),_0xbd8f95[_0x1971e4(0x119)](0x0,this['bindGroup']),_0xbd8f95[_0x1971e4(0xec)](0x6),_0xbd8f95[_0x1971e4(0xc1)](),_0x375305[_0x1971e4(0xb3)][_0x1971e4(0xc9)]([_0x25cde6['finish']()]);}[_0x4754f4(0x11a)](_0x417607){const _0x3f6701=_0x4754f4;this[_0x3f6701(0x100)]=_0x417607;}[_0x4754f4(0xce)](_0x417563){const _0x2ab503=_0x4754f4;if(_0x417563[_0x2ab503(0xdc)]===0x0)throw new Error(_0x2ab503(0xfd));this[_0x2ab503(0xde)]=[..._0x417563],this[_0x2ab503(0x123)](),this[_0x2ab503(0x10a)](),this[_0x2ab503(0xfa)]();}['setGrid'](_0x352813){const _0x28acd5=_0x4754f4;this['grid']=_0x352813,this[_0x28acd5(0xd2)](),this[_0x28acd5(0xfa)]();}['setOpacity'](_0x20460c){this['opacity']=clampOpacity(_0x20460c);}[_0x4754f4(0xe3)](_0x3eda23){const _0x2b0d98=_0x4754f4;this[_0x2b0d98(0x109)]=_0x3eda23;}[_0x4754f4(0xf4)](_0x506c14){const _0x5201fa=_0x4754f4;this[_0x5201fa(0xcf)]=_0x506c14;}[_0x4754f4(0xe5)](){const _0xf8c55=_0x4754f4;this[_0xf8c55(0xe0)]=!![],this['texture']?.[_0xf8c55(0xe5)](),this['paramsBuffer']?.[_0xf8c55(0xe5)](),this['colorStopMinsBuffer']?.[_0xf8c55(0xe5)](),this[_0xf8c55(0xaf)]?.[_0xf8c55(0xe5)](),this[_0xf8c55(0xb1)]?.[_0xf8c55(0xe5)](),this[_0xf8c55(0x11f)]=null,this[_0xf8c55(0xdd)]=null,this[_0xf8c55(0x113)]=null,this['pipeline']=null,this[_0xf8c55(0xf2)]=null,this[_0xf8c55(0xd3)]=null,this[_0xf8c55(0xba)]=null,this['bindGroup']=null,this[_0xf8c55(0xe7)]=null,this[_0xf8c55(0xaf)]=null,this[_0xf8c55(0xb1)]=null;}[_0x4754f4(0xe6)](){const _0x400f6a=_0x4754f4;if(!this[_0x400f6a(0x113)])throw new Error('WebGPU\x20resources\x20are\x20not\x20initialized.\x20WebGPU资源未初始化.');return this[_0x400f6a(0x113)];}[_0x4754f4(0xbd)](){const _0x53f794=_0x4754f4,_0x46ee74=this[_0x53f794(0xe6)](),_0x1265e6=_0x46ee74['device'][_0x53f794(0xb9)]({'code':_0x156980}),_0x1d1a85=this[_0x53f794(0xdd)]?coordinateSources[this['crs']]??_0x4be263:_0x4be263,_0x45fda3=_0x46ee74[_0x53f794(0xe9)][_0x53f794(0xb9)]({'code':createFragmentSource(_0x133145,_0x1d1a85)});this['pipeline']=_0x46ee74[_0x53f794(0xe9)]['createRenderPipeline']({'layout':_0x53f794(0xc0),'vertex':{'module':_0x1265e6,'entryPoint':_0x53f794(0xe8)},'fragment':{'module':_0x45fda3,'entryPoint':_0x53f794(0x117),'targets':[{'format':_0x46ee74[_0x53f794(0xeb)]}]},'primitive':{'topology':_0x53f794(0xf3)}});}[_0x4754f4(0xd2)](){const _0x30edfe=_0x4754f4,_0x5f1481=this[_0x30edfe(0x113)];if(!_0x5f1481)return;const _0x299114=_0x5f1481['device'][_0x30edfe(0xb0)]['maxTextureDimension2D'];if(this[_0x30edfe(0xe4)][_0x30edfe(0xbc)]>_0x299114||this[_0x30edfe(0xe4)]['height']>_0x299114)throw new Error(_0x30edfe(0x107)+this['grid'][_0x30edfe(0xbc)]+'x'+this[_0x30edfe(0xe4)]['height']+_0x30edfe(0xfe)+_0x299114+_0x30edfe(0xb5)+this[_0x30edfe(0xe4)][_0x30edfe(0xbc)]+'x'+this['grid'][_0x30edfe(0xd8)]+'\x20超过GPU纹理限制\x20'+_0x299114+'.');this['texture']?.['destroy'](),this[_0x30edfe(0xf2)]=_0x5f1481[_0x30edfe(0xe9)][_0x30edfe(0xef)]({'size':{'width':this[_0x30edfe(0xe4)]['width'],'height':this[_0x30edfe(0xe4)][_0x30edfe(0xd8)]},'format':'r32float','usage':GPUTextureUsage[_0x30edfe(0xed)]|GPUTextureUsage[_0x30edfe(0xda)]}),this[_0x30edfe(0xd3)]=this[_0x30edfe(0xf2)]['createView']();const _0x558108=createPaddedGridValues(this[_0x30edfe(0xe4)]);_0x5f1481[_0x30edfe(0xe9)][_0x30edfe(0xb3)][_0x30edfe(0x129)]({'texture':this[_0x30edfe(0xf2)]},_0x558108[_0x30edfe(0x122)],{'bytesPerRow':_0x558108[_0x30edfe(0xf7)],'rowsPerImage':this['grid']['height']},{'width':this[_0x30edfe(0xe4)]['width'],'height':this[_0x30edfe(0xe4)][_0x30edfe(0xd8)]});}[_0x4754f4(0x10e)](){const _0x29ba89=_0x4754f4,_0x33a43a=this[_0x29ba89(0xe6)]();this['paramsBuffer']?.['destroy'](),this['paramsBuffer']=_0x33a43a[_0x29ba89(0xe9)][_0x29ba89(0xfc)]({'size':this[_0x29ba89(0x110)][_0x29ba89(0xc2)],'usage':GPUBufferUsage[_0x29ba89(0xc4)]|GPUBufferUsage[_0x29ba89(0xda)]});}[_0x4754f4(0x115)](_0x20c26b){const _0x51a5f8=_0x4754f4,_0x126c5f=this[_0x51a5f8(0xe6)]();if(!this[_0x51a5f8(0xba)])return;const _0x1d4869=this[_0x51a5f8(0xde)][0x0],_0x1e1841=this['colorStops'][this['colorStops']['length']-0x1],_0x2465fd=this[_0x51a5f8(0x110)];_0x2465fd[0x0]=_0x20c26b['canvasWidth'],_0x2465fd[0x1]=_0x20c26b['canvasHeight'],_0x2465fd[0x2]=_0x20c26b[_0x51a5f8(0xd0)],_0x2465fd[0x3]=_0x20c26b[_0x51a5f8(0xe1)],_0x2465fd[0x4]=_0x20c26b[_0x51a5f8(0x10f)],_0x2465fd[0x5]=_0x20c26b[_0x51a5f8(0xb4)],_0x2465fd[0x6]=0x0,_0x2465fd[0x7]=0x0,_0x2465fd[0x8]=this['grid'][_0x51a5f8(0xd9)],_0x2465fd[0x9]=this['grid'][_0x51a5f8(0xf1)],_0x2465fd[0xa]=this[_0x51a5f8(0xe4)][_0x51a5f8(0xfb)],_0x2465fd[0xb]=this[_0x51a5f8(0xe4)][_0x51a5f8(0xee)],_0x2465fd[0xc]=this[_0x51a5f8(0xe4)][_0x51a5f8(0xbc)],_0x2465fd[0xd]=this[_0x51a5f8(0xe4)][_0x51a5f8(0xd8)],_0x2465fd[0xe]=this[_0x51a5f8(0xe4)][_0x51a5f8(0xb8)],_0x2465fd[0xf]=this[_0x51a5f8(0xde)][_0x51a5f8(0xdc)],_0x2465fd[0x10]=this[_0x51a5f8(0x100)]?.['minValue']??_0x1d4869[_0x51a5f8(0x108)],_0x2465fd[0x11]=this[_0x51a5f8(0x100)]?.['maxValue']??_0x1e1841[_0x51a5f8(0xb7)],_0x2465fd[0x12]=this[_0x51a5f8(0x11d)],_0x2465fd[0x13]=0x0,_0x2465fd[0x14]=colorModeToShaderValue(this['colorMode']),_0x2465fd[0x15]=sampleModeToShaderValue(this[_0x51a5f8(0xcf)]),_0x2465fd[0x16]=0x0,_0x2465fd[0x17]=0x0,_0x2465fd[0x18]=this[_0x51a5f8(0xe4)][_0x51a5f8(0x121)]??0x0,_0x2465fd[0x19]=this[_0x51a5f8(0xe4)]['noData']===undefined?0x0:0x1,_0x2465fd[0x1a]=0x0,_0x2465fd[0x1b]=0x0,_0x126c5f[_0x51a5f8(0xe9)][_0x51a5f8(0xb3)][_0x51a5f8(0xe2)](this['paramsBuffer'],0x0,_0x2465fd);}[_0x4754f4(0xfa)](){const _0x48a8a5=_0x4754f4,_0x35ff41=this[_0x48a8a5(0x113)];if(!_0x35ff41||!this[_0x48a8a5(0xc5)]||!this[_0x48a8a5(0xba)]||!this[_0x48a8a5(0xd3)]||!this[_0x48a8a5(0xe7)]||!this[_0x48a8a5(0xaf)]||!this[_0x48a8a5(0xb1)])return;this[_0x48a8a5(0x112)]=_0x35ff41[_0x48a8a5(0xe9)][_0x48a8a5(0xfa)]({'layout':this[_0x48a8a5(0xc5)][_0x48a8a5(0x126)](0x0),'entries':[{'binding':0x0,'resource':{'buffer':this['paramsBuffer']}},{'binding':0x1,'resource':this[_0x48a8a5(0xd3)]},{'binding':0x2,'resource':{'buffer':this[_0x48a8a5(0xe7)]}},{'binding':0x3,'resource':{'buffer':this[_0x48a8a5(0xaf)]}},{'binding':0x4,'resource':{'buffer':this[_0x48a8a5(0xb1)]}}]});}[_0x4754f4(0x123)](){const _0xc61569=_0x4754f4,_0x61216e=createColorStopArrays(this[_0xc61569(0xde)]);this[_0xc61569(0x11b)]=_0x61216e[_0xc61569(0xcb)],this[_0xc61569(0xf8)]=_0x61216e[_0xc61569(0x12b)],this[_0xc61569(0xf9)]=_0x61216e[_0xc61569(0x11c)];}['createColorStopBuffers'](){const _0x14cfe5=_0x4754f4,_0x3ddd44=this['getResources']();this['colorStopMinsBuffer']?.['destroy'](),this[_0x14cfe5(0xaf)]?.[_0x14cfe5(0xe5)](),this[_0x14cfe5(0xb1)]?.[_0x14cfe5(0xe5)](),this[_0x14cfe5(0xe7)]=createStorageBuffer(_0x3ddd44[_0x14cfe5(0xe9)],this['colorStopMins'][_0x14cfe5(0xc2)]),this[_0x14cfe5(0xaf)]=createStorageBuffer(_0x3ddd44[_0x14cfe5(0xe9)],this[_0x14cfe5(0xf8)]['byteLength']),this[_0x14cfe5(0xb1)]=createStorageBuffer(_0x3ddd44[_0x14cfe5(0xe9)],this[_0x14cfe5(0xf9)][_0x14cfe5(0xc2)]),this[_0x14cfe5(0xb6)]();}[_0x4754f4(0xb6)](){const _0x2cb6a3=_0x4754f4,_0x4d551a=this[_0x2cb6a3(0x113)];if(!_0x4d551a||!this[_0x2cb6a3(0xe7)]||!this[_0x2cb6a3(0xaf)]||!this[_0x2cb6a3(0xb1)])return;_0x4d551a[_0x2cb6a3(0xe9)]['queue'][_0x2cb6a3(0xe2)](this['colorStopMinsBuffer'],0x0,toGPUFloat32Array(this[_0x2cb6a3(0x11b)])),_0x4d551a[_0x2cb6a3(0xe9)][_0x2cb6a3(0xb3)][_0x2cb6a3(0xe2)](this[_0x2cb6a3(0xaf)],0x0,toGPUFloat32Array(this['colorStopMaxs'])),_0x4d551a[_0x2cb6a3(0xe9)][_0x2cb6a3(0xb3)][_0x2cb6a3(0xe2)](this[_0x2cb6a3(0xb1)],0x0,toGPUFloat32Array(this['colorStopColors']));}[_0x4754f4(0xd5)](_0x4e4bd5){const _0x2ecf69=_0x4754f4;_0x4e4bd5[_0x2ecf69(0x105)][_0x2ecf69(0x124)](_0x4b61d7=>{const _0x5ae83a=_0x2ecf69;if(this['destroyed'])return;if(this['resources']?.[_0x5ae83a(0xe9)]!==_0x4e4bd5)return;console[_0x5ae83a(0x120)](_0x5ae83a(0x125)+_0x4b61d7[_0x5ae83a(0xc8)]+_0x5ae83a(0x114)+_0x4b61d7[_0x5ae83a(0xc8)]+_0x5ae83a(0x12a)),void this[_0x5ae83a(0x127)]();});}async[_0x4754f4(0x127)](){const _0x2e223b=_0x4754f4,_0x2e1001=this[_0x2e223b(0x11f)],_0x62a98e=this[_0x2e223b(0xdd)];if(!_0x2e1001||!_0x62a98e)return;this[_0x2e223b(0xc5)]=null,this['texture']=null,this[_0x2e223b(0xd3)]=null,this['paramsBuffer']=null,this[_0x2e223b(0x112)]=null,this[_0x2e223b(0xe7)]=null,this[_0x2e223b(0xaf)]=null,this[_0x2e223b(0xb1)]=null,this[_0x2e223b(0x113)]=null,await this[_0x2e223b(0xdf)](_0x2e1001,_0x62a98e),this[_0x2e223b(0xca)]&&this['render'](this[_0x2e223b(0xca)]);}}function _0x3577(){const _0x15c683=['Failed\x20to\x20get\x20GPU\x20adapter.\x20获取GPU适配器失败.','queue','devicePixelRatio','.\x20栅格大小\x20','writeColorStops','max','valueScale','createShaderModule','paramsBuffer','getCurrentTexture','width','createPipeline','Bind\x20group\x20is\x20not\x20initialized.\x20绑定组未初始化.','context','auto','end','byteLength','4224BjYksY','UNIFORM','pipeline','BYTES_PER_ELEMENT','interpolate','message','submit','lastViewport','mins','666540OlQtYw','155935CRREAy','setColorStops','sampleMode','worldTopLeftX','requestDevice','uploadGridTexture','textureView','180kqpUeK','watchDeviceLost','60Wffphr','10794sNSMcq','height','minLng','COPY_DST','480MuJRle','length','crs','colorStops','initialize','destroyed','worldTopLeftY','writeBuffer','setColorMode','grid','destroy','getResources','colorStopMinsBuffer','vertexMain','device','createView','format','draw','TEXTURE_BINDING','maxLat','createTexture','WebGPU\x20is\x20not\x20supported\x20in\x20this\x20browser.\x20当前浏览器不支持WebGPU.','maxLng','texture','triangle-list','setSampleMode','Render\x20pipeline\x20is\x20not\x20initialized.\x20渲染管线未初始化.','72hnPYsr','bytesPerRow','colorStopMaxs','colorStopColors','createBindGroup','minLat','createBuffer','Color\x20stops\x20cannot\x20be\x20empty.\x20颜色停止点不能为空.','\x20exceeds\x20GPU\x20texture\x20limit\x20','step','colorRange','1022574JPkdib','2569402fheAwk','getContext','render','lost','getPreferredCanvasFormat','Raster\x20size\x20','min','colorMode','createColorStopBuffers','Failed\x20to\x20get\x20WebGPU\x20context.\x20获取WebGPU上下文失败.','clear','premultiplied','createParamsBuffer','zoom','paramsData','beginRenderPass','bindGroup','resources','.\x20Attempting\x20to\x20reinitialize.\x20WebGPU设备丢失:\x20','writeParams','gpu','fragmentMain','webgpu','setBindGroup','setColorRange','colorStopMins','colors','opacity','677648OmSoJZ','canvas','warn','noData','values','updateColorStopArrays','then','WebGPU\x20device\x20lost:\x20','getBindGroupLayout','restoreDevice','45fVzfRt','writeTexture','.\x20尝试重新初始化.','maxs','colorStopMaxsBuffer','limits','colorStopColorsBuffer'];_0x3577=function(){return _0x15c683;};return _0x3577();}function _0x2a07(_0x2532c0,_0x2b3a62){const _0x3577ad=_0x3577();return _0x2a07=function(_0x2a0739,_0x459c7c){_0x2a0739=_0x2a0739-0xaf;let _0x407f50=_0x3577ad[_0x2a0739];return _0x407f50;},_0x2a07(_0x2532c0,_0x2b3a62);}const createPaddedGridValues=_0x1f5f45=>{const _0x49ea86=_0x4754f4,_0x76d400=_0x1f5f45[_0x49ea86(0xbc)]*Float32Array[_0x49ea86(0xc6)],_0x4ba099=Math['ceil'](_0x76d400/0x100)*0x100;if(_0x76d400===_0x4ba099)return{'values':new Float32Array(_0x1f5f45[_0x49ea86(0x122)]),'bytesPerRow':_0x4ba099};const _0x3cee78=_0x4ba099/Float32Array['BYTES_PER_ELEMENT'],_0x478b48=new Float32Array(_0x3cee78*_0x1f5f45[_0x49ea86(0xd8)]);for(let _0xd13175=0x0;_0xd13175<_0x1f5f45[_0x49ea86(0xd8)];_0xd13175+=0x1){const _0x4489b2=_0xd13175*_0x1f5f45[_0x49ea86(0xbc)],_0x1d5fce=_0xd13175*_0x3cee78;_0x478b48['set'](_0x1f5f45[_0x49ea86(0x122)]['subarray'](_0x4489b2,_0x4489b2+_0x1f5f45['width']),_0x1d5fce);}return{'values':_0x478b48,'bytesPerRow':_0x4ba099};},createStorageBuffer=(_0x29b014,_0x50541b)=>_0x29b014[_0x4754f4(0xfc)]({'size':_0x50541b,'usage':GPUBufferUsage['STORAGE']|GPUBufferUsage[_0x4754f4(0xda)]}),toGPUFloat32Array=_0x4018e8=>{return new Float32Array(_0x4018e8);};
@@ -1,55 +0,0 @@
1
- import type { RasterColorMode, RasterColorRange, RasterColorStop, RasterGrid, RasterSampleMode } from '../../raster-overlay';
2
- import type { RoadMesh } from '../types';
3
- import type { RoadLeafletCrs, RoadLeafletRenderer, RoadLeafletRenderViewport } from './renderer';
4
- /**
5
- * WebGPU road renderer.
6
- * WebGPU 道路渲染器
7
- */
8
- export declare class WebGpuRoadRenderer implements RoadLeafletRenderer {
9
- private canvas;
10
- private crs;
11
- private mesh;
12
- private grid;
13
- private colorStops;
14
- private colorRange;
15
- private opacity;
16
- private lineWidth;
17
- private colorMode;
18
- private sampleMode;
19
- private adapter;
20
- private device;
21
- private context;
22
- private format;
23
- private vertexBuffer;
24
- private pipeline;
25
- private paramsBuffer;
26
- private bindGroup;
27
- private readonly paramsData;
28
- private texture;
29
- private textureView;
30
- private colorStopMins;
31
- private colorStopMaxs;
32
- private colorStopColors;
33
- private colorStopMinsBuffer;
34
- private colorStopMaxsBuffer;
35
- private colorStopColorsBuffer;
36
- initialize(canvas: HTMLCanvasElement, crs: RoadLeafletCrs | null): Promise<void>;
37
- render(viewport: RoadLeafletRenderViewport): void | Promise<void>;
38
- setColorMode(colorMode: RasterColorMode): void;
39
- setColorRange(range: RasterColorRange): void;
40
- setColorStops(colorStops: RasterColorStop[]): void;
41
- setGrid(grid: RasterGrid): void | Promise<void>;
42
- setLineWidth(lineWidth: number): void;
43
- setMesh(mesh: RoadMesh): void;
44
- setOpacity(opacity: number): void;
45
- setSampleMode(sampleMode: RasterSampleMode): void;
46
- destroy(): void;
47
- private createPipeline;
48
- private writeParams;
49
- private getResources;
50
- private createParamsBuffer;
51
- private updateColorStopArrays;
52
- private createColorStopBuffers;
53
- private uploadGridTexture;
54
- private createBindGroup;
55
- }
@@ -1 +0,0 @@
1
- function _0x4394(_0xecb3e7,_0x4012c8){const _0x50aa79=_0x50aa();return _0x4394=function(_0x439444,_0x312550){_0x439444=_0x439444-0x182;let _0x46296d=_0x50aa79[_0x439444];return _0x46296d;},_0x4394(_0xecb3e7,_0x4012c8);}const _0x1b73b0=_0x4394;function _0x50aa(){const _0x2f2d57=['COPY_DST','4224325YGmPeS','colorStopMaxsBuffer','TEXTURE_BINDING','byteLength','width','colorStopMinsBuffer','77QEIBCP','\x20exceeds\x20GPU\x20texture\x20limit\x20','vertexMain','updateColorStopArrays','bindGroup','STORAGE','vertexBuffer','9HZFtYq','float32x2','r32float','colorStops','36132ueYhHY','colorMode','worldTopLeftY','grid','one-minus-src-alpha','getBindGroupLayout','canvas','maxLng','maxLat','queue','clear','max','createParamsBuffer','colorRange','createRenderPipeline','createPipeline','destroy','Road\x20raster\x20size\x20','2324480PAyIWk','uploadGridTexture','sampleMode','vertices','createShaderModule','device','zoom','setGrid','maxs','Failed\x20to\x20get\x20WebGPU\x20canvas\x20context.\x20获取\x20WebGPU\x20canvas\x20context\x20失败','format','setOpacity','limits','maxValue','6cVAAfJ','writeParams','textureView','float32','fragmentMain','context','mesh','setMesh','VERTEX','4iytpQz','draw','auto','colorStopColors','createView','minValue','colorStopMins','createBindGroup','crs','finish','UNIFORM','createColorStopBuffers','devicePixelRatio','step','opacity','minLat','getPreferredCanvasFormat','length','mins','getCurrentTexture','height','minLng','one','lineWidth','setColorRange','7196935sSZqbe','getResources','triangle-list','noData','BYTES_PER_ELEMENT','canvasWidth','createBuffer','paramsBuffer','setPipeline','initialize','premultiplied','min','bytesPerRow','setColorMode','colorStopMaxs','92244vRUoty','colorStopColorsBuffer','ceil','end','values','writeBuffer','pipeline','3776408sxpWRH','texture','requestAdapter','11ObvTcD','store','WebGPU\x20is\x20not\x20supported\x20in\x20this\x20browser.\x20当前浏览器不支持\x20WebGPU','setBindGroup','set','Failed\x20to\x20request\x20WebGPU\x20adapter.\x20获取\x20WebGPU\x20adapter\x20失败','render','worldTopLeftX','configure','canvasHeight','valueScale','3968067xXdAXK'];_0x50aa=function(){return _0x2f2d57;};return _0x50aa();}(function(_0x14ae04,_0x2c3197){const _0x26a577=_0x4394,_0xf36a4f=_0x14ae04();while(!![]){try{const _0x214081=parseInt(_0x26a577(0x1cc))/0x1*(parseInt(_0x26a577(0x1ea))/0x2)+parseInt(_0x26a577(0x1d7))/0x3*(parseInt(_0x26a577(0x19a))/0x4)+-parseInt(_0x26a577(0x1b3))/0x5*(parseInt(_0x26a577(0x191))/0x6)+parseInt(_0x26a577(0x1d9))/0x7+parseInt(_0x26a577(0x1c9))/0x8+-parseInt(_0x26a577(0x1e6))/0x9*(parseInt(_0x26a577(0x183))/0xa)+parseInt(_0x26a577(0x1df))/0xb*(parseInt(_0x26a577(0x1c2))/0xc);if(_0x214081===_0x2c3197)break;else _0xf36a4f['push'](_0xf36a4f['shift']());}catch(_0x29b008){_0xf36a4f['push'](_0xf36a4f['shift']());}}}(_0x50aa,0xeefe3));import{colorModeToShaderValue,createColorStopArrays,sampleModeToShaderValue}from'../../raster-overlay/leaflet-renderers/rasterRendererUtils';import _0x47a960 from'./shader/webgpu/road-vertex.wgsl?raw';import _0x4fb59f from'./shader/webgpu/road-fragment.wgsl?raw';import _0x4d8fa7 from'./shader/webgpu/coordinate-4326.wgsl?raw';import _0x126e87 from'./shader/webgpu/coordinate-3857.wgsl?raw';import _0x5040e0 from'./shader/webgpu/coordinate-3395.wgsl?raw';import _0x401c41 from'./shader/webgpu/coordinate-simple.wgsl?raw';const ROAD_PARAMS_FLOAT_COUNT=0x1c,ROAD_PARAMS_BUFFER_SIZE=ROAD_PARAMS_FLOAT_COUNT*Float32Array[_0x1b73b0(0x1b7)],coordinateShaderSources={'epsg4326':_0x4d8fa7,'epsg3857':_0x126e87,'epsg3395':_0x5040e0,'simple':_0x401c41};export class WebGpuRoadRenderer{['canvas']=null;[_0x1b73b0(0x1a2)]=null;['mesh']=null;[_0x1b73b0(0x1ed)]=null;[_0x1b73b0(0x1e9)]=[];['colorRange']=null;['opacity']=0x1;[_0x1b73b0(0x1b1)]=0x3;[_0x1b73b0(0x1eb)]=_0x1b73b0(0x1a7);[_0x1b73b0(0x185)]='interpolate';['adapter']=null;[_0x1b73b0(0x188)]=null;[_0x1b73b0(0x196)]=null;['format']=null;[_0x1b73b0(0x1e5)]=null;['pipeline']=null;[_0x1b73b0(0x1ba)]=null;[_0x1b73b0(0x1e3)]=null;['paramsData']=new Float32Array(ROAD_PARAMS_FLOAT_COUNT);[_0x1b73b0(0x1ca)]=null;[_0x1b73b0(0x193)]=null;[_0x1b73b0(0x1a0)]=new Float32Array(0x0);[_0x1b73b0(0x1c1)]=new Float32Array(0x0);['colorStopColors']=new Float32Array(0x0);[_0x1b73b0(0x1de)]=null;[_0x1b73b0(0x1da)]=null;[_0x1b73b0(0x1c3)]=null;async[_0x1b73b0(0x1bc)](_0x3135f2,_0x5ef255){const _0x59122b=_0x1b73b0;this['canvas']=_0x3135f2,this[_0x59122b(0x1a2)]=_0x5ef255;const _0x416626=navigator['gpu'];if(!_0x416626)throw new Error(_0x59122b(0x1ce));const _0x217db0=await _0x416626[_0x59122b(0x1cb)]();if(!_0x217db0)throw new Error(_0x59122b(0x1d1));const _0x32df00=await _0x217db0['requestDevice'](),_0x3afd16=_0x3135f2['getContext']('webgpu');if(!_0x3afd16)throw new Error(_0x59122b(0x18c));const _0x4c2b1c=_0x416626[_0x59122b(0x1aa)]();_0x3afd16[_0x59122b(0x1d4)]({'device':_0x32df00,'format':_0x4c2b1c,'alphaMode':_0x59122b(0x1bd)}),this['adapter']=_0x217db0,this[_0x59122b(0x188)]=_0x32df00,this[_0x59122b(0x196)]=_0x3afd16,this[_0x59122b(0x18d)]=_0x4c2b1c,this[_0x59122b(0x1c8)]=this['createPipeline'](_0x32df00,_0x4c2b1c),this['createParamsBuffer'](),this['createColorStopBuffers'](),this['uploadGridTexture'](),this[_0x59122b(0x1a1)]();}[_0x1b73b0(0x1d2)](_0x9a4ab4){const _0xc22e12=_0x1b73b0,_0x241626=this[_0xc22e12(0x1b4)]();if(!_0x241626)return;this[_0xc22e12(0x192)](_0x9a4ab4);const _0x5de2c4=_0x241626[_0xc22e12(0x188)]['createCommandEncoder'](),_0x43b4fa=_0x241626['context'][_0xc22e12(0x1ad)]()[_0xc22e12(0x19e)](),_0x52df32=_0x5de2c4['beginRenderPass']({'colorAttachments':[{'view':_0x43b4fa,'clearValue':{'r':0x0,'g':0x0,'b':0x0,'a':0x0},'loadOp':_0xc22e12(0x1f4),'storeOp':_0xc22e12(0x1cd)}]});_0x52df32[_0xc22e12(0x1bb)](_0x241626[_0xc22e12(0x1c8)]),_0x52df32[_0xc22e12(0x1cf)](0x0,_0x241626['bindGroup']),_0x52df32['setVertexBuffer'](0x0,_0x241626[_0xc22e12(0x1e5)]),_0x52df32[_0xc22e12(0x19b)](_0x241626[_0xc22e12(0x197)]['vertexCount']),_0x52df32[_0xc22e12(0x1c5)](),_0x241626[_0xc22e12(0x188)][_0xc22e12(0x1f3)]['submit']([_0x5de2c4[_0xc22e12(0x1a3)]()]);}[_0x1b73b0(0x1c0)](_0x1cd1d9){const _0x30c278=_0x1b73b0;this[_0x30c278(0x1eb)]=_0x1cd1d9;}[_0x1b73b0(0x1b2)](_0xd3fdb9){this['colorRange']=_0xd3fdb9;}['setColorStops'](_0x424835){const _0x247f14=_0x1b73b0;this[_0x247f14(0x1e9)]=[..._0x424835],this[_0x247f14(0x1e2)](),this['createColorStopBuffers'](),this[_0x247f14(0x1a1)]();}[_0x1b73b0(0x18a)](_0x3c225a){const _0x2751bd=_0x1b73b0;this['grid']=_0x3c225a,this[_0x2751bd(0x184)](),this['createBindGroup']();}['setLineWidth'](_0x4c41a0){this['lineWidth']=_0x4c41a0;}[_0x1b73b0(0x198)](_0x208fa1){const _0x43612b=_0x1b73b0;this[_0x43612b(0x197)]=_0x208fa1,this[_0x43612b(0x1e5)]?.['destroy'](),this[_0x43612b(0x1e5)]=null;if(!this[_0x43612b(0x188)]||_0x208fa1[_0x43612b(0x186)][_0x43612b(0x1ab)]===0x0)return;const _0xa1a972=this[_0x43612b(0x188)][_0x43612b(0x1b9)]({'size':_0x208fa1['vertices'][_0x43612b(0x1dc)],'usage':GPUBufferUsage[_0x43612b(0x199)]|GPUBufferUsage[_0x43612b(0x1d8)]});this[_0x43612b(0x188)]['queue'][_0x43612b(0x1c7)](_0xa1a972,0x0,toGPUFloat32Array(_0x208fa1[_0x43612b(0x186)])),this[_0x43612b(0x1e5)]=_0xa1a972;}[_0x1b73b0(0x18e)](_0x1a79b9){const _0x398374=_0x1b73b0;this[_0x398374(0x1a8)]=_0x1a79b9;}['setSampleMode'](_0x18dc06){this['sampleMode']=_0x18dc06;}[_0x1b73b0(0x1fa)](){const _0x4a2039=_0x1b73b0;this[_0x4a2039(0x1e5)]?.[_0x4a2039(0x1fa)](),this[_0x4a2039(0x1e5)]=null,this[_0x4a2039(0x1f0)]=null,this[_0x4a2039(0x1a2)]=null,this[_0x4a2039(0x197)]=null,this[_0x4a2039(0x1ed)]=null,this[_0x4a2039(0x1e9)]=[],this[_0x4a2039(0x1f7)]=null,this['adapter']=null,this[_0x4a2039(0x188)]=null,this[_0x4a2039(0x196)]=null,this[_0x4a2039(0x18d)]=null,this[_0x4a2039(0x1c8)]=null,this[_0x4a2039(0x1ba)]?.[_0x4a2039(0x1fa)](),this[_0x4a2039(0x1ca)]?.['destroy'](),this[_0x4a2039(0x1de)]?.[_0x4a2039(0x1fa)](),this[_0x4a2039(0x1da)]?.[_0x4a2039(0x1fa)](),this[_0x4a2039(0x1c3)]?.[_0x4a2039(0x1fa)](),this[_0x4a2039(0x1ba)]=null,this['bindGroup']=null,this[_0x4a2039(0x1ca)]=null,this[_0x4a2039(0x193)]=null,this[_0x4a2039(0x1de)]=null,this['colorStopMaxsBuffer']=null,this[_0x4a2039(0x1c3)]=null;}[_0x1b73b0(0x1f9)](_0x23f09e,_0x36b8f1){const _0x56ee3a=_0x1b73b0,_0x156185=this[_0x56ee3a(0x1a2)]?coordinateShaderSources[this[_0x56ee3a(0x1a2)]]:_0x4d8fa7,_0x223b85=_0x23f09e[_0x56ee3a(0x187)]({'code':_0x156185+'\x0a'+_0x47a960}),_0x1677af=_0x23f09e['createShaderModule']({'code':_0x4fb59f});return _0x23f09e[_0x56ee3a(0x1f8)]({'layout':_0x56ee3a(0x19c),'vertex':{'module':_0x223b85,'entryPoint':_0x56ee3a(0x1e1),'buffers':[{'arrayStride':0x9*Float32Array[_0x56ee3a(0x1b7)],'attributes':[{'shaderLocation':0x0,'offset':0x0,'format':'float32x2'},{'shaderLocation':0x1,'offset':0x2*Float32Array['BYTES_PER_ELEMENT'],'format':_0x56ee3a(0x1e7)},{'shaderLocation':0x2,'offset':0x4*Float32Array[_0x56ee3a(0x1b7)],'format':'float32x2'},{'shaderLocation':0x3,'offset':0x6*Float32Array['BYTES_PER_ELEMENT'],'format':'float32x2'},{'shaderLocation':0x4,'offset':0x8*Float32Array[_0x56ee3a(0x1b7)],'format':_0x56ee3a(0x194)}]}]},'fragment':{'module':_0x1677af,'entryPoint':_0x56ee3a(0x195),'targets':[{'format':_0x36b8f1,'blend':{'color':{'srcFactor':_0x56ee3a(0x1b0),'dstFactor':_0x56ee3a(0x1ee)},'alpha':{'srcFactor':_0x56ee3a(0x1b0),'dstFactor':_0x56ee3a(0x1ee)}}}]},'primitive':{'topology':_0x56ee3a(0x1b5)}});}['writeParams'](_0x374c39){const _0x3827f0=_0x1b73b0;if(!this[_0x3827f0(0x188)]||!this[_0x3827f0(0x1ba)]||!this['grid']||this['colorStops']['length']===0x0)return;const _0x1f7ead=this[_0x3827f0(0x1e9)][0x0],_0x163e4c=this[_0x3827f0(0x1e9)][this[_0x3827f0(0x1e9)][_0x3827f0(0x1ab)]-0x1],_0x4dc314=this['paramsData'];_0x4dc314[0x0]=_0x374c39[_0x3827f0(0x1b8)],_0x4dc314[0x1]=_0x374c39[_0x3827f0(0x1d5)],_0x4dc314[0x2]=_0x374c39[_0x3827f0(0x1d3)],_0x4dc314[0x3]=_0x374c39[_0x3827f0(0x1ec)],_0x4dc314[0x4]=_0x374c39[_0x3827f0(0x189)],_0x4dc314[0x5]=_0x374c39[_0x3827f0(0x1a6)],_0x4dc314[0x6]=this[_0x3827f0(0x1b1)],_0x4dc314[0x7]=this['opacity'],_0x4dc314[0x8]=this[_0x3827f0(0x1ed)][_0x3827f0(0x1af)],_0x4dc314[0x9]=this[_0x3827f0(0x1ed)][_0x3827f0(0x1f1)],_0x4dc314[0xa]=this[_0x3827f0(0x1ed)][_0x3827f0(0x1a9)],_0x4dc314[0xb]=this[_0x3827f0(0x1ed)][_0x3827f0(0x1f2)],_0x4dc314[0xc]=this[_0x3827f0(0x1ed)]['width'],_0x4dc314[0xd]=this[_0x3827f0(0x1ed)]['height'],_0x4dc314[0xe]=this[_0x3827f0(0x1ed)][_0x3827f0(0x1d6)],_0x4dc314[0xf]=this[_0x3827f0(0x1e9)][_0x3827f0(0x1ab)],_0x4dc314[0x10]=this[_0x3827f0(0x1f7)]?.[_0x3827f0(0x19f)]??_0x1f7ead[_0x3827f0(0x1be)],_0x4dc314[0x11]=this[_0x3827f0(0x1f7)]?.[_0x3827f0(0x190)]??_0x163e4c[_0x3827f0(0x1f5)],_0x4dc314[0x12]=this[_0x3827f0(0x1a8)],_0x4dc314[0x13]=0x0,_0x4dc314[0x14]=colorModeToShaderValue(this[_0x3827f0(0x1eb)]),_0x4dc314[0x15]=sampleModeToShaderValue(this[_0x3827f0(0x185)]),_0x4dc314[0x16]=0x0,_0x4dc314[0x17]=0x0,_0x4dc314[0x18]=this['grid'][_0x3827f0(0x1b6)]??0x0,_0x4dc314[0x19]=this[_0x3827f0(0x1ed)][_0x3827f0(0x1b6)]===undefined?0x0:0x1,_0x4dc314[0x1a]=0x0,_0x4dc314[0x1b]=0x0,this[_0x3827f0(0x188)][_0x3827f0(0x1f3)][_0x3827f0(0x1c7)](this[_0x3827f0(0x1ba)],0x0,_0x4dc314);}[_0x1b73b0(0x1b4)](){const _0x310aee=_0x1b73b0;if(!this[_0x310aee(0x188)]||!this[_0x310aee(0x196)]||!this[_0x310aee(0x1c8)]||!this[_0x310aee(0x1e5)]||!this[_0x310aee(0x1e3)]||!this[_0x310aee(0x197)])return null;return{'device':this[_0x310aee(0x188)],'context':this[_0x310aee(0x196)],'pipeline':this[_0x310aee(0x1c8)],'vertexBuffer':this['vertexBuffer'],'bindGroup':this[_0x310aee(0x1e3)],'mesh':this[_0x310aee(0x197)]};}[_0x1b73b0(0x1f6)](){const _0x4da5b4=_0x1b73b0;if(!this[_0x4da5b4(0x188)])return;this[_0x4da5b4(0x1ba)]?.[_0x4da5b4(0x1fa)](),this[_0x4da5b4(0x1ba)]=this['device'][_0x4da5b4(0x1b9)]({'size':ROAD_PARAMS_BUFFER_SIZE,'usage':GPUBufferUsage[_0x4da5b4(0x1a4)]|GPUBufferUsage[_0x4da5b4(0x1d8)]});}[_0x1b73b0(0x1e2)](){const _0x23f692=_0x1b73b0,_0x1859c0=createColorStopArrays(this[_0x23f692(0x1e9)]);this[_0x23f692(0x1a0)]=toGPUFloat32Array(_0x1859c0[_0x23f692(0x1ac)]),this['colorStopMaxs']=toGPUFloat32Array(_0x1859c0[_0x23f692(0x18b)]),this[_0x23f692(0x19d)]=toGPUFloat32Array(_0x1859c0['colors']);}[_0x1b73b0(0x1a5)](){const _0x2c71b9=_0x1b73b0;if(!this['device']||this[_0x2c71b9(0x1e9)][_0x2c71b9(0x1ab)]===0x0)return;this[_0x2c71b9(0x1de)]?.[_0x2c71b9(0x1fa)](),this[_0x2c71b9(0x1da)]?.[_0x2c71b9(0x1fa)](),this[_0x2c71b9(0x1c3)]?.[_0x2c71b9(0x1fa)](),this[_0x2c71b9(0x1de)]=createStorageBuffer(this['device'],this[_0x2c71b9(0x1a0)][_0x2c71b9(0x1dc)]),this[_0x2c71b9(0x1da)]=createStorageBuffer(this[_0x2c71b9(0x188)],this[_0x2c71b9(0x1c1)]['byteLength']),this[_0x2c71b9(0x1c3)]=createStorageBuffer(this[_0x2c71b9(0x188)],this[_0x2c71b9(0x19d)][_0x2c71b9(0x1dc)]),this['device'][_0x2c71b9(0x1f3)][_0x2c71b9(0x1c7)](this[_0x2c71b9(0x1de)],0x0,this[_0x2c71b9(0x1a0)]),this[_0x2c71b9(0x188)][_0x2c71b9(0x1f3)][_0x2c71b9(0x1c7)](this['colorStopMaxsBuffer'],0x0,this[_0x2c71b9(0x1c1)]),this['device'][_0x2c71b9(0x1f3)]['writeBuffer'](this['colorStopColorsBuffer'],0x0,this[_0x2c71b9(0x19d)]);}[_0x1b73b0(0x184)](){const _0x4d0865=_0x1b73b0;if(!this[_0x4d0865(0x188)]||!this[_0x4d0865(0x1ed)])return;const _0x5622e5=this['device'][_0x4d0865(0x18f)]['maxTextureDimension2D'];if(this[_0x4d0865(0x1ed)][_0x4d0865(0x1dd)]>_0x5622e5||this[_0x4d0865(0x1ed)][_0x4d0865(0x1ae)]>_0x5622e5)throw new Error(_0x4d0865(0x182)+this[_0x4d0865(0x1ed)][_0x4d0865(0x1dd)]+'x'+this[_0x4d0865(0x1ed)][_0x4d0865(0x1ae)]+_0x4d0865(0x1e0)+_0x5622e5+'.\x20道路栅格大小超过\x20GPU\x20纹理限制');this[_0x4d0865(0x1ca)]?.[_0x4d0865(0x1fa)](),this['texture']=this['device']['createTexture']({'size':{'width':this[_0x4d0865(0x1ed)]['width'],'height':this[_0x4d0865(0x1ed)][_0x4d0865(0x1ae)]},'format':_0x4d0865(0x1e8),'usage':GPUTextureUsage[_0x4d0865(0x1db)]|GPUTextureUsage[_0x4d0865(0x1d8)]}),this['textureView']=this[_0x4d0865(0x1ca)][_0x4d0865(0x19e)]();const _0x6b46fb=createPaddedGridValues(this['grid']);this[_0x4d0865(0x188)][_0x4d0865(0x1f3)]['writeTexture']({'texture':this[_0x4d0865(0x1ca)]},_0x6b46fb[_0x4d0865(0x1c6)],{'bytesPerRow':_0x6b46fb[_0x4d0865(0x1bf)],'rowsPerImage':this[_0x4d0865(0x1ed)][_0x4d0865(0x1ae)]},{'width':this[_0x4d0865(0x1ed)][_0x4d0865(0x1dd)],'height':this['grid'][_0x4d0865(0x1ae)]});}[_0x1b73b0(0x1a1)](){const _0x34b489=_0x1b73b0;if(!this['device']||!this[_0x34b489(0x1c8)]||!this[_0x34b489(0x1ba)]||!this[_0x34b489(0x193)]||!this[_0x34b489(0x1de)]||!this[_0x34b489(0x1da)]||!this[_0x34b489(0x1c3)])return;this[_0x34b489(0x1e3)]=this[_0x34b489(0x188)]['createBindGroup']({'layout':this[_0x34b489(0x1c8)][_0x34b489(0x1ef)](0x0),'entries':[{'binding':0x0,'resource':{'buffer':this['paramsBuffer']}},{'binding':0x1,'resource':this[_0x34b489(0x193)]},{'binding':0x2,'resource':{'buffer':this[_0x34b489(0x1de)]}},{'binding':0x3,'resource':{'buffer':this[_0x34b489(0x1da)]}},{'binding':0x4,'resource':{'buffer':this[_0x34b489(0x1c3)]}}]});}}const toGPUFloat32Array=_0x5b508f=>{return new Float32Array(_0x5b508f);},createStorageBuffer=(_0x1c00b9,_0x4d5245)=>_0x1c00b9[_0x1b73b0(0x1b9)]({'size':_0x4d5245,'usage':GPUBufferUsage[_0x1b73b0(0x1e4)]|GPUBufferUsage['COPY_DST']}),createPaddedGridValues=_0x1594e5=>{const _0x5c6db2=_0x1b73b0,_0x4a0554=_0x1594e5['width']*Float32Array[_0x5c6db2(0x1b7)],_0x592e9e=Math[_0x5c6db2(0x1c4)](_0x4a0554/0x100)*0x100;if(_0x4a0554===_0x592e9e)return{'values':toGPUFloat32Array(_0x1594e5['values']),'bytesPerRow':_0x592e9e};const _0x137c12=_0x592e9e/Float32Array[_0x5c6db2(0x1b7)],_0x48b9ee=new Float32Array(_0x137c12*_0x1594e5[_0x5c6db2(0x1ae)]);for(let _0x34e2d8=0x0;_0x34e2d8<_0x1594e5['height'];_0x34e2d8+=0x1){const _0x42b763=_0x34e2d8*_0x1594e5[_0x5c6db2(0x1dd)],_0x2cc286=_0x34e2d8*_0x137c12;_0x48b9ee[_0x5c6db2(0x1d0)](_0x1594e5[_0x5c6db2(0x1c6)]['subarray'](_0x42b763,_0x42b763+_0x1594e5[_0x5c6db2(0x1dd)]),_0x2cc286);}return{'values':toGPUFloat32Array(_0x48b9ee),'bytesPerRow':_0x592e9e};};