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.
- package/README.md +6 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/intersect.worker.js +2 -2
- package/dist/isoBands.worker.js +1 -1
- package/dist/m4-w-fast.umd.js +1 -1
- package/dist/raster-leaflet/index.cjs +2 -0
- package/dist/raster-leaflet/index.d.ts +5 -0
- package/dist/raster-leaflet/index.js +1 -0
- package/dist/raster-leaflet/index.mjs +2 -0
- package/dist/raster-leaflet/m4-w-raster-leaflet.umd.js +2 -0
- package/dist/raster-mars3d/cesiumRasterPlaneRenderer.d.ts +28 -0
- package/dist/raster-mars3d/cesiumRasterPlaneRenderer.js +1 -0
- package/dist/raster-mars3d/cesiumRasterTextureAdapter.d.ts +14 -0
- package/dist/raster-mars3d/cesiumRasterTextureAdapter.js +1 -0
- package/dist/raster-mars3d/index.cjs +2 -0
- package/dist/raster-mars3d/index.d.ts +6 -0
- package/dist/raster-mars3d/index.js +1 -0
- package/dist/raster-mars3d/index.mjs +2 -0
- package/dist/raster-mars3d/m4-w-raster-mars3d.umd.js +2 -0
- package/dist/raster-mars3d/mars3dRasterImageryProvider.d.ts +30 -0
- package/dist/raster-mars3d/mars3dRasterImageryProvider.js +1 -0
- package/dist/raster-mars3d/mars3dRasterPlaneLayer.d.ts +3 -0
- package/dist/raster-mars3d/mars3dRasterPlaneLayer.js +1 -0
- package/dist/raster-mars3d/rasterPlaneCesiumTypes.d.ts +95 -0
- package/dist/raster-mars3d/rasterPlaneCesiumTypes.js +1 -0
- package/dist/raster-mars3d/rasterPlaneGeometry.d.ts +5 -0
- package/dist/raster-mars3d/rasterPlaneGeometry.js +1 -0
- package/dist/raster-mars3d/rasterPlaneGridChunks.d.ts +4 -0
- package/dist/raster-mars3d/rasterPlaneGridChunks.js +1 -0
- package/dist/raster-mars3d/rasterPlaneMaterial.d.ts +21 -0
- package/dist/raster-mars3d/rasterPlaneMaterial.js +1 -0
- package/dist/raster-mars3d/rasterPlaneTypes.d.ts +33 -0
- package/dist/raster-mars3d/rasterPlaneTypes.js +1 -0
- package/dist/raster-mars3d/types.d.ts +30 -0
- package/dist/raster-mars3d/types.js +1 -0
- package/dist/raster-overlay/color.d.ts +1 -1
- package/dist/raster-overlay/color.js +1 -1
- package/dist/raster-overlay/core.d.ts +1 -1
- package/dist/raster-overlay/core.js +1 -1
- package/dist/raster-overlay/index.cjs +2 -2
- package/dist/raster-overlay/index.d.ts +5 -2
- package/dist/raster-overlay/index.js +1 -1
- package/dist/raster-overlay/index.mjs +2 -2
- package/dist/raster-overlay/leaflet-renderers/createRenderer.d.ts +3 -7
- package/dist/raster-overlay/leaflet-renderers/createRenderer.js +1 -1
- package/dist/raster-overlay/leaflet-renderers/renderer.d.ts +1 -59
- package/dist/raster-overlay/leafletLayer.d.ts +4 -0
- package/dist/raster-overlay/leafletLayer.js +1 -1
- package/dist/raster-overlay/leafletTypes.d.ts +21 -0
- package/dist/raster-overlay/leafletTypes.js +1 -0
- package/dist/raster-overlay/m4-w-raster-overlay.umd.js +2 -2
- package/dist/raster-overlay/query.d.ts +1 -1
- package/dist/raster-overlay/query.js +1 -1
- package/dist/raster-overlay/rasterTypes.d.ts +73 -0
- package/dist/raster-overlay/rasterTypes.js +1 -0
- package/dist/raster-overlay/rendering/createRasterRenderer.d.ts +4 -0
- package/dist/raster-overlay/rendering/createRasterRenderer.js +1 -0
- package/dist/raster-overlay/rendering/index.d.ts +5 -0
- package/dist/raster-overlay/rendering/index.js +1 -0
- package/dist/raster-overlay/rendering/rasterRenderState.d.ts +27 -0
- package/dist/raster-overlay/rendering/rasterRenderState.js +1 -0
- package/dist/raster-overlay/rendering/renderer.d.ts +15 -0
- package/dist/raster-overlay/rendering/renderer.js +1 -0
- package/dist/raster-overlay/rendering/webgl2RasterRenderer.d.ts +34 -0
- package/dist/raster-overlay/rendering/webgl2RasterRenderer.js +1 -0
- package/dist/raster-overlay/rendering/webgpuRasterRenderer.d.ts +42 -0
- package/dist/raster-overlay/rendering/webgpuRasterRenderer.js +1 -0
- package/dist/raster-overlay/types.d.ts +2 -235
- package/dist/raster-rendering/index.cjs +2 -0
- package/dist/raster-rendering/index.d.ts +8 -0
- package/dist/raster-rendering/index.js +1 -0
- package/dist/raster-rendering/index.mjs +2 -0
- package/dist/raster-rendering/m4-w-raster-rendering.umd.js +2 -0
- package/dist/raster-rendering/types.d.ts +13 -0
- package/dist/raster-rendering/types.js +1 -0
- package/dist/raster-rendering/webgpuRasterTileRenderer.d.ts +29 -0
- package/dist/raster-rendering/webgpuRasterTileRenderer.js +1 -0
- package/dist/readFile.d.ts +2 -2
- package/dist/readFile.js +1 -1
- package/dist/rendering/index.d.ts +6 -0
- package/dist/rendering/index.js +1 -0
- package/dist/rendering/renderer.d.ts +35 -0
- package/dist/rendering/renderer.js +1 -0
- package/dist/rendering/types.d.ts +20 -0
- package/dist/rendering/types.js +1 -0
- package/dist/rendering/webgl2/baseWebgl2Renderer.d.ts +37 -0
- package/dist/rendering/webgl2/baseWebgl2Renderer.js +1 -0
- package/dist/rendering/webgl2/index.d.ts +4 -0
- package/dist/rendering/webgl2/index.js +1 -0
- package/dist/rendering/webgl2/types.d.ts +24 -0
- package/dist/rendering/webgl2/types.js +1 -0
- package/dist/rendering/webgl2/webgl2CoverageResources.d.ts +29 -0
- package/dist/rendering/webgl2/webgl2CoverageResources.js +1 -0
- package/dist/rendering/webgl2/webgl2VisualizationResources.d.ts +33 -0
- package/dist/rendering/webgl2/webgl2VisualizationResources.js +1 -0
- package/dist/rendering/webgpu/baseWebgpuRenderer.d.ts +181 -0
- package/dist/rendering/webgpu/baseWebgpuRenderer.js +1 -0
- package/dist/rendering/webgpu/index.d.ts +3 -0
- package/dist/rendering/webgpu/index.js +1 -0
- package/dist/rendering/webgpu/types.d.ts +33 -0
- package/dist/rendering/webgpu/types.js +1 -0
- package/dist/rendering/webgpu/visualizationParams.d.ts +25 -0
- package/dist/rendering/webgpu/visualizationParams.js +1 -0
- package/dist/rendering/webgpu/visualizationResources.d.ts +50 -0
- package/dist/rendering/webgpu/visualizationResources.js +1 -0
- package/dist/rendering/webgpu/webgpuCoverageResources.d.ts +36 -0
- package/dist/rendering/webgpu/webgpuCoverageResources.js +1 -0
- package/dist/road-overlay/coordinateTransform.js +1 -1
- package/dist/road-overlay/index.cjs +2 -2
- package/dist/road-overlay/index.d.ts +3 -1
- package/dist/road-overlay/index.js +1 -1
- package/dist/road-overlay/index.mjs +2 -2
- package/dist/road-overlay/leaflet-renderers/createRenderer.d.ts +3 -7
- package/dist/road-overlay/leaflet-renderers/createRenderer.js +1 -1
- package/dist/road-overlay/leaflet-renderers/renderer.d.ts +1 -82
- package/dist/road-overlay/leafletLayer.d.ts +2 -0
- package/dist/road-overlay/leafletLayer.js +1 -1
- package/dist/road-overlay/m4-w-road-overlay.umd.js +2 -2
- package/dist/road-overlay/options.d.ts +5 -1
- package/dist/road-overlay/options.js +1 -1
- package/dist/road-overlay/rendering/index.d.ts +4 -0
- package/dist/road-overlay/rendering/index.js +1 -0
- package/dist/road-overlay/rendering/renderer.d.ts +54 -0
- package/dist/road-overlay/rendering/renderer.js +1 -0
- package/dist/road-overlay/rendering/roadRenderState.d.ts +137 -0
- package/dist/road-overlay/rendering/roadRenderState.js +1 -0
- package/dist/road-overlay/rendering/webgl2RoadRenderer.d.ts +38 -0
- package/dist/road-overlay/rendering/webgl2RoadRenderer.js +1 -0
- package/dist/road-overlay/rendering/webgpuRoadRenderer.d.ts +134 -0
- package/dist/road-overlay/rendering/webgpuRoadRenderer.js +1 -0
- package/dist/road-overlay/roadData.d.ts +3 -2
- package/dist/road-overlay/roadData.js +1 -1
- package/dist/road-overlay/roadGeometry.d.ts +2 -2
- package/dist/road-overlay/roadGeometry.js +1 -1
- package/dist/road-overlay/roadMesh.d.ts +7 -5
- package/dist/road-overlay/roadMesh.js +1 -1
- package/dist/road-overlay/types.d.ts +10 -2
- package/dist/shared/coordinate-shader/webgl2/index.d.ts +3 -0
- package/dist/shared/coordinate-shader/webgl2/index.js +1 -0
- package/dist/shared/coordinate-shader/webgpu/index.d.ts +5 -0
- package/dist/shared/coordinate-shader/webgpu/index.js +1 -0
- package/dist/shared/coverage/index.d.ts +1 -0
- package/dist/shared/coverage/index.js +1 -0
- package/dist/shared/coverage/types.d.ts +8 -0
- package/dist/shared/coverage/types.js +1 -0
- package/dist/shared/map/index.d.ts +2 -0
- package/dist/shared/map/index.js +1 -0
- package/dist/shared/map/leaflet.d.ts +7 -0
- package/dist/shared/map/leaflet.js +1 -0
- package/dist/shared/map/types.d.ts +19 -0
- package/dist/shared/map/types.js +1 -0
- package/dist/shared/polygon/contains.d.ts +3 -0
- package/dist/shared/polygon/contains.js +1 -0
- package/dist/shared/polygon/index.d.ts +3 -0
- package/dist/shared/polygon/index.js +1 -0
- package/dist/shared/polygon/polygonMesh.d.ts +3 -0
- package/dist/shared/polygon/polygonMesh.js +1 -0
- package/dist/shared/polygon/types.d.ts +11 -0
- package/dist/shared/polygon/types.js +1 -0
- package/dist/shared/shader/assemble.d.ts +5 -0
- package/dist/shared/shader/assemble.js +1 -0
- package/dist/shared/visualization/index.d.ts +2 -0
- package/dist/shared/visualization/index.js +1 -0
- package/dist/shared/visualization/shader/webgl2/index.d.ts +1 -0
- package/dist/shared/visualization/shader/webgl2/index.js +1 -0
- package/dist/shared/visualization/shader/webgpu/index.d.ts +10 -0
- package/dist/shared/visualization/shader/webgpu/index.js +1 -0
- package/dist/shared/visualization/types.d.ts +68 -0
- package/dist/shared/visualization/types.js +1 -0
- package/dist/shared/visualization/utils.d.ts +46 -0
- package/dist/shared/visualization/utils.js +1 -0
- package/dist/volume-mars3d/createMars3dVolumeScene.d.ts +3 -0
- package/dist/volume-mars3d/createMars3dVolumeScene.js +1 -0
- package/dist/volume-mars3d/index.cjs +1 -0
- package/dist/volume-mars3d/index.d.ts +2 -0
- package/dist/volume-mars3d/index.js +1 -0
- package/dist/volume-mars3d/index.mjs +1 -0
- package/dist/volume-mars3d/m4-w-volume-mars3d.umd.js +1 -0
- package/dist/volume-mars3d/mars3dCanvasCompensation.d.ts +22 -0
- package/dist/volume-mars3d/mars3dCanvasCompensation.js +1 -0
- package/dist/volume-mars3d/mars3dRaymarchShader.d.ts +1 -0
- package/dist/volume-mars3d/mars3dRaymarchShader.js +1 -0
- package/dist/volume-mars3d/mars3dVolumeLayer.d.ts +2 -0
- package/dist/volume-mars3d/mars3dVolumeLayer.js +1 -0
- package/dist/volume-mars3d/mars3dVolumeRenderer.d.ts +56 -0
- package/dist/volume-mars3d/mars3dVolumeRenderer.js +1 -0
- package/dist/volume-mars3d/volumeMars3dTypes.d.ts +85 -0
- package/dist/volume-mars3d/volumeMars3dTypes.js +1 -0
- package/dist/volume-mars3d-native/index.cjs +1 -0
- package/dist/volume-mars3d-native/index.d.ts +4 -0
- package/dist/volume-mars3d-native/index.js +1 -0
- package/dist/volume-mars3d-native/index.mjs +1 -0
- package/dist/volume-mars3d-native/liveUpdateScheduler.d.ts +10 -0
- package/dist/volume-mars3d-native/liveUpdateScheduler.js +1 -0
- package/dist/volume-mars3d-native/m4-w-volume-mars3d-native.umd.js +1 -0
- package/dist/volume-mars3d-native/mars3dNativeSliceLayer.d.ts +2 -0
- package/dist/volume-mars3d-native/mars3dNativeSliceLayer.js +1 -0
- package/dist/volume-mars3d-native/mars3dNativeSliceRenderer.d.ts +56 -0
- package/dist/volume-mars3d-native/mars3dNativeSliceRenderer.js +1 -0
- package/dist/volume-mars3d-native/mars3dNativeVolumeLayer.d.ts +2 -0
- package/dist/volume-mars3d-native/mars3dNativeVolumeLayer.js +1 -0
- package/dist/volume-mars3d-native/mars3dNativeVolumeRenderer.d.ts +34 -0
- package/dist/volume-mars3d-native/mars3dNativeVolumeRenderer.js +1 -0
- package/dist/volume-mars3d-native/nativeAxisSliceRenderer.d.ts +40 -0
- package/dist/volume-mars3d-native/nativeAxisSliceRenderer.js +1 -0
- package/dist/volume-mars3d-native/nativeSliceAtlas.d.ts +50 -0
- package/dist/volume-mars3d-native/nativeSliceAtlas.js +1 -0
- package/dist/volume-mars3d-native/nativeSliceRuntimeTypes.d.ts +17 -0
- package/dist/volume-mars3d-native/nativeSliceRuntimeTypes.js +1 -0
- package/dist/volume-mars3d-native/nativeTypes.d.ts +174 -0
- package/dist/volume-mars3d-native/nativeTypes.js +1 -0
- package/dist/volume-mars3d-native/nativeVoxelProvider.d.ts +6 -0
- package/dist/volume-mars3d-native/nativeVoxelProvider.js +1 -0
- package/dist/volume-mars3d-native/nativeVoxelShader.d.ts +2 -0
- package/dist/volume-mars3d-native/nativeVoxelShader.js +1 -0
- package/dist/volume-mars3d-native/voxelData.d.ts +9 -0
- package/dist/volume-mars3d-native/voxelData.js +1 -0
- package/dist/volume-scene/brickLayout.d.ts +75 -0
- package/dist/volume-scene/brickLayout.js +1 -0
- package/dist/volume-scene/brickResidency.d.ts +54 -0
- package/dist/volume-scene/brickResidency.js +1 -0
- package/dist/volume-scene/camera.d.ts +22 -0
- package/dist/volume-scene/camera.js +1 -0
- package/dist/volume-scene/cameraTypes.d.ts +37 -0
- package/dist/volume-scene/cameraTypes.js +1 -0
- package/dist/volume-scene/createVolumeScene.d.ts +4 -0
- package/dist/volume-scene/createVolumeScene.js +1 -0
- package/dist/volume-scene/geographicTypes.d.ts +16 -0
- package/dist/volume-scene/geographicTypes.js +1 -0
- package/dist/volume-scene/geographicVolume.d.ts +4 -0
- package/dist/volume-scene/geographicVolume.js +1 -0
- package/dist/volume-scene/inMemoryVolumeSource.d.ts +3 -0
- package/dist/volume-scene/inMemoryVolumeSource.js +1 -0
- package/dist/volume-scene/index.cjs +1 -0
- package/dist/volume-scene/index.d.ts +12 -0
- package/dist/volume-scene/index.js +1 -0
- package/dist/volume-scene/index.mjs +1 -0
- package/dist/volume-scene/m4-w-volume-scene.umd.js +1 -0
- package/dist/volume-scene/matrix.d.ts +11 -0
- package/dist/volume-scene/matrix.js +1 -0
- package/dist/volume-scene/profileTypes.d.ts +20 -0
- package/dist/volume-scene/profileTypes.js +1 -0
- package/dist/volume-scene/rendering/webgpu/index.d.ts +2 -0
- package/dist/volume-scene/rendering/webgpu/index.js +1 -0
- package/dist/volume-scene/rendering/webgpu/webgpuBrickAtlas.d.ts +59 -0
- package/dist/volume-scene/rendering/webgpu/webgpuBrickAtlas.js +1 -0
- package/dist/volume-scene/rendering/webgpu/webgpuSceneAttachments.d.ts +11 -0
- package/dist/volume-scene/rendering/webgpu/webgpuSceneAttachments.js +1 -0
- package/dist/volume-scene/rendering/webgpu/webgpuSceneMeshResources.d.ts +12 -0
- package/dist/volume-scene/rendering/webgpu/webgpuSceneMeshResources.js +1 -0
- package/dist/volume-scene/rendering/webgpu/webgpuSliceResources.d.ts +21 -0
- package/dist/volume-scene/rendering/webgpu/webgpuSliceResources.js +1 -0
- package/dist/volume-scene/rendering/webgpu/webgpuTransferResources.d.ts +16 -0
- package/dist/volume-scene/rendering/webgpu/webgpuTransferResources.js +1 -0
- package/dist/volume-scene/rendering/webgpu/webgpuVolumeSceneRenderer.d.ts +126 -0
- package/dist/volume-scene/rendering/webgpu/webgpuVolumeSceneRenderer.js +1 -0
- package/dist/volume-scene/rendering/webgpu/webgpuVolumeTypes.d.ts +108 -0
- package/dist/volume-scene/rendering/webgpu/webgpuVolumeTypes.js +1 -0
- package/dist/volume-scene/routeProfileMesh.d.ts +7 -0
- package/dist/volume-scene/routeProfileMesh.js +1 -0
- package/dist/volume-scene/sceneTypes.d.ts +136 -0
- package/dist/volume-scene/sceneTypes.js +1 -0
- package/dist/volume-scene/sliceInteractionController.d.ts +27 -0
- package/dist/volume-scene/sliceInteractionController.js +1 -0
- package/dist/volume-scene/sliceMarkerOverlay.d.ts +28 -0
- package/dist/volume-scene/sliceMarkerOverlay.js +1 -0
- package/dist/volume-scene/sliceState.d.ts +34 -0
- package/dist/volume-scene/sliceState.js +1 -0
- package/dist/volume-scene/sliceTypes.d.ts +52 -0
- package/dist/volume-scene/sliceTypes.js +1 -0
- package/dist/volume-scene/sourceTypes.d.ts +47 -0
- package/dist/volume-scene/sourceTypes.js +1 -0
- package/dist/volume-scene/transferTypes.d.ts +12 -0
- package/dist/volume-scene/transferTypes.js +1 -0
- package/dist/volume-scene/volumeBrickData.d.ts +3 -0
- package/dist/volume-scene/volumeBrickData.js +1 -0
- package/dist/volume-scene/volumeScene.d.ts +103 -0
- package/dist/volume-scene/volumeScene.js +1 -0
- package/dist/volume-scene/volumeTransfer.d.ts +8 -0
- package/dist/volume-scene/volumeTransfer.js +1 -0
- package/dist/volume-scene/volumeValidation.d.ts +27 -0
- package/dist/volume-scene/volumeValidation.js +1 -0
- package/package.json +6 -3
- package/dist/raster-overlay/leaflet-renderers/cpuRenderer.d.ts +0 -0
- package/dist/raster-overlay/leaflet-renderers/cpuRenderer.js +0 -1
- package/dist/raster-overlay/leaflet-renderers/rasterRendererUtils.d.ts +0 -52
- package/dist/raster-overlay/leaflet-renderers/rasterRendererUtils.js +0 -1
- package/dist/raster-overlay/leaflet-renderers/webgl2Renderer.d.ts +0 -111
- package/dist/raster-overlay/leaflet-renderers/webgl2Renderer.js +0 -1
- package/dist/raster-overlay/leaflet-renderers/webglRenderer.d.ts +0 -0
- package/dist/raster-overlay/leaflet-renderers/webglRenderer.js +0 -1
- package/dist/raster-overlay/leaflet-renderers/webgpuRenderer.d.ts +0 -114
- package/dist/raster-overlay/leaflet-renderers/webgpuRenderer.js +0 -1
- package/dist/road-overlay/leaflet-renderers/webgpuRenderer.d.ts +0 -55
- 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};};
|