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
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import type { MapCrs, MapRenderViewport } from '../../shared/map/types';
|
|
2
|
+
import type { MapRenderer } from '../renderer';
|
|
3
|
+
import type { RendererLifecycleState, RendererReleaseReason } from '../types';
|
|
4
|
+
import type { WebgpuFrameContext, WebgpuRendererRequirements, WebgpuRendererResources } from './types';
|
|
5
|
+
/**
|
|
6
|
+
* Owns the complete WebGPU renderer lifecycle and fixed frame structure.
|
|
7
|
+
* 管理完整的 WebGPU 渲染器生命周期和固定帧结构。
|
|
8
|
+
*/
|
|
9
|
+
export declare abstract class BaseWebgpuRenderer implements MapRenderer<'webgpu'> {
|
|
10
|
+
readonly backend: "webgpu";
|
|
11
|
+
private lifecycleState;
|
|
12
|
+
private canvas;
|
|
13
|
+
private crs;
|
|
14
|
+
private resources;
|
|
15
|
+
private lastViewport;
|
|
16
|
+
private initializationGeneration;
|
|
17
|
+
private restorePromise;
|
|
18
|
+
private featureResourcesActive;
|
|
19
|
+
private frameWidth;
|
|
20
|
+
private frameHeight;
|
|
21
|
+
/**
|
|
22
|
+
* Return the current renderer lifecycle state.
|
|
23
|
+
* 返回当前渲染器生命周期状态。
|
|
24
|
+
*/
|
|
25
|
+
get state(): RendererLifecycleState;
|
|
26
|
+
/**
|
|
27
|
+
* Initialize the WebGPU backend and feature resources.
|
|
28
|
+
* 初始化 WebGPU 后端和功能资源。
|
|
29
|
+
*/
|
|
30
|
+
initialize(canvas: HTMLCanvasElement, crs: MapCrs): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* Encode and submit one complete WebGPU frame.
|
|
33
|
+
* 编码并提交一帧完整的 WebGPU 渲染。
|
|
34
|
+
*/
|
|
35
|
+
render(viewport: MapRenderViewport): void;
|
|
36
|
+
/** 等待当前提交完成并复制画布内容,供地图宿主安全持有该帧。 */
|
|
37
|
+
captureImageBitmap(): Promise<ImageBitmap>;
|
|
38
|
+
/**
|
|
39
|
+
* Destroy backend and feature resources.
|
|
40
|
+
* 销毁后端资源和具体功能资源。
|
|
41
|
+
*/
|
|
42
|
+
destroy(): void;
|
|
43
|
+
/**
|
|
44
|
+
* Declare WebGPU capabilities before requesting the adapter and device.
|
|
45
|
+
* 在请求 adapter 和 device 前声明 WebGPU 能力要求。
|
|
46
|
+
*/
|
|
47
|
+
protected getRequirements(): WebgpuRendererRequirements;
|
|
48
|
+
/**
|
|
49
|
+
* Create resources owned by the concrete feature renderer.
|
|
50
|
+
* 创建具体功能渲染器拥有的资源。
|
|
51
|
+
*/
|
|
52
|
+
protected abstract createFeatureResources(): void;
|
|
53
|
+
/**
|
|
54
|
+
* Release resources owned by the concrete feature renderer.
|
|
55
|
+
* 释放具体功能渲染器拥有的资源。
|
|
56
|
+
*/
|
|
57
|
+
protected abstract releaseFeatureResources(reason: RendererReleaseReason): void;
|
|
58
|
+
/**
|
|
59
|
+
* Prepare CPU and GPU state before encoding render passes.
|
|
60
|
+
* 在编码渲染通道前准备 CPU 和 GPU 状态。
|
|
61
|
+
*/
|
|
62
|
+
protected prepareFrame(_frame: WebgpuFrameContext): void;
|
|
63
|
+
/**
|
|
64
|
+
* Encode offscreen, stencil, or compute passes before the main pass.
|
|
65
|
+
* 在主通道之前编码离屏、模板或计算通道。
|
|
66
|
+
*/
|
|
67
|
+
protected encodePrePasses(_frame: WebgpuFrameContext): void;
|
|
68
|
+
/**
|
|
69
|
+
* Create the default main render pass descriptor.
|
|
70
|
+
* 创建默认主渲染通道描述。
|
|
71
|
+
*
|
|
72
|
+
* Renderers requiring depth, stencil, or multiple color attachments may override this method.
|
|
73
|
+
* 需要深度、模板或多颜色附件的渲染器可以覆盖该方法。
|
|
74
|
+
*/
|
|
75
|
+
protected createMainPassDescriptor(frame: WebgpuFrameContext): GPURenderPassDescriptor;
|
|
76
|
+
/**
|
|
77
|
+
* Encode feature drawing commands into the main render pass.
|
|
78
|
+
* 将具体功能绘制命令编码到主渲染通道。
|
|
79
|
+
*/
|
|
80
|
+
protected abstract encodeMainPass(pass: GPURenderPassEncoder, frame: WebgpuFrameContext): void;
|
|
81
|
+
/**
|
|
82
|
+
* Encode optional passes after the main pass.
|
|
83
|
+
* 在主通道之后编码可选通道。
|
|
84
|
+
*/
|
|
85
|
+
protected encodePostPasses(_frame: WebgpuFrameContext): void;
|
|
86
|
+
/**
|
|
87
|
+
* Resize feature attachments after the physical canvas size changes.
|
|
88
|
+
* 在画布物理尺寸变化后调整具体功能使用的附件。
|
|
89
|
+
*/
|
|
90
|
+
protected handleResize(_width: number, _height: number): void;
|
|
91
|
+
/**
|
|
92
|
+
* Return initialized WebGPU resources.
|
|
93
|
+
* 返回已经初始化的 WebGPU 资源。
|
|
94
|
+
*/
|
|
95
|
+
protected getResources(): WebgpuRendererResources;
|
|
96
|
+
/**
|
|
97
|
+
* Return the current render canvas.
|
|
98
|
+
* 返回当前渲染画布。
|
|
99
|
+
*/
|
|
100
|
+
protected getCanvas(): HTMLCanvasElement;
|
|
101
|
+
/**
|
|
102
|
+
* Return the current map coordinate system.
|
|
103
|
+
* 返回当前地图坐标系。
|
|
104
|
+
*/
|
|
105
|
+
protected getCrs(): MapCrs;
|
|
106
|
+
/**
|
|
107
|
+
* Create a labeled shader module.
|
|
108
|
+
* 创建带标签的 ShaderModule。
|
|
109
|
+
*/
|
|
110
|
+
protected createShaderModule(source: string, label: string): GPUShaderModule;
|
|
111
|
+
/**
|
|
112
|
+
* Create a buffer with a four-byte aligned size.
|
|
113
|
+
* 创建尺寸按四字节对齐的 Buffer。
|
|
114
|
+
*/
|
|
115
|
+
protected createBuffer(size: number, usage: GPUBufferUsageFlags, label: string): GPUBuffer;
|
|
116
|
+
/**
|
|
117
|
+
* Create a buffer and upload its initial data.
|
|
118
|
+
* 创建 Buffer 并上传初始数据。
|
|
119
|
+
*/
|
|
120
|
+
protected createBufferWithData(data: ArrayBufferView<ArrayBuffer>, usage: GPUBufferUsageFlags, label: string): GPUBuffer;
|
|
121
|
+
/**
|
|
122
|
+
* Create a transparent color attachment.
|
|
123
|
+
* 创建透明颜色附件。
|
|
124
|
+
*/
|
|
125
|
+
protected createTransparentColorAttachment(view: GPUTextureView, loadOp?: GPULoadOp, storeOp?: GPUStoreOp): GPURenderPassColorAttachment;
|
|
126
|
+
/**
|
|
127
|
+
* Create backend and feature resources for the active initialization generation.
|
|
128
|
+
* 为当前初始化代次创建后端资源和功能资源。
|
|
129
|
+
*/
|
|
130
|
+
private initializeResources;
|
|
131
|
+
/**
|
|
132
|
+
* Request and configure the WebGPU adapter, device, and canvas context.
|
|
133
|
+
* 请求并配置 WebGPU adapter、device 和画布上下文。
|
|
134
|
+
*/
|
|
135
|
+
private createBackendResources;
|
|
136
|
+
/**
|
|
137
|
+
* Validate renderer requirements that can be checked before requesting a device.
|
|
138
|
+
* 校验能够在请求 device 前检查的渲染器能力要求。
|
|
139
|
+
*/
|
|
140
|
+
private validateRequirements;
|
|
141
|
+
/**
|
|
142
|
+
* Validate that the adapter supports all required WebGPU features.
|
|
143
|
+
* 校验 adapter 是否支持全部必需的 WebGPU feature。
|
|
144
|
+
*/
|
|
145
|
+
private validateAdapterFeatures;
|
|
146
|
+
/**
|
|
147
|
+
* Validate the physical dimensions of the current viewport.
|
|
148
|
+
* 校验当前视口的物理尺寸。
|
|
149
|
+
*/
|
|
150
|
+
private validateViewport;
|
|
151
|
+
/**
|
|
152
|
+
* Synchronize the canvas physical size with the current viewport.
|
|
153
|
+
* 将画布物理尺寸与当前视口同步。
|
|
154
|
+
*/
|
|
155
|
+
private resizeCanvas;
|
|
156
|
+
/**
|
|
157
|
+
* Observe the device loss promise for the active WebGPU device.
|
|
158
|
+
* 监听当前 WebGPU device 的丢失状态。
|
|
159
|
+
*/
|
|
160
|
+
private watchDeviceLost;
|
|
161
|
+
/**
|
|
162
|
+
* Release invalid resources and start device restoration after device loss.
|
|
163
|
+
* 在 device 丢失后释放失效资源并开始恢复。
|
|
164
|
+
*/
|
|
165
|
+
private handleDeviceLost;
|
|
166
|
+
/**
|
|
167
|
+
* Recreate backend and feature resources after device loss.
|
|
168
|
+
* 在 device 丢失后重新创建后端资源和功能资源。
|
|
169
|
+
*/
|
|
170
|
+
private restoreDevice;
|
|
171
|
+
/**
|
|
172
|
+
* Release feature resources, canvas configuration, and the active device.
|
|
173
|
+
* 释放功能资源、画布配置和当前 device。
|
|
174
|
+
*/
|
|
175
|
+
private releaseCurrentResources;
|
|
176
|
+
/**
|
|
177
|
+
* Check whether an asynchronous initialization still belongs to the active generation.
|
|
178
|
+
* 检查异步初始化是否仍属于当前有效代次。
|
|
179
|
+
*/
|
|
180
|
+
private isGenerationActive;
|
|
181
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function _0x5a74(_0x4a8e1f,_0x194946){const _0x8edd03=_0x8edd();return _0x5a74=function(_0x5a7415,_0x42369f){_0x5a7415=_0x5a7415-0xed;let _0x3d46e9=_0x8edd03[_0x5a7415];return _0x3d46e9;},_0x5a74(_0x4a8e1f,_0x194946);}function _0x8edd(){const _0x5843bf=['ceil','875050eGMdxk','encodePrePasses','state','lost','.\x20缺少必须的\x20WebGPU\x20feature:','createTransparentColorAttachment','ready','restoreDevice','getCrs','backend','featureResourcesActive','isInteger','prepareFrame','releaseCurrentResources','destroyed','getPreferredCanvasFormat','validateViewport','initializing','isGenerationActive','WebGPU\x20device\x20丢失后释放资源失败。','constructor','clear','name','canvasHeight','28JpbuZd','Required\x20WebGPU\x20feature\x20is\x20unavailable:\x20','5886512OeWQpR','has','requestAdapter','gpu','1210758qcMUoE','COPY_DST','frameHeight','releaseFeatureResources','canvasUsage','resources','getRequirements','requestDevice','createCommandEncoder','alphaMode','12845286ZACYpI','.\x20WebGPU\x20buffer\x20数据长度必须是非零的四字节倍数。','encodeMainPass','createMainPassDescriptor','getContext','byteLength','height','isFinite','submit','frameWidth','store','powerPreference','requiredLimits','device','unconfigure','byteOffset','encodePostPasses','RENDER_ATTACHMENT','forceFallbackAdapter','getCanvas','render','end','Invalid\x20WebGPU\x20limit\x20','targetView','handleResize','lastViewport','.\x20WebGPU\x20limit\x20','getResources','A\x20destroyed\x20WebGPU\x20renderer\x20cannot\x20be\x20initialized\x20again.\x20已销毁的\x20WebGPU\x20渲染器不能再次初始化。','validateAdapterFeatures','lifecycleState','initializeResources','device-lost','WebGPU\x20buffer\x20size\x20must\x20be\x20greater\x20than\x20zero:\x20','error','finally','writeBuffer','restoring','52300EDJZuS','initializationGeneration','WebGPU\x20canvas\x20usage\x20must\x20include\x20RENDER_ATTACHMENT.\x20WebGPU\x20画布\x20usage\x20必须包含\x20RENDER_ATTACHMENT。','destroy','createBuffer','message','configure','beginRenderPass','createShaderModule','crs','initialization-failed','reinitialize','webgpu','restorePromise','watchDeviceLost','Failed\x20to\x20request\x20a\x20WebGPU\x20adapter.\x20获取\x20WebGPU\x20adapter\x20失败。','WebGPU\x20resources\x20are\x20not\x20initialized.\x20WebGPU\x20资源尚未初始化。','buffer','41582cxPzfd','validateRequirements','entries','queue','WebGPU\x20初始化失败后释放资源时发生错误。','idle','createBackendResources','context','WebGPU\x20renderer\x20must\x20be\x20ready\x20before\x20capturing\x20an\x20image.\x20截取图像前\x20WebGPU\x20渲染器必须已就绪。','canvas','WebGPU\x20device\x20丢失后恢复失败:','features','width','\x20frame\x20encoder','WebGPU\x20map\x20CRS\x20is\x20not\x20initialized.\x20WebGPU\x20地图坐标系尚未初始化。','canvasWidth','销毁\x20WebGPU\x20device\x20时发生额外错误。','createFeatureResources','createView','getCurrentTexture','handleDeviceLost','660480pEtXsP','createBufferWithData','.\x20WebGPU\x20buffer\x20尺寸必须大于零。','21YLbOPA','captureImageBitmap'];_0x8edd=function(){return _0x5843bf;};return _0x8edd();}const _0x292fd5=_0x5a74;(function(_0x3277ca,_0x34e264){const _0x3115f1=_0x5a74,_0x1a2fa8=_0x3277ca();while(!![]){try{const _0x41d63c=-parseInt(_0x3115f1(0x146))/0x1+parseInt(_0x3115f1(0x158))/0x2*(-parseInt(_0x3115f1(0xf5))/0x3)+-parseInt(_0x3115f1(0x112))/0x4+parseInt(_0x3115f1(0xf8))/0x5+-parseInt(_0x3115f1(0x116))/0x6*(-parseInt(_0x3115f1(0x110))/0x7)+parseInt(_0x3115f1(0xf2))/0x8+parseInt(_0x3115f1(0x120))/0x9;if(_0x41d63c===_0x34e264)break;else _0x1a2fa8['push'](_0x1a2fa8['shift']());}catch(_0x532d39){_0x1a2fa8['push'](_0x1a2fa8['shift']());}}}(_0x8edd,0xc8d03));const DEFAULT_CLEAR_COLOR={'r':0x0,'g':0x0,'b':0x0,'a':0x0};export class BaseWebgpuRenderer{[_0x292fd5(0x101)]=_0x292fd5(0x152);['lifecycleState']=_0x292fd5(0x15d);[_0x292fd5(0x161)]=null;['crs']=null;[_0x292fd5(0x11b)]=null;[_0x292fd5(0x139)]=null;[_0x292fd5(0x147)]=0x0;['restorePromise']=null;[_0x292fd5(0x102)]=![];['frameWidth']=0x0;['frameHeight']=0x0;get[_0x292fd5(0xfa)](){const _0x251589=_0x292fd5;return this[_0x251589(0x13e)];}async['initialize'](_0x768ee2,_0x1e9f8b){const _0x36a2da=_0x292fd5;if(this[_0x36a2da(0x13e)]===_0x36a2da(0x106))throw new Error(_0x36a2da(0x13c));const _0x2e39a2=++this[_0x36a2da(0x147)];if(this[_0x36a2da(0x11b)]||this[_0x36a2da(0x102)])try{this[_0x36a2da(0x105)](_0x36a2da(0x151));}catch(_0x5658f4){this[_0x36a2da(0x13e)]=_0x36a2da(0x15d);throw _0x5658f4;}this[_0x36a2da(0x161)]=_0x768ee2,this[_0x36a2da(0x14f)]=_0x1e9f8b,this['lastViewport']=null,this['frameWidth']=0x0,this[_0x36a2da(0x118)]=0x0,this[_0x36a2da(0x13e)]=_0x36a2da(0x109);try{const _0x10ab6a=await this[_0x36a2da(0x13f)](_0x768ee2,_0x2e39a2);_0x10ab6a&&this[_0x36a2da(0x10a)](_0x2e39a2)&&(this[_0x36a2da(0x13e)]=_0x36a2da(0xfe));}catch(_0x4f2092){this[_0x36a2da(0x10a)](_0x2e39a2)&&(this['lifecycleState']=_0x36a2da(0x15d));throw _0x4f2092;}}[_0x292fd5(0x134)](_0x43251c){const _0x57536d=_0x292fd5;if(this[_0x57536d(0x13e)]!==_0x57536d(0xfe))return;this[_0x57536d(0x108)](_0x43251c),this[_0x57536d(0x139)]={..._0x43251c};const _0x204bf2=this['getResources'](),_0x85d235=this['resizeCanvas'](_0x43251c);_0x85d235&&this['handleResize'](_0x43251c[_0x57536d(0x167)],_0x43251c[_0x57536d(0x10f)]);const _0x16ed7c=_0x204bf2[_0x57536d(0x12d)][_0x57536d(0x11e)]({'label':this[_0x57536d(0x10c)][_0x57536d(0x10e)]+_0x57536d(0x165)}),_0x123de6={'encoder':_0x16ed7c,'targetView':_0x204bf2[_0x57536d(0x15f)][_0x57536d(0xf0)]()[_0x57536d(0xef)](),'viewport':_0x43251c};this[_0x57536d(0x104)](_0x123de6),this['encodePrePasses'](_0x123de6);const _0x51ace8=_0x16ed7c[_0x57536d(0x14d)](this[_0x57536d(0x123)](_0x123de6));try{this[_0x57536d(0x122)](_0x51ace8,_0x123de6);}finally{_0x51ace8[_0x57536d(0x135)]();}this[_0x57536d(0x130)](_0x123de6),_0x204bf2[_0x57536d(0x12d)][_0x57536d(0x15b)][_0x57536d(0x128)]([_0x16ed7c['finish']()]);}async[_0x292fd5(0xf6)](){const _0x6125c2=_0x292fd5;if(this['lifecycleState']!==_0x6125c2(0xfe))throw new Error(_0x6125c2(0x160));return await this['getResources']()[_0x6125c2(0x12d)][_0x6125c2(0x15b)]['onSubmittedWorkDone'](),createImageBitmap(this[_0x6125c2(0x133)]());}[_0x292fd5(0x149)](){const _0x42a82a=_0x292fd5;if(this[_0x42a82a(0x13e)]===_0x42a82a(0x106))return;++this['initializationGeneration'];let _0x1f28eb;try{this[_0x42a82a(0x105)](_0x42a82a(0x149));}catch(_0x615908){_0x1f28eb=_0x615908;}finally{this['lifecycleState']=_0x42a82a(0x106),this[_0x42a82a(0x161)]=null,this[_0x42a82a(0x14f)]=null,this[_0x42a82a(0x139)]=null,this[_0x42a82a(0x153)]=null,this[_0x42a82a(0x129)]=0x0,this[_0x42a82a(0x118)]=0x0;}if(_0x1f28eb)throw _0x1f28eb;}[_0x292fd5(0x11c)](){return{};}[_0x292fd5(0x104)](_0x4c6562){}[_0x292fd5(0xf9)](_0x489c02){}['createMainPassDescriptor'](_0x191734){const _0xd39266=_0x292fd5;return{'colorAttachments':[this['createTransparentColorAttachment'](_0x191734[_0xd39266(0x137)])]};}[_0x292fd5(0x130)](_0x2cf489){}[_0x292fd5(0x138)](_0x3ccdfa,_0x43a1c2){}[_0x292fd5(0x13b)](){const _0x6f978e=_0x292fd5;if(!this[_0x6f978e(0x11b)])throw new Error(_0x6f978e(0x156));return this[_0x6f978e(0x11b)];}[_0x292fd5(0x133)](){const _0x461f43=_0x292fd5;if(!this[_0x461f43(0x161)])throw new Error('WebGPU\x20canvas\x20is\x20not\x20initialized.\x20WebGPU\x20画布尚未初始化。');return this[_0x461f43(0x161)];}[_0x292fd5(0x100)](){const _0x48d372=_0x292fd5;if(!this[_0x48d372(0x14f)])throw new Error(_0x48d372(0x166));return this[_0x48d372(0x14f)];}[_0x292fd5(0x14e)](_0x3de3cd,_0x437179){const _0x31c236=_0x292fd5;return this[_0x31c236(0x13b)]()['device'][_0x31c236(0x14e)]({'label':_0x437179,'code':_0x3de3cd});}[_0x292fd5(0x14a)](_0x3e5148,_0xf0e1a2,_0x4bbcfb){const _0x4bf6d2=_0x292fd5;if(!Number[_0x4bf6d2(0x127)](_0x3e5148)||_0x3e5148<=0x0)throw new Error(_0x4bf6d2(0x141)+_0x3e5148+_0x4bf6d2(0xf4));const _0x16b151=Math[_0x4bf6d2(0xf7)](_0x3e5148/0x4)*0x4;return this[_0x4bf6d2(0x13b)]()[_0x4bf6d2(0x12d)]['createBuffer']({'label':_0x4bbcfb,'size':_0x16b151,'usage':_0xf0e1a2});}[_0x292fd5(0xf3)](_0x195c89,_0x330c65,_0x21ef39){const _0x2cc532=_0x292fd5;if(_0x195c89['byteLength']===0x0||_0x195c89[_0x2cc532(0x125)]%0x4!==0x0)throw new Error('WebGPU\x20buffer\x20data\x20length\x20must\x20be\x20a\x20non-zero\x20multiple\x20of\x20four:\x20'+_0x195c89['byteLength']+_0x2cc532(0x121));const _0x1183cb=this[_0x2cc532(0x13b)](),_0x4f72ff=this['createBuffer'](_0x195c89[_0x2cc532(0x125)],_0x330c65|GPUBufferUsage[_0x2cc532(0x117)],_0x21ef39);return _0x1183cb[_0x2cc532(0x12d)]['queue'][_0x2cc532(0x144)](_0x4f72ff,0x0,_0x195c89[_0x2cc532(0x157)],_0x195c89[_0x2cc532(0x12f)],_0x195c89[_0x2cc532(0x125)]),_0x4f72ff;}[_0x292fd5(0xfd)](_0x5d0d65,_0x20b2b7=_0x292fd5(0x10d),_0x1315fb=_0x292fd5(0x12a)){return{'view':_0x5d0d65,'clearValue':DEFAULT_CLEAR_COLOR,'loadOp':_0x20b2b7,'storeOp':_0x1315fb};}async[_0x292fd5(0x13f)](_0x408ba2,_0x44c908){const _0x3827ad=_0x292fd5,_0xca7774=await this[_0x3827ad(0x15e)](_0x408ba2,_0x44c908);if(!_0xca7774||!this[_0x3827ad(0x10a)](_0x44c908))return![];this[_0x3827ad(0x11b)]=_0xca7774,this[_0x3827ad(0x102)]=!![];try{return this[_0x3827ad(0xee)](),this[_0x3827ad(0x154)](_0xca7774[_0x3827ad(0x12d)]),!![];}catch(_0x51b193){try{this[_0x3827ad(0x105)](_0x3827ad(0x150));}catch(_0x183cc8){console[_0x3827ad(0x142)](_0x3827ad(0x15c),_0x183cc8);}throw _0x51b193;}}async[_0x292fd5(0x15e)](_0xacd4df,_0x4cd817){const _0x4add60=_0x292fd5,_0x3c61b8=navigator[_0x4add60(0x115)];if(!_0x3c61b8)throw new Error('WebGPU\x20is\x20not\x20supported\x20in\x20this\x20browser.\x20当前浏览器不支持\x20WebGPU。');const _0x581df9=this[_0x4add60(0x11c)]();this[_0x4add60(0x159)](_0x581df9);const _0x396ae4=await _0x3c61b8[_0x4add60(0x114)]({'powerPreference':_0x581df9[_0x4add60(0x12b)],'forceFallbackAdapter':_0x581df9[_0x4add60(0x132)]});if(!this[_0x4add60(0x10a)](_0x4cd817))return null;if(!_0x396ae4)throw new Error(_0x4add60(0x155));this[_0x4add60(0x13d)](_0x396ae4,_0x581df9);const _0x2106cf=await _0x396ae4[_0x4add60(0x11d)]({'requiredFeatures':[..._0x581df9['requiredFeatures']??[]],'requiredLimits':{..._0x581df9[_0x4add60(0x12c)]??{}}});if(!this[_0x4add60(0x10a)](_0x4cd817))return _0x2106cf['destroy'](),null;const _0x13e6da=_0xacd4df[_0x4add60(0x124)](_0x4add60(0x152));if(!_0x13e6da){_0x2106cf[_0x4add60(0x149)]();throw new Error('Failed\x20to\x20create\x20a\x20WebGPU\x20canvas\x20context.\x20创建\x20WebGPU\x20画布上下文失败。');}const _0x39a706=_0x3c61b8[_0x4add60(0x107)](),_0x242459=_0x581df9[_0x4add60(0x11a)]??GPUTextureUsage['RENDER_ATTACHMENT'];if((_0x242459&GPUTextureUsage[_0x4add60(0x131)])===0x0){_0x2106cf[_0x4add60(0x149)]();throw new Error(_0x4add60(0x148));}try{_0x13e6da[_0x4add60(0x14c)]({'device':_0x2106cf,'format':_0x39a706,'usage':_0x242459,'alphaMode':_0x581df9[_0x4add60(0x11f)]??'premultiplied','viewFormats':[..._0x581df9['viewFormats']??[]]});}catch(_0x2c7d37){try{_0x13e6da[_0x4add60(0x12e)]();}catch{}_0x2106cf['destroy']();throw _0x2c7d37;}return{'adapter':_0x396ae4,'device':_0x2106cf,'context':_0x13e6da,'format':_0x39a706};}[_0x292fd5(0x159)](_0x2ff580){const _0x9f48f7=_0x292fd5;for(const [_0x39121b,_0x14561f]of Object[_0x9f48f7(0x15a)](_0x2ff580[_0x9f48f7(0x12c)]??{})){if(!Number[_0x9f48f7(0x127)](_0x14561f)||_0x14561f<0x0)throw new Error(_0x9f48f7(0x136)+_0x39121b+':\x20'+_0x14561f+_0x9f48f7(0x13a)+_0x39121b+'\x20的值无效:'+_0x14561f+'。');}}['validateAdapterFeatures'](_0xfcfeff,_0x1acab9){const _0x12ea1c=_0x292fd5;for(const _0x54c3b0 of _0x1acab9['requiredFeatures']??[]){if(!_0xfcfeff[_0x12ea1c(0x163)][_0x12ea1c(0x113)](_0x54c3b0))throw new Error(_0x12ea1c(0x111)+_0x54c3b0+_0x12ea1c(0xfc)+_0x54c3b0+'。');}}[_0x292fd5(0x108)](_0x4937a8){const _0x2bf74e=_0x292fd5;if(!Number[_0x2bf74e(0x103)](_0x4937a8[_0x2bf74e(0x167)])||!Number[_0x2bf74e(0x103)](_0x4937a8['canvasHeight']))throw new Error('WebGPU\x20viewport\x20dimensions\x20must\x20be\x20integers.\x20WebGPU\x20视口尺寸必须是整数。');if(_0x4937a8[_0x2bf74e(0x167)]<=0x0||_0x4937a8[_0x2bf74e(0x10f)]<=0x0)throw new Error('WebGPU\x20viewport\x20dimensions\x20must\x20be\x20greater\x20than\x20zero.\x20WebGPU\x20视口尺寸必须大于零。');}['resizeCanvas'](_0x2b68a1){const _0xf0038=_0x292fd5,_0x23f501=this[_0xf0038(0x133)](),_0x590212=this[_0xf0038(0x129)]!==_0x2b68a1[_0xf0038(0x167)]||this['frameHeight']!==_0x2b68a1[_0xf0038(0x10f)];if(!_0x590212)return![];return _0x23f501['width']!==_0x2b68a1[_0xf0038(0x167)]&&(_0x23f501[_0xf0038(0x164)]=_0x2b68a1['canvasWidth']),_0x23f501[_0xf0038(0x126)]!==_0x2b68a1[_0xf0038(0x10f)]&&(_0x23f501['height']=_0x2b68a1[_0xf0038(0x10f)]),this[_0xf0038(0x129)]=_0x2b68a1[_0xf0038(0x167)],this[_0xf0038(0x118)]=_0x2b68a1[_0xf0038(0x10f)],!![];}[_0x292fd5(0x154)](_0x4e454b){const _0x1ea2d9=_0x292fd5;void _0x4e454b[_0x1ea2d9(0xfb)]['then'](_0x118eb0=>{const _0x14699d=_0x1ea2d9;this[_0x14699d(0xf1)](_0x4e454b,_0x118eb0);});}['handleDeviceLost'](_0x19fc64,_0x1a1ad9){const _0x4da43e=_0x292fd5;if(this[_0x4da43e(0x13e)]===_0x4da43e(0x106)||this[_0x4da43e(0x11b)]?.['device']!==_0x19fc64)return;this[_0x4da43e(0x13e)]='lost';try{this['releaseCurrentResources']('device-lost');}catch(_0x4cbf1a){console['error'](_0x4da43e(0x10b),_0x4cbf1a);}if(this['restorePromise'])return;const _0x3372f8=this[_0x4da43e(0xff)]();this[_0x4da43e(0x153)]=_0x3372f8,void _0x3372f8['catch'](_0x25b8a0=>{const _0x34d558=_0x4da43e;console[_0x34d558(0x142)](_0x34d558(0x162)+_0x1a1ad9[_0x34d558(0x14b)],_0x25b8a0);})[_0x4da43e(0x143)](()=>{const _0x1d16fe=_0x4da43e;this[_0x1d16fe(0x153)]===_0x3372f8&&(this['restorePromise']=null);});}async[_0x292fd5(0xff)](){const _0x110bba=_0x292fd5,_0x57e579=this[_0x110bba(0x161)];if(!_0x57e579||!this['crs']||this[_0x110bba(0x13e)]===_0x110bba(0x106))return;const _0x725f98=++this[_0x110bba(0x147)];this['lifecycleState']=_0x110bba(0x145);try{const _0x14be02=await this[_0x110bba(0x13f)](_0x57e579,_0x725f98);if(!_0x14be02||!this[_0x110bba(0x10a)](_0x725f98))return;this[_0x110bba(0x13e)]='ready',this[_0x110bba(0x139)]&&this['render'](this[_0x110bba(0x139)]);}catch(_0x66e36e){this[_0x110bba(0x10a)](_0x725f98)&&(this[_0x110bba(0x13e)]=_0x110bba(0xfb));throw _0x66e36e;}}[_0x292fd5(0x105)](_0x251955){const _0x4abef3=_0x292fd5,_0x49cb68=this[_0x4abef3(0x11b)];let _0x3e1bb;if(this[_0x4abef3(0x102)]){this[_0x4abef3(0x102)]=![];try{this[_0x4abef3(0x119)](_0x251955);}catch(_0x3367f0){_0x3e1bb=_0x3367f0;}}this[_0x4abef3(0x11b)]=null,this[_0x4abef3(0x129)]=0x0,this[_0x4abef3(0x118)]=0x0;if(_0x49cb68){try{_0x49cb68[_0x4abef3(0x15f)]['unconfigure']();}catch(_0x540d06){!_0x3e1bb?_0x3e1bb=_0x540d06:console['error']('释放\x20WebGPU\x20canvas\x20context\x20时发生额外错误。',_0x540d06);}if(_0x251955!==_0x4abef3(0x140))try{_0x49cb68[_0x4abef3(0x12d)][_0x4abef3(0x149)]();}catch(_0xbd5ca4){!_0x3e1bb?_0x3e1bb=_0xbd5ca4:console[_0x4abef3(0x142)](_0x4abef3(0xed),_0xbd5ca4);}}if(_0x3e1bb)throw _0x3e1bb;}[_0x292fd5(0x10a)](_0x557c84){const _0x3d74e8=_0x292fd5;return this['lifecycleState']!==_0x3d74e8(0x106)&&this[_0x3d74e8(0x147)]===_0x557c84;}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function _0x2164(_0x10129a,_0x1ccd9c){var _0x21d7c9=_0x21d7();return _0x2164=function(_0x21649f,_0x34a439){_0x21649f=_0x21649f-0x67;var _0x1cba63=_0x21d7c9[_0x21649f];return _0x1cba63;},_0x2164(_0x10129a,_0x1ccd9c);}(function(_0x2ab55c,_0x327b73){var _0x4f0955=_0x2164,_0x8c0da3=_0x2ab55c();while(!![]){try{var _0x3162e7=parseInt(_0x4f0955(0x6a))/0x1*(parseInt(_0x4f0955(0x6f))/0x2)+parseInt(_0x4f0955(0x68))/0x3*(parseInt(_0x4f0955(0x6e))/0x4)+-parseInt(_0x4f0955(0x6c))/0x5+parseInt(_0x4f0955(0x6d))/0x6+parseInt(_0x4f0955(0x69))/0x7*(-parseInt(_0x4f0955(0x67))/0x8)+-parseInt(_0x4f0955(0x70))/0x9*(-parseInt(_0x4f0955(0x71))/0xa)+-parseInt(_0x4f0955(0x6b))/0xb;if(_0x3162e7===_0x327b73)break;else _0x8c0da3['push'](_0x8c0da3['shift']());}catch(_0x1126f0){_0x8c0da3['push'](_0x8c0da3['shift']());}}}(_0x21d7,0xe618d));export{BaseWebgpuRenderer}from'./baseWebgpuRenderer';function _0x21d7(){var _0x2d6478=['1225953TijyBw','100zuujmU','1925656eSIFxb','625785oHawFj','7fksDYK','1448314ZpCfON','31443632RQwtZU','6089315tnGaaO','8436600jYSdKP','20qtjVve','2Jxepiy'];_0x21d7=function(){return _0x2d6478;};return _0x21d7();}export{WebgpuCoverageResources}from'./webgpuCoverageResources';
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { MapRenderViewport } from '../../shared/map/types';
|
|
2
|
+
/**
|
|
3
|
+
* Capabilities requested before initializing a WebGPU renderer.
|
|
4
|
+
* WebGPU 渲染器初始化前声明的能力要求。
|
|
5
|
+
*/
|
|
6
|
+
export interface WebgpuRendererRequirements {
|
|
7
|
+
powerPreference?: GPUPowerPreference;
|
|
8
|
+
forceFallbackAdapter?: boolean;
|
|
9
|
+
requiredFeatures?: readonly GPUFeatureName[];
|
|
10
|
+
requiredLimits?: Readonly<Record<string, number>>;
|
|
11
|
+
alphaMode?: GPUCanvasAlphaMode;
|
|
12
|
+
canvasUsage?: GPUTextureUsageFlags;
|
|
13
|
+
viewFormats?: readonly GPUTextureFormat[];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Resources owned by the WebGPU renderer lifecycle.
|
|
17
|
+
* WebGPU 渲染器生命周期管理的基础资源。
|
|
18
|
+
*/
|
|
19
|
+
export interface WebgpuRendererResources {
|
|
20
|
+
readonly adapter: GPUAdapter;
|
|
21
|
+
readonly device: GPUDevice;
|
|
22
|
+
readonly context: GPUCanvasContext;
|
|
23
|
+
readonly format: GPUTextureFormat;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Fixed context supplied while encoding a WebGPU frame.
|
|
27
|
+
* WebGPU 帧编码过程中使用的固定上下文。
|
|
28
|
+
*/
|
|
29
|
+
export interface WebgpuFrameContext {
|
|
30
|
+
readonly encoder: GPUCommandEncoder;
|
|
31
|
+
readonly targetView: GPUTextureView;
|
|
32
|
+
readonly viewport: MapRenderViewport;
|
|
33
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { MapRenderViewport } from '../../shared/map/types';
|
|
2
|
+
import type { ColorMode, ColorRange, ColorStop, GridData, SampleMode } from '../../shared/visualization';
|
|
3
|
+
export declare const WEBGPU_VISUALIZATION_PARAMS_FLOAT_COUNT = 28;
|
|
4
|
+
export declare const WEBGPU_VISUALIZATION_PARAMS_BUFFER_SIZE: number;
|
|
5
|
+
/**
|
|
6
|
+
* Values used to write the shared WebGPU visualization uniform layout.
|
|
7
|
+
* 用于写入 WebGPU 公共可视化 uniform 布局的数据。
|
|
8
|
+
*/
|
|
9
|
+
export interface WebgpuVisualizationParamsInput {
|
|
10
|
+
viewport: MapRenderViewport;
|
|
11
|
+
grid: GridData;
|
|
12
|
+
colorStops: readonly ColorStop[];
|
|
13
|
+
colorRange: ColorRange | null;
|
|
14
|
+
opacity: number;
|
|
15
|
+
colorMode: ColorMode;
|
|
16
|
+
sampleMode: SampleMode;
|
|
17
|
+
mapExtension?: readonly [number, number];
|
|
18
|
+
renderExtension?: readonly [number, number];
|
|
19
|
+
noDataExtension?: readonly [number, number];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Write the shared 28-float WebGPU visualization uniform layout.
|
|
23
|
+
* 写入公共的 28 浮点 WebGPU 可视化 uniform 布局。
|
|
24
|
+
*/
|
|
25
|
+
export declare const writeWebgpuVisualizationParams: (target: Float32Array<ArrayBuffer>, input: WebgpuVisualizationParamsInput) => void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const _0x3847aa=_0x1006;(function(_0xa503ba,_0x3b9d8b){const _0xdc24fa=_0x1006,_0x351474=_0xa503ba();while(!![]){try{const _0x561eac=-parseInt(_0xdc24fa(0x1a7))/0x1+-parseInt(_0xdc24fa(0x1b8))/0x2*(parseInt(_0xdc24fa(0x1b1))/0x3)+-parseInt(_0xdc24fa(0x19d))/0x4*(-parseInt(_0xdc24fa(0x1aa))/0x5)+parseInt(_0xdc24fa(0x19a))/0x6+parseInt(_0xdc24fa(0x1ad))/0x7*(-parseInt(_0xdc24fa(0x1be))/0x8)+-parseInt(_0xdc24fa(0x1a3))/0x9+parseInt(_0xdc24fa(0x1b5))/0xa*(parseInt(_0xdc24fa(0x197))/0xb);if(_0x561eac===_0x3b9d8b)break;else _0x351474['push'](_0x351474['shift']());}catch(_0x1f4cd7){_0x351474['push'](_0x351474['shift']());}}}(_0x2ebe,0x2370e));function _0x2ebe(){const _0x18ea04=['45RpuNcQ','minLng','valueScale','7CZOvOe','min','viewport','maxValue','24xbTmOf','minValue','colorMode','.\x20WebGPU\x20可视化参数数组长度不正确。','630XnvhmK','height','\x20floats\x20but\x20received\x20','22244wHmQpI','opacity','mapExtension','grid','noDataExtension','worldTopLeftX','318664olyzup','sampleMode','width','maxLng','93071AGuiXF','renderExtension','BYTES_PER_ELEMENT','234564oIlwas','colorRange','canvasHeight','15728yjyHTC','WebGPU\x20visualization\x20params\x20require\x20at\x20least\x20one\x20color\x20stop.\x20WebGPU\x20可视化参数至少需要一个色标。','noData','length','colorStops','devicePixelRatio','1135521jZLNVi','max','worldTopLeftY','zoom','207381JJyhUZ','maxLat','canvasWidth'];_0x2ebe=function(){return _0x18ea04;};return _0x2ebe();}import{colorModeToShaderValue,sampleModeToShaderValue,toShaderFloat}from'../../shared/visualization';function _0x1006(_0x40ddf8,_0x590dfb){const _0x2ebe5f=_0x2ebe();return _0x1006=function(_0x100684,_0x1f7ba2){_0x100684=_0x100684-0x197;let _0x384f8a=_0x2ebe5f[_0x100684];return _0x384f8a;},_0x1006(_0x40ddf8,_0x590dfb);}export const WEBGPU_VISUALIZATION_PARAMS_FLOAT_COUNT=0x1c;export const WEBGPU_VISUALIZATION_PARAMS_BUFFER_SIZE=WEBGPU_VISUALIZATION_PARAMS_FLOAT_COUNT*Float32Array[_0x3847aa(0x199)];const ZERO_EXTENSION=[0x0,0x0];export const writeWebgpuVisualizationParams=(_0xfd68d2,_0x545dc5)=>{const _0x1543cb=_0x3847aa;if(_0xfd68d2['length']!==WEBGPU_VISUALIZATION_PARAMS_FLOAT_COUNT)throw new Error('WebGPU\x20visualization\x20params\x20require\x20'+WEBGPU_VISUALIZATION_PARAMS_FLOAT_COUNT+_0x1543cb(0x1b7)+_0xfd68d2[_0x1543cb(0x1a0)]+_0x1543cb(0x1b4));if(_0x545dc5[_0x1543cb(0x1a1)][_0x1543cb(0x1a0)]===0x0)throw new Error(_0x1543cb(0x19e));const _0x1251d1=_0x545dc5[_0x1543cb(0x1a1)][0x0],_0x4391ed=_0x545dc5[_0x1543cb(0x1a1)][_0x545dc5[_0x1543cb(0x1a1)][_0x1543cb(0x1a0)]-0x1],_0x52ed38=_0x545dc5[_0x1543cb(0x1ba)]??ZERO_EXTENSION,_0x2ca4c1=_0x545dc5[_0x1543cb(0x198)]??ZERO_EXTENSION,_0x569be7=_0x545dc5[_0x1543cb(0x1bc)]??ZERO_EXTENSION,_0x514c69=_0x545dc5['colorRange']?.[_0x1543cb(0x1b2)]??_0x1251d1[_0x1543cb(0x1ae)],_0x283390=_0x545dc5[_0x1543cb(0x19b)]?.[_0x1543cb(0x1b0)]??_0x4391ed[_0x1543cb(0x1a4)];_0xfd68d2['fill'](0x0),_0xfd68d2[0x0]=_0x545dc5[_0x1543cb(0x1af)][_0x1543cb(0x1a9)],_0xfd68d2[0x1]=_0x545dc5[_0x1543cb(0x1af)][_0x1543cb(0x19c)],_0xfd68d2[0x2]=_0x545dc5['viewport'][_0x1543cb(0x1bd)],_0xfd68d2[0x3]=_0x545dc5[_0x1543cb(0x1af)][_0x1543cb(0x1a5)],_0xfd68d2[0x4]=_0x545dc5[_0x1543cb(0x1af)][_0x1543cb(0x1a6)],_0xfd68d2[0x5]=_0x545dc5['viewport'][_0x1543cb(0x1a2)],_0xfd68d2[0x6]=_0x52ed38[0x0],_0xfd68d2[0x7]=_0x52ed38[0x1],_0xfd68d2[0x8]=_0x545dc5[_0x1543cb(0x1bb)][_0x1543cb(0x1ab)],_0xfd68d2[0x9]=_0x545dc5[_0x1543cb(0x1bb)][_0x1543cb(0x1c1)],_0xfd68d2[0xa]=_0x545dc5[_0x1543cb(0x1bb)]['minLat'],_0xfd68d2[0xb]=_0x545dc5[_0x1543cb(0x1bb)][_0x1543cb(0x1a8)],_0xfd68d2[0xc]=_0x545dc5['grid'][_0x1543cb(0x1c0)],_0xfd68d2[0xd]=_0x545dc5[_0x1543cb(0x1bb)][_0x1543cb(0x1b6)],_0xfd68d2[0xe]=_0x545dc5[_0x1543cb(0x1bb)][_0x1543cb(0x1ac)],_0xfd68d2[0xf]=_0x545dc5['colorStops'][_0x1543cb(0x1a0)],_0xfd68d2[0x10]=toShaderFloat(_0x514c69),_0xfd68d2[0x11]=toShaderFloat(_0x283390),_0xfd68d2[0x12]=_0x545dc5[_0x1543cb(0x1b9)],_0xfd68d2[0x13]=0x0,_0xfd68d2[0x14]=colorModeToShaderValue(_0x545dc5[_0x1543cb(0x1b3)]),_0xfd68d2[0x15]=sampleModeToShaderValue(_0x545dc5[_0x1543cb(0x1bf)]),_0xfd68d2[0x16]=_0x2ca4c1[0x0],_0xfd68d2[0x17]=_0x2ca4c1[0x1],_0xfd68d2[0x18]=_0x545dc5[_0x1543cb(0x1bb)][_0x1543cb(0x19f)]??0x0,_0xfd68d2[0x19]=_0x545dc5[_0x1543cb(0x1bb)][_0x1543cb(0x19f)]===undefined?0x0:0x1,_0xfd68d2[0x1a]=_0x569be7[0x0],_0xfd68d2[0x1b]=_0x569be7[0x1];};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { ColorStopArrays, GridData } from '../../shared/visualization';
|
|
2
|
+
/**
|
|
3
|
+
* Own shared WebGPU grid texture and color stop resources.
|
|
4
|
+
* 管理 WebGPU 共用的网格纹理和色标资源。
|
|
5
|
+
*/
|
|
6
|
+
export declare class WebgpuVisualizationResources {
|
|
7
|
+
private readonly device;
|
|
8
|
+
private readonly label;
|
|
9
|
+
private gridTexture;
|
|
10
|
+
private gridTextureView;
|
|
11
|
+
private colorStopMinsBuffer;
|
|
12
|
+
private colorStopMaxsBuffer;
|
|
13
|
+
private colorStopColorsBuffer;
|
|
14
|
+
constructor(device: GPUDevice, label: string);
|
|
15
|
+
/**
|
|
16
|
+
* Return whether grid and color stop resources are available.
|
|
17
|
+
* 返回网格和色标资源是否已经全部存在。
|
|
18
|
+
*/
|
|
19
|
+
get ready(): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Replace the grid texture while preserving the previous texture on failure.
|
|
22
|
+
* 替换网格纹理,并在更新失败时保留原纹理。
|
|
23
|
+
*/
|
|
24
|
+
updateGrid(grid: GridData): void;
|
|
25
|
+
/**
|
|
26
|
+
* Replace all color stop buffers as one resource update.
|
|
27
|
+
* 将全部色标 Buffer 作为一次资源更新进行替换。
|
|
28
|
+
*/
|
|
29
|
+
updateColorStops(colorStopArrays: ColorStopArrays): void;
|
|
30
|
+
/**
|
|
31
|
+
* Create a BindGroup using the shared visualization binding contract.
|
|
32
|
+
* 使用公共可视化 binding 契约创建 BindGroup。
|
|
33
|
+
*/
|
|
34
|
+
createBindGroup(layout: GPUBindGroupLayout, paramsBuffer: GPUBuffer, additionalEntries?: readonly GPUBindGroupEntry[]): GPUBindGroup;
|
|
35
|
+
/**
|
|
36
|
+
* Destroy all shared visualization resources.
|
|
37
|
+
* 销毁全部公共可视化资源。
|
|
38
|
+
*/
|
|
39
|
+
destroy(): void;
|
|
40
|
+
/**
|
|
41
|
+
* Create and upload one read-only storage buffer.
|
|
42
|
+
* 创建并上传单个只读 StorageBuffer。
|
|
43
|
+
*/
|
|
44
|
+
private createStorageBuffer;
|
|
45
|
+
/**
|
|
46
|
+
* Return complete resources required by the visualization BindGroup.
|
|
47
|
+
* 返回可视化 BindGroup 需要的完整资源。
|
|
48
|
+
*/
|
|
49
|
+
private getResources;
|
|
50
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const _0x4f1aee=_0xa813;function _0xa813(_0x1db974,_0x51a201){const _0x5aec67=_0x5aec();return _0xa813=function(_0xa8134a,_0x70c5e9){_0xa8134a=_0xa8134a-0x1f2;let _0x1d5850=_0x5aec67[_0xa8134a];return _0x1d5850;},_0xa813(_0x1db974,_0x51a201);}(function(_0x2c4ac0,_0x41ff71){const _0xc7776a=_0xa813,_0x33105a=_0x2c4ac0();while(!![]){try{const _0x11d7e2=-parseInt(_0xc7776a(0x206))/0x1+-parseInt(_0xc7776a(0x20f))/0x2+-parseInt(_0xc7776a(0x20d))/0x3+parseInt(_0xc7776a(0x1fb))/0x4+-parseInt(_0xc7776a(0x1fd))/0x5+parseInt(_0xc7776a(0x200))/0x6*(parseInt(_0xc7776a(0x1f3))/0x7)+parseInt(_0xc7776a(0x1fc))/0x8*(parseInt(_0xc7776a(0x1fe))/0x9);if(_0x11d7e2===_0x41ff71)break;else _0x33105a['push'](_0x33105a['shift']());}catch(_0x3346fd){_0x33105a['push'](_0x33105a['shift']());}}}(_0x5aec,0xd4d44));import{validateGridData}from'../../shared/visualization';function _0x5aec(){const _0x4b4c41=['16cVcSbo','8246540TvqyRd','7035939frRudx','\x20color\x20stop\x20maxs','105882mgiukt','\x20color\x20stop\x20colors','device','Color\x20stop\x20array\x20dimensions\x20do\x20not\x20match.\x20色标数组尺寸不匹配。','createStorageBuffer','values','1017403LOgIoH','writeBuffer','\x20conflicts\x20with\x20shared\x20visualization\x20bindings.\x20额外\x20WebGPU\x20binding\x20与公共可视化\x20binding\x20冲突。','BYTES_PER_ELEMENT','TEXTURE_BINDING','writeTexture','label','2493270LqBEcx','length','987428BNqdnF','colorStopMaxsBuffer','STORAGE','width','updateColorStops','\x20exceeds\x20the\x20WebGPU\x20texture\x20limit\x20','COPY_DST','set','gridTexture','createTexture','\x20grid\x20texture\x20view','bytesPerRow','mins','destroy','Additional\x20WebGPU\x20binding\x20','\x20is\x20duplicated.\x20额外\x20WebGPU\x20binding\x20重复。','maxs','ceil','WebGPU\x20visualization\x20resources\x20are\x20incomplete.\x20WebGPU\x20可视化资源尚未准备完整。','maxTextureDimension2D','queue','gridTextureView','getResources','byteLength','colorStopColorsBuffer','\x20color\x20stop\x20mins','r32float','\x20bind\x20group','subarray','binding','createBindGroup','add','623zyqdPJ','colors','\x20grid\x20texture','Grid\x20size\x20','.\x20网格尺寸超过\x20WebGPU\x20纹理限制。','height','colorStopMinsBuffer','ready','6916552cOQwJf'];_0x5aec=function(){return _0x4b4c41;};return _0x5aec();}const PARAMS_BINDING=0x0,GRID_TEXTURE_BINDING=0x1,COLOR_STOP_MINS_BINDING=0x2,COLOR_STOP_MAXS_BINDING=0x3,COLOR_STOP_COLORS_BINDING=0x4,LAST_VISUALIZATION_BINDING=COLOR_STOP_COLORS_BINDING;export class WebgpuVisualizationResources{[_0x4f1aee(0x202)];[_0x4f1aee(0x20c)];[_0x4f1aee(0x217)]=null;[_0x4f1aee(0x224)]=null;['colorStopMinsBuffer']=null;[_0x4f1aee(0x210)]=null;['colorStopColorsBuffer']=null;constructor(_0x1b561c,_0x40d379){const _0x4eb5b8=_0x4f1aee;this[_0x4eb5b8(0x202)]=_0x1b561c,this[_0x4eb5b8(0x20c)]=_0x40d379;}get[_0x4f1aee(0x1fa)](){const _0x5cc9f7=_0x4f1aee;return this['gridTextureView']!==null&&this[_0x5cc9f7(0x1f9)]!==null&&this['colorStopMaxsBuffer']!==null&&this[_0x5cc9f7(0x227)]!==null;}['updateGrid'](_0x260bc4){const _0x3ce482=_0x4f1aee;validateGridData(_0x260bc4);const _0x538a6d=this['device']['limits'][_0x3ce482(0x222)];if(_0x260bc4[_0x3ce482(0x212)]>_0x538a6d||_0x260bc4[_0x3ce482(0x1f8)]>_0x538a6d)throw new Error(_0x3ce482(0x1f6)+_0x260bc4['width']+'x'+_0x260bc4['height']+_0x3ce482(0x214)+_0x538a6d+_0x3ce482(0x1f7));const _0x41e5b3=createPaddedGridValues(_0x260bc4),_0x3a6ac3=this['device'][_0x3ce482(0x218)]({'label':this[_0x3ce482(0x20c)]+_0x3ce482(0x1f5),'size':{'width':_0x260bc4['width'],'height':_0x260bc4[_0x3ce482(0x1f8)]},'format':_0x3ce482(0x229),'usage':GPUTextureUsage[_0x3ce482(0x20a)]|GPUTextureUsage[_0x3ce482(0x215)]});try{this[_0x3ce482(0x202)][_0x3ce482(0x223)][_0x3ce482(0x20b)]({'texture':_0x3a6ac3},_0x41e5b3['values'],{'bytesPerRow':_0x41e5b3[_0x3ce482(0x21a)],'rowsPerImage':_0x260bc4['height']},{'width':_0x260bc4[_0x3ce482(0x212)],'height':_0x260bc4[_0x3ce482(0x1f8)]});}catch(_0x12019a){_0x3a6ac3[_0x3ce482(0x21c)]();throw _0x12019a;}const _0x1f0c73=this[_0x3ce482(0x217)];this[_0x3ce482(0x217)]=_0x3a6ac3,this[_0x3ce482(0x224)]=_0x3a6ac3['createView']({'label':this[_0x3ce482(0x20c)]+_0x3ce482(0x219)}),_0x1f0c73?.[_0x3ce482(0x21c)]();}[_0x4f1aee(0x213)](_0x1f53b8){const _0x42c0df=_0x4f1aee;validateColorStopArrays(_0x1f53b8);let _0x3cd626=null,_0x353c0d=null,_0x46da34=null;try{_0x3cd626=this['createStorageBuffer'](_0x1f53b8[_0x42c0df(0x21b)],this[_0x42c0df(0x20c)]+_0x42c0df(0x228)),_0x353c0d=this[_0x42c0df(0x204)](_0x1f53b8[_0x42c0df(0x21f)],this['label']+_0x42c0df(0x1ff)),_0x46da34=this[_0x42c0df(0x204)](_0x1f53b8['colors'],this[_0x42c0df(0x20c)]+_0x42c0df(0x201));}catch(_0x3a0726){_0x3cd626?.[_0x42c0df(0x21c)](),_0x353c0d?.[_0x42c0df(0x21c)](),_0x46da34?.[_0x42c0df(0x21c)]();throw _0x3a0726;}const _0x4f324f=this[_0x42c0df(0x1f9)],_0x30b01c=this[_0x42c0df(0x210)],_0x23ef5e=this['colorStopColorsBuffer'];this[_0x42c0df(0x1f9)]=_0x3cd626,this[_0x42c0df(0x210)]=_0x353c0d,this['colorStopColorsBuffer']=_0x46da34,_0x4f324f?.[_0x42c0df(0x21c)](),_0x30b01c?.[_0x42c0df(0x21c)](),_0x23ef5e?.[_0x42c0df(0x21c)]();}[_0x4f1aee(0x22d)](_0x13b457,_0x22ae8f,_0x10d223=[]){const _0x405800=_0x4f1aee,_0x30454e=this[_0x405800(0x225)]();return validateAdditionalEntries(_0x10d223),this['device']['createBindGroup']({'label':this[_0x405800(0x20c)]+_0x405800(0x22a),'layout':_0x13b457,'entries':[{'binding':PARAMS_BINDING,'resource':{'buffer':_0x22ae8f}},{'binding':GRID_TEXTURE_BINDING,'resource':_0x30454e['gridTextureView']},{'binding':COLOR_STOP_MINS_BINDING,'resource':{'buffer':_0x30454e[_0x405800(0x1f9)]}},{'binding':COLOR_STOP_MAXS_BINDING,'resource':{'buffer':_0x30454e[_0x405800(0x210)]}},{'binding':COLOR_STOP_COLORS_BINDING,'resource':{'buffer':_0x30454e[_0x405800(0x227)]}},..._0x10d223]});}['destroy'](){const _0x4353b0=_0x4f1aee;this[_0x4353b0(0x217)]?.['destroy'](),this[_0x4353b0(0x1f9)]?.['destroy'](),this[_0x4353b0(0x210)]?.[_0x4353b0(0x21c)](),this['colorStopColorsBuffer']?.[_0x4353b0(0x21c)](),this[_0x4353b0(0x217)]=null,this[_0x4353b0(0x224)]=null,this[_0x4353b0(0x1f9)]=null,this[_0x4353b0(0x210)]=null,this[_0x4353b0(0x227)]=null;}['createStorageBuffer'](_0x1ed4e3,_0x1a7822){const _0x56a4a6=_0x4f1aee,_0x3ac2dc=this[_0x56a4a6(0x202)]['createBuffer']({'label':_0x1a7822,'size':_0x1ed4e3[_0x56a4a6(0x226)],'usage':GPUBufferUsage[_0x56a4a6(0x211)]|GPUBufferUsage['COPY_DST']});return this['device'][_0x56a4a6(0x223)][_0x56a4a6(0x207)](_0x3ac2dc,0x0,_0x1ed4e3),_0x3ac2dc;}[_0x4f1aee(0x225)](){const _0x2cff86=_0x4f1aee;if(!this[_0x2cff86(0x224)]||!this[_0x2cff86(0x1f9)]||!this[_0x2cff86(0x210)]||!this[_0x2cff86(0x227)])throw new Error(_0x2cff86(0x221));return{'gridTextureView':this[_0x2cff86(0x224)],'colorStopMinsBuffer':this[_0x2cff86(0x1f9)],'colorStopMaxsBuffer':this['colorStopMaxsBuffer'],'colorStopColorsBuffer':this[_0x2cff86(0x227)]};}}const validateColorStopArrays=_0x19d1e5=>{const _0x203fe5=_0x4f1aee,_0x71255=_0x19d1e5[_0x203fe5(0x21b)][_0x203fe5(0x20e)];if(_0x71255===0x0)throw new Error('Color\x20stop\x20arrays\x20cannot\x20be\x20empty.\x20色标数组不能为空。');if(_0x19d1e5[_0x203fe5(0x21f)][_0x203fe5(0x20e)]!==_0x71255||_0x19d1e5[_0x203fe5(0x1f4)]['length']!==_0x71255*0x4)throw new Error(_0x203fe5(0x203));},validateAdditionalEntries=_0x450bc4=>{const _0x51ff2c=_0x4f1aee,_0x449412=new Set();for(const _0x32d561 of _0x450bc4){if(_0x32d561[_0x51ff2c(0x22c)]<=LAST_VISUALIZATION_BINDING)throw new Error('Additional\x20WebGPU\x20binding\x20'+_0x32d561[_0x51ff2c(0x22c)]+_0x51ff2c(0x208));if(_0x449412['has'](_0x32d561['binding']))throw new Error(_0x51ff2c(0x21d)+_0x32d561[_0x51ff2c(0x22c)]+_0x51ff2c(0x21e));_0x449412[_0x51ff2c(0x1f2)](_0x32d561[_0x51ff2c(0x22c)]);}},createPaddedGridValues=_0x41a637=>{const _0x50c92d=_0x4f1aee,_0x305af7=_0x41a637[_0x50c92d(0x212)]*Float32Array['BYTES_PER_ELEMENT'],_0x441f74=Math[_0x50c92d(0x220)](_0x305af7/0x100)*0x100;if(_0x305af7===_0x441f74)return{'values':new Float32Array(_0x41a637[_0x50c92d(0x205)]),'bytesPerRow':_0x441f74};const _0x194b07=_0x441f74/Float32Array[_0x50c92d(0x209)],_0x1b2364=new Float32Array(_0x194b07*_0x41a637[_0x50c92d(0x1f8)]);for(let _0x3cbfef=0x0;_0x3cbfef<_0x41a637[_0x50c92d(0x1f8)];_0x3cbfef+=0x1){const _0xc64409=_0x3cbfef*_0x41a637[_0x50c92d(0x212)],_0x26b104=_0x3cbfef*_0x194b07;_0x1b2364[_0x50c92d(0x216)](_0x41a637[_0x50c92d(0x205)][_0x50c92d(0x22b)](_0xc64409,_0xc64409+_0x41a637[_0x50c92d(0x212)]),_0x26b104);}return{'values':_0x1b2364,'bytesPerRow':_0x441f74};};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { ClipMode } from '../../shared/coverage';
|
|
2
|
+
import type { MapCrs } from '../../shared/map/types';
|
|
3
|
+
import type { PolygonMesh } from '../../shared/polygon';
|
|
4
|
+
/** 管理 WebGPU 多边形、模板和遮罩覆盖资源。 */
|
|
5
|
+
export declare class WebgpuCoverageResources {
|
|
6
|
+
private readonly device;
|
|
7
|
+
private readonly crs;
|
|
8
|
+
private readonly paramsBuffer;
|
|
9
|
+
private vertexBuffer;
|
|
10
|
+
private vertexCount;
|
|
11
|
+
private stencilTexture;
|
|
12
|
+
private maskTexture;
|
|
13
|
+
private readonly stencilPipeline;
|
|
14
|
+
private readonly maskPipeline;
|
|
15
|
+
private readonly stencilBindGroup;
|
|
16
|
+
private readonly maskBindGroup;
|
|
17
|
+
private width;
|
|
18
|
+
private height;
|
|
19
|
+
constructor(device: GPUDevice, crs: MapCrs, paramsBuffer: GPUBuffer);
|
|
20
|
+
get maskView(): GPUTextureView | null;
|
|
21
|
+
updateMesh(mesh: PolygonMesh | null): void;
|
|
22
|
+
resize(width: number, height: number): void;
|
|
23
|
+
encode(encoder: GPUCommandEncoder, mode: ClipMode): void;
|
|
24
|
+
createStencilAttachment(): GPURenderPassDepthStencilAttachment | undefined;
|
|
25
|
+
/** 使用公共多边形顶点编码一次直接绘制。 */
|
|
26
|
+
drawDirect(pass: GPURenderPassEncoder): boolean;
|
|
27
|
+
destroy(): void;
|
|
28
|
+
private createStencilPipeline;
|
|
29
|
+
private createMaskPipeline;
|
|
30
|
+
private createVertexSource;
|
|
31
|
+
private createVertexLayout;
|
|
32
|
+
private createParamsBindGroup;
|
|
33
|
+
private createVertexBuffer;
|
|
34
|
+
private encodeStencil;
|
|
35
|
+
private encodeMask;
|
|
36
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const _0x53aff6=_0x35c2;(function(_0x1a9574,_0x171aae){const _0x344545=_0x35c2,_0x727bc6=_0x1a9574();while(!![]){try{const _0x88ece=parseInt(_0x344545(0x20a))/0x1+-parseInt(_0x344545(0x207))/0x2*(-parseInt(_0x344545(0x220))/0x3)+parseInt(_0x344545(0x1e7))/0x4+parseInt(_0x344545(0x218))/0x5+-parseInt(_0x344545(0x208))/0x6+-parseInt(_0x344545(0x20b))/0x7+parseInt(_0x344545(0x219))/0x8*(parseInt(_0x344545(0x1f0))/0x9);if(_0x88ece===_0x171aae)break;else _0x727bc6['push'](_0x727bc6['shift']());}catch(_0x58ac72){_0x727bc6['push'](_0x727bc6['shift']());}}}(_0x515d,0x7ebbd));import{createWebgpuCoordinateShaderSource}from'../../shared/coordinate-shader/webgpu';function _0x35c2(_0x21bfdf,_0x3eedcb){const _0x515dd0=_0x515d();return _0x35c2=function(_0x35c233,_0x5c7e52){_0x35c233=_0x35c233-0x1e1;let _0x1584b5=_0x515dd0[_0x35c233];return _0x1584b5;},_0x35c2(_0x21bfdf,_0x3eedcb);}function _0x515d(){const _0x3ba804=['height','store','fragmentMain','replace','createTexture','36560jHiBQR','stencil8','setBindGroup','maskPipeline','maskTexture','RENDER_ATTACHMENT','setPipeline','createStencilPipeline','byteLength','63yARtos','createView','load','stencil','setStencilReference','createVertexBuffer','updateMesh','encodeMask','vertexCount','createMaskPipeline','createParamsBindGroup','clear','triangle-list','vertices','float32x2','setVertexBuffer','createBindGroup','stencilTexture','auto','end','createStencilAttachment','width','device','4UKKQbe','2992620BjxssM','TEXTURE_BINDING','244596LQBZhv','7157388rkGDGB','writeBuffer','mask','beginRenderPass','createVertexSource','createBuffer','destroy','createShaderModule','maskBindGroup','stencilBindGroup','getBindGroupLayout','drawDirect','encodeStencil','1043170zooaKi','1282808YxzCWk','crs','paramsBuffer','resize','stencilPipeline','COPY_DST','createRenderPipeline','683292zqLylx','vertexBuffer','queue','always','createVertexLayout','r8unorm','draw'];_0x515d=function(){return _0x3ba804;};return _0x515d();}import{createWebgpuVisualizationParamsShaderSource}from'../../shared/visualization/shader/webgpu';import _0xe5a666 from'./shader/coverageFragment.wgsl?raw';import _0x117c0b from'./shader/coverageVertex.wgsl?raw';export class WebgpuCoverageResources{[_0x53aff6(0x206)];[_0x53aff6(0x21a)];[_0x53aff6(0x21b)];['vertexBuffer']=null;[_0x53aff6(0x1f8)]=0x0;[_0x53aff6(0x201)]=null;[_0x53aff6(0x1eb)]=null;[_0x53aff6(0x21d)];[_0x53aff6(0x1ea)];[_0x53aff6(0x214)];[_0x53aff6(0x213)];[_0x53aff6(0x205)]=0x0;[_0x53aff6(0x1e2)]=0x0;constructor(_0x269e3e,_0x284e25,_0x21393a){const _0x23045f=_0x53aff6;this[_0x23045f(0x206)]=_0x269e3e,this[_0x23045f(0x21a)]=_0x284e25,this[_0x23045f(0x21b)]=_0x21393a,this[_0x23045f(0x21d)]=this['createStencilPipeline'](),this['maskPipeline']=this[_0x23045f(0x1f9)](),this[_0x23045f(0x214)]=this['createParamsBindGroup'](this[_0x23045f(0x21d)]),this[_0x23045f(0x213)]=this[_0x23045f(0x1fa)](this[_0x23045f(0x1ea)]);}get['maskView'](){return this['maskTexture']?.['createView']()??null;}[_0x53aff6(0x1f6)](_0x19f81){const _0x29cfc8=_0x53aff6,_0x59bb5e=_0x19f81&&_0x19f81[_0x29cfc8(0x1fd)]['length']>0x0?this[_0x29cfc8(0x1f5)](_0x19f81[_0x29cfc8(0x1fd)]):null,_0x280c10=this[_0x29cfc8(0x221)];this[_0x29cfc8(0x221)]=_0x59bb5e,this['vertexCount']=_0x19f81?.[_0x29cfc8(0x1f8)]??0x0,_0x280c10?.[_0x29cfc8(0x211)]();}[_0x53aff6(0x21c)](_0x5e8ef2,_0x2e2c6c){const _0x3ed5e8=_0x53aff6;if(this[_0x3ed5e8(0x205)]===_0x5e8ef2&&this[_0x3ed5e8(0x1e2)]===_0x2e2c6c)return;this[_0x3ed5e8(0x201)]?.[_0x3ed5e8(0x211)](),this[_0x3ed5e8(0x1eb)]?.[_0x3ed5e8(0x211)](),this[_0x3ed5e8(0x205)]=_0x5e8ef2,this[_0x3ed5e8(0x1e2)]=_0x2e2c6c,this[_0x3ed5e8(0x201)]=this['device'][_0x3ed5e8(0x1e6)]({'size':[_0x5e8ef2,_0x2e2c6c],'format':'stencil8','usage':GPUTextureUsage[_0x3ed5e8(0x1ec)]}),this[_0x3ed5e8(0x1eb)]=this[_0x3ed5e8(0x206)]['createTexture']({'size':[_0x5e8ef2,_0x2e2c6c],'format':_0x3ed5e8(0x225),'usage':GPUTextureUsage[_0x3ed5e8(0x1ec)]|GPUTextureUsage[_0x3ed5e8(0x209)]});}['encode'](_0xf96f4f,_0x3f2f74){const _0x145d2a=_0x53aff6;if(!this['vertexBuffer']||this['vertexCount']===0x0)return;if(_0x3f2f74===_0x145d2a(0x1f3))this[_0x145d2a(0x217)](_0xf96f4f);if(_0x3f2f74===_0x145d2a(0x20d))this['encodeMask'](_0xf96f4f);}[_0x53aff6(0x204)](){const _0x17082f=_0x53aff6;if(!this[_0x17082f(0x201)])return undefined;return{'view':this['stencilTexture'][_0x17082f(0x1f1)](),'stencilLoadOp':_0x17082f(0x1f2),'stencilStoreOp':_0x17082f(0x1e3)};}[_0x53aff6(0x216)](_0x26fcfc){const _0x1e3ca5=_0x53aff6;if(!this[_0x1e3ca5(0x221)]||this[_0x1e3ca5(0x1f8)]===0x0)return![];return _0x26fcfc[_0x1e3ca5(0x1ff)](0x0,this[_0x1e3ca5(0x221)]),_0x26fcfc[_0x1e3ca5(0x1e1)](this[_0x1e3ca5(0x1f8)]),!![];}['destroy'](){const _0xb32a2a=_0x53aff6;this[_0xb32a2a(0x221)]?.['destroy'](),this[_0xb32a2a(0x201)]?.[_0xb32a2a(0x211)](),this[_0xb32a2a(0x1eb)]?.[_0xb32a2a(0x211)](),this[_0xb32a2a(0x221)]=null,this[_0xb32a2a(0x201)]=null,this[_0xb32a2a(0x1eb)]=null;}[_0x53aff6(0x1ee)](){const _0x3dcd69=_0x53aff6,_0xea6264=this[_0x3dcd69(0x206)]['createShaderModule']({'code':this['createVertexSource']()});return this[_0x3dcd69(0x206)][_0x3dcd69(0x21f)]({'layout':_0x3dcd69(0x202),'vertex':{'module':_0xea6264,'entryPoint':'vertexMain','buffers':[this['createVertexLayout']()]},'primitive':{'topology':_0x3dcd69(0x1fc)},'depthStencil':{'format':_0x3dcd69(0x1e8),'stencilFront':{'compare':_0x3dcd69(0x223),'passOp':_0x3dcd69(0x1e5)},'stencilBack':{'compare':_0x3dcd69(0x223),'passOp':_0x3dcd69(0x1e5)},'stencilWriteMask':0xff}});}[_0x53aff6(0x1f9)](){const _0x1bde79=_0x53aff6,_0x56f28e=this[_0x1bde79(0x206)][_0x1bde79(0x212)]({'code':this[_0x1bde79(0x20f)]()}),_0x52f382=this[_0x1bde79(0x206)][_0x1bde79(0x212)]({'code':_0xe5a666});return this['device'][_0x1bde79(0x21f)]({'layout':'auto','vertex':{'module':_0x56f28e,'entryPoint':'vertexMain','buffers':[this[_0x1bde79(0x224)]()]},'fragment':{'module':_0x52f382,'entryPoint':_0x1bde79(0x1e4),'targets':[{'format':'r8unorm'}]},'primitive':{'topology':_0x1bde79(0x1fc)}});}[_0x53aff6(0x20f)](){const _0x10a64f=_0x53aff6;return createWebgpuCoordinateShaderSource(createWebgpuVisualizationParamsShaderSource(_0x117c0b),this[_0x10a64f(0x21a)]);}[_0x53aff6(0x224)](){const _0xe2bbb7=_0x53aff6;return{'arrayStride':0x8,'attributes':[{'shaderLocation':0x0,'offset':0x0,'format':_0xe2bbb7(0x1fe)}]};}['createParamsBindGroup'](_0x343be6){const _0x55f233=_0x53aff6;return this[_0x55f233(0x206)][_0x55f233(0x200)]({'layout':_0x343be6[_0x55f233(0x215)](0x0),'entries':[{'binding':0x0,'resource':{'buffer':this['paramsBuffer']}}]});}[_0x53aff6(0x1f5)](_0xce6129){const _0xdc6e34=_0x53aff6,_0x44651a=this[_0xdc6e34(0x206)][_0xdc6e34(0x210)]({'size':_0xce6129[_0xdc6e34(0x1ef)],'usage':GPUBufferUsage['VERTEX']|GPUBufferUsage[_0xdc6e34(0x21e)]});return this[_0xdc6e34(0x206)][_0xdc6e34(0x222)][_0xdc6e34(0x20c)](_0x44651a,0x0,_0xce6129),_0x44651a;}[_0x53aff6(0x217)](_0x4f82fd){const _0x3abd39=_0x53aff6;if(!this['stencilTexture']||!this[_0x3abd39(0x221)])return;const _0x5e905e=_0x4f82fd[_0x3abd39(0x20e)]({'colorAttachments':[],'depthStencilAttachment':{'view':this['stencilTexture'][_0x3abd39(0x1f1)](),'stencilClearValue':0x0,'stencilLoadOp':'clear','stencilStoreOp':_0x3abd39(0x1e3)}});_0x5e905e['setPipeline'](this['stencilPipeline']),_0x5e905e[_0x3abd39(0x1e9)](0x0,this[_0x3abd39(0x214)]),_0x5e905e[_0x3abd39(0x1f4)](0x1),_0x5e905e['setVertexBuffer'](0x0,this['vertexBuffer']),_0x5e905e['draw'](this[_0x3abd39(0x1f8)]),_0x5e905e[_0x3abd39(0x203)]();}[_0x53aff6(0x1f7)](_0x3e4c25){const _0x258d82=_0x53aff6;if(!this[_0x258d82(0x1eb)]||!this[_0x258d82(0x221)])return;const _0x541bf2=_0x3e4c25[_0x258d82(0x20e)]({'colorAttachments':[{'view':this[_0x258d82(0x1eb)][_0x258d82(0x1f1)](),'clearValue':{'r':0x0,'g':0x0,'b':0x0,'a':0x0},'loadOp':_0x258d82(0x1fb),'storeOp':_0x258d82(0x1e3)}]});_0x541bf2[_0x258d82(0x1ed)](this[_0x258d82(0x1ea)]),_0x541bf2[_0x258d82(0x1e9)](0x0,this[_0x258d82(0x213)]),_0x541bf2[_0x258d82(0x1ff)](0x0,this[_0x258d82(0x221)]),_0x541bf2[_0x258d82(0x1e1)](this[_0x258d82(0x1f8)]),_0x541bf2[_0x258d82(0x203)]();}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x121aec,_0x5eb242){const _0x1d8573=_0x3dd8,_0x370b7b=_0x121aec();while(!![]){try{const _0x3885bf=parseInt(_0x1d8573(0x139))/0x1*(-parseInt(_0x1d8573(0x136))/0x2)+parseInt(_0x1d8573(0x131))/0x3+-parseInt(_0x1d8573(0x133))/0x4+-parseInt(_0x1d8573(0x12e))/0x5+-parseInt(_0x1d8573(0x137))/0x6*(parseInt(_0x1d8573(0x135))/0x7)+parseInt(_0x1d8573(0x132))/0x8*(-parseInt(_0x1d8573(0x134))/0x9)+parseInt(_0x1d8573(0x138))/0xa;if(_0x3885bf===_0x5eb242)break;else _0x370b7b['push'](_0x370b7b['shift']());}catch(_0xe14210){_0x370b7b['push'](_0x370b7b['shift']());}}}(_0x44c6,0xa97de));function _0x3dd8(_0x14c893,_0xa91016){const _0x44c6a3=_0x44c6();return _0x3dd8=function(_0x3dd887,_0x41a0bd){_0x3dd887=_0x3dd887-0x12d;let _0x1c1964=_0x44c6a3[_0x3dd887];return _0x1c1964;},_0x3dd8(_0x14c893,_0xa91016);}function _0x44c6(){const _0x27f2e9=['sqrt','abs','1566636YeKgQy','3599080DUGleJ','2239440pRZyBr','9LmKdQT','6340495OQOKcG','1831196jKyzCK','6wCZFCw','32489000mFYbfc','1opEZxS','cos','sin','1228730lhWmze'];_0x44c6=function(){return _0x27f2e9;};return _0x44c6();}const PI=Math['PI'],AXIS=0x615305,OFFSET=0.006693421622965943,isOutsideChina=(_0x5d3cab,_0x2c486b)=>{return _0x5d3cab<72.004||_0x5d3cab>137.8347||_0x2c486b<0.8293||_0x2c486b>55.8271;},transformLat=(_0x361add,_0x26a255)=>{const _0x43a8bf=_0x3dd8;let _0x5f18b9=-0x64+0x2*_0x361add+0x3*_0x26a255+0.2*_0x26a255*_0x26a255+0.1*_0x361add*_0x26a255+0.2*Math['sqrt'](Math[_0x43a8bf(0x130)](_0x361add));return _0x5f18b9+=(0x14*Math['sin'](0x6*_0x361add*PI)+0x14*Math['sin'](0x2*_0x361add*PI))*0x2/0x3,_0x5f18b9+=(0x14*Math[_0x43a8bf(0x12d)](_0x26a255*PI)+0x28*Math[_0x43a8bf(0x12d)](_0x26a255/0x3*PI))*0x2/0x3,_0x5f18b9+=(0xa0*Math[_0x43a8bf(0x12d)](_0x26a255/0xc*PI)+0x140*Math[_0x43a8bf(0x12d)](_0x26a255*PI/0x1e))*0x2/0x3,_0x5f18b9;},transformLng=(_0x1e8dde,_0x3870d1)=>{const _0x20c37f=_0x3dd8;let _0x554bbb=0x12c+_0x1e8dde+0x2*_0x3870d1+0.1*_0x1e8dde*_0x1e8dde+0.1*_0x1e8dde*_0x3870d1+0.1*Math[_0x20c37f(0x12f)](Math['abs'](_0x1e8dde));return _0x554bbb+=(0x14*Math['sin'](0x6*_0x1e8dde*PI)+0x14*Math[_0x20c37f(0x12d)](0x2*_0x1e8dde*PI))*0x2/0x3,_0x554bbb+=(0x14*Math[_0x20c37f(0x12d)](_0x1e8dde*PI)+0x28*Math[_0x20c37f(0x12d)](_0x1e8dde/0x3*PI))*0x2/0x3,_0x554bbb+=(0x96*Math[_0x20c37f(0x12d)](_0x1e8dde/0xc*PI)+0x12c*Math[_0x20c37f(0x12d)](_0x1e8dde/0x1e*PI))*0x2/0x3,_0x554bbb;};export const wgs84ToGcj02=(_0x5136b6,_0x385663)=>{const _0x2c19b4=_0x3dd8;if(isOutsideChina(_0x5136b6,_0x385663))return[_0x5136b6,_0x385663];let _0x21ddbc=transformLat(_0x5136b6-0x69,_0x385663-0x23),_0x29e3b3=transformLng(_0x5136b6-0x69,_0x385663-0x23);const _0x3be647=_0x385663/0xb4*PI;let _0x28526b=Math[_0x2c19b4(0x12d)](_0x3be647);_0x28526b=0x1-OFFSET*_0x28526b*_0x28526b;const _0x3a3eed=Math[_0x2c19b4(0x12f)](_0x28526b);return _0x21ddbc=_0x21ddbc*0xb4/(AXIS*(0x1-OFFSET)/(_0x28526b*_0x3a3eed)*PI),_0x29e3b3=_0x29e3b3*0xb4/(AXIS/_0x3a3eed*Math[_0x2c19b4(0x13a)](_0x3be647)*PI),[_0x5136b6+_0x29e3b3,_0x385663+_0x21ddbc];};
|