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 @@
|
|
|
1
|
+
const _0x1d30f8=_0x4af7;(function(_0x5e4795,_0x59fc29){const _0x624b32=_0x4af7,_0x3f137a=_0x5e4795();while(!![]){try{const _0x5091c7=-parseInt(_0x624b32(0x39d))/0x1*(-parseInt(_0x624b32(0x184))/0x2)+parseInt(_0x624b32(0x140))/0x3*(-parseInt(_0x624b32(0x365))/0x4)+parseInt(_0x624b32(0x2ee))/0x5*(parseInt(_0x624b32(0x273))/0x6)+parseInt(_0x624b32(0x230))/0x7+parseInt(_0x624b32(0x2be))/0x8*(parseInt(_0x624b32(0x23c))/0x9)+-parseInt(_0x624b32(0x3b5))/0xa*(-parseInt(_0x624b32(0x1c1))/0xb)+-parseInt(_0x624b32(0x277))/0xc;if(_0x5091c7===_0x59fc29)break;else _0x3f137a['push'](_0x3f137a['shift']());}catch(_0x373b9c){_0x3f137a['push'](_0x3f137a['shift']());}}}(_0x19e9,0x5e24e));const WGS84_SEMI_MAJOR_AXIS_METERS=0x615299,WGS84_SEMI_MINOR_AXIS_METERS=WGS84_SEMI_MAJOR_AXIS_METERS*(0x1-0x1/298.257223563),WGS84_FIRST_ECCENTRICITY_SQUARED=0x1-WGS84_SEMI_MINOR_AXIS_METERS**0x2/WGS84_SEMI_MAJOR_AXIS_METERS**0x2,degreesToRadians=_0x38e5d4=>_0x38e5d4*Math['PI']/0xb4,geodeticToEcef=(_0x2093d9,_0x56029d,_0x32e506)=>{const _0x41080b=_0x4af7;let _0x375d92=Math[_0x41080b(0x139)](_0x56029d),_0x27a3ba=Math[_0x41080b(0x16c)](_0x56029d),_0x20403b=Math[_0x41080b(0x139)](_0x2093d9),_0x2f3171=Math[_0x41080b(0x16c)](_0x2093d9),_0x5b60dd=WGS84_SEMI_MAJOR_AXIS_METERS/Math[_0x41080b(0x382)](0x1-WGS84_FIRST_ECCENTRICITY_SQUARED*_0x375d92*_0x375d92);return[(_0x5b60dd+_0x32e506)*_0x27a3ba*_0x2f3171,(_0x5b60dd+_0x32e506)*_0x27a3ba*_0x20403b,(_0x5b60dd*(0x1-WGS84_FIRST_ECCENTRICITY_SQUARED)+_0x32e506)*_0x375d92];},validateAxisSpan=(_0x5a7abb,_0xc0ae06,_0xec690c)=>{const _0x48cc2a=_0x4af7;if(!Number['isFinite'](_0x5a7abb)||!Number[_0x48cc2a(0x193)](_0xc0ae06)||_0x5a7abb===_0xc0ae06)throw Error(_0xec690c+_0x48cc2a(0x141)+_0xec690c+'\x20轴必须包含两个不同的有限端点。');},createGeographicVolumeLayout=(_0x30517d,_0xd3ef88=0x1)=>{const _0x2607bf=_0x4af7;let _0x1ad434=degreesToRadians(_0x30517d['xAxis'][_0x2607bf(0x218)]),_0x593bd9=degreesToRadians(_0x30517d[_0x2607bf(0xf3)]['end']),_0x556f7a=degreesToRadians(_0x30517d[_0x2607bf(0x1d9)][_0x2607bf(0x218)]),_0x42043c=degreesToRadians(_0x30517d[_0x2607bf(0x1d9)]['end']);validateAxisSpan(_0x1ad434,_0x593bd9,'Longitude\x20/\x20经度'),validateAxisSpan(_0x556f7a,_0x42043c,_0x2607bf(0x183));let _0x5b0729=_0x30517d['yAxis'][_0x2607bf(0x218)],_0x4b0f6b=_0x30517d[_0x2607bf(0x2b7)][_0x2607bf(0x144)];if(validateAxisSpan(_0x5b0729,_0x4b0f6b,_0x2607bf(0x295)),!(_0xd3ef88>0x0)||!Number[_0x2607bf(0x193)](_0xd3ef88))throw Error(_0x2607bf(0x117));let _0x7957c5=_0x5b0729+(_0x4b0f6b-_0x5b0729)*_0xd3ef88,_0x368911=(_0x1ad434+_0x593bd9)/0x2,_0x12d202=(_0x556f7a+_0x42043c)/0x2,_0x2cdf3b=geodeticToEcef(_0x368911,_0x12d202,0x0),_0x401b8e=Math[_0x2607bf(0x356)](_0x593bd9-_0x1ad434)*WGS84_SEMI_MAJOR_AXIS_METERS*Math['max'](0.01,Math[_0x2607bf(0x16c)](_0x12d202)),_0x297232=Math['abs'](_0x42043c-_0x556f7a)*WGS84_SEMI_MAJOR_AXIS_METERS,_0x23531a=Math[_0x2607bf(0x334)](_0x401b8e,_0x297232);if(!(_0x23531a>0x0)||!Number[_0x2607bf(0x193)](_0x23531a))throw Error(_0x2607bf(0x2aa));let _0x42c1c8=[0x1/0x0,0x1/0x0,0x1/0x0],_0x3ae785=[-0x1/0x0,-0x1/0x0,-0x1/0x0];for(let _0x277fb5=0x0;_0x277fb5<=0x8;_0x277fb5+=0x1){let _0x3dfe5b=_0x556f7a+(_0x42043c-_0x556f7a)*_0x277fb5/0x8;for(let _0x300094=0x0;_0x300094<=0x8;_0x300094+=0x1){let _0x2e2e93=_0x1ad434+(_0x593bd9-_0x1ad434)*_0x300094/0x8;for(let _0x356ac0 of[_0x5b0729,_0x7957c5]){let _0x111f88=geodeticToEcef(_0x2e2e93,_0x3dfe5b,_0x356ac0);for(let _0x19111b=0x0;_0x19111b<0x3;_0x19111b+=0x1){let _0x220896=(_0x111f88[_0x19111b]-_0x2cdf3b[_0x19111b])/_0x23531a;_0x42c1c8[_0x19111b]=Math[_0x2607bf(0xcc)](_0x42c1c8[_0x19111b],_0x220896),_0x3ae785[_0x19111b]=Math[_0x2607bf(0x334)](_0x3ae785[_0x19111b],_0x220896);}}}}let _0x1cb651=_0x3ae785[_0x2607bf(0x2f9)]((_0x21389b,_0x10ab00)=>_0x21389b-_0x42c1c8[_0x10ab00]);if(_0x1cb651[_0x2607bf(0x350)](_0x58481b=>!(_0x58481b>0x0)||!Number[_0x2607bf(0x193)](_0x58481b)))throw Error(_0x2607bf(0x182));return{'centerEcef':_0x2cdf3b,'normalizationMeters':_0x23531a,'proxyModelMatrix':[_0x1cb651[0x0],0x0,0x0,0x0,0x0,_0x1cb651[0x1],0x0,0x0,0x0,0x0,_0x1cb651[0x2],0x0,_0x42c1c8[0x0],_0x42c1c8[0x1],_0x42c1c8[0x2],0x1],'transform':{'mode':_0x2607bf(0x3c5),'centerEcefScaled':[_0x2cdf3b[0x0]/_0x23531a,_0x2cdf3b[0x1]/_0x23531a,_0x2cdf3b[0x2]/_0x23531a],'semiMajorAxisScaled':WGS84_SEMI_MAJOR_AXIS_METERS/_0x23531a,'semiMinorAxisScaled':WGS84_SEMI_MINOR_AXIS_METERS/_0x23531a,'longitudeRadians':[_0x1ad434,_0x593bd9],'latitudeRadians':[_0x556f7a,_0x42043c],'heightScaled':[_0x5b0729/_0x23531a,_0x7957c5/_0x23531a]}};},ecefToGeographicVolumeLocal=(_0x2fb436,_0x176914)=>[(_0x2fb436[0x0]-_0x176914[_0x1d30f8(0x2ab)][0x0])/_0x176914['normalizationMeters'],(_0x2fb436[0x1]-_0x176914[_0x1d30f8(0x2ab)][0x1])/_0x176914[_0x1d30f8(0x403)],(_0x2fb436[0x2]-_0x176914['centerEcef'][0x2])/_0x176914[_0x1d30f8(0x403)]],validatePositiveInteger=(_0x164746,_0x3766f3)=>{const _0x4a1b24=_0x1d30f8;if(!Number[_0x4a1b24(0x3b4)](_0x164746)||_0x164746<=0x0)throw Error(_0x3766f3+_0x4a1b24(0x21e)+_0x3766f3+_0x4a1b24(0x2d1));},validateAxis=(_0xce346,_0x244835)=>{const _0x4ea9e6=_0x1d30f8;if(validatePositiveInteger(_0xce346['count'],_0x244835+_0x4ea9e6(0x289)),!Number[_0x4ea9e6(0x193)](_0xce346[_0x4ea9e6(0x218)])||!Number[_0x4ea9e6(0x193)](_0xce346[_0x4ea9e6(0x144)]))throw Error(_0x244835+_0x4ea9e6(0x1c2)+_0x244835+_0x4ea9e6(0x2ec));if(_0xce346['count']===0x1&&_0xce346[_0x4ea9e6(0x218)]!==_0xce346[_0x4ea9e6(0x144)])throw Error(_0x244835+_0x4ea9e6(0x29a)+_0x244835+'\x20只有一个采样点时端点必须相等。');if(_0xce346['count']>0x1&&_0xce346[_0x4ea9e6(0x218)]===_0xce346[_0x4ea9e6(0x144)])throw Error(_0x244835+_0x4ea9e6(0x2e4)+_0x244835+_0x4ea9e6(0x3f6));},validateNoData=(_0x494fa8,_0x1baf39)=>{const _0x5356fd=_0x1d30f8;if(_0x494fa8!==void 0x0&&!Number[_0x5356fd(0x193)](_0x494fa8)&&!Number[_0x5356fd(0x3d4)](_0x494fa8))throw Error(_0x1baf39+_0x5356fd(0x2da)+_0x1baf39+_0x5356fd(0x1bd));},rangesEqual=(_0x55fde5,_0x20f816)=>_0x55fde5[_0x1d30f8(0x405)]===_0x20f816[_0x1d30f8(0x405)]&&_0x55fde5[_0x1d30f8(0x298)]===_0x20f816['xCount']&&_0x55fde5[_0x1d30f8(0x418)]===_0x20f816[_0x1d30f8(0x418)]&&_0x55fde5['levelCount']===_0x20f816['levelCount']&&_0x55fde5[_0x1d30f8(0x3c8)]===_0x20f816[_0x1d30f8(0x3c8)]&&_0x55fde5[_0x1d30f8(0x26c)]===_0x20f816['sourceYCount'],validateVolumeMetadata=_0x332b0c=>{const _0x286002=_0x1d30f8;if(validateAxis(_0x332b0c['xAxis'],_0x286002(0x17b)),validateAxis(_0x332b0c[_0x286002(0x2b7)],_0x286002(0x225)),validateAxis(_0x332b0c[_0x286002(0x1d9)],_0x286002(0x2ff)),validatePositiveInteger(_0x332b0c[_0x286002(0x26b)],_0x286002(0x397)),validateNoData(_0x332b0c[_0x286002(0x32e)],_0x286002(0xd8)),_0x332b0c[_0x286002(0x188)]!==void 0x0&&!Number[_0x286002(0x193)](_0x332b0c[_0x286002(0x188)]))throw Error(_0x286002(0x122));if(_0x332b0c['revision']!==void 0x0&&(!Number['isInteger'](_0x332b0c[_0x286002(0x130)])||_0x332b0c[_0x286002(0x130)]<0x0))throw Error(_0x286002(0x3b8));},validateVolumeTimeIndex=(_0x2feed3,_0x334a4e)=>{const _0x41a9d5=_0x1d30f8;if(!Number[_0x41a9d5(0x3b4)](_0x334a4e)||_0x334a4e<0x0||_0x334a4e>=_0x2feed3[_0x41a9d5(0x26b)])throw Error(_0x41a9d5(0x28e)+_0x334a4e+_0x41a9d5(0xd6));},validateVolumeChunkRange=(_0x10255e,_0x18b69c)=>{const _0x4ddc56=_0x1d30f8;let _0x31fef2=[[_0x18b69c[_0x4ddc56(0x405)],_0x4ddc56(0x405)],[_0x18b69c[_0x4ddc56(0x298)],'xCount'],[_0x18b69c[_0x4ddc56(0x418)],'levelStart'],[_0x18b69c[_0x4ddc56(0x3ce)],'levelCount'],[_0x18b69c['sourceYStart'],'sourceYStart'],[_0x18b69c[_0x4ddc56(0x26c)],'sourceYCount']];for(let [_0x142c0a,_0x30df2a]of _0x31fef2)if(!Number[_0x4ddc56(0x3b4)](_0x142c0a)||_0x142c0a<0x0||_0x30df2a[_0x4ddc56(0x1e8)](_0x4ddc56(0x3f0))&&_0x142c0a===0x0)throw Error(_0x4ddc56(0x227)+_0x30df2a+_0x4ddc56(0x390)+_0x142c0a+_0x4ddc56(0x148)+_0x30df2a+_0x4ddc56(0x36f));if(_0x18b69c[_0x4ddc56(0x405)]+_0x18b69c[_0x4ddc56(0x298)]>_0x10255e[_0x4ddc56(0xf3)]['count']||_0x18b69c[_0x4ddc56(0x418)]+_0x18b69c[_0x4ddc56(0x3ce)]>_0x10255e[_0x4ddc56(0x2b7)]['count']||_0x18b69c['sourceYStart']+_0x18b69c[_0x4ddc56(0x26c)]>_0x10255e['zAxis'][_0x4ddc56(0xdb)])throw Error(_0x4ddc56(0x201));},validateVolumeChunk=(_0x1542c2,_0x3a96b1,_0x303585,_0x3e529e)=>{const _0xcfed02=_0x1d30f8;if(validateVolumeTimeIndex(_0x1542c2,_0x3a96b1[_0xcfed02(0x394)]),validateVolumeChunkRange(_0x1542c2,_0x3a96b1['range']),_0x3e529e!==void 0x0&&_0x3a96b1[_0xcfed02(0x394)]!==_0x3e529e)throw Error(_0xcfed02(0x2b3));if(_0x303585&&!rangesEqual(_0x3a96b1[_0xcfed02(0x241)],_0x303585))throw Error('Returned\x20volume\x20chunk\x20range\x20does\x20not\x20match\x20the\x20request.\x20返回体积分块范围与请求不一致。');if(_0x3a96b1[_0xcfed02(0x238)]!==_0x3a96b1[_0xcfed02(0x241)][_0xcfed02(0x298)]||_0x3a96b1[_0xcfed02(0x26d)]!==_0x3a96b1[_0xcfed02(0x241)]['levelCount']||_0x3a96b1[_0xcfed02(0x3c4)]!==_0x3a96b1[_0xcfed02(0x241)][_0xcfed02(0x26c)])throw Error(_0xcfed02(0x3bc));let _0x148dca=_0x3a96b1['width']*_0x3a96b1[_0xcfed02(0x26d)]*_0x3a96b1[_0xcfed02(0x3c4)];if(!Number['isSafeInteger'](_0x148dca)||_0x3a96b1[_0xcfed02(0x270)][_0xcfed02(0x29b)]!==_0x148dca)throw Error(_0xcfed02(0x399)+_0x148dca+_0xcfed02(0x34e)+_0x3a96b1['values'][_0xcfed02(0x29b)]+_0xcfed02(0x24d));},validateVolumeSource=_0x327eab=>{const _0x131835=_0x1d30f8;if(!_0x327eab||typeof _0x327eab[_0x131835(0x14d)]!=_0x131835(0x3b1))throw Error('Volume\x20source\x20must\x20provide\x20readChunk().\x20体积数据源必须提供\x20readChunk()。');validateVolumeMetadata(_0x327eab[_0x131835(0x1f0)]);},validateBrickShape=_0x7169a8=>{const _0x4b3712=_0x1d30f8;for(let [_0x3ce134,_0x4eb084]of[[_0x7169a8[_0x4b3712(0x238)],_0x4b3712(0x238)],[_0x7169a8[_0x4b3712(0x26d)],'height'],[_0x7169a8[_0x4b3712(0x3c4)],_0x4b3712(0x3c4)]])if(!Number[_0x4b3712(0x3b4)](_0x3ce134)||_0x3ce134<=0x0)throw Error(_0x4b3712(0x177)+_0x4eb084+_0x4b3712(0x308)+_0x4eb084+_0x4b3712(0x2d1));if(!Number[_0x4b3712(0x3b4)](_0x7169a8[_0x4b3712(0x15b)])||_0x7169a8[_0x4b3712(0x15b)]<0x1)throw Error(_0x4b3712(0x353));},resolveVolumeBrickShape=(_0x262025={})=>{const _0x5aac30=_0x1d30f8;let _0x2e818a={'width':_0x262025[_0x5aac30(0x238)]??0x100,'height':_0x262025[_0x5aac30(0x26d)]??0x8,'depth':_0x262025[_0x5aac30(0x3c4)]??0x100,'halo':_0x262025[_0x5aac30(0x15b)]??0x1};return validateBrickShape(_0x2e818a),_0x2e818a;},createVolumeBrickLayout=(_0x1e3007,_0x23e7c7={})=>{const _0x33c586=_0x1d30f8;validateVolumeMetadata(_0x1e3007);let _0x34e3a7=resolveVolumeBrickShape(_0x23e7c7),_0x50d108=Math[_0x33c586(0x332)](_0x1e3007[_0x33c586(0xf3)][_0x33c586(0xdb)]/_0x34e3a7[_0x33c586(0x238)]),_0x172daf=Math['ceil'](_0x1e3007[_0x33c586(0x2b7)]['count']/_0x34e3a7[_0x33c586(0x26d)]),_0x4e8c03=Math[_0x33c586(0x332)](_0x1e3007[_0x33c586(0x1d9)]['count']/_0x34e3a7[_0x33c586(0x3c4)]);return{'shape':_0x34e3a7,'countX':_0x50d108,'countY':_0x172daf,'countZ':_0x4e8c03,'brickCount':_0x50d108*_0x172daf*_0x4e8c03};},createVolumeBrickKey=_0x49fafe=>_0x49fafe['x']+':'+_0x49fafe['y']+':'+_0x49fafe['z'],createVolumeBrickDescriptor=(_0xcbc52a,_0x2a7b22,_0x3ccef3)=>{const _0x2152c0=_0x1d30f8;if(!Number[_0x2152c0(0x3b4)](_0x3ccef3['x'])||!Number[_0x2152c0(0x3b4)](_0x3ccef3['y'])||!Number[_0x2152c0(0x3b4)](_0x3ccef3['z'])||_0x3ccef3['x']<0x0||_0x3ccef3['x']>=_0x2a7b22['countX']||_0x3ccef3['y']<0x0||_0x3ccef3['y']>=_0x2a7b22[_0x2152c0(0x26e)]||_0x3ccef3['z']<0x0||_0x3ccef3['z']>=_0x2a7b22[_0x2152c0(0x279)])throw Error(_0x2152c0(0x3ff));let _0x401da8=_0x3ccef3['x']*_0x2a7b22[_0x2152c0(0x39e)][_0x2152c0(0x238)],_0x1429bc=_0x3ccef3['y']*_0x2a7b22[_0x2152c0(0x39e)][_0x2152c0(0x26d)],_0x2cb827=_0x3ccef3['z']*_0x2a7b22[_0x2152c0(0x39e)][_0x2152c0(0x3c4)],_0x45d295=Math[_0x2152c0(0xcc)](_0x2a7b22[_0x2152c0(0x39e)][_0x2152c0(0x238)],_0xcbc52a[_0x2152c0(0xf3)][_0x2152c0(0xdb)]-_0x401da8),_0xeba4fb=Math[_0x2152c0(0xcc)](_0x2a7b22[_0x2152c0(0x39e)][_0x2152c0(0x26d)],_0xcbc52a[_0x2152c0(0x2b7)][_0x2152c0(0xdb)]-_0x1429bc),_0xd1efc1=Math[_0x2152c0(0xcc)](_0x2a7b22['shape'][_0x2152c0(0x3c4)],_0xcbc52a[_0x2152c0(0x1d9)][_0x2152c0(0xdb)]-_0x2cb827),_0x151c18=_0x2a7b22[_0x2152c0(0x39e)][_0x2152c0(0x15b)],_0x25d7a3=Math['max'](0x0,_0x401da8-_0x151c18),_0x304711=Math['max'](0x0,_0x1429bc-_0x151c18),_0x181e8f=Math['max'](0x0,_0x2cb827-_0x151c18),_0x4d910a=Math[_0x2152c0(0xcc)](_0xcbc52a[_0x2152c0(0xf3)]['count'],_0x401da8+_0x45d295+_0x151c18),_0x3f7751=Math['min'](_0xcbc52a[_0x2152c0(0x2b7)][_0x2152c0(0xdb)],_0x1429bc+_0xeba4fb+_0x151c18),_0x1730cb=Math[_0x2152c0(0xcc)](_0xcbc52a['zAxis'][_0x2152c0(0xdb)],_0x2cb827+_0xd1efc1+_0x151c18),_0x9f6ef6=_0x2a7b22[_0x2152c0(0x39e)][_0x2152c0(0x238)]+_0x151c18*0x2,_0x4fa2a8=_0x2a7b22[_0x2152c0(0x39e)][_0x2152c0(0x26d)]+_0x151c18*0x2,_0x2a43d7=_0x2a7b22[_0x2152c0(0x39e)]['depth']+_0x151c18*0x2;return{'key':createVolumeBrickKey(_0x3ccef3),'coordinate':_0x3ccef3,'coreRange':{'xStart':_0x401da8,'xCount':_0x45d295,'levelStart':_0x1429bc,'levelCount':_0xeba4fb,'sourceYStart':_0x2cb827,'sourceYCount':_0xd1efc1},'readRange':{'xStart':_0x25d7a3,'xCount':_0x4d910a-_0x25d7a3,'levelStart':_0x304711,'levelCount':_0x3f7751-_0x304711,'sourceYStart':_0x181e8f,'sourceYCount':_0x1730cb-_0x181e8f},'physicalWidth':_0x9f6ef6,'physicalHeight':_0x4fa2a8,'physicalDepth':_0x2a43d7,'byteLength':_0x9f6ef6*_0x4fa2a8*_0x2a43d7*Float32Array[_0x2152c0(0xe9)]};},createVolumeBrickDescriptors=(_0x2f845b,_0xec9a02)=>{const _0x498ace=_0x1d30f8;let _0x4da2d1=[];for(let _0x2e1eeb=0x0;_0x2e1eeb<_0xec9a02[_0x498ace(0x279)];_0x2e1eeb+=0x1)for(let _0x2e361c=0x0;_0x2e361c<_0xec9a02[_0x498ace(0x26e)];_0x2e361c+=0x1)for(let _0x5ef240=0x0;_0x5ef240<_0xec9a02[_0x498ace(0xf5)];_0x5ef240+=0x1)_0x4da2d1[_0x498ace(0x40e)](createVolumeBrickDescriptor(_0x2f845b,_0xec9a02,{'x':_0x5ef240,'y':_0x2e361c,'z':_0x2e1eeb}));return _0x4da2d1;},EPSILON=1e-8,createMatrix=()=>new Float32Array(0x10),dotVector3=(_0x16e24e,_0x1045c6)=>_0x16e24e[0x0]*_0x1045c6[0x0]+_0x16e24e[0x1]*_0x1045c6[0x1]+_0x16e24e[0x2]*_0x1045c6[0x2],subtractVector3=(_0x53194f,_0x3833c5)=>[_0x53194f[0x0]-_0x3833c5[0x0],_0x53194f[0x1]-_0x3833c5[0x1],_0x53194f[0x2]-_0x3833c5[0x2]],crossVector3=(_0x146681,_0x1381eb)=>[_0x146681[0x1]*_0x1381eb[0x2]-_0x146681[0x2]*_0x1381eb[0x1],_0x146681[0x2]*_0x1381eb[0x0]-_0x146681[0x0]*_0x1381eb[0x2],_0x146681[0x0]*_0x1381eb[0x1]-_0x146681[0x1]*_0x1381eb[0x0]],normalizeVector3=_0x700419=>{const _0x580685=_0x1d30f8;let _0x5116b9=Math[_0x580685(0x20b)](_0x700419[0x0],_0x700419[0x1],_0x700419[0x2]);if(_0x5116b9<=EPSILON)throw Error('无法归一化长度为零的三维向量。');return[_0x700419[0x0]/_0x5116b9,_0x700419[0x1]/_0x5116b9,_0x700419[0x2]/_0x5116b9];},createIdentityMatrix=()=>{let _0x1bd4bc=createMatrix();return _0x1bd4bc[0x0]=0x1,_0x1bd4bc[0x5]=0x1,_0x1bd4bc[0xa]=0x1,_0x1bd4bc[0xf]=0x1,_0x1bd4bc;},multiplyMatrices=(_0x163fa6,_0x3c311e)=>{let _0x2c964c=createMatrix();for(let _0x5260bd=0x0;_0x5260bd<0x4;_0x5260bd+=0x1)for(let _0x212f74=0x0;_0x212f74<0x4;_0x212f74+=0x1){let _0x4d73bd=0x0;for(let _0x382682=0x0;_0x382682<0x4;_0x382682+=0x1)_0x4d73bd+=_0x163fa6[_0x382682*0x4+_0x212f74]*_0x3c311e[_0x5260bd*0x4+_0x382682];_0x2c964c[_0x5260bd*0x4+_0x212f74]=_0x4d73bd;}return _0x2c964c;},invertMatrix=_0x13eb60=>{const _0x527323=_0x1d30f8;let _0x3e2869=Array['from']({'length':0x4},(_0x347fb5,_0x18c119)=>{let _0x14013d=new Float64Array(0x8);for(let _0x22a63b=0x0;_0x22a63b<0x4;_0x22a63b+=0x1)_0x14013d[_0x22a63b]=_0x13eb60[_0x22a63b*0x4+_0x18c119];return _0x14013d[_0x18c119+0x4]=0x1,_0x14013d;});for(let _0x184242=0x0;_0x184242<0x4;_0x184242+=0x1){let _0x541a51=_0x184242;for(let _0x345370=_0x184242+0x1;_0x345370<0x4;_0x345370+=0x1)Math[_0x527323(0x356)](_0x3e2869[_0x345370][_0x184242])>Math['abs'](_0x3e2869[_0x541a51][_0x184242])&&(_0x541a51=_0x345370);if(Math[_0x527323(0x356)](_0x3e2869[_0x541a51][_0x184242])<=EPSILON)throw Error(_0x527323(0x25d));_0x541a51!==_0x184242&&([_0x3e2869[_0x184242],_0x3e2869[_0x541a51]]=[_0x3e2869[_0x541a51],_0x3e2869[_0x184242]]);let _0x300127=_0x3e2869[_0x184242][_0x184242];for(let _0x2177ba=0x0;_0x2177ba<0x8;_0x2177ba+=0x1)_0x3e2869[_0x184242][_0x2177ba]/=_0x300127;for(let _0x22d907=0x0;_0x22d907<0x4;_0x22d907+=0x1){if(_0x22d907===_0x184242)continue;let _0x17aaa5=_0x3e2869[_0x22d907][_0x184242];for(let _0x2a22ec=0x0;_0x2a22ec<0x8;_0x2a22ec+=0x1)_0x3e2869[_0x22d907][_0x2a22ec]-=_0x17aaa5*_0x3e2869[_0x184242][_0x2a22ec];}}let _0x600252=createMatrix();for(let _0x176157=0x0;_0x176157<0x4;_0x176157+=0x1)for(let _0x384db=0x0;_0x384db<0x4;_0x384db+=0x1)_0x600252[_0x384db*0x4+_0x176157]=_0x3e2869[_0x176157][_0x384db+0x4];return _0x600252;},createLookAtMatrix=(_0x112107,_0x173bd8,_0x1bd727)=>{let _0x16d1e1=normalizeVector3(subtractVector3(_0x112107,_0x173bd8)),_0x20ab50=normalizeVector3(crossVector3(_0x1bd727,_0x16d1e1)),_0x7f8ada=crossVector3(_0x16d1e1,_0x20ab50),_0xfc3c47=createIdentityMatrix();return _0xfc3c47[0x0]=_0x20ab50[0x0],_0xfc3c47[0x1]=_0x7f8ada[0x0],_0xfc3c47[0x2]=_0x16d1e1[0x0],_0xfc3c47[0x4]=_0x20ab50[0x1],_0xfc3c47[0x5]=_0x7f8ada[0x1],_0xfc3c47[0x6]=_0x16d1e1[0x1],_0xfc3c47[0x8]=_0x20ab50[0x2],_0xfc3c47[0x9]=_0x7f8ada[0x2],_0xfc3c47[0xa]=_0x16d1e1[0x2],_0xfc3c47[0xc]=-dotVector3(_0x20ab50,_0x112107),_0xfc3c47[0xd]=-dotVector3(_0x7f8ada,_0x112107),_0xfc3c47[0xe]=-dotVector3(_0x16d1e1,_0x112107),_0xfc3c47;},createPerspectiveMatrix=(_0x3e9946,_0x3186bd,_0x4e49b5,_0x5cf94e)=>{const _0x4c63a3=_0x1d30f8;if(!(_0x3e9946>0x0&&_0x3e9946<Math['PI']))throw Error(_0x4c63a3(0x192));if(!(_0x3186bd>0x0))throw Error(_0x4c63a3(0x309));if(!(_0x4e49b5>0x0&&_0x5cf94e>_0x4e49b5))throw Error('相机裁剪距离必须满足\x200\x20<\x20near\x20<\x20far。');let _0x31d6ae=0x1/Math[_0x4c63a3(0x3ec)](_0x3e9946/0x2),_0x4400c9=createMatrix();return _0x4400c9[0x0]=_0x31d6ae/_0x3186bd,_0x4400c9[0x5]=_0x31d6ae,_0x4400c9[0xa]=_0x5cf94e/(_0x4e49b5-_0x5cf94e),_0x4400c9[0xb]=-0x1,_0x4400c9[0xe]=_0x4e49b5*_0x5cf94e/(_0x4e49b5-_0x5cf94e),_0x4400c9;},createOrthographicMatrix=(_0x3b2603,_0x15a5e0,_0x5369b8,_0x50a69f)=>{const _0x4ad44e=_0x1d30f8;if(!(_0x3b2603>0x0&&_0x15a5e0>0x0))throw Error(_0x4ad44e(0x1d7));if(!(_0x5369b8>=0x0&&_0x50a69f>_0x5369b8))throw Error(_0x4ad44e(0x1d1));let _0x2d511b=_0x3b2603*_0x15a5e0,_0x4b4b43=createIdentityMatrix();return _0x4b4b43[0x0]=0x2/_0x2d511b,_0x4b4b43[0x5]=0x2/_0x3b2603,_0x4b4b43[0xa]=0x1/(_0x5369b8-_0x50a69f),_0x4b4b43[0xe]=_0x5369b8/(_0x5369b8-_0x50a69f),_0x4b4b43;},createScaleMatrix=(_0xb2d2c7,_0x11ffa8,_0x12ba8c)=>{let _0x42144c=createIdentityMatrix();return _0x42144c[0x0]=_0xb2d2c7,_0x42144c[0x5]=_0x11ffa8,_0x42144c[0xa]=_0x12ba8c,_0x42144c;},composeVolumeModelMatrix=(_0x28081a,_0x3b50a0)=>{const _0x3ace6b=_0x1d30f8;if(!(_0x3b50a0>0x0)||!Number[_0x3ace6b(0x193)](_0x3b50a0))throw Error(_0x3ace6b(0x2a9));let _0x122b48=createScaleMatrix(0x1,_0x3b50a0,0x1);return _0x28081a?multiplyMatrices(_0x28081a,_0x122b48):_0x122b48;},transformPoint=(_0x33cccd,_0x1627a4,_0x5e3a67=0x1)=>[_0x33cccd[0x0]*_0x1627a4[0x0]+_0x33cccd[0x4]*_0x1627a4[0x1]+_0x33cccd[0x8]*_0x1627a4[0x2]+_0x33cccd[0xc]*_0x5e3a67,_0x33cccd[0x1]*_0x1627a4[0x0]+_0x33cccd[0x5]*_0x1627a4[0x1]+_0x33cccd[0x9]*_0x1627a4[0x2]+_0x33cccd[0xd]*_0x5e3a67,_0x33cccd[0x2]*_0x1627a4[0x0]+_0x33cccd[0x6]*_0x1627a4[0x1]+_0x33cccd[0xa]*_0x1627a4[0x2]+_0x33cccd[0xe]*_0x5e3a67,_0x33cccd[0x3]*_0x1627a4[0x0]+_0x33cccd[0x7]*_0x1627a4[0x1]+_0x33cccd[0xb]*_0x1627a4[0x2]+_0x33cccd[0xf]*_0x5e3a67],projectPointToViewport=(_0x9a7d3f,_0x250db9,_0x4df8ad,_0x446418)=>{let _0x27116e=transformPoint(_0x9a7d3f,_0x250db9);if(_0x27116e[0x3]<=EPSILON)return null;let _0x4b1e36=0x1/_0x27116e[0x3];return[(_0x27116e[0x0]*_0x4b1e36*0.5+0.5)*_0x4df8ad,(0.5-_0x27116e[0x1]*_0x4b1e36*0.5)*_0x446418,_0x27116e[0x2]*_0x4b1e36];},DEFAULT_POSITION=[0x0,0x1,0x2],DEFAULT_TARGET=[0x0,0x0,0x0],DEFAULT_UP=[0x0,0x1,0x0],DEFAULT_PROJECTION={'type':_0x1d30f8(0x189),'fovYDegrees':0x2d,'near':0.01,'far':0x2710},DEGREE_TO_RADIAN=Math['PI']/0xb4,cloneVector=_0x31d7ff=>[_0x31d7ff[0x0],_0x31d7ff[0x1],_0x31d7ff[0x2]],cloneProjection=_0x33eb76=>(_0x33eb76[_0x1d30f8(0x1a0)],{..._0x33eb76}),cloneState=_0x1a72d3=>({'position':cloneVector(_0x1a72d3[_0x1d30f8(0x209)]),'target':cloneVector(_0x1a72d3[_0x1d30f8(0x306)]),'up':cloneVector(_0x1a72d3['up']),'projection':cloneProjection(_0x1a72d3[_0x1d30f8(0x11a)])}),subtractVector=(_0x5384da,_0x33ff1b)=>[_0x5384da[0x0]-_0x33ff1b[0x0],_0x5384da[0x1]-_0x33ff1b[0x1],_0x5384da[0x2]-_0x33ff1b[0x2]],addVector=(_0x4304eb,_0xea8a91)=>[_0x4304eb[0x0]+_0xea8a91[0x0],_0x4304eb[0x1]+_0xea8a91[0x1],_0x4304eb[0x2]+_0xea8a91[0x2]],scaleVector=(_0x1d5945,_0x5d69be)=>[_0x1d5945[0x0]*_0x5d69be,_0x1d5945[0x1]*_0x5d69be,_0x1d5945[0x2]*_0x5d69be],crossVector$1=(_0x49f0e5,_0x4908ae)=>[_0x49f0e5[0x1]*_0x4908ae[0x2]-_0x49f0e5[0x2]*_0x4908ae[0x1],_0x49f0e5[0x2]*_0x4908ae[0x0]-_0x49f0e5[0x0]*_0x4908ae[0x2],_0x49f0e5[0x0]*_0x4908ae[0x1]-_0x49f0e5[0x1]*_0x4908ae[0x0]],normalizeVector$1=_0x236da3=>{const _0x3a613d=_0x1d30f8;let _0x4d41a5=Math[_0x3a613d(0x20b)](_0x236da3[0x0],_0x236da3[0x1],_0x236da3[0x2]);return _0x4d41a5===0x0?[0x0,0x0,0x0]:scaleVector(_0x236da3,0x1/_0x4d41a5);},clamp$1=(_0x4aef1e,_0x4fc94a,_0xd85ec9)=>Math[_0x1d30f8(0xcc)](_0xd85ec9,Math[_0x1d30f8(0x334)](_0x4fc94a,_0x4aef1e)),validateProjection=_0x35d99a=>{const _0x8969cc=_0x1d30f8;if(!(_0x35d99a[_0x8969cc(0x384)]>=0x0&&_0x35d99a[_0x8969cc(0x170)]>_0x35d99a['near']))throw Error('相机裁剪距离必须满足\x200\x20<=\x20near\x20<\x20far。');if(_0x35d99a[_0x8969cc(0x1a0)]===_0x8969cc(0x189)&&!(_0x35d99a[_0x8969cc(0x384)]>0x0&&_0x35d99a[_0x8969cc(0x347)]>0x0&&_0x35d99a['fovYDegrees']<0xb4))throw Error(_0x8969cc(0x3a8));if(_0x35d99a[_0x8969cc(0x1a0)]==='orthographic'&&!(_0x35d99a[_0x8969cc(0x26d)]>0x0))throw Error(_0x8969cc(0x3d6));},resolveInitialState=_0x537498=>{const _0x1bea76=_0x1d30f8;let _0x4e689b={'position':_0x537498[_0x1bea76(0x239)]?.[_0x1bea76(0x209)]?cloneVector(_0x537498['state'][_0x1bea76(0x209)]):cloneVector(DEFAULT_POSITION),'target':_0x537498[_0x1bea76(0x239)]?.[_0x1bea76(0x306)]?cloneVector(_0x537498[_0x1bea76(0x239)]['target']):cloneVector(DEFAULT_TARGET),'up':_0x537498[_0x1bea76(0x239)]?.['up']?cloneVector(_0x537498[_0x1bea76(0x239)]['up']):cloneVector(DEFAULT_UP),'projection':_0x537498[_0x1bea76(0x239)]?.[_0x1bea76(0x11a)]?cloneProjection(_0x537498[_0x1bea76(0x239)][_0x1bea76(0x11a)]):cloneProjection(DEFAULT_PROJECTION)};return validateProjection(_0x4e689b[_0x1bea76(0x11a)]),_0x4e689b;};var VolumeCamera=class{[_0x1d30f8(0x3a4)];[_0x1d30f8(0x401)];['rotateSpeed'];[_0x1d30f8(0x258)];[_0x1d30f8(0x119)];[_0x1d30f8(0x2a1)];[_0x1d30f8(0x316)];[_0x1d30f8(0x38e)];[_0x1d30f8(0x1ae)];constructor(_0x25da27={}){const _0x30a8b8=_0x1d30f8;if(this[_0x30a8b8(0x3a4)]=resolveInitialState(_0x25da27),this[_0x30a8b8(0x401)]=_0x25da27[_0x30a8b8(0x401)]??0x1,this[_0x30a8b8(0x417)]=_0x25da27[_0x30a8b8(0x417)]??0.005,this[_0x30a8b8(0x258)]=_0x25da27[_0x30a8b8(0x258)]??0x1,this[_0x30a8b8(0x119)]=_0x25da27['zoomSpeed']??0.0015,this[_0x30a8b8(0x2a1)]=_0x25da27['minimumDistance']??0.001,this[_0x30a8b8(0x316)]=_0x25da27[_0x30a8b8(0x316)]??0x1/0x0,this['minimumPitch']=(_0x25da27['minimumPitchDegrees']??-0x59)*DEGREE_TO_RADIAN,this[_0x30a8b8(0x1ae)]=(_0x25da27['maximumPitchDegrees']??0x59)*DEGREE_TO_RADIAN,!(this[_0x30a8b8(0x401)]>0x0))throw Error(_0x30a8b8(0x309));}get[_0x1d30f8(0x239)](){const _0x2438fa=_0x1d30f8;return cloneState(this[_0x2438fa(0x3a4)]);}get[_0x1d30f8(0x1ef)](){const _0x17c890=_0x1d30f8;let _0x3bb379=createLookAtMatrix(this[_0x17c890(0x3a4)][_0x17c890(0x209)],this['cameraState']['target'],this[_0x17c890(0x3a4)]['up']),_0x5b5bd6=this[_0x17c890(0x1c6)](),_0x4a3527=multiplyMatrices(_0x5b5bd6,_0x3bb379);return{'view':_0x3bb379,'projection':_0x5b5bd6,'viewProjection':_0x4a3527,'inverseViewProjection':invertMatrix(_0x4a3527)};}[_0x1d30f8(0x169)](_0x4242e0){const _0x314b41=_0x1d30f8;validateProjection(_0x4242e0[_0x314b41(0x11a)]),this[_0x314b41(0x3a4)]=cloneState(_0x4242e0);}[_0x1d30f8(0x10f)](_0x40f217){const _0x2443b8=_0x1d30f8;if(!(_0x40f217>0x0)||!Number['isFinite'](_0x40f217))throw Error('相机宽高比必须是大于\x200\x20的有限数。');this[_0x2443b8(0x401)]=_0x40f217;}[_0x1d30f8(0xcb)](_0x37109c){const _0x58a586=_0x1d30f8;if(_0x37109c===this[_0x58a586(0x3a4)][_0x58a586(0x11a)][_0x58a586(0x1a0)])return;let _0x10aa07=Math[_0x58a586(0x20b)](...subtractVector(this[_0x58a586(0x3a4)][_0x58a586(0x209)],this['cameraState'][_0x58a586(0x306)]));if(_0x37109c===_0x58a586(0x325)){let _0x383a65=this[_0x58a586(0x3a4)]['projection'],_0x3edd93=_0x383a65[_0x58a586(0x1a0)]===_0x58a586(0x189)?_0x383a65['fovYDegrees']*DEGREE_TO_RADIAN:0x2d*DEGREE_TO_RADIAN;this['cameraState'][_0x58a586(0x11a)]={'type':_0x37109c,'height':0x2*_0x10aa07*Math[_0x58a586(0x3ec)](_0x3edd93/0x2),'near':_0x383a65[_0x58a586(0x384)],'far':_0x383a65[_0x58a586(0x170)]};return;}let _0x4f7730=this[_0x58a586(0x3a4)][_0x58a586(0x11a)],_0x52220e=_0x4f7730['type']==='orthographic'?_0x4f7730[_0x58a586(0x26d)]/(0x2*Math['tan'](0x2d*DEGREE_TO_RADIAN/0x2)):_0x10aa07,_0x121984=normalizeVector$1(subtractVector(this[_0x58a586(0x3a4)][_0x58a586(0x209)],this[_0x58a586(0x3a4)][_0x58a586(0x306)]));this['cameraState'][_0x58a586(0x209)]=addVector(this[_0x58a586(0x3a4)]['target'],scaleVector(_0x121984,_0x52220e)),this[_0x58a586(0x3a4)][_0x58a586(0x11a)]={'type':_0x37109c,'fovYDegrees':0x2d,'near':_0x4f7730[_0x58a586(0x384)],'far':_0x4f7730[_0x58a586(0x170)]};}['orbit'](_0x57f9f3,_0x53cc16){const _0x58ca07=_0x1d30f8;let _0x1c980c=subtractVector(this[_0x58ca07(0x3a4)][_0x58ca07(0x209)],this[_0x58ca07(0x3a4)][_0x58ca07(0x306)]),_0x5b80d9=Math[_0x58ca07(0x20b)](..._0x1c980c);if(_0x5b80d9===0x0)return;let _0x3ad47f=Math[_0x58ca07(0x402)](_0x1c980c[0x0],_0x1c980c[0x2])-_0x57f9f3*this[_0x58ca07(0x417)],_0x4b21e1=clamp$1(Math[_0x58ca07(0x368)](_0x1c980c[0x1]/_0x5b80d9)+_0x53cc16*this[_0x58ca07(0x417)],this[_0x58ca07(0x38e)],this[_0x58ca07(0x1ae)]),_0x1bc48d=Math[_0x58ca07(0x16c)](_0x4b21e1)*_0x5b80d9;this['cameraState'][_0x58ca07(0x209)]=addVector(this[_0x58ca07(0x3a4)][_0x58ca07(0x306)],[Math['sin'](_0x3ad47f)*_0x1bc48d,Math['sin'](_0x4b21e1)*_0x5b80d9,Math[_0x58ca07(0x16c)](_0x3ad47f)*_0x1bc48d]);}['pan'](_0x4e2e08,_0x3e4953,_0x24db97){const _0x63575=_0x1d30f8;if(!(_0x24db97>0x0))return;let _0x4179ef=normalizeVector$1(subtractVector(this[_0x63575(0x3a4)][_0x63575(0x306)],this[_0x63575(0x3a4)]['position'])),_0x1ed02b=normalizeVector$1(crossVector$1(_0x4179ef,this[_0x63575(0x3a4)]['up'])),_0x581062=normalizeVector$1(crossVector$1(_0x1ed02b,_0x4179ef)),_0x55e00e=Math[_0x63575(0x20b)](...subtractVector(this[_0x63575(0x3a4)][_0x63575(0x209)],this[_0x63575(0x3a4)]['target'])),_0x2a7126=(this[_0x63575(0x3a4)]['projection'][_0x63575(0x1a0)]===_0x63575(0x325)?this[_0x63575(0x3a4)][_0x63575(0x11a)][_0x63575(0x26d)]:0x2*_0x55e00e*Math[_0x63575(0x3ec)](this[_0x63575(0x3a4)]['projection']['fovYDegrees']*DEGREE_TO_RADIAN/0x2))/_0x24db97*this['panSpeed'],_0xa8cb0c=addVector(scaleVector(_0x1ed02b,-_0x4e2e08*_0x2a7126),scaleVector(_0x581062,_0x3e4953*_0x2a7126));this[_0x63575(0x3a4)][_0x63575(0x209)]=addVector(this['cameraState']['position'],_0xa8cb0c),this[_0x63575(0x3a4)][_0x63575(0x306)]=addVector(this[_0x63575(0x3a4)]['target'],_0xa8cb0c);}['dolly'](_0x3971c6){const _0x1c8569=_0x1d30f8;let _0x1365d0=Math['exp'](_0x3971c6*this[_0x1c8569(0x119)]);if(this[_0x1c8569(0x3a4)]['projection'][_0x1c8569(0x1a0)]===_0x1c8569(0x325)){this[_0x1c8569(0x3a4)][_0x1c8569(0x11a)]={...this['cameraState'][_0x1c8569(0x11a)],'height':Math[_0x1c8569(0x334)](this[_0x1c8569(0x2a1)],this[_0x1c8569(0x3a4)]['projection'][_0x1c8569(0x26d)]*_0x1365d0)};return;}let _0x15acfe=subtractVector(this['cameraState'][_0x1c8569(0x209)],this['cameraState'][_0x1c8569(0x306)]),_0xe92715=clamp$1(Math['hypot'](..._0x15acfe)*_0x1365d0,this['minimumDistance'],this[_0x1c8569(0x316)]);this[_0x1c8569(0x3a4)][_0x1c8569(0x209)]=addVector(this[_0x1c8569(0x3a4)][_0x1c8569(0x306)],scaleVector(normalizeVector$1(_0x15acfe),_0xe92715));}[_0x1d30f8(0x1c6)](){const _0x1aa426=_0x1d30f8;let _0x392462=this[_0x1aa426(0x3a4)]['projection'];return _0x392462['type']===_0x1aa426(0x189)?createPerspectiveMatrix(_0x392462[_0x1aa426(0x347)]*DEGREE_TO_RADIAN,this[_0x1aa426(0x401)],_0x392462[_0x1aa426(0x384)],_0x392462[_0x1aa426(0x170)]):createOrthographicMatrix(_0x392462[_0x1aa426(0x26d)],this[_0x1aa426(0x401)],_0x392462[_0x1aa426(0x384)],_0x392462[_0x1aa426(0x170)]);}};const isMissingValue=(_0x437a45,_0xbd9581)=>Number[_0x1d30f8(0x3d4)](_0x437a45)||_0xbd9581!==void 0x0&&_0x437a45===_0xbd9581,axisValueToNormalized=(_0xda0c13,_0x4d7329)=>_0xda0c13[_0x1d30f8(0x218)]===_0xda0c13[_0x1d30f8(0x144)]?0x0:(_0x4d7329-_0xda0c13['start'])/(_0xda0c13['end']-_0xda0c13[_0x1d30f8(0x218)]),validateProfile=_0x4591a6=>{const _0xe36f76=_0x1d30f8;if(!_0x4591a6['id'])throw Error(_0xe36f76(0x2ba));if(_0x4591a6[_0xe36f76(0x205)][_0xe36f76(0x29b)]<0x4||_0x4591a6['path'][_0xe36f76(0x29b)]%0x2!=0x0)throw Error('路线剖面\x20'+_0x4591a6['id']+_0xe36f76(0x217));if(_0x4591a6['heights'][_0xe36f76(0x29b)]<0x2)throw Error(_0xe36f76(0x359)+_0x4591a6['id']+_0xe36f76(0x1b6));let _0xf7a3a9=_0x4591a6[_0xe36f76(0x205)][_0xe36f76(0x29b)]/0x2;if(_0x4591a6[_0xe36f76(0x270)][_0xe36f76(0x29b)]!==_0xf7a3a9*_0x4591a6['heights'][_0xe36f76(0x29b)])throw Error(_0xe36f76(0x359)+_0x4591a6['id']+_0xe36f76(0x3ed));if(_0x4591a6[_0xe36f76(0x251)]!==void 0x0&&(!(_0x4591a6[_0xe36f76(0x251)]>=0x0&&_0x4591a6[_0xe36f76(0x251)]<=0x1)||!Number[_0xe36f76(0x193)](_0x4591a6[_0xe36f76(0x251)])))throw Error(_0xe36f76(0x359)+_0x4591a6['id']+_0xe36f76(0x40f));for(let _0x3163a8 of _0x4591a6[_0xe36f76(0x205)])if(!Number['isFinite'](_0x3163a8))throw Error(_0xe36f76(0x359)+_0x4591a6['id']+_0xe36f76(0x2ca));for(let _0x4181ad of _0x4591a6[_0xe36f76(0x20a)])if(!Number[_0xe36f76(0x193)](_0x4181ad))throw Error('路线剖面\x20'+_0x4591a6['id']+_0xe36f76(0x231));return _0xf7a3a9;},createPositions=(_0xe91c13,_0xe02fbc,_0x2929ae)=>{const _0x28f071=_0x1d30f8;let _0x50ea6e=new Float32Array(_0xe02fbc*_0xe91c13[_0x28f071(0x20a)]['length']*0x3);for(let _0x36f487=0x0;_0x36f487<_0xe91c13[_0x28f071(0x20a)][_0x28f071(0x29b)];_0x36f487+=0x1)for(let _0x550fbb=0x0;_0x550fbb<_0xe02fbc;_0x550fbb+=0x1){let _0x56a476=(_0x36f487*_0xe02fbc+_0x550fbb)*0x3;_0x50ea6e[_0x56a476]=axisValueToNormalized(_0x2929ae[_0x28f071(0xf3)],_0xe91c13[_0x28f071(0x205)][_0x550fbb*0x2]),_0x50ea6e[_0x56a476+0x1]=axisValueToNormalized(_0x2929ae[_0x28f071(0x2b7)],_0xe91c13['heights'][_0x36f487]),_0x50ea6e[_0x56a476+0x2]=axisValueToNormalized(_0x2929ae[_0x28f071(0x1d9)],_0xe91c13[_0x28f071(0x205)][_0x550fbb*0x2+0x1]);}return _0x50ea6e;},createValues=_0x226384=>{const _0x42c03e=_0x1d30f8;let _0x32daa2=new Float32Array(_0x226384[_0x42c03e(0x270)][_0x42c03e(0x29b)]);for(let _0x51eee9=0x0;_0x51eee9<_0x226384['values']['length'];_0x51eee9+=0x1){let _0x2869f0=_0x226384['values'][_0x51eee9];_0x32daa2[_0x51eee9]=isMissingValue(_0x2869f0,_0x226384[_0x42c03e(0x32e)])?NaN:_0x2869f0;}return _0x32daa2;},createIndices=(_0xb2a3b4,_0x291594)=>{let _0xb1b900=new Uint32Array((_0xb2a3b4-0x1)*(_0x291594-0x1)*0x6),_0x23e4cd=0x0;for(let _0x487617=0x0;_0x487617<_0x291594-0x1;_0x487617+=0x1)for(let _0x20249f=0x0;_0x20249f<_0xb2a3b4-0x1;_0x20249f+=0x1){let _0x330d44=_0x487617*_0xb2a3b4+_0x20249f,_0x138a92=_0x330d44+0x1,_0x2cc298=_0x330d44+_0xb2a3b4,_0x52b738=_0x2cc298+0x1;_0xb1b900[_0x23e4cd]=_0x330d44,_0xb1b900[_0x23e4cd+0x1]=_0x138a92,_0xb1b900[_0x23e4cd+0x2]=_0x2cc298,_0xb1b900[_0x23e4cd+0x3]=_0x2cc298,_0xb1b900[_0x23e4cd+0x4]=_0x138a92,_0xb1b900[_0x23e4cd+0x5]=_0x52b738,_0x23e4cd+=0x6;}return _0xb1b900;},buildVolumeRouteProfileMesh=(_0x2a2cc1,_0x5e10a2)=>{const _0x1fa247=_0x1d30f8;let _0x145ae4=validateProfile(_0x2a2cc1);return{'id':_0x2a2cc1['id'],'positions':createPositions(_0x2a2cc1,_0x145ae4,_0x5e10a2),'values':createValues(_0x2a2cc1),'indices':createIndices(_0x145ae4,_0x2a2cc1['heights'][_0x1fa247(0x29b)]),'opacity':_0x2a2cc1[_0x1fa247(0x251)]??0x1,'depthMode':_0x2a2cc1[_0x1fa247(0x274)]??'scene','revision':_0x2a2cc1[_0x1fa247(0x130)]};};var volumeRaymarch_default=_0x1d30f8(0x37c),sceneMesh_default=_0x1d30f8(0x147),volumeSlice_default=_0x1d30f8(0x16d);const validateMetadata=_0x38a43b=>{const _0x8d7494=_0x1d30f8;if([_0x38a43b[_0x8d7494(0xf3)][_0x8d7494(0xdb)],_0x38a43b[_0x8d7494(0x2b7)][_0x8d7494(0xdb)],_0x38a43b['zAxis'][_0x8d7494(0xdb)],_0x38a43b['brickWidth'],_0x38a43b[_0x8d7494(0x416)],_0x38a43b[_0x8d7494(0x25a)]][_0x8d7494(0x350)](_0x26c358=>!Number[_0x8d7494(0x3b4)](_0x26c358)||_0x26c358<=0x0))throw Error(_0x8d7494(0x3e3));if(_0x38a43b[_0x8d7494(0x15b)]!==0x1)throw Error(_0x8d7494(0x1b0));},getBrickCount=_0xaabd94=>[Math[_0x1d30f8(0x332)](_0xaabd94[_0x1d30f8(0xf3)][_0x1d30f8(0xdb)]/_0xaabd94[_0x1d30f8(0x312)]),Math['ceil'](_0xaabd94[_0x1d30f8(0x2b7)][_0x1d30f8(0xdb)]/_0xaabd94[_0x1d30f8(0x416)]),Math[_0x1d30f8(0x332)](_0xaabd94[_0x1d30f8(0x1d9)][_0x1d30f8(0xdb)]/_0xaabd94[_0x1d30f8(0x25a)])],getLogicalBrickCoordinate=(_0x45222f,_0x55db91)=>{const _0x5df4dd=_0x1d30f8;let _0x4843ae=_0x55db91[0x0]*_0x55db91[0x1],_0xf483d4=Math[_0x5df4dd(0x331)](_0x45222f/_0x4843ae),_0x587961=_0x45222f-_0xf483d4*_0x4843ae,_0x957d03=Math[_0x5df4dd(0x331)](_0x587961/_0x55db91[0x0]);return[_0x587961-_0x957d03*_0x55db91[0x0],_0x957d03,_0xf483d4];},analyzeBrickOccupancy=(_0x3d7f4e,_0x140ae9,_0xdb2f13)=>{const _0x543337=_0x1d30f8;let _0x3cc972=_0x140ae9['brickWidth']+0x2,_0x33b24c=_0x140ae9[_0x543337(0x416)]+0x2,_0x1e3624=getLogicalBrickCoordinate(_0x3d7f4e[_0x543337(0x2dc)],_0xdb2f13),_0x57aa06=Math[_0x543337(0xcc)](_0x140ae9[_0x543337(0x312)],_0x140ae9[_0x543337(0xf3)]['count']-_0x1e3624[0x0]*_0x140ae9[_0x543337(0x312)]),_0x23da83=Math[_0x543337(0xcc)](_0x140ae9[_0x543337(0x416)],_0x140ae9[_0x543337(0x2b7)][_0x543337(0xdb)]-_0x1e3624[0x1]*_0x140ae9[_0x543337(0x416)]),_0x384cae=Math[_0x543337(0xcc)](_0x140ae9[_0x543337(0x25a)],_0x140ae9[_0x543337(0x1d9)]['count']-_0x1e3624[0x2]*_0x140ae9['brickDepth']);for(let _0x59f5f4=0x0;_0x59f5f4<_0x384cae;_0x59f5f4+=0x1)for(let _0x3d62d7=0x0;_0x3d62d7<_0x23da83;_0x3d62d7+=0x1){let _0x194020=((_0x59f5f4+0x1)*_0x33b24c+_0x3d62d7+0x1)*_0x3cc972+0x1;for(let _0xfe1590=0x0;_0xfe1590<_0x57aa06;_0xfe1590+=0x1){let _0x5e22d6=_0x3d7f4e[_0x543337(0x270)][_0x194020+_0xfe1590];if(_0x5e22d6===_0x5e22d6&&(_0x140ae9['noData']===void 0x0||_0x5e22d6!==_0x140ae9['noData']))return{'occupied':!0x0,'coreSampleCount':_0x57aa06*_0x23da83*_0x384cae};}}return{'occupied':!0x1,'coreSampleCount':_0x57aa06*_0x23da83*_0x384cae};},findAtlasLayout=(_0x202000,_0x2056fa,_0x597af8,_0x4b54aa,_0x267608)=>{const _0x159346=_0x1d30f8;if(_0x202000<=0x0)return null;let _0x5c3519=Math[_0x159346(0x331)](_0x267608/_0x2056fa),_0xa9333c=Math[_0x159346(0x331)](_0x267608/_0x597af8),_0x42acf4=Math[_0x159346(0x331)](_0x267608/_0x4b54aa),_0x37c55b=null;for(let _0x23f34e=0x1;_0x23f34e<=_0x5c3519;_0x23f34e+=0x1)for(let _0x5882c7=0x1;_0x5882c7<=_0xa9333c;_0x5882c7+=0x1){let _0xf89aea=Math[_0x159346(0xcc)](_0x42acf4,Math[_0x159346(0x331)](_0x202000/(_0x23f34e*_0x5882c7))),_0x595bfb=_0x23f34e*_0x5882c7*_0xf89aea;_0xf89aea<=0x0||_0x595bfb<=(_0x37c55b?.[_0x159346(0x195)]??0x0)||(_0x37c55b={'slotCountX':_0x23f34e,'slotCountY':_0x5882c7,'slotCountZ':_0xf89aea,'slotCount':_0x595bfb,'textureCount':0x1,'capacity':_0x595bfb});}return _0x37c55b;},getSlotCoordinate=(_0x55e2e0,_0x193868)=>{const _0x2e2f67=_0x1d30f8;let _0x49eb70=_0x193868[_0x2e2f67(0x328)]*_0x193868[_0x2e2f67(0x2f3)],_0x542c38=Math[_0x2e2f67(0x331)](_0x55e2e0/_0x49eb70),_0x38110f=_0x55e2e0-_0x542c38*_0x49eb70,_0x324e12=Math['floor'](_0x38110f/_0x193868[_0x2e2f67(0x328)]);return[_0x38110f-_0x324e12*_0x193868[_0x2e2f67(0x328)],_0x324e12,_0x542c38];},findLeastRecentlyUsed=(_0xa17c4,_0x5226ca)=>{const _0x5bac4a=_0x1d30f8;let _0x6d14b0=null;for(let _0x52acb7 of _0xa17c4)_0x52acb7[_0x5bac4a(0x2f5)]!==_0x5226ca&&(!_0x6d14b0||_0x52acb7[_0x5bac4a(0x2f5)]<_0x6d14b0[_0x5bac4a(0x2f5)])&&(_0x6d14b0=_0x52acb7);return _0x6d14b0;},createPaddedTextureData=(_0x27602f,_0x1a927b,_0x10c347,_0x5d3e42)=>{const _0x5f5721=_0x1d30f8;let _0x2bd59a=_0x1a927b*Float32Array[_0x5f5721(0xe9)],_0x159b30=Math[_0x5f5721(0x332)](_0x2bd59a/0x100)*0x100;if(_0x2bd59a===_0x159b30)return{'values':_0x27602f,'bytesPerRow':_0x159b30};let _0x25f202=_0x159b30/Float32Array[_0x5f5721(0xe9)],_0xcb92aa=new Float32Array(_0x25f202*_0x10c347*_0x5d3e42);for(let _0x1329d2=0x0;_0x1329d2<_0x5d3e42;_0x1329d2+=0x1)for(let _0x1a6d36=0x0;_0x1a6d36<_0x10c347;_0x1a6d36+=0x1){let _0x588ede=(_0x1329d2*_0x10c347+_0x1a6d36)*_0x1a927b,_0x5d6092=(_0x1329d2*_0x10c347+_0x1a6d36)*_0x25f202;_0xcb92aa[_0x5f5721(0x1a8)](_0x27602f[_0x5f5721(0x13e)](_0x588ede,_0x588ede+_0x1a927b),_0x5d6092);}return{'values':_0xcb92aa,'bytesPerRow':_0x159b30};};var WebgpuBrickAtlas=class{[_0x1d30f8(0x15c)];[_0x1d30f8(0x3d9)];[_0x1d30f8(0x198)];['metadata']=null;[_0x1d30f8(0x41d)]=null;[_0x1d30f8(0x2bd)]=[];[_0x1d30f8(0x15a)]=[];[_0x1d30f8(0x18b)]=null;[_0x1d30f8(0x1b2)]=new Uint32Array();['residentByLogicalIndex']=new Map();[_0x1d30f8(0xf2)]=new Map();[_0x1d30f8(0x381)]=0x0;constructor(_0x3bb906,_0x2637c9=0x20000000,_0x5df799=_0x2637c9){const _0x30224f=_0x1d30f8;if(!Number[_0x30224f(0x193)](_0x2637c9)||!Number[_0x30224f(0x193)](_0x5df799)||_0x2637c9<=0x0||_0x5df799<=0x0)throw Error(_0x30224f(0x344));this[_0x30224f(0x15c)]=_0x3bb906,this['memoryTargetBytes']=Math[_0x30224f(0xcc)](_0x2637c9,_0x5df799),this[_0x30224f(0x198)]=_0x5df799;}get[_0x1d30f8(0x254)](){const _0x40bc1e=_0x1d30f8;if(!this['metadata'])throw Error(_0x40bc1e(0x3ea));return this[_0x40bc1e(0x1f0)];}get[_0x1d30f8(0xd2)](){const _0xed7057=_0x1d30f8;if(!this['layout'])throw Error(_0xed7057(0x429));return this['layout'];}get[_0x1d30f8(0x2dd)](){const _0x1783cd=_0x1d30f8;return this[_0x1783cd(0x3d5)][_0x1783cd(0x2d2)];}get['statistics'](){const _0xca3628=_0x1d30f8;if(!this[_0xca3628(0x1f0)]||!this[_0xca3628(0x41d)])return{'logicalBrickCount':0x0,'atlasCapacity':0x0,'gpuBytes':0x0,'memoryLimitBytes':this[_0xca3628(0x198)],'budgetLimited':!0x1,'skippedSamples':0x0,'skippedCells':0x0};let _0x23337a=getBrickCount(this[_0xca3628(0x1f0)]),_0xd35464=_0x23337a[0x0]*_0x23337a[0x1]*_0x23337a[0x2],_0x452726=this[_0xca3628(0x1f0)][_0xca3628(0x312)]+0x2,_0x1e1989=this['metadata'][_0xca3628(0x416)]+0x2,_0x27d4e3=this[_0xca3628(0x1f0)][_0xca3628(0x25a)]+0x2,_0x1afed7=_0x452726*_0x1e1989*_0x27d4e3*this[_0xca3628(0x41d)][_0xca3628(0x2b4)]*Float32Array[_0xca3628(0xe9)],_0x2e7a6a=_0xd35464*0x4*Uint32Array['BYTES_PER_ELEMENT'],_0xea98ed=0x0,_0x37524b=0x0;for(let _0x630b30 of this[_0xca3628(0x3d5)]['values']())_0x630b30[_0xca3628(0x146)]||(_0x37524b+=0x1,_0xea98ed+=_0x630b30['skippedSampleCount']);return{'logicalBrickCount':_0xd35464,'atlasCapacity':this[_0xca3628(0x41d)]['capacity'],'gpuBytes':_0x1afed7+_0x2e7a6a,'memoryLimitBytes':this[_0xca3628(0x198)],'budgetLimited':this[_0xca3628(0x41d)][_0xca3628(0x2b4)]<_0xd35464,'skippedSamples':_0xea98ed,'skippedCells':_0x37524b};}[_0x1d30f8(0x256)](_0x2cbf10){const _0x660c1=_0x1d30f8;validateMetadata(_0x2cbf10);let _0x5a5470=_0x2cbf10[_0x660c1(0x312)]+0x2,_0x1a1cc3=_0x2cbf10[_0x660c1(0x416)]+0x2,_0x3aa7be=_0x2cbf10[_0x660c1(0x25a)]+0x2,_0x4e6499=getBrickCount(_0x2cbf10),_0x28fd3e=_0x4e6499[0x0]*_0x4e6499[0x1]*_0x4e6499[0x2],_0x5be467=_0x28fd3e*0x4*Uint32Array[_0x660c1(0xe9)],_0x228a0c=Math[_0x660c1(0xcc)](this['memoryTargetBytes'],this[_0x660c1(0x198)])-_0x5be467;if(_0x228a0c<=0x0)throw Error('WebGPU\x20volume\x20page\x20table\x20exceeds\x20the\x20configured\x20memory\x20limit.\x20WebGPU\x20体积页表超过显存限制。');let _0x40ba0a=_0x5a5470*_0x1a1cc3*_0x3aa7be*Float32Array[_0x660c1(0xe9)],_0x36f3d2=Math['min'](_0x28fd3e,Math[_0x660c1(0x331)](_0x228a0c/_0x40ba0a)),_0x168c39=Math[_0x660c1(0x334)](0x1,Math[_0x660c1(0x331)](0x4000000/_0x40ba0a)),_0x481016=Math[_0x660c1(0xcc)](0x8,Math[_0x660c1(0x334)](0x1,Math['ceil'](_0x36f3d2/_0x168c39))),_0x30820b=findAtlasLayout(Math[_0x660c1(0x334)](0x1,Math['floor'](_0x36f3d2/_0x481016)),_0x5a5470,_0x1a1cc3,_0x3aa7be,this['device'][_0x660c1(0x2e0)][_0x660c1(0x282)]);if(!_0x30820b)throw Error('Unable\x20to\x20allocate\x20a\x20WebGPU\x20R32F\x20volume\x20atlas\x20within\x20device\x20limits.\x20无法在设备限制内分配\x20WebGPU\x20R32F\x20体积图集。');let _0x53653d={..._0x30820b,'textureCount':_0x481016,'capacity':_0x30820b['slotCount']*_0x481016},_0x564261=_0x5a5470*_0x53653d[_0x660c1(0x328)],_0x5c2a89=_0x1a1cc3*_0x53653d[_0x660c1(0x2f3)],_0x51afa5=_0x3aa7be*_0x53653d[_0x660c1(0x22d)],_0x4cb7b7=Array[_0x660c1(0x3d2)]({'length':_0x481016},(_0x31f1df,_0x2cfe64)=>this[_0x660c1(0x15c)][_0x660c1(0x36b)]({'label':_0x660c1(0x1f9)+_0x2cfe64,'size':[_0x564261,_0x5c2a89,_0x51afa5],'dimension':'3d','format':_0x660c1(0x24e),'usage':GPUTextureUsage[_0x660c1(0x1e4)]|GPUTextureUsage[_0x660c1(0x41a)]|GPUTextureUsage[_0x660c1(0x422)]})),_0x427d71=this[_0x660c1(0x15c)][_0x660c1(0x153)]({'label':'volume\x20brick\x20page\x20table','size':Math[_0x660c1(0x334)](0x10,_0x5be467),'usage':GPUBufferUsage[_0x660c1(0x202)]|GPUBufferUsage['COPY_DST']});this[_0x660c1(0x3bf)](),this['metadata']={..._0x2cbf10},this[_0x660c1(0x41d)]=_0x53653d,this[_0x660c1(0x2bd)]=_0x4cb7b7,this[_0x660c1(0x15a)]=_0x4cb7b7[_0x660c1(0x2f9)](_0x226154=>_0x226154[_0x660c1(0x376)]({'dimension':'3d'})),this['pageTableBuffer']=_0x427d71,this[_0x660c1(0x1b2)]=new Uint32Array(_0x28fd3e*0x4),this[_0x660c1(0x15c)][_0x660c1(0x3d8)][_0x660c1(0x3ee)](_0x427d71,0x0,this[_0x660c1(0x1b2)]);for(let _0x508650 of _0x4cb7b7)this[_0x660c1(0xe1)](_0x508650,_0x564261,_0x5c2a89,_0x51afa5);this[_0x660c1(0x381)]+=0x1;}[_0x1d30f8(0x2b8)](_0x208df3,_0x2461a8){const _0x3b660a=_0x1d30f8;let _0x4c9c84=this[_0x3b660a(0x254)],_0x490e51=this[_0x3b660a(0xd2)],_0x2da8e3=getBrickCount(_0x4c9c84),_0x44426a=_0x2da8e3[0x0]*_0x2da8e3[0x1]*_0x2da8e3[0x2];if(!Number[_0x3b660a(0x3b4)](_0x208df3[_0x3b660a(0x2dc)])||_0x208df3[_0x3b660a(0x2dc)]<0x0||_0x208df3[_0x3b660a(0x2dc)]>=_0x44426a)throw Error('Invalid\x20logical\x20volume\x20brick\x20index:\x20'+_0x208df3[_0x3b660a(0x2dc)]+'.\x20体积逻辑砖块索引无效。');let _0x254b27=_0x4c9c84[_0x3b660a(0x312)]+0x2,_0x4c3b2d=_0x4c9c84['brickHeight']+0x2,_0x2cd9d4=_0x4c9c84[_0x3b660a(0x25a)]+0x2,_0x1b6e5a=_0x254b27*_0x4c3b2d*_0x2cd9d4;if(_0x208df3['values'][_0x3b660a(0x29b)]!==_0x1b6e5a)throw Error('Volume\x20brick\x20'+_0x208df3[_0x3b660a(0x2dc)]+_0x3b660a(0x13d)+_0x1b6e5a+_0x3b660a(0x34e)+_0x208df3['values']['length']+_0x3b660a(0xcd));let _0x135087=this[_0x3b660a(0x3d5)][_0x3b660a(0x2d0)](_0x208df3[_0x3b660a(0x2dc)])??this['acquireSlot'](_0x208df3['logicalIndex'],_0x2461a8),_0x29bb6d=analyzeBrickOccupancy(_0x208df3,_0x4c9c84,_0x2da8e3),_0x1d457e=Math[_0x3b660a(0x331)](_0x135087[_0x3b660a(0x2bf)]/_0x490e51[_0x3b660a(0x195)]),_0x1689de=getSlotCoordinate(_0x135087['slotIndex']%_0x490e51['slotCount'],_0x490e51),_0x3882b0=createPaddedTextureData(new Float32Array(_0x208df3[_0x3b660a(0x270)]),_0x254b27,_0x4c3b2d,_0x2cd9d4);return _0x135087['lastUsedFrame']=_0x2461a8,_0x135087[_0x3b660a(0x381)]=this[_0x3b660a(0x381)],_0x135087[_0x3b660a(0x146)]=_0x29bb6d[_0x3b660a(0x146)],_0x135087[_0x3b660a(0x163)]=_0x29bb6d[_0x3b660a(0x1fb)],this['writePageEntry'](_0x135087),{'values':_0x3882b0[_0x3b660a(0x270)],'bytesPerRow':_0x3882b0[_0x3b660a(0x42e)],'rowsPerImage':_0x4c3b2d,'origin':{'x':_0x1689de[0x0]*_0x254b27,'y':_0x1689de[0x1]*_0x4c3b2d,'z':_0x1689de[0x2]*_0x2cd9d4},'extent':[_0x254b27,_0x4c3b2d,_0x2cd9d4],'atlasIndex':_0x1d457e};}[_0x1d30f8(0x1af)](_0x277641,_0x1f6210,_0x4fda60,_0x51a56f){const _0x2a2c2f=_0x1d30f8;_0x277641[_0x2a2c2f(0x17c)]({'buffer':_0x1f6210,'offset':_0x4fda60,'bytesPerRow':_0x51a56f[_0x2a2c2f(0x42e)],'rowsPerImage':_0x51a56f['rowsPerImage']},{'texture':this[_0x2a2c2f(0x2bb)](_0x51a56f[_0x2a2c2f(0x208)]),'origin':_0x51a56f['origin']},_0x51a56f[_0x2a2c2f(0x10d)]);}['touch'](_0xf186f0,_0x566646){for(let _0x27a516 of _0xf186f0){let _0x164d11=this['residentByLogicalIndex']['get'](_0x27a516);_0x164d11&&(_0x164d11['lastUsedFrame']=_0x566646);}}[_0x1d30f8(0x27b)](_0x4c3506,_0x359aba){const _0x4b01ca=_0x1d30f8;if(this['atlasViews'][_0x4b01ca(0x29b)]===0x0||!this['pageTableBuffer'])throw Error('WebGPU\x20volume\x20atlas\x20resources\x20are\x20incomplete.\x20WebGPU\x20体积图集资源不完整。');return this[_0x4b01ca(0x15c)][_0x4b01ca(0x27b)]({'label':_0x4b01ca(0x219),'layout':_0x4c3506,'entries':[...Array['from']({'length':0x8},(_0x2396d6,_0x524cae)=>({'binding':_0x524cae,'resource':this[_0x4b01ca(0x15a)][_0x524cae]??this[_0x4b01ca(0x15a)][0x0]})),{'binding':0x8,'resource':{'buffer':this['pageTableBuffer']}},{'binding':0x9,'resource':{'buffer':_0x359aba}}]});}[_0x1d30f8(0x377)](){const _0x44f609=_0x1d30f8;this[_0x44f609(0x3bf)](),this[_0x44f609(0x1f0)]=null,this[_0x44f609(0x41d)]=null,this[_0x44f609(0x1b2)]=new Uint32Array();}[_0x1d30f8(0x14f)](_0x14ec2a,_0x4be025){const _0x51bff7=_0x1d30f8;let _0x40c5ed=this[_0x51bff7(0xd2)],_0x19d433=this[_0x51bff7(0xf2)][_0x51bff7(0x2d2)];if(_0x19d433>=_0x40c5ed['capacity']){let _0x2b1c0f=findLeastRecentlyUsed(this['residentBySlotIndex'][_0x51bff7(0x270)](),_0x4be025);if(!_0x2b1c0f)throw Error(_0x51bff7(0x19f));_0x19d433=_0x2b1c0f[_0x51bff7(0x2bf)],this['clearPageEntry'](_0x2b1c0f[_0x51bff7(0x2dc)]),this[_0x51bff7(0x3d5)]['delete'](_0x2b1c0f[_0x51bff7(0x2dc)]),this[_0x51bff7(0xf2)][_0x51bff7(0xd5)](_0x19d433);}let _0x11df3f={'logicalIndex':_0x14ec2a,'slotIndex':_0x19d433,'lastUsedFrame':_0x4be025,'generation':this[_0x51bff7(0x381)],'occupied':!0x1,'skippedSampleCount':0x0};return this[_0x51bff7(0x3d5)][_0x51bff7(0x1a8)](_0x14ec2a,_0x11df3f),this['residentBySlotIndex'][_0x51bff7(0x1a8)](_0x19d433,_0x11df3f),_0x11df3f;}[_0x1d30f8(0x2a4)](_0x37e8db){const _0x104c88=_0x1d30f8;let _0x3753b7=_0x37e8db[_0x104c88(0x2dc)]*0x4;this[_0x104c88(0x1b2)][_0x3753b7]=_0x37e8db['slotIndex']%this[_0x104c88(0xd2)][_0x104c88(0x195)]+0x1,this['pageTableValues'][_0x3753b7+0x1]=_0x37e8db[_0x104c88(0x381)],this[_0x104c88(0x1b2)][_0x3753b7+0x2]=+!!_0x37e8db['occupied'],this[_0x104c88(0x1b2)][_0x3753b7+0x3]=Math[_0x104c88(0x331)](_0x37e8db[_0x104c88(0x2bf)]/this[_0x104c88(0xd2)][_0x104c88(0x195)]),this[_0x104c88(0x15c)]['queue'][_0x104c88(0x3ee)](this['getPageTableBuffer'](),_0x3753b7*Uint32Array['BYTES_PER_ELEMENT'],this[_0x104c88(0x1b2)],_0x3753b7,0x4);}[_0x1d30f8(0x34f)](_0x412eb7){const _0x4fa6e7=_0x1d30f8;let _0x3e9bbd=_0x412eb7*0x4;this[_0x4fa6e7(0x1b2)][_0x4fa6e7(0x3f1)](0x0,_0x3e9bbd,_0x3e9bbd+0x4),this[_0x4fa6e7(0x15c)][_0x4fa6e7(0x3d8)]['writeBuffer'](this[_0x4fa6e7(0x41c)](),_0x3e9bbd*Uint32Array[_0x4fa6e7(0xe9)],this[_0x4fa6e7(0x1b2)],_0x3e9bbd,0x4);}['getAtlasTexture'](_0x433596){const _0x6df1ca=_0x1d30f8;let _0x43d702=this[_0x6df1ca(0x2bd)][_0x433596];if(!_0x43d702)throw Error(_0x6df1ca(0x2df));return _0x43d702;}[_0x1d30f8(0xe1)](_0x2459a4,_0x3d8592,_0x145b8d,_0x29b335){const _0x6b4c5d=_0x1d30f8;let _0x58ba51=this['device']['createShaderModule']({'label':'volume\x20atlas\x20clear\x20shader','code':'\x0a@group(0)\x20@binding(0)\x20var\x20atlas:\x20texture_storage_3d<r32float,\x20write>;\x0a\x0a@compute\x20@workgroup_size(4,\x204,\x204)\x0afn\x20main(@builtin(global_invocation_id)\x20invocation:\x20vec3u)\x20{\x0a\x20\x20\x20\x20let\x20dimensions\x20=\x20textureDimensions(atlas);\x0a\x20\x20\x20\x20if\x20(all(invocation\x20<\x20dimensions))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20textureStore(atlas,\x20vec3i(invocation),\x20vec4f(0.0));\x0a\x20\x20\x20\x20}\x0a}\x0a'}),_0x5863b6=this[_0x6b4c5d(0x15c)]['createComputePipeline']({'label':_0x6b4c5d(0x1aa),'layout':_0x6b4c5d(0x19c),'compute':{'module':_0x58ba51,'entryPoint':_0x6b4c5d(0x1ab)}}),_0x2222b6=this[_0x6b4c5d(0x15c)]['createBindGroup']({'label':'volume\x20atlas\x20clear\x20bind\x20group','layout':_0x5863b6[_0x6b4c5d(0xd7)](0x0),'entries':[{'binding':0x0,'resource':_0x2459a4['createView']({'dimension':'3d'})}]}),_0x552af7=this[_0x6b4c5d(0x15c)][_0x6b4c5d(0x261)]({'label':_0x6b4c5d(0x178)}),_0x5b6080=_0x552af7['beginComputePass']({'label':_0x6b4c5d(0x18c)});_0x5b6080['setPipeline'](_0x5863b6),_0x5b6080[_0x6b4c5d(0x1bb)](0x0,_0x2222b6),_0x5b6080['dispatchWorkgroups'](Math['ceil'](_0x3d8592/0x4),Math[_0x6b4c5d(0x332)](_0x145b8d/0x4),Math[_0x6b4c5d(0x332)](_0x29b335/0x4)),_0x5b6080['end'](),this[_0x6b4c5d(0x15c)]['queue']['submit']([_0x552af7['finish']()]);}['getPageTableBuffer'](){const _0xecfe99=_0x1d30f8;if(!this[_0xecfe99(0x18b)])throw Error(_0xecfe99(0x165));return this[_0xecfe99(0x18b)];}[_0x1d30f8(0x3bf)](){const _0x264e4a=_0x1d30f8;for(let _0x55a030 of this[_0x264e4a(0x2bd)])_0x55a030['destroy']();this['pageTableBuffer']?.[_0x264e4a(0x377)](),this[_0x264e4a(0x2bd)]=[],this[_0x264e4a(0x15a)]=[],this[_0x264e4a(0x18b)]=null,this[_0x264e4a(0x3d5)][_0x264e4a(0x12f)](),this[_0x264e4a(0xf2)][_0x264e4a(0x12f)]();}},WebgpuSceneAttachments=class{[_0x1d30f8(0x15c)];[_0x1d30f8(0x2c5)]=null;[_0x1d30f8(0x3bd)]=null;[_0x1d30f8(0x238)]=0x0;[_0x1d30f8(0x26d)]=0x0;constructor(_0x3eb31e){const _0x3ef516=_0x1d30f8;this[_0x3ef516(0x15c)]=_0x3eb31e;}get[_0x1d30f8(0x40d)](){const _0x766667=_0x1d30f8;if(!this['depthView'])throw Error(_0x766667(0x207));return this[_0x766667(0x3bd)];}[_0x1d30f8(0x1e3)](_0x2bc466,_0x10951e){const _0x480ea1=_0x1d30f8;if(this['width']===_0x2bc466&&this[_0x480ea1(0x26d)]===_0x10951e)return;let _0x2d05db=this['device']['createTexture']({'label':_0x480ea1(0x271),'size':[_0x2bc466,_0x10951e],'format':'depth32float','usage':GPUTextureUsage[_0x480ea1(0x156)]|GPUTextureUsage['TEXTURE_BINDING']}),_0x204839=this['depthTexture'];this['depthTexture']=_0x2d05db,this[_0x480ea1(0x3bd)]=_0x2d05db[_0x480ea1(0x376)](),this[_0x480ea1(0x238)]=_0x2bc466,this['height']=_0x10951e,_0x204839?.[_0x480ea1(0x377)]();}[_0x1d30f8(0x377)](){const _0x56a569=_0x1d30f8;this['depthTexture']?.[_0x56a569(0x377)](),this[_0x56a569(0x2c5)]=null,this[_0x56a569(0x3bd)]=null,this['width']=0x0,this['height']=0x0;}},WebgpuSceneMeshResources=class{['device'];['resources']=[];constructor(_0x5b35a1){this['device']=_0x5b35a1;}get[_0x1d30f8(0xdb)](){const _0x4e6684=_0x1d30f8;return this[_0x4e6684(0x28c)]['length'];}[_0x1d30f8(0x118)](_0x2b6c58){const _0x15fde7=_0x1d30f8;let _0x2c7c38=[];try{for(let _0x49b49b of _0x2b6c58)_0x2c7c38['push'](this[_0x15fde7(0x40c)](_0x49b49b));}catch(_0x34bbb5){for(let _0x2f60b5 of _0x2c7c38)_0x2f60b5[_0x15fde7(0x150)][_0x15fde7(0x377)]();throw _0x34bbb5;}this[_0x15fde7(0x3bf)](),this[_0x15fde7(0x28c)]=_0x2c7c38;}[_0x1d30f8(0x29f)](_0x468c50,_0x29cccd,_0x5ac33b){const _0x86a571=_0x1d30f8;for(let _0x370273 of this['resources'])_0x370273[_0x86a571(0x250)]!==_0x29cccd||_0x370273[_0x86a571(0x274)]!==_0x5ac33b||(_0x468c50[_0x86a571(0x38a)](0x0,_0x370273[_0x86a571(0x150)]),_0x468c50[_0x86a571(0x29f)](_0x370273[_0x86a571(0x3fa)]));}['destroy'](){const _0x36f609=_0x1d30f8;this[_0x36f609(0x3bf)]();}[_0x1d30f8(0x40c)](_0x9eb5ad){const _0x4e82a7=_0x1d30f8;if(_0x9eb5ad[_0x4e82a7(0x17e)][_0x4e82a7(0x29b)]===0x0||_0x9eb5ad['vertices']['length']%0x7!=0x0)throw Error('Scene\x20mesh\x20'+_0x9eb5ad['id']+_0x4e82a7(0x2f2));let _0x3cdada=new Float32Array(_0x9eb5ad[_0x4e82a7(0x17e)]),_0x3315d1=this[_0x4e82a7(0x15c)][_0x4e82a7(0x153)]({'label':_0x4e82a7(0x223)+_0x9eb5ad['id'],'size':_0x3cdada[_0x4e82a7(0x3c0)],'usage':GPUBufferUsage[_0x4e82a7(0x346)]|GPUBufferUsage['COPY_DST']});return this['device'][_0x4e82a7(0x3d8)]['writeBuffer'](_0x3315d1,0x0,_0x3cdada),{'id':_0x9eb5ad['id'],'topology':_0x9eb5ad[_0x4e82a7(0x250)],'depthMode':_0x9eb5ad['depthMode'],'buffer':_0x3315d1,'vertexCount':_0x9eb5ad[_0x4e82a7(0x17e)][_0x4e82a7(0x29b)]/0x7};}['destroyResources'](){const _0x20644a=_0x1d30f8;for(let _0x222985 of this[_0x20644a(0x28c)])_0x222985[_0x20644a(0x150)][_0x20644a(0x377)]();this[_0x20644a(0x28c)]=[];}},WebgpuSliceResources=class{[_0x1d30f8(0x15c)];['layout'];[_0x1d30f8(0x28c)]=[];[_0x1d30f8(0x269)]=0x0;[_0x1d30f8(0x1b4)]=0x0;constructor(_0x580507,_0x340b3c){const _0x4f9037=_0x1d30f8;this[_0x4f9037(0x15c)]=_0x580507,this[_0x4f9037(0x41d)]=_0x340b3c;}get[_0x1d30f8(0xdb)](){const _0x1d3fa2=_0x1d30f8;return this['resources'][_0x1d3fa2(0x29b)];}get['statistics'](){const _0x455ee3=_0x1d30f8;return{'uniformUpdateCount':this[_0x455ee3(0x269)],'resourceRebuildCount':this[_0x455ee3(0x1b4)]};}['replace'](_0x4036f0){const _0x8fcf4f=_0x1d30f8;let _0x4d9aca=new Map(this['resources']['map'](_0x191219=>[_0x191219['id'],_0x191219])),_0xec38ed=[],_0x509c64=new Set();try{for(let _0x48c412 of _0x4036f0){if(!_0x48c412[_0x8fcf4f(0x35c)])continue;if(_0x509c64[_0x8fcf4f(0x314)](_0x48c412['id']))throw Error('Volume\x20slice\x20ID\x20'+_0x48c412['id']+_0x8fcf4f(0x3e9));_0x509c64['add'](_0x48c412['id']);let _0x5622f4=this[_0x8fcf4f(0x281)](_0x48c412),_0x521606=_0x4d9aca['get'](_0x48c412['id']);if(!_0x521606){_0xec38ed[_0x8fcf4f(0x40e)](this[_0x8fcf4f(0x40c)](_0x48c412,_0x5622f4));continue;}_0x4d9aca[_0x8fcf4f(0xd5)](_0x48c412['id']),_0x521606['depthMode']=_0x48c412[_0x8fcf4f(0x274)],this[_0x8fcf4f(0x3ef)](_0x521606[_0x8fcf4f(0x270)],_0x5622f4)||(this[_0x8fcf4f(0x15c)][_0x8fcf4f(0x3d8)][_0x8fcf4f(0x3ee)](_0x521606[_0x8fcf4f(0x150)],0x0,_0x5622f4),_0x521606['values']=_0x5622f4,this[_0x8fcf4f(0x269)]+=0x1),_0xec38ed[_0x8fcf4f(0x40e)](_0x521606);}}catch(_0x348017){for(let _0x36e01c of _0xec38ed)this[_0x8fcf4f(0x28c)][_0x8fcf4f(0x361)](_0x36e01c)||_0x36e01c[_0x8fcf4f(0x150)][_0x8fcf4f(0x377)]();throw _0x348017;}for(let _0x155659 of _0x4d9aca['values']())_0x155659[_0x8fcf4f(0x150)][_0x8fcf4f(0x377)]();this[_0x8fcf4f(0x28c)]=_0xec38ed;}[_0x1d30f8(0x29f)](_0x2c0480,_0x17c31e,_0x2f4493){const _0x147e89=_0x1d30f8;_0x2c0480[_0x147e89(0x30c)](_0x17c31e);for(let _0x298de9 of this[_0x147e89(0x28c)])_0x298de9[_0x147e89(0x274)]===_0x2f4493&&(_0x2c0480[_0x147e89(0x1bb)](0x3,_0x298de9[_0x147e89(0x34b)]),_0x2c0480[_0x147e89(0x29f)](0x1800));}['destroy'](){this['destroyResources']();}[_0x1d30f8(0x281)](_0x2ecaf7){const _0x5cb307=_0x1d30f8;if(!Number['isFinite'](_0x2ecaf7[_0x5cb307(0x209)])||_0x2ecaf7[_0x5cb307(0x209)]<0x0||_0x2ecaf7['position']>0x1)throw Error('Volume\x20slice\x20'+_0x2ecaf7['id']+_0x5cb307(0x255));let _0xa3c24f=_0x2ecaf7[_0x5cb307(0x3f3)]==='x'?0x0:_0x2ecaf7[_0x5cb307(0x3f3)]==='y'?0x1:0x2,_0x1fd778=_0x2ecaf7[_0x5cb307(0xde)]??[0x0,0x0,0x0,0x0];if(_0x1fd778['some'](_0x7e2aee=>!Number[_0x5cb307(0x193)](_0x7e2aee)||_0x7e2aee<0x0||_0x7e2aee>0x1))throw Error('Volume\x20slice\x20'+_0x2ecaf7['id']+_0x5cb307(0x2b9));return new Float32Array([_0xa3c24f,_0x2ecaf7[_0x5cb307(0x209)],_0x2ecaf7[_0x5cb307(0x251)]??0x1,0x0,..._0x1fd778]);}[_0x1d30f8(0x40c)](_0x49bde3,_0x16fb78){const _0xa9bcea=_0x1d30f8;let _0x124e8a=this['device'][_0xa9bcea(0x153)]({'label':'volume\x20slice\x20'+_0x49bde3['id'],'size':0x20,'usage':GPUBufferUsage[_0xa9bcea(0x25e)]|GPUBufferUsage[_0xa9bcea(0x41a)]});this['device'][_0xa9bcea(0x3d8)][_0xa9bcea(0x3ee)](_0x124e8a,0x0,_0x16fb78);let _0x541b2e=this['device']['createBindGroup']({'layout':this['layout'],'entries':[{'binding':0x0,'resource':{'buffer':_0x124e8a}}]});return this[_0xa9bcea(0x1b4)]+=0x1,{'id':_0x49bde3['id'],'depthMode':_0x49bde3[_0xa9bcea(0x274)],'buffer':_0x124e8a,'bindGroup':_0x541b2e,'values':_0x16fb78};}[_0x1d30f8(0x3ef)](_0x56f800,_0x2ef65d){const _0x65c8b1=_0x1d30f8;for(let _0x18a743=0x0;_0x18a743<_0x56f800[_0x65c8b1(0x29b)];_0x18a743+=0x1)if(_0x56f800[_0x18a743]!==_0x2ef65d[_0x18a743])return!0x1;return!0x0;}['destroyResources'](){const _0x29b8a4=_0x1d30f8;for(let _0x27c811 of this[_0x29b8a4(0x28c)])_0x27c811['buffer'][_0x29b8a4(0x377)]();this['resources']=[];}};const createStorageBuffer=(_0x5d8380,_0x53ad46,_0x1219ad)=>{const _0x384028=_0x1d30f8;let _0x1486de=_0x5d8380['createBuffer']({'label':_0x1219ad,'size':Math['max'](0x4,_0x53ad46[_0x384028(0x3c0)]),'usage':GPUBufferUsage['STORAGE']|GPUBufferUsage[_0x384028(0x41a)]});return _0x53ad46['byteLength']>0x0&&_0x5d8380[_0x384028(0x3d8)]['writeBuffer'](_0x1486de,0x0,_0x53ad46),_0x1486de;},validateStops$1=(_0x5d8a1d,_0x3ff515)=>{const _0x2dfc06=_0x1d30f8;if(_0x5d8a1d['length']===0x0||_0x3ff515[_0x2dfc06(0x29b)]===0x0)throw Error(_0x2dfc06(0x34c));for(let _0x717796=0x1;_0x717796<_0x5d8a1d[_0x2dfc06(0x29b)];_0x717796+=0x1)if(_0x5d8a1d[_0x717796][_0x2dfc06(0x288)]<_0x5d8a1d[_0x717796-0x1]['value'])throw Error(_0x2dfc06(0x3d7));for(let _0x4c303f=0x0;_0x4c303f<_0x3ff515[_0x2dfc06(0x29b)];_0x4c303f+=0x1){if(_0x3ff515[_0x4c303f][_0x2dfc06(0x251)]<0x0||_0x3ff515[_0x4c303f][_0x2dfc06(0x251)]>0x1)throw Error(_0x2dfc06(0x21c));if(_0x4c303f>0x0&&_0x3ff515[_0x4c303f]['value']<_0x3ff515[_0x4c303f-0x1][_0x2dfc06(0x288)])throw Error(_0x2dfc06(0x1bf));}};function _0x4af7(_0x37bb8a,_0x3e3ad0){const _0x19e9ad=_0x19e9();return _0x4af7=function(_0x4af7fb,_0x3f02e2){_0x4af7fb=_0x4af7fb-0xcb;let _0x2c0b8a=_0x19e9ad[_0x4af7fb];return _0x2c0b8a;},_0x4af7(_0x37bb8a,_0x3e3ad0);}function _0x19e9(){const _0x4249fe=['\x20with\x20one\x20sample\x20must\x20use\x20equal\x20endpoints.\x20','length','idle','maxZ','syncCamera','draw','volume-bounds','minimumDistance','vertexMain','initializationGeneration','writePageEntry','startX','opacityStops','volume\x20scene\x20bind\x20group','clientX','verticalScale\x20必须是大于\x200\x20的有限数。','Geographic\x20volume\x20normalization\x20must\x20be\x20a\x20positive\x20finite\x20distance.\x20地理体积归一化尺度必须是正有限距离。','centerEcef','clipMaximum','renderFrame','premultiplied','resolve','pointerleave','none','flushSliceState','Returned\x20volume\x20chunk\x20timeIndex\x20does\x20not\x20match\x20the\x20request.\x20返回体积分块的时间索引与请求不一致。','capacity','syncPreview','framesRemaining','yAxis','prepareBrickUpload','\x20plate\x20color\x20must\x20use\x20values\x20from\x20zero\x20through\x20one.\x20体积切面底板颜色必须位于零至一。','路线剖面\x20id\x20不能为空。','getAtlasTexture','0\x202px','atlasTextures','1366360RezrDb','slotIndex','getAttachments','translate(-50%,\x20-100%)','brickSortCount','initialized','WebGPU\x20slice\x20resources\x20are\x20unavailable.\x20WebGPU\x20切面资源不可用。','depthTexture','colorValuesBuffer','sort','WebGPU\x20volume\x20frame\x20capture\x20failed:\x20','opacityValuesBuffer','\x20的\x20path\x20包含非有限坐标。','rgba(','beginCameraInteraction','descriptors','setAxes','.\x20WebGPU\x20体积设备已丢失。','get','\x20必须是正整数。','size','readyPromise','volumePipeline','Mars3D\x20volume\x20shader\x20marker\x20is\x20missing\x20or\x20duplicated:\x20','abort','find','WebGPU\x20is\x20required\x20for\x20the\x20volume\x20scene\x20but\x20is\x20unavailable.\x20体积场景需要\x20WebGPU,但当前环境不可用。','getAxisResources','\x20noData\x20must\x20be\x20finite\x20or\x20NaN.\x20','axisHysteresisPixels','logicalIndex','residentBrickCount','cameraFrameCompensation','WebGPU\x20volume\x20atlas\x20texture\x20is\x20unavailable.\x20WebGPU\x20体积图集纹理不可用。','limits','beginLockedSliceDrag','firstChild','geographicTransform','\x20with\x20multiple\x20samples\x20must\x20have\x20a\x20non-zero\x20step.\x20','maximumUploadBatchBytes','gap','uploadedBrickCount','button','attachments','setRouteProfiles','pendingSliceSnapshot','\x20端点必须是有限数值。','frameIndex','5TbyVhQ','updateTransferResources','getCanvas','rejectPendingBrickUploads','\x20must\x20contain\x20position\x20and\x20RGBA\x20values\x20for\x20every\x20vertex.\x20场景网格顶点必须包含位置和\x20RGBA。','slotCountY','volume\x20scene\x20params','lastUsedFrame','configureModel','geometryBindGroup','volumeOptions','map','WebGPU\x20slice\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20切面绑定布局不可用。','catch','one','rebuildProfiles','getEffectiveQuality','Volume\x20Z\x20axis','notify','smooth','viewportHeight','fov','touch','left','target','\x20必须是大于\x200\x20的有限数。','\x20must\x20be\x20a\x20positive\x20integer.\x20体积分块\x20','相机宽高比必须大于\x200。','isInteracting','WebGPU\x20transfer\x20resources\x20are\x20unavailable.\x20WebGPU\x20传递函数资源不可用。','setPipeline','pushErrorScope','recordFrameInterval','read-only-storage','不支持的\x20hex\x20颜色格式:\x20','createShaderModule','brickWidth','aria-label','has','WebGPU\x20volume\x20renderer\x20is\x20not\x20ready\x20for\x20frame\x20capture.\x20WebGPU\x20体积渲染器尚不能读取帧。','maximumDistance','maximum','A\x20destroyed\x20volume\x20scene\x20cannot\x20capture\x20a\x20frame.\x20已销毁的体积场景不能读取帧。','verticalScale','handleFrameAvailable','WebGPU\x20volume\x20source\x20must\x20be\x20configured\x20before\x20uploading\x20bricks.\x20上传砖块前必须配置\x20WebGPU\x20体积数据源。','createCanvas','relative','createPipelines','encodeVolumePass','setProfiles','destroyed','onInteractionStart','bindFrameAvailableCallback','transferBindGroupLayout','orthographic','lost','autoFrameCount','slotCountX','requireRenderer','getCurrentTexture','handlePreRender','createTextNode','center','noData','join','interactionRenderScale','floor','ceil','updateLockedSlice','max','onSubmittedWorkDone','processBrickUploads','autoFrameIntervalTotal','loadBrick','transferBindGroup','external','volume\x20atlas\x20bind\x20group\x20layout','\x20\x20\x20\x20var\x20interval\x20=\x20intersectClipBox(nearModel,\x20direction);\x0a\x0a\x20\x20\x20\x20if\x20(scene.geographic0.x\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20shellInterval\x20=\x20intersectGeographicShell(nearModel,\x20direction);\x0a\x20\x20\x20\x20\x20\x20\x20\x20interval.minimum\x20=\x20max(interval.minimum,\x20shellInterval.minimum);\x0a\x20\x20\x20\x20\x20\x20\x20\x20interval.maximum\x20=\x20min(interval.maximum,\x20shellInterval.maximum);\x0a\x20\x20\x20\x20\x20\x20\x20\x20interval.valid\x20=\x20interval.valid\x20&&\x20shellInterval.valid\x20&&\x20interval.maximum\x20>=\x20interval.minimum;\x0a\x20\x20\x20\x20}','Mars3D\x20map\x20canvas\x20must\x20have\x20a\x20parent\x20element.\x20Mars3D\x20地图\x20Canvas\x20必须存在父元素。','Geographic\x20WGS84\x20volume\x20scenes\x20manage\x20their\x20own\x20model\x20transform.\x20WGS84\x20地理体积场景自行管理模型变换。','camera','fn\x20getPageIndex','positionWC','all','0.72','WebGPU\x20volume\x20memory\x20limits\x20must\x20be\x20positive.\x20WebGPU\x20体积显存限制必须大于零。','COPY_SRC','VERTEX','fovYDegrees','\x20must\x20contain\x20sixteen\x20finite\x20values.\x20','endInteraction','whiteSpace','bindGroup','Volume\x20color\x20and\x20opacity\x20stops\x20cannot\x20be\x20empty.\x20体积颜色和透明度色标不能为空。','colorStops\x20不能为空','\x20values\x20but\x20received\x20','clearPageEntry','some','requestDevice','markers','Volume\x20brick\x20halo\x20must\x20be\x20a\x20positive\x20integer.\x20体积分块\x20halo\x20必须是正整数。','float32x3','getDevice','abs','clipMinimum','sceneTrianglePipeline','路线剖面\x20','findAxisHit','frustum','visible','drawSlices','displayedCompensationFrame','screenAnchors','volume\x20raymarch\x20shader','includes','setAttribute','lockSlice','positionCartographic','592kNbHui','add','The\x20maximum\x20locked\x20slice\x20count\x20has\x20been\x20reached.\x20已达到最大锁定切面数量。','asin','bindSliceState','line-list','createTexture','touchAction','uploadPump','clientY','\x20无效。','getUploadStagingBuffer','append','inset','configureSource','trim','volume-axes','createView','destroy','opacityBuffer','RGB\x20颜色通道必须在\x200\x20~\x20255\x20之间','renderDirty','cachedAxes','struct\x20SceneParams\x20{\x0a\x20\x20\x20\x20viewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseViewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20modelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseModelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20cameraPosition:\x20vec4f,\x0a\x20\x20\x20\x20viewport:\x20vec4f,\x0a\x20\x20\x20\x20clipMinimum:\x20vec4f,\x0a\x20\x20\x20\x20clipMaximum:\x20vec4f,\x0a\x20\x20\x20\x20render:\x20vec4f,\x0a\x20\x20\x20\x20transfer:\x20vec4f,\x0a\x20\x20\x20\x20geographic0:\x20vec4f,\x0a\x20\x20\x20\x20geographic1:\x20vec4f,\x0a\x20\x20\x20\x20geographic2:\x20vec4f,\x0a}\x0a\x0astruct\x20VolumeParams\x20{\x0a\x20\x20\x20\x20dimensions:\x20vec4u,\x0a\x20\x20\x20\x20brickInterior:\x20vec4u,\x0a\x20\x20\x20\x20brickCount:\x20vec4u,\x0a\x20\x20\x20\x20atlasSlots:\x20vec4u,\x0a\x20\x20\x20\x20atlasDimensions:\x20vec4u,\x0a\x20\x20\x20\x20valueMeta:\x20vec4f,\x0a}\x0a\x0astruct\x20PageTable\x20{\x0a\x20\x20\x20\x20values:\x20array<vec4u>,\x0a}\x0a\x0astruct\x20FloatValues\x20{\x0a\x20\x20\x20\x20values:\x20array<f32>,\x0a}\x0a\x0astruct\x20Colors\x20{\x0a\x20\x20\x20\x20values:\x20array<vec4f>,\x0a}\x0a\x0astruct\x20VolumeSample\x20{\x0a\x20\x20\x20\x20value:\x20f32,\x0a\x20\x20\x20\x20valid:\x20bool,\x0a}\x0a\x0astruct\x20RayInterval\x20{\x0a\x20\x20\x20\x20minimum:\x20f32,\x0a\x20\x20\x20\x20maximum:\x20f32,\x0a\x20\x20\x20\x20valid:\x20bool,\x0a}\x0a\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20scene:\x20SceneParams;\x0a@group(0)\x20@binding(1)\x20var\x20sceneDepth:\x20texture_depth_2d;\x0a@group(1)\x20@binding(0)\x20var\x20volumeAtlas0:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(1)\x20var\x20volumeAtlas1:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(2)\x20var\x20volumeAtlas2:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(3)\x20var\x20volumeAtlas3:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(4)\x20var\x20volumeAtlas4:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(5)\x20var\x20volumeAtlas5:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(6)\x20var\x20volumeAtlas6:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(7)\x20var\x20volumeAtlas7:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(8)\x20var<storage,\x20read>\x20pageTable:\x20PageTable;\x0a@group(1)\x20@binding(9)\x20var<uniform>\x20volume:\x20VolumeParams;\x0a@group(2)\x20@binding(0)\x20var<storage,\x20read>\x20colorStopValues:\x20FloatValues;\x0a@group(2)\x20@binding(1)\x20var<storage,\x20read>\x20colorStopColors:\x20Colors;\x0a@group(2)\x20@binding(2)\x20var<storage,\x20read>\x20opacityStopValues:\x20FloatValues;\x0a@group(2)\x20@binding(3)\x20var<storage,\x20read>\x20opacityStopAlphas:\x20FloatValues;\x0a\x0afn\x20invalidVolumeSample()\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20return\x20VolumeSample(0.0,\x20false);\x0a}\x0a\x0afn\x20validVolumeSample(value:\x20f32)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20return\x20VolumeSample(value,\x20true);\x0a}\x0a\x0afn\x20transformPoint(matrix:\x20mat4x4f,\x20point:\x20vec3f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20let\x20transformed\x20=\x20matrix\x20*\x20vec4f(point,\x201.0);\x0a\x20\x20\x20\x20return\x20transformed.xyz\x20/\x20transformed.w;\x0a}\x0a\x0afn\x20reconstructWorldPosition(ndc:\x20vec3f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20return\x20transformPoint(scene.inverseViewProjection,\x20ndc);\x0a}\x0a\x0a//\x20地理模式将局部\x20ECEF\x20采样点反算为经纬高归一化坐标;代理盒仅限制射线范围,不决定体积形状。\x0a//\x20Geographic\x20mode\x20converts\x20each\x20local\x20ECEF\x20sample\x20back\x20to\x20normalized\x20longitude,\x20latitude,\x20and\x20altitude;\x20the\x20proxy\x20box\x20only\x20limits\x20the\x20ray\x20interval\x20and\x20does\x20not\x20define\x20the\x20volume\x20shape.\x0afn\x20worldToVolume(worldPosition:\x20vec3f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20if\x20(scene.geographic0.x\x20<\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20transformPoint(scene.inverseModelMatrix,\x20worldPosition);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20ecef\x20=\x20worldPosition\x20+\x20scene.geographic0.yzw;\x0a\x20\x20\x20\x20let\x20semiMajor\x20=\x20scene.geographic1.x;\x0a\x20\x20\x20\x20let\x20semiMinor\x20=\x20scene.geographic1.y;\x0a\x20\x20\x20\x20let\x20eccentricitySquared\x20=\x201.0\x20-\x20semiMinor\x20*\x20semiMinor\x20/\x20(semiMajor\x20*\x20semiMajor);\x0a\x20\x20\x20\x20let\x20secondEccentricitySquared\x20=\x20(semiMajor\x20*\x20semiMajor\x20-\x20semiMinor\x20*\x20semiMinor)\x20/\x20(semiMinor\x20*\x20semiMinor);\x0a\x20\x20\x20\x20let\x20horizontal\x20=\x20length(ecef.xy);\x0a\x20\x20\x20\x20let\x20theta\x20=\x20atan2(ecef.z\x20*\x20semiMajor,\x20horizontal\x20*\x20semiMinor);\x0a\x20\x20\x20\x20let\x20thetaSin\x20=\x20sin(theta);\x0a\x20\x20\x20\x20let\x20thetaCos\x20=\x20cos(theta);\x0a\x20\x20\x20\x20let\x20latitude\x20=\x20atan2(\x0a\x20\x20\x20\x20\x20\x20\x20\x20ecef.z\x20+\x20secondEccentricitySquared\x20*\x20semiMinor\x20*\x20thetaSin\x20*\x20thetaSin\x20*\x20thetaSin,\x0a\x20\x20\x20\x20\x20\x20\x20\x20horizontal\x20-\x20eccentricitySquared\x20*\x20semiMajor\x20*\x20thetaCos\x20*\x20thetaCos\x20*\x20thetaCos\x0a\x20\x20\x20\x20);\x0a\x20\x20\x20\x20let\x20latitudeSin\x20=\x20sin(latitude);\x0a\x20\x20\x20\x20let\x20primeVerticalRadius\x20=\x20semiMajor\x20/\x20sqrt(1.0\x20-\x20eccentricitySquared\x20*\x20latitudeSin\x20*\x20latitudeSin);\x0a\x20\x20\x20\x20let\x20height\x20=\x20horizontal\x20/\x20max(0.000001,\x20abs(cos(latitude)))\x20-\x20primeVerticalRadius;\x0a\x20\x20\x20\x20let\x20longitude\x20=\x20atan2(ecef.y,\x20ecef.x);\x0a\x20\x20\x20\x20return\x20vec3f(\x0a\x20\x20\x20\x20\x20\x20\x20\x20(longitude\x20-\x20scene.geographic1.z)\x20/\x20(scene.geographic1.w\x20-\x20scene.geographic1.z),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(height\x20-\x20scene.geographic2.z)\x20/\x20(scene.geographic2.w\x20-\x20scene.geographic2.z),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(latitude\x20-\x20scene.geographic2.x)\x20/\x20(scene.geographic2.y\x20-\x20scene.geographic2.x)\x0a\x20\x20\x20\x20);\x0a}\x0a\x0afn\x20proxyToVolume(proxyPosition:\x20vec3f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20if\x20(scene.geographic0.x\x20<\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20proxyPosition;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20worldToVolume(transformPoint(scene.modelMatrix,\x20proxyPosition));\x0a}\x0a\x0afn\x20isInsideVolume(position:\x20vec3f)\x20->\x20bool\x20{\x0a\x20\x20\x20\x20return\x20all(position\x20>=\x20scene.clipMinimum.xyz)\x20&&\x20all(position\x20<=\x20scene.clipMaximum.xyz);\x0a}\x0a\x0afn\x20intersectAxis(origin:\x20f32,\x20direction:\x20f32,\x20minimumValue:\x20f32,\x20maximumValue:\x20f32)\x20->\x20vec2f\x20{\x0a\x20\x20\x20\x20if\x20(abs(direction)\x20<\x200.000001)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(origin\x20<\x20minimumValue\x20||\x20origin\x20>\x20maximumValue)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec2f(1.0,\x20-1.0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec2f(-1e20,\x201e20);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20first\x20=\x20(minimumValue\x20-\x20origin)\x20/\x20direction;\x0a\x20\x20\x20\x20let\x20second\x20=\x20(maximumValue\x20-\x20origin)\x20/\x20direction;\x0a\x20\x20\x20\x20return\x20vec2f(min(first,\x20second),\x20max(first,\x20second));\x0a}\x0a\x0afn\x20intersectClipBox(origin:\x20vec3f,\x20direction:\x20vec3f)\x20->\x20RayInterval\x20{\x0a\x20\x20\x20\x20let\x20x\x20=\x20intersectAxis(origin.x,\x20direction.x,\x20scene.clipMinimum.x,\x20scene.clipMaximum.x);\x0a\x20\x20\x20\x20let\x20y\x20=\x20intersectAxis(origin.y,\x20direction.y,\x20scene.clipMinimum.y,\x20scene.clipMaximum.y);\x0a\x20\x20\x20\x20let\x20z\x20=\x20intersectAxis(origin.z,\x20direction.z,\x20scene.clipMinimum.z,\x20scene.clipMaximum.z);\x0a\x20\x20\x20\x20let\x20minimumDistance\x20=\x20max(max(x.x,\x20y.x),\x20z.x);\x0a\x20\x20\x20\x20let\x20maximumDistance\x20=\x20min(min(x.y,\x20y.y),\x20z.y);\x0a\x20\x20\x20\x20return\x20RayInterval(max(0.0,\x20minimumDistance),\x20maximumDistance,\x20maximumDistance\x20>=\x20max(0.0,\x20minimumDistance));\x0a}\x0a\x0afn\x20getPageIndex(brick:\x20vec3u)\x20->\x20u32\x20{\x0a\x20\x20\x20\x20return\x20brick.x\x20+\x20brick.y\x20*\x20volume.brickCount.x\x20+\x20brick.z\x20*\x20volume.brickCount.x\x20*\x20volume.brickCount.y;\x0a}\x0a\x0afn\x20getSlotCoordinate(slotIndex:\x20u32)\x20->\x20vec3u\x20{\x0a\x20\x20\x20\x20let\x20layerSize\x20=\x20volume.atlasSlots.x\x20*\x20volume.atlasSlots.y;\x0a\x20\x20\x20\x20let\x20z\x20=\x20slotIndex\x20/\x20layerSize;\x0a\x20\x20\x20\x20let\x20remainder\x20=\x20slotIndex\x20-\x20z\x20*\x20layerSize;\x0a\x20\x20\x20\x20let\x20y\x20=\x20remainder\x20/\x20volume.atlasSlots.x;\x0a\x20\x20\x20\x20let\x20x\x20=\x20remainder\x20-\x20y\x20*\x20volume.atlasSlots.x;\x0a\x20\x20\x20\x20return\x20vec3u(x,\x20y,\x20z);\x0a}\x0a\x0afn\x20loadAtlasValue(atlasIndex:\x20u32,\x20coordinate:\x20vec3i)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x200u)\x20{\x20return\x20textureLoad(volumeAtlas0,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x201u)\x20{\x20return\x20textureLoad(volumeAtlas1,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x202u)\x20{\x20return\x20textureLoad(volumeAtlas2,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x203u)\x20{\x20return\x20textureLoad(volumeAtlas3,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x204u)\x20{\x20return\x20textureLoad(volumeAtlas4,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x205u)\x20{\x20return\x20textureLoad(volumeAtlas5,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x206u)\x20{\x20return\x20textureLoad(volumeAtlas6,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20return\x20textureLoad(volumeAtlas7,\x20coordinate,\x200).r;\x0a}\x0a\x0afn\x20loadAtlasVoxel(voxel:\x20vec3i,\x20owningBrick:\x20vec3u)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20let\x20page\x20=\x20pageTable.values[getPageIndex(owningBrick)];\x0a\x0a\x20\x20\x20\x20if\x20(page.x\x20==\x200u\x20||\x20page.z\x20==\x200u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20slot\x20=\x20getSlotCoordinate(page.x\x20-\x201u);\x0a\x20\x20\x20\x20let\x20physicalBrick\x20=\x20volume.brickInterior.xyz\x20+\x20vec3u(2u);\x0a\x20\x20\x20\x20let\x20brickStart\x20=\x20vec3i(owningBrick\x20*\x20volume.brickInterior.xyz);\x0a\x20\x20\x20\x20let\x20local\x20=\x20voxel\x20-\x20brickStart\x20+\x20vec3i(1);\x0a\x20\x20\x20\x20let\x20atlasCoordinate\x20=\x20vec3i(slot\x20*\x20physicalBrick)\x20+\x20local;\x0a\x20\x20\x20\x20let\x20value\x20=\x20loadAtlasValue(page.w,\x20atlasCoordinate);\x0a\x0a\x20\x20\x20\x20if\x20(value\x20!=\x20value\x20||\x20(volume.valueMeta.y\x20>\x200.5\x20&&\x20value\x20==\x20volume.valueMeta.x))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20validVolumeSample(value);\x0a}\x0a\x0afn\x20sampleVolume(modelPosition:\x20vec3f)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20let\x20normalized\x20=\x20clamp(modelPosition,\x20vec3f(0.0),\x20vec3f(1.0));\x0a\x20\x20\x20\x20let\x20voxel\x20=\x20normalized\x20*\x20vec3f(volume.dimensions.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20baseVoxel\x20=\x20vec3i(floor(voxel));\x0a\x20\x20\x20\x20let\x20maximumVoxel\x20=\x20vec3i(volume.dimensions.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20nextVoxel\x20=\x20min(baseVoxel\x20+\x20vec3i(1),\x20maximumVoxel);\x0a\x20\x20\x20\x20let\x20fraction\x20=\x20voxel\x20-\x20vec3f(baseVoxel);\x0a\x20\x20\x20\x20let\x20owningBrick\x20=\x20min(vec3u(max(baseVoxel,\x20vec3i(0)))\x20/\x20volume.brickInterior.xyz,\x20volume.brickCount.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20c000\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20baseVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c100\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20baseVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c010\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20nextVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c110\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20nextVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c001\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20baseVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c101\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20baseVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c011\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20nextVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c111\x20=\x20loadAtlasVoxel(nextVoxel,\x20owningBrick);\x0a\x0a\x20\x20\x20\x20if\x20(!c000.valid\x20||\x20!c100.valid\x20||\x20!c010.valid\x20||\x20!c110.valid\x20||\x20!c001.valid\x20||\x20!c101.valid\x20||\x20!c011.valid\x20||\x20!c111.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20bottom0\x20=\x20mix(c000.value,\x20c100.value,\x20fraction.x);\x0a\x20\x20\x20\x20let\x20bottom1\x20=\x20mix(c010.value,\x20c110.value,\x20fraction.x);\x0a\x20\x20\x20\x20let\x20top0\x20=\x20mix(c001.value,\x20c101.value,\x20fraction.x);\x0a\x20\x20\x20\x20let\x20top1\x20=\x20mix(c011.value,\x20c111.value,\x20fraction.x);\x0a\x20\x20\x20\x20return\x20validVolumeSample(mix(mix(bottom0,\x20bottom1,\x20fraction.y),\x20mix(top0,\x20top1,\x20fraction.y),\x20fraction.z));\x0a}\x0a\x0a//\x20体积分步只读取当前最近体素,避免对最终透明的样本执行八次纹理读取;高精度切面仍使用独立的三线性采样。\x0a//\x20Raymarch\x20steps\x20read\x20the\x20nearest\x20voxel\x20so\x20transparent\x20samples\x20avoid\x20eight\x20texture\x20loads;\x20high-detail\x20slices\x20keep\x20their\x20separate\x20trilinear\x20sampling.\x0afn\x20sampleVolumeNearest(modelPosition:\x20vec3f)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20let\x20normalized\x20=\x20clamp(modelPosition,\x20vec3f(0.0),\x20vec3f(1.0));\x0a\x20\x20\x20\x20let\x20maximumVoxel\x20=\x20volume.dimensions.xyz\x20-\x20vec3u(1u);\x0a\x20\x20\x20\x20let\x20voxel\x20=\x20vec3i(round(normalized\x20*\x20vec3f(maximumVoxel)));\x0a\x20\x20\x20\x20let\x20owningBrick\x20=\x20min(vec3u(max(voxel,\x20vec3i(0)))\x20/\x20volume.brickInterior.xyz,\x20volume.brickCount.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20return\x20loadAtlasVoxel(voxel,\x20owningBrick);\x0a}\x0a\x0afn\x20sampleColor(value:\x20f32)\x20->\x20vec4f\x20{\x0a\x20\x20\x20\x20let\x20count\x20=\x20u32(scene.transfer.x);\x0a\x0a\x20\x20\x20\x20if\x20(count\x20==\x201u\x20||\x20value\x20<=\x20colorStopValues.values[0u])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20colorStopColors.values[0u];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20+\x201u\x20<\x20count;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20start\x20=\x20colorStopValues.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20end\x20=\x20colorStopValues.values[index\x20+\x201u];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20<\x20end)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(scene.transfer.w\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20colorStopColors.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20ratio\x20=\x20clamp((value\x20-\x20start)\x20/\x20max(end\x20-\x20start,\x200.000001),\x200.0,\x201.0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20mix(colorStopColors.values[index],\x20colorStopColors.values[index\x20+\x201u],\x20ratio);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20colorStopColors.values[count\x20-\x201u];\x0a}\x0a\x0afn\x20sampleOpacity(value:\x20f32)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20let\x20count\x20=\x20u32(scene.transfer.y);\x0a\x0a\x20\x20\x20\x20if\x20(count\x20==\x201u\x20||\x20value\x20<=\x20opacityStopValues.values[0u])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20opacityStopAlphas.values[0u];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20+\x201u\x20<\x20count;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20start\x20=\x20opacityStopValues.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20end\x20=\x20opacityStopValues.values[index\x20+\x201u];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20<\x20end)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(scene.transfer.w\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20opacityStopAlphas.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20ratio\x20=\x20clamp((value\x20-\x20start)\x20/\x20max(end\x20-\x20start,\x200.000001),\x200.0,\x201.0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20mix(opacityStopAlphas.values[index],\x20opacityStopAlphas.values[index\x20+\x201u],\x20ratio);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20opacityStopAlphas.values[count\x20-\x201u];\x0a}\x0a\x0afn\x20nextBrickAxisDistance(position:\x20f32,\x20direction:\x20f32,\x20minimumValue:\x20f32,\x20maximumValue:\x20f32)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20if\x20(direction\x20>\x200.000001)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20max(scene.render.w,\x20(maximumValue\x20-\x20position)\x20/\x20direction\x20+\x20scene.render.w\x20*\x200.25);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(direction\x20<\x20-0.000001)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20max(scene.render.w,\x20(minimumValue\x20-\x20position)\x20/\x20direction\x20+\x20scene.render.w\x20*\x200.25);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x201e20;\x0a}\x0a\x0afn\x20getEmptyBrickSkipDistance(position:\x20vec3f,\x20direction:\x20vec3f)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20let\x20normalized\x20=\x20clamp(position,\x20vec3f(0.0),\x20vec3f(1.0));\x0a\x20\x20\x20\x20let\x20maximumVoxel\x20=\x20volume.dimensions.xyz\x20-\x20vec3u(1u);\x0a\x20\x20\x20\x20let\x20safeMaximumVoxel\x20=\x20max(maximumVoxel,\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20voxel\x20=\x20vec3u(floor(normalized\x20*\x20vec3f(maximumVoxel)));\x0a\x20\x20\x20\x20let\x20brick\x20=\x20min(voxel\x20/\x20volume.brickInterior.xyz,\x20volume.brickCount.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20page\x20=\x20pageTable.values[getPageIndex(brick)];\x0a\x0a\x20\x20\x20\x20if\x20(page.x\x20!=\x200u\x20&&\x20page.z\x20!=\x200u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x200.0;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20minimumPosition\x20=\x20vec3f(brick\x20*\x20volume.brickInterior.xyz)\x20/\x20vec3f(safeMaximumVoxel);\x0a\x20\x20\x20\x20let\x20maximumPosition\x20=\x20vec3f(min((brick\x20+\x20vec3u(1u))\x20*\x20volume.brickInterior.xyz,\x20maximumVoxel))\x20/\x20vec3f(safeMaximumVoxel);\x0a\x20\x20\x20\x20return\x20min(\x0a\x20\x20\x20\x20\x20\x20\x20\x20nextBrickAxisDistance(normalized.x,\x20direction.x,\x20minimumPosition.x,\x20maximumPosition.x),\x0a\x20\x20\x20\x20\x20\x20\x20\x20min(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20nextBrickAxisDistance(normalized.y,\x20direction.y,\x20minimumPosition.y,\x20maximumPosition.y),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20nextBrickAxisDistance(normalized.z,\x20direction.z,\x20minimumPosition.z,\x20maximumPosition.z)\x0a\x20\x20\x20\x20\x20\x20\x20\x20)\x0a\x20\x20\x20\x20);\x0a}\x0a\x0afn\x20getDepthDistance(pixel:\x20vec2i,\x20ndcXY:\x20vec2f,\x20rayOrigin:\x20vec3f,\x20rayDirection:\x20vec3f)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20let\x20depth\x20=\x20textureLoad(sceneDepth,\x20pixel,\x200);\x0a\x0a\x20\x20\x20\x20if\x20(depth\x20>=\x201.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x201e20;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20depthWorld\x20=\x20reconstructWorldPosition(vec3f(ndcXY,\x20depth));\x0a\x20\x20\x20\x20let\x20depthModel\x20=\x20transformPoint(scene.inverseModelMatrix,\x20depthWorld);\x0a\x20\x20\x20\x20return\x20max(0.0,\x20dot(depthModel\x20-\x20rayOrigin,\x20rayDirection));\x0a}\x0a\x0afn\x20raymarchComposite(origin:\x20vec3f,\x20direction:\x20vec3f,\x20interval:\x20RayInterval)\x20->\x20vec4f\x20{\x0a\x20\x20\x20\x20var\x20accumulated\x20=\x20vec4f(0.0);\x0a\x20\x20\x20\x20var\x20distance\x20=\x20interval.minimum;\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20<\x204096u\x20&&\x20distance\x20<=\x20interval.maximum\x20&&\x20accumulated.a\x20<\x200.985;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20proxyPosition\x20=\x20origin\x20+\x20direction\x20*\x20distance;\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20skipDistance\x20=\x20select(0.0,\x20getEmptyBrickSkipDistance(proxyPosition,\x20direction),\x20scene.geographic0.x\x20<\x200.5);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(skipDistance\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20skipDistance;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20volumePosition\x20=\x20proxyToVolume(proxyPosition);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!isInsideVolume(volumePosition))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20scene.render.w;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20sample\x20=\x20sampleVolumeNearest(volumePosition);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(sample.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20sampleAlpha\x20=\x20sampleOpacity(sample.value);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(sampleAlpha\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20color\x20=\x20sampleColor(sample.value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20alpha\x20=\x201.0\x20-\x20exp(-sampleAlpha\x20*\x20scene.render.z\x20*\x20scene.render.w);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20contribution\x20=\x20(1.0\x20-\x20accumulated.a)\x20*\x20alpha;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20accumulated\x20=\x20vec4f(accumulated.rgb\x20+\x20color.rgb\x20*\x20contribution,\x20accumulated.a\x20+\x20contribution);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20scene.render.w;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20finalAlpha\x20=\x20accumulated.a\x20*\x20scene.render.y\x20*\x20scene.transfer.z;\x0a\x20\x20\x20\x20return\x20vec4f(accumulated.rgb\x20*\x20scene.render.y\x20*\x20scene.transfer.z,\x20finalAlpha);\x0a}\x0a\x0afn\x20raymarchMaximum(origin:\x20vec3f,\x20direction:\x20vec3f,\x20interval:\x20RayInterval)\x20->\x20vec4f\x20{\x0a\x20\x20\x20\x20var\x20maximumValue\x20=\x20-1e30;\x0a\x20\x20\x20\x20var\x20found\x20=\x20false;\x0a\x20\x20\x20\x20var\x20distance\x20=\x20interval.minimum;\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20<\x204096u\x20&&\x20distance\x20<=\x20interval.maximum;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20proxyPosition\x20=\x20origin\x20+\x20direction\x20*\x20distance;\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20skipDistance\x20=\x20select(0.0,\x20getEmptyBrickSkipDistance(proxyPosition,\x20direction),\x20scene.geographic0.x\x20<\x200.5);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(skipDistance\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20skipDistance;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20volumePosition\x20=\x20proxyToVolume(proxyPosition);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!isInsideVolume(volumePosition))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20scene.render.w;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20sample\x20=\x20sampleVolumeNearest(volumePosition);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(sample.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20maximumValue\x20=\x20max(maximumValue,\x20sample.value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20found\x20=\x20true;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20scene.render.w;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(!found)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec4f(0.0);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20color\x20=\x20sampleColor(maximumValue);\x0a\x20\x20\x20\x20let\x20alpha\x20=\x20sampleOpacity(maximumValue)\x20*\x20scene.render.y\x20*\x20scene.transfer.z;\x0a\x20\x20\x20\x20return\x20vec4f(color.rgb\x20*\x20alpha,\x20alpha);\x0a}\x0a\x0a@vertex\x0afn\x20vertexMain(@builtin(vertex_index)\x20vertexIndex:\x20u32)\x20->\x20@builtin(position)\x20vec4f\x20{\x0a\x20\x20\x20\x20let\x20x\x20=\x20f32(i32(vertexIndex\x20&\x201u)\x20*\x204\x20-\x201);\x0a\x20\x20\x20\x20let\x20y\x20=\x20f32(i32(vertexIndex\x20>>\x201u)\x20*\x204\x20-\x201);\x0a\x20\x20\x20\x20return\x20vec4f(x,\x20y,\x200.0,\x201.0);\x0a}\x0a\x0a@fragment\x0afn\x20fragmentMain(@builtin(position)\x20fragmentPosition:\x20vec4f)\x20->\x20@location(0)\x20vec4f\x20{\x0a\x20\x20\x20\x20let\x20ndcXY\x20=\x20vec2f(fragmentPosition.x\x20/\x20scene.viewport.x\x20*\x202.0\x20-\x201.0,\x201.0\x20-\x20fragmentPosition.y\x20/\x20scene.viewport.y\x20*\x202.0);\x0a\x20\x20\x20\x20let\x20nearWorld\x20=\x20reconstructWorldPosition(vec3f(ndcXY,\x200.0));\x0a\x20\x20\x20\x20let\x20farWorld\x20=\x20reconstructWorldPosition(vec3f(ndcXY,\x201.0));\x0a\x20\x20\x20\x20let\x20nearModel\x20=\x20transformPoint(scene.inverseModelMatrix,\x20nearWorld);\x0a\x20\x20\x20\x20let\x20farModel\x20=\x20transformPoint(scene.inverseModelMatrix,\x20farWorld);\x0a\x20\x20\x20\x20let\x20direction\x20=\x20normalize(farModel\x20-\x20nearModel);\x0a\x20\x20\x20\x20var\x20interval\x20=\x20intersectClipBox(nearModel,\x20direction);\x0a\x0a\x20\x20\x20\x20if\x20(!interval.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20discard;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20interval.maximum\x20=\x20min(interval.maximum,\x20getDepthDistance(vec2i(fragmentPosition.xy),\x20ndcXY,\x20nearModel,\x20direction));\x0a\x0a\x20\x20\x20\x20if\x20(interval.maximum\x20<\x20interval.minimum)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20discard;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(scene.render.x\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20raymarchMaximum(nearModel,\x20direction,\x20interval);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20raymarchComposite(nearModel,\x20direction,\x20interval);\x0a}\x0a','then','currentPreview','locked','flex','generation','sqrt','lastSubmittedFrameTimestamp','near','volume\x20transfer\x20bind\x20group\x20layout','gpuBytes','error','BaseLayer','READ','setVertexBuffer','requestAdapter','\x0afn\x20intersectEllipsoid(origin:\x20vec3f,\x20direction:\x20vec3f,\x20semiMajor:\x20f32,\x20semiMinor:\x20f32)\x20->\x20vec2f\x20{\x0a\x20\x20\x20\x20let\x20inverseRadiiSquared\x20=\x20vec3f(\x0a\x20\x20\x20\x20\x20\x20\x20\x201.0\x20/\x20(semiMajor\x20*\x20semiMajor),\x0a\x20\x20\x20\x20\x20\x20\x20\x201.0\x20/\x20(semiMajor\x20*\x20semiMajor),\x0a\x20\x20\x20\x20\x20\x20\x20\x201.0\x20/\x20(semiMinor\x20*\x20semiMinor)\x0a\x20\x20\x20\x20);\x0a\x20\x20\x20\x20let\x20coefficientA\x20=\x20dot(direction\x20*\x20direction,\x20inverseRadiiSquared);\x0a\x20\x20\x20\x20let\x20coefficientB\x20=\x202.0\x20*\x20dot(origin\x20*\x20direction,\x20inverseRadiiSquared);\x0a\x20\x20\x20\x20let\x20coefficientC\x20=\x20dot(origin\x20*\x20origin,\x20inverseRadiiSquared)\x20-\x201.0;\x0a\x20\x20\x20\x20let\x20discriminant\x20=\x20coefficientB\x20*\x20coefficientB\x20-\x204.0\x20*\x20coefficientA\x20*\x20coefficientC;\x0a\x0a\x20\x20\x20\x20if\x20(discriminant\x20<\x200.0\x20||\x20coefficientA\x20<=\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec2f(1.0,\x20-1.0);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20root\x20=\x20sqrt(discriminant);\x0a\x20\x20\x20\x20let\x20inverseDenominator\x20=\x200.5\x20/\x20coefficientA;\x0a\x20\x20\x20\x20let\x20first\x20=\x20(-coefficientB\x20-\x20root)\x20*\x20inverseDenominator;\x0a\x20\x20\x20\x20let\x20second\x20=\x20(-coefficientB\x20+\x20root)\x20*\x20inverseDenominator;\x0a\x20\x20\x20\x20return\x20vec2f(min(first,\x20second),\x20max(first,\x20second));\x0a}\x0a\x0afn\x20intersectGeographicShell(origin:\x20vec3f,\x20direction:\x20vec3f)\x20->\x20RayInterval\x20{\x0a\x20\x20\x20\x20let\x20worldOrigin\x20=\x20transformPoint(scene.modelMatrix,\x20origin)\x20+\x20scene.geographic0.yzw;\x0a\x20\x20\x20\x20let\x20worldDirection\x20=\x20transformPoint(scene.modelMatrix,\x20origin\x20+\x20direction)\x20-\x20transformPoint(scene.modelMatrix,\x20origin);\x0a\x20\x20\x20\x20let\x20minimumHeight\x20=\x20min(scene.geographic2.z,\x20scene.geographic2.w);\x0a\x20\x20\x20\x20let\x20maximumHeight\x20=\x20max(scene.geographic2.z,\x20scene.geographic2.w);\x0a\x20\x20\x20\x20let\x20outer\x20=\x20intersectEllipsoid(worldOrigin,\x20worldDirection,\x20scene.geographic1.x\x20+\x20maximumHeight,\x20scene.geographic1.y\x20+\x20maximumHeight);\x0a\x0a\x20\x20\x20\x20if\x20(outer.y\x20<\x20max(0.0,\x20outer.x))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20RayInterval(1.0,\x20-1.0,\x20false);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20var\x20minimumDistance\x20=\x20max(0.0,\x20outer.x);\x0a\x20\x20\x20\x20var\x20maximumDistance\x20=\x20outer.y;\x0a\x20\x20\x20\x20let\x20inner\x20=\x20intersectEllipsoid(worldOrigin,\x20worldDirection,\x20scene.geographic1.x\x20+\x20minimumHeight,\x20scene.geographic1.y\x20+\x20minimumHeight);\x0a\x0a\x20\x20\x20\x20if\x20(inner.y\x20>=\x20max(0.0,\x20inner.x))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(inner.x\x20>\x20minimumDistance)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20maximumDistance\x20=\x20min(maximumDistance,\x20inner.x);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(inner.y\x20>\x20minimumDistance)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20minimumDistance\x20=\x20max(minimumDistance,\x20inner.y);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20RayInterval(minimumDistance,\x20maximumDistance,\x20maximumDistance\x20>=\x20minimumDistance);\x0a}\x0a\x0afn\x20getPageIndex','handlePointerDown','minimumPitch','sourceGeneration','\x20is\x20invalid:\x20','logicalBrickCount','cameraEndTimer','cartesian','timeIndex','A\x20destroyed\x20WebGPU\x20volume\x20renderer\x20cannot\x20be\x20initialized\x20again.\x20已销毁的\x20WebGPU\x20体积渲染器不能再次初始化。','encodeScenePass','Volume\x20timeCount','cacheBrickUpload','Volume\x20chunk\x20requires\x20','getPreferredCanvasFormat','Mars3D\x20volume\x20layer\x20is\x20not\x20attached\x20to\x20a\x20map.\x20Mars3D\x20体积层尚未关联地图。','handleResize','9OFtLCF','shape','不支持的颜色格式:\x20','colorBuffer','uploadStagingBufferSize','_mountedHook','backend','cameraState','volume\x20geometry\x20bind\x20group','cameraPosition','zIndex','透视相机参数无效。','createElement','The\x20current\x20WebGPU\x20volume\x20atlas\x20requires\x20halo:\x201.\x20当前\x20WebGPU\x20体积图集要求\x20halo\x20为\x201。','bindControls','lifecycleState','coordinate','requestFramesImmediately','getFormat','coordinateSystem','function','directionWC','pointermove','isInteger','2980lTkjKH','onError','个色标范围的\x20min\x20必须小于\x20max','Volume\x20revision\x20must\x20be\x20a\x20non-negative\x20integer.\x20体积\x20revision\x20必须是非负整数。','切面轴采样数必须是正整数。','createRenderPipeline','drawMeshes','Returned\x20volume\x20chunk\x20dimensions\x20do\x20not\x20match\x20its\x20range.\x20返回体积分块尺寸与范围不一致。','depthView','indices','destroyResources','byteLength','less','lastFrameTimeMilliseconds','getBoundingClientRect','depth','wgs84','getTransferResources','anchorDistance','sourceYStart','showDebugGeometry','activePointer','WebGPU\x20volume\x20canvas\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20Canvas\x20尚未初始化。','volume\x20brick\x20upload\x20batch\x20flush','clientHeight','levelCount','managed','message','getEffectiveRenderScale','from','unconfigure','isNaN','residentByLogicalIndex','正交相机高度必须大于\x200。','Volume\x20color\x20stops\x20must\x20be\x20sorted\x20by\x20value.\x20体积颜色色标必须按数值升序排列。','queue','memoryTargetBytes','cachedSlices','desiredKeys','one-minus-src-alpha','createLockedMarker','remove','hitTolerance','clipBox','destroyBuffers','snapshot','WebGPU\x20volume\x20dimensions\x20must\x20be\x20positive\x20integers.\x20WebGPU\x20体积尺寸必须是正整数。','round','centerEcefScaled','onInteractionEnd','overlayContainer','slicePlateColor','\x20is\x20duplicated.\x20体积切面\x20ID\x20重复。','WebGPU\x20volume\x20atlas\x20is\x20not\x20configured.\x20WebGPU\x20体积图集尚未配置。','fovy','tan','\x20的\x20values\x20长度与\x20path、heights\x20不匹配。','writeBuffer','valuesEqual','Count','fill','requestBrickSchedule','axis','finally','webgpu','\x20包含多个采样点时步长不能为零。','WebGPU\x20scene\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20场景绑定布局不可用。','createCurrentCompensationFrame','longitudeRadians','vertexCount','atlasCapacity','frameAvailableCallback','colorStopCount','getFrame','Volume\x20brick\x20coordinate\x20is\x20out\x20of\x20range.\x20体积分块坐标越界。','startsWith','aspect','atan2','normalizationMeters','rgb(','xStart','brickScheduleDirty','encodeOverlayPass','initializing','distance','div','volumeBindGroup','createResource','sceneDepthView','push','\x20的\x20opacity\x20必须位于\x200\x20到\x201。','alignItems','inverseModelMatrix','devicePixelRatio','sliceState','interactionElement','style','brickHeight','rotateSpeed','levelStart','getContext','COPY_DST','balanced','getPageTableBuffer','layout','composite','.\x20创建\x20WebGPU\x20体积管线失败。','chunk','hitTolerancePixels','STORAGE_BINDING','clientWidth','requestRender','_addedHook','mode','volume\x20scene\x20frame','removeEventListener','WebGPU\x20volume\x20atlas\x20layout\x20is\x20unavailable.\x20WebGPU\x20体积图集布局不可用。','WebGPU\x20volume\x20scene\x20dimensions\x20must\x20be\x20positive\x20integers.\x20WebGPU\x20体积场景尺寸必须是正整数。','loadedKeys','always-visible','getSliceBindGroupLayout','bytesPerRow','setProjectionType','min','.\x20体积砖块数据长度不正确。','colorStops','sceneBindGroupLayout','statistics','inherit','atlasLayout','atlas','volume\x20raymarch\x20pass','delete','.\x20体积时间索引越界。','getBindGroupLayout','Volume','fovYRadians','getAtlas','count','colorMode','mars3d\x20volume\x20shell\x20raymarch\x20shader','plateColor','scene','sceneParamsBuffer','clearAtlasTexture','upload','volume\x20color\x20stop\x20values','container','densityScale','scheduleUploadPump','切面深度模式无效\x20/\x20Slice\x20depth\x20mode\x20is\x20invalid','不支持的\x20rgb\x20颜色格式:\x20','BYTES_PER_ELEMENT','volumeParamsBuffer','triangle-list','createPipelineLayout','preview','store','transform','key','pointercancel','residentBySlotIndex','xAxis','sliceBindGroupLayout','countX','subscribe','matrix(','format','configureSourceResources','minX','overlaySlicePipeline','inverseViewProjection','WebGPU\x20axis\x20resources\x20are\x20unavailable.\x20WebGPU\x20轴线资源不可用。','top','sceneBindGroup','onSliceError','unsubscribe','geometryBindGroupLayout','renderScale','lockedSlices','previousAxis','transferResources','pendingKeys','bind','viewportWidth','pixelRatioCap','\x20must\x20be\x20a\x20positive\x20finite\x20number.\x20','volume\x20always\x20visible\x20pass','extent','finish','setAspect','handlePointerUp','volumeCamera','watchDeviceLost','handlePointerMove','viewProjectionMatrix','modelMatrix','submittedFrameCount','verticalScale\x20must\x20be\x20a\x20positive\x20finite\x20value.\x20verticalScale\x20必须是大于\x200\x20的有限数。','replace','zoomSpeed','projection','beginInteraction','WebGPU\x20scene\x20attachments\x20are\x20unavailable.\x20WebGPU\x20场景附件不可用。','Failed\x20to\x20acquire\x20a\x20WebGPU\x20adapter\x20for\x20the\x20volume\x20scene.\x20无法为体积场景获取\x20WebGPU\x20adapter。','cachedProfiles','positionMarker','activeInteractions','wheel','Volume\x20valueScale\x20must\x20be\x20finite.\x20体积\x20valueScale\x20必须是有限数值。','getVolumeBindGroupLayout','preventDefault','setFrameAvailableCallback','finishCameraInteraction','cachedBricks','show','maxBufferSize','unmap','Failed\x20to\x20create\x20a\x20WebGPU\x20canvas\x20context\x20for\x20the\x20volume\x20scene.\x20无法为体积场景创建\x20WebGPU\x20Canvas\x20上下文。','sceneLinePipeline','pointerId','renderMode','clear','revision','popErrorScope','axisHysteresis','maxY','hideAllMarkers','prepared','profileResources','writeVolumeParams','getProfileResources','sin','toUpperCase','uploadBrick','updatePreview','\x20requires\x20','subarray','autoQuality','5322CDsmsr','\x20axis\x20must\x20contain\x20two\x20different\x20finite\x20endpoints.\x20','WebGPU\x20volume\x20context\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20context\x20尚未初始化。','hasPointerCapture','end','pointerup','occupied','struct\x20SceneParams\x20{\x0a\x20\x20\x20\x20viewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseViewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20modelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseModelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20cameraPosition:\x20vec4f,\x0a\x20\x20\x20\x20viewport:\x20vec4f,\x0a\x20\x20\x20\x20clipMinimum:\x20vec4f,\x0a\x20\x20\x20\x20clipMaximum:\x20vec4f,\x0a\x20\x20\x20\x20render:\x20vec4f,\x0a\x20\x20\x20\x20transfer:\x20vec4f,\x0a\x20\x20\x20\x20geographic0:\x20vec4f,\x0a\x20\x20\x20\x20geographic1:\x20vec4f,\x0a\x20\x20\x20\x20geographic2:\x20vec4f,\x0a}\x0a\x0astruct\x20VertexOutput\x20{\x0a\x20\x20\x20\x20@builtin(position)\x20position:\x20vec4f,\x0a\x20\x20\x20\x20@location(0)\x20color:\x20vec4f,\x0a}\x0a\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20scene:\x20SceneParams;\x0a\x0afn\x20transformScenePosition(position:\x20vec3f)\x20->\x20vec4f\x20{\x0a\x20\x20\x20\x20if\x20(scene.geographic0.x\x20<\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20scene.viewProjection\x20*\x20scene.modelMatrix\x20*\x20vec4f(position,\x201.0);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20longitude\x20=\x20mix(scene.geographic1.z,\x20scene.geographic1.w,\x20position.x);\x0a\x20\x20\x20\x20let\x20latitude\x20=\x20mix(scene.geographic2.x,\x20scene.geographic2.y,\x20position.z);\x0a\x20\x20\x20\x20let\x20height\x20=\x20mix(scene.geographic2.z,\x20scene.geographic2.w,\x20position.y);\x0a\x20\x20\x20\x20let\x20latitudeSin\x20=\x20sin(latitude);\x0a\x20\x20\x20\x20let\x20latitudeCos\x20=\x20cos(latitude);\x0a\x20\x20\x20\x20let\x20semiMajor\x20=\x20scene.geographic1.x;\x0a\x20\x20\x20\x20let\x20semiMinor\x20=\x20scene.geographic1.y;\x0a\x20\x20\x20\x20let\x20eccentricitySquared\x20=\x201.0\x20-\x20semiMinor\x20*\x20semiMinor\x20/\x20(semiMajor\x20*\x20semiMajor);\x0a\x20\x20\x20\x20let\x20primeVerticalRadius\x20=\x20semiMajor\x20/\x20sqrt(1.0\x20-\x20eccentricitySquared\x20*\x20latitudeSin\x20*\x20latitudeSin);\x0a\x20\x20\x20\x20let\x20ecef\x20=\x20vec3f(\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20+\x20height)\x20*\x20latitudeCos\x20*\x20cos(longitude),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20+\x20height)\x20*\x20latitudeCos\x20*\x20sin(longitude),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20*\x20(1.0\x20-\x20eccentricitySquared)\x20+\x20height)\x20*\x20latitudeSin\x0a\x20\x20\x20\x20);\x0a\x20\x20\x20\x20return\x20scene.viewProjection\x20*\x20vec4f(ecef\x20-\x20scene.geographic0.yzw,\x201.0);\x0a}\x0a\x0a@vertex\x0afn\x20vertexMain(@location(0)\x20position:\x20vec3f,\x20@location(1)\x20color:\x20vec4f)\x20->\x20VertexOutput\x20{\x0a\x20\x20\x20\x20return\x20VertexOutput(transformScenePosition(position),\x20color);\x0a}\x0a\x0a@fragment\x0afn\x20fragmentMain(input:\x20VertexOutput)\x20->\x20@location(0)\x20vec4f\x20{\x0a\x20\x20\x20\x20return\x20vec4f(input.color.rgb\x20*\x20input.color.a,\x20input.color.a);\x0a}\x0a','.\x20体积分块\x20','assertAlive','absolute','submit','getSceneBindGroupLayout','readChunk','_showHook','acquireSlot','buffer','captureFrame','cameraSignature','createBuffer','clearPreview','flushBrickSchedule','RENDER_ATTACHMENT','minY','createProjectionCamera','handleWindowPointerMove','atlasViews','halo','device','stepLength','userSelect','latitudeRadians','setSlices','load','parentElement','skippedSampleCount','getStepLength','WebGPU\x20volume\x20page\x20table\x20is\x20unavailable.\x20WebGPU\x20体积页表不可用。','render','setToolMode','startY','setState','skippedSamples','setTimeIndex','cos','struct\x20SceneParams\x20{\x0a\x20\x20\x20\x20viewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseViewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20modelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseModelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20cameraPosition:\x20vec4f,\x0a\x20\x20\x20\x20viewport:\x20vec4f,\x0a\x20\x20\x20\x20clipMinimum:\x20vec4f,\x0a\x20\x20\x20\x20clipMaximum:\x20vec4f,\x0a\x20\x20\x20\x20render:\x20vec4f,\x0a\x20\x20\x20\x20transfer:\x20vec4f,\x0a\x20\x20\x20\x20geographic0:\x20vec4f,\x0a\x20\x20\x20\x20geographic1:\x20vec4f,\x0a\x20\x20\x20\x20geographic2:\x20vec4f,\x0a}\x0a\x0astruct\x20VolumeParams\x20{\x0a\x20\x20\x20\x20dimensions:\x20vec4u,\x0a\x20\x20\x20\x20brickInterior:\x20vec4u,\x0a\x20\x20\x20\x20brickCount:\x20vec4u,\x0a\x20\x20\x20\x20atlasSlots:\x20vec4u,\x0a\x20\x20\x20\x20atlasDimensions:\x20vec4u,\x0a\x20\x20\x20\x20valueMeta:\x20vec4f,\x0a}\x0a\x0astruct\x20PageTable\x20{\x20values:\x20array<vec4u>\x20}\x0astruct\x20FloatValues\x20{\x20values:\x20array<f32>\x20}\x0astruct\x20Colors\x20{\x20values:\x20array<vec4f>\x20}\x0astruct\x20SliceParams\x20{\x0a\x20\x20\x20\x20data:\x20vec4f,\x0a\x20\x20\x20\x20plateColor:\x20vec4f,\x0a}\x0astruct\x20VolumeSample\x20{\x20value:\x20f32,\x20valid:\x20bool\x20}\x0a\x0astruct\x20SliceVertexOutput\x20{\x0a\x20\x20\x20\x20@builtin(position)\x20position:\x20vec4f,\x0a\x20\x20\x20\x20@location(0)\x20modelPosition:\x20vec3f,\x0a}\x0a\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20scene:\x20SceneParams;\x0a@group(1)\x20@binding(0)\x20var\x20volumeAtlas0:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(1)\x20var\x20volumeAtlas1:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(2)\x20var\x20volumeAtlas2:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(3)\x20var\x20volumeAtlas3:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(4)\x20var\x20volumeAtlas4:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(5)\x20var\x20volumeAtlas5:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(6)\x20var\x20volumeAtlas6:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(7)\x20var\x20volumeAtlas7:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(8)\x20var<storage,\x20read>\x20pageTable:\x20PageTable;\x0a@group(1)\x20@binding(9)\x20var<uniform>\x20volume:\x20VolumeParams;\x0a@group(2)\x20@binding(0)\x20var<storage,\x20read>\x20colorStopValues:\x20FloatValues;\x0a@group(2)\x20@binding(1)\x20var<storage,\x20read>\x20colorStopColors:\x20Colors;\x0a@group(2)\x20@binding(2)\x20var<storage,\x20read>\x20opacityStopValues:\x20FloatValues;\x0a@group(2)\x20@binding(3)\x20var<storage,\x20read>\x20opacityStopAlphas:\x20FloatValues;\x0a@group(3)\x20@binding(0)\x20var<uniform>\x20slice:\x20SliceParams;\x0a\x0afn\x20invalidVolumeSample()\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20return\x20VolumeSample(0.0,\x20false);\x0a}\x0a\x0afn\x20validVolumeSample(value:\x20f32)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20return\x20VolumeSample(value,\x20true);\x0a}\x0a\x0afn\x20getPageIndex(brick:\x20vec3u)\x20->\x20u32\x20{\x0a\x20\x20\x20\x20return\x20brick.x\x20+\x20brick.y\x20*\x20volume.brickCount.x\x20+\x20brick.z\x20*\x20volume.brickCount.x\x20*\x20volume.brickCount.y;\x0a}\x0a\x0afn\x20getSlotCoordinate(slotIndex:\x20u32)\x20->\x20vec3u\x20{\x0a\x20\x20\x20\x20let\x20layerSize\x20=\x20volume.atlasSlots.x\x20*\x20volume.atlasSlots.y;\x0a\x20\x20\x20\x20let\x20z\x20=\x20slotIndex\x20/\x20layerSize;\x0a\x20\x20\x20\x20let\x20remainder\x20=\x20slotIndex\x20-\x20z\x20*\x20layerSize;\x0a\x20\x20\x20\x20let\x20y\x20=\x20remainder\x20/\x20volume.atlasSlots.x;\x0a\x20\x20\x20\x20return\x20vec3u(remainder\x20-\x20y\x20*\x20volume.atlasSlots.x,\x20y,\x20z);\x0a}\x0a\x0afn\x20loadAtlasValue(atlasIndex:\x20u32,\x20coordinate:\x20vec3i)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x200u)\x20{\x20return\x20textureLoad(volumeAtlas0,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x201u)\x20{\x20return\x20textureLoad(volumeAtlas1,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x202u)\x20{\x20return\x20textureLoad(volumeAtlas2,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x203u)\x20{\x20return\x20textureLoad(volumeAtlas3,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x204u)\x20{\x20return\x20textureLoad(volumeAtlas4,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x205u)\x20{\x20return\x20textureLoad(volumeAtlas5,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x206u)\x20{\x20return\x20textureLoad(volumeAtlas6,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20return\x20textureLoad(volumeAtlas7,\x20coordinate,\x200).r;\x0a}\x0a\x0afn\x20loadAtlasVoxel(voxel:\x20vec3i,\x20owningBrick:\x20vec3u)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20let\x20page\x20=\x20pageTable.values[getPageIndex(owningBrick)];\x0a\x0a\x20\x20\x20\x20if\x20(page.x\x20==\x200u\x20||\x20page.z\x20==\x200u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20physicalBrick\x20=\x20volume.brickInterior.xyz\x20+\x20vec3u(2u);\x0a\x20\x20\x20\x20let\x20slot\x20=\x20getSlotCoordinate(page.x\x20-\x201u);\x0a\x20\x20\x20\x20let\x20local\x20=\x20voxel\x20-\x20vec3i(owningBrick\x20*\x20volume.brickInterior.xyz)\x20+\x20vec3i(1);\x0a\x20\x20\x20\x20let\x20value\x20=\x20loadAtlasValue(page.w,\x20vec3i(slot\x20*\x20physicalBrick)\x20+\x20local);\x0a\x0a\x20\x20\x20\x20if\x20(value\x20!=\x20value\x20||\x20(volume.valueMeta.y\x20>\x200.5\x20&&\x20value\x20==\x20volume.valueMeta.x))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20validVolumeSample(value);\x0a}\x0a\x0afn\x20sampleVolume(modelPosition:\x20vec3f)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20let\x20normalized\x20=\x20clamp(modelPosition,\x20vec3f(0.0),\x20vec3f(1.0));\x0a\x20\x20\x20\x20let\x20voxel\x20=\x20normalized\x20*\x20vec3f(volume.dimensions.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20baseVoxel\x20=\x20vec3i(floor(voxel));\x0a\x20\x20\x20\x20let\x20nextVoxel\x20=\x20min(baseVoxel\x20+\x20vec3i(1),\x20vec3i(volume.dimensions.xyz\x20-\x20vec3u(1u)));\x0a\x20\x20\x20\x20let\x20fraction\x20=\x20voxel\x20-\x20vec3f(baseVoxel);\x0a\x20\x20\x20\x20let\x20owningBrick\x20=\x20min(vec3u(baseVoxel)\x20/\x20volume.brickInterior.xyz,\x20volume.brickCount.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20c000\x20=\x20loadAtlasVoxel(baseVoxel,\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c100\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20baseVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c010\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20nextVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c110\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20nextVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c001\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20baseVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c101\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20baseVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c011\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20nextVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c111\x20=\x20loadAtlasVoxel(nextVoxel,\x20owningBrick);\x0a\x0a\x20\x20\x20\x20if\x20(!c000.valid\x20||\x20!c100.valid\x20||\x20!c010.valid\x20||\x20!c110.valid\x20||\x20!c001.valid\x20||\x20!c101.valid\x20||\x20!c011.valid\x20||\x20!c111.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20bottom\x20=\x20mix(mix(c000.value,\x20c100.value,\x20fraction.x),\x20mix(c010.value,\x20c110.value,\x20fraction.x),\x20fraction.y);\x0a\x20\x20\x20\x20let\x20top\x20=\x20mix(mix(c001.value,\x20c101.value,\x20fraction.x),\x20mix(c011.value,\x20c111.value,\x20fraction.x),\x20fraction.y);\x0a\x20\x20\x20\x20return\x20validVolumeSample(mix(bottom,\x20top,\x20fraction.z));\x0a}\x0a\x0afn\x20sampleColor(value:\x20f32)\x20->\x20vec4f\x20{\x0a\x20\x20\x20\x20let\x20count\x20=\x20u32(scene.transfer.x);\x0a\x0a\x20\x20\x20\x20if\x20(count\x20==\x201u\x20||\x20value\x20<=\x20colorStopValues.values[0u])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20colorStopColors.values[0u];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20+\x201u\x20<\x20count;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20start\x20=\x20colorStopValues.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20end\x20=\x20colorStopValues.values[index\x20+\x201u];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20<\x20end)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(scene.transfer.w\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20colorStopColors.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20mix(colorStopColors.values[index],\x20colorStopColors.values[index\x20+\x201u],\x20clamp((value\x20-\x20start)\x20/\x20max(end\x20-\x20start,\x200.000001),\x200.0,\x201.0));\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20colorStopColors.values[count\x20-\x201u];\x0a}\x0a\x0afn\x20sampleOpacity(value:\x20f32)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20let\x20count\x20=\x20u32(scene.transfer.y);\x0a\x0a\x20\x20\x20\x20if\x20(count\x20==\x201u\x20||\x20value\x20<=\x20opacityStopValues.values[0u])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20opacityStopAlphas.values[0u];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20+\x201u\x20<\x20count;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20start\x20=\x20opacityStopValues.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20end\x20=\x20opacityStopValues.values[index\x20+\x201u];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20<\x20end)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(scene.transfer.w\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20opacityStopAlphas.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20mix(opacityStopAlphas.values[index],\x20opacityStopAlphas.values[index\x20+\x201u],\x20clamp((value\x20-\x20start)\x20/\x20max(end\x20-\x20start,\x200.000001),\x200.0,\x201.0));\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20opacityStopAlphas.values[count\x20-\x201u];\x0a}\x0a\x0afn\x20getPlanePosition(axis:\x20u32,\x20planePosition:\x20f32,\x20corner:\x20vec2f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20if\x20(axis\x20==\x200u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec3f(planePosition,\x20corner.x,\x20corner.y);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(axis\x20==\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec3f(corner.x,\x20planePosition,\x20corner.y);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20vec3f(corner.x,\x20corner.y,\x20planePosition);\x0a}\x0a\x0afn\x20getCorner(vertexIndex:\x20u32)\x20->\x20vec2f\x20{\x0a\x20\x20\x20\x20let\x20corners\x20=\x20array<vec2f,\x206>(\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec2f(0.0,\x200.0),\x20vec2f(1.0,\x200.0),\x20vec2f(0.0,\x201.0),\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec2f(0.0,\x201.0),\x20vec2f(1.0,\x200.0),\x20vec2f(1.0,\x201.0)\x0a\x20\x20\x20\x20);\x0a\x20\x20\x20\x20return\x20corners[vertexIndex];\x0a}\x0a\x0afn\x20getTessellatedCorner(vertexIndex:\x20u32)\x20->\x20vec2f\x20{\x0a\x20\x20\x20\x20let\x20gridSize\x20=\x2032u;\x0a\x20\x20\x20\x20let\x20cellIndex\x20=\x20vertexIndex\x20/\x206u;\x0a\x20\x20\x20\x20let\x20cellX\x20=\x20cellIndex\x20%\x20gridSize;\x0a\x20\x20\x20\x20let\x20cellY\x20=\x20cellIndex\x20/\x20gridSize;\x0a\x20\x20\x20\x20return\x20(vec2f(f32(cellX),\x20f32(cellY))\x20+\x20getCorner(vertexIndex\x20%\x206u))\x20/\x20f32(gridSize);\x0a}\x0a\x0afn\x20volumeToWorld(position:\x20vec3f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20if\x20(scene.geographic0.x\x20<\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20transformed\x20=\x20scene.modelMatrix\x20*\x20vec4f(position,\x201.0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20transformed.xyz\x20/\x20transformed.w;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20longitude\x20=\x20mix(scene.geographic1.z,\x20scene.geographic1.w,\x20position.x);\x0a\x20\x20\x20\x20let\x20latitude\x20=\x20mix(scene.geographic2.x,\x20scene.geographic2.y,\x20position.z);\x0a\x20\x20\x20\x20let\x20height\x20=\x20mix(scene.geographic2.z,\x20scene.geographic2.w,\x20position.y);\x0a\x20\x20\x20\x20let\x20latitudeSin\x20=\x20sin(latitude);\x0a\x20\x20\x20\x20let\x20latitudeCos\x20=\x20cos(latitude);\x0a\x20\x20\x20\x20let\x20semiMajor\x20=\x20scene.geographic1.x;\x0a\x20\x20\x20\x20let\x20semiMinor\x20=\x20scene.geographic1.y;\x0a\x20\x20\x20\x20let\x20eccentricitySquared\x20=\x201.0\x20-\x20semiMinor\x20*\x20semiMinor\x20/\x20(semiMajor\x20*\x20semiMajor);\x0a\x20\x20\x20\x20let\x20primeVerticalRadius\x20=\x20semiMajor\x20/\x20sqrt(1.0\x20-\x20eccentricitySquared\x20*\x20latitudeSin\x20*\x20latitudeSin);\x0a\x20\x20\x20\x20let\x20ecef\x20=\x20vec3f(\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20+\x20height)\x20*\x20latitudeCos\x20*\x20cos(longitude),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20+\x20height)\x20*\x20latitudeCos\x20*\x20sin(longitude),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20*\x20(1.0\x20-\x20eccentricitySquared)\x20+\x20height)\x20*\x20latitudeSin\x0a\x20\x20\x20\x20);\x0a\x20\x20\x20\x20return\x20ecef\x20-\x20scene.geographic0.yzw;\x0a}\x0a\x0a@vertex\x0afn\x20vertexMain(@builtin(vertex_index)\x20vertexIndex:\x20u32)\x20->\x20SliceVertexOutput\x20{\x0a\x20\x20\x20\x20let\x20modelPosition\x20=\x20getPlanePosition(u32(slice.data.x),\x20slice.data.y,\x20getTessellatedCorner(vertexIndex));\x0a\x20\x20\x20\x20let\x20clipPosition\x20=\x20scene.viewProjection\x20*\x20vec4f(volumeToWorld(modelPosition),\x201.0);\x0a\x20\x20\x20\x20return\x20SliceVertexOutput(clipPosition,\x20modelPosition);\x0a}\x0a\x0a@fragment\x0afn\x20fragmentMain(input:\x20SliceVertexOutput)\x20->\x20@location(0)\x20vec4f\x20{\x0a\x20\x20\x20\x20let\x20sample\x20=\x20sampleVolume(input.modelPosition);\x0a\x20\x20\x20\x20let\x20plateAlpha\x20=\x20slice.plateColor.a;\x0a\x20\x20\x20\x20let\x20platePremultiplied\x20=\x20slice.plateColor.rgb\x20*\x20plateAlpha;\x0a\x0a\x20\x20\x20\x20if\x20(!sample.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(plateAlpha\x20<=\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20discard;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec4f(platePremultiplied,\x20plateAlpha);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20color\x20=\x20sampleColor(sample.value);\x0a\x20\x20\x20\x20let\x20alpha\x20=\x20color.a\x20*\x20sampleOpacity(sample.value)\x20*\x20slice.data.z;\x0a\x20\x20\x20\x20//\x20彩色数据覆盖白色透明底板,二者在同一\x20fragment\x20中合成以避免重合面的深度冲突。\x0a\x20\x20\x20\x20//\x20Colored\x20data\x20is\x20composited\x20over\x20the\x20translucent\x20white\x20plate\x20in\x20one\x20fragment\x20to\x20avoid\x20coplanar\x20depth\x20conflicts.\x0a\x20\x20\x20\x20let\x20outputAlpha\x20=\x20alpha\x20+\x20plateAlpha\x20*\x20(1.0\x20-\x20alpha);\x0a\x20\x20\x20\x20let\x20outputColor\x20=\x20color.rgb\x20*\x20alpha\x20+\x20platePremultiplied\x20*\x20(1.0\x20-\x20alpha);\x0a\x20\x20\x20\x20return\x20vec4f(outputColor,\x20outputAlpha);\x0a}\x0a','writeParams','nowrap','far','多采样点切面轴的起止值不能相等。','\x20必须是正有限数值。','setSource','update','indexOf','memoryLimitBytes','Volume\x20brick\x20','volume\x20atlas\x20clear','uploadBatchCount','listeners','Volume\x20X\x20axis','copyBufferToTexture','uploadStagingBuffer','vertices','sceneSlicePipeline','clearLockedSlices','context','Geographic\x20volume\x20proxy\x20bounds\x20are\x20invalid.\x20地理体积代理范围无效。','Latitude\x20/\x20纬度','47924nFVIRB','recreateSceneBindGroup','setCamera','applyHit','valueScale','perspective','createBindGroupLayout','pageTableBuffer','volume\x20atlas\x20clear\x20pass','block','previewMarker','overlayTrianglePipeline','stopPropagation','pendingBrickCount','透视相机视场角必须位于\x200\x20到\x20180\x20度之间。','isFinite','WebGPU\x20volume\x20format\x20is\x20not\x20initialized.\x20WebGPU\x20体积格式尚未初始化。','slotCount','pointer','getGeometryBindGroupLayout','memoryHardLimitBytes','shown','layer','pendingCompensationFrame','auto','formatPosition','pendingBrickUploads','WebGPU\x20volume\x20atlas\x20has\x20no\x20evictable\x20slot.\x20WebGPU\x20体积图集没有可驱逐的槽位。','type','sliceDepthMode','pointerdown','frameInFlight','volume\x20slice\x20shader','upWC','viewProjection','Volume\x20brick\x20upload\x20was\x20superseded\x20by\x20a\x20new\x20source.\x20体积砖上传已被新数据源替代。','set','contextmenu','volume\x20atlas\x20clear\x20pipeline','main','removeSlice','filter','maximumPitch','encodePreparedBrickUpload','WebGPU\x20volume\x20bricks\x20require\x20halo\x201.\x20WebGPU\x20体积砖块要求\x20halo\x20为\x201。','pointerEvents','pageTableValues','previousContainerPosition','resourceRebuildCount','WebGPU\x20scene\x20params\x20buffer\x20is\x20unavailable.\x20WebGPU\x20场景参数\x20Buffer\x20不可用。','\x20至少需要两个高度层。','mapAsync','WebGPU\x20geometry\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20几何绑定布局不可用。','Volume\x20opacity\x20must\x20be\x20within\x20[0,\x201].\x20体积透明度必须位于\x20[0,\x201]。','\x20must\x20be\x20a\x20positive\x20finite\x20value.\x20','setBindGroup','call','\x20noData\x20必须是有限数值或\x20NaN。','clearCameraFrameCompensation','Volume\x20opacity\x20stops\x20must\x20be\x20sorted\x20by\x20value.\x20体积透明度色标必须按数值升序排列。','WebGPU\x20volume\x20transfer\x20resources\x20are\x20incomplete.\x20WebGPU\x20体积传递函数资源不完整。','17468tHiUym','\x20endpoints\x20must\x20be\x20finite.\x20','orbit','cacheOnSuccess','color','createProjectionMatrix','mixed','volume\x20opacity\x20stop\x20alphas','options','moved','interactionStepScale','background','sliceId','profiles','requestControllers','getSliceResources','相机裁剪距离必须满足\x200\x20<=\x20near\x20<\x20far。','bindSliceInteraction','getInteractionKind','preRender','renderer','now','正交相机高度和宽高比必须大于\x200。','resetBrickRequests','zAxis','font','WebGPU\x20volume\x20device\x20restoration\x20failed.\x20WebGPU\x20体积设备恢复失败。','border','colorInputs','nextId','Alpha\x20颜色通道必须在0\x20~\x201之间','volume\x20color\x20stop\x20colors','cursor','createCameraSignature','resize','TEXTURE_BINDING','clearTimeout','maxLockedSlices\x20必须是正整数。','handlePointerLeave','endsWith','padding','releaseGpuResources','100%','onLimitReached','scheduleCameraMoveEnd','Volume\x20brick\x20upload\x20became\x20stale.\x20体积砖上传已过期。','matrices','metadata','切面轴端点必须是有限数。','initialize','sliceResources','setShow','getVolumeParamsBuffer','volumeDimFactor\x20必须位于\x200\x20到\x201。','budgetLimited','toolMode','volume\x20brick\x20atlas\x20','syncLockedMarkers','coreSampleCount','deltaY','WebGPU\x20volume\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20体积绑定布局不可用。','uniform','semiMajorAxisScaled','flatMap','Volume\x20chunk\x20range\x20exceeds\x20source\x20dimensions.\x20体积分块范围超出源数据尺寸。','STORAGE','minZ','WebGPU\x20volume\x20params\x20buffer\x20is\x20unavailable.\x20WebGPU\x20体积参数\x20Buffer\x20不可用。','path','WebGPU\x20volume\x20resources\x20were\x20released.\x20WebGPU\x20体积资源已释放。','WebGPU\x20scene\x20depth\x20attachment\x20is\x20not\x20initialized.\x20WebGPU\x20场景深度附件尚未初始化。','atlasIndex','position','heights','hypot','grab','applyCameraFrameCompensation','setPointerCapture','minimum','slice','fragmentMain','adapter','axisDefinitions','getSceneParamsBuffer','MAP_WRITE','rgb(17\x2024\x2039\x20/\x2082%)','\x20的\x20path\x20必须包含至少两个\x20[x,\x20z]\x20点。','start','volume\x20atlas\x20bind\x20group','brickScheduleCount','bufferOffset','Volume\x20opacity\x20stops\x20must\x20be\x20between\x20zero\x20and\x20one.\x20体积透明度色标必须位于零到一之间。','create','\x20must\x20be\x20a\x20positive\x20integer.\x20','performance','beginRenderPass','positions','findIndex','volume\x20scene\x20mesh\x20','baseModelMatrix','Volume\x20Y\x20axis','source','Volume\x20chunk\x20','axisResources','markerOverlay','every','lockPreview','getTransferBindGroupLayout','slotCountZ','requireScene','AbortError','3006339YNNlsP','\x20的\x20heights\x20包含非有限高度。','overlayLinePipeline','dolly','bgra8unorm','navigationMode','pan','quality','width','state','element','enqueueBrickUpload','36Ngruba','geographic-wgs84','actualFrameIntervalMilliseconds','depth32float','interactionController','range','volumeDimFactor','sliceInteraction','rgb\x20颜色通道数量不正确:\x20','readyResolve','coreRange','worldAnchors','copyTextureToBuffer','volumeBindGroupLayout','opacityStopCount','Maximum\x20locked\x20slice\x20count\x20is\x20','onSlicesChange','.\x20体积分块数值数量与尺寸不一致。','r32float','slices','topology','opacity','3px\x206px','textContent','volumeMetadata','\x20position\x20must\x20be\x20normalized\x20to\x20zero\x20through\x20one.\x20体积切面位置必须归一化到零至一。','configure','eventDisposers','panSpeed','borderRadius','brickDepth','transparent','cameraMoving','矩阵不可逆。','UNIFORM','volume\x20opacity\x20stop\x20values','mars3d\x20volume\x20shell\x20raymarch\x20pipeline','createCommandEncoder','Mars3D\x20volume\x20layer\x20is\x20not\x20ready;\x20await\x20readyPromise\x20first.\x20Mars3D\x20体积层尚未就绪,请先等待\x20readyPromise。','skippedCells','FRAGMENT','forEach','addEventListener','counts','scheduleBricks','uniformUpdateCount','requestFrames','timeCount','sourceYCount','height','countY','lastTimingFrameTimestamp','values','volume\x20scene\x20depth','Volume\x20opacity\x20stop\x20values\x20must\x20be\x20finite\x20and\x20strictly\x20increasing.\x20体积透明度节点值必须有限且严格递增。','1594458ehsQQX','depthMode','setTimeout','ready','17029392hzBzqw','match','countZ','high-performance','createBindGroup','readRange','updateSlice','splice','canvas','reject','createValues','maxTextureDimension3D','createGpuResources','getMappedRange','touchBricks','volume\x20transfer\x20bind\x20group','uploadGeneration','value','\x20count','parseInt','axes','resources','proxyModelMatrix','Volume\x20timeIndex\x20is\x20out\x20of\x20range:\x20','validation','setTransfer','4px','frameRequest','maxLockedSlices','maxX','Height\x20/\x20高度','volume\x20scene\x20mesh\x20shader','volume\x20scene\x20bind\x20group\x20layout','xCount','display'];_0x19e9=function(){return _0x4249fe;};return _0x19e9();}var WebgpuTransferResources=class{[_0x1d30f8(0x15c)];[_0x1d30f8(0x2c6)]=null;[_0x1d30f8(0x3a0)]=null;[_0x1d30f8(0x2c9)]=null;[_0x1d30f8(0x378)]=null;[_0x1d30f8(0x3fd)]=0x0;[_0x1d30f8(0x24a)]=0x0;constructor(_0x2eaa1a){const _0xae147a=_0x1d30f8;this[_0xae147a(0x15c)]=_0x2eaa1a;}get[_0x1d30f8(0x267)](){return[this['colorStopCount'],this['opacityStopCount']];}['update'](_0x16a3c3,_0x2270ce){const _0x9b4755=_0x1d30f8;validateStops$1(_0x16a3c3,_0x2270ce);let _0x444471=new Float32Array(_0x16a3c3[_0x9b4755(0x29b)]),_0xbab91b=new Float32Array(_0x16a3c3[_0x9b4755(0x29b)]*0x4),_0x2695e7=new Float32Array(_0x2270ce[_0x9b4755(0x29b)]),_0x8b534e=new Float32Array(_0x2270ce['length']);for(let _0x344209=0x0;_0x344209<_0x16a3c3['length'];_0x344209+=0x1)_0x444471[_0x344209]=_0x16a3c3[_0x344209][_0x9b4755(0x288)],_0xbab91b[_0x9b4755(0x1a8)](_0x16a3c3[_0x344209][_0x9b4755(0x1c5)],_0x344209*0x4);for(let _0x27d8d5=0x0;_0x27d8d5<_0x2270ce[_0x9b4755(0x29b)];_0x27d8d5+=0x1)_0x2695e7[_0x27d8d5]=_0x2270ce[_0x27d8d5][_0x9b4755(0x288)],_0x8b534e[_0x27d8d5]=_0x2270ce[_0x27d8d5][_0x9b4755(0x251)];let _0x34f296=[createStorageBuffer(this[_0x9b4755(0x15c)],_0x444471,_0x9b4755(0xe3)),createStorageBuffer(this[_0x9b4755(0x15c)],_0xbab91b,_0x9b4755(0x1e0)),createStorageBuffer(this[_0x9b4755(0x15c)],_0x2695e7,_0x9b4755(0x25f)),createStorageBuffer(this['device'],_0x8b534e,_0x9b4755(0x1c8))];this['destroyBuffers'](),this[_0x9b4755(0x2c6)]=_0x34f296[0x0],this[_0x9b4755(0x3a0)]=_0x34f296[0x1],this[_0x9b4755(0x2c9)]=_0x34f296[0x2],this[_0x9b4755(0x378)]=_0x34f296[0x3],this[_0x9b4755(0x3fd)]=_0x16a3c3[_0x9b4755(0x29b)],this[_0x9b4755(0x24a)]=_0x2270ce[_0x9b4755(0x29b)];}[_0x1d30f8(0x27b)](_0x5ed079){const _0x1af3e9=_0x1d30f8;if(!this[_0x1af3e9(0x2c6)]||!this[_0x1af3e9(0x3a0)]||!this[_0x1af3e9(0x2c9)]||!this[_0x1af3e9(0x378)])throw Error(_0x1af3e9(0x1c0));return this[_0x1af3e9(0x15c)][_0x1af3e9(0x27b)]({'label':_0x1af3e9(0x286),'layout':_0x5ed079,'entries':[{'binding':0x0,'resource':{'buffer':this[_0x1af3e9(0x2c6)]}},{'binding':0x1,'resource':{'buffer':this[_0x1af3e9(0x3a0)]}},{'binding':0x2,'resource':{'buffer':this[_0x1af3e9(0x2c9)]}},{'binding':0x3,'resource':{'buffer':this[_0x1af3e9(0x378)]}}]});}['destroy'](){const _0x4c70b1=_0x1d30f8;this[_0x4c70b1(0x3e1)](),this[_0x4c70b1(0x3fd)]=0x0,this[_0x4c70b1(0x24a)]=0x0;}['destroyBuffers'](){const _0x1b64ec=_0x1d30f8;this[_0x1b64ec(0x2c6)]?.['destroy'](),this[_0x1b64ec(0x3a0)]?.['destroy'](),this[_0x1b64ec(0x2c9)]?.['destroy'](),this[_0x1b64ec(0x378)]?.[_0x1b64ec(0x377)](),this[_0x1b64ec(0x2c6)]=null,this[_0x1b64ec(0x3a0)]=null,this[_0x1b64ec(0x2c9)]=null,this[_0x1b64ec(0x378)]=null;}};const DEFAULT_MEMORY_TARGET_BYTES=0x200*0x400*0x400,IDENTITY_MATRIX$1=[0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1],DEFAULT_COLOR_STOPS=[{'value':0x0,'color':[0x0,0x0,0x1,0x1]},{'value':0x1,'color':[0x1,0x0,0x0,0x1]}],DEFAULT_OPACITY_STOPS=[{'value':0x0,'opacity':0x0},{'value':0x1,'opacity':0x1}],premultipliedBlend$1=()=>({'color':{'srcFactor':_0x1d30f8(0x2fc),'dstFactor':_0x1d30f8(0x3dc),'operation':'add'},'alpha':{'srcFactor':_0x1d30f8(0x2fc),'dstFactor':_0x1d30f8(0x3dc),'operation':'add'}}),validateMatrix=(_0x219b4,_0x40caf0)=>{const _0x1f1485=_0x1d30f8;if(_0x219b4[_0x1f1485(0x29b)]!==0x10||_0x219b4['some'](_0x13eb8a=>!Number['isFinite'](_0x13eb8a)))throw Error(_0x40caf0+_0x1f1485(0x348)+_0x40caf0+'\x20必须包含十六个有限数值。');},validateNonNegative=(_0x4a4c99,_0x3b6a65)=>{if(!Number['isFinite'](_0x4a4c99)||_0x4a4c99<0x0)throw Error(_0x3b6a65+'\x20must\x20be\x20a\x20non-negative\x20finite\x20value.\x20'+_0x3b6a65+'\x20必须是非负有限数值。');return _0x4a4c99;},validatePositive=(_0x537415,_0x1213dd)=>{const _0x4653a2=_0x1d30f8;if(!Number[_0x4653a2(0x193)](_0x537415)||_0x537415<=0x0)throw Error(_0x1213dd+_0x4653a2(0x1ba)+_0x1213dd+_0x4653a2(0x172));return _0x537415;},cloneMeshes=_0x1e88ad=>_0x1e88ad['map'](_0x1cb700=>({..._0x1cb700,'vertices':new Float32Array(_0x1cb700[_0x1d30f8(0x17e)])})),estimateBrickUploadBytes=_0x410ff4=>{const _0x58a4c8=_0x1d30f8;let _0x4a9b19=_0x410ff4[_0x58a4c8(0x312)]+_0x410ff4[_0x58a4c8(0x15b)]*0x2,_0x42dcca=_0x410ff4[_0x58a4c8(0x416)]+_0x410ff4[_0x58a4c8(0x15b)]*0x2,_0x5f1ac4=_0x410ff4[_0x58a4c8(0x25a)]+_0x410ff4[_0x58a4c8(0x15b)]*0x2;return Math[_0x58a4c8(0x332)](_0x4a9b19*Float32Array[_0x58a4c8(0xe9)]/0x100)*0x100*_0x42dcca*_0x5f1ac4+0x10;};var WebgpuVolumeSceneRenderer=class{[_0x1d30f8(0x1c9)];[_0x1d30f8(0x3ac)]='idle';[_0x1d30f8(0x27f)]=null;[_0x1d30f8(0x212)]=null;[_0x1d30f8(0x15c)]=null;[_0x1d30f8(0x181)]=null;[_0x1d30f8(0xf8)]=null;[_0x1d30f8(0xe0)]=null;[_0x1d30f8(0xea)]=null;['geometryBindGroupLayout']=null;[_0x1d30f8(0xcf)]=null;[_0x1d30f8(0x249)]=null;[_0x1d30f8(0x324)]=null;['sliceBindGroupLayout']=null;[_0x1d30f8(0x2f7)]=null;[_0x1d30f8(0xff)]=null;[_0x1d30f8(0x40b)]=null;[_0x1d30f8(0x339)]=null;[_0x1d30f8(0x2d4)]=null;[_0x1d30f8(0x358)]=null;[_0x1d30f8(0x12c)]=null;[_0x1d30f8(0x18f)]=null;[_0x1d30f8(0x232)]=null;[_0x1d30f8(0x17f)]=null;[_0x1d30f8(0xfb)]=null;[_0x1d30f8(0x2e9)]=null;[_0x1d30f8(0xd3)]=null;[_0x1d30f8(0x106)]=null;['profileResources']=null;[_0x1d30f8(0x1f3)]=null;[_0x1d30f8(0x228)]=null;['metadata']=null;[_0x1d30f8(0x33f)]={'viewProjection':IDENTITY_MATRIX$1,'inverseViewProjection':IDENTITY_MATRIX$1,'cameraPosition':[0x0,0x0,0x2]};[_0x1d30f8(0x115)]=IDENTITY_MATRIX$1;[_0x1d30f8(0x411)]=IDENTITY_MATRIX$1;[_0x1d30f8(0x357)]=[0x0,0x0,0x0];[_0x1d30f8(0x2ac)]=[0x1,0x1,0x1];[_0x1d30f8(0x12e)]='composite';[_0x1d30f8(0x251)]=0.3;[_0x1d30f8(0xe5)]=0x1;[_0x1d30f8(0x15d)]=0.005;[_0x1d30f8(0x242)]=0x1;[_0x1d30f8(0xdc)]=_0x1d30f8(0x301);[_0x1d30f8(0x2e3)]=null;[_0x1d30f8(0xce)]=DEFAULT_COLOR_STOPS;[_0x1d30f8(0x2a6)]=DEFAULT_OPACITY_STOPS;[_0x1d30f8(0x2ed)]=0x0;[_0x1d30f8(0x116)]=0x0;[_0x1d30f8(0x238)]=0x0;[_0x1d30f8(0x26d)]=0x0;['initializationGeneration']=0x0;[_0x1d30f8(0x3c2)]=0x0;[_0x1d30f8(0x11e)]=[];['cachedSlices']=[];[_0x1d30f8(0x37b)]=[];[_0x1d30f8(0x127)]=new Map();[_0x1d30f8(0x19e)]=[];[_0x1d30f8(0x36d)]=null;['uploadGeneration']=0x0;[_0x1d30f8(0x17d)]=null;['uploadStagingBufferSize']=0x0;['uploadedBrickCount']=0x0;['uploadBatchCount']=0x0;[_0x1d30f8(0x2e5)]=0x0;[_0x1d30f8(0x1a3)]=!0x1;[_0x1d30f8(0x3fc)]=null;constructor(_0x570b3a={}){const _0x3b8632=_0x1d30f8;this[_0x3b8632(0x1c9)]={..._0x570b3a};}get[_0x1d30f8(0x239)](){return this['lifecycleState'];}get['statistics'](){const _0xefd1a2=_0x1d30f8;let _0x4091fe=this[_0xefd1a2(0xd3)]?.['statistics']??{'logicalBrickCount':0x0,'atlasCapacity':0x0,'gpuBytes':0x0,'memoryLimitBytes':this['options'][_0xefd1a2(0x198)]??this[_0xefd1a2(0x1c9)][_0xefd1a2(0x3d9)]??DEFAULT_MEMORY_TARGET_BYTES,'budgetLimited':!0x1,'skippedSamples':0x0,'skippedCells':0x0},_0xff3dc3=this[_0xefd1a2(0x1f3)]?.['statistics']??{'uniformUpdateCount':0x0,'resourceRebuildCount':0x0};return{'logicalBrickCount':_0x4091fe[_0xefd1a2(0x391)],'residentBrickCount':this[_0xefd1a2(0xd3)]?.['residentBrickCount']??0x0,'pendingBrickCount':0x0,'atlasCapacity':_0x4091fe[_0xefd1a2(0x3fb)],'gpuBytes':_0x4091fe[_0xefd1a2(0x386)],'memoryLimitBytes':_0x4091fe[_0xefd1a2(0x176)],'budgetLimited':_0x4091fe[_0xefd1a2(0x1f7)],'frameTimeMilliseconds':this['lastFrameTimeMilliseconds'],'submittedFrameCount':this[_0xefd1a2(0x116)],'uploadedBrickCount':this[_0xefd1a2(0x2e7)],'uploadBatchCount':this[_0xefd1a2(0x179)],'maximumUploadBatchBytes':this[_0xefd1a2(0x2e5)],'sliceUniformUpdateCount':_0xff3dc3[_0xefd1a2(0x269)],'sliceResourceRebuildCount':_0xff3dc3[_0xefd1a2(0x1b4)],'skippedSamples':_0x4091fe[_0xefd1a2(0x16a)],'skippedCells':_0x4091fe[_0xefd1a2(0x263)]};}[_0x1d30f8(0x125)](_0x1c276a){const _0x89e58d=_0x1d30f8;this[_0x89e58d(0x3fc)]=_0x1c276a;}async[_0x1d30f8(0x1f2)](_0x504e9a){const _0x5996ea=_0x1d30f8;if(this[_0x5996ea(0x3ac)]===_0x5996ea(0x321))throw Error(_0x5996ea(0x395));let _0x5303fd=++this[_0x5996ea(0x2a3)];this[_0x5996ea(0x1ea)](),this[_0x5996ea(0x27f)]=_0x504e9a,this[_0x5996ea(0x3ac)]=_0x5996ea(0x408);let _0x4fe2ab=navigator['gpu'];if(!_0x4fe2ab)throw this['lifecycleState']=_0x5996ea(0x29c),Error(_0x5996ea(0x2d8));let _0x2af63c=await _0x4fe2ab[_0x5996ea(0x38b)]({'powerPreference':this[_0x5996ea(0x1c9)]['powerPreference']??_0x5996ea(0x27a)});if(_0x5303fd!==this[_0x5996ea(0x2a3)])return;if(!_0x2af63c)throw this['lifecycleState']=_0x5996ea(0x29c),Error(_0x5996ea(0x11d));let _0x300516=await _0x2af63c[_0x5996ea(0x351)]();if(_0x5303fd!==this[_0x5996ea(0x2a3)]){_0x300516[_0x5996ea(0x377)]();return;}let _0x55e2d9=_0x504e9a[_0x5996ea(0x419)](_0x5996ea(0x3f5));if(!_0x55e2d9)throw _0x300516[_0x5996ea(0x377)](),this[_0x5996ea(0x3ac)]=_0x5996ea(0x29c),Error(_0x5996ea(0x12b));let _0x2a3a12=_0x4fe2ab[_0x5996ea(0x39a)]();_0x55e2d9[_0x5996ea(0x256)]({'device':_0x300516,'format':_0x2a3a12,'alphaMode':_0x5996ea(0x2ae),'usage':GPUTextureUsage[_0x5996ea(0x156)]|GPUTextureUsage['COPY_SRC']}),this[_0x5996ea(0x212)]=_0x2af63c,this[_0x5996ea(0x15c)]=_0x300516,this['context']=_0x55e2d9,this[_0x5996ea(0xf8)]=_0x2a3a12,_0x300516[_0x5996ea(0x30d)](_0x5996ea(0x28f)),this[_0x5996ea(0x283)]();let _0xde0d1b=await _0x300516[_0x5996ea(0x131)]();if(_0xde0d1b)throw this[_0x5996ea(0x1ea)](),this[_0x5996ea(0x3ac)]=_0x5996ea(0x29c),Error('Failed\x20to\x20create\x20WebGPU\x20volume\x20pipelines:\x20'+_0xde0d1b[_0x5996ea(0x3d0)]+_0x5996ea(0x41f));if(this[_0x5996ea(0x112)](_0x300516),this[_0x5996ea(0x3ac)]=_0x5996ea(0x276),this['metadata']){this[_0x5996ea(0xf9)](this[_0x5996ea(0x1f0)]);let _0x3f459f=Array['from'](this[_0x5996ea(0x127)]['entries']());await Promise[_0x5996ea(0x342)](_0x3f459f[_0x5996ea(0x2f9)](([_0x527703,_0x57e305])=>this[_0x5996ea(0x23b)]({'logicalIndex':_0x527703,'values':_0x57e305},!0x1)));}this['updateTransferResources'](),this[_0x5996ea(0x138)]()[_0x5996ea(0x118)](this['cachedProfiles']),this[_0x5996ea(0x1d0)]()[_0x5996ea(0x118)](this['cachedSlices']),this['getAxisResources']()[_0x5996ea(0x118)](this[_0x5996ea(0x37b)]),this['resize'](_0x504e9a[_0x5996ea(0x238)]||_0x504e9a[_0x5996ea(0x423)]||0x1,_0x504e9a[_0x5996ea(0x26d)]||_0x504e9a[_0x5996ea(0x3cd)]||0x1);}[_0x1d30f8(0x173)](_0x565a70){const _0x12af0e=_0x1d30f8;this[_0x12af0e(0x287)]+=0x1,this[_0x12af0e(0x2f1)](new DOMException(_0x12af0e(0x1a7),_0x12af0e(0x22f))),this[_0x12af0e(0x1f0)]={..._0x565a70},this['cachedBricks'][_0x12af0e(0x12f)](),this[_0x12af0e(0x2e7)]=0x0,this[_0x12af0e(0x179)]=0x0,this[_0x12af0e(0x2e5)]=0x0,this['lifecycleState']===_0x12af0e(0x276)&&this[_0x12af0e(0xf9)](_0x565a70);}[_0x1d30f8(0x13b)](_0x38a551){return this['enqueueBrickUpload'](_0x38a551,!0x0);}[_0x1d30f8(0x285)](_0x1b6c93){const _0x521fbc=_0x1d30f8;this['getAtlas']()[_0x521fbc(0x304)](_0x1b6c93,this[_0x521fbc(0x2ed)]);for(let _0x515f7b of _0x1b6c93){let _0x210f32=this[_0x521fbc(0x127)][_0x521fbc(0x2d0)](_0x515f7b);_0x210f32&&(this[_0x521fbc(0x127)][_0x521fbc(0xd5)](_0x515f7b),this[_0x521fbc(0x127)][_0x521fbc(0x1a8)](_0x515f7b,_0x210f32));}}[_0x1d30f8(0x186)](_0x2dea12){const _0x5bd9e8=_0x1d30f8;validateMatrix(_0x2dea12[_0x5bd9e8(0x1a6)],_0x5bd9e8(0x1a6)),validateMatrix(_0x2dea12[_0x5bd9e8(0xfc)],_0x5bd9e8(0xfc)),this[_0x5bd9e8(0x33f)]={'viewProjection':[..._0x2dea12[_0x5bd9e8(0x1a6)]],'inverseViewProjection':[..._0x2dea12[_0x5bd9e8(0xfc)]],'cameraPosition':[..._0x2dea12[_0x5bd9e8(0x3a6)]]};}[_0x1d30f8(0x320)](_0xd8546e){const _0xdb710a=_0x1d30f8;this[_0xdb710a(0x11e)]=cloneMeshes(_0xd8546e),this[_0xdb710a(0x138)]()[_0xdb710a(0x118)](_0xd8546e);}[_0x1d30f8(0x160)](_0x50991f){const _0xff5df4=_0x1d30f8;this[_0xff5df4(0x3da)]=_0x50991f[_0xff5df4(0x2f9)](_0x3d20e9=>({..._0x3d20e9})),this[_0xff5df4(0x1d0)]()['replace'](_0x50991f);}[_0x1d30f8(0x2ce)](_0x4aac8e){const _0x160293=_0x1d30f8;this[_0x160293(0x37b)]=cloneMeshes(_0x4aac8e),this[_0x160293(0x2d9)]()['replace'](_0x4aac8e);}[_0x1d30f8(0x290)](_0x464d18,_0x35675a,_0x1b7662){const _0x172860=_0x1d30f8;this['colorStops']=_0x464d18['map'](_0x146106=>({'value':_0x146106[_0x172860(0x288)],'color':[..._0x146106[_0x172860(0x1c5)]]})),this[_0x172860(0x2a6)]=_0x35675a[_0x172860(0x2f9)](_0x4fa590=>({..._0x4fa590})),_0x1b7662&&(this[_0x172860(0xdc)]=_0x1b7662),this[_0x172860(0x3ac)]===_0x172860(0x276)&&this[_0x172860(0x2ef)]();}[_0x1d30f8(0x174)](_0x226c27){const _0x4be9ec=_0x1d30f8;_0x226c27[_0x4be9ec(0x115)]&&(validateMatrix(_0x226c27[_0x4be9ec(0x115)],_0x4be9ec(0x115)),this[_0x4be9ec(0x115)]=[..._0x226c27['modelMatrix']]),_0x226c27[_0x4be9ec(0x411)]&&(validateMatrix(_0x226c27[_0x4be9ec(0x411)],'inverseModelMatrix'),this[_0x4be9ec(0x411)]=[..._0x226c27[_0x4be9ec(0x411)]]),_0x226c27['clipMinimum']&&(this['clipMinimum']=[..._0x226c27['clipMinimum']]),_0x226c27[_0x4be9ec(0x2ac)]&&(this[_0x4be9ec(0x2ac)]=[..._0x226c27[_0x4be9ec(0x2ac)]]),_0x226c27['renderMode']&&(this[_0x4be9ec(0x12e)]=_0x226c27[_0x4be9ec(0x12e)]),_0x226c27['opacity']!==void 0x0&&(this[_0x4be9ec(0x251)]=validateNonNegative(_0x226c27[_0x4be9ec(0x251)],_0x4be9ec(0x251))),_0x226c27['densityScale']!==void 0x0&&(this[_0x4be9ec(0xe5)]=validateNonNegative(_0x226c27[_0x4be9ec(0xe5)],_0x4be9ec(0xe5))),_0x226c27['stepLength']!==void 0x0&&(this[_0x4be9ec(0x15d)]=validatePositive(_0x226c27['stepLength'],_0x4be9ec(0x15d))),_0x226c27[_0x4be9ec(0x242)]!==void 0x0&&(this[_0x4be9ec(0x242)]=validateNonNegative(_0x226c27[_0x4be9ec(0x242)],_0x4be9ec(0x242))),_0x226c27[_0x4be9ec(0xdc)]&&(this[_0x4be9ec(0xdc)]=_0x226c27[_0x4be9ec(0xdc)]),_0x226c27[_0x4be9ec(0x2e3)]!==void 0x0&&(this[_0x4be9ec(0x2e3)]=_0x226c27[_0x4be9ec(0x2e3)]?{..._0x226c27['geographicTransform']}:null);}['resize'](_0x58941e,_0x2f603c){const _0x48d882=_0x1d30f8;if(!Number['isInteger'](_0x58941e)||!Number[_0x48d882(0x3b4)](_0x2f603c)||_0x58941e<=0x0||_0x2f603c<=0x0)throw Error(_0x48d882(0x42a));let _0x371fd1=this['getCanvas']();_0x371fd1[_0x48d882(0x238)]=_0x58941e,_0x371fd1[_0x48d882(0x26d)]=_0x2f603c,this[_0x48d882(0x238)]=_0x58941e,this[_0x48d882(0x26d)]=_0x2f603c,this[_0x48d882(0x2c0)]()[_0x48d882(0x1e3)](_0x58941e,_0x2f603c),this[_0x48d882(0x185)]();}[_0x1d30f8(0x166)](){const _0x4d5c19=_0x1d30f8;if(this[_0x4d5c19(0x3ac)]!==_0x4d5c19(0x276)||!this[_0x4d5c19(0x1f0)]||this[_0x4d5c19(0x238)]<=0x0||this[_0x4d5c19(0x26d)]<=0x0||this['frameInFlight'])return!0x1;let _0x633a1e=performance['now']();this[_0x4d5c19(0x2ed)]+=0x1,this['writeParams']();let _0x2774da=this['getDevice'](),_0xe9c2d2=_0x2774da[_0x4d5c19(0x261)]({'label':_0x4d5c19(0x427)}),_0x5bad4b=this[_0x4d5c19(0x419)]()[_0x4d5c19(0x32a)]()[_0x4d5c19(0x376)]();return this[_0x4d5c19(0x396)](_0xe9c2d2,_0x5bad4b),this[_0x4d5c19(0x31f)](_0xe9c2d2,_0x5bad4b),this['encodeOverlayPass'](_0xe9c2d2,_0x5bad4b),_0x2774da['queue'][_0x4d5c19(0x14b)]([_0xe9c2d2[_0x4d5c19(0x10e)]()]),this[_0x4d5c19(0x1a3)]=!0x0,this['submittedFrameCount']+=0x1,this[_0x4d5c19(0x3c2)]=Math['max'](0.000001,performance[_0x4d5c19(0x1d6)]()-_0x633a1e),_0x2774da[_0x4d5c19(0x3d8)][_0x4d5c19(0x335)]()['then'](()=>{const _0x1faf17=_0x4d5c19;this[_0x1faf17(0x15c)]!==_0x2774da||this[_0x1faf17(0x3ac)]!=='ready'||(this[_0x1faf17(0x1a3)]=!0x1,this[_0x1faf17(0x3fc)]?.());})[_0x4d5c19(0x2fb)](()=>{const _0x318ded=_0x4d5c19;this[_0x318ded(0x15c)]===_0x2774da&&(this[_0x318ded(0x1a3)]=!0x1);}),!0x0;}async['captureFrame'](){const _0x3d617b=_0x1d30f8;if(this['lifecycleState']!==_0x3d617b(0x276)||!this['metadata']||this[_0x3d617b(0x238)]<=0x0||this[_0x3d617b(0x26d)]<=0x0)throw Error(_0x3d617b(0x315));let _0x2364bd=this['getDevice'](),_0xe0185c=this['width']*0x4,_0x1cd93e=Math[_0x3d617b(0x332)](_0xe0185c/0x100)*0x100,_0x153d54=_0x2364bd['createBuffer']({'label':'volume\x20frame\x20readback','size':_0x1cd93e*this[_0x3d617b(0x26d)],'usage':GPUBufferUsage[_0x3d617b(0x41a)]|GPUBufferUsage['MAP_READ']});_0x2364bd[_0x3d617b(0x30d)]('validation'),this[_0x3d617b(0x2ed)]+=0x1,this[_0x3d617b(0x16e)]();let _0x2e644f=_0x2364bd[_0x3d617b(0x261)]({'label':'volume\x20frame\x20capture'}),_0x565ca3=this[_0x3d617b(0x419)]()['getCurrentTexture'](),_0x5eaec2=_0x565ca3[_0x3d617b(0x376)]();this['encodeScenePass'](_0x2e644f,_0x5eaec2),this[_0x3d617b(0x31f)](_0x2e644f,_0x5eaec2),this[_0x3d617b(0x407)](_0x2e644f,_0x5eaec2),_0x2e644f[_0x3d617b(0x248)]({'texture':_0x565ca3},{'buffer':_0x153d54,'bytesPerRow':_0x1cd93e,'rowsPerImage':this[_0x3d617b(0x26d)]},[this['width'],this['height']]),_0x2364bd['queue'][_0x3d617b(0x14b)]([_0x2e644f[_0x3d617b(0x10e)]()]);let _0x1775a2=await _0x2364bd[_0x3d617b(0x131)]();if(_0x1775a2)throw _0x153d54[_0x3d617b(0x377)](),Error(_0x3d617b(0x2c8)+_0x1775a2['message']+'.\x20WebGPU\x20体积帧读取失败。');await _0x153d54[_0x3d617b(0x1b7)](GPUMapMode[_0x3d617b(0x389)]);let _0x5693ee=new Uint8Array(_0x153d54['getMappedRange']()),_0x5753ed=new Uint8Array(_0xe0185c*this[_0x3d617b(0x26d)]),_0x2db5e9=this[_0x3d617b(0x3af)]()===_0x3d617b(0x234);for(let _0x25cf33=0x0;_0x25cf33<this['height'];_0x25cf33+=0x1){let _0x4b245a=_0x5693ee[_0x3d617b(0x13e)](_0x25cf33*_0x1cd93e,_0x25cf33*_0x1cd93e+_0xe0185c),_0xeaebc2=_0x25cf33*_0xe0185c;if(!_0x2db5e9){_0x5753ed['set'](_0x4b245a,_0xeaebc2);continue;}for(let _0x299b88=0x0;_0x299b88<this[_0x3d617b(0x238)];_0x299b88+=0x1){let _0x4adc60=_0x299b88*0x4,_0x2cc713=_0xeaebc2+_0x4adc60;_0x5753ed[_0x2cc713]=_0x4b245a[_0x4adc60+0x2],_0x5753ed[_0x2cc713+0x1]=_0x4b245a[_0x4adc60+0x1],_0x5753ed[_0x2cc713+0x2]=_0x4b245a[_0x4adc60],_0x5753ed[_0x2cc713+0x3]=_0x4b245a[_0x4adc60+0x3];}}return _0x153d54['unmap'](),_0x153d54[_0x3d617b(0x377)](),this[_0x3d617b(0x116)]+=0x1,{'width':this[_0x3d617b(0x238)],'height':this['height'],'pixels':_0x5753ed};}['destroy'](){const _0x12fea5=_0x1d30f8;this['lifecycleState']!=='destroyed'&&(++this[_0x12fea5(0x2a3)],this[_0x12fea5(0x1ea)](),this['canvas']=null,this[_0x12fea5(0x1f0)]=null,this[_0x12fea5(0x3fc)]=null,this[_0x12fea5(0x3ac)]='destroyed');}[_0x1d30f8(0x283)](){const _0x3ac09e=_0x1d30f8;let _0x2ab37b=this[_0x3ac09e(0x355)]();this[_0x3ac09e(0xe0)]=_0x2ab37b[_0x3ac09e(0x153)]({'label':_0x3ac09e(0x2f4),'size':0x190,'usage':GPUBufferUsage[_0x3ac09e(0x25e)]|GPUBufferUsage[_0x3ac09e(0x41a)]}),this[_0x3ac09e(0xea)]=_0x2ab37b[_0x3ac09e(0x153)]({'label':'volume\x20metadata\x20params','size':0x60,'usage':GPUBufferUsage[_0x3ac09e(0x25e)]|GPUBufferUsage[_0x3ac09e(0x41a)]}),this[_0x3ac09e(0x102)]=_0x2ab37b[_0x3ac09e(0x18a)]({'label':'volume\x20geometry\x20bind\x20group\x20layout','entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x3ac09e(0x346)]|GPUShaderStage[_0x3ac09e(0x264)],'buffer':{'type':_0x3ac09e(0x1fe)}}]}),this['sceneBindGroupLayout']=_0x2ab37b['createBindGroupLayout']({'label':_0x3ac09e(0x297),'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x3ac09e(0x346)]|GPUShaderStage['FRAGMENT'],'buffer':{'type':_0x3ac09e(0x1fe)}},{'binding':0x1,'visibility':GPUShaderStage['FRAGMENT'],'texture':{'sampleType':_0x3ac09e(0x3c4)}}]}),this[_0x3ac09e(0x249)]=_0x2ab37b[_0x3ac09e(0x18a)]({'label':_0x3ac09e(0x33b),'entries':[...Array[_0x3ac09e(0x3d2)]({'length':0x8},(_0x199a43,_0x32463b)=>({'binding':_0x32463b,'visibility':GPUShaderStage[_0x3ac09e(0x264)],'texture':{'sampleType':'unfilterable-float','viewDimension':'3d'}})),{'binding':0x8,'visibility':GPUShaderStage[_0x3ac09e(0x264)],'buffer':{'type':'read-only-storage'}},{'binding':0x9,'visibility':GPUShaderStage[_0x3ac09e(0x264)],'buffer':{'type':_0x3ac09e(0x1fe)}}]}),this[_0x3ac09e(0x324)]=_0x2ab37b[_0x3ac09e(0x18a)]({'label':_0x3ac09e(0x385),'entries':[0x0,0x1,0x2,0x3][_0x3ac09e(0x2f9)](_0x18f1f9=>({'binding':_0x18f1f9,'visibility':GPUShaderStage[_0x3ac09e(0x264)],'buffer':{'type':_0x3ac09e(0x30f)}}))}),this[_0x3ac09e(0xf4)]=_0x2ab37b['createBindGroupLayout']({'label':'volume\x20slice\x20bind\x20group\x20layout','entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x3ac09e(0x346)]|GPUShaderStage[_0x3ac09e(0x264)],'buffer':{'type':_0x3ac09e(0x1fe)}}]}),this[_0x3ac09e(0x2e9)]=new WebgpuSceneAttachments(_0x2ab37b),this[_0x3ac09e(0x106)]=new WebgpuTransferResources(_0x2ab37b),this[_0x3ac09e(0x136)]=new WebgpuSceneMeshResources(_0x2ab37b),this[_0x3ac09e(0x1f3)]=new WebgpuSliceResources(_0x2ab37b,this['getSliceBindGroupLayout']()),this[_0x3ac09e(0x228)]=new WebgpuSceneMeshResources(_0x2ab37b),this['createPipelines']();}['createPipelines'](){const _0x2c7fa6=_0x1d30f8;let _0x4f30be=this[_0x2c7fa6(0x355)](),_0x3948d4=this[_0x2c7fa6(0x3af)](),_0x28f74e=this['getGeometryBindGroupLayout'](),_0x45a37b=this[_0x2c7fa6(0x14c)](),_0x43535b=_0x4f30be[_0x2c7fa6(0x311)]({'label':_0x2c7fa6(0x296),'code':sceneMesh_default}),_0x201eb6={'module':_0x43535b,'entryPoint':'vertexMain','buffers':[{'arrayStride':0x1c,'attributes':[{'shaderLocation':0x0,'offset':0x0,'format':_0x2c7fa6(0x354)},{'shaderLocation':0x1,'offset':0xc,'format':'float32x4'}]}]},_0x2225d={'module':_0x43535b,'entryPoint':_0x2c7fa6(0x211),'targets':[{'format':_0x3948d4,'blend':premultipliedBlend$1()}]},_0x55e93b=(_0x25db35,_0x1fa623)=>_0x4f30be['createRenderPipeline']({'layout':_0x4f30be[_0x2c7fa6(0xec)]({'bindGroupLayouts':[_0x28f74e]}),'vertex':_0x201eb6,'fragment':_0x2225d,'primitive':{'topology':_0x25db35},'depthStencil':_0x1fa623?{'format':_0x2c7fa6(0x23f),'depthWriteEnabled':!0x0,'depthCompare':'less'}:void 0x0});this[_0x2c7fa6(0x358)]=_0x55e93b(_0x2c7fa6(0xeb),!0x0),this[_0x2c7fa6(0x12c)]=_0x55e93b('line-list',!0x0),this[_0x2c7fa6(0x18f)]=_0x55e93b(_0x2c7fa6(0xeb),!0x1),this[_0x2c7fa6(0x232)]=_0x55e93b(_0x2c7fa6(0x36a),!0x1);let _0x1fd160=_0x4f30be['createShaderModule']({'label':_0x2c7fa6(0x360),'code':volumeRaymarch_default});this[_0x2c7fa6(0x2d4)]=_0x4f30be[_0x2c7fa6(0x3ba)]({'layout':_0x4f30be[_0x2c7fa6(0xec)]({'bindGroupLayouts':[_0x45a37b,this[_0x2c7fa6(0x123)](),this[_0x2c7fa6(0x22c)]()]}),'vertex':{'module':_0x1fd160,'entryPoint':_0x2c7fa6(0x2a2)},'fragment':{'module':_0x1fd160,'entryPoint':_0x2c7fa6(0x211),'targets':[{'format':_0x3948d4,'blend':premultipliedBlend$1()}]},'primitive':{'topology':_0x2c7fa6(0xeb)}});let _0x274827=_0x4f30be[_0x2c7fa6(0x311)]({'label':_0x2c7fa6(0x1a4),'code':volumeSlice_default}),_0x4439b4=_0x395139=>_0x4f30be[_0x2c7fa6(0x3ba)]({'layout':_0x4f30be['createPipelineLayout']({'bindGroupLayouts':[_0x28f74e,this[_0x2c7fa6(0x123)](),this[_0x2c7fa6(0x22c)](),this[_0x2c7fa6(0x42d)]()]}),'vertex':{'module':_0x274827,'entryPoint':'vertexMain'},'fragment':{'module':_0x274827,'entryPoint':_0x2c7fa6(0x211),'targets':[{'format':_0x3948d4,'blend':premultipliedBlend$1()}]},'primitive':{'topology':_0x2c7fa6(0xeb)},'depthStencil':_0x395139?{'format':_0x2c7fa6(0x23f),'depthWriteEnabled':!0x0,'depthCompare':_0x2c7fa6(0x3c1)}:void 0x0});this[_0x2c7fa6(0x17f)]=_0x4439b4(!0x0),this[_0x2c7fa6(0xfb)]=_0x4439b4(!0x1);}['configureSourceResources'](_0x2c26e8){const _0x5cd9c7=_0x1d30f8;this[_0x5cd9c7(0xd3)]?.[_0x5cd9c7(0x377)](),this[_0x5cd9c7(0xd3)]=new WebgpuBrickAtlas(this[_0x5cd9c7(0x355)](),this['options']['memoryTargetBytes']??DEFAULT_MEMORY_TARGET_BYTES,this[_0x5cd9c7(0x1c9)][_0x5cd9c7(0x198)]??this[_0x5cd9c7(0x1c9)]['memoryTargetBytes']??DEFAULT_MEMORY_TARGET_BYTES),this[_0x5cd9c7(0xd3)][_0x5cd9c7(0x256)](_0x2c26e8),this[_0x5cd9c7(0x137)](),this['volumeBindGroup']=this['atlas'][_0x5cd9c7(0x27b)](this[_0x5cd9c7(0x123)](),this[_0x5cd9c7(0x1f5)]());}['enqueueBrickUpload'](_0x7f26c7,_0x470613){return new Promise((_0x2dc0e6,_0x2af0ea)=>{const _0x375538=_0x4af7;this[_0x375538(0x19e)][_0x375538(0x40e)]({'upload':_0x7f26c7,'generation':this[_0x375538(0x287)],'cacheOnSuccess':_0x470613,'resolve':_0x2dc0e6,'reject':_0x2af0ea}),this[_0x375538(0xe6)]();});}[_0x1d30f8(0xe6)](){const _0xf09101=_0x1d30f8;this['uploadPump']||=Promise['resolve']()[_0xf09101(0x37d)](()=>this[_0xf09101(0x336)]())[_0xf09101(0x3f4)](()=>{const _0x17aa43=_0xf09101;this['uploadPump']=null,this[_0x17aa43(0x19e)]['length']>0x0&&this[_0x17aa43(0x3ac)]==='ready'&&this[_0x17aa43(0xe6)]();});}async[_0x1d30f8(0x336)](){const _0x18788a=_0x1d30f8;for(;this['pendingBrickUploads'][_0x18788a(0x29b)]>0x0&&this[_0x18788a(0x3ac)]===_0x18788a(0x276)&&this[_0x18788a(0x1f0)];){let _0x2d3f92=this[_0x18788a(0x355)](),_0x145540=estimateBrickUploadBytes(this[_0x18788a(0x1f0)]),_0x5f1768=Math['min'](0x4000000,Math['max'](_0x145540,Math['floor'](_0x2d3f92[_0x18788a(0x2e0)][_0x18788a(0x129)]/0x4))),_0x151c1a=[],_0x389d08=0x0;for(;this['pendingBrickUploads']['length']>0x0&&_0x151c1a['length']<0x10;){let _0x5eed45=this[_0x18788a(0x19e)][0x0];if(_0x151c1a[_0x18788a(0x29b)]>0x0&&_0x389d08+_0x145540>_0x5f1768)break;if(this[_0x18788a(0x19e)]['shift'](),_0x5eed45['generation']!==this[_0x18788a(0x287)]){_0x5eed45[_0x18788a(0x280)](new DOMException(_0x18788a(0x1ee),_0x18788a(0x22f)));continue;}_0x151c1a[_0x18788a(0x40e)](_0x5eed45),_0x389d08+=_0x145540;}if(_0x151c1a[_0x18788a(0x29b)]!==0x0)try{let _0xff8911=[],_0x260c90=0x0;for(let _0x45a4e0 of _0x151c1a){let _0x1ff2b0=this[_0x18788a(0xda)]()[_0x18788a(0x2b8)](_0x45a4e0['upload'],this[_0x18788a(0x2ed)]),_0x2e0a93=Math[_0x18788a(0x332)](_0x260c90/0x100)*0x100;_0xff8911['push']({'item':_0x45a4e0,'prepared':_0x1ff2b0,'bufferOffset':_0x2e0a93}),_0x260c90=_0x2e0a93+_0x1ff2b0['values'][_0x18788a(0x3c0)];}let _0x375c2c=this[_0x18788a(0x370)](_0x260c90);await _0x375c2c[_0x18788a(0x1b7)](GPUMapMode['WRITE']);let _0x5d335e=new Uint8Array(_0x375c2c[_0x18788a(0x284)]());for(let _0xd9c52a of _0xff8911){let _0x2116ac=_0xd9c52a[_0x18788a(0x135)]['values'];_0x5d335e[_0x18788a(0x1a8)](new Uint8Array(_0x2116ac[_0x18788a(0x150)],_0x2116ac['byteOffset'],_0x2116ac[_0x18788a(0x3c0)]),_0xd9c52a[_0x18788a(0x21b)]);}_0x375c2c[_0x18788a(0x12a)]();let _0x5b2a58=_0x2d3f92['createCommandEncoder']({'label':_0x18788a(0x3cc)});for(let _0x351275 of _0xff8911)this['getAtlas']()['encodePreparedBrickUpload'](_0x5b2a58,_0x375c2c,_0x351275['bufferOffset'],_0x351275['prepared']);_0x2d3f92[_0x18788a(0x3d8)][_0x18788a(0x14b)]([_0x5b2a58[_0x18788a(0x10e)]()]),await _0x2d3f92[_0x18788a(0x3d8)]['onSubmittedWorkDone'](),await new Promise(_0x39e30b=>setTimeout(_0x39e30b,0x0)),this[_0x18788a(0x2e7)]+=_0x151c1a['length'],this[_0x18788a(0x179)]+=0x1,this[_0x18788a(0x2e5)]=Math[_0x18788a(0x334)](this[_0x18788a(0x2e5)],_0x389d08);for(let _0x19a1f6 of _0x151c1a){if(_0x19a1f6['generation']!==this[_0x18788a(0x287)]){_0x19a1f6[_0x18788a(0x280)](new DOMException(_0x18788a(0x1ee),_0x18788a(0x22f)));continue;}_0x19a1f6[_0x18788a(0x1c4)]&&this[_0x18788a(0x398)](_0x19a1f6[_0x18788a(0xe2)]),_0x19a1f6[_0x18788a(0x2af)]();}}catch(_0x16872e){for(let _0x24a123 of _0x151c1a)_0x24a123[_0x18788a(0x280)](_0x16872e);}}}[_0x1d30f8(0x370)](_0x1abe4f){const _0x50996a=_0x1d30f8;let _0x1ea062=Math[_0x50996a(0x334)](0x100,Math[_0x50996a(0x332)](_0x1abe4f/0x100)*0x100);return this[_0x50996a(0x17d)]&&this[_0x50996a(0x3a1)]>=_0x1ea062?this['uploadStagingBuffer']:(this['uploadStagingBuffer']?.[_0x50996a(0x377)](),this[_0x50996a(0x17d)]=this['getDevice']()[_0x50996a(0x153)]({'label':'volume\x20brick\x20reusable\x20upload\x20staging','size':_0x1ea062,'usage':GPUBufferUsage[_0x50996a(0x215)]|GPUBufferUsage[_0x50996a(0x345)]}),this['uploadStagingBufferSize']=_0x1ea062,this[_0x50996a(0x17d)]);}[_0x1d30f8(0x398)](_0x157665){const _0x56ad3b=_0x1d30f8;for(this['cachedBricks'][_0x56ad3b(0xd5)](_0x157665[_0x56ad3b(0x2dc)]),this[_0x56ad3b(0x127)][_0x56ad3b(0x1a8)](_0x157665[_0x56ad3b(0x2dc)],new Float32Array(_0x157665[_0x56ad3b(0x270)]));this[_0x56ad3b(0x127)]['size']>this[_0x56ad3b(0xd0)][_0x56ad3b(0x3fb)];){let _0x24af1b=this[_0x56ad3b(0x127)]['keys']()['next']()[_0x56ad3b(0x288)];if(_0x24af1b===void 0x0)break;this[_0x56ad3b(0x127)][_0x56ad3b(0xd5)](_0x24af1b);}}[_0x1d30f8(0x2f1)](_0x743c85){const _0x9d8b11=_0x1d30f8;for(let _0x35325d of this['pendingBrickUploads'][_0x9d8b11(0x27e)](0x0))_0x35325d[_0x9d8b11(0x280)](_0x743c85);}['updateTransferResources'](){const _0xd00e1b=_0x1d30f8;let _0x28ea56=this[_0xd00e1b(0x3c6)]();_0x28ea56[_0xd00e1b(0x174)](this[_0xd00e1b(0xce)],this[_0xd00e1b(0x2a6)]),this[_0xd00e1b(0x339)]=_0x28ea56[_0xd00e1b(0x27b)](this[_0xd00e1b(0x22c)]());}['recreateSceneBindGroup'](){const _0x1f2f80=_0x1d30f8;!this[_0x1f2f80(0xe0)]||!this['attachments']||!this[_0x1f2f80(0x102)]||!this[_0x1f2f80(0xcf)]||(this[_0x1f2f80(0x2f7)]=this[_0x1f2f80(0x355)]()[_0x1f2f80(0x27b)]({'label':_0x1f2f80(0x3a5),'layout':this['geometryBindGroupLayout'],'entries':[{'binding':0x0,'resource':{'buffer':this[_0x1f2f80(0xe0)]}}]}),this['sceneBindGroup']=this[_0x1f2f80(0x355)]()[_0x1f2f80(0x27b)]({'label':_0x1f2f80(0x2a7),'layout':this[_0x1f2f80(0xcf)],'entries':[{'binding':0x0,'resource':{'buffer':this[_0x1f2f80(0xe0)]}},{'binding':0x1,'resource':this[_0x1f2f80(0x2e9)][_0x1f2f80(0x40d)]}]}));}['writeParams'](){const _0x3e0161=_0x1d30f8;let _0x12a996=new Float32Array(0x64);_0x12a996[_0x3e0161(0x1a8)](this[_0x3e0161(0x33f)][_0x3e0161(0x1a6)],0x0),_0x12a996[_0x3e0161(0x1a8)](this[_0x3e0161(0x33f)]['inverseViewProjection'],0x10),_0x12a996[_0x3e0161(0x1a8)](this[_0x3e0161(0x115)],0x20),_0x12a996[_0x3e0161(0x1a8)](this['inverseModelMatrix'],0x30),_0x12a996['set']([...this[_0x3e0161(0x33f)][_0x3e0161(0x3a6)],0x1],0x40),_0x12a996['set']([this[_0x3e0161(0x238)],this['height'],0x1/this[_0x3e0161(0x238)],0x1/this[_0x3e0161(0x26d)]],0x44),_0x12a996['set']([...this[_0x3e0161(0x357)],0x0],0x48),_0x12a996[_0x3e0161(0x1a8)]([...this[_0x3e0161(0x2ac)],0x0],0x4c),_0x12a996[_0x3e0161(0x1a8)]([+(this['renderMode']===_0x3e0161(0x317)),this['opacity'],this['densityScale'],this[_0x3e0161(0x15d)]],0x50),_0x12a996[_0x3e0161(0x1a8)]([this['colorStops'][_0x3e0161(0x29b)],this[_0x3e0161(0x2a6)][_0x3e0161(0x29b)],this[_0x3e0161(0x242)],+(this['colorMode']==='step')],0x54);let _0x1d02b2=this['geographicTransform'];_0x1d02b2&&(_0x12a996[_0x3e0161(0x1a8)]([0x1,..._0x1d02b2[_0x3e0161(0x3e5)]],0x58),_0x12a996['set']([_0x1d02b2[_0x3e0161(0x1ff)],_0x1d02b2['semiMinorAxisScaled'],..._0x1d02b2[_0x3e0161(0x3f9)]],0x5c),_0x12a996[_0x3e0161(0x1a8)]([..._0x1d02b2[_0x3e0161(0x15f)],..._0x1d02b2['heightScaled']],0x60)),this['getDevice']()['queue']['writeBuffer'](this[_0x3e0161(0x214)](),0x0,_0x12a996);}[_0x1d30f8(0x137)](){const _0x18add7=_0x1d30f8;let _0x20313e=this[_0x18add7(0x1f0)],_0x37978a=this[_0x18add7(0xd3)];if(!_0x20313e||!_0x37978a)return;let _0x5be24e=_0x37978a[_0x18add7(0xd2)],_0x58a618=new Uint32Array(0x60/0x4),_0x28b5d0=Math['ceil'](_0x20313e[_0x18add7(0xf3)][_0x18add7(0xdb)]/_0x20313e[_0x18add7(0x312)]),_0x194b3e=Math[_0x18add7(0x332)](_0x20313e[_0x18add7(0x2b7)][_0x18add7(0xdb)]/_0x20313e[_0x18add7(0x416)]),_0x3a29b9=Math[_0x18add7(0x332)](_0x20313e[_0x18add7(0x1d9)]['count']/_0x20313e[_0x18add7(0x25a)]);_0x58a618['set']([_0x20313e['xAxis'][_0x18add7(0xdb)],_0x20313e[_0x18add7(0x2b7)][_0x18add7(0xdb)],_0x20313e['zAxis']['count'],0x0],0x0),_0x58a618[_0x18add7(0x1a8)]([_0x20313e['brickWidth'],_0x20313e[_0x18add7(0x416)],_0x20313e[_0x18add7(0x25a)],0x1],0x4),_0x58a618[_0x18add7(0x1a8)]([_0x28b5d0,_0x194b3e,_0x3a29b9,0x0],0x8),_0x58a618[_0x18add7(0x1a8)]([_0x5be24e[_0x18add7(0x328)],_0x5be24e[_0x18add7(0x2f3)],_0x5be24e[_0x18add7(0x22d)],_0x5be24e['slotCount']],0xc),_0x58a618[_0x18add7(0x1a8)]([(_0x20313e['brickWidth']+0x2)*_0x5be24e[_0x18add7(0x328)],(_0x20313e['brickHeight']+0x2)*_0x5be24e[_0x18add7(0x2f3)],(_0x20313e[_0x18add7(0x25a)]+0x2)*_0x5be24e[_0x18add7(0x22d)],0x0],0x10),new Float32Array(_0x58a618[_0x18add7(0x150)])[_0x18add7(0x1a8)]([_0x20313e[_0x18add7(0x32e)]??0x0,_0x20313e[_0x18add7(0x32e)]===void 0x0?0x0:0x1,0x0,0x0],0x14),this['getDevice']()[_0x18add7(0x3d8)][_0x18add7(0x3ee)](this[_0x18add7(0x1f5)](),0x0,_0x58a618);}[_0x1d30f8(0x396)](_0xfb7c9d,_0x54f0c1){const _0x546a82=_0x1d30f8;let _0x53056f=_0xfb7c9d[_0x546a82(0x220)]({'label':'volume\x20scene\x20geometry\x20pass','colorAttachments':[{'view':_0x54f0c1,'clearValue':{'r':0x0,'g':0x0,'b':0x0,'a':0x0},'loadOp':'clear','storeOp':_0x546a82(0xee)}],'depthStencilAttachment':{'view':this[_0x546a82(0x2c0)]()['sceneDepthView'],'depthClearValue':0x1,'depthLoadOp':_0x546a82(0x12f),'depthStoreOp':'store'}});this[_0x546a82(0x3bb)](_0x53056f,_0x546a82(0xdf)),this[_0x546a82(0x35d)](_0x53056f,_0x546a82(0xdf)),_0x53056f['end']();}[_0x1d30f8(0x31f)](_0x1a8d94,_0x1c344a){const _0x42aa18=_0x1d30f8;if(!this[_0x42aa18(0x40b)]||!this[_0x42aa18(0x339)]||!this['sceneBindGroup']||!this['volumePipeline'])return;let _0x35d5db=_0x1a8d94[_0x42aa18(0x220)]({'label':_0x42aa18(0xd4),'colorAttachments':[{'view':_0x1c344a,'loadOp':_0x42aa18(0x161),'storeOp':_0x42aa18(0xee)}]});_0x35d5db[_0x42aa18(0x30c)](this[_0x42aa18(0x2d4)]),_0x35d5db['setBindGroup'](0x0,this['sceneBindGroup']),_0x35d5db[_0x42aa18(0x1bb)](0x1,this[_0x42aa18(0x40b)]),_0x35d5db[_0x42aa18(0x1bb)](0x2,this[_0x42aa18(0x339)]),_0x35d5db[_0x42aa18(0x29f)](0x3),_0x35d5db[_0x42aa18(0x144)]();}[_0x1d30f8(0x407)](_0x18a70b,_0x332c90){const _0x448c96=_0x1d30f8;let _0x17c497=_0x18a70b[_0x448c96(0x220)]({'label':_0x448c96(0x10c),'colorAttachments':[{'view':_0x332c90,'loadOp':_0x448c96(0x161),'storeOp':_0x448c96(0xee)}]});this[_0x448c96(0x3bb)](_0x17c497,'always-visible'),this['drawSlices'](_0x17c497,_0x448c96(0x42c)),_0x17c497[_0x448c96(0x144)]();}[_0x1d30f8(0x3bb)](_0x4391e3,_0x25ae3d){const _0x349f86=_0x1d30f8;let _0x272a47=this[_0x349f86(0x2f7)];if(!_0x272a47)return;let _0x51d7a3=_0x25ae3d===_0x349f86(0xdf)?this['sceneTrianglePipeline']:this['overlayTrianglePipeline'],_0x43e2d5=_0x25ae3d===_0x349f86(0xdf)?this[_0x349f86(0x12c)]:this['overlayLinePipeline'];_0x51d7a3&&(_0x4391e3['setPipeline'](_0x51d7a3),_0x4391e3['setBindGroup'](0x0,_0x272a47),this[_0x349f86(0x136)]?.['draw'](_0x4391e3,'triangle-list',_0x25ae3d),this['axisResources']?.[_0x349f86(0x29f)](_0x4391e3,'triangle-list',_0x25ae3d)),_0x43e2d5&&(_0x4391e3['setPipeline'](_0x43e2d5),_0x4391e3[_0x349f86(0x1bb)](0x0,_0x272a47),this['profileResources']?.[_0x349f86(0x29f)](_0x4391e3,_0x349f86(0x36a),_0x25ae3d),this[_0x349f86(0x228)]?.[_0x349f86(0x29f)](_0x4391e3,_0x349f86(0x36a),_0x25ae3d));}['drawSlices'](_0xff99c5,_0x2a4172){const _0x30877a=_0x1d30f8;let _0x532a3c=_0x2a4172===_0x30877a(0xdf)?this['sceneSlicePipeline']:this['overlaySlicePipeline'];!_0x532a3c||!this[_0x30877a(0x2f7)]||!this[_0x30877a(0x40b)]||!this[_0x30877a(0x339)]||(_0xff99c5[_0x30877a(0x1bb)](0x0,this[_0x30877a(0x2f7)]),_0xff99c5[_0x30877a(0x1bb)](0x1,this[_0x30877a(0x40b)]),_0xff99c5[_0x30877a(0x1bb)](0x2,this[_0x30877a(0x339)]),this[_0x30877a(0x1f3)]?.[_0x30877a(0x29f)](_0xff99c5,_0x532a3c,_0x2a4172));}[_0x1d30f8(0x112)](_0xc06268){const _0x42663e=_0x1d30f8;_0xc06268[_0x42663e(0x326)]['then'](_0x2e9a53=>{const _0xd3c5f3=_0x42663e;if(this['device']!==_0xc06268||this[_0xd3c5f3(0x3ac)]===_0xd3c5f3(0x321))return;this['lifecycleState']=_0xd3c5f3(0x326),console['error']('WebGPU\x20volume\x20device\x20was\x20lost:\x20'+_0x2e9a53[_0xd3c5f3(0x3d0)]+_0xd3c5f3(0x2cf));let _0x37bc7c=this[_0xd3c5f3(0x27f)];this[_0xd3c5f3(0x1ea)](),_0x37bc7c&&this['initialize'](_0x37bc7c)['catch'](_0x8bb93e=>{const _0x2e81e9=_0xd3c5f3;console[_0x2e81e9(0x387)](_0x2e81e9(0x1db),_0x8bb93e);});});}['releaseGpuResources'](){const _0x4f9b48=_0x1d30f8;this['uploadGeneration']+=0x1,this[_0x4f9b48(0x2f1)](new DOMException(_0x4f9b48(0x206),'AbortError')),this[_0x4f9b48(0xd3)]?.[_0x4f9b48(0x377)](),this[_0x4f9b48(0x106)]?.[_0x4f9b48(0x377)](),this[_0x4f9b48(0x136)]?.['destroy'](),this[_0x4f9b48(0x1f3)]?.['destroy'](),this['axisResources']?.['destroy'](),this[_0x4f9b48(0x2e9)]?.[_0x4f9b48(0x377)](),this[_0x4f9b48(0xe0)]?.['destroy'](),this[_0x4f9b48(0xea)]?.[_0x4f9b48(0x377)](),this['uploadStagingBuffer']?.[_0x4f9b48(0x377)]();try{this[_0x4f9b48(0x181)]?.[_0x4f9b48(0x3d3)]();}catch{}this[_0x4f9b48(0x15c)]?.[_0x4f9b48(0x377)](),this[_0x4f9b48(0x212)]=null,this['device']=null,this[_0x4f9b48(0x181)]=null,this[_0x4f9b48(0xf8)]=null,this['sceneParamsBuffer']=null,this[_0x4f9b48(0xea)]=null,this['uploadStagingBuffer']=null,this['uploadStagingBufferSize']=0x0,this['geometryBindGroupLayout']=null,this[_0x4f9b48(0xcf)]=null,this[_0x4f9b48(0x249)]=null,this[_0x4f9b48(0x324)]=null,this[_0x4f9b48(0xf4)]=null,this[_0x4f9b48(0x2f7)]=null,this['sceneBindGroup']=null,this['volumeBindGroup']=null,this['transferBindGroup']=null,this[_0x4f9b48(0x2d4)]=null,this[_0x4f9b48(0x358)]=null,this['sceneLinePipeline']=null,this['overlayTrianglePipeline']=null,this[_0x4f9b48(0x232)]=null,this[_0x4f9b48(0x17f)]=null,this[_0x4f9b48(0xfb)]=null,this[_0x4f9b48(0x2e9)]=null,this['atlas']=null,this[_0x4f9b48(0x106)]=null,this[_0x4f9b48(0x136)]=null,this['sliceResources']=null,this[_0x4f9b48(0x228)]=null,this[_0x4f9b48(0x1a3)]=!0x1,this[_0x4f9b48(0x238)]=0x0,this[_0x4f9b48(0x26d)]=0x0;}[_0x1d30f8(0x355)](){const _0x39cddf=_0x1d30f8;if(!this[_0x39cddf(0x15c)])throw Error('WebGPU\x20volume\x20device\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20device\x20尚未初始化。');return this[_0x39cddf(0x15c)];}[_0x1d30f8(0x419)](){const _0x91875d=_0x1d30f8;if(!this['context'])throw Error(_0x91875d(0x142));return this[_0x91875d(0x181)];}[_0x1d30f8(0x3af)](){const _0x2d75e2=_0x1d30f8;if(!this[_0x2d75e2(0xf8)])throw Error(_0x2d75e2(0x194));return this['format'];}[_0x1d30f8(0x2f0)](){const _0xdd1e8d=_0x1d30f8;if(!this[_0xdd1e8d(0x27f)])throw Error(_0xdd1e8d(0x3cb));return this[_0xdd1e8d(0x27f)];}[_0x1d30f8(0x2c0)](){const _0x5c433f=_0x1d30f8;if(!this[_0x5c433f(0x2e9)])throw Error(_0x5c433f(0x11c));return this[_0x5c433f(0x2e9)];}['getAtlas'](){const _0x360fb3=_0x1d30f8;if(!this[_0x360fb3(0xd3)])throw Error(_0x360fb3(0x31b));return this['atlas'];}[_0x1d30f8(0x3c6)](){const _0x2037c8=_0x1d30f8;if(!this[_0x2037c8(0x106)])throw Error(_0x2037c8(0x30b));return this[_0x2037c8(0x106)];}[_0x1d30f8(0x138)](){const _0x1023cc=_0x1d30f8;if(!this['profileResources'])throw Error('WebGPU\x20profile\x20resources\x20are\x20unavailable.\x20WebGPU\x20剖面资源不可用。');return this[_0x1023cc(0x136)];}[_0x1d30f8(0x1d0)](){const _0xa599b1=_0x1d30f8;if(!this[_0xa599b1(0x1f3)])throw Error(_0xa599b1(0x2c4));return this[_0xa599b1(0x1f3)];}[_0x1d30f8(0x2d9)](){const _0x43df01=_0x1d30f8;if(!this['axisResources'])throw Error(_0x43df01(0xfd));return this[_0x43df01(0x228)];}[_0x1d30f8(0x14c)](){const _0x561c92=_0x1d30f8;if(!this['sceneBindGroupLayout'])throw Error(_0x561c92(0x3f7));return this['sceneBindGroupLayout'];}[_0x1d30f8(0x197)](){const _0x10d69e=_0x1d30f8;if(!this['geometryBindGroupLayout'])throw Error(_0x10d69e(0x1b8));return this[_0x10d69e(0x102)];}[_0x1d30f8(0x123)](){const _0x2710aa=_0x1d30f8;if(!this[_0x2710aa(0x249)])throw Error(_0x2710aa(0x1fd));return this[_0x2710aa(0x249)];}['getTransferBindGroupLayout'](){const _0x58d832=_0x1d30f8;if(!this[_0x58d832(0x324)])throw Error('WebGPU\x20transfer\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20传递函数绑定布局不可用。');return this[_0x58d832(0x324)];}[_0x1d30f8(0x42d)](){const _0x14a302=_0x1d30f8;if(!this[_0x14a302(0xf4)])throw Error(_0x14a302(0x2fa));return this[_0x14a302(0xf4)];}[_0x1d30f8(0x214)](){const _0x563a72=_0x1d30f8;if(!this['sceneParamsBuffer'])throw Error(_0x563a72(0x1b5));return this[_0x563a72(0xe0)];}[_0x1d30f8(0x1f5)](){const _0x17fb57=_0x1d30f8;if(!this['volumeParamsBuffer'])throw Error(_0x17fb57(0x204));return this[_0x17fb57(0xea)];}};const getAxis=(_0x49e3de,_0x12a8f9)=>_0x12a8f9==='x'?_0x49e3de[_0x1d30f8(0xf3)]:_0x12a8f9==='y'?_0x49e3de['yAxis']:_0x49e3de['zAxis'],clampPosition=(_0x1cc21f,_0x2b612e,_0x55de52)=>{const _0x522777=_0x1d30f8;if(!Number[_0x522777(0x193)](_0x55de52))throw Error('切面位置必须是有限数。');let _0x59512c=getAxis(_0x1cc21f,_0x2b612e),_0x37dcbd=Math['min'](_0x59512c[_0x522777(0x218)],_0x59512c[_0x522777(0x144)]),_0x1d55fc=Math[_0x522777(0x334)](_0x59512c[_0x522777(0x218)],_0x59512c[_0x522777(0x144)]);return Math[_0x522777(0xcc)](_0x1d55fc,Math[_0x522777(0x334)](_0x37dcbd,_0x55de52));},clonePreview=_0x1a9f36=>_0x1a9f36?{..._0x1a9f36}:null,cloneLockedSlice=_0x4b4274=>({..._0x4b4274}),validateAxes=_0x3e63b2=>{const _0x35e7a6=_0x1d30f8;for(let _0x2ab641 of[_0x3e63b2[_0x35e7a6(0xf3)],_0x3e63b2['yAxis'],_0x3e63b2[_0x35e7a6(0x1d9)]]){if(!Number[_0x35e7a6(0x193)](_0x2ab641['start'])||!Number['isFinite'](_0x2ab641[_0x35e7a6(0x144)]))throw Error(_0x35e7a6(0x1f1));if(!(Number[_0x35e7a6(0x3b4)](_0x2ab641[_0x35e7a6(0xdb)])&&_0x2ab641[_0x35e7a6(0xdb)]>0x0))throw Error(_0x35e7a6(0x3b9));if(_0x2ab641[_0x35e7a6(0xdb)]>0x1&&_0x2ab641['start']===_0x2ab641[_0x35e7a6(0x144)])throw Error(_0x35e7a6(0x171));}},volumeAxisValueToNormalized=(_0x27d91d,_0x1598d6)=>_0x27d91d[_0x1d30f8(0x218)]===_0x27d91d['end']?0x0:(_0x1598d6-_0x27d91d['start'])/(_0x27d91d['end']-_0x27d91d[_0x1d30f8(0x218)]),normalizedToVolumeAxisValue=(_0x4d1aed,_0x5aa900)=>_0x4d1aed['start']+_0x5aa900*(_0x4d1aed[_0x1d30f8(0x144)]-_0x4d1aed[_0x1d30f8(0x218)]);var SliceState=class{['axes'];[_0x1d30f8(0x17a)]=new Set();[_0x1d30f8(0x1ec)];[_0x1d30f8(0x293)];[_0x1d30f8(0x274)];['nextId']=0x1;[_0x1d30f8(0x37e)]=null;['slices']=[];[_0x1d30f8(0x426)]=_0x1d30f8(0x19c);[_0x1d30f8(0x242)];constructor(_0x5e8eec,_0x509f4b={}){const _0x46d6fe=_0x1d30f8;if(validateAxes(_0x5e8eec),this[_0x46d6fe(0x28b)]={'xAxis':{..._0x5e8eec[_0x46d6fe(0xf3)]},'yAxis':{..._0x5e8eec['yAxis']},'zAxis':{..._0x5e8eec[_0x46d6fe(0x1d9)]}},this[_0x46d6fe(0x242)]=_0x509f4b['volumeDimFactor']??0.25,this[_0x46d6fe(0x274)]=_0x509f4b[_0x46d6fe(0x274)]??_0x46d6fe(0xdf),this['maxLockedSlices']=_0x509f4b[_0x46d6fe(0x293)]??0xc,this[_0x46d6fe(0x1ec)]=_0x509f4b[_0x46d6fe(0x1ec)],!(this[_0x46d6fe(0x242)]>=0x0&&this[_0x46d6fe(0x242)]<=0x1))throw Error(_0x46d6fe(0x1f6));if(this[_0x46d6fe(0x274)]!==_0x46d6fe(0xdf)&&this[_0x46d6fe(0x274)]!=='always-visible')throw Error(_0x46d6fe(0xe7));if(!(Number[_0x46d6fe(0x3b4)](this[_0x46d6fe(0x293)])&&this[_0x46d6fe(0x293)]>0x0))throw Error(_0x46d6fe(0x1e6));}get['preview'](){const _0x58b05a=_0x1d30f8;return clonePreview(this[_0x58b05a(0x37e)]);}get[_0x1d30f8(0x104)](){const _0xea8b20=_0x1d30f8;return this['slices'][_0xea8b20(0x2f9)](cloneLockedSlice);}get[_0x1d30f8(0x1f8)](){return this['mode'];}get['snapshot'](){const _0x414488=_0x1d30f8;return{'preview':this[_0x414488(0xed)],'lockedSlices':this[_0x414488(0x104)],'toolMode':this[_0x414488(0x426)],'volumeDimFactor':this[_0x414488(0x242)]};}[_0x1d30f8(0xf6)](_0x3a92db){const _0x84f892=_0x1d30f8;return this[_0x84f892(0x17a)]['add'](_0x3a92db),_0x3a92db(this[_0x84f892(0x3e2)]),()=>this['listeners'][_0x84f892(0xd5)](_0x3a92db);}get['axisDefinitions'](){const _0x2dc68c=_0x1d30f8;return{'xAxis':{...this[_0x2dc68c(0x28b)][_0x2dc68c(0xf3)]},'yAxis':{...this[_0x2dc68c(0x28b)][_0x2dc68c(0x2b7)]},'zAxis':{...this['axes'][_0x2dc68c(0x1d9)]}};}[_0x1d30f8(0x2ce)](_0x3171f7){const _0x11da2c=_0x1d30f8;validateAxes(_0x3171f7),this[_0x11da2c(0x28b)]={'xAxis':{..._0x3171f7[_0x11da2c(0xf3)]},'yAxis':{..._0x3171f7[_0x11da2c(0x2b7)]},'zAxis':{..._0x3171f7[_0x11da2c(0x1d9)]}},this['currentPreview']&&(this[_0x11da2c(0x37e)]['position']=clampPosition(this[_0x11da2c(0x28b)],this[_0x11da2c(0x37e)][_0x11da2c(0x3f3)],this[_0x11da2c(0x37e)][_0x11da2c(0x209)])),this['slices']=this[_0x11da2c(0x24f)][_0x11da2c(0x2f9)](_0x19df23=>({..._0x19df23,'position':clampPosition(this['axes'],_0x19df23['axis'],_0x19df23['position'])})),this['notify']();}[_0x1d30f8(0x167)](_0x571a5a){const _0x2d7835=_0x1d30f8;this[_0x2d7835(0x426)]!==_0x571a5a&&(this[_0x2d7835(0x426)]=_0x571a5a,(_0x571a5a===null||_0x571a5a!==_0x2d7835(0x19c)&&this[_0x2d7835(0x37e)]?.[_0x2d7835(0x3f3)]!==_0x571a5a)&&(this[_0x2d7835(0x37e)]=null),this[_0x2d7835(0x300)]());}['updatePreview'](_0x30deb7,_0xae20dc){const _0x5c3854=_0x1d30f8;if(this[_0x5c3854(0x426)]===null||this[_0x5c3854(0x426)]!=='auto'&&this[_0x5c3854(0x426)]!==_0x30deb7)return;let _0x4eae62=clampPosition(this[_0x5c3854(0x28b)],_0x30deb7,_0xae20dc);this[_0x5c3854(0x37e)]?.[_0x5c3854(0x3f3)]===_0x30deb7&&this[_0x5c3854(0x37e)][_0x5c3854(0x209)]===_0x4eae62||(this[_0x5c3854(0x37e)]={'axis':_0x30deb7,'position':_0x4eae62},this[_0x5c3854(0x300)]());}[_0x1d30f8(0x154)](){const _0x49799d=_0x1d30f8;this[_0x49799d(0x37e)]&&(this['currentPreview']=null,this[_0x49799d(0x300)]());}[_0x1d30f8(0x22b)](_0x1b8f1b=this[_0x1d30f8(0x274)]){const _0x2b54f8=_0x1d30f8;return this['currentPreview']?this[_0x2b54f8(0x363)](this[_0x2b54f8(0x37e)][_0x2b54f8(0x3f3)],this[_0x2b54f8(0x37e)][_0x2b54f8(0x209)],_0x1b8f1b):null;}[_0x1d30f8(0x363)](_0x4a8dd1,_0xee7f68,_0x2b1863=this[_0x1d30f8(0x274)]){const _0x56024d=_0x1d30f8;if(this[_0x56024d(0x24f)][_0x56024d(0x29b)]>=this[_0x56024d(0x293)])return this['onLimitReached']?.(this['maxLockedSlices']),null;let _0x61f266={'id':'volume-slice-'+this[_0x56024d(0x1de)],'axis':_0x4a8dd1,'position':clampPosition(this[_0x56024d(0x28b)],_0x4a8dd1,_0xee7f68),'depthMode':_0x2b1863,'visible':!0x0};return this[_0x56024d(0x1de)]+=0x1,this['slices']=[...this[_0x56024d(0x24f)],_0x61f266],this['notify'](),cloneLockedSlice(_0x61f266);}[_0x1d30f8(0x333)](_0x48d9cd,_0xf01ad6){const _0x3ddb30=_0x1d30f8;let _0x5b10dd=this[_0x3ddb30(0x24f)][_0x3ddb30(0x222)](_0x197e9a=>_0x197e9a['id']===_0x48d9cd);if(_0x5b10dd<0x0)return;let _0x5d0d9f=this[_0x3ddb30(0x24f)][_0x5b10dd],_0x506cbf=clampPosition(this[_0x3ddb30(0x28b)],_0x5d0d9f[_0x3ddb30(0x3f3)],_0xf01ad6);_0x506cbf!==_0x5d0d9f[_0x3ddb30(0x209)]&&(this[_0x3ddb30(0x24f)]=this[_0x3ddb30(0x24f)]['map'](_0x301fc9=>_0x301fc9['id']===_0x48d9cd?{..._0x301fc9,'position':_0x506cbf}:_0x301fc9),this[_0x3ddb30(0x300)]());}[_0x1d30f8(0x1ac)](_0x20cbb6){const _0x32cc37=_0x1d30f8;let _0x5b52bf=this[_0x32cc37(0x24f)][_0x32cc37(0x1ad)](_0x267cbb=>_0x267cbb['id']!==_0x20cbb6);_0x5b52bf[_0x32cc37(0x29b)]!==this[_0x32cc37(0x24f)]['length']&&(this['slices']=_0x5b52bf,this[_0x32cc37(0x300)]());}[_0x1d30f8(0x180)](){const _0x16337f=_0x1d30f8;this[_0x16337f(0x24f)][_0x16337f(0x29b)]!==0x0&&(this[_0x16337f(0x24f)]=[],this[_0x16337f(0x300)]());}[_0x1d30f8(0x300)](){const _0x28d3b9=_0x1d30f8;let _0x111503=this[_0x28d3b9(0x3e2)];for(let _0x1dd638 of this[_0x28d3b9(0x17a)])_0x1dd638(_0x111503);}};const axisEndpoints=_0x3500a9=>_0x3500a9==='x'?[[0x0,0x0,0x0],[0x1,0x0,0x0]]:_0x3500a9==='y'?[[0x0,0x0,0x0],[0x0,0x1,0x0]]:[[0x0,0x0,0x0],[0x0,0x0,0x1]],projectAxis=(_0x26f8f3,_0x43d780)=>{const _0x4b5c96=_0x1d30f8;let _0x1545a5=multiplyMatrices(_0x43d780[_0x4b5c96(0x114)],_0x43d780[_0x4b5c96(0x115)]),[_0x188d87,_0x58b16d]=axisEndpoints(_0x26f8f3),_0x7fb420=projectPointToViewport(_0x1545a5,_0x188d87,_0x43d780[_0x4b5c96(0x109)],_0x43d780[_0x4b5c96(0x302)]),_0xdcc6a3=projectPointToViewport(_0x1545a5,_0x58b16d,_0x43d780['viewportWidth'],_0x43d780[_0x4b5c96(0x302)]);return!_0x7fb420||!_0xdcc6a3?null:{'axis':_0x26f8f3,'startX':_0x7fb420[0x0],'startY':_0x7fb420[0x1],'endX':_0xdcc6a3[0x0],'endY':_0xdcc6a3[0x1]};},hitProjectedAxis=(_0x113f22,_0x56a31a,_0x3c3acc)=>{const _0x4bd554=_0x1d30f8;let _0x5c1649=_0x113f22['endX']-_0x113f22[_0x4bd554(0x2a5)],_0x3f504f=_0x113f22['endY']-_0x113f22[_0x4bd554(0x168)],_0x4de11d=_0x5c1649*_0x5c1649+_0x3f504f*_0x3f504f,_0x386e46=_0x4de11d===0x0?0x0:((_0x56a31a-_0x113f22['startX'])*_0x5c1649+(_0x3c3acc-_0x113f22['startY'])*_0x3f504f)/_0x4de11d,_0x2e0d44=Math[_0x4bd554(0xcc)](0x1,Math['max'](0x0,_0x386e46)),_0x5a7242=_0x113f22[_0x4bd554(0x2a5)]+_0x2e0d44*_0x5c1649,_0x2f0779=_0x113f22[_0x4bd554(0x168)]+_0x2e0d44*_0x3f504f;return{'axis':_0x113f22[_0x4bd554(0x3f3)],'distance':Math[_0x4bd554(0x20b)](_0x56a31a-_0x5a7242,_0x3c3acc-_0x2f0779),'normalizedPosition':_0x2e0d44};},eventViewportPoint=(_0x3e421d,_0x2fe58d,_0xe4318c)=>{const _0x3cd154=_0x1d30f8;let _0x4f184e=_0x2fe58d[_0x3cd154(0x3c3)]();return[_0x4f184e[_0x3cd154(0x238)]===0x0?0x0:(_0x3e421d[_0x3cd154(0x2a8)]-_0x4f184e[_0x3cd154(0x305)])*_0xe4318c[_0x3cd154(0x109)]/_0x4f184e[_0x3cd154(0x238)],_0x4f184e[_0x3cd154(0x26d)]===0x0?0x0:(_0x3e421d[_0x3cd154(0x36e)]-_0x4f184e[_0x3cd154(0xfe)])*_0xe4318c['viewportHeight']/_0x4f184e['height']];},realAxisPosition=(_0x3ea98e,_0x18e6bc,_0x1c155a)=>{const _0x1541c5=_0x1d30f8;let _0x13e721=_0x3ea98e[_0x1541c5(0x213)];return normalizedToVolumeAxisValue(_0x18e6bc==='x'?_0x13e721[_0x1541c5(0xf3)]:_0x18e6bc==='y'?_0x13e721[_0x1541c5(0x2b7)]:_0x13e721[_0x1541c5(0x1d9)],_0x1c155a);};var SliceInteractionController=class{[_0x1d30f8(0x23a)];['state'];[_0x1d30f8(0x3fe)];[_0x1d30f8(0x3df)];[_0x1d30f8(0x132)];['onInteractionStart'];[_0x1d30f8(0x3e6)];[_0x1d30f8(0x3ca)]=null;['previousAxis']=null;[_0x1d30f8(0x2c3)]=!0x1;constructor(_0x4821a6,_0xee8799,_0x1759ea,_0x2e20b6={}){const _0x5076db=_0x1d30f8;this[_0x5076db(0x23a)]=_0x4821a6,this[_0x5076db(0x239)]=_0xee8799,this['getFrame']=_0x1759ea,this[_0x5076db(0x3df)]=_0x2e20b6[_0x5076db(0x421)]??0xa,this['axisHysteresis']=_0x2e20b6[_0x5076db(0x2db)]??0x4,this['onInteractionStart']=_0x2e20b6[_0x5076db(0x322)],this[_0x5076db(0x3e6)]=_0x2e20b6[_0x5076db(0x3e6)];}[_0x1d30f8(0x1f2)](){const _0x26c40d=_0x1d30f8;this[_0x26c40d(0x2c3)]||(this[_0x26c40d(0x2c3)]=!0x0,this[_0x26c40d(0x23a)][_0x26c40d(0x266)](_0x26c40d(0x1a2),this[_0x26c40d(0x38d)],!0x0),this['element'][_0x26c40d(0x266)](_0x26c40d(0x3b3),this[_0x26c40d(0x113)],!0x0),this[_0x26c40d(0x23a)]['addEventListener'](_0x26c40d(0x2b0),this['handlePointerLeave'],!0x0),window[_0x26c40d(0x266)](_0x26c40d(0x3b3),this[_0x26c40d(0x159)],!0x0),window[_0x26c40d(0x266)](_0x26c40d(0x145),this[_0x26c40d(0x110)],!0x0),window[_0x26c40d(0x266)]('pointercancel',this[_0x26c40d(0x110)],!0x0));}[_0x1d30f8(0x2e1)](_0xeb4f76,_0x532e44){const _0x17b81b=_0x1d30f8;let _0x9f534b=this[_0x17b81b(0x239)][_0x17b81b(0x104)][_0x17b81b(0x2d7)](_0x187a74=>_0x187a74['id']===_0xeb4f76);_0x9f534b&&(this['activePointer']={'kind':_0x17b81b(0x37f),'axis':_0x9f534b['axis'],'pointerId':_0x532e44[_0x17b81b(0x12d)],'sliceId':_0xeb4f76,'startX':_0x532e44['clientX'],'startY':_0x532e44[_0x17b81b(0x36e)],'moved':!0x1},this[_0x17b81b(0x322)]?.(),_0x532e44[_0x17b81b(0x124)](),_0x532e44[_0x17b81b(0x190)]());}[_0x1d30f8(0x377)](){const _0x272f65=_0x1d30f8;this['initialized']&&(this[_0x272f65(0x2c3)]=!0x1,this['element'][_0x272f65(0x428)](_0x272f65(0x1a2),this[_0x272f65(0x38d)],!0x0),this[_0x272f65(0x23a)]['removeEventListener'](_0x272f65(0x3b3),this['handlePointerMove'],!0x0),this[_0x272f65(0x23a)][_0x272f65(0x428)](_0x272f65(0x2b0),this[_0x272f65(0x1e7)],!0x0),window[_0x272f65(0x428)](_0x272f65(0x3b3),this[_0x272f65(0x159)],!0x0),window[_0x272f65(0x428)](_0x272f65(0x145),this[_0x272f65(0x110)],!0x0),window[_0x272f65(0x428)](_0x272f65(0xf1),this[_0x272f65(0x110)],!0x0),this[_0x272f65(0x3ca)]&&this[_0x272f65(0x3e6)]?.(),this[_0x272f65(0x3ca)]=null,this[_0x272f65(0x105)]=null,this[_0x272f65(0x239)][_0x272f65(0x154)]());}['findAxisHit'](_0x56e16b,_0x2100e6){const _0x35f54a=_0x1d30f8;let _0xe41fa9=this[_0x35f54a(0x3fe)]();if(!_0xe41fa9)return null;let [_0x544a02,_0x5effea]=eventViewportPoint(_0x56e16b,this[_0x35f54a(0x23a)],_0xe41fa9),_0x457c5c=this[_0x35f54a(0x239)][_0x35f54a(0x1f8)];if(_0x457c5c===null)return null;let _0x57ceb2=(_0x2100e6?[_0x2100e6]:_0x457c5c==='auto'?['x','y','z']:[_0x457c5c])[_0x35f54a(0x2f9)](_0x40fbbd=>projectAxis(_0x40fbbd,_0xe41fa9))[_0x35f54a(0x1ad)](_0x5838a8=>_0x5838a8!==null)['map'](_0xd88bfa=>hitProjectedAxis(_0xd88bfa,_0x544a02,_0x5effea));if(_0x57ceb2[_0x35f54a(0x29b)]===0x0)return null;_0x57ceb2[_0x35f54a(0x2c7)]((_0x3e073a,_0x7afcc3)=>_0x3e073a[_0x35f54a(0x409)]-_0x7afcc3[_0x35f54a(0x409)]);let _0x3df7d4=_0x57ceb2[0x0];if(!_0x2100e6&&this[_0x35f54a(0x105)]){let _0x5afdc0=_0x57ceb2[_0x35f54a(0x2d7)](_0x4a0deb=>_0x4a0deb[_0x35f54a(0x3f3)]===this[_0x35f54a(0x105)]);_0x5afdc0&&_0x5afdc0[_0x35f54a(0x409)]<=_0x3df7d4[_0x35f54a(0x409)]+this[_0x35f54a(0x132)]&&(_0x3df7d4=_0x5afdc0);}return!_0x2100e6&&_0x3df7d4[_0x35f54a(0x409)]>this[_0x35f54a(0x3df)]?null:_0x3df7d4;}['applyHit'](_0x22e17c,_0x5380fc){const _0x5f5dd1=_0x1d30f8;let _0x24bb49=realAxisPosition(this['state'],_0x22e17c['axis'],_0x22e17c['normalizedPosition']);_0x5380fc?this[_0x5f5dd1(0x239)][_0x5f5dd1(0x333)](_0x5380fc,_0x24bb49):this['state'][_0x5f5dd1(0x13c)](_0x22e17c['axis'],_0x24bb49),this[_0x5f5dd1(0x105)]=_0x22e17c[_0x5f5dd1(0x3f3)];}['handlePointerDown']=_0x5b9556=>{const _0x54d21a=_0x1d30f8;if(_0x5b9556[_0x54d21a(0x2e8)]!==0x0||this[_0x54d21a(0x3ca)])return;let _0x47c7a4=this[_0x54d21a(0x35a)](_0x5b9556);_0x47c7a4&&(this[_0x54d21a(0x187)](_0x47c7a4),this[_0x54d21a(0x3ca)]={'kind':_0x54d21a(0xed),'axis':_0x47c7a4['axis'],'pointerId':_0x5b9556[_0x54d21a(0x12d)],'startX':_0x5b9556['clientX'],'startY':_0x5b9556[_0x54d21a(0x36e)],'moved':!0x1},this['onInteractionStart']?.(),this[_0x54d21a(0x23a)]['setPointerCapture']?.(_0x5b9556['pointerId']),_0x5b9556[_0x54d21a(0x124)](),_0x5b9556[_0x54d21a(0x190)]());};[_0x1d30f8(0x113)]=_0x429f8a=>{const _0x41ee54=_0x1d30f8;if(this[_0x41ee54(0x3ca)])return;let _0x10db4b=this[_0x41ee54(0x35a)](_0x429f8a);if(!_0x10db4b){this['previousAxis']=null,this[_0x41ee54(0x239)][_0x41ee54(0x154)]();return;}this[_0x41ee54(0x187)](_0x10db4b);};[_0x1d30f8(0x159)]=_0x279cac=>{const _0x2fa309=_0x1d30f8;let _0x4acd0b=this[_0x2fa309(0x3ca)];if(!_0x4acd0b||_0x4acd0b[_0x2fa309(0x12d)]!==_0x279cac['pointerId'])return;let _0x4fc912=this[_0x2fa309(0x35a)](_0x279cac,_0x4acd0b[_0x2fa309(0x3f3)]);_0x4fc912&&(Math[_0x2fa309(0x20b)](_0x279cac[_0x2fa309(0x2a8)]-_0x4acd0b[_0x2fa309(0x2a5)],_0x279cac[_0x2fa309(0x36e)]-_0x4acd0b[_0x2fa309(0x168)])>0x4&&(_0x4acd0b[_0x2fa309(0x1ca)]=!0x0),this[_0x2fa309(0x187)](_0x4fc912,_0x4acd0b[_0x2fa309(0x1cd)]),_0x279cac[_0x2fa309(0x124)](),_0x279cac['stopPropagation']());};['handlePointerUp']=_0x48a2fb=>{const _0x12d801=_0x1d30f8;let _0x50b021=this[_0x12d801(0x3ca)];!_0x50b021||_0x50b021[_0x12d801(0x12d)]!==_0x48a2fb[_0x12d801(0x12d)]||(_0x50b021['kind']===_0x12d801(0xed)&&!_0x50b021['moved']&&this[_0x12d801(0x239)][_0x12d801(0x22b)](),this[_0x12d801(0x23a)][_0x12d801(0x143)]?.(_0x48a2fb['pointerId'])&&this['element']['releasePointerCapture'](_0x48a2fb[_0x12d801(0x12d)]),this['activePointer']=null,this[_0x12d801(0x3e6)]?.(),_0x48a2fb[_0x12d801(0x124)](),_0x48a2fb['stopPropagation']());};[_0x1d30f8(0x1e7)]=()=>{const _0xedd219=_0x1d30f8;this['activePointer']||this[_0xedd219(0x239)][_0xedd219(0x154)]();};};const axisLabel=_0x1fb5a2=>_0x1fb5a2[_0x1d30f8(0x13a)](),defaultFormatPosition=(_0x2a07f5,_0x108a59)=>axisLabel(_0x2a07f5)+'\x20'+Number(_0x108a59['toFixed'](0x4)),getAxisDefinition=(_0x219771,_0x255596)=>{const _0x2270a2=_0x1d30f8;let _0x2a5c48=_0x219771['axisDefinitions'];return _0x255596==='x'?_0x2a5c48['xAxis']:_0x255596==='y'?_0x2a5c48['yAxis']:_0x2a5c48[_0x2270a2(0x1d9)];},markerModelPoint=(_0x1d5bdf,_0x3bf5e7)=>{const _0x375c92=_0x1d30f8;let _0x5a4d3b=volumeAxisValueToNormalized(getAxisDefinition(_0x1d5bdf,_0x3bf5e7[_0x375c92(0x3f3)]),_0x3bf5e7[_0x375c92(0x209)]);return _0x3bf5e7[_0x375c92(0x3f3)]==='x'?[_0x5a4d3b,0x0,0x0]:_0x3bf5e7['axis']==='y'?[0x0,_0x5a4d3b,0x0]:[0x0,0x0,_0x5a4d3b];},applyMarkerBaseStyle=_0x1c0c6c=>{const _0x326e2d=_0x1d30f8;_0x1c0c6c['style']['position']=_0x326e2d(0x14a),_0x1c0c6c[_0x326e2d(0x415)][_0x326e2d(0x3a7)]='1',_0x1c0c6c[_0x326e2d(0x415)][_0x326e2d(0x299)]=_0x326e2d(0x380),_0x1c0c6c[_0x326e2d(0x415)][_0x326e2d(0x410)]=_0x326e2d(0x32d),_0x1c0c6c[_0x326e2d(0x415)][_0x326e2d(0x2e6)]=_0x326e2d(0x291),_0x1c0c6c[_0x326e2d(0x415)][_0x326e2d(0x1e9)]=_0x326e2d(0x252),_0x1c0c6c[_0x326e2d(0x415)][_0x326e2d(0x1dc)]='1px\x20solid\x20rgb(255\x20255\x20255\x20/\x2065%)',_0x1c0c6c[_0x326e2d(0x415)][_0x326e2d(0x259)]=_0x326e2d(0x291),_0x1c0c6c[_0x326e2d(0x415)][_0x326e2d(0x1c5)]='#fff',_0x1c0c6c[_0x326e2d(0x415)]['background']=_0x326e2d(0x216),_0x1c0c6c[_0x326e2d(0x415)][_0x326e2d(0x1da)]='12px/1.2\x20sans-serif',_0x1c0c6c[_0x326e2d(0x415)][_0x326e2d(0x34a)]=_0x326e2d(0x16f),_0x1c0c6c['style'][_0x326e2d(0xef)]=_0x326e2d(0x2c1),_0x1c0c6c['style'][_0x326e2d(0x15e)]=_0x326e2d(0x2b1),_0x1c0c6c['style'][_0x326e2d(0x36c)]=_0x326e2d(0x2b1);},createDeleteButton=()=>{const _0x303828=_0x1d30f8;let _0x41cda6=document['createElement']('button');return _0x41cda6['type']=_0x303828(0x2e8),_0x41cda6['textContent']='×',_0x41cda6[_0x303828(0x362)](_0x303828(0x313),'删除切面'),_0x41cda6[_0x303828(0x415)]['padding']=_0x303828(0x2bc),_0x41cda6[_0x303828(0x415)]['border']='0',_0x41cda6[_0x303828(0x415)][_0x303828(0x1c5)]=_0x303828(0xd1),_0x41cda6[_0x303828(0x415)][_0x303828(0x1cc)]=_0x303828(0x25b),_0x41cda6[_0x303828(0x415)][_0x303828(0x1e1)]=_0x303828(0x196),_0x41cda6;};var SliceMarkerOverlay=class{['container'];['state'];['getFrame'];[_0x1d30f8(0x240)];[_0x1d30f8(0x19d)];['markers']=new Map();[_0x1d30f8(0x1b3)];[_0x1d30f8(0x101)];[_0x1d30f8(0x18e)]=null;constructor(_0x5601f5,_0x3df409,_0x1874de,_0x3f49d6={}){const _0x5a5b44=_0x1d30f8;this[_0x5a5b44(0xe4)]=_0x5601f5,this[_0x5a5b44(0x239)]=_0x3df409,this[_0x5a5b44(0x3fe)]=_0x1874de,this[_0x5a5b44(0x240)]=_0x3f49d6[_0x5a5b44(0x240)],this['formatPosition']=_0x3f49d6[_0x5a5b44(0x19d)]??defaultFormatPosition,this[_0x5a5b44(0x1b3)]=_0x5601f5[_0x5a5b44(0x415)][_0x5a5b44(0x209)],getComputedStyle(_0x5601f5)[_0x5a5b44(0x209)]==='static'&&(_0x5601f5[_0x5a5b44(0x415)][_0x5a5b44(0x209)]=_0x5a5b44(0x31d)),this[_0x5a5b44(0x101)]=_0x3df409[_0x5a5b44(0xf6)](()=>this['update']());}['update'](){const _0x56bdf3=_0x1d30f8;let _0x367393=this[_0x56bdf3(0x239)][_0x56bdf3(0x3e2)];this[_0x56bdf3(0x2b5)](_0x367393[_0x56bdf3(0xed)]),this[_0x56bdf3(0x1fa)](_0x367393['lockedSlices']);let _0x4d7122=this[_0x56bdf3(0x3fe)]();if(!_0x4d7122){this[_0x56bdf3(0x134)]();return;}_0x367393[_0x56bdf3(0xed)]&&this['previewMarker']&&this[_0x56bdf3(0x11f)](this[_0x56bdf3(0x18e)],_0x367393[_0x56bdf3(0xed)],_0x4d7122);for(let _0x19799d of _0x367393[_0x56bdf3(0x104)]){let _0x5b9074=this['markers']['get'](_0x19799d['id']);_0x5b9074&&this[_0x56bdf3(0x11f)](_0x5b9074,_0x19799d,_0x4d7122);}}[_0x1d30f8(0x377)](){const _0x2a083f=_0x1d30f8;this[_0x2a083f(0x101)](),this['previewMarker']?.[_0x2a083f(0x3de)](),this[_0x2a083f(0x18e)]=null;for(let _0x1413cc of this[_0x2a083f(0x352)][_0x2a083f(0x270)]())_0x1413cc[_0x2a083f(0x3de)]();this[_0x2a083f(0x352)][_0x2a083f(0x12f)](),this[_0x2a083f(0xe4)]['style'][_0x2a083f(0x209)]=this[_0x2a083f(0x1b3)];}[_0x1d30f8(0x2b5)](_0x5a8938){const _0xc1ceb5=_0x1d30f8;if(!_0x5a8938){this[_0xc1ceb5(0x18e)]?.[_0xc1ceb5(0x3de)](),this[_0xc1ceb5(0x18e)]=null;return;}this[_0xc1ceb5(0x18e)]||(this[_0xc1ceb5(0x18e)]=document[_0xc1ceb5(0x3a9)](_0xc1ceb5(0x40a)),applyMarkerBaseStyle(this[_0xc1ceb5(0x18e)]),this[_0xc1ceb5(0x18e)][_0xc1ceb5(0x415)][_0xc1ceb5(0x1b1)]=_0xc1ceb5(0x2b1),this[_0xc1ceb5(0x18e)][_0xc1ceb5(0x415)][_0xc1ceb5(0x251)]=_0xc1ceb5(0x343),this[_0xc1ceb5(0xe4)][_0xc1ceb5(0x371)](this[_0xc1ceb5(0x18e)])),this[_0xc1ceb5(0x18e)]['textContent']=this['formatPosition'](_0x5a8938[_0xc1ceb5(0x3f3)],_0x5a8938[_0xc1ceb5(0x209)]);}[_0x1d30f8(0x1fa)](_0x2c590e){const _0x487885=_0x1d30f8;let _0x25cb26=new Set(_0x2c590e['map'](_0x4f6bd7=>_0x4f6bd7['id']));for(let [_0x18b058,_0x469c2c]of this['markers'])_0x25cb26[_0x487885(0x314)](_0x18b058)||(_0x469c2c[_0x487885(0x3de)](),this['markers'][_0x487885(0xd5)](_0x18b058));for(let _0x5496c6 of _0x2c590e){let _0x28cb91=this[_0x487885(0x352)][_0x487885(0x2d0)](_0x5496c6['id']);_0x28cb91||(_0x28cb91=this[_0x487885(0x3dd)](_0x5496c6['id']),this[_0x487885(0x352)]['set'](_0x5496c6['id'],_0x28cb91),this[_0x487885(0xe4)][_0x487885(0x371)](_0x28cb91));let _0x542ecf=_0x28cb91[_0x487885(0x2e2)];_0x542ecf&&(_0x542ecf[_0x487885(0x253)]=this['formatPosition'](_0x5496c6[_0x487885(0x3f3)],_0x5496c6['position']));}}['createLockedMarker'](_0x1f9938){const _0xc731aa=_0x1d30f8;let _0x1954a2=document['createElement'](_0xc731aa(0x40a));applyMarkerBaseStyle(_0x1954a2),_0x1954a2[_0xc731aa(0x415)][_0xc731aa(0x1e1)]=_0xc731aa(0x20c),_0x1954a2['append'](document[_0xc731aa(0x32c)](''));let _0x3d2a13=createDeleteButton();return _0x3d2a13[_0xc731aa(0x266)]('pointerdown',_0x4607b1=>_0x4607b1['stopPropagation']()),_0x3d2a13['addEventListener']('click',_0x1aa7c6=>{const _0xddfed=_0xc731aa;_0x1aa7c6[_0xddfed(0x190)](),this[_0xddfed(0x239)]['removeSlice'](_0x1f9938);}),_0x1954a2['addEventListener']('pointerdown',_0x35ee7c=>this[_0xc731aa(0x240)]?.[_0xc731aa(0x2e1)](_0x1f9938,_0x35ee7c)),_0x1954a2[_0xc731aa(0x371)](_0x3d2a13),_0x1954a2;}[_0x1d30f8(0x11f)](_0x407c1f,_0x2453f1,_0x579fd7){const _0x3ff672=_0x1d30f8;let _0x3e06b7=projectPointToViewport(multiplyMatrices(_0x579fd7[_0x3ff672(0x114)],_0x579fd7['modelMatrix']),markerModelPoint(this[_0x3ff672(0x239)],_0x2453f1),_0x579fd7[_0x3ff672(0x109)],_0x579fd7[_0x3ff672(0x302)]);if(!_0x3e06b7||_0x3e06b7[0x2]<0x0||_0x3e06b7[0x2]>0x1){_0x407c1f[_0x3ff672(0x415)][_0x3ff672(0x299)]=_0x3ff672(0x2b1);return;}_0x407c1f[_0x3ff672(0x415)][_0x3ff672(0x299)]='flex',_0x407c1f[_0x3ff672(0x415)][_0x3ff672(0x305)]=_0x3e06b7[0x0]+'px',_0x407c1f[_0x3ff672(0x415)]['top']=_0x3e06b7[0x1]+'px';}[_0x1d30f8(0x134)](){const _0x287c9c=_0x1d30f8;this[_0x287c9c(0x18e)]&&(this[_0x287c9c(0x18e)]['style'][_0x287c9c(0x299)]='none');for(let _0x20b933 of this['markers'][_0x287c9c(0x270)]())_0x20b933[_0x287c9c(0x415)][_0x287c9c(0x299)]=_0x287c9c(0x2b1);}};const clamp=(_0x487fed,_0x400310)=>Math['min'](_0x400310-0x1,Math[_0x1d30f8(0x334)](0x0,_0x487fed)),createPhysicalBrickValues=(_0x59580f,_0x377f33,_0x140473,_0x3162fa)=>{const _0x4f19ea=_0x1d30f8;validateVolumeChunk(_0x59580f,_0x3162fa,_0x140473[_0x4f19ea(0x27c)]);let _0x401e98=_0x377f33[_0x4f19ea(0x238)]+_0x377f33[_0x4f19ea(0x15b)]*0x2,_0x517ee7=_0x377f33['height']+_0x377f33['halo']*0x2,_0x1e0ce2=_0x377f33[_0x4f19ea(0x3c4)]+_0x377f33[_0x4f19ea(0x15b)]*0x2,_0x2ad835=new Float32Array(_0x401e98*_0x517ee7*_0x1e0ce2);for(let _0x2db1f0=0x0;_0x2db1f0<_0x1e0ce2;_0x2db1f0+=0x1){let _0x24b0a7=clamp(_0x140473[_0x4f19ea(0x246)][_0x4f19ea(0x3c8)]+_0x2db1f0-_0x377f33[_0x4f19ea(0x15b)],_0x59580f['zAxis'][_0x4f19ea(0xdb)])-_0x3162fa[_0x4f19ea(0x241)][_0x4f19ea(0x3c8)];for(let _0x12537a=0x0;_0x12537a<_0x517ee7;_0x12537a+=0x1){let _0x1474ac=clamp(_0x140473[_0x4f19ea(0x246)][_0x4f19ea(0x418)]+_0x12537a-_0x377f33[_0x4f19ea(0x15b)],_0x59580f[_0x4f19ea(0x2b7)][_0x4f19ea(0xdb)])-_0x3162fa[_0x4f19ea(0x241)][_0x4f19ea(0x418)];for(let _0x4b1aa3=0x0;_0x4b1aa3<_0x401e98;_0x4b1aa3+=0x1){let _0x577c11=clamp(_0x140473[_0x4f19ea(0x246)][_0x4f19ea(0x405)]+_0x4b1aa3-_0x377f33[_0x4f19ea(0x15b)],_0x59580f[_0x4f19ea(0xf3)][_0x4f19ea(0xdb)])-_0x3162fa[_0x4f19ea(0x241)]['xStart'];_0x2ad835[(_0x2db1f0*_0x517ee7+_0x12537a)*_0x401e98+_0x4b1aa3]=_0x3162fa[_0x4f19ea(0x270)][(_0x24b0a7*_0x3162fa[_0x4f19ea(0x26d)]+_0x1474ac)*_0x3162fa['width']+_0x577c11];}}}return _0x2ad835;},normalizeColorStops=_0x4e6c8d=>{const _0x537139=_0x1d30f8;if(_0x4e6c8d[_0x537139(0x29b)]===0x0)throw Error(_0x537139(0x34d));return _0x4e6c8d[_0x537139(0x2f9)]((_0x34463a,_0x61dd14)=>{const _0x4662d3=_0x537139;if(Number[_0x4662d3(0x3d4)](_0x34463a[_0x4662d3(0xcc)])||Number[_0x4662d3(0x3d4)](_0x34463a['max']))throw TypeError('第'+(_0x61dd14+0x1)+'个色标范围不能是NaN');if(_0x34463a[_0x4662d3(0xcc)]>=_0x34463a[_0x4662d3(0x334)])throw Error('第'+(_0x61dd14+0x1)+_0x4662d3(0x3b7));return{'min':_0x34463a[_0x4662d3(0xcc)],'max':_0x34463a[_0x4662d3(0x334)],'color':parseRasterColor(_0x34463a[_0x4662d3(0x1c5)])};})[_0x537139(0x2c7)]((_0x42716,_0xe132f0)=>_0x42716['min']-_0xe132f0['min']);},parseRasterColor=_0x5be922=>{const _0xa19922=_0x1d30f8;let _0x34e903=_0x5be922['trim']()['toLowerCase']();if(_0x34e903[_0xa19922(0x400)]('#'))return parseHexColor(_0x34e903);if(_0x34e903[_0xa19922(0x400)](_0xa19922(0x2cb)))return parseRgbColor(_0x34e903,!0x0);if(_0x34e903['startsWith'](_0xa19922(0x404)))return parseRgbColor(_0x34e903,!0x1);throw Error(_0xa19922(0x39f)+_0x5be922);},parseHexColor=_0x2949a8=>{const _0x3dcbac=_0x1d30f8;if(_0x2949a8[_0x3dcbac(0x29b)]===0x4)return normalizeRgb(Number['parseInt'](''+_0x2949a8[0x1]+_0x2949a8[0x1],0x10),Number[_0x3dcbac(0x28a)](''+_0x2949a8[0x2]+_0x2949a8[0x2],0x10),Number[_0x3dcbac(0x28a)](''+_0x2949a8[0x3]+_0x2949a8[0x3],0x10),0x1);if(_0x2949a8[_0x3dcbac(0x29b)]===0x7)return normalizeRgb(Number[_0x3dcbac(0x28a)](_0x2949a8[_0x3dcbac(0x210)](0x1,0x3),0x10),Number[_0x3dcbac(0x28a)](_0x2949a8[_0x3dcbac(0x210)](0x3,0x5),0x10),Number['parseInt'](_0x2949a8[_0x3dcbac(0x210)](0x5,0x7),0x10),0x1);throw Error(_0x3dcbac(0x310)+_0x2949a8);},parseRgbColor=(_0x3c6aad,_0x32eb73)=>{const _0x41058a=_0x1d30f8;let _0x6a039b=_0x3c6aad[_0x41058a(0x278)](/^rgba?\(([^)]+)\)$/);if(!_0x6a039b)throw Error(_0x41058a(0xe8)+_0x3c6aad);let _0x16c989=_0x6a039b[0x1]['split'](',')[_0x41058a(0x2f9)](_0x168a21=>_0x168a21[_0x41058a(0x374)]()),_0x1c8356=_0x32eb73?0x4:0x3;if(_0x16c989['length']!==_0x1c8356)throw Error(_0x41058a(0x244)+_0x3c6aad);return normalizeRgb(Number(_0x16c989[0x0]),Number(_0x16c989[0x1]),Number(_0x16c989[0x2]),_0x32eb73?Number(_0x16c989[0x3]):0x1);},normalizeRgb=(_0x4390ef,_0x30026b,_0x2f4b6e,_0x29eb57)=>{const _0x30eb05=_0x1d30f8;if(!isValidRgbChannel(_0x4390ef)||!isValidRgbChannel(_0x30026b)||!isValidRgbChannel(_0x2f4b6e))throw Error(_0x30eb05(0x379));if(!Number[_0x30eb05(0x193)](_0x29eb57)||_0x29eb57<0x0||_0x29eb57>0x1)throw Error(_0x30eb05(0x1df));return[_0x4390ef/0xff,_0x30026b/0xff,_0x2f4b6e/0xff,_0x29eb57];},isValidRgbChannel=_0x5a2598=>Number[_0x1d30f8(0x193)](_0x5a2598)&&_0x5a2598>=0x0&&_0x5a2598<=0xff,validateStops=_0x19294b=>{const _0x34ebec=_0x1d30f8;if(_0x19294b[_0x34ebec(0x29b)]===0x0)throw Error('Volume\x20opacity\x20stops\x20cannot\x20be\x20empty.\x20体积透明度节点不能为空。');let _0xcb56a6=-0x1/0x0;for(let _0x578df7 of _0x19294b){if(!Number[_0x34ebec(0x193)](_0x578df7['value'])||_0x578df7[_0x34ebec(0x288)]<=_0xcb56a6)throw Error(_0x34ebec(0x272));if(!Number[_0x34ebec(0x193)](_0x578df7['opacity'])||_0x578df7[_0x34ebec(0x251)]<0x0||_0x578df7[_0x34ebec(0x251)]>0x1)throw Error(_0x34ebec(0x1b9));_0xcb56a6=_0x578df7['value'];}},findTransferInterval=(_0x44430a,_0x329eb2)=>{const _0x1be118=_0x1d30f8;if(_0x44430a<=_0x329eb2[0x0])return[0x0,0x0,0x0];for(let _0x341397=0x1;_0x341397<_0x329eb2['length'];_0x341397+=0x1)if(_0x44430a<=_0x329eb2[_0x341397]){let _0x15aff6=_0x329eb2[_0x341397]-_0x329eb2[_0x341397-0x1];return[_0x341397-0x1,_0x341397,_0x15aff6===0x0?0x0:Math[_0x1be118(0xcc)](0x1,Math[_0x1be118(0x334)](0x0,(_0x44430a-_0x329eb2[_0x341397-0x1])/_0x15aff6))];}let _0x3a70ad=_0x329eb2[_0x1be118(0x29b)]-0x1;return[_0x3a70ad,_0x3a70ad,0x0];},prepareWebgpuVolumeTransfer=(_0x2ba85a,_0x516535)=>{const _0x2c4479=_0x1d30f8;validateStops(_0x516535);let _0x13f4bc=normalizeColorStops([..._0x2ba85a]);return{'colorStops':_0x13f4bc[_0x2c4479(0x200)]((_0x53080d,_0x404cd0)=>{const _0xeceaa7=_0x2c4479;let _0xe584f3=_0x13f4bc[Math[_0xeceaa7(0xcc)](_0x404cd0+0x1,_0x13f4bc['length']-0x1)][_0xeceaa7(0x1c5)];return[{'value':_0x53080d[_0xeceaa7(0xcc)],'color':_0x53080d[_0xeceaa7(0x1c5)]},{'value':_0x53080d['max'],'color':_0xe584f3}];}),'opacityStops':_0x516535['map'](_0x503844=>({..._0x503844}))};},sampleVolumeTransferColor=(_0xa893b0,_0x1f6fb4,_0x3f61c4,_0x25d0aa)=>{const _0x558a86=_0x1d30f8;if(!Number[_0x558a86(0x193)](_0xa893b0))return[0x0,0x0,0x0,0x0];let [_0x50cb6f,_0x1e872f,_0x1f26d6]=findTransferInterval(_0xa893b0,_0x1f6fb4[_0x558a86(0x2f9)](_0x1c1fe4=>_0x1c1fe4[_0x558a86(0x288)])),_0x4f1184=_0x1f6fb4[_0x50cb6f],_0x4bdb86=_0x1f6fb4[_0x1e872f],_0x278fb9=_0x25d0aa==='step'?0x0:_0x1f26d6;return[_0x4f1184[_0x558a86(0x1c5)][0x0]+(_0x4bdb86['color'][0x0]-_0x4f1184[_0x558a86(0x1c5)][0x0])*_0x278fb9,_0x4f1184[_0x558a86(0x1c5)][0x1]+(_0x4bdb86[_0x558a86(0x1c5)][0x1]-_0x4f1184['color'][0x1])*_0x278fb9,_0x4f1184['color'][0x2]+(_0x4bdb86['color'][0x2]-_0x4f1184[_0x558a86(0x1c5)][0x2])*_0x278fb9,(_0x4f1184[_0x558a86(0x1c5)][0x3]+(_0x4bdb86[_0x558a86(0x1c5)][0x3]-_0x4f1184[_0x558a86(0x1c5)][0x3])*_0x278fb9)*_0x3f61c4];},sampleVolumeTransferOpacity=(_0x5b163c,_0x42ceef,_0x39c7c5)=>{const _0x5ecbfc=_0x1d30f8;if(!Number[_0x5ecbfc(0x193)](_0x5b163c))return 0x0;let [_0x1c99a3,_0x3d9616,_0x580580]=findTransferInterval(_0x5b163c,_0x42ceef[_0x5ecbfc(0x2f9)](_0x233e4a=>_0x233e4a[_0x5ecbfc(0x288)])),_0x544346=_0x39c7c5==='step'?0x0:_0x580580;return _0x42ceef[_0x1c99a3][_0x5ecbfc(0x251)]+(_0x42ceef[_0x3d9616]['opacity']-_0x42ceef[_0x1c99a3][_0x5ecbfc(0x251)])*_0x544346;},DEFAULT_CAMERA={'position':[1.4,1.2,2.1],'target':[0.5,0.5,0.5],'up':[0x0,0x1,0x0],'projection':{'type':'perspective','fovYDegrees':0x2d,'near':0.01,'far':0x64}},IDENTITY_MATRIX=[0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1],clamp01=_0x5301b6=>Math[_0x1d30f8(0xcc)](0x1,Math[_0x1d30f8(0x334)](0x0,_0x5301b6)),qualityStepLength=_0x21bb40=>_0x21bb40===_0x1d30f8(0x21f)?0.012:_0x21bb40===_0x1d30f8(0x237)?0.0025:_0x21bb40==='balanced'?0.005:0.006,qualityUploadCount=_0x4e42dc=>_0x4e42dc==='performance'?0x8:_0x4e42dc===_0x1d30f8(0x237)?0x2:0x4,nextAutoQuality=(_0x15792e,_0x4bf827)=>_0x4bf827>0x18?_0x15792e===_0x1d30f8(0x237)?_0x1d30f8(0x41b):_0x1d30f8(0x21f):_0x4bf827<0xe?_0x15792e===_0x1d30f8(0x21f)?'balanced':_0x1d30f8(0x237):_0x15792e,validatePositiveOption=(_0x5b8cbf,_0x342123)=>{const _0x1d2ca2=_0x1d30f8;if(!Number[_0x1d2ca2(0x193)](_0x5b8cbf)||_0x5b8cbf<=0x0)throw Error(_0x342123+_0x1d2ca2(0x10b)+_0x342123+_0x1d2ca2(0x307));return _0x5b8cbf;},normalizeClipBox=(_0x48e026,_0x3bee58)=>{const _0x450043=_0x1d30f8;if(!_0x3bee58)return{'minimum':[0x0,0x0,0x0],'maximum':[0x1,0x1,0x1]};let _0x3b3e6a=clamp01(volumeAxisValueToNormalized(_0x48e026[_0x450043(0x1f0)][_0x450043(0xf3)],_0x3bee58[_0x450043(0xfa)])),_0x2af61b=clamp01(volumeAxisValueToNormalized(_0x48e026['metadata'][_0x450043(0xf3)],_0x3bee58[_0x450043(0x294)])),_0x3bd7f0=clamp01(volumeAxisValueToNormalized(_0x48e026[_0x450043(0x1f0)][_0x450043(0x2b7)],_0x3bee58[_0x450043(0x157)])),_0x22aacd=clamp01(volumeAxisValueToNormalized(_0x48e026[_0x450043(0x1f0)]['yAxis'],_0x3bee58[_0x450043(0x133)])),_0x17fcc5=clamp01(volumeAxisValueToNormalized(_0x48e026[_0x450043(0x1f0)][_0x450043(0x1d9)],_0x3bee58[_0x450043(0x203)])),_0x2dcdb7=clamp01(volumeAxisValueToNormalized(_0x48e026['metadata'][_0x450043(0x1d9)],_0x3bee58[_0x450043(0x29d)]));return{'minimum':[Math[_0x450043(0xcc)](_0x3b3e6a,_0x2af61b),Math[_0x450043(0xcc)](_0x3bd7f0,_0x22aacd),Math[_0x450043(0xcc)](_0x17fcc5,_0x2dcdb7)],'maximum':[Math['max'](_0x3b3e6a,_0x2af61b),Math[_0x450043(0x334)](_0x3bd7f0,_0x22aacd),Math[_0x450043(0x334)](_0x17fcc5,_0x2dcdb7)]};},createAxesMesh=()=>({'id':_0x1d30f8(0x375),'topology':_0x1d30f8(0x36a),'depthMode':_0x1d30f8(0x42c),'vertices':new Float32Array([0x0,0x0,0x0,0x1,0.2,0.2,0x1,0x1,0x0,0x0,0x1,0.2,0.2,0x1,0x0,0x0,0x0,0.2,0x1,0.2,0x1,0x0,0x1,0x0,0.2,0x1,0.2,0x1,0x0,0x0,0x0,0.2,0.5,0x1,0x1,0x0,0x0,0x1,0.2,0.5,0x1,0x1])}),createBoundsMesh=()=>{const _0x15f3d2=_0x1d30f8;let _0x142ec6=[0.1,0.53,0.56,0.62],_0x46b10d=[[0x0,0x0,0x0],[0x1,0x0,0x0],[0x0,0x1,0x0],[0x1,0x1,0x0],[0x0,0x0,0x1],[0x1,0x0,0x1],[0x0,0x1,0x1],[0x1,0x1,0x1]],_0xbc062b=[[0x0,0x1],[0x0,0x2],[0x1,0x3],[0x2,0x3],[0x4,0x5],[0x4,0x6],[0x5,0x7],[0x6,0x7],[0x0,0x4],[0x1,0x5],[0x2,0x6],[0x3,0x7]],_0x3f3f80=new Float32Array(_0xbc062b[_0x15f3d2(0x29b)]*0x2*0x7),_0xced1f0=0x0;for(let _0x5b09e2 of _0xbc062b)for(let _0x5f28a3 of _0x5b09e2)_0x3f3f80[_0x15f3d2(0x1a8)]([..._0x46b10d[_0x5f28a3],..._0x142ec6],_0xced1f0),_0xced1f0+=0x7;return{'id':_0x15f3d2(0x2a0),'topology':_0x15f3d2(0x36a),'depthMode':_0x15f3d2(0xdf),'vertices':_0x3f3f80};},createProfileSceneMesh=(_0x3d6318,_0x2658a9,_0xd22c0e,_0x4dff0f)=>{const _0x1d0cc4=_0x1d30f8;let _0x101bb1=new Float32Array(_0x3d6318[_0x1d0cc4(0x3be)][_0x1d0cc4(0x29b)]*0x7);for(let _0xa778ef=0x0;_0xa778ef<_0x3d6318[_0x1d0cc4(0x3be)][_0x1d0cc4(0x29b)];_0xa778ef+=0x1){let _0x3033a4=_0x3d6318[_0x1d0cc4(0x3be)][_0xa778ef],_0x3be38f=_0x3033a4*0x3,_0x59a931=sampleVolumeTransferOpacity(_0x3d6318[_0x1d0cc4(0x270)][_0x3033a4],_0xd22c0e,_0x4dff0f),_0x5aa4bc=sampleVolumeTransferColor(_0x3d6318['values'][_0x3033a4],_0x2658a9,_0x3d6318[_0x1d0cc4(0x251)]*_0x59a931,_0x4dff0f);_0x101bb1[_0x1d0cc4(0x1a8)]([_0x3d6318[_0x1d0cc4(0x221)][_0x3be38f],_0x3d6318[_0x1d0cc4(0x221)][_0x3be38f+0x1],_0x3d6318[_0x1d0cc4(0x221)][_0x3be38f+0x2],_0x5aa4bc[0x0]*_0x5aa4bc[0x3],_0x5aa4bc[0x1]*_0x5aa4bc[0x3],_0x5aa4bc[0x2]*_0x5aa4bc[0x3],_0x5aa4bc[0x3]],_0xa778ef*0x7);}return{'id':_0x3d6318['id'],'topology':'triangle-list','depthMode':_0x3d6318[_0x1d0cc4(0x274)],'vertices':_0x101bb1};},descriptorDistance=(_0x1eb6c7,_0x1b4870,_0x5633f9)=>{const _0x29a669=_0x1d30f8;let _0x1bc9f4=(_0x1eb6c7[_0x29a669(0x3ad)]['x']+0.5)/_0x1b4870[_0x29a669(0xf5)],_0x5dc2f5=(_0x1eb6c7['coordinate']['y']+0.5)/_0x1b4870['countY'],_0x57567f=(_0x1eb6c7[_0x29a669(0x3ad)]['z']+0.5)/_0x1b4870[_0x29a669(0x279)];return Math[_0x29a669(0x20b)](_0x1bc9f4-_0x5633f9['position'][0x0],_0x5dc2f5-_0x5633f9[_0x29a669(0x209)][0x1],_0x57567f-_0x5633f9['position'][0x2]);},descriptorLogicalIndex=(_0x238b20,_0x5175b3)=>(_0x238b20[_0x1d30f8(0x3ad)]['z']*_0x5175b3[_0x1d30f8(0x26e)]+_0x238b20[_0x1d30f8(0x3ad)]['y'])*_0x5175b3[_0x1d30f8(0xf5)]+_0x238b20['coordinate']['x'],descriptorContainsSlice=(_0x128154,_0x33badb,_0x55636d,_0x49cca5)=>{const _0x4445a5=_0x1d30f8;let _0x42c2c6=_0x55636d==='x'?{'start':_0x128154[_0x4445a5(0x246)][_0x4445a5(0x405)],'count':_0x128154[_0x4445a5(0x246)][_0x4445a5(0x298)],'size':_0x33badb[_0x4445a5(0x1f0)]['xAxis'][_0x4445a5(0xdb)]}:_0x55636d==='y'?{'start':_0x128154[_0x4445a5(0x246)]['levelStart'],'count':_0x128154[_0x4445a5(0x246)][_0x4445a5(0x3ce)],'size':_0x33badb[_0x4445a5(0x1f0)][_0x4445a5(0x2b7)][_0x4445a5(0xdb)]}:{'start':_0x128154['coreRange']['sourceYStart'],'count':_0x128154[_0x4445a5(0x246)][_0x4445a5(0x26c)],'size':_0x33badb['metadata'][_0x4445a5(0x1d9)][_0x4445a5(0xdb)]};return _0x49cca5>=_0x42c2c6['start']/_0x42c2c6['size']&&_0x49cca5<=(_0x42c2c6[_0x4445a5(0x218)]+_0x42c2c6[_0x4445a5(0xdb)])/_0x42c2c6[_0x4445a5(0x2d2)];},descriptorContainsProfile=(_0x1bac6b,_0x20626b,_0x5d9c06)=>{const _0x54aec9=_0x1d30f8;let _0x4d3885=_0x1bac6b[_0x54aec9(0x246)][_0x54aec9(0x405)]/_0x20626b[_0x54aec9(0x1f0)]['xAxis'][_0x54aec9(0xdb)],_0x2f571c=(_0x1bac6b['coreRange'][_0x54aec9(0x405)]+_0x1bac6b['coreRange']['xCount'])/_0x20626b[_0x54aec9(0x1f0)]['xAxis'][_0x54aec9(0xdb)],_0x522cc9=_0x1bac6b[_0x54aec9(0x246)]['levelStart']/_0x20626b[_0x54aec9(0x1f0)][_0x54aec9(0x2b7)][_0x54aec9(0xdb)],_0x7f20e=(_0x1bac6b[_0x54aec9(0x246)]['levelStart']+_0x1bac6b[_0x54aec9(0x246)][_0x54aec9(0x3ce)])/_0x20626b[_0x54aec9(0x1f0)][_0x54aec9(0x2b7)]['count'],_0x18ae2f=_0x1bac6b['coreRange'][_0x54aec9(0x3c8)]/_0x20626b[_0x54aec9(0x1f0)][_0x54aec9(0x1d9)][_0x54aec9(0xdb)],_0x141767=(_0x1bac6b[_0x54aec9(0x246)][_0x54aec9(0x3c8)]+_0x1bac6b[_0x54aec9(0x246)]['sourceYCount'])/_0x20626b[_0x54aec9(0x1f0)][_0x54aec9(0x1d9)]['count'];return _0x5d9c06['some'](_0x4dc502=>{const _0x15608c=_0x54aec9;let _0x4b5812=volumeAxisValueToNormalized(_0x20626b[_0x15608c(0x1f0)][_0x15608c(0x2b7)],_0x4dc502[_0x15608c(0x20a)][0x0]),_0x3e81f8=volumeAxisValueToNormalized(_0x20626b['metadata'][_0x15608c(0x2b7)],_0x4dc502[_0x15608c(0x20a)][_0x4dc502[_0x15608c(0x20a)][_0x15608c(0x29b)]-0x1]);if(Math[_0x15608c(0x334)](_0x4b5812,_0x3e81f8)<_0x522cc9||Math['min'](_0x4b5812,_0x3e81f8)>_0x7f20e)return!0x1;for(let _0x32ed5c=0x0;_0x32ed5c<_0x4dc502[_0x15608c(0x205)]['length'];_0x32ed5c+=0x2){let _0x426c3b=volumeAxisValueToNormalized(_0x20626b[_0x15608c(0x1f0)][_0x15608c(0xf3)],_0x4dc502['path'][_0x32ed5c]),_0x2434de=volumeAxisValueToNormalized(_0x20626b[_0x15608c(0x1f0)][_0x15608c(0x1d9)],_0x4dc502['path'][_0x32ed5c+0x1]);if(_0x426c3b>=_0x4d3885&&_0x426c3b<=_0x2f571c&&_0x2434de>=_0x18ae2f&&_0x2434de<=_0x141767)return!0x0;}return!0x1;});},descriptorDemandPriority=(_0x156be9,_0x3c5886,_0x11b4cc,_0x4227a1)=>{const _0xa71da4=_0x1d30f8;let _0x2c73ae=_0x11b4cc['preview'];if(_0x2c73ae){let _0x39e59c=_0x2c73ae[_0xa71da4(0x3f3)]==='x'?_0x3c5886[_0xa71da4(0x1f0)][_0xa71da4(0xf3)]:_0x2c73ae[_0xa71da4(0x3f3)]==='y'?_0x3c5886[_0xa71da4(0x1f0)][_0xa71da4(0x2b7)]:_0x3c5886[_0xa71da4(0x1f0)][_0xa71da4(0x1d9)];if(descriptorContainsSlice(_0x156be9,_0x3c5886,_0x2c73ae[_0xa71da4(0x3f3)],volumeAxisValueToNormalized(_0x39e59c,_0x2c73ae[_0xa71da4(0x209)])))return 0x0;}for(let _0x435029 of _0x11b4cc['lockedSlices']){let _0x34e225=_0x435029[_0xa71da4(0x3f3)]==='x'?_0x3c5886[_0xa71da4(0x1f0)][_0xa71da4(0xf3)]:_0x435029['axis']==='y'?_0x3c5886[_0xa71da4(0x1f0)][_0xa71da4(0x2b7)]:_0x3c5886[_0xa71da4(0x1f0)][_0xa71da4(0x1d9)];if(_0x435029['visible']&&descriptorContainsSlice(_0x156be9,_0x3c5886,_0x435029[_0xa71da4(0x3f3)],volumeAxisValueToNormalized(_0x34e225,_0x435029[_0xa71da4(0x209)])))return 0x1;}return descriptorContainsProfile(_0x156be9,_0x3c5886,_0x4227a1)?0x2:0x3;};var VolumeScene=class VolumeScene{[_0x1d30f8(0x3a3)]='webgpu';[_0x1d30f8(0x1d5)];[_0x1d30f8(0x111)];['canvas'];['renderMode'];[_0x1d30f8(0x414)];[_0x1d30f8(0x257)]=[];[_0x1d30f8(0x226)];[_0x1d30f8(0x41d)];[_0x1d30f8(0x2cd)];[_0x1d30f8(0x413)];['colorStops'];[_0x1d30f8(0x1dd)];[_0x1d30f8(0x2a6)];[_0x1d30f8(0x1ce)]=[];[_0x1d30f8(0x394)];['sourceGeneration']=0x0;[_0x1d30f8(0x42b)]=new Set();[_0x1d30f8(0x107)]=new Map();[_0x1d30f8(0x3db)]=new Set();['frameRequest']=0x0;[_0x1d30f8(0x321)]=!0x1;[_0x1d30f8(0x224)];[_0x1d30f8(0x319)];['coordinateSystem'];[_0x1d30f8(0x3e0)];[_0x1d30f8(0x237)];[_0x1d30f8(0x13f)]=_0x1d30f8(0x41b);[_0x1d30f8(0x327)]=0x0;[_0x1d30f8(0x337)]=0x0;[_0x1d30f8(0xdc)];[_0x1d30f8(0x196)]=null;[_0x1d30f8(0x235)];[_0x1d30f8(0x10a)];[_0x1d30f8(0x103)];[_0x1d30f8(0x330)];['interactionStepScale'];[_0x1d30f8(0x120)]=new Set();['renderDirty']=!0x0;[_0x1d30f8(0x406)]=!0x1;[_0x1d30f8(0x21a)]=0x0;[_0x1d30f8(0x2c2)]=0x0;[_0x1d30f8(0x2eb)]=null;[_0x1d30f8(0x1a1)];[_0x1d30f8(0x3e8)];[_0x1d30f8(0x24c)];[_0x1d30f8(0x383)]=0x0;[_0x1d30f8(0x26f)]=0x0;['actualFrameIntervalMilliseconds']=0x0;['requestControllers']=new Set();['sliceInteraction']=null;[_0x1d30f8(0x229)]=null;constructor(_0x3d0af7,_0x2656e3){const _0x2aa3c1=_0x1d30f8;this['renderer']=_0x2656e3,this['canvas']=_0x3d0af7['canvas'],this[_0x2aa3c1(0x414)]=_0x3d0af7[_0x2aa3c1(0x414)]??_0x3d0af7[_0x2aa3c1(0x27f)],this[_0x2aa3c1(0x12e)]=_0x3d0af7[_0x2aa3c1(0x12e)]??'managed',this['source']=_0x3d0af7[_0x2aa3c1(0x226)],this[_0x2aa3c1(0x394)]=_0x3d0af7[_0x2aa3c1(0x394)]??0x0,this['layout']=this['createLayout'](_0x3d0af7),this['descriptors']=createVolumeBrickDescriptors(this[_0x2aa3c1(0x226)][_0x2aa3c1(0x1f0)],this['layout']),this['volumeCamera']=new VolumeCamera({'state':_0x3d0af7['camera']??DEFAULT_CAMERA}),this[_0x2aa3c1(0x413)]=this['createSliceState'](_0x3d0af7);let _0x774a9a=prepareWebgpuVolumeTransfer(_0x3d0af7['colorStops'],_0x3d0af7[_0x2aa3c1(0x2a6)]);if(this['colorStops']=_0x774a9a['colorStops'],this[_0x2aa3c1(0x1dd)]=_0x3d0af7[_0x2aa3c1(0xce)],this[_0x2aa3c1(0x2a6)]=_0x3d0af7[_0x2aa3c1(0x2a6)],this[_0x2aa3c1(0x224)]=_0x3d0af7[_0x2aa3c1(0x115)]??IDENTITY_MATRIX,this[_0x2aa3c1(0x319)]=validatePositiveOption(_0x3d0af7['verticalScale']??0x1,_0x2aa3c1(0x319)),this['coordinateSystem']=_0x3d0af7[_0x2aa3c1(0x3b0)]??_0x2aa3c1(0x393),this[_0x2aa3c1(0x3b0)]===_0x2aa3c1(0x23d)&&_0x3d0af7[_0x2aa3c1(0x115)])throw Error(_0x2aa3c1(0x33e));this[_0x2aa3c1(0x3e0)]=_0x3d0af7[_0x2aa3c1(0x3e0)]??null,this[_0x2aa3c1(0x237)]=_0x3d0af7[_0x2aa3c1(0x237)]??'auto',this[_0x2aa3c1(0x235)]=_0x3d0af7['navigationMode']??_0x2aa3c1(0x1c3),this['pixelRatioCap']=validatePositiveOption(_0x3d0af7[_0x2aa3c1(0x10a)]??0x2,_0x2aa3c1(0x10a)),this[_0x2aa3c1(0x103)]=validatePositiveOption(_0x3d0af7[_0x2aa3c1(0x103)]??0x1,'renderScale'),this['interactionRenderScale']=validatePositiveOption(_0x3d0af7[_0x2aa3c1(0x330)]??0.6,_0x2aa3c1(0x330)),this[_0x2aa3c1(0x1cb)]=validatePositiveOption(_0x3d0af7[_0x2aa3c1(0x1cb)]??0x1,_0x2aa3c1(0x1cb)),this[_0x2aa3c1(0xdc)]=_0x3d0af7[_0x2aa3c1(0xdc)]??_0x2aa3c1(0x301),this[_0x2aa3c1(0x1a1)]=_0x3d0af7['sliceInteraction']?.[_0x2aa3c1(0x274)]??_0x2aa3c1(0xdf),this['slicePlateColor']=_0x3d0af7['sliceInteraction']?.['plateColor'],this[_0x2aa3c1(0x24c)]=_0x3d0af7['sliceInteraction']?.[_0x2aa3c1(0x24c)],this['renderer'][_0x2aa3c1(0x125)](()=>this[_0x2aa3c1(0x31a)]()),this[_0x2aa3c1(0x1d5)]['setTransfer'](_0x774a9a[_0x2aa3c1(0xce)],_0x774a9a[_0x2aa3c1(0x2a6)]);let _0x22c892=_0x3d0af7[_0x2aa3c1(0x3c9)]??this[_0x2aa3c1(0x3b0)]===_0x2aa3c1(0x393);this[_0x2aa3c1(0x1d5)][_0x2aa3c1(0x2ce)](_0x22c892?[createBoundsMesh(),createAxesMesh()]:[]),this[_0x2aa3c1(0x1d5)]['update']({'renderMode':_0x3d0af7[_0x2aa3c1(0x426)]??_0x2aa3c1(0x41e),'colorMode':this[_0x2aa3c1(0xdc)],'opacity':_0x3d0af7['opacity']??0.3,'densityScale':_0x3d0af7['densityScale']??0x1,'stepLength':this[_0x2aa3c1(0x164)](),'volumeDimFactor':this['sliceState'][_0x2aa3c1(0x242)]}),this[_0x2aa3c1(0x373)](),this[_0x2aa3c1(0x2f6)](),this[_0x2aa3c1(0x369)](),this[_0x2aa3c1(0x1d2)](_0x3d0af7),this[_0x2aa3c1(0x3ab)]();}static async[_0x1d30f8(0x21d)](_0xc69b82){const _0x4bfcf4=_0x1d30f8;if(validateVolumeSource(_0xc69b82['source']),validateVolumeTimeIndex(_0xc69b82[_0x4bfcf4(0x226)][_0x4bfcf4(0x1f0)],_0xc69b82[_0x4bfcf4(0x394)]??0x0),(_0xc69b82[_0x4bfcf4(0x420)]?.['halo']??0x1)!==0x1)throw Error(_0x4bfcf4(0x3aa));let _0x5d7e4a=_0xc69b82['chunk']?.[_0x4bfcf4(0x3d9)]??0x20000000,_0x1081e4=new WebgpuVolumeSceneRenderer({'memoryTargetBytes':_0x5d7e4a,'memoryHardLimitBytes':_0xc69b82[_0x4bfcf4(0x420)]?.[_0x4bfcf4(0x176)]??_0x5d7e4a});await _0x1081e4[_0x4bfcf4(0x1f2)](_0xc69b82[_0x4bfcf4(0x27f)]);let _0xe1291f=new VolumeScene(_0xc69b82,_0x1081e4);return _0xe1291f[_0x4bfcf4(0x1e3)](),_0xe1291f[_0x4bfcf4(0x268)](),_0xe1291f[_0x4bfcf4(0x12e)]===_0x4bfcf4(0x3cf)&&_0xe1291f['requestRender'](),_0xe1291f;}get['camera'](){const _0x167cf5=_0x1d30f8;return this[_0x167cf5(0x111)][_0x167cf5(0x239)];}get['lockedSlices'](){const _0x40ae6c=_0x1d30f8;return this[_0x40ae6c(0x413)][_0x40ae6c(0x104)];}get['statistics'](){const _0x16c160=_0x1d30f8;let _0x1795d4=this[_0x16c160(0x12e)]===_0x16c160(0x33a)||this[_0x16c160(0x30a)]()||performance[_0x16c160(0x1d6)]()-this[_0x16c160(0x383)]<=0xfa?this['actualFrameIntervalMilliseconds']:0x0;return{...this[_0x16c160(0x1d5)][_0x16c160(0xd0)],'pendingBrickCount':this['pendingKeys'][_0x16c160(0x2d2)],'brickScheduleCount':this[_0x16c160(0x21a)],'brickSortCount':this[_0x16c160(0x2c2)],'actualFrameIntervalMilliseconds':_0x1795d4,'estimatedFps':_0x1795d4>0x0?0x3e8/_0x1795d4:0x0,'effectiveQuality':this[_0x16c160(0x2fe)](),'effectiveRenderScale':this[_0x16c160(0x3d1)](),'interactionKind':this[_0x16c160(0x1d3)]()};}[_0x1d30f8(0x174)](_0x4014c){const _0x258b47=_0x1d30f8;_0x4014c[_0x258b47(0x33f)]&&this['setCamera'](_0x4014c[_0x258b47(0x33f)]),_0x4014c[_0x258b47(0x115)]&&(this[_0x258b47(0x224)]=[..._0x4014c[_0x258b47(0x115)]]),_0x4014c[_0x258b47(0x319)]!==void 0x0&&(this[_0x258b47(0x319)]=validatePositiveOption(_0x4014c['verticalScale'],_0x258b47(0x319))),_0x4014c['clipBox']!==void 0x0&&(this[_0x258b47(0x3e0)]=_0x4014c[_0x258b47(0x3e0)]),_0x4014c[_0x258b47(0x237)]&&(this[_0x258b47(0x237)]=_0x4014c[_0x258b47(0x237)]),_0x4014c[_0x258b47(0x235)]&&(this[_0x258b47(0x235)]=_0x4014c[_0x258b47(0x235)]);let _0x1c8ef3=!0x1;if(_0x4014c[_0x258b47(0x10a)]!==void 0x0&&(this[_0x258b47(0x10a)]=validatePositiveOption(_0x4014c[_0x258b47(0x10a)],_0x258b47(0x10a)),_0x1c8ef3=!0x0),_0x4014c['renderScale']!==void 0x0&&(this[_0x258b47(0x103)]=validatePositiveOption(_0x4014c[_0x258b47(0x103)],_0x258b47(0x103)),_0x1c8ef3=!0x0),_0x4014c['interactionRenderScale']!==void 0x0&&(this[_0x258b47(0x330)]=validatePositiveOption(_0x4014c[_0x258b47(0x330)],_0x258b47(0x330)),_0x1c8ef3=this[_0x258b47(0x30a)]()),_0x4014c['interactionStepScale']!==void 0x0&&(this[_0x258b47(0x1cb)]=validatePositiveOption(_0x4014c['interactionStepScale'],_0x258b47(0x1cb))),_0x4014c['colorMode']&&(this[_0x258b47(0xdc)]=_0x4014c[_0x258b47(0xdc)]),_0x4014c[_0x258b47(0xce)]||_0x4014c[_0x258b47(0x2a6)]){let _0x36c4f9=prepareWebgpuVolumeTransfer(_0x4014c['colorStops']??this[_0x258b47(0x1dd)],_0x4014c['opacityStops']??this[_0x258b47(0x2a6)]);this[_0x258b47(0xce)]=_0x36c4f9['colorStops'],this['colorInputs']=_0x4014c[_0x258b47(0xce)]??this[_0x258b47(0x1dd)],this[_0x258b47(0x2a6)]=_0x4014c['opacityStops']??this['opacityStops'],this[_0x258b47(0x1d5)][_0x258b47(0x290)](_0x36c4f9[_0x258b47(0xce)],_0x36c4f9['opacityStops']),this['rebuildProfiles']();}_0x4014c[_0x258b47(0xdc)]&&!_0x4014c['colorStops']&&!_0x4014c[_0x258b47(0x2a6)]&&this[_0x258b47(0x2fd)](),this[_0x258b47(0x1d5)][_0x258b47(0x174)]({'renderMode':_0x4014c['mode'],'colorMode':_0x4014c[_0x258b47(0xdc)],'opacity':_0x4014c[_0x258b47(0x251)],'densityScale':_0x4014c[_0x258b47(0xe5)],'stepLength':this[_0x258b47(0x164)]()}),this[_0x258b47(0x2f6)](),_0x1c8ef3&&this['resize'](),this[_0x258b47(0x424)]();}[_0x1d30f8(0x186)](_0xbd29ea){const _0x4d0e9b=_0x1d30f8;this[_0x4d0e9b(0x111)][_0x4d0e9b(0x169)](_0xbd29ea),this[_0x4d0e9b(0x3f2)](),this[_0x4d0e9b(0x424)]();}[_0x1d30f8(0x16b)](_0x33de3d){const _0xbfe7d1=_0x1d30f8;validateVolumeTimeIndex(this[_0xbfe7d1(0x226)][_0xbfe7d1(0x1f0)],_0x33de3d),_0x33de3d!==this['timeIndex']&&(this[_0xbfe7d1(0x394)]=_0x33de3d,this['resetBrickRequests']());}['setSource'](_0xcd32ef){const _0x4343ed=_0x1d30f8;validateVolumeSource(_0xcd32ef),this[_0x4343ed(0x226)]=_0xcd32ef,this[_0x4343ed(0x394)]=Math[_0x4343ed(0xcc)](this['timeIndex'],_0xcd32ef[_0x4343ed(0x1f0)][_0x4343ed(0x26b)]-0x1),this[_0x4343ed(0x41d)]=createVolumeBrickLayout(_0xcd32ef[_0x4343ed(0x1f0)],this[_0x4343ed(0x41d)][_0x4343ed(0x39e)]),this[_0x4343ed(0x2cd)]=createVolumeBrickDescriptors(_0xcd32ef['metadata'],this['layout']),this[_0x4343ed(0x413)][_0x4343ed(0x2ce)](_0xcd32ef[_0x4343ed(0x1f0)]),this[_0x4343ed(0x373)](),this[_0x4343ed(0x2f6)](),this[_0x4343ed(0x1d8)](),this[_0x4343ed(0x2fd)](),this[_0x4343ed(0x424)]();}[_0x1d30f8(0x2ea)](_0x4ad3d5){const _0x5edb1a=_0x1d30f8;this[_0x5edb1a(0x1ce)]=_0x4ad3d5,this[_0x5edb1a(0x2fd)](),this[_0x5edb1a(0x3f2)](),this[_0x5edb1a(0x424)]();}['setSliceTool'](_0x1ba1c2){const _0x8a00ef=_0x1d30f8;this[_0x8a00ef(0x413)][_0x8a00ef(0x167)](_0x1ba1c2);}[_0x1d30f8(0x11b)](_0x53541a){const _0x24e44c=_0x1d30f8;if(this[_0x24e44c(0x321)]||this[_0x24e44c(0x120)]['has'](_0x53541a))return;let _0x39e79b=!this[_0x24e44c(0x30a)]();this[_0x24e44c(0x120)][_0x24e44c(0x366)](_0x53541a),_0x39e79b&&(this[_0x24e44c(0x26f)]=0x0,this['resize']());}[_0x1d30f8(0x349)](_0x489bed){const _0x547714=_0x1d30f8;this[_0x547714(0x321)]||!this[_0x547714(0x120)][_0x547714(0xd5)](_0x489bed)||this['isInteracting']()||(this[_0x547714(0x26f)]=0x0,this['resize']());}[_0x1d30f8(0x363)](_0x59341a,_0x54ef53){const _0x4c7078=_0x1d30f8;this[_0x4c7078(0x413)][_0x4c7078(0x13c)](_0x59341a,_0x54ef53);let _0x1e97f1=this[_0x4c7078(0x413)][_0x4c7078(0x22b)]();if(!_0x1e97f1)throw Error(_0x4c7078(0x367));return _0x1e97f1;}['updateSlice'](_0x45873e,_0xa63f0d){const _0x49cdff=_0x1d30f8;this[_0x49cdff(0x413)][_0x49cdff(0x333)](_0x45873e,_0xa63f0d);}[_0x1d30f8(0x1ac)](_0x1a52db){const _0x1ab8aa=_0x1d30f8;this[_0x1ab8aa(0x413)]['removeSlice'](_0x1a52db);}['clearLockedSlices'](){const _0x351e06=_0x1d30f8;this[_0x351e06(0x413)][_0x351e06(0x180)]();}[_0x1d30f8(0x1e3)](){const _0xeaaf64=_0x1d30f8;let _0x4eacf3=Math[_0xeaaf64(0xcc)](window[_0xeaaf64(0x412)]||0x1,this[_0xeaaf64(0x10a)])*this['getEffectiveRenderScale'](),_0x5ba925=Math['max'](0x1,Math[_0xeaaf64(0x3e4)](this[_0xeaaf64(0x27f)]['clientWidth']*_0x4eacf3||this[_0xeaaf64(0x27f)][_0xeaaf64(0x238)]||0x1)),_0x3de7f3=Math[_0xeaaf64(0x334)](0x1,Math[_0xeaaf64(0x3e4)](this[_0xeaaf64(0x27f)][_0xeaaf64(0x3cd)]*_0x4eacf3||this[_0xeaaf64(0x27f)][_0xeaaf64(0x26d)]||0x1));this[_0xeaaf64(0x111)][_0xeaaf64(0x10f)](_0x5ba925/_0x3de7f3),(this[_0xeaaf64(0x27f)][_0xeaaf64(0x238)]!==_0x5ba925||this[_0xeaaf64(0x27f)]['height']!==_0x3de7f3)&&this[_0xeaaf64(0x1d5)][_0xeaaf64(0x1e3)](_0x5ba925,_0x3de7f3),this['requestRender']();}[_0x1d30f8(0x166)](){const _0x5e06cf=_0x1d30f8;if(this['destroyed'])return;this[_0x5e06cf(0x2b2)](),this['flushBrickSchedule']();let _0x21f57d=this['volumeCamera']['matrices'];if(this[_0x5e06cf(0x1d5)][_0x5e06cf(0x186)]({'viewProjection':Array['from'](_0x21f57d['viewProjection']),'inverseViewProjection':Array[_0x5e06cf(0x3d2)](_0x21f57d[_0x5e06cf(0xfc)]),'cameraPosition':this[_0x5e06cf(0x111)][_0x5e06cf(0x239)][_0x5e06cf(0x209)]}),this['renderer'][_0x5e06cf(0x174)]({'stepLength':this[_0x5e06cf(0x164)]()}),!this[_0x5e06cf(0x1d5)][_0x5e06cf(0x166)]()){this[_0x5e06cf(0x37a)]=!0x0;return;}this['renderDirty']=!0x1,this[_0x5e06cf(0x30e)](performance['now']()),this[_0x5e06cf(0x229)]?.['update']();}[_0x1d30f8(0x151)](){const _0x4a4619=_0x1d30f8;if(this['destroyed'])return Promise[_0x4a4619(0x280)](Error(_0x4a4619(0x318)));this['flushSliceState'](),this['flushBrickSchedule']();let _0x4626b2=this[_0x4a4619(0x111)][_0x4a4619(0x1ef)];return this[_0x4a4619(0x1d5)][_0x4a4619(0x186)]({'viewProjection':Array[_0x4a4619(0x3d2)](_0x4626b2['viewProjection']),'inverseViewProjection':Array[_0x4a4619(0x3d2)](_0x4626b2[_0x4a4619(0xfc)]),'cameraPosition':this[_0x4a4619(0x111)][_0x4a4619(0x239)]['position']}),this[_0x4a4619(0x1d5)][_0x4a4619(0x151)]();}['destroy'](){const _0x155d79=_0x1d30f8;if(!this[_0x155d79(0x321)]){this[_0x155d79(0x321)]=!0x0,this[_0x155d79(0x38f)]+=0x1;for(let _0x484a4f of this[_0x155d79(0x1cf)])_0x484a4f[_0x155d79(0x2d6)]();this[_0x155d79(0x1cf)][_0x155d79(0x12f)](),cancelAnimationFrame(this['frameRequest']),this[_0x155d79(0x1d5)][_0x155d79(0x125)](null),this[_0x155d79(0x257)][_0x155d79(0x27e)](0x0)[_0x155d79(0x265)](_0x197177=>_0x197177()),this[_0x155d79(0x1d5)]['destroy'](),this[_0x155d79(0x243)]?.[_0x155d79(0x377)](),this[_0x155d79(0x229)]?.[_0x155d79(0x377)](),this['loadedKeys']['clear'](),this['pendingKeys'][_0x155d79(0x12f)](),this[_0x155d79(0x3db)][_0x155d79(0x12f)](),this[_0x155d79(0x120)][_0x155d79(0x12f)](),this[_0x155d79(0x2eb)]=null;}}['createLayout'](_0x1b8008){const _0x464d5c=_0x1d30f8;return createVolumeBrickLayout(_0x1b8008[_0x464d5c(0x226)][_0x464d5c(0x1f0)],{'width':_0x1b8008[_0x464d5c(0x420)]?.[_0x464d5c(0x238)],'height':_0x1b8008[_0x464d5c(0x420)]?.[_0x464d5c(0x26d)],'depth':_0x1b8008[_0x464d5c(0x420)]?.[_0x464d5c(0x3c4)],'halo':_0x1b8008[_0x464d5c(0x420)]?.[_0x464d5c(0x15b)]});}[_0x1d30f8(0x2fe)](){const _0x2eaf9b=_0x1d30f8;return this[_0x2eaf9b(0x237)]===_0x2eaf9b(0x19c)?this['autoQuality']:this[_0x2eaf9b(0x237)];}[_0x1d30f8(0x164)](){const _0x1a3227=_0x1d30f8;let _0x1566bc=qualityStepLength(this[_0x1a3227(0x2fe)]());return(this['coordinateSystem']===_0x1a3227(0x23d)?_0x1566bc*0.05:_0x1566bc)*(this[_0x1a3227(0x30a)]()?this[_0x1a3227(0x1cb)]:0x1);}[_0x1d30f8(0x30a)](){const _0x407c82=_0x1d30f8;return this['activeInteractions'][_0x407c82(0x2d2)]>0x0;}[_0x1d30f8(0x1d3)](){const _0x1bd712=_0x1d30f8;return this['activeInteractions'][_0x1bd712(0x2d2)]===0x0?_0x1bd712(0x29c):this['activeInteractions']['size']>0x1?_0x1bd712(0x1c7):this[_0x1bd712(0x120)][_0x1bd712(0x270)]()['next']()['value']??'idle';}[_0x1d30f8(0x3d1)](){const _0x35ab38=_0x1d30f8;return this['renderScale']*(this[_0x35ab38(0x30a)]()?this[_0x35ab38(0x330)]:0x1);}['recordFrameInterval'](_0x16ab48){const _0x128391=_0x1d30f8;if(this[_0x128391(0x383)]=_0x16ab48,!(this[_0x128391(0x12e)]===_0x128391(0x33a)||this[_0x128391(0x30a)]())){this['lastTimingFrameTimestamp']=0x0;return;}if(this[_0x128391(0x26f)]>0x0){let _0x3067c3=_0x16ab48-this[_0x128391(0x26f)];_0x3067c3>0x0&&_0x3067c3<=0xfa&&(this[_0x128391(0x23e)]=this[_0x128391(0x23e)]===0x0?_0x3067c3:this['actualFrameIntervalMilliseconds']*0.8+_0x3067c3*0.2,this['updateAutoQuality'](_0x3067c3));}this[_0x128391(0x26f)]=_0x16ab48;}['updateAutoQuality'](_0x5be2ac){const _0x2911a6=_0x1d30f8;if(this['quality']!==_0x2911a6(0x19c)||(this[_0x2911a6(0x327)]+=0x1,this[_0x2911a6(0x337)]+=_0x5be2ac,this['autoFrameCount']<0x1e))return;let _0x51578a=this[_0x2911a6(0x337)]/this['autoFrameCount'];if(this[_0x2911a6(0x327)]=0x0,this[_0x2911a6(0x337)]=0x0,this[_0x2911a6(0x30a)]()&&_0x51578a<0xe)return;let _0xf12749=nextAutoQuality(this[_0x2911a6(0x13f)],_0x51578a);_0xf12749!==this[_0x2911a6(0x13f)]&&(this[_0x2911a6(0x13f)]=_0xf12749,this[_0x2911a6(0x3f2)](),this[_0x2911a6(0x424)]());}['createSliceState'](_0x530b7c){const _0x33c520=_0x1d30f8;return new SliceState(_0x530b7c[_0x33c520(0x226)][_0x33c520(0x1f0)],{'volumeDimFactor':_0x530b7c[_0x33c520(0x243)]?.[_0x33c520(0x242)],'depthMode':_0x530b7c[_0x33c520(0x243)]?.[_0x33c520(0x274)],'maxLockedSlices':_0x530b7c['sliceInteraction']?.['maxLockedSlices'],'onLimitReached':_0x226824=>_0x530b7c['sliceInteraction']?.[_0x33c520(0x100)]?.(Error(_0x33c520(0x24b)+_0x226824+'.\x20最大锁定切面数量为\x20'+_0x226824+'。'))});}[_0x1d30f8(0x369)](){const _0x4b6f4c=_0x1d30f8;let _0x1ac244=this[_0x4b6f4c(0x413)][_0x4b6f4c(0xf6)](_0x413b5f=>{const _0x27eab6=_0x4b6f4c;this[_0x27eab6(0x2eb)]=_0x413b5f,this[_0x27eab6(0x424)]();});this[_0x4b6f4c(0x257)]['push'](_0x1ac244);}[_0x1d30f8(0x2b2)](){const _0x3ca923=_0x1d30f8;let _0x11d000=this['pendingSliceSnapshot'];if(!_0x11d000)return;this['pendingSliceSnapshot']=null;let _0x317b51=[];if(_0x11d000[_0x3ca923(0xed)]){let _0x54f5ff=_0x11d000[_0x3ca923(0xed)]['axis']==='x'?this['source'][_0x3ca923(0x1f0)][_0x3ca923(0xf3)]:_0x11d000[_0x3ca923(0xed)]['axis']==='y'?this[_0x3ca923(0x226)][_0x3ca923(0x1f0)]['yAxis']:this['source'][_0x3ca923(0x1f0)][_0x3ca923(0x1d9)];_0x317b51['push']({'id':'volume-slice-preview','axis':_0x11d000[_0x3ca923(0xed)]['axis'],'position':clamp01(volumeAxisValueToNormalized(_0x54f5ff,_0x11d000[_0x3ca923(0xed)][_0x3ca923(0x209)])),'depthMode':this[_0x3ca923(0x1a1)],'visible':!0x0,'opacity':0.72,'plateColor':this[_0x3ca923(0x3e8)]});}for(let _0x79d151 of _0x11d000[_0x3ca923(0x104)]){let _0x5336ce=_0x79d151[_0x3ca923(0x3f3)]==='x'?this['source'][_0x3ca923(0x1f0)][_0x3ca923(0xf3)]:_0x79d151[_0x3ca923(0x3f3)]==='y'?this['source'][_0x3ca923(0x1f0)][_0x3ca923(0x2b7)]:this[_0x3ca923(0x226)][_0x3ca923(0x1f0)][_0x3ca923(0x1d9)];_0x317b51[_0x3ca923(0x40e)]({..._0x79d151,'position':clamp01(volumeAxisValueToNormalized(_0x5336ce,_0x79d151['position'])),'opacity':0x1,'plateColor':this['slicePlateColor']});}this['renderer'][_0x3ca923(0x160)](_0x317b51),this[_0x3ca923(0x1d5)]['update']({'volumeDimFactor':_0x11d000['preview']||_0x11d000['lockedSlices'][_0x3ca923(0x350)](_0x1a08cb=>_0x1a08cb[_0x3ca923(0x35c)])?_0x11d000[_0x3ca923(0x242)]:0x1}),this[_0x3ca923(0x24c)]?.(_0x11d000['lockedSlices']),this['brickScheduleDirty']=!0x0;}['bindSliceInteraction'](_0x431273){const _0x247e56=_0x1d30f8;let _0x276e7=()=>({'viewProjectionMatrix':this[_0x247e56(0x111)]['matrices'][_0x247e56(0x1a6)],'modelMatrix':composeVolumeModelMatrix(this[_0x247e56(0x224)],this[_0x247e56(0x319)]),'viewportWidth':Math[_0x247e56(0x334)](0x1,this[_0x247e56(0x27f)]['clientWidth']),'viewportHeight':Math[_0x247e56(0x334)](0x1,this[_0x247e56(0x27f)][_0x247e56(0x3cd)])});this[_0x247e56(0x243)]=new SliceInteractionController(this[_0x247e56(0x414)],this[_0x247e56(0x413)],_0x276e7,{'hitTolerancePixels':_0x431273['sliceInteraction']?.['hitRadius'],'onInteractionStart':()=>this[_0x247e56(0x11b)](_0x247e56(0x210)),'onInteractionEnd':()=>this[_0x247e56(0x349)](_0x247e56(0x210))}),this['sliceInteraction'][_0x247e56(0x1f2)](),_0x431273[_0x247e56(0x3e7)]&&(this[_0x247e56(0x229)]=new SliceMarkerOverlay(_0x431273['overlayContainer'],this[_0x247e56(0x413)],_0x276e7,{'interactionController':this[_0x247e56(0x243)]}));}['bindControls'](){const _0x1820f8=_0x1d30f8;let _0x1b856e=_0x462115=>{const _0x5de8d6=_0x4af7;_0x462115['button']!==0x0&&_0x462115[_0x5de8d6(0x2e8)]!==0x2||(this[_0x5de8d6(0x196)]={'id':_0x462115[_0x5de8d6(0x12d)],'x':_0x462115[_0x5de8d6(0x2a8)],'y':_0x462115[_0x5de8d6(0x36e)],'pan':_0x462115[_0x5de8d6(0x2e8)]===0x2||_0x462115['pointerType']!=='mouse'&&this[_0x5de8d6(0x235)]===_0x5de8d6(0x236)},this[_0x5de8d6(0x11b)](_0x5de8d6(0x33f)),this[_0x5de8d6(0x414)][_0x5de8d6(0x20e)]?.(_0x462115['pointerId']),_0x462115['preventDefault']());},_0x368ad8=_0x1320cb=>{const _0x2bee0d=_0x4af7;if(!this['pointer']||this[_0x2bee0d(0x196)]['id']!==_0x1320cb[_0x2bee0d(0x12d)])return;let _0x458b81=_0x1320cb[_0x2bee0d(0x2a8)]-this[_0x2bee0d(0x196)]['x'],_0x1265b0=_0x1320cb['clientY']-this[_0x2bee0d(0x196)]['y'];this['pointer']['x']=_0x1320cb[_0x2bee0d(0x2a8)],this[_0x2bee0d(0x196)]['y']=_0x1320cb['clientY'],this['pointer'][_0x2bee0d(0x236)]?this['volumeCamera'][_0x2bee0d(0x236)](_0x458b81,_0x1265b0,this['canvas'][_0x2bee0d(0x3cd)]):this[_0x2bee0d(0x111)][_0x2bee0d(0x1c3)](_0x458b81,_0x1265b0),this['requestBrickSchedule'](),this['requestRender']();},_0x4789ac=_0x59469a=>{const _0x50bd4a=_0x4af7;this[_0x50bd4a(0x196)]?.['id']===_0x59469a['pointerId']&&(this[_0x50bd4a(0x196)]=null,this[_0x50bd4a(0x349)](_0x50bd4a(0x33f)));},_0x18d509=_0x83aeca=>{const _0x284d51=_0x4af7;_0x83aeca[_0x284d51(0x124)](),this[_0x284d51(0x111)][_0x284d51(0x233)](_0x83aeca[_0x284d51(0x1fc)]),this[_0x284d51(0x3f2)](),this['requestRender']();},_0x16e84b=_0x482c18=>_0x482c18[_0x1820f8(0x124)]();this[_0x1820f8(0x414)][_0x1820f8(0x266)](_0x1820f8(0x1a2),_0x1b856e),this[_0x1820f8(0x414)][_0x1820f8(0x266)](_0x1820f8(0x3b3),_0x368ad8),this[_0x1820f8(0x414)][_0x1820f8(0x266)](_0x1820f8(0x145),_0x4789ac),this['interactionElement']['addEventListener']('pointercancel',_0x4789ac),this[_0x1820f8(0x414)][_0x1820f8(0x266)](_0x1820f8(0x121),_0x18d509,{'passive':!0x1}),this['interactionElement'][_0x1820f8(0x266)](_0x1820f8(0x1a9),_0x16e84b),this['eventDisposers'][_0x1820f8(0x40e)](()=>this['interactionElement'][_0x1820f8(0x428)](_0x1820f8(0x1a2),_0x1b856e),()=>this['interactionElement'][_0x1820f8(0x428)](_0x1820f8(0x3b3),_0x368ad8),()=>this[_0x1820f8(0x414)]['removeEventListener'](_0x1820f8(0x145),_0x4789ac),()=>this['interactionElement'][_0x1820f8(0x428)](_0x1820f8(0xf1),_0x4789ac),()=>this[_0x1820f8(0x414)][_0x1820f8(0x428)](_0x1820f8(0x121),_0x18d509),()=>this[_0x1820f8(0x414)][_0x1820f8(0x428)](_0x1820f8(0x1a9),_0x16e84b));}[_0x1d30f8(0x373)](){const _0x36fd31=_0x1d30f8;this[_0x36fd31(0x1d5)][_0x36fd31(0x173)]({'xAxis':this[_0x36fd31(0x226)][_0x36fd31(0x1f0)][_0x36fd31(0xf3)],'yAxis':this['source'][_0x36fd31(0x1f0)][_0x36fd31(0x2b7)],'zAxis':this[_0x36fd31(0x226)][_0x36fd31(0x1f0)][_0x36fd31(0x1d9)],'brickWidth':this['layout'][_0x36fd31(0x39e)]['width'],'brickHeight':this[_0x36fd31(0x41d)][_0x36fd31(0x39e)][_0x36fd31(0x26d)],'brickDepth':this[_0x36fd31(0x41d)]['shape'][_0x36fd31(0x3c4)],'halo':0x1,'noData':this[_0x36fd31(0x226)][_0x36fd31(0x1f0)][_0x36fd31(0x32e)]});}[_0x1d30f8(0x2f6)](){const _0x19afce=_0x1d30f8;if(this[_0x19afce(0x3b0)]===_0x19afce(0x23d)){let _0x4ce8c1=createGeographicVolumeLayout(this[_0x19afce(0x226)][_0x19afce(0x1f0)],this[_0x19afce(0x319)]);this['renderer']['update']({'modelMatrix':_0x4ce8c1[_0x19afce(0x28d)],'inverseModelMatrix':Array['from'](invertMatrix(_0x4ce8c1[_0x19afce(0x28d)])),'geographicTransform':_0x4ce8c1[_0x19afce(0xef)],'clipMinimum':[0x0,0x0,0x0],'clipMaximum':[0x1,0x1,0x1]}),this[_0x19afce(0x424)]();return;}let _0x224e76=composeVolumeModelMatrix(this[_0x19afce(0x224)],this[_0x19afce(0x319)]),_0x55920e=normalizeClipBox(this['source'],this[_0x19afce(0x3e0)]);this['renderer'][_0x19afce(0x174)]({'modelMatrix':Array[_0x19afce(0x3d2)](_0x224e76),'inverseModelMatrix':Array[_0x19afce(0x3d2)](invertMatrix(_0x224e76)),'geographicTransform':null,'clipMinimum':_0x55920e[_0x19afce(0x20f)],'clipMaximum':_0x55920e['maximum']}),this[_0x19afce(0x424)]();}['rebuildProfiles'](){const _0x2340ba=_0x1d30f8;let _0x571606=this[_0x2340ba(0x1ce)][_0x2340ba(0x2f9)](_0x102e6d=>createProfileSceneMesh(buildVolumeRouteProfileMesh(_0x102e6d,this['source'][_0x2340ba(0x1f0)]),this[_0x2340ba(0xce)],this[_0x2340ba(0x2a6)],this[_0x2340ba(0xdc)]));this[_0x2340ba(0x1d5)][_0x2340ba(0x320)](_0x571606),this[_0x2340ba(0x424)]();}[_0x1d30f8(0x1d8)](){const _0x5197ef=_0x1d30f8;this['sourceGeneration']+=0x1;for(let _0x2391c0 of this[_0x5197ef(0x1cf)])_0x2391c0[_0x5197ef(0x2d6)]();this[_0x5197ef(0x1cf)][_0x5197ef(0x12f)](),this['loadedKeys'][_0x5197ef(0x12f)](),this[_0x5197ef(0x107)][_0x5197ef(0x12f)](),this[_0x5197ef(0x3db)][_0x5197ef(0x12f)](),this[_0x5197ef(0x373)](),this['scheduleBricks']();}['requestBrickSchedule'](){const _0x1b3d7b=_0x1d30f8;this[_0x1b3d7b(0x406)]=!0x0,this['requestRender']();}[_0x1d30f8(0x155)](){const _0x59aa3c=_0x1d30f8;this[_0x59aa3c(0x406)]&&(this['brickScheduleDirty']=!0x1,this[_0x59aa3c(0x268)]());}[_0x1d30f8(0x268)](){const _0x528298=_0x1d30f8;if(this[_0x528298(0x321)])return;this['brickScheduleDirty']=!0x1,this[_0x528298(0x21a)]+=0x1;let _0x125421=this[_0x528298(0x1d5)]['statistics'][_0x528298(0x3fb)];if(_0x125421<=0x0)return;let _0x2751a0=_0x125421>=this[_0x528298(0x2cd)][_0x528298(0x29b)];if(_0x2751a0&&this[_0x528298(0x3db)]['size']===this[_0x528298(0x2cd)][_0x528298(0x29b)]&&this['loadedKeys'][_0x528298(0x2d2)]===this[_0x528298(0x2cd)][_0x528298(0x29b)]&&this[_0x528298(0x107)][_0x528298(0x2d2)]===0x0)return;let _0x2779f9;_0x2751a0?_0x2779f9=this['descriptors']:(this[_0x528298(0x2c2)]+=0x1,_0x2779f9=[...this[_0x528298(0x2cd)]][_0x528298(0x2c7)]((_0x23ee0f,_0x43cb3a)=>descriptorDemandPriority(_0x23ee0f,this[_0x528298(0x226)],this['sliceState'],this[_0x528298(0x1ce)])-descriptorDemandPriority(_0x43cb3a,this[_0x528298(0x226)],this[_0x528298(0x413)],this[_0x528298(0x1ce)])||descriptorDistance(_0x23ee0f,this[_0x528298(0x41d)],this[_0x528298(0x111)]['state'])-descriptorDistance(_0x43cb3a,this[_0x528298(0x41d)],this[_0x528298(0x111)]['state']))['slice'](0x0,_0x125421));let _0x5db06e=new Set(_0x2779f9[_0x528298(0x2f9)](_0x30d914=>_0x30d914['key']));this['desiredKeys']=_0x5db06e,_0x2751a0||this[_0x528298(0x1d5)][_0x528298(0x285)](_0x2779f9[_0x528298(0x1ad)](_0x22f7c2=>this[_0x528298(0x42b)]['has'](_0x22f7c2[_0x528298(0xf0)]))[_0x528298(0x2f9)](_0x392cc8=>descriptorLogicalIndex(_0x392cc8,this[_0x528298(0x41d)])));for(let _0x3d7eba of this[_0x528298(0x42b)])_0x5db06e[_0x528298(0x314)](_0x3d7eba)||this['loadedKeys']['delete'](_0x3d7eba);let _0x917190=Math[_0x528298(0x334)](0x0,qualityUploadCount(this[_0x528298(0x2fe)]())-this[_0x528298(0x107)][_0x528298(0x2d2)]),_0x56e181=_0x2779f9['filter'](_0x4a581d=>!this['loadedKeys']['has'](_0x4a581d[_0x528298(0xf0)])&&!this['pendingKeys']['has'](_0x4a581d['key']))['slice'](0x0,_0x917190);for(let _0x318b87 of _0x56e181)this[_0x528298(0x338)](_0x318b87);}[_0x1d30f8(0x338)](_0x54a9ce){const _0x3d17bf=_0x1d30f8;let _0x4b77e4=this[_0x3d17bf(0x38f)],_0x22945b=this[_0x3d17bf(0x226)],_0x464fcd=this[_0x3d17bf(0x394)],_0x462b48=new AbortController();this[_0x3d17bf(0x1cf)][_0x3d17bf(0x366)](_0x462b48),this['pendingKeys'][_0x3d17bf(0x1a8)](_0x54a9ce[_0x3d17bf(0xf0)],_0x4b77e4),Promise[_0x3d17bf(0x2af)](_0x22945b[_0x3d17bf(0x14d)](_0x464fcd,_0x54a9ce[_0x3d17bf(0x27c)],_0x462b48['signal']))[_0x3d17bf(0x37d)](async _0x658d27=>{const _0x2d79bb=_0x3d17bf;if(this[_0x2d79bb(0x321)]||_0x4b77e4!==this[_0x2d79bb(0x38f)]||_0x22945b!==this['source']||_0x464fcd!==this[_0x2d79bb(0x394)]||!this[_0x2d79bb(0x3db)]['has'](_0x54a9ce[_0x2d79bb(0xf0)]))return;let _0x435613=createPhysicalBrickValues(_0x22945b[_0x2d79bb(0x1f0)],this[_0x2d79bb(0x41d)][_0x2d79bb(0x39e)],_0x54a9ce,_0x658d27),_0x1d0814=descriptorLogicalIndex(_0x54a9ce,this['layout']);await this['renderer'][_0x2d79bb(0x13b)]({'logicalIndex':_0x1d0814,'values':_0x435613}),!(this[_0x2d79bb(0x321)]||_0x4b77e4!==this[_0x2d79bb(0x38f)]||_0x22945b!==this[_0x2d79bb(0x226)]||_0x464fcd!==this['timeIndex']||!this[_0x2d79bb(0x3db)][_0x2d79bb(0x314)](_0x54a9ce['key']))&&(this[_0x2d79bb(0x42b)][_0x2d79bb(0x366)](_0x54a9ce['key']),this['requestRender']());})[_0x3d17bf(0x2fb)](_0x18122a=>{const _0x4c17c2=_0x3d17bf;_0x18122a instanceof DOMException&&_0x18122a['name']==='AbortError'||console[_0x4c17c2(0x387)](_0x18122a);})[_0x3d17bf(0x3f4)](()=>{const _0x1c4c4f=_0x3d17bf;this[_0x1c4c4f(0x1cf)][_0x1c4c4f(0xd5)](_0x462b48),this[_0x1c4c4f(0x107)]['get'](_0x54a9ce[_0x1c4c4f(0xf0)])===_0x4b77e4&&this[_0x1c4c4f(0x107)][_0x1c4c4f(0xd5)](_0x54a9ce[_0x1c4c4f(0xf0)]),_0x4b77e4===this[_0x1c4c4f(0x38f)]&&this[_0x1c4c4f(0x268)]();});}[_0x1d30f8(0x31a)](){const _0x405af3=_0x1d30f8;this[_0x405af3(0x37a)]&&this['requestRender']();}[_0x1d30f8(0x424)](){const _0x17db95=_0x1d30f8;this['destroyed']||(this['renderDirty']=!0x0,!(this[_0x17db95(0x12e)]!==_0x17db95(0x3cf)||this[_0x17db95(0x292)]!==0x0)&&(this['frameRequest']=requestAnimationFrame(()=>{const _0x178890=_0x17db95;this['frameRequest']=0x0,!(this[_0x178890(0x321)]||!this[_0x178890(0x37a)])&&this[_0x178890(0x166)]();})));}};const createVolumeScene=_0x32c56a=>VolumeScene[_0x1d30f8(0x21d)](_0x32c56a),insertOnce=(_0x247739,_0x214013,_0x25c8dc)=>{const _0x47077b=_0x1d30f8;let _0x42ffb8=_0x247739['indexOf'](_0x214013);if(_0x42ffb8<0x0||_0x247739[_0x47077b(0x175)](_0x214013,_0x42ffb8+_0x214013[_0x47077b(0x29b)])>=0x0)throw Error(_0x47077b(0x2d5)+_0x214013);return''+_0x247739[_0x47077b(0x210)](0x0,_0x42ffb8)+_0x25c8dc+_0x247739['slice'](_0x42ffb8+_0x214013[_0x47077b(0x29b)]);},mars3dVolumeRaymarchSource=insertOnce(insertOnce(volumeRaymarch_default,_0x1d30f8(0x340),_0x1d30f8(0x38c)),'\x20\x20\x20\x20var\x20interval\x20=\x20intersectClipBox(nearModel,\x20direction);',_0x1d30f8(0x33c)),premultipliedBlend=()=>({'color':{'srcFactor':_0x1d30f8(0x2fc),'dstFactor':_0x1d30f8(0x3dc),'operation':_0x1d30f8(0x366)},'alpha':{'srcFactor':_0x1d30f8(0x2fc),'dstFactor':_0x1d30f8(0x3dc),'operation':_0x1d30f8(0x366)}}),rendererPrototype=WebgpuVolumeSceneRenderer['prototype'],mars3dCanvases=new WeakSet();let pipelineHookInstalled=!0x1;const installPipelineHook=()=>{const _0x2c4231=_0x1d30f8;if(pipelineHookInstalled)return;let _0x33873c=rendererPrototype[_0x2c4231(0x31e)];rendererPrototype['createPipelines']=function(){const _0x265d26=_0x2c4231;if(_0x33873c[_0x265d26(0x1bc)](this),!this[_0x265d26(0x27f)]||!mars3dCanvases['has'](this[_0x265d26(0x27f)]))return;let _0x137ae9=this[_0x265d26(0x355)](),_0x4e9b7a=_0x137ae9['createShaderModule']({'label':_0x265d26(0xdd),'code':mars3dVolumeRaymarchSource});this[_0x265d26(0x2d4)]=_0x137ae9[_0x265d26(0x3ba)]({'label':_0x265d26(0x260),'layout':_0x137ae9['createPipelineLayout']({'bindGroupLayouts':[this['getSceneBindGroupLayout'](),this[_0x265d26(0x123)](),this[_0x265d26(0x22c)]()]}),'vertex':{'module':_0x4e9b7a,'entryPoint':'vertexMain'},'fragment':{'module':_0x4e9b7a,'entryPoint':_0x265d26(0x211),'targets':[{'format':this['getFormat'](),'blend':premultipliedBlend()}]},'primitive':{'topology':_0x265d26(0xeb)}});},pipelineHookInstalled=!0x0;},createMars3dVolumeScene=async _0x52eee7=>{const _0x518f19=_0x1d30f8;installPipelineHook(),mars3dCanvases[_0x518f19(0x366)](_0x52eee7[_0x518f19(0x27f)]);try{let _0x454cf4=await createVolumeScene(_0x52eee7),_0xe5fd6c=_0x454cf4[_0x518f19(0x377)][_0x518f19(0x108)](_0x454cf4);return _0x454cf4[_0x518f19(0x377)]=()=>{const _0xcc76cb=_0x518f19;mars3dCanvases['delete'](_0x52eee7[_0xcc76cb(0x27f)]),_0xe5fd6c();},_0x454cf4;}catch(_0x4a1e44){throw mars3dCanvases[_0x518f19(0xd5)](_0x52eee7[_0x518f19(0x27f)]),_0x4a1e44;}},crossVector=(_0x524925,_0x48e4d9)=>[_0x524925[0x1]*_0x48e4d9[0x2]-_0x524925[0x2]*_0x48e4d9[0x1],_0x524925[0x2]*_0x48e4d9[0x0]-_0x524925[0x0]*_0x48e4d9[0x2],_0x524925[0x0]*_0x48e4d9[0x1]-_0x524925[0x1]*_0x48e4d9[0x0]],normalizeVector=_0x77ba0=>{const _0x77a1de=_0x1d30f8;let _0x4e57a1=Math[_0x77a1de(0x20b)](_0x77ba0[0x0],_0x77ba0[0x1],_0x77ba0[0x2]);return _0x4e57a1>1e-10?[_0x77ba0[0x0]/_0x4e57a1,_0x77ba0[0x1]/_0x4e57a1,_0x77ba0[0x2]/_0x4e57a1]:null;},dotVector=(_0x11a964,_0x400334)=>_0x11a964[0x0]*_0x400334[0x0]+_0x11a964[0x1]*_0x400334[0x1]+_0x11a964[0x2]*_0x400334[0x2],addScaledVector=(_0x259e8b,_0x3595f0,_0x224b71)=>[_0x259e8b[0x0]+_0x3595f0[0x0]*_0x224b71,_0x259e8b[0x1]+_0x3595f0[0x1]*_0x224b71,_0x259e8b[0x2]+_0x3595f0[0x2]*_0x224b71],createMars3dCompensationFrame=(_0x10bcf8,_0x503c40,_0x4595cb)=>{const _0x4aebd2=_0x1d30f8;let _0x286885=normalizeVector(_0x10bcf8['direction']),_0x8c2b91=_0x286885?normalizeVector(crossVector(_0x286885,_0x10bcf8['up'])):null,_0x59f16b=_0x286885&&_0x8c2b91?normalizeVector(crossVector(_0x8c2b91,_0x286885)):null,_0x13870b=Math[_0x4aebd2(0x3ec)](_0x10bcf8[_0x4aebd2(0xd9)]/0x2),_0x4534f5=_0x503c40/_0x4595cb;if(!_0x286885||!_0x8c2b91||!_0x59f16b||!(_0x13870b>0x0)||!(_0x4534f5>0x0)||!(_0x10bcf8['anchorDistance']>0x0))return null;let _0x81f654=addScaledVector(_0x10bcf8[_0x4aebd2(0x209)],_0x286885,_0x10bcf8[_0x4aebd2(0x3c7)]),_0x50432c=[_0x81f654,addScaledVector(_0x81f654,_0x8c2b91,_0x10bcf8[_0x4aebd2(0x3c7)]*_0x13870b*_0x4534f5*0.5),addScaledVector(_0x81f654,_0x59f16b,_0x10bcf8[_0x4aebd2(0x3c7)]*_0x13870b*0.5)],_0x593159=projectMars3dCompensationAnchors(_0x10bcf8,_0x50432c,_0x503c40,_0x4595cb);return _0x593159?{'worldAnchors':_0x50432c,'screenAnchors':_0x593159}:null;},projectMars3dCompensationAnchors=(_0x26047b,_0x39abe7,_0x214f6a,_0x6e596e)=>{const _0x4f18d4=_0x1d30f8;let _0x49b8b2=normalizeVector(_0x26047b['direction']),_0x2eedd5=_0x49b8b2?normalizeVector(crossVector(_0x49b8b2,_0x26047b['up'])):null,_0x1e3669=_0x49b8b2&&_0x2eedd5?normalizeVector(crossVector(_0x2eedd5,_0x49b8b2)):null,_0x92f84b=Math[_0x4f18d4(0x3ec)](_0x26047b[_0x4f18d4(0xd9)]/0x2),_0x233e7f=_0x214f6a/_0x6e596e;if(!_0x49b8b2||!_0x2eedd5||!_0x1e3669||!(_0x92f84b>0x0)||!(_0x233e7f>0x0))return null;let _0x45d2ae=[];for(let _0x5550a0 of _0x39abe7){let _0x41622c=[_0x5550a0[0x0]-_0x26047b['position'][0x0],_0x5550a0[0x1]-_0x26047b[_0x4f18d4(0x209)][0x1],_0x5550a0[0x2]-_0x26047b[_0x4f18d4(0x209)][0x2]],_0xddd9a1=dotVector(_0x41622c,_0x49b8b2);if(!(_0xddd9a1>0.000001))return null;let _0x4a11cc=dotVector(_0x41622c,_0x2eedd5)/(_0xddd9a1*_0x92f84b*_0x233e7f),_0x411771=dotVector(_0x41622c,_0x1e3669)/(_0xddd9a1*_0x92f84b);_0x45d2ae[_0x4f18d4(0x40e)]({'x':(_0x4a11cc*0.5+0.5)*_0x214f6a,'y':(0.5-_0x411771*0.5)*_0x6e596e});}return _0x45d2ae;},createMars3dCanvasCompensationTransform=(_0xe5058d,_0x36eb04)=>{const _0x355ac4=_0x1d30f8;if(_0xe5058d['length']!==0x3||_0x36eb04[_0x355ac4(0x29b)]!==0x3)return null;let _0x252042={'x':_0xe5058d[0x1]['x']-_0xe5058d[0x0]['x'],'y':_0xe5058d[0x1]['y']-_0xe5058d[0x0]['y']},_0x3ade8={'x':_0xe5058d[0x2]['x']-_0xe5058d[0x0]['x'],'y':_0xe5058d[0x2]['y']-_0xe5058d[0x0]['y']},_0x5bf65f={'x':_0x36eb04[0x1]['x']-_0x36eb04[0x0]['x'],'y':_0x36eb04[0x1]['y']-_0x36eb04[0x0]['y']},_0x3463c0={'x':_0x36eb04[0x2]['x']-_0x36eb04[0x0]['x'],'y':_0x36eb04[0x2]['y']-_0x36eb04[0x0]['y']},_0x1bb1a9=_0x252042['x']*_0x3ade8['y']-_0x3ade8['x']*_0x252042['y'];if(Math['abs'](_0x1bb1a9)<0.000001)return null;let _0x367402=(_0x5bf65f['x']*_0x3ade8['y']-_0x3463c0['x']*_0x252042['y'])/_0x1bb1a9,_0x4add04=(-_0x5bf65f['x']*_0x3ade8['x']+_0x3463c0['x']*_0x252042['x'])/_0x1bb1a9,_0x5dc9d7=(_0x5bf65f['y']*_0x3ade8['y']-_0x3463c0['y']*_0x252042['y'])/_0x1bb1a9,_0x546649=(-_0x5bf65f['y']*_0x3ade8['x']+_0x3463c0['y']*_0x252042['x'])/_0x1bb1a9,_0x1cbc43=[_0x367402,_0x5dc9d7,_0x4add04,_0x546649,_0x36eb04[0x0]['x']-_0x367402*_0xe5058d[0x0]['x']-_0x4add04*_0xe5058d[0x0]['y'],_0x36eb04[0x0]['y']-_0x5dc9d7*_0xe5058d[0x0]['x']-_0x546649*_0xe5058d[0x0]['y']];return _0x1cbc43[_0x355ac4(0x22a)](Number[_0x355ac4(0x193)])?_0x355ac4(0xf7)+_0x1cbc43[_0x355ac4(0x32f)](',')+')':null;},getError=_0x536dc8=>_0x536dc8 instanceof Error?_0x536dc8:Error(String(_0x536dc8));var Mars3dVolumeRenderer=class{[_0x1d30f8(0x2d3)];[_0x1d30f8(0x2f9)];['canvas'];[_0x1d30f8(0x3b6)];[_0x1d30f8(0x2de)];[_0x1d30f8(0xdf)]=null;[_0x1d30f8(0x226)];['layout'];['frameRequest']=0x0;['cameraEndTimer']=0x0;[_0x1d30f8(0x2b6)]=0x0;[_0x1d30f8(0x199)];[_0x1d30f8(0x321)]=!0x1;[_0x1d30f8(0x25c)]=!0x1;[_0x1d30f8(0x152)]='';[_0x1d30f8(0x19b)]=null;['displayedCompensationFrame']=null;constructor(_0x2bafbb,_0x55a971){const _0x8aa427=_0x1d30f8;this[_0x8aa427(0x2f9)]=_0x2bafbb,this[_0x8aa427(0x226)]=_0x55a971[_0x8aa427(0x226)],this[_0x8aa427(0x41d)]=createGeographicVolumeLayout(_0x55a971[_0x8aa427(0x226)]['metadata']),this[_0x8aa427(0x3b6)]=_0x55a971[_0x8aa427(0x3b6)],this['cameraFrameCompensation']=_0x55a971['cameraFrameCompensation']??!0x0,this[_0x8aa427(0x199)]=_0x55a971[_0x8aa427(0x128)]??!0x0,this[_0x8aa427(0x27f)]=this[_0x8aa427(0x31c)](_0x2bafbb[_0x8aa427(0xdf)][_0x8aa427(0x27f)]),this[_0x8aa427(0x2d3)]=this[_0x8aa427(0x1f2)](_0x55a971);}get['statistics'](){const _0x54a612=_0x1d30f8;return this['scene']?.[_0x54a612(0xd0)]??null;}get['lockedSlices'](){const _0x1fd5c1=_0x1d30f8;return this[_0x1fd5c1(0xdf)]?.[_0x1fd5c1(0x104)]??[];}[_0x1d30f8(0x1f4)](_0x132578){const _0x15ef7e=_0x1d30f8;this[_0x15ef7e(0x149)](),this['shown']=_0x132578,this[_0x15ef7e(0x27f)][_0x15ef7e(0x415)][_0x15ef7e(0x299)]=_0x132578?_0x15ef7e(0x18d):_0x15ef7e(0x2b1),_0x132578&&this[_0x15ef7e(0x26a)](0x3);}['update'](_0x2e34cb){const _0x3de684=_0x1d30f8;this['requireScene']()[_0x3de684(0x174)](_0x2e34cb),this['requestFrames'](0x3);}[_0x1d30f8(0x16b)](_0x3b77b3){const _0x47aff4=_0x1d30f8;this[_0x47aff4(0x22e)]()[_0x47aff4(0x16b)](_0x3b77b3),this[_0x47aff4(0x26a)](0x3);}['setRouteProfiles'](_0x4f6f47){const _0x4a75ae=_0x1d30f8;this['requireScene']()[_0x4a75ae(0x2ea)](_0x4f6f47),this['requestFrames'](0x3);}[_0x1d30f8(0x27d)](_0x5506a8,_0x1ca293){const _0x58cfea=_0x1d30f8;this[_0x58cfea(0x22e)]()[_0x58cfea(0x27d)](_0x5506a8,_0x1ca293),this[_0x58cfea(0x26a)](0x3);}['removeSlice'](_0x1724ef){const _0x275563=_0x1d30f8;this[_0x275563(0x22e)]()['removeSlice'](_0x1724ef),this[_0x275563(0x26a)](0x3);}['clearLockedSlices'](){const _0x1e8208=_0x1d30f8;this['requireScene']()[_0x1e8208(0x180)](),this[_0x1e8208(0x26a)](0x3);}[_0x1d30f8(0x363)](_0x4d3e1a,_0x2d5502){const _0x4b246b=_0x1d30f8;let _0x4496d0=this[_0x4b246b(0x22e)]()['lockSlice'](_0x4d3e1a,_0x2d5502);return this['requestFrames'](0x3),_0x4496d0;}[_0x1d30f8(0x173)](_0x1b67e6){const _0x2378f=_0x1d30f8;this[_0x2378f(0x149)](),this['source']=_0x1b67e6,this[_0x2378f(0x41d)]=createGeographicVolumeLayout(_0x1b67e6['metadata']),this[_0x2378f(0x1be)](),this['requireScene']()[_0x2378f(0x173)](_0x1b67e6),this[_0x2378f(0x29e)](),this[_0x2378f(0x26a)](0x3);}[_0x1d30f8(0x377)](){const _0x4d7f1f=_0x1d30f8;this[_0x4d7f1f(0x321)]||(this[_0x4d7f1f(0x321)]=!0x0,cancelAnimationFrame(this[_0x4d7f1f(0x292)]),window[_0x4d7f1f(0x1e5)](this[_0x4d7f1f(0x392)]),this['frameRequest']=0x0,this[_0x4d7f1f(0x392)]=0x0,this['map'][_0x4d7f1f(0xdf)][_0x4d7f1f(0x1d4)][_0x4d7f1f(0x428)](this[_0x4d7f1f(0x32b)]),window[_0x4d7f1f(0x428)](_0x4d7f1f(0x1e3),this['handleResize']),this[_0x4d7f1f(0xdf)]?.[_0x4d7f1f(0x377)](),this[_0x4d7f1f(0xdf)]=null,this[_0x4d7f1f(0x27f)][_0x4d7f1f(0x3de)]());}[_0x1d30f8(0x126)](){const _0x59b04b=_0x1d30f8;this[_0x59b04b(0x25c)]&&(window[_0x59b04b(0x1e5)](this[_0x59b04b(0x392)]),this['cameraEndTimer']=0x0,this[_0x59b04b(0x25c)]=!0x1,this[_0x59b04b(0xdf)]?.[_0x59b04b(0x349)](_0x59b04b(0x33f)),this['syncCamera'](),this[_0x59b04b(0x26a)](0x3));}['handlePreRender']=()=>{const _0x3f3353=_0x1d30f8;let _0x21ad43=this[_0x3f3353(0x1e2)](this[_0x3f3353(0x2f9)][_0x3f3353(0xdf)][_0x3f3353(0x33f)]);_0x21ad43!==this['cameraSignature']&&(this['cameraSignature']=_0x21ad43,this['beginCameraInteraction'](),this[_0x3f3353(0x29e)](),this[_0x3f3353(0x20d)](),this[_0x3f3353(0x3ae)](0x1));};[_0x1d30f8(0x39c)]=()=>{const _0x5243d2=_0x1d30f8;this[_0x5243d2(0x1be)](),this['scene']?.[_0x5243d2(0x1e3)](),this[_0x5243d2(0x29e)](),this[_0x5243d2(0x26a)](0x3);};async['initialize'](_0x43e571){const _0x40aeef=_0x1d30f8;try{let _0x19d46d=await createMars3dVolumeScene({..._0x43e571,'interactionStepScale':_0x43e571['interactionStepScale']??1.35,'canvas':this[_0x40aeef(0x27f)],'coordinateSystem':_0x40aeef(0x23d),'showDebugGeometry':!0x1,'renderMode':'external'});if(this[_0x40aeef(0x321)]){_0x19d46d[_0x40aeef(0x377)]();return;}this['scene']=_0x19d46d,this[_0x40aeef(0x323)](_0x19d46d),this[_0x40aeef(0x2f9)]['scene'][_0x40aeef(0x1d4)][_0x40aeef(0x266)](this['handlePreRender']),window['addEventListener'](_0x40aeef(0x1e3),this['handleResize']),this[_0x40aeef(0x29e)](),this[_0x40aeef(0x26a)](0x3);}catch(_0x4a01a7){let _0x14e9e9=getError(_0x4a01a7);throw this[_0x40aeef(0x27f)]['remove'](),this['onError']?.(_0x14e9e9),_0x14e9e9;}}[_0x1d30f8(0x29e)](){const _0x3fa587=_0x1d30f8;let _0x419eea=this[_0x3fa587(0xdf)];if(!_0x419eea)return;let _0xe1a049=this[_0x3fa587(0x2f9)]['scene'][_0x3fa587(0x33f)],_0x52f73e=ecefToGeographicVolumeLocal([_0xe1a049[_0x3fa587(0x341)]['x'],_0xe1a049['positionWC']['y'],_0xe1a049[_0x3fa587(0x341)]['z']],this[_0x3fa587(0x41d)]),_0x156e64=[_0xe1a049[_0x3fa587(0x3b2)]['x'],_0xe1a049[_0x3fa587(0x3b2)]['y'],_0xe1a049[_0x3fa587(0x3b2)]['z']],_0x5c9be6=[_0xe1a049['upWC']['x'],_0xe1a049[_0x3fa587(0x1a5)]['y'],_0xe1a049[_0x3fa587(0x1a5)]['z']],_0x38b654=Math[_0x3fa587(0x334)](0.001,Math[_0x3fa587(0x356)](_0xe1a049[_0x3fa587(0x364)]['height'])/this['layout'][_0x3fa587(0x403)]),_0x1f1d01=[_0x52f73e[0x0]+_0x156e64[0x0]*_0x38b654,_0x52f73e[0x1]+_0x156e64[0x1]*_0x38b654,_0x52f73e[0x2]+_0x156e64[0x2]*_0x38b654],_0x54fb62=_0xe1a049[_0x3fa587(0x35b)][_0x3fa587(0x3eb)]??_0xe1a049[_0x3fa587(0x35b)][_0x3fa587(0x303)]??Math['PI']/0x3,_0x4e86aa=Math[_0x3fa587(0x334)](0.0001,_0x38b654/0x2710),_0x17e35c=Math['max'](0x64,_0x38b654*0x4);_0x419eea['setCamera']({'position':_0x52f73e,'target':_0x1f1d01,'up':_0x5c9be6,'projection':{'type':_0x3fa587(0x189),'fovYDegrees':_0x54fb62*0xb4/Math['PI'],'near':_0x4e86aa,'far':_0x17e35c}});}[_0x1d30f8(0x323)](_0x199584){const _0x8ad192=_0x1d30f8;let _0x24c0c2=_0x199584[_0x8ad192(0x1d5)],_0x4a3163=_0x24c0c2[_0x8ad192(0x3fc)];_0x24c0c2['frameAvailableCallback']=()=>{const _0xf2e59f=_0x8ad192;this[_0xf2e59f(0x19b)]&&(this[_0xf2e59f(0x35e)]=this[_0xf2e59f(0x19b)],this[_0xf2e59f(0x19b)]=null,this[_0xf2e59f(0x20d)]()),_0x4a3163?.();};}[_0x1d30f8(0x158)](){const _0x390c11=_0x1d30f8;let _0x20db76=this[_0x390c11(0x2f9)][_0x390c11(0xdf)][_0x390c11(0x33f)];return{'position':[_0x20db76[_0x390c11(0x341)]['x'],_0x20db76[_0x390c11(0x341)]['y'],_0x20db76[_0x390c11(0x341)]['z']],'direction':[_0x20db76[_0x390c11(0x3b2)]['x'],_0x20db76[_0x390c11(0x3b2)]['y'],_0x20db76['directionWC']['z']],'up':[_0x20db76[_0x390c11(0x1a5)]['x'],_0x20db76[_0x390c11(0x1a5)]['y'],_0x20db76[_0x390c11(0x1a5)]['z']],'fovYRadians':_0x20db76[_0x390c11(0x35b)][_0x390c11(0x3eb)]??_0x20db76[_0x390c11(0x35b)]['fov']??Math['PI']/0x3,'anchorDistance':Math[_0x390c11(0x334)](0x3e8,Math[_0x390c11(0x356)](_0x20db76['positionCartographic'][_0x390c11(0x26d)])*0x2)};}[_0x1d30f8(0x3f8)](){const _0x271752=_0x1d30f8;return createMars3dCompensationFrame(this[_0x271752(0x158)](),this[_0x271752(0x27f)][_0x271752(0x423)],this[_0x271752(0x27f)][_0x271752(0x3cd)]);}['applyCameraFrameCompensation'](){const _0x57a1e9=_0x1d30f8;if(!this['cameraFrameCompensation']||!this[_0x57a1e9(0x35e)]){this[_0x57a1e9(0x27f)]['style'][_0x57a1e9(0xef)]=_0x57a1e9(0x2b1);return;}let _0xc65c61=projectMars3dCompensationAnchors(this[_0x57a1e9(0x158)](),this[_0x57a1e9(0x35e)][_0x57a1e9(0x247)],this[_0x57a1e9(0x27f)][_0x57a1e9(0x423)],this['canvas'][_0x57a1e9(0x3cd)]),_0x429a03=_0xc65c61?createMars3dCanvasCompensationTransform(this[_0x57a1e9(0x35e)][_0x57a1e9(0x35f)],_0xc65c61):null;this[_0x57a1e9(0x27f)][_0x57a1e9(0x415)][_0x57a1e9(0xef)]=_0x429a03??_0x57a1e9(0x2b1);}[_0x1d30f8(0x1be)](){const _0x190ee8=_0x1d30f8;this[_0x190ee8(0x19b)]=null,this[_0x190ee8(0x35e)]=null,this['canvas'][_0x190ee8(0x415)][_0x190ee8(0xef)]='none';}[_0x1d30f8(0x26a)](_0x205872){const _0x4e7b58=_0x1d30f8;!this[_0x4e7b58(0x199)]||this[_0x4e7b58(0x321)]||(this[_0x4e7b58(0x2b6)]=Math[_0x4e7b58(0x334)](this[_0x4e7b58(0x2b6)],_0x205872),this[_0x4e7b58(0x292)]||=requestAnimationFrame(this[_0x4e7b58(0x2ad)]));}[_0x1d30f8(0x3ae)](_0x137107){const _0x4d0b45=_0x1d30f8;!this[_0x4d0b45(0x199)]||this['destroyed']||(this[_0x4d0b45(0x2b6)]=Math[_0x4d0b45(0x334)](this[_0x4d0b45(0x2b6)],_0x137107),this['frameRequest']&&cancelAnimationFrame(this[_0x4d0b45(0x292)]),this[_0x4d0b45(0x292)]=0x0,this[_0x4d0b45(0x2ad)]());}[_0x1d30f8(0x2ad)]=()=>{const _0x2853cc=_0x1d30f8;this[_0x2853cc(0x292)]=0x0;let _0x3c26dd=this[_0x2853cc(0xdf)];if(!(!_0x3c26dd||!this[_0x2853cc(0x199)]||this[_0x2853cc(0x321)]))try{_0x3c26dd[_0x2853cc(0x1e3)]();let _0x234c84=_0x3c26dd[_0x2853cc(0xd0)][_0x2853cc(0x116)];_0x3c26dd[_0x2853cc(0x166)](),_0x3c26dd[_0x2853cc(0xd0)][_0x2853cc(0x116)]>_0x234c84&&(this['pendingCompensationFrame']=this['createCurrentCompensationFrame'](),this[_0x2853cc(0x2b6)]=Math['max'](0x0,this[_0x2853cc(0x2b6)]-0x1));let _0x225301=_0x3c26dd['statistics'];(_0x225301[_0x2853cc(0x191)]>0x0||_0x225301[_0x2853cc(0x2e7)]<_0x225301['logicalBrickCount']||this[_0x2853cc(0x2b6)]>0x0)&&(this[_0x2853cc(0x292)]=requestAnimationFrame(this[_0x2853cc(0x2ad)]));}catch(_0x48fce9){this['onError']?.(getError(_0x48fce9));}};[_0x1d30f8(0x31c)](_0x1e0b89){const _0x3be648=_0x1d30f8;let _0x476ed3=_0x1e0b89[_0x3be648(0x162)];if(!_0x476ed3)throw Error(_0x3be648(0x33d));let _0x1d92cf=document[_0x3be648(0x3a9)]('canvas');return _0x1d92cf[_0x3be648(0x415)][_0x3be648(0x209)]=_0x3be648(0x14a),_0x1d92cf[_0x3be648(0x415)][_0x3be648(0x372)]='0',_0x1d92cf[_0x3be648(0x415)][_0x3be648(0x238)]=_0x3be648(0x1eb),_0x1d92cf[_0x3be648(0x415)]['height']=_0x3be648(0x1eb),_0x1d92cf[_0x3be648(0x415)]['pointerEvents']='none',_0x1d92cf['style'][_0x3be648(0x299)]=this['shown']?'block':_0x3be648(0x2b1),_0x1d92cf[_0x3be648(0x415)][_0x3be648(0x3a7)]='1',_0x476ed3[_0x3be648(0x371)](_0x1d92cf),_0x1d92cf;}['createCameraSignature'](_0x4ac312){const _0x3c2def=_0x1d30f8;return[_0x4ac312[_0x3c2def(0x341)]['x'],_0x4ac312['positionWC']['y'],_0x4ac312[_0x3c2def(0x341)]['z'],_0x4ac312['directionWC']['x'],_0x4ac312[_0x3c2def(0x3b2)]['y'],_0x4ac312[_0x3c2def(0x3b2)]['z'],_0x4ac312[_0x3c2def(0x1a5)]['x'],_0x4ac312[_0x3c2def(0x1a5)]['y'],_0x4ac312[_0x3c2def(0x1a5)]['z'],_0x4ac312[_0x3c2def(0x35b)][_0x3c2def(0x3eb)]??_0x4ac312[_0x3c2def(0x35b)][_0x3c2def(0x303)]??0x0,_0x4ac312[_0x3c2def(0x35b)][_0x3c2def(0x384)],_0x4ac312['frustum'][_0x3c2def(0x170)]][_0x3c2def(0x2f9)](_0x78a767=>_0x78a767['toPrecision'](0xa))['join']('|');}[_0x1d30f8(0x1ed)](){const _0x2ceaf2=_0x1d30f8;window['clearTimeout'](this['cameraEndTimer']),this[_0x2ceaf2(0x392)]=window[_0x2ceaf2(0x275)](this[_0x2ceaf2(0x126)][_0x2ceaf2(0x108)](this),0xc8);}[_0x1d30f8(0x2cc)](){const _0x5a9855=_0x1d30f8;this[_0x5a9855(0x25c)]||(this[_0x5a9855(0x25c)]=!0x0,this[_0x5a9855(0xdf)]?.['beginInteraction'](_0x5a9855(0x33f))),this[_0x5a9855(0x1ed)]();}[_0x1d30f8(0x22e)](){const _0x5b7291=_0x1d30f8;if(this[_0x5b7291(0x149)](),!this[_0x5b7291(0xdf)])throw Error(_0x5b7291(0x262));return this[_0x5b7291(0xdf)];}[_0x1d30f8(0x149)](){const _0x4147f7=_0x1d30f8;if(this[_0x4147f7(0x321)])throw Error('A\x20destroyed\x20Mars3D\x20volume\x20layer\x20cannot\x20be\x20used.\x20已销毁的\x20Mars3D\x20体积层不能继续使用。');}};const layerConstructors=new WeakMap(),getVolumeLayerConstructor=_0x125478=>{const _0x16049e=_0x1d30f8;let _0x5316cf=layerConstructors[_0x16049e(0x2d0)](_0x125478);if(_0x5316cf)return _0x5316cf;let _0x479540=_0x125478[_0x16049e(0x19a)][_0x16049e(0x388)];class _0x2d043f extends _0x479540{[_0x16049e(0x2f8)];['renderer']=null;[_0x16049e(0x245)]=null;['readyReject']=null;[_0x16049e(0x2d3)]=new Promise((resolve,reject)=>{const _0x4cb201=_0x16049e;this[_0x4cb201(0x245)]=resolve,this['readyReject']=reject;});constructor(_0x544f50){const _0x923dcc=_0x16049e;super({..._0x544f50}),this[_0x923dcc(0x2f8)]={..._0x544f50};}get[_0x16049e(0xd0)](){const _0x57c1b7=_0x16049e;return this[_0x57c1b7(0x1d5)]?.[_0x57c1b7(0xd0)]??null;}get[_0x16049e(0x104)](){const _0x46ce43=_0x16049e;return this[_0x46ce43(0x1d5)]?.[_0x46ce43(0x104)]??[];}[_0x16049e(0x174)](_0x38678f){const _0x5c26a7=_0x16049e;this[_0x5c26a7(0x1d5)]?.[_0x5c26a7(0x174)](_0x38678f);}[_0x16049e(0x173)](_0xe4c88e){const _0x46d7b2=_0x16049e;this[_0x46d7b2(0x2f8)][_0x46d7b2(0x226)]=_0xe4c88e,this[_0x46d7b2(0x329)]()[_0x46d7b2(0x173)](_0xe4c88e);}[_0x16049e(0x16b)](_0x4089c8){const _0x947e4c=_0x16049e;this[_0x947e4c(0x329)]()['setTimeIndex'](_0x4089c8);}[_0x16049e(0x2ea)](_0x3e3be7){const _0x4b58a6=_0x16049e;this[_0x4b58a6(0x329)]()[_0x4b58a6(0x2ea)](_0x3e3be7);}[_0x16049e(0x363)](_0x357050,_0x29daf5){const _0x16ab64=_0x16049e;return this[_0x16ab64(0x329)]()[_0x16ab64(0x363)](_0x357050,_0x29daf5);}[_0x16049e(0x27d)](_0x1ee556,_0x36c4e9){const _0x26569b=_0x16049e;this[_0x26569b(0x329)]()[_0x26569b(0x27d)](_0x1ee556,_0x36c4e9);}[_0x16049e(0x1ac)](_0xdb02ad){const _0x53237b=_0x16049e;this['requireRenderer']()[_0x53237b(0x1ac)](_0xdb02ad);}[_0x16049e(0x180)](){const _0x533b3a=_0x16049e;this[_0x533b3a(0x329)]()[_0x533b3a(0x180)]();}[_0x16049e(0x3a2)](){}[_0x16049e(0x425)](){const _0x504c7d=_0x16049e;if(!this['_map'])throw Error(_0x504c7d(0x39b));this[_0x504c7d(0x1d5)]?.['destroy'](),this['renderer']=new Mars3dVolumeRenderer(this['_map'],this[_0x504c7d(0x2f8)]),this['renderer']['setShow'](this[_0x504c7d(0x128)]),this['renderer'][_0x504c7d(0x2d3)][_0x504c7d(0x37d)](()=>this[_0x504c7d(0x245)]?.())[_0x504c7d(0x2fb)](_0x4e91ec=>this['readyReject']?.(_0x4e91ec));}[_0x16049e(0x14e)](_0x4971bd){const _0x5ea2de=_0x16049e;this[_0x5ea2de(0x1d5)]?.[_0x5ea2de(0x1f4)](_0x4971bd);}['_removedHook'](){const _0x5ea67f=_0x16049e;this[_0x5ea67f(0x1d5)]?.['destroy'](),this[_0x5ea67f(0x1d5)]=null;}[_0x16049e(0x329)](){const _0xf58f60=_0x16049e;if(!this[_0xf58f60(0x1d5)])throw Error('Mars3D\x20volume\x20layer\x20is\x20not\x20added\x20to\x20a\x20map.\x20Mars3D\x20体积层尚未添加到地图。');return this['renderer'];}}let _0x5d7920=_0x2d043f;return layerConstructors[_0x16049e(0x1a8)](_0x125478,_0x5d7920),_0x5d7920;},createMars3dVolumeLayer=(_0x4c74db,_0x1f723e)=>new(getVolumeLayerConstructor(_0x4c74db))(_0x1f723e);export{createMars3dVolumeLayer};
|