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 _0x2859cf=_0x1b5d;function _0x1b5d(_0x2070d6,_0xf6c920){const _0xa78c21=_0xa78c();return _0x1b5d=function(_0x1b5dca,_0x40cc51){_0x1b5dca=_0x1b5dca-0x185;let _0x1cc359=_0xa78c21[_0x1b5dca];return _0x1cc359;},_0x1b5d(_0x2070d6,_0xf6c920);}(function(_0x585531,_0x2bb3bc){const _0x35e7b1=_0x1b5d,_0x3321b1=_0x585531();while(!![]){try{const _0x58fda9=-parseInt(_0x35e7b1(0x382))/0x1*(-parseInt(_0x35e7b1(0x49a))/0x2)+-parseInt(_0x35e7b1(0x1b0))/0x3+parseInt(_0x35e7b1(0x2c6))/0x4*(parseInt(_0x35e7b1(0x19e))/0x5)+-parseInt(_0x35e7b1(0x1f7))/0x6+-parseInt(_0x35e7b1(0x466))/0x7+-parseInt(_0x35e7b1(0x440))/0x8*(-parseInt(_0x35e7b1(0x383))/0x9)+parseInt(_0x35e7b1(0x3e0))/0xa*(parseInt(_0x35e7b1(0x43a))/0xb);if(_0x58fda9===_0x2bb3bc)break;else _0x3321b1['push'](_0x3321b1['shift']());}catch(_0x40de41){_0x3321b1['push'](_0x3321b1['shift']());}}}(_0xa78c,0x5fdfa));const validatePositiveInteger=(_0x3677e4,_0x4b219b)=>{const _0x2cbed3=_0x1b5d;if(!Number[_0x2cbed3(0x2dd)](_0x3677e4)||_0x3677e4<=0x0)throw Error(_0x4b219b+_0x2cbed3(0x238)+_0x4b219b+_0x2cbed3(0x3fd));},validateAxis=(_0x16e4e9,_0x5661f6)=>{const _0x5b9f91=_0x1b5d;if(validatePositiveInteger(_0x16e4e9['count'],_0x5661f6+_0x5b9f91(0x21f)),!Number['isFinite'](_0x16e4e9[_0x5b9f91(0x1df)])||!Number['isFinite'](_0x16e4e9[_0x5b9f91(0x317)]))throw Error(_0x5661f6+'\x20endpoints\x20must\x20be\x20finite.\x20'+_0x5661f6+_0x5b9f91(0x3bf));if(_0x16e4e9[_0x5b9f91(0x251)]===0x1&&_0x16e4e9[_0x5b9f91(0x1df)]!==_0x16e4e9[_0x5b9f91(0x317)])throw Error(_0x5661f6+_0x5b9f91(0x20c)+_0x5661f6+_0x5b9f91(0x227));if(_0x16e4e9[_0x5b9f91(0x251)]>0x1&&_0x16e4e9[_0x5b9f91(0x1df)]===_0x16e4e9[_0x5b9f91(0x317)])throw Error(_0x5661f6+_0x5b9f91(0x28c)+_0x5661f6+'\x20包含多个采样点时步长不能为零。');},validateNoData=(_0x1c02ba,_0x5b09eb)=>{const _0x52c2bc=_0x1b5d;if(_0x1c02ba!==void 0x0&&!Number[_0x52c2bc(0x273)](_0x1c02ba)&&!Number['isNaN'](_0x1c02ba))throw Error(_0x5b09eb+_0x52c2bc(0x37f)+_0x5b09eb+_0x52c2bc(0x274));},rangesEqual=(_0xde4d41,_0x174c71)=>_0xde4d41[_0x2859cf(0x231)]===_0x174c71[_0x2859cf(0x231)]&&_0xde4d41['xCount']===_0x174c71['xCount']&&_0xde4d41[_0x2859cf(0x334)]===_0x174c71[_0x2859cf(0x334)]&&_0xde4d41[_0x2859cf(0x304)]===_0x174c71['levelCount']&&_0xde4d41[_0x2859cf(0x212)]===_0x174c71[_0x2859cf(0x212)]&&_0xde4d41[_0x2859cf(0x21c)]===_0x174c71[_0x2859cf(0x21c)],validateVolumeMetadata=_0x15e9a5=>{const _0x559f44=_0x2859cf;if(validateAxis(_0x15e9a5[_0x559f44(0x1bf)],_0x559f44(0x403)),validateAxis(_0x15e9a5[_0x559f44(0x1de)],_0x559f44(0x437)),validateAxis(_0x15e9a5[_0x559f44(0x203)],_0x559f44(0x337)),validatePositiveInteger(_0x15e9a5[_0x559f44(0x2e4)],_0x559f44(0x45f)),validateNoData(_0x15e9a5[_0x559f44(0x219)],'Volume'),_0x15e9a5[_0x559f44(0x1be)]!==void 0x0&&!Number[_0x559f44(0x273)](_0x15e9a5[_0x559f44(0x1be)]))throw Error(_0x559f44(0x2ff));if(_0x15e9a5[_0x559f44(0x441)]!==void 0x0&&(!Number[_0x559f44(0x2dd)](_0x15e9a5[_0x559f44(0x441)])||_0x15e9a5[_0x559f44(0x441)]<0x0))throw Error(_0x559f44(0x1f4));},validateVolumeTimeIndex=(_0x5d2177,_0x3ad6e4)=>{const _0x169a3c=_0x2859cf;if(!Number[_0x169a3c(0x2dd)](_0x3ad6e4)||_0x3ad6e4<0x0||_0x3ad6e4>=_0x5d2177[_0x169a3c(0x2e4)])throw Error(_0x169a3c(0x3ef)+_0x3ad6e4+'.\x20体积时间索引越界。');},validateVolumeChunkRange=(_0xd7d36b,_0x501402)=>{const _0x10124b=_0x2859cf;let _0x1455a5=[[_0x501402[_0x10124b(0x231)],_0x10124b(0x231)],[_0x501402[_0x10124b(0x434)],'xCount'],[_0x501402[_0x10124b(0x334)],'levelStart'],[_0x501402[_0x10124b(0x304)],_0x10124b(0x304)],[_0x501402['sourceYStart'],_0x10124b(0x212)],[_0x501402[_0x10124b(0x21c)],_0x10124b(0x21c)]];for(let [_0x4e5031,_0x32a004]of _0x1455a5)if(!Number[_0x10124b(0x2dd)](_0x4e5031)||_0x4e5031<0x0||_0x32a004[_0x10124b(0x302)](_0x10124b(0x30a))&&_0x4e5031===0x0)throw Error(_0x10124b(0x3bb)+_0x32a004+_0x10124b(0x21a)+_0x4e5031+_0x10124b(0x1c0)+_0x32a004+_0x10124b(0x3d6));if(_0x501402[_0x10124b(0x231)]+_0x501402[_0x10124b(0x434)]>_0xd7d36b['xAxis'][_0x10124b(0x251)]||_0x501402[_0x10124b(0x334)]+_0x501402[_0x10124b(0x304)]>_0xd7d36b[_0x10124b(0x1de)][_0x10124b(0x251)]||_0x501402[_0x10124b(0x212)]+_0x501402[_0x10124b(0x21c)]>_0xd7d36b['zAxis'][_0x10124b(0x251)])throw Error('Volume\x20chunk\x20range\x20exceeds\x20source\x20dimensions.\x20体积分块范围超出源数据尺寸。');},validateVolumeChunk=(_0x43be0b,_0x885317,_0x48ba05,_0x4d7251)=>{const _0x54a552=_0x2859cf;if(validateVolumeTimeIndex(_0x43be0b,_0x885317[_0x54a552(0x25b)]),validateVolumeChunkRange(_0x43be0b,_0x885317[_0x54a552(0x2b0)]),_0x4d7251!==void 0x0&&_0x885317[_0x54a552(0x25b)]!==_0x4d7251)throw Error(_0x54a552(0x2e6));if(_0x48ba05&&!rangesEqual(_0x885317[_0x54a552(0x2b0)],_0x48ba05))throw Error('Returned\x20volume\x20chunk\x20range\x20does\x20not\x20match\x20the\x20request.\x20返回体积分块范围与请求不一致。');if(_0x885317[_0x54a552(0x456)]!==_0x885317[_0x54a552(0x2b0)][_0x54a552(0x434)]||_0x885317[_0x54a552(0x3de)]!==_0x885317['range'][_0x54a552(0x304)]||_0x885317['depth']!==_0x885317[_0x54a552(0x2b0)][_0x54a552(0x21c)])throw Error(_0x54a552(0x36c));let _0x5e8ba0=_0x885317[_0x54a552(0x456)]*_0x885317[_0x54a552(0x3de)]*_0x885317[_0x54a552(0x42d)];if(!Number[_0x54a552(0x345)](_0x5e8ba0)||_0x885317['values'][_0x54a552(0x326)]!==_0x5e8ba0)throw Error('Volume\x20chunk\x20requires\x20'+_0x5e8ba0+_0x54a552(0x1ec)+_0x885317['values'][_0x54a552(0x326)]+_0x54a552(0x388));},validateVolumeSource=_0x268bcb=>{const _0xbf6b6=_0x2859cf;if(!_0x268bcb||typeof _0x268bcb['readChunk']!=_0xbf6b6(0x339))throw Error(_0xbf6b6(0x462));validateVolumeMetadata(_0x268bcb[_0xbf6b6(0x204)]);},validateBrickShape=_0x5d3cc6=>{const _0xb548f1=_0x2859cf;for(let [_0x28cd18,_0x496b1b]of[[_0x5d3cc6[_0xb548f1(0x456)],_0xb548f1(0x456)],[_0x5d3cc6[_0xb548f1(0x3de)],_0xb548f1(0x3de)],[_0x5d3cc6['depth'],'depth']])if(!Number['isInteger'](_0x28cd18)||_0x28cd18<=0x0)throw Error('Volume\x20brick\x20'+_0x496b1b+'\x20must\x20be\x20a\x20positive\x20integer.\x20体积分块\x20'+_0x496b1b+_0xb548f1(0x3fd));if(!Number['isInteger'](_0x5d3cc6[_0xb548f1(0x2b1)])||_0x5d3cc6[_0xb548f1(0x2b1)]<0x1)throw Error(_0xb548f1(0x3b7));},resolveVolumeBrickShape=(_0xd7578e={})=>{const _0x12809f=_0x2859cf;let _0x23cc7c={'width':_0xd7578e[_0x12809f(0x456)]??0x100,'height':_0xd7578e[_0x12809f(0x3de)]??0x8,'depth':_0xd7578e['depth']??0x100,'halo':_0xd7578e[_0x12809f(0x2b1)]??0x1};return validateBrickShape(_0x23cc7c),_0x23cc7c;},createVolumeBrickLayout=(_0x44207d,_0xe33a27={})=>{const _0x1e206e=_0x2859cf;validateVolumeMetadata(_0x44207d);let _0xaf1898=resolveVolumeBrickShape(_0xe33a27),_0x4d23b0=Math[_0x1e206e(0x1b5)](_0x44207d[_0x1e206e(0x1bf)][_0x1e206e(0x251)]/_0xaf1898[_0x1e206e(0x456)]),_0x3f5b4c=Math['ceil'](_0x44207d['yAxis']['count']/_0xaf1898[_0x1e206e(0x3de)]),_0x5b5289=Math[_0x1e206e(0x1b5)](_0x44207d[_0x1e206e(0x203)][_0x1e206e(0x251)]/_0xaf1898[_0x1e206e(0x42d)]);return{'shape':_0xaf1898,'countX':_0x4d23b0,'countY':_0x3f5b4c,'countZ':_0x5b5289,'brickCount':_0x4d23b0*_0x3f5b4c*_0x5b5289};},createVolumeBrickKey=_0x57dd38=>_0x57dd38['x']+':'+_0x57dd38['y']+':'+_0x57dd38['z'],createVolumeBrickDescriptor=(_0x1a4c51,_0x5c74fd,_0x57f2a2)=>{const _0x197abe=_0x2859cf;if(!Number['isInteger'](_0x57f2a2['x'])||!Number['isInteger'](_0x57f2a2['y'])||!Number[_0x197abe(0x2dd)](_0x57f2a2['z'])||_0x57f2a2['x']<0x0||_0x57f2a2['x']>=_0x5c74fd['countX']||_0x57f2a2['y']<0x0||_0x57f2a2['y']>=_0x5c74fd[_0x197abe(0x454)]||_0x57f2a2['z']<0x0||_0x57f2a2['z']>=_0x5c74fd['countZ'])throw Error('Volume\x20brick\x20coordinate\x20is\x20out\x20of\x20range.\x20体积分块坐标越界。');let _0x56a6df=_0x57f2a2['x']*_0x5c74fd[_0x197abe(0x211)][_0x197abe(0x456)],_0x3757d9=_0x57f2a2['y']*_0x5c74fd[_0x197abe(0x211)][_0x197abe(0x3de)],_0x2d7c1a=_0x57f2a2['z']*_0x5c74fd[_0x197abe(0x211)][_0x197abe(0x42d)],_0xf61f93=Math['min'](_0x5c74fd['shape'][_0x197abe(0x456)],_0x1a4c51[_0x197abe(0x1bf)][_0x197abe(0x251)]-_0x56a6df),_0x2c7956=Math[_0x197abe(0x28e)](_0x5c74fd['shape'][_0x197abe(0x3de)],_0x1a4c51[_0x197abe(0x1de)]['count']-_0x3757d9),_0xaf9530=Math[_0x197abe(0x28e)](_0x5c74fd[_0x197abe(0x211)][_0x197abe(0x42d)],_0x1a4c51[_0x197abe(0x203)][_0x197abe(0x251)]-_0x2d7c1a),_0x2924d6=_0x5c74fd['shape'][_0x197abe(0x2b1)],_0xea6592=Math[_0x197abe(0x284)](0x0,_0x56a6df-_0x2924d6),_0x446028=Math[_0x197abe(0x284)](0x0,_0x3757d9-_0x2924d6),_0x577714=Math[_0x197abe(0x284)](0x0,_0x2d7c1a-_0x2924d6),_0x34ee4a=Math[_0x197abe(0x28e)](_0x1a4c51[_0x197abe(0x1bf)][_0x197abe(0x251)],_0x56a6df+_0xf61f93+_0x2924d6),_0x21419c=Math[_0x197abe(0x28e)](_0x1a4c51[_0x197abe(0x1de)][_0x197abe(0x251)],_0x3757d9+_0x2c7956+_0x2924d6),_0x204b6b=Math[_0x197abe(0x28e)](_0x1a4c51['zAxis'][_0x197abe(0x251)],_0x2d7c1a+_0xaf9530+_0x2924d6),_0x34d9de=_0x5c74fd[_0x197abe(0x211)]['width']+_0x2924d6*0x2,_0x278577=_0x5c74fd[_0x197abe(0x211)][_0x197abe(0x3de)]+_0x2924d6*0x2,_0x1f5207=_0x5c74fd[_0x197abe(0x211)][_0x197abe(0x42d)]+_0x2924d6*0x2;return{'key':createVolumeBrickKey(_0x57f2a2),'coordinate':_0x57f2a2,'coreRange':{'xStart':_0x56a6df,'xCount':_0xf61f93,'levelStart':_0x3757d9,'levelCount':_0x2c7956,'sourceYStart':_0x2d7c1a,'sourceYCount':_0xaf9530},'readRange':{'xStart':_0xea6592,'xCount':_0x34ee4a-_0xea6592,'levelStart':_0x446028,'levelCount':_0x21419c-_0x446028,'sourceYStart':_0x577714,'sourceYCount':_0x204b6b-_0x577714},'physicalWidth':_0x34d9de,'physicalHeight':_0x278577,'physicalDepth':_0x1f5207,'byteLength':_0x34d9de*_0x278577*_0x1f5207*Float32Array[_0x197abe(0x3fc)]};},createVolumeBrickDescriptors=(_0x81dbf8,_0x352091)=>{const _0x4413fd=_0x2859cf;let _0x821ee0=[];for(let _0x57631d=0x0;_0x57631d<_0x352091[_0x4413fd(0x282)];_0x57631d+=0x1)for(let _0x472f04=0x0;_0x472f04<_0x352091['countY'];_0x472f04+=0x1)for(let _0x525a1b=0x0;_0x525a1b<_0x352091[_0x4413fd(0x1e9)];_0x525a1b+=0x1)_0x821ee0[_0x4413fd(0x39a)](createVolumeBrickDescriptor(_0x81dbf8,_0x352091,{'x':_0x525a1b,'y':_0x472f04,'z':_0x57631d}));return _0x821ee0;},EPSILON=1e-8,createMatrix=()=>new Float32Array(0x10),dotVector3=(_0x41de38,_0x44752b)=>_0x41de38[0x0]*_0x44752b[0x0]+_0x41de38[0x1]*_0x44752b[0x1]+_0x41de38[0x2]*_0x44752b[0x2],subtractVector3=(_0x3565eb,_0x742a8f)=>[_0x3565eb[0x0]-_0x742a8f[0x0],_0x3565eb[0x1]-_0x742a8f[0x1],_0x3565eb[0x2]-_0x742a8f[0x2]],crossVector3=(_0x307e6f,_0x149ee1)=>[_0x307e6f[0x1]*_0x149ee1[0x2]-_0x307e6f[0x2]*_0x149ee1[0x1],_0x307e6f[0x2]*_0x149ee1[0x0]-_0x307e6f[0x0]*_0x149ee1[0x2],_0x307e6f[0x0]*_0x149ee1[0x1]-_0x307e6f[0x1]*_0x149ee1[0x0]],normalizeVector3=_0x5de2ba=>{const _0x3c85aa=_0x2859cf;let _0x22c01a=Math[_0x3c85aa(0x348)](_0x5de2ba[0x0],_0x5de2ba[0x1],_0x5de2ba[0x2]);if(_0x22c01a<=EPSILON)throw Error(_0x3c85aa(0x218));return[_0x5de2ba[0x0]/_0x22c01a,_0x5de2ba[0x1]/_0x22c01a,_0x5de2ba[0x2]/_0x22c01a];},createIdentityMatrix=()=>{let _0x243546=createMatrix();return _0x243546[0x0]=0x1,_0x243546[0x5]=0x1,_0x243546[0xa]=0x1,_0x243546[0xf]=0x1,_0x243546;},multiplyMatrices=(_0x5f3723,_0x55321f)=>{let _0x85c668=createMatrix();for(let _0x1cb5fa=0x0;_0x1cb5fa<0x4;_0x1cb5fa+=0x1)for(let _0x6092b2=0x0;_0x6092b2<0x4;_0x6092b2+=0x1){let _0x2374c2=0x0;for(let _0x51a08e=0x0;_0x51a08e<0x4;_0x51a08e+=0x1)_0x2374c2+=_0x5f3723[_0x51a08e*0x4+_0x6092b2]*_0x55321f[_0x1cb5fa*0x4+_0x51a08e];_0x85c668[_0x1cb5fa*0x4+_0x6092b2]=_0x2374c2;}return _0x85c668;},invertMatrix=_0x2fae87=>{const _0x365b70=_0x2859cf;let _0x15fc60=Array[_0x365b70(0x1e5)]({'length':0x4},(_0xc233bf,_0x1deb39)=>{let _0x432c86=new Float64Array(0x8);for(let _0x5cb655=0x0;_0x5cb655<0x4;_0x5cb655+=0x1)_0x432c86[_0x5cb655]=_0x2fae87[_0x5cb655*0x4+_0x1deb39];return _0x432c86[_0x1deb39+0x4]=0x1,_0x432c86;});for(let _0x424bce=0x0;_0x424bce<0x4;_0x424bce+=0x1){let _0x4e15cb=_0x424bce;for(let _0x1ddc31=_0x424bce+0x1;_0x1ddc31<0x4;_0x1ddc31+=0x1)Math['abs'](_0x15fc60[_0x1ddc31][_0x424bce])>Math[_0x365b70(0x35d)](_0x15fc60[_0x4e15cb][_0x424bce])&&(_0x4e15cb=_0x1ddc31);if(Math[_0x365b70(0x35d)](_0x15fc60[_0x4e15cb][_0x424bce])<=EPSILON)throw Error(_0x365b70(0x249));_0x4e15cb!==_0x424bce&&([_0x15fc60[_0x424bce],_0x15fc60[_0x4e15cb]]=[_0x15fc60[_0x4e15cb],_0x15fc60[_0x424bce]]);let _0x5f250c=_0x15fc60[_0x424bce][_0x424bce];for(let _0xebf737=0x0;_0xebf737<0x8;_0xebf737+=0x1)_0x15fc60[_0x424bce][_0xebf737]/=_0x5f250c;for(let _0x840fdc=0x0;_0x840fdc<0x4;_0x840fdc+=0x1){if(_0x840fdc===_0x424bce)continue;let _0x38aee6=_0x15fc60[_0x840fdc][_0x424bce];for(let _0xab6489=0x0;_0xab6489<0x8;_0xab6489+=0x1)_0x15fc60[_0x840fdc][_0xab6489]-=_0x38aee6*_0x15fc60[_0x424bce][_0xab6489];}}let _0x3d36b=createMatrix();for(let _0x1aa61d=0x0;_0x1aa61d<0x4;_0x1aa61d+=0x1)for(let _0x1c41ca=0x0;_0x1c41ca<0x4;_0x1c41ca+=0x1)_0x3d36b[_0x1c41ca*0x4+_0x1aa61d]=_0x15fc60[_0x1aa61d][_0x1c41ca+0x4];return _0x3d36b;},createLookAtMatrix=(_0x3017d8,_0x2248cf,_0x3e17af)=>{let _0x250476=normalizeVector3(subtractVector3(_0x3017d8,_0x2248cf)),_0x14bb2f=normalizeVector3(crossVector3(_0x3e17af,_0x250476)),_0x46c534=crossVector3(_0x250476,_0x14bb2f),_0x4caacc=createIdentityMatrix();return _0x4caacc[0x0]=_0x14bb2f[0x0],_0x4caacc[0x1]=_0x46c534[0x0],_0x4caacc[0x2]=_0x250476[0x0],_0x4caacc[0x4]=_0x14bb2f[0x1],_0x4caacc[0x5]=_0x46c534[0x1],_0x4caacc[0x6]=_0x250476[0x1],_0x4caacc[0x8]=_0x14bb2f[0x2],_0x4caacc[0x9]=_0x46c534[0x2],_0x4caacc[0xa]=_0x250476[0x2],_0x4caacc[0xc]=-dotVector3(_0x14bb2f,_0x3017d8),_0x4caacc[0xd]=-dotVector3(_0x46c534,_0x3017d8),_0x4caacc[0xe]=-dotVector3(_0x250476,_0x3017d8),_0x4caacc;},createPerspectiveMatrix=(_0x12f8d0,_0x1bc199,_0x132be7,_0x358688)=>{const _0x11f4af=_0x2859cf;if(!(_0x12f8d0>0x0&&_0x12f8d0<Math['PI']))throw Error('透视相机视场角必须位于\x200\x20到\x20180\x20度之间。');if(!(_0x1bc199>0x0))throw Error(_0x11f4af(0x281));if(!(_0x132be7>0x0&&_0x358688>_0x132be7))throw Error(_0x11f4af(0x20e));let _0x543366=0x1/Math['tan'](_0x12f8d0/0x2),_0x5d0a7d=createMatrix();return _0x5d0a7d[0x0]=_0x543366/_0x1bc199,_0x5d0a7d[0x5]=_0x543366,_0x5d0a7d[0xa]=_0x358688/(_0x132be7-_0x358688),_0x5d0a7d[0xb]=-0x1,_0x5d0a7d[0xe]=_0x132be7*_0x358688/(_0x132be7-_0x358688),_0x5d0a7d;},createOrthographicMatrix=(_0x5690bd,_0x49b54b,_0x529745,_0x308c70)=>{const _0x5f3a5c=_0x2859cf;if(!(_0x5690bd>0x0&&_0x49b54b>0x0))throw Error('正交相机高度和宽高比必须大于\x200。');if(!(_0x529745>=0x0&&_0x308c70>_0x529745))throw Error(_0x5f3a5c(0x48a));let _0x14fa32=_0x5690bd*_0x49b54b,_0x299263=createIdentityMatrix();return _0x299263[0x0]=0x2/_0x14fa32,_0x299263[0x5]=0x2/_0x5690bd,_0x299263[0xa]=0x1/(_0x529745-_0x308c70),_0x299263[0xe]=_0x529745/(_0x529745-_0x308c70),_0x299263;},createScaleMatrix=(_0x73fcbe,_0x1e3790,_0x279eb4)=>{let _0xd8730e=createIdentityMatrix();return _0xd8730e[0x0]=_0x73fcbe,_0xd8730e[0x5]=_0x1e3790,_0xd8730e[0xa]=_0x279eb4,_0xd8730e;},composeVolumeModelMatrix=(_0x49c3dc,_0x253457)=>{const _0x39d186=_0x2859cf;if(!(_0x253457>0x0)||!Number[_0x39d186(0x273)](_0x253457))throw Error('verticalScale\x20必须是大于\x200\x20的有限数。');let _0x2a4d22=createScaleMatrix(0x1,_0x253457,0x1);return _0x49c3dc?multiplyMatrices(_0x49c3dc,_0x2a4d22):_0x2a4d22;},transformPoint=(_0x41b17d,_0x2cbaa9,_0x54e82f=0x1)=>[_0x41b17d[0x0]*_0x2cbaa9[0x0]+_0x41b17d[0x4]*_0x2cbaa9[0x1]+_0x41b17d[0x8]*_0x2cbaa9[0x2]+_0x41b17d[0xc]*_0x54e82f,_0x41b17d[0x1]*_0x2cbaa9[0x0]+_0x41b17d[0x5]*_0x2cbaa9[0x1]+_0x41b17d[0x9]*_0x2cbaa9[0x2]+_0x41b17d[0xd]*_0x54e82f,_0x41b17d[0x2]*_0x2cbaa9[0x0]+_0x41b17d[0x6]*_0x2cbaa9[0x1]+_0x41b17d[0xa]*_0x2cbaa9[0x2]+_0x41b17d[0xe]*_0x54e82f,_0x41b17d[0x3]*_0x2cbaa9[0x0]+_0x41b17d[0x7]*_0x2cbaa9[0x1]+_0x41b17d[0xb]*_0x2cbaa9[0x2]+_0x41b17d[0xf]*_0x54e82f],projectPointToViewport=(_0x1e9a19,_0x3e3d7f,_0x48ca4c,_0x3735d8)=>{let _0x40d392=transformPoint(_0x1e9a19,_0x3e3d7f);if(_0x40d392[0x3]<=EPSILON)return null;let _0x54162f=0x1/_0x40d392[0x3];return[(_0x40d392[0x0]*_0x54162f*0.5+0.5)*_0x48ca4c,(0.5-_0x40d392[0x1]*_0x54162f*0.5)*_0x3735d8,_0x40d392[0x2]*_0x54162f];},DEFAULT_POSITION=[0x0,0x1,0x2],DEFAULT_TARGET=[0x0,0x0,0x0],DEFAULT_UP=[0x0,0x1,0x0],DEFAULT_PROJECTION={'type':_0x2859cf(0x40e),'fovYDegrees':0x2d,'near':0.01,'far':0x2710},DEGREE_TO_RADIAN=Math['PI']/0xb4,cloneVector=_0x1c7b18=>[_0x1c7b18[0x0],_0x1c7b18[0x1],_0x1c7b18[0x2]],cloneProjection=_0x102a1e=>(_0x102a1e['type'],{..._0x102a1e}),cloneState=_0x432fdb=>({'position':cloneVector(_0x432fdb[_0x2859cf(0x27c)]),'target':cloneVector(_0x432fdb[_0x2859cf(0x2a6)]),'up':cloneVector(_0x432fdb['up']),'projection':cloneProjection(_0x432fdb[_0x2859cf(0x30f)])}),subtractVector=(_0x5947b6,_0x2e1a12)=>[_0x5947b6[0x0]-_0x2e1a12[0x0],_0x5947b6[0x1]-_0x2e1a12[0x1],_0x5947b6[0x2]-_0x2e1a12[0x2]],addVector=(_0x422979,_0x24d8cc)=>[_0x422979[0x0]+_0x24d8cc[0x0],_0x422979[0x1]+_0x24d8cc[0x1],_0x422979[0x2]+_0x24d8cc[0x2]],scaleVector=(_0x36f220,_0x3c436e)=>[_0x36f220[0x0]*_0x3c436e,_0x36f220[0x1]*_0x3c436e,_0x36f220[0x2]*_0x3c436e],crossVector=(_0x55a892,_0x335bee)=>[_0x55a892[0x1]*_0x335bee[0x2]-_0x55a892[0x2]*_0x335bee[0x1],_0x55a892[0x2]*_0x335bee[0x0]-_0x55a892[0x0]*_0x335bee[0x2],_0x55a892[0x0]*_0x335bee[0x1]-_0x55a892[0x1]*_0x335bee[0x0]],normalizeVector=_0x866ff0=>{const _0x430b9f=_0x2859cf;let _0x20ade7=Math[_0x430b9f(0x348)](_0x866ff0[0x0],_0x866ff0[0x1],_0x866ff0[0x2]);return _0x20ade7===0x0?[0x0,0x0,0x0]:scaleVector(_0x866ff0,0x1/_0x20ade7);},clamp$1=(_0x52e53a,_0x7287e6,_0x34b1ee)=>Math['min'](_0x34b1ee,Math[_0x2859cf(0x284)](_0x7287e6,_0x52e53a)),validateProjection=_0x15ffde=>{const _0x28d078=_0x2859cf;if(!(_0x15ffde[_0x28d078(0x498)]>=0x0&&_0x15ffde[_0x28d078(0x465)]>_0x15ffde[_0x28d078(0x498)]))throw Error(_0x28d078(0x48a));if(_0x15ffde[_0x28d078(0x427)]==='perspective'&&!(_0x15ffde['near']>0x0&&_0x15ffde[_0x28d078(0x3f2)]>0x0&&_0x15ffde['fovYDegrees']<0xb4))throw Error(_0x28d078(0x244));if(_0x15ffde[_0x28d078(0x427)]===_0x28d078(0x34a)&&!(_0x15ffde['height']>0x0))throw Error('正交相机高度必须大于\x200。');},resolveInitialState=_0x2a0505=>{const _0x5190ec=_0x2859cf;let _0x11c77d={'position':_0x2a0505['state']?.[_0x5190ec(0x27c)]?cloneVector(_0x2a0505[_0x5190ec(0x2f6)][_0x5190ec(0x27c)]):cloneVector(DEFAULT_POSITION),'target':_0x2a0505[_0x5190ec(0x2f6)]?.['target']?cloneVector(_0x2a0505['state']['target']):cloneVector(DEFAULT_TARGET),'up':_0x2a0505[_0x5190ec(0x2f6)]?.['up']?cloneVector(_0x2a0505[_0x5190ec(0x2f6)]['up']):cloneVector(DEFAULT_UP),'projection':_0x2a0505['state']?.[_0x5190ec(0x30f)]?cloneProjection(_0x2a0505[_0x5190ec(0x2f6)][_0x5190ec(0x30f)]):cloneProjection(DEFAULT_PROJECTION)};return validateProjection(_0x11c77d[_0x5190ec(0x30f)]),_0x11c77d;};var VolumeCamera=class{[_0x2859cf(0x458)];['aspect'];[_0x2859cf(0x34d)];[_0x2859cf(0x28a)];['zoomSpeed'];[_0x2859cf(0x1c9)];[_0x2859cf(0x194)];[_0x2859cf(0x35f)];[_0x2859cf(0x32b)];constructor(_0x1b5b32={}){const _0x4c34cd=_0x2859cf;if(this[_0x4c34cd(0x458)]=resolveInitialState(_0x1b5b32),this['aspect']=_0x1b5b32[_0x4c34cd(0x46b)]??0x1,this[_0x4c34cd(0x34d)]=_0x1b5b32[_0x4c34cd(0x34d)]??0.005,this['panSpeed']=_0x1b5b32[_0x4c34cd(0x28a)]??0x1,this[_0x4c34cd(0x492)]=_0x1b5b32['zoomSpeed']??0.0015,this[_0x4c34cd(0x1c9)]=_0x1b5b32[_0x4c34cd(0x1c9)]??0.001,this[_0x4c34cd(0x194)]=_0x1b5b32[_0x4c34cd(0x194)]??0x1/0x0,this['minimumPitch']=(_0x1b5b32[_0x4c34cd(0x340)]??-0x59)*DEGREE_TO_RADIAN,this[_0x4c34cd(0x32b)]=(_0x1b5b32['maximumPitchDegrees']??0x59)*DEGREE_TO_RADIAN,!(this['aspect']>0x0))throw Error('相机宽高比必须大于\x200。');}get[_0x2859cf(0x2f6)](){const _0x497f0e=_0x2859cf;return cloneState(this[_0x497f0e(0x458)]);}get[_0x2859cf(0x27e)](){const _0x542547=_0x2859cf;let _0x4e4b46=createLookAtMatrix(this[_0x542547(0x458)][_0x542547(0x27c)],this[_0x542547(0x458)]['target'],this[_0x542547(0x458)]['up']),_0x17a915=this[_0x542547(0x20a)](),_0x58c7c1=multiplyMatrices(_0x17a915,_0x4e4b46);return{'view':_0x4e4b46,'projection':_0x17a915,'viewProjection':_0x58c7c1,'inverseViewProjection':invertMatrix(_0x58c7c1)};}['setState'](_0x2cf8d2){const _0x4850de=_0x2859cf;validateProjection(_0x2cf8d2[_0x4850de(0x30f)]),this[_0x4850de(0x458)]=cloneState(_0x2cf8d2);}[_0x2859cf(0x36e)](_0x1b7d9a){const _0x376e87=_0x2859cf;if(!(_0x1b7d9a>0x0)||!Number[_0x376e87(0x273)](_0x1b7d9a))throw Error(_0x376e87(0x349));this[_0x376e87(0x46b)]=_0x1b7d9a;}['setProjectionType'](_0xf16c07){const _0x165633=_0x2859cf;if(_0xf16c07===this[_0x165633(0x458)][_0x165633(0x30f)][_0x165633(0x427)])return;let _0x26ee14=Math['hypot'](...subtractVector(this[_0x165633(0x458)]['position'],this[_0x165633(0x458)][_0x165633(0x2a6)]));if(_0xf16c07===_0x165633(0x34a)){let _0x39836b=this['cameraState'][_0x165633(0x30f)],_0x1b29e0=_0x39836b[_0x165633(0x427)]===_0x165633(0x40e)?_0x39836b['fovYDegrees']*DEGREE_TO_RADIAN:0x2d*DEGREE_TO_RADIAN;this[_0x165633(0x458)][_0x165633(0x30f)]={'type':_0xf16c07,'height':0x2*_0x26ee14*Math[_0x165633(0x3fa)](_0x1b29e0/0x2),'near':_0x39836b[_0x165633(0x498)],'far':_0x39836b[_0x165633(0x465)]};return;}let _0x2f59e5=this[_0x165633(0x458)][_0x165633(0x30f)],_0x3c41ec=_0x2f59e5[_0x165633(0x427)]===_0x165633(0x34a)?_0x2f59e5[_0x165633(0x3de)]/(0x2*Math['tan'](0x2d*DEGREE_TO_RADIAN/0x2)):_0x26ee14,_0x5f1be9=normalizeVector(subtractVector(this[_0x165633(0x458)][_0x165633(0x27c)],this[_0x165633(0x458)][_0x165633(0x2a6)]));this[_0x165633(0x458)][_0x165633(0x27c)]=addVector(this[_0x165633(0x458)][_0x165633(0x2a6)],scaleVector(_0x5f1be9,_0x3c41ec)),this[_0x165633(0x458)][_0x165633(0x30f)]={'type':_0xf16c07,'fovYDegrees':0x2d,'near':_0x2f59e5[_0x165633(0x498)],'far':_0x2f59e5[_0x165633(0x465)]};}['orbit'](_0x552495,_0x48ada0){const _0x8cfa73=_0x2859cf;let _0x1801c3=subtractVector(this[_0x8cfa73(0x458)][_0x8cfa73(0x27c)],this['cameraState'][_0x8cfa73(0x2a6)]),_0x2f41e0=Math[_0x8cfa73(0x348)](..._0x1801c3);if(_0x2f41e0===0x0)return;let _0x1e5298=Math[_0x8cfa73(0x37c)](_0x1801c3[0x0],_0x1801c3[0x2])-_0x552495*this['rotateSpeed'],_0x56b7a9=clamp$1(Math['asin'](_0x1801c3[0x1]/_0x2f41e0)+_0x48ada0*this['rotateSpeed'],this[_0x8cfa73(0x35f)],this[_0x8cfa73(0x32b)]),_0x432fe7=Math['cos'](_0x56b7a9)*_0x2f41e0;this['cameraState']['position']=addVector(this[_0x8cfa73(0x458)][_0x8cfa73(0x2a6)],[Math['sin'](_0x1e5298)*_0x432fe7,Math[_0x8cfa73(0x266)](_0x56b7a9)*_0x2f41e0,Math[_0x8cfa73(0x1bd)](_0x1e5298)*_0x432fe7]);}['pan'](_0x1a0285,_0x548462,_0x434ea7){const _0x4dc897=_0x2859cf;if(!(_0x434ea7>0x0))return;let _0x421053=normalizeVector(subtractVector(this[_0x4dc897(0x458)][_0x4dc897(0x2a6)],this[_0x4dc897(0x458)][_0x4dc897(0x27c)])),_0x5e585a=normalizeVector(crossVector(_0x421053,this[_0x4dc897(0x458)]['up'])),_0x52a9ab=normalizeVector(crossVector(_0x5e585a,_0x421053)),_0x5b82c2=Math[_0x4dc897(0x348)](...subtractVector(this[_0x4dc897(0x458)][_0x4dc897(0x27c)],this[_0x4dc897(0x458)]['target'])),_0x56fa8d=(this[_0x4dc897(0x458)][_0x4dc897(0x30f)][_0x4dc897(0x427)]===_0x4dc897(0x34a)?this[_0x4dc897(0x458)][_0x4dc897(0x30f)][_0x4dc897(0x3de)]:0x2*_0x5b82c2*Math[_0x4dc897(0x3fa)](this[_0x4dc897(0x458)][_0x4dc897(0x30f)][_0x4dc897(0x3f2)]*DEGREE_TO_RADIAN/0x2))/_0x434ea7*this[_0x4dc897(0x28a)],_0x4af541=addVector(scaleVector(_0x5e585a,-_0x1a0285*_0x56fa8d),scaleVector(_0x52a9ab,_0x548462*_0x56fa8d));this[_0x4dc897(0x458)][_0x4dc897(0x27c)]=addVector(this['cameraState'][_0x4dc897(0x27c)],_0x4af541),this[_0x4dc897(0x458)][_0x4dc897(0x2a6)]=addVector(this['cameraState']['target'],_0x4af541);}[_0x2859cf(0x246)](_0x1ce714){const _0x1831cf=_0x2859cf;let _0x5ece5a=Math[_0x1831cf(0x2db)](_0x1ce714*this[_0x1831cf(0x492)]);if(this[_0x1831cf(0x458)][_0x1831cf(0x30f)][_0x1831cf(0x427)]==='orthographic'){this[_0x1831cf(0x458)][_0x1831cf(0x30f)]={...this[_0x1831cf(0x458)][_0x1831cf(0x30f)],'height':Math[_0x1831cf(0x284)](this[_0x1831cf(0x1c9)],this['cameraState'][_0x1831cf(0x30f)][_0x1831cf(0x3de)]*_0x5ece5a)};return;}let _0x331690=subtractVector(this[_0x1831cf(0x458)]['position'],this[_0x1831cf(0x458)][_0x1831cf(0x2a6)]),_0x52a7bd=clamp$1(Math[_0x1831cf(0x348)](..._0x331690)*_0x5ece5a,this[_0x1831cf(0x1c9)],this['maximumDistance']);this[_0x1831cf(0x458)][_0x1831cf(0x27c)]=addVector(this[_0x1831cf(0x458)][_0x1831cf(0x2a6)],scaleVector(normalizeVector(_0x331690),_0x52a7bd));}[_0x2859cf(0x20a)](){const _0x4a40c4=_0x2859cf;let _0x2e5802=this[_0x4a40c4(0x458)][_0x4a40c4(0x30f)];return _0x2e5802[_0x4a40c4(0x427)]===_0x4a40c4(0x40e)?createPerspectiveMatrix(_0x2e5802['fovYDegrees']*DEGREE_TO_RADIAN,this[_0x4a40c4(0x46b)],_0x2e5802[_0x4a40c4(0x498)],_0x2e5802[_0x4a40c4(0x465)]):createOrthographicMatrix(_0x2e5802[_0x4a40c4(0x3de)],this['aspect'],_0x2e5802[_0x4a40c4(0x498)],_0x2e5802[_0x4a40c4(0x465)]);}};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=_0x59bdd2=>_0x59bdd2*Math['PI']/0xb4,geodeticToEcef=(_0x446b92,_0x52279a,_0x4bfa17)=>{const _0x4e86cc=_0x2859cf;let _0x22579e=Math[_0x4e86cc(0x266)](_0x52279a),_0x3f5af5=Math[_0x4e86cc(0x1bd)](_0x52279a),_0x542079=Math[_0x4e86cc(0x266)](_0x446b92),_0x37eeb2=Math['cos'](_0x446b92),_0x11aaa2=WGS84_SEMI_MAJOR_AXIS_METERS/Math[_0x4e86cc(0x3e2)](0x1-WGS84_FIRST_ECCENTRICITY_SQUARED*_0x22579e*_0x22579e);return[(_0x11aaa2+_0x4bfa17)*_0x3f5af5*_0x37eeb2,(_0x11aaa2+_0x4bfa17)*_0x3f5af5*_0x542079,(_0x11aaa2*(0x1-WGS84_FIRST_ECCENTRICITY_SQUARED)+_0x4bfa17)*_0x22579e];},validateAxisSpan=(_0x50e338,_0xf2f756,_0x590924)=>{const _0x299f48=_0x2859cf;if(!Number[_0x299f48(0x273)](_0x50e338)||!Number[_0x299f48(0x273)](_0xf2f756)||_0x50e338===_0xf2f756)throw Error(_0x590924+_0x299f48(0x324)+_0x590924+_0x299f48(0x41a));},createGeographicVolumeLayout=(_0x1dec2e,_0x502a64=0x1)=>{const _0x2038a9=_0x2859cf;let _0x15cebe=degreesToRadians(_0x1dec2e[_0x2038a9(0x1bf)]['start']),_0x238c0e=degreesToRadians(_0x1dec2e['xAxis'][_0x2038a9(0x317)]),_0x2dd93b=degreesToRadians(_0x1dec2e[_0x2038a9(0x203)]['start']),_0x12c797=degreesToRadians(_0x1dec2e['zAxis'][_0x2038a9(0x317)]);validateAxisSpan(_0x15cebe,_0x238c0e,'Longitude\x20/\x20经度'),validateAxisSpan(_0x2dd93b,_0x12c797,'Latitude\x20/\x20纬度');let _0x2832d1=_0x1dec2e[_0x2038a9(0x1de)][_0x2038a9(0x1df)],_0xe0f9c2=_0x1dec2e[_0x2038a9(0x1de)][_0x2038a9(0x317)];if(validateAxisSpan(_0x2832d1,_0xe0f9c2,_0x2038a9(0x271)),!(_0x502a64>0x0)||!Number[_0x2038a9(0x273)](_0x502a64))throw Error(_0x2038a9(0x257));let _0x3740cc=_0x2832d1+(_0xe0f9c2-_0x2832d1)*_0x502a64,_0x25ea4e=(_0x15cebe+_0x238c0e)/0x2,_0x3df254=(_0x2dd93b+_0x12c797)/0x2,_0x597289=geodeticToEcef(_0x25ea4e,_0x3df254,0x0),_0x38c5af=Math['abs'](_0x238c0e-_0x15cebe)*WGS84_SEMI_MAJOR_AXIS_METERS*Math['max'](0.01,Math[_0x2038a9(0x1bd)](_0x3df254)),_0x25dfbf=Math['abs'](_0x12c797-_0x2dd93b)*WGS84_SEMI_MAJOR_AXIS_METERS,_0x35c6f9=Math[_0x2038a9(0x284)](_0x38c5af,_0x25dfbf);if(!(_0x35c6f9>0x0)||!Number[_0x2038a9(0x273)](_0x35c6f9))throw Error('Geographic\x20volume\x20normalization\x20must\x20be\x20a\x20positive\x20finite\x20distance.\x20地理体积归一化尺度必须是正有限距离。');let _0x1960eb=[0x1/0x0,0x1/0x0,0x1/0x0],_0x40ced6=[-0x1/0x0,-0x1/0x0,-0x1/0x0];for(let _0x828d0a=0x0;_0x828d0a<=0x8;_0x828d0a+=0x1){let _0x4d857a=_0x2dd93b+(_0x12c797-_0x2dd93b)*_0x828d0a/0x8;for(let _0x4d237f=0x0;_0x4d237f<=0x8;_0x4d237f+=0x1){let _0x4a3b61=_0x15cebe+(_0x238c0e-_0x15cebe)*_0x4d237f/0x8;for(let _0x290306 of[_0x2832d1,_0x3740cc]){let _0x4e8162=geodeticToEcef(_0x4a3b61,_0x4d857a,_0x290306);for(let _0x5630b4=0x0;_0x5630b4<0x3;_0x5630b4+=0x1){let _0x343828=(_0x4e8162[_0x5630b4]-_0x597289[_0x5630b4])/_0x35c6f9;_0x1960eb[_0x5630b4]=Math[_0x2038a9(0x28e)](_0x1960eb[_0x5630b4],_0x343828),_0x40ced6[_0x5630b4]=Math[_0x2038a9(0x284)](_0x40ced6[_0x5630b4],_0x343828);}}}}let _0x50320e=_0x40ced6['map']((_0x1b3256,_0x1b4fe9)=>_0x1b3256-_0x1960eb[_0x1b4fe9]);if(_0x50320e[_0x2038a9(0x1b7)](_0x4bd049=>!(_0x4bd049>0x0)||!Number['isFinite'](_0x4bd049)))throw Error('Geographic\x20volume\x20proxy\x20bounds\x20are\x20invalid.\x20地理体积代理范围无效。');return{'centerEcef':_0x597289,'normalizationMeters':_0x35c6f9,'proxyModelMatrix':[_0x50320e[0x0],0x0,0x0,0x0,0x0,_0x50320e[0x1],0x0,0x0,0x0,0x0,_0x50320e[0x2],0x0,_0x1960eb[0x0],_0x1960eb[0x1],_0x1960eb[0x2],0x1],'transform':{'mode':_0x2038a9(0x27b),'centerEcefScaled':[_0x597289[0x0]/_0x35c6f9,_0x597289[0x1]/_0x35c6f9,_0x597289[0x2]/_0x35c6f9],'semiMajorAxisScaled':WGS84_SEMI_MAJOR_AXIS_METERS/_0x35c6f9,'semiMinorAxisScaled':WGS84_SEMI_MINOR_AXIS_METERS/_0x35c6f9,'longitudeRadians':[_0x15cebe,_0x238c0e],'latitudeRadians':[_0x2dd93b,_0x12c797],'heightScaled':[_0x2832d1/_0x35c6f9,_0x3740cc/_0x35c6f9]}};},ecefToGeographicVolumeLocal=(_0x1b2741,_0x389203)=>[(_0x1b2741[0x0]-_0x389203[_0x2859cf(0x264)][0x0])/_0x389203[_0x2859cf(0x220)],(_0x1b2741[0x1]-_0x389203['centerEcef'][0x1])/_0x389203[_0x2859cf(0x220)],(_0x1b2741[0x2]-_0x389203['centerEcef'][0x2])/_0x389203[_0x2859cf(0x220)]],isMissingValue=(_0x505c3b,_0x5ce37c)=>Number[_0x2859cf(0x3db)](_0x505c3b)||_0x5ce37c!==void 0x0&&_0x505c3b===_0x5ce37c,axisValueToNormalized=(_0x3541d8,_0x1615ed)=>_0x3541d8[_0x2859cf(0x1df)]===_0x3541d8['end']?0x0:(_0x1615ed-_0x3541d8[_0x2859cf(0x1df)])/(_0x3541d8[_0x2859cf(0x317)]-_0x3541d8[_0x2859cf(0x1df)]),validateProfile=_0x46e30d=>{const _0x11b21b=_0x2859cf;if(!_0x46e30d['id'])throw Error(_0x11b21b(0x2e3));if(_0x46e30d[_0x11b21b(0x40c)][_0x11b21b(0x326)]<0x4||_0x46e30d[_0x11b21b(0x40c)][_0x11b21b(0x326)]%0x2!=0x0)throw Error(_0x11b21b(0x303)+_0x46e30d['id']+'\x20的\x20path\x20必须包含至少两个\x20[x,\x20z]\x20点。');if(_0x46e30d[_0x11b21b(0x45e)]['length']<0x2)throw Error('路线剖面\x20'+_0x46e30d['id']+_0x11b21b(0x353));let _0x4a633a=_0x46e30d[_0x11b21b(0x40c)][_0x11b21b(0x326)]/0x2;if(_0x46e30d[_0x11b21b(0x1cd)][_0x11b21b(0x326)]!==_0x4a633a*_0x46e30d[_0x11b21b(0x45e)][_0x11b21b(0x326)])throw Error(_0x11b21b(0x303)+_0x46e30d['id']+_0x11b21b(0x216));if(_0x46e30d['opacity']!==void 0x0&&(!(_0x46e30d['opacity']>=0x0&&_0x46e30d[_0x11b21b(0x446)]<=0x1)||!Number[_0x11b21b(0x273)](_0x46e30d[_0x11b21b(0x446)])))throw Error(_0x11b21b(0x303)+_0x46e30d['id']+_0x11b21b(0x365));for(let _0x517b6a of _0x46e30d[_0x11b21b(0x40c)])if(!Number['isFinite'](_0x517b6a))throw Error(_0x11b21b(0x303)+_0x46e30d['id']+_0x11b21b(0x29b));for(let _0x3743e1 of _0x46e30d[_0x11b21b(0x45e)])if(!Number[_0x11b21b(0x273)](_0x3743e1))throw Error(_0x11b21b(0x303)+_0x46e30d['id']+'\x20的\x20heights\x20包含非有限高度。');return _0x4a633a;},createPositions=(_0x3d3556,_0x318fea,_0x4cb6aa)=>{const _0x1e8720=_0x2859cf;let _0x45733b=new Float32Array(_0x318fea*_0x3d3556[_0x1e8720(0x45e)][_0x1e8720(0x326)]*0x3);for(let _0x19c8a7=0x0;_0x19c8a7<_0x3d3556[_0x1e8720(0x45e)][_0x1e8720(0x326)];_0x19c8a7+=0x1)for(let _0x51c5e0=0x0;_0x51c5e0<_0x318fea;_0x51c5e0+=0x1){let _0xe81590=(_0x19c8a7*_0x318fea+_0x51c5e0)*0x3;_0x45733b[_0xe81590]=axisValueToNormalized(_0x4cb6aa['xAxis'],_0x3d3556['path'][_0x51c5e0*0x2]),_0x45733b[_0xe81590+0x1]=axisValueToNormalized(_0x4cb6aa[_0x1e8720(0x1de)],_0x3d3556[_0x1e8720(0x45e)][_0x19c8a7]),_0x45733b[_0xe81590+0x2]=axisValueToNormalized(_0x4cb6aa[_0x1e8720(0x203)],_0x3d3556[_0x1e8720(0x40c)][_0x51c5e0*0x2+0x1]);}return _0x45733b;},createValues=_0x3b1550=>{const _0xb0cddd=_0x2859cf;let _0x363943=new Float32Array(_0x3b1550[_0xb0cddd(0x1cd)]['length']);for(let _0x4dee8c=0x0;_0x4dee8c<_0x3b1550[_0xb0cddd(0x1cd)][_0xb0cddd(0x326)];_0x4dee8c+=0x1){let _0x11c3bb=_0x3b1550[_0xb0cddd(0x1cd)][_0x4dee8c];_0x363943[_0x4dee8c]=isMissingValue(_0x11c3bb,_0x3b1550[_0xb0cddd(0x219)])?NaN:_0x11c3bb;}return _0x363943;},createIndices=(_0x58617f,_0x3c78f3)=>{let _0x1d6a3e=new Uint32Array((_0x58617f-0x1)*(_0x3c78f3-0x1)*0x6),_0x4edaa4=0x0;for(let _0x59b93f=0x0;_0x59b93f<_0x3c78f3-0x1;_0x59b93f+=0x1)for(let _0x4712df=0x0;_0x4712df<_0x58617f-0x1;_0x4712df+=0x1){let _0x223c58=_0x59b93f*_0x58617f+_0x4712df,_0x513f00=_0x223c58+0x1,_0x5423b8=_0x223c58+_0x58617f,_0x4aa395=_0x5423b8+0x1;_0x1d6a3e[_0x4edaa4]=_0x223c58,_0x1d6a3e[_0x4edaa4+0x1]=_0x513f00,_0x1d6a3e[_0x4edaa4+0x2]=_0x5423b8,_0x1d6a3e[_0x4edaa4+0x3]=_0x5423b8,_0x1d6a3e[_0x4edaa4+0x4]=_0x513f00,_0x1d6a3e[_0x4edaa4+0x5]=_0x4aa395,_0x4edaa4+=0x6;}return _0x1d6a3e;},buildVolumeRouteProfileMesh=(_0x584471,_0x554236)=>{const _0x1c6254=_0x2859cf;let _0x138c1c=validateProfile(_0x584471);return{'id':_0x584471['id'],'positions':createPositions(_0x584471,_0x138c1c,_0x554236),'values':createValues(_0x584471),'indices':createIndices(_0x138c1c,_0x584471['heights'][_0x1c6254(0x326)]),'opacity':_0x584471[_0x1c6254(0x446)]??0x1,'depthMode':_0x584471[_0x1c6254(0x341)]??_0x1c6254(0x3cc),'revision':_0x584471[_0x1c6254(0x441)]};};var volumeRaymarch_default=_0x2859cf(0x2a8),sceneMesh_default='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',volumeSlice_default='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';const validateMetadata=_0x19cbf9=>{const _0x5350a7=_0x2859cf;if([_0x19cbf9[_0x5350a7(0x1bf)]['count'],_0x19cbf9[_0x5350a7(0x1de)][_0x5350a7(0x251)],_0x19cbf9[_0x5350a7(0x203)][_0x5350a7(0x251)],_0x19cbf9[_0x5350a7(0x420)],_0x19cbf9[_0x5350a7(0x2c4)],_0x19cbf9[_0x5350a7(0x3d8)]][_0x5350a7(0x1b7)](_0x4c8c95=>!Number[_0x5350a7(0x2dd)](_0x4c8c95)||_0x4c8c95<=0x0))throw Error('WebGPU\x20volume\x20dimensions\x20must\x20be\x20positive\x20integers.\x20WebGPU\x20体积尺寸必须是正整数。');if(_0x19cbf9[_0x5350a7(0x2b1)]!==0x1)throw Error(_0x5350a7(0x1ee));},getBrickCount=_0x156038=>[Math[_0x2859cf(0x1b5)](_0x156038[_0x2859cf(0x1bf)]['count']/_0x156038[_0x2859cf(0x420)]),Math[_0x2859cf(0x1b5)](_0x156038[_0x2859cf(0x1de)]['count']/_0x156038['brickHeight']),Math['ceil'](_0x156038[_0x2859cf(0x203)][_0x2859cf(0x251)]/_0x156038[_0x2859cf(0x3d8)])],getLogicalBrickCoordinate=(_0x40c63f,_0x5f0268)=>{const _0x34138a=_0x2859cf;let _0x3906c7=_0x5f0268[0x0]*_0x5f0268[0x1],_0x19d112=Math[_0x34138a(0x49c)](_0x40c63f/_0x3906c7),_0xe9faaf=_0x40c63f-_0x19d112*_0x3906c7,_0x218b5c=Math[_0x34138a(0x49c)](_0xe9faaf/_0x5f0268[0x0]);return[_0xe9faaf-_0x218b5c*_0x5f0268[0x0],_0x218b5c,_0x19d112];},analyzeBrickOccupancy=(_0x3d83cc,_0x27ac7d,_0x2f2fe7)=>{const _0xbe3f3f=_0x2859cf;let _0x42dfc3=_0x27ac7d[_0xbe3f3f(0x420)]+0x2,_0x24b1c8=_0x27ac7d['brickHeight']+0x2,_0x2d21bd=getLogicalBrickCoordinate(_0x3d83cc[_0xbe3f3f(0x191)],_0x2f2fe7),_0xed7ed8=Math[_0xbe3f3f(0x28e)](_0x27ac7d[_0xbe3f3f(0x420)],_0x27ac7d[_0xbe3f3f(0x1bf)][_0xbe3f3f(0x251)]-_0x2d21bd[0x0]*_0x27ac7d['brickWidth']),_0x43c284=Math[_0xbe3f3f(0x28e)](_0x27ac7d[_0xbe3f3f(0x2c4)],_0x27ac7d[_0xbe3f3f(0x1de)][_0xbe3f3f(0x251)]-_0x2d21bd[0x1]*_0x27ac7d[_0xbe3f3f(0x2c4)]),_0x337a57=Math[_0xbe3f3f(0x28e)](_0x27ac7d[_0xbe3f3f(0x3d8)],_0x27ac7d[_0xbe3f3f(0x203)]['count']-_0x2d21bd[0x2]*_0x27ac7d[_0xbe3f3f(0x3d8)]);for(let _0x3ee7a8=0x0;_0x3ee7a8<_0x337a57;_0x3ee7a8+=0x1)for(let _0x24ed24=0x0;_0x24ed24<_0x43c284;_0x24ed24+=0x1){let _0x4180f6=((_0x3ee7a8+0x1)*_0x24b1c8+_0x24ed24+0x1)*_0x42dfc3+0x1;for(let _0x3c5c99=0x0;_0x3c5c99<_0xed7ed8;_0x3c5c99+=0x1){let _0x185f1c=_0x3d83cc[_0xbe3f3f(0x1cd)][_0x4180f6+_0x3c5c99];if(_0x185f1c===_0x185f1c&&(_0x27ac7d[_0xbe3f3f(0x219)]===void 0x0||_0x185f1c!==_0x27ac7d[_0xbe3f3f(0x219)]))return{'occupied':!0x0,'coreSampleCount':_0xed7ed8*_0x43c284*_0x337a57};}}return{'occupied':!0x1,'coreSampleCount':_0xed7ed8*_0x43c284*_0x337a57};},findAtlasLayout=(_0x411301,_0x43ad49,_0x5d434c,_0x238fb6,_0xff575a)=>{const _0x17b2a4=_0x2859cf;if(_0x411301<=0x0)return null;let _0x434afd=Math[_0x17b2a4(0x49c)](_0xff575a/_0x43ad49),_0x3da092=Math[_0x17b2a4(0x49c)](_0xff575a/_0x5d434c),_0x336635=Math[_0x17b2a4(0x49c)](_0xff575a/_0x238fb6),_0x315bf9=null;for(let _0x3b4b68=0x1;_0x3b4b68<=_0x434afd;_0x3b4b68+=0x1)for(let _0x4fc268=0x1;_0x4fc268<=_0x3da092;_0x4fc268+=0x1){let _0x1950c8=Math[_0x17b2a4(0x28e)](_0x336635,Math[_0x17b2a4(0x49c)](_0x411301/(_0x3b4b68*_0x4fc268))),_0x33ff07=_0x3b4b68*_0x4fc268*_0x1950c8;_0x1950c8<=0x0||_0x33ff07<=(_0x315bf9?.['slotCount']??0x0)||(_0x315bf9={'slotCountX':_0x3b4b68,'slotCountY':_0x4fc268,'slotCountZ':_0x1950c8,'slotCount':_0x33ff07,'textureCount':0x1,'capacity':_0x33ff07});}return _0x315bf9;},getSlotCoordinate=(_0x17a6ba,_0x3c977b)=>{const _0x33886c=_0x2859cf;let _0x30881a=_0x3c977b[_0x33886c(0x228)]*_0x3c977b['slotCountY'],_0x2cf997=Math['floor'](_0x17a6ba/_0x30881a),_0x402168=_0x17a6ba-_0x2cf997*_0x30881a,_0x3af104=Math[_0x33886c(0x49c)](_0x402168/_0x3c977b[_0x33886c(0x228)]);return[_0x402168-_0x3af104*_0x3c977b['slotCountX'],_0x3af104,_0x2cf997];},findLeastRecentlyUsed=(_0x20b745,_0x504ae9)=>{const _0x51e8c7=_0x2859cf;let _0x5aca14=null;for(let _0x3c4e78 of _0x20b745)_0x3c4e78[_0x51e8c7(0x285)]!==_0x504ae9&&(!_0x5aca14||_0x3c4e78[_0x51e8c7(0x285)]<_0x5aca14[_0x51e8c7(0x285)])&&(_0x5aca14=_0x3c4e78);return _0x5aca14;},createPaddedTextureData=(_0xba0ae9,_0x4a6d75,_0x50f886,_0x6fb34)=>{const _0x2c0417=_0x2859cf;let _0x3a0030=_0x4a6d75*Float32Array[_0x2c0417(0x3fc)],_0x579927=Math[_0x2c0417(0x1b5)](_0x3a0030/0x100)*0x100;if(_0x3a0030===_0x579927)return{'values':_0xba0ae9,'bytesPerRow':_0x579927};let _0x436a26=_0x579927/Float32Array[_0x2c0417(0x3fc)],_0x27487e=new Float32Array(_0x436a26*_0x50f886*_0x6fb34);for(let _0x2dbc18=0x0;_0x2dbc18<_0x6fb34;_0x2dbc18+=0x1)for(let _0x494dd0=0x0;_0x494dd0<_0x50f886;_0x494dd0+=0x1){let _0x5cf014=(_0x2dbc18*_0x50f886+_0x494dd0)*_0x4a6d75,_0x596364=(_0x2dbc18*_0x50f886+_0x494dd0)*_0x436a26;_0x27487e[_0x2c0417(0x252)](_0xba0ae9[_0x2c0417(0x23f)](_0x5cf014,_0x5cf014+_0x4a6d75),_0x596364);}return{'values':_0x27487e,'bytesPerRow':_0x579927};};var WebgpuBrickAtlas=class{['device'];[_0x2859cf(0x33b)];[_0x2859cf(0x1d7)];[_0x2859cf(0x204)]=null;['layout']=null;['atlasTextures']=[];['atlasViews']=[];[_0x2859cf(0x493)]=null;[_0x2859cf(0x487)]=new Uint32Array();[_0x2859cf(0x253)]=new Map();[_0x2859cf(0x3e6)]=new Map();['generation']=0x0;constructor(_0x2fd78b,_0xb6f660=0x20000000,_0x26fc0a=_0xb6f660){const _0x29ab9f=_0x2859cf;if(!Number[_0x29ab9f(0x273)](_0xb6f660)||!Number['isFinite'](_0x26fc0a)||_0xb6f660<=0x0||_0x26fc0a<=0x0)throw Error('WebGPU\x20volume\x20memory\x20limits\x20must\x20be\x20positive.\x20WebGPU\x20体积显存限制必须大于零。');this[_0x29ab9f(0x358)]=_0x2fd78b,this[_0x29ab9f(0x33b)]=Math[_0x29ab9f(0x28e)](_0xb6f660,_0x26fc0a),this[_0x29ab9f(0x1d7)]=_0x26fc0a;}get[_0x2859cf(0x1b2)](){const _0x2c2824=_0x2859cf;if(!this[_0x2c2824(0x204)])throw Error(_0x2c2824(0x43c));return this[_0x2c2824(0x204)];}get['atlasLayout'](){const _0x5b212a=_0x2859cf;if(!this[_0x5b212a(0x2ea)])throw Error('WebGPU\x20volume\x20atlas\x20layout\x20is\x20unavailable.\x20WebGPU\x20体积图集布局不可用。');return this[_0x5b212a(0x2ea)];}get['residentBrickCount'](){const _0x4f3f24=_0x2859cf;return this[_0x4f3f24(0x253)][_0x4f3f24(0x376)];}get['statistics'](){const _0x2be14c=_0x2859cf;if(!this['metadata']||!this[_0x2be14c(0x2ea)])return{'logicalBrickCount':0x0,'atlasCapacity':0x0,'gpuBytes':0x0,'memoryLimitBytes':this['memoryHardLimitBytes'],'budgetLimited':!0x1,'skippedSamples':0x0,'skippedCells':0x0};let _0x1dad7e=getBrickCount(this[_0x2be14c(0x204)]),_0x44c96f=_0x1dad7e[0x0]*_0x1dad7e[0x1]*_0x1dad7e[0x2],_0x1d2809=this[_0x2be14c(0x204)][_0x2be14c(0x420)]+0x2,_0x37f001=this['metadata'][_0x2be14c(0x2c4)]+0x2,_0x2d9c2f=this[_0x2be14c(0x204)][_0x2be14c(0x3d8)]+0x2,_0x33c1d8=_0x1d2809*_0x37f001*_0x2d9c2f*this[_0x2be14c(0x2ea)][_0x2be14c(0x459)]*Float32Array[_0x2be14c(0x3fc)],_0x27eac8=_0x44c96f*0x4*Uint32Array[_0x2be14c(0x3fc)],_0x54b3bd=0x0,_0x149c69=0x0;for(let _0x285f45 of this[_0x2be14c(0x253)][_0x2be14c(0x1cd)]())_0x285f45['occupied']||(_0x149c69+=0x1,_0x54b3bd+=_0x285f45[_0x2be14c(0x2c3)]);return{'logicalBrickCount':_0x44c96f,'atlasCapacity':this['layout'][_0x2be14c(0x459)],'gpuBytes':_0x33c1d8+_0x27eac8,'memoryLimitBytes':this[_0x2be14c(0x1d7)],'budgetLimited':this[_0x2be14c(0x2ea)][_0x2be14c(0x459)]<_0x44c96f,'skippedSamples':_0x54b3bd,'skippedCells':_0x149c69};}['configure'](_0x18755b){const _0x39c2a4=_0x2859cf;validateMetadata(_0x18755b);let _0x4f0e5c=_0x18755b[_0x39c2a4(0x420)]+0x2,_0x40258b=_0x18755b[_0x39c2a4(0x2c4)]+0x2,_0x18d83f=_0x18755b[_0x39c2a4(0x3d8)]+0x2,_0x4f7d23=getBrickCount(_0x18755b),_0x1ab5a1=_0x4f7d23[0x0]*_0x4f7d23[0x1]*_0x4f7d23[0x2],_0x4d6288=_0x1ab5a1*0x4*Uint32Array['BYTES_PER_ELEMENT'],_0x2248e7=Math[_0x39c2a4(0x28e)](this[_0x39c2a4(0x33b)],this[_0x39c2a4(0x1d7)])-_0x4d6288;if(_0x2248e7<=0x0)throw Error(_0x39c2a4(0x22a));let _0x321c03=_0x4f0e5c*_0x40258b*_0x18d83f*Float32Array['BYTES_PER_ELEMENT'],_0x1a1e53=Math[_0x39c2a4(0x28e)](_0x1ab5a1,Math[_0x39c2a4(0x49c)](_0x2248e7/_0x321c03)),_0x881b60=Math[_0x39c2a4(0x284)](0x1,Math[_0x39c2a4(0x49c)](0x4000000/_0x321c03)),_0x118f31=Math[_0x39c2a4(0x28e)](0x8,Math[_0x39c2a4(0x284)](0x1,Math[_0x39c2a4(0x1b5)](_0x1a1e53/_0x881b60))),_0x5d4c4b=findAtlasLayout(Math[_0x39c2a4(0x284)](0x1,Math['floor'](_0x1a1e53/_0x118f31)),_0x4f0e5c,_0x40258b,_0x18d83f,this['device'][_0x39c2a4(0x3e9)][_0x39c2a4(0x2c7)]);if(!_0x5d4c4b)throw Error(_0x39c2a4(0x2d7));let _0xcd4acb={..._0x5d4c4b,'textureCount':_0x118f31,'capacity':_0x5d4c4b[_0x39c2a4(0x43f)]*_0x118f31},_0x1f9ee8=_0x4f0e5c*_0xcd4acb[_0x39c2a4(0x228)],_0x361a35=_0x40258b*_0xcd4acb[_0x39c2a4(0x32d)],_0x236c29=_0x18d83f*_0xcd4acb[_0x39c2a4(0x3e8)],_0x92f509=Array[_0x39c2a4(0x1e5)]({'length':_0x118f31},(_0x460c8e,_0x5c3bcb)=>this[_0x39c2a4(0x358)][_0x39c2a4(0x1e0)]({'label':_0x39c2a4(0x43e)+_0x5c3bcb,'size':[_0x1f9ee8,_0x361a35,_0x236c29],'dimension':'3d','format':'r32float','usage':GPUTextureUsage[_0x39c2a4(0x19d)]|GPUTextureUsage[_0x39c2a4(0x4a3)]|GPUTextureUsage['STORAGE_BINDING']})),_0x22adfb=this[_0x39c2a4(0x358)][_0x39c2a4(0x322)]({'label':_0x39c2a4(0x47c),'size':Math[_0x39c2a4(0x284)](0x10,_0x4d6288),'usage':GPUBufferUsage[_0x39c2a4(0x3e1)]|GPUBufferUsage[_0x39c2a4(0x4a3)]});this[_0x39c2a4(0x3b8)](),this['metadata']={..._0x18755b},this['layout']=_0xcd4acb,this[_0x39c2a4(0x3ca)]=_0x92f509,this[_0x39c2a4(0x210)]=_0x92f509['map'](_0x1ccb08=>_0x1ccb08[_0x39c2a4(0x354)]({'dimension':'3d'})),this[_0x39c2a4(0x493)]=_0x22adfb,this[_0x39c2a4(0x487)]=new Uint32Array(_0x1ab5a1*0x4),this[_0x39c2a4(0x358)][_0x39c2a4(0x24a)][_0x39c2a4(0x2c0)](_0x22adfb,0x0,this[_0x39c2a4(0x487)]);for(let _0x4fc560 of _0x92f509)this[_0x39c2a4(0x2a7)](_0x4fc560,_0x1f9ee8,_0x361a35,_0x236c29);this[_0x39c2a4(0x418)]+=0x1;}[_0x2859cf(0x425)](_0x47a0b1,_0x274047){const _0x5956e7=_0x2859cf;let _0x333cb1=this[_0x5956e7(0x1b2)],_0x1fc214=this[_0x5956e7(0x1eb)],_0x24c309=getBrickCount(_0x333cb1),_0x3961ba=_0x24c309[0x0]*_0x24c309[0x1]*_0x24c309[0x2];if(!Number[_0x5956e7(0x2dd)](_0x47a0b1[_0x5956e7(0x191)])||_0x47a0b1[_0x5956e7(0x191)]<0x0||_0x47a0b1[_0x5956e7(0x191)]>=_0x3961ba)throw Error(_0x5956e7(0x3a1)+_0x47a0b1['logicalIndex']+_0x5956e7(0x363));let _0x580833=_0x333cb1[_0x5956e7(0x420)]+0x2,_0x179ba1=_0x333cb1[_0x5956e7(0x2c4)]+0x2,_0x59e022=_0x333cb1['brickDepth']+0x2,_0x555e9a=_0x580833*_0x179ba1*_0x59e022;if(_0x47a0b1['values'][_0x5956e7(0x326)]!==_0x555e9a)throw Error(_0x5956e7(0x362)+_0x47a0b1[_0x5956e7(0x191)]+_0x5956e7(0x360)+_0x555e9a+'\x20values\x20but\x20received\x20'+_0x47a0b1[_0x5956e7(0x1cd)][_0x5956e7(0x326)]+'.\x20体积砖块数据长度不正确。');let _0x3d43cc=this[_0x5956e7(0x253)][_0x5956e7(0x374)](_0x47a0b1[_0x5956e7(0x191)])??this[_0x5956e7(0x445)](_0x47a0b1[_0x5956e7(0x191)],_0x274047),_0x2afeaa=analyzeBrickOccupancy(_0x47a0b1,_0x333cb1,_0x24c309),_0x34fee8=Math[_0x5956e7(0x49c)](_0x3d43cc[_0x5956e7(0x426)]/_0x1fc214[_0x5956e7(0x43f)]),_0x4a7d95=getSlotCoordinate(_0x3d43cc[_0x5956e7(0x426)]%_0x1fc214[_0x5956e7(0x43f)],_0x1fc214),_0x595aa9=createPaddedTextureData(new Float32Array(_0x47a0b1[_0x5956e7(0x1cd)]),_0x580833,_0x179ba1,_0x59e022);return _0x3d43cc[_0x5956e7(0x285)]=_0x274047,_0x3d43cc[_0x5956e7(0x418)]=this[_0x5956e7(0x418)],_0x3d43cc[_0x5956e7(0x2f0)]=_0x2afeaa['occupied'],_0x3d43cc[_0x5956e7(0x2c3)]=_0x2afeaa[_0x5956e7(0x3d9)],this['writePageEntry'](_0x3d43cc),{'values':_0x595aa9[_0x5956e7(0x1cd)],'bytesPerRow':_0x595aa9[_0x5956e7(0x1a2)],'rowsPerImage':_0x179ba1,'origin':{'x':_0x4a7d95[0x0]*_0x580833,'y':_0x4a7d95[0x1]*_0x179ba1,'z':_0x4a7d95[0x2]*_0x59e022},'extent':[_0x580833,_0x179ba1,_0x59e022],'atlasIndex':_0x34fee8};}[_0x2859cf(0x404)](_0x723022,_0x47e641,_0x965296,_0x3fe9a8){const _0x21c8fd=_0x2859cf;_0x723022['copyBufferToTexture']({'buffer':_0x47e641,'offset':_0x965296,'bytesPerRow':_0x3fe9a8[_0x21c8fd(0x1a2)],'rowsPerImage':_0x3fe9a8[_0x21c8fd(0x3a8)]},{'texture':this[_0x21c8fd(0x3aa)](_0x3fe9a8[_0x21c8fd(0x48c)]),'origin':_0x3fe9a8['origin']},_0x3fe9a8[_0x21c8fd(0x2f7)]);}[_0x2859cf(0x33e)](_0x5a5c6b,_0x24b6fa){const _0x449b12=_0x2859cf;for(let _0x15e804 of _0x5a5c6b){let _0x3e5a7d=this[_0x449b12(0x253)][_0x449b12(0x374)](_0x15e804);_0x3e5a7d&&(_0x3e5a7d[_0x449b12(0x285)]=_0x24b6fa);}}[_0x2859cf(0x3b3)](_0x5b5c7f,_0xbe5508){const _0x2a0af9=_0x2859cf;if(this[_0x2a0af9(0x210)][_0x2a0af9(0x326)]===0x0||!this[_0x2a0af9(0x493)])throw Error(_0x2a0af9(0x260));return this[_0x2a0af9(0x358)][_0x2a0af9(0x3b3)]({'label':'volume\x20atlas\x20bind\x20group','layout':_0x5b5c7f,'entries':[...Array['from']({'length':0x8},(_0x204627,_0xaca0)=>({'binding':_0xaca0,'resource':this[_0x2a0af9(0x210)][_0xaca0]??this[_0x2a0af9(0x210)][0x0]})),{'binding':0x8,'resource':{'buffer':this['pageTableBuffer']}},{'binding':0x9,'resource':{'buffer':_0xbe5508}}]});}[_0x2859cf(0x355)](){const _0x2ed968=_0x2859cf;this['destroyResources'](),this[_0x2ed968(0x204)]=null,this[_0x2ed968(0x2ea)]=null,this[_0x2ed968(0x487)]=new Uint32Array();}['acquireSlot'](_0x18d9c4,_0x4e778d){const _0x5da3b9=_0x2859cf;let _0x9a53d8=this['atlasLayout'],_0x3e23b6=this[_0x5da3b9(0x3e6)][_0x5da3b9(0x376)];if(_0x3e23b6>=_0x9a53d8[_0x5da3b9(0x459)]){let _0x4b69fc=findLeastRecentlyUsed(this[_0x5da3b9(0x3e6)]['values'](),_0x4e778d);if(!_0x4b69fc)throw Error(_0x5da3b9(0x2bf));_0x3e23b6=_0x4b69fc[_0x5da3b9(0x426)],this[_0x5da3b9(0x2dc)](_0x4b69fc[_0x5da3b9(0x191)]),this['residentByLogicalIndex'][_0x5da3b9(0x18e)](_0x4b69fc['logicalIndex']),this['residentBySlotIndex'][_0x5da3b9(0x18e)](_0x3e23b6);}let _0x58ceee={'logicalIndex':_0x18d9c4,'slotIndex':_0x3e23b6,'lastUsedFrame':_0x4e778d,'generation':this[_0x5da3b9(0x418)],'occupied':!0x1,'skippedSampleCount':0x0};return this['residentByLogicalIndex'][_0x5da3b9(0x252)](_0x18d9c4,_0x58ceee),this[_0x5da3b9(0x3e6)][_0x5da3b9(0x252)](_0x3e23b6,_0x58ceee),_0x58ceee;}['writePageEntry'](_0x159725){const _0x311e0b=_0x2859cf;let _0xa4a0bc=_0x159725[_0x311e0b(0x191)]*0x4;this[_0x311e0b(0x487)][_0xa4a0bc]=_0x159725[_0x311e0b(0x426)]%this[_0x311e0b(0x1eb)][_0x311e0b(0x43f)]+0x1,this[_0x311e0b(0x487)][_0xa4a0bc+0x1]=_0x159725[_0x311e0b(0x418)],this[_0x311e0b(0x487)][_0xa4a0bc+0x2]=+!!_0x159725[_0x311e0b(0x2f0)],this[_0x311e0b(0x487)][_0xa4a0bc+0x3]=Math[_0x311e0b(0x49c)](_0x159725['slotIndex']/this[_0x311e0b(0x1eb)][_0x311e0b(0x43f)]),this['device'][_0x311e0b(0x24a)][_0x311e0b(0x2c0)](this['getPageTableBuffer'](),_0xa4a0bc*Uint32Array[_0x311e0b(0x3fc)],this[_0x311e0b(0x487)],_0xa4a0bc,0x4);}[_0x2859cf(0x2dc)](_0x32988b){const _0x48c7b1=_0x2859cf;let _0x5b83e5=_0x32988b*0x4;this[_0x48c7b1(0x487)][_0x48c7b1(0x259)](0x0,_0x5b83e5,_0x5b83e5+0x4),this[_0x48c7b1(0x358)]['queue'][_0x48c7b1(0x2c0)](this[_0x48c7b1(0x39b)](),_0x5b83e5*Uint32Array[_0x48c7b1(0x3fc)],this[_0x48c7b1(0x487)],_0x5b83e5,0x4);}[_0x2859cf(0x3aa)](_0x278bb6){const _0x2d1065=_0x2859cf;let _0x3fc254=this[_0x2d1065(0x3ca)][_0x278bb6];if(!_0x3fc254)throw Error(_0x2d1065(0x1d2));return _0x3fc254;}[_0x2859cf(0x2a7)](_0x2cdeed,_0xc95487,_0x5d861b,_0x1d8590){const _0x35ca2b=_0x2859cf;let _0x236797=this[_0x35ca2b(0x358)]['createShaderModule']({'label':_0x35ca2b(0x193),'code':_0x35ca2b(0x2ad)}),_0x33ec17=this[_0x35ca2b(0x358)][_0x35ca2b(0x3df)]({'label':'volume\x20atlas\x20clear\x20pipeline','layout':'auto','compute':{'module':_0x236797,'entryPoint':_0x35ca2b(0x3f7)}}),_0x1c5999=this[_0x35ca2b(0x358)][_0x35ca2b(0x3b3)]({'label':_0x35ca2b(0x491),'layout':_0x33ec17[_0x35ca2b(0x480)](0x0),'entries':[{'binding':0x0,'resource':_0x2cdeed[_0x35ca2b(0x354)]({'dimension':'3d'})}]}),_0x5ebbde=this[_0x35ca2b(0x358)]['createCommandEncoder']({'label':_0x35ca2b(0x18b)}),_0x46ca76=_0x5ebbde[_0x35ca2b(0x32f)]({'label':_0x35ca2b(0x408)});_0x46ca76[_0x35ca2b(0x208)](_0x33ec17),_0x46ca76['setBindGroup'](0x0,_0x1c5999),_0x46ca76[_0x35ca2b(0x2ed)](Math[_0x35ca2b(0x1b5)](_0xc95487/0x4),Math['ceil'](_0x5d861b/0x4),Math['ceil'](_0x1d8590/0x4)),_0x46ca76[_0x35ca2b(0x317)](),this[_0x35ca2b(0x358)][_0x35ca2b(0x24a)][_0x35ca2b(0x2a5)]([_0x5ebbde[_0x35ca2b(0x1ba)]()]);}[_0x2859cf(0x39b)](){const _0x35768a=_0x2859cf;if(!this['pageTableBuffer'])throw Error(_0x35768a(0x375));return this['pageTableBuffer'];}[_0x2859cf(0x3b8)](){const _0x4f7fcf=_0x2859cf;for(let _0x2b5aa8 of this['atlasTextures'])_0x2b5aa8['destroy']();this[_0x4f7fcf(0x493)]?.[_0x4f7fcf(0x355)](),this[_0x4f7fcf(0x3ca)]=[],this[_0x4f7fcf(0x210)]=[],this['pageTableBuffer']=null,this[_0x4f7fcf(0x253)][_0x4f7fcf(0x314)](),this[_0x4f7fcf(0x3e6)][_0x4f7fcf(0x314)]();}},WebgpuSceneAttachments=class{[_0x2859cf(0x358)];[_0x2859cf(0x467)]=null;[_0x2859cf(0x19b)]=null;[_0x2859cf(0x456)]=0x0;['height']=0x0;constructor(_0x2e20b9){const _0x4ae8ef=_0x2859cf;this[_0x4ae8ef(0x358)]=_0x2e20b9;}get[_0x2859cf(0x1bb)](){const _0x1282b4=_0x2859cf;if(!this[_0x1282b4(0x19b)])throw Error('WebGPU\x20scene\x20depth\x20attachment\x20is\x20not\x20initialized.\x20WebGPU\x20场景深度附件尚未初始化。');return this[_0x1282b4(0x19b)];}['resize'](_0x47427d,_0x12981a){const _0xeeca8=_0x2859cf;if(this[_0xeeca8(0x456)]===_0x47427d&&this[_0xeeca8(0x3de)]===_0x12981a)return;let _0x314e93=this['device'][_0xeeca8(0x1e0)]({'label':'volume\x20scene\x20depth','size':[_0x47427d,_0x12981a],'format':_0xeeca8(0x3ea),'usage':GPUTextureUsage['RENDER_ATTACHMENT']|GPUTextureUsage['TEXTURE_BINDING']}),_0x8d76ab=this[_0xeeca8(0x467)];this[_0xeeca8(0x467)]=_0x314e93,this['depthView']=_0x314e93[_0xeeca8(0x354)](),this[_0xeeca8(0x456)]=_0x47427d,this[_0xeeca8(0x3de)]=_0x12981a,_0x8d76ab?.[_0xeeca8(0x355)]();}[_0x2859cf(0x355)](){const _0x1cd069=_0x2859cf;this['depthTexture']?.[_0x1cd069(0x355)](),this['depthTexture']=null,this[_0x1cd069(0x19b)]=null,this[_0x1cd069(0x456)]=0x0,this['height']=0x0;}},WebgpuSceneMeshResources=class{[_0x2859cf(0x358)];[_0x2859cf(0x3ed)]=[];constructor(_0x186ab3){const _0x4589e1=_0x2859cf;this[_0x4589e1(0x358)]=_0x186ab3;}get['count'](){const _0x597e0f=_0x2859cf;return this[_0x597e0f(0x3ed)]['length'];}['replace'](_0x1623f6){const _0x4563bb=_0x2859cf;let _0x65afa0=[];try{for(let _0x2862cb of _0x1623f6)_0x65afa0[_0x4563bb(0x39a)](this['createResource'](_0x2862cb));}catch(_0x34d0b7){for(let _0x4748fc of _0x65afa0)_0x4748fc[_0x4563bb(0x3ce)][_0x4563bb(0x355)]();throw _0x34d0b7;}this[_0x4563bb(0x3b8)](),this[_0x4563bb(0x3ed)]=_0x65afa0;}[_0x2859cf(0x1db)](_0x501557,_0x36f99f,_0x27a1ca){const _0x3247a0=_0x2859cf;for(let _0x202358 of this[_0x3247a0(0x3ed)])_0x202358[_0x3247a0(0x1ac)]!==_0x36f99f||_0x202358['depthMode']!==_0x27a1ca||(_0x501557['setVertexBuffer'](0x0,_0x202358[_0x3247a0(0x3ce)]),_0x501557[_0x3247a0(0x1db)](_0x202358[_0x3247a0(0x2d5)]));}[_0x2859cf(0x355)](){this['destroyResources']();}[_0x2859cf(0x2af)](_0x355e77){const _0x16533d=_0x2859cf;if(_0x355e77['vertices'][_0x16533d(0x326)]===0x0||_0x355e77[_0x16533d(0x431)][_0x16533d(0x326)]%0x7!=0x0)throw Error(_0x16533d(0x3f6)+_0x355e77['id']+_0x16533d(0x3ac));let _0x5b01bf=new Float32Array(_0x355e77[_0x16533d(0x431)]),_0x305620=this[_0x16533d(0x358)]['createBuffer']({'label':_0x16533d(0x2e9)+_0x355e77['id'],'size':_0x5b01bf['byteLength'],'usage':GPUBufferUsage['VERTEX']|GPUBufferUsage['COPY_DST']});return this[_0x16533d(0x358)][_0x16533d(0x24a)]['writeBuffer'](_0x305620,0x0,_0x5b01bf),{'id':_0x355e77['id'],'topology':_0x355e77[_0x16533d(0x1ac)],'depthMode':_0x355e77[_0x16533d(0x341)],'buffer':_0x305620,'vertexCount':_0x355e77[_0x16533d(0x431)]['length']/0x7};}['destroyResources'](){for(let _0x203211 of this['resources'])_0x203211['buffer']['destroy']();this['resources']=[];}},WebgpuSliceResources=class{[_0x2859cf(0x358)];[_0x2859cf(0x2ea)];['resources']=[];['uniformUpdateCount']=0x0;['resourceRebuildCount']=0x0;constructor(_0x5ed2fc,_0x341224){this['device']=_0x5ed2fc,this['layout']=_0x341224;}get[_0x2859cf(0x251)](){const _0x418b5d=_0x2859cf;return this[_0x418b5d(0x3ed)]['length'];}get['statistics'](){const _0x5cab65=_0x2859cf;return{'uniformUpdateCount':this[_0x5cab65(0x390)],'resourceRebuildCount':this[_0x5cab65(0x424)]};}[_0x2859cf(0x250)](_0x2697e9){const _0x486134=_0x2859cf;let _0x210230=new Map(this[_0x486134(0x3ed)][_0x486134(0x3c0)](_0x23361b=>[_0x23361b['id'],_0x23361b])),_0x5a7a10=[],_0x27dc71=new Set();try{for(let _0x347fb5 of _0x2697e9){if(!_0x347fb5[_0x486134(0x31e)])continue;if(_0x27dc71[_0x486134(0x336)](_0x347fb5['id']))throw Error('Volume\x20slice\x20ID\x20'+_0x347fb5['id']+'\x20is\x20duplicated.\x20体积切面\x20ID\x20重复。');_0x27dc71[_0x486134(0x35c)](_0x347fb5['id']);let _0x2d8e2a=this[_0x486134(0x1a1)](_0x347fb5),_0x4f55e0=_0x210230[_0x486134(0x374)](_0x347fb5['id']);if(!_0x4f55e0){_0x5a7a10[_0x486134(0x39a)](this[_0x486134(0x2af)](_0x347fb5,_0x2d8e2a));continue;}_0x210230['delete'](_0x347fb5['id']),_0x4f55e0[_0x486134(0x341)]=_0x347fb5[_0x486134(0x341)],this['valuesEqual'](_0x4f55e0[_0x486134(0x1cd)],_0x2d8e2a)||(this[_0x486134(0x358)][_0x486134(0x24a)]['writeBuffer'](_0x4f55e0['buffer'],0x0,_0x2d8e2a),_0x4f55e0[_0x486134(0x1cd)]=_0x2d8e2a,this['uniformUpdateCount']+=0x1),_0x5a7a10[_0x486134(0x39a)](_0x4f55e0);}}catch(_0x41152e){for(let _0x360f5f of _0x5a7a10)this[_0x486134(0x3ed)][_0x486134(0x3e7)](_0x360f5f)||_0x360f5f[_0x486134(0x3ce)]['destroy']();throw _0x41152e;}for(let _0x5a90da of _0x210230[_0x486134(0x1cd)]())_0x5a90da[_0x486134(0x3ce)][_0x486134(0x355)]();this[_0x486134(0x3ed)]=_0x5a7a10;}['draw'](_0x39d219,_0x421482,_0x3de822){const _0x26075d=_0x2859cf;_0x39d219[_0x26075d(0x208)](_0x421482);for(let _0x3b7783 of this[_0x26075d(0x3ed)])_0x3b7783[_0x26075d(0x341)]===_0x3de822&&(_0x39d219[_0x26075d(0x44e)](0x3,_0x3b7783[_0x26075d(0x44f)]),_0x39d219['draw'](0x1800));}[_0x2859cf(0x355)](){this['destroyResources']();}[_0x2859cf(0x1a1)](_0x551ab1){const _0x312121=_0x2859cf;if(!Number[_0x312121(0x273)](_0x551ab1['position'])||_0x551ab1['position']<0x0||_0x551ab1[_0x312121(0x27c)]>0x1)throw Error(_0x312121(0x39e)+_0x551ab1['id']+_0x312121(0x49e));let _0x4302b1=_0x551ab1[_0x312121(0x1d4)]==='x'?0x0:_0x551ab1[_0x312121(0x1d4)]==='y'?0x1:0x2,_0x1cc846=_0x551ab1[_0x312121(0x32e)]??[0x0,0x0,0x0,0x0];if(_0x1cc846['some'](_0x2d33c4=>!Number[_0x312121(0x273)](_0x2d33c4)||_0x2d33c4<0x0||_0x2d33c4>0x1))throw Error(_0x312121(0x39e)+_0x551ab1['id']+_0x312121(0x232));return new Float32Array([_0x4302b1,_0x551ab1[_0x312121(0x27c)],_0x551ab1[_0x312121(0x446)]??0x1,0x0,..._0x1cc846]);}['createResource'](_0x48c055,_0x25e21d){const _0xa395f5=_0x2859cf;let _0x57df15=this[_0xa395f5(0x358)][_0xa395f5(0x322)]({'label':_0xa395f5(0x29f)+_0x48c055['id'],'size':0x20,'usage':GPUBufferUsage[_0xa395f5(0x222)]|GPUBufferUsage[_0xa395f5(0x4a3)]});this[_0xa395f5(0x358)][_0xa395f5(0x24a)][_0xa395f5(0x2c0)](_0x57df15,0x0,_0x25e21d);let _0x21ecea=this['device']['createBindGroup']({'layout':this['layout'],'entries':[{'binding':0x0,'resource':{'buffer':_0x57df15}}]});return this[_0xa395f5(0x424)]+=0x1,{'id':_0x48c055['id'],'depthMode':_0x48c055['depthMode'],'buffer':_0x57df15,'bindGroup':_0x21ecea,'values':_0x25e21d};}[_0x2859cf(0x41c)](_0xcfc0b4,_0x5a8739){const _0x562644=_0x2859cf;for(let _0x26b2af=0x0;_0x26b2af<_0xcfc0b4[_0x562644(0x326)];_0x26b2af+=0x1)if(_0xcfc0b4[_0x26b2af]!==_0x5a8739[_0x26b2af])return!0x1;return!0x0;}[_0x2859cf(0x3b8)](){const _0x4fe23c=_0x2859cf;for(let _0x152409 of this[_0x4fe23c(0x3ed)])_0x152409[_0x4fe23c(0x3ce)]['destroy']();this[_0x4fe23c(0x3ed)]=[];}};const createStorageBuffer=(_0x178cc1,_0x111e2e,_0xf09e9e)=>{const _0x2a9412=_0x2859cf;let _0x4dc8c4=_0x178cc1[_0x2a9412(0x322)]({'label':_0xf09e9e,'size':Math['max'](0x4,_0x111e2e[_0x2a9412(0x242)]),'usage':GPUBufferUsage['STORAGE']|GPUBufferUsage[_0x2a9412(0x4a3)]});return _0x111e2e[_0x2a9412(0x242)]>0x0&&_0x178cc1[_0x2a9412(0x24a)][_0x2a9412(0x2c0)](_0x4dc8c4,0x0,_0x111e2e),_0x4dc8c4;},validateStops$1=(_0x20fbec,_0x162c56)=>{const _0x99b77f=_0x2859cf;if(_0x20fbec[_0x99b77f(0x326)]===0x0||_0x162c56['length']===0x0)throw Error(_0x99b77f(0x3f4));for(let _0x1faf3d=0x1;_0x1faf3d<_0x20fbec[_0x99b77f(0x326)];_0x1faf3d+=0x1)if(_0x20fbec[_0x1faf3d][_0x99b77f(0x414)]<_0x20fbec[_0x1faf3d-0x1][_0x99b77f(0x414)])throw Error('Volume\x20color\x20stops\x20must\x20be\x20sorted\x20by\x20value.\x20体积颜色色标必须按数值升序排列。');for(let _0x58e9fc=0x0;_0x58e9fc<_0x162c56[_0x99b77f(0x326)];_0x58e9fc+=0x1){if(_0x162c56[_0x58e9fc][_0x99b77f(0x446)]<0x0||_0x162c56[_0x58e9fc]['opacity']>0x1)throw Error(_0x99b77f(0x34b));if(_0x58e9fc>0x0&&_0x162c56[_0x58e9fc][_0x99b77f(0x414)]<_0x162c56[_0x58e9fc-0x1][_0x99b77f(0x414)])throw Error(_0x99b77f(0x395));}};var WebgpuTransferResources=class{[_0x2859cf(0x358)];['colorValuesBuffer']=null;['colorBuffer']=null;[_0x2859cf(0x38b)]=null;['opacityBuffer']=null;[_0x2859cf(0x455)]=0x0;[_0x2859cf(0x215)]=0x0;constructor(_0xc1cddd){this['device']=_0xc1cddd;}get['counts'](){const _0x47a585=_0x2859cf;return[this[_0x47a585(0x455)],this[_0x47a585(0x215)]];}[_0x2859cf(0x207)](_0xbf8fe3,_0x3dde21){const _0x47b325=_0x2859cf;validateStops$1(_0xbf8fe3,_0x3dde21);let _0x4e579f=new Float32Array(_0xbf8fe3[_0x47b325(0x326)]),_0x325666=new Float32Array(_0xbf8fe3['length']*0x4),_0x30a8fd=new Float32Array(_0x3dde21[_0x47b325(0x326)]),_0x5417a2=new Float32Array(_0x3dde21[_0x47b325(0x326)]);for(let _0x3919da=0x0;_0x3919da<_0xbf8fe3[_0x47b325(0x326)];_0x3919da+=0x1)_0x4e579f[_0x3919da]=_0xbf8fe3[_0x3919da]['value'],_0x325666['set'](_0xbf8fe3[_0x3919da]['color'],_0x3919da*0x4);for(let _0x4080f8=0x0;_0x4080f8<_0x3dde21[_0x47b325(0x326)];_0x4080f8+=0x1)_0x30a8fd[_0x4080f8]=_0x3dde21[_0x4080f8][_0x47b325(0x414)],_0x5417a2[_0x4080f8]=_0x3dde21[_0x4080f8]['opacity'];let _0x6839c4=[createStorageBuffer(this[_0x47b325(0x358)],_0x4e579f,_0x47b325(0x297)),createStorageBuffer(this[_0x47b325(0x358)],_0x325666,_0x47b325(0x24e)),createStorageBuffer(this[_0x47b325(0x358)],_0x30a8fd,_0x47b325(0x29d)),createStorageBuffer(this['device'],_0x5417a2,'volume\x20opacity\x20stop\x20alphas')];this[_0x47b325(0x19c)](),this['colorValuesBuffer']=_0x6839c4[0x0],this['colorBuffer']=_0x6839c4[0x1],this[_0x47b325(0x38b)]=_0x6839c4[0x2],this[_0x47b325(0x419)]=_0x6839c4[0x3],this[_0x47b325(0x455)]=_0xbf8fe3['length'],this[_0x47b325(0x215)]=_0x3dde21[_0x47b325(0x326)];}[_0x2859cf(0x3b3)](_0xa1ee79){const _0x35c6b7=_0x2859cf;if(!this[_0x35c6b7(0x33c)]||!this[_0x35c6b7(0x1e6)]||!this[_0x35c6b7(0x38b)]||!this[_0x35c6b7(0x419)])throw Error(_0x35c6b7(0x301));return this[_0x35c6b7(0x358)][_0x35c6b7(0x3b3)]({'label':'volume\x20transfer\x20bind\x20group','layout':_0xa1ee79,'entries':[{'binding':0x0,'resource':{'buffer':this[_0x35c6b7(0x33c)]}},{'binding':0x1,'resource':{'buffer':this[_0x35c6b7(0x1e6)]}},{'binding':0x2,'resource':{'buffer':this[_0x35c6b7(0x38b)]}},{'binding':0x3,'resource':{'buffer':this[_0x35c6b7(0x419)]}}]});}['destroy'](){const _0x54879a=_0x2859cf;this['destroyBuffers'](),this['colorStopCount']=0x0,this[_0x54879a(0x215)]=0x0;}[_0x2859cf(0x19c)](){const _0x533671=_0x2859cf;this[_0x533671(0x33c)]?.[_0x533671(0x355)](),this[_0x533671(0x1e6)]?.['destroy'](),this[_0x533671(0x38b)]?.[_0x533671(0x355)](),this[_0x533671(0x419)]?.['destroy'](),this['colorValuesBuffer']=null,this[_0x533671(0x1e6)]=null,this[_0x533671(0x38b)]=null,this[_0x533671(0x419)]=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=()=>({'color':{'srcFactor':_0x2859cf(0x33f),'dstFactor':_0x2859cf(0x3f1),'operation':'add'},'alpha':{'srcFactor':_0x2859cf(0x33f),'dstFactor':_0x2859cf(0x3f1),'operation':'add'}}),validateMatrix=(_0x4db4e5,_0x480606)=>{const _0x38f6db=_0x2859cf;if(_0x4db4e5[_0x38f6db(0x326)]!==0x10||_0x4db4e5[_0x38f6db(0x1b7)](_0x156756=>!Number[_0x38f6db(0x273)](_0x156756)))throw Error(_0x480606+_0x38f6db(0x34e)+_0x480606+'\x20必须包含十六个有限数值。');},validateNonNegative=(_0x2af55a,_0x18b79e)=>{const _0x132918=_0x2859cf;if(!Number['isFinite'](_0x2af55a)||_0x2af55a<0x0)throw Error(_0x18b79e+_0x132918(0x2d9)+_0x18b79e+_0x132918(0x399));return _0x2af55a;},validatePositive=(_0x1c0978,_0x125b8c)=>{const _0x315ed9=_0x2859cf;if(!Number[_0x315ed9(0x273)](_0x1c0978)||_0x1c0978<=0x0)throw Error(_0x125b8c+_0x315ed9(0x393)+_0x125b8c+_0x315ed9(0x230));return _0x1c0978;},cloneMeshes=_0xda2d6c=>_0xda2d6c[_0x2859cf(0x3c0)](_0x21c4b5=>({..._0x21c4b5,'vertices':new Float32Array(_0x21c4b5[_0x2859cf(0x431)])})),estimateBrickUploadBytes=_0x400eae=>{const _0x24bb9e=_0x2859cf;let _0x15812c=_0x400eae[_0x24bb9e(0x420)]+_0x400eae['halo']*0x2,_0x4677e6=_0x400eae[_0x24bb9e(0x2c4)]+_0x400eae['halo']*0x2,_0x137696=_0x400eae[_0x24bb9e(0x3d8)]+_0x400eae[_0x24bb9e(0x2b1)]*0x2;return Math[_0x24bb9e(0x1b5)](_0x15812c*Float32Array['BYTES_PER_ELEMENT']/0x100)*0x100*_0x4677e6*_0x137696+0x10;};var WebgpuVolumeSceneRenderer=class{[_0x2859cf(0x1e4)];[_0x2859cf(0x24f)]=_0x2859cf(0x1da);[_0x2859cf(0x23c)]=null;[_0x2859cf(0x1f1)]=null;['device']=null;[_0x2859cf(0x45c)]=null;[_0x2859cf(0x2f2)]=null;[_0x2859cf(0x1e2)]=null;[_0x2859cf(0x20d)]=null;[_0x2859cf(0x3c5)]=null;['sceneBindGroupLayout']=null;['volumeBindGroupLayout']=null;[_0x2859cf(0x3ec)]=null;[_0x2859cf(0x312)]=null;[_0x2859cf(0x42e)]=null;[_0x2859cf(0x2bd)]=null;['volumeBindGroup']=null;[_0x2859cf(0x2b2)]=null;[_0x2859cf(0x1e3)]=null;[_0x2859cf(0x1f2)]=null;[_0x2859cf(0x366)]=null;[_0x2859cf(0x1e1)]=null;[_0x2859cf(0x223)]=null;[_0x2859cf(0x3ba)]=null;['overlaySlicePipeline']=null;[_0x2859cf(0x36d)]=null;['atlas']=null;[_0x2859cf(0x1fc)]=null;['profileResources']=null;[_0x2859cf(0x433)]=null;[_0x2859cf(0x4a4)]=null;[_0x2859cf(0x204)]=null;['camera']={'viewProjection':IDENTITY_MATRIX$1,'inverseViewProjection':IDENTITY_MATRIX$1,'cameraPosition':[0x0,0x0,0x2]};[_0x2859cf(0x46c)]=IDENTITY_MATRIX$1;[_0x2859cf(0x25d)]=IDENTITY_MATRIX$1;['clipMinimum']=[0x0,0x0,0x0];[_0x2859cf(0x26c)]=[0x1,0x1,0x1];[_0x2859cf(0x3b9)]=_0x2859cf(0x2e8);[_0x2859cf(0x446)]=0.3;[_0x2859cf(0x1ea)]=0x1;[_0x2859cf(0x3b4)]=0.005;[_0x2859cf(0x328)]=0x1;[_0x2859cf(0x429)]=_0x2859cf(0x2a1);['geographicTransform']=null;[_0x2859cf(0x1ad)]=DEFAULT_COLOR_STOPS;[_0x2859cf(0x37b)]=DEFAULT_OPACITY_STOPS;[_0x2859cf(0x3d2)]=0x0;[_0x2859cf(0x3f0)]=0x0;[_0x2859cf(0x456)]=0x0;['height']=0x0;[_0x2859cf(0x283)]=0x0;[_0x2859cf(0x255)]=0x0;[_0x2859cf(0x2fe)]=[];[_0x2859cf(0x39c)]=[];[_0x2859cf(0x2e1)]=[];['cachedBricks']=new Map();[_0x2859cf(0x37e)]=[];[_0x2859cf(0x335)]=null;[_0x2859cf(0x44d)]=0x0;[_0x2859cf(0x309)]=null;['uploadStagingBufferSize']=0x0;[_0x2859cf(0x490)]=0x0;[_0x2859cf(0x201)]=0x0;['maximumUploadBatchBytes']=0x0;[_0x2859cf(0x311)]=!0x1;[_0x2859cf(0x474)]=null;constructor(_0x5b948c={}){this['options']={..._0x5b948c};}get[_0x2859cf(0x2f6)](){const _0x59a0a2=_0x2859cf;return this[_0x59a0a2(0x24f)];}get[_0x2859cf(0x34f)](){const _0x5a1348=_0x2859cf;let _0x3f0d07=this['atlas']?.['statistics']??{'logicalBrickCount':0x0,'atlasCapacity':0x0,'gpuBytes':0x0,'memoryLimitBytes':this[_0x5a1348(0x1e4)][_0x5a1348(0x1d7)]??this[_0x5a1348(0x1e4)][_0x5a1348(0x33b)]??DEFAULT_MEMORY_TARGET_BYTES,'budgetLimited':!0x1,'skippedSamples':0x0,'skippedCells':0x0},_0x4ca57=this[_0x5a1348(0x433)]?.[_0x5a1348(0x34f)]??{'uniformUpdateCount':0x0,'resourceRebuildCount':0x0};return{'logicalBrickCount':_0x3f0d07[_0x5a1348(0x49f)],'residentBrickCount':this['atlas']?.[_0x5a1348(0x308)]??0x0,'pendingBrickCount':0x0,'atlasCapacity':_0x3f0d07['atlasCapacity'],'gpuBytes':_0x3f0d07['gpuBytes'],'memoryLimitBytes':_0x3f0d07[_0x5a1348(0x4a0)],'budgetLimited':_0x3f0d07[_0x5a1348(0x3b2)],'frameTimeMilliseconds':this[_0x5a1348(0x255)],'submittedFrameCount':this[_0x5a1348(0x3f0)],'uploadedBrickCount':this[_0x5a1348(0x490)],'uploadBatchCount':this[_0x5a1348(0x201)],'maximumUploadBatchBytes':this[_0x5a1348(0x24c)],'sliceUniformUpdateCount':_0x4ca57[_0x5a1348(0x390)],'sliceResourceRebuildCount':_0x4ca57[_0x5a1348(0x424)],'skippedSamples':_0x3f0d07[_0x5a1348(0x2e2)],'skippedCells':_0x3f0d07[_0x5a1348(0x439)]};}[_0x2859cf(0x49b)](_0x214aec){const _0x54c567=_0x2859cf;this[_0x54c567(0x474)]=_0x214aec;}async[_0x2859cf(0x1b3)](_0x2c39d6){const _0x37086d=_0x2859cf;if(this[_0x37086d(0x24f)]==='destroyed')throw Error(_0x37086d(0x2ba));let _0x6d40b5=++this[_0x37086d(0x283)];this[_0x37086d(0x479)](),this[_0x37086d(0x23c)]=_0x2c39d6,this['lifecycleState']=_0x37086d(0x338);let _0x33b1d1=navigator[_0x37086d(0x1cb)];if(!_0x33b1d1)throw this[_0x37086d(0x24f)]=_0x37086d(0x1da),Error(_0x37086d(0x444));let _0x46eae5=await _0x33b1d1[_0x37086d(0x495)]({'powerPreference':this['options'][_0x37086d(0x27d)]??_0x37086d(0x430)});if(_0x6d40b5!==this[_0x37086d(0x283)])return;if(!_0x46eae5)throw this['lifecycleState']=_0x37086d(0x1da),Error(_0x37086d(0x3be));let _0x1c6928=await _0x46eae5['requestDevice']();if(_0x6d40b5!==this['initializationGeneration']){_0x1c6928[_0x37086d(0x355)]();return;}let _0x1437da=_0x2c39d6[_0x37086d(0x1a3)]('webgpu');if(!_0x1437da)throw _0x1c6928[_0x37086d(0x355)](),this[_0x37086d(0x24f)]=_0x37086d(0x1da),Error(_0x37086d(0x368));let _0x1a4779=_0x33b1d1['getPreferredCanvasFormat']();_0x1437da['configure']({'device':_0x1c6928,'format':_0x1a4779,'alphaMode':_0x37086d(0x33d),'usage':GPUTextureUsage['RENDER_ATTACHMENT']|GPUTextureUsage[_0x37086d(0x1d3)]}),this['adapter']=_0x46eae5,this[_0x37086d(0x358)]=_0x1c6928,this['context']=_0x1437da,this['format']=_0x1a4779,_0x1c6928[_0x37086d(0x496)]('validation'),this[_0x37086d(0x378)]();let _0x4fd4ea=await _0x1c6928[_0x37086d(0x279)]();if(_0x4fd4ea)throw this[_0x37086d(0x479)](),this[_0x37086d(0x24f)]='idle',Error(_0x37086d(0x270)+_0x4fd4ea[_0x37086d(0x1dd)]+_0x37086d(0x325));if(this['watchDeviceLost'](_0x1c6928),this['lifecycleState']=_0x37086d(0x436),this['metadata']){this[_0x37086d(0x344)](this[_0x37086d(0x204)]);let _0xbd80e6=Array[_0x37086d(0x1e5)](this[_0x37086d(0x25e)][_0x37086d(0x470)]());await Promise['all'](_0xbd80e6[_0x37086d(0x3c0)](([_0x1e6e33,_0x36c968])=>this[_0x37086d(0x4a2)]({'logicalIndex':_0x1e6e33,'values':_0x36c968},!0x1)));}this['updateTransferResources'](),this[_0x37086d(0x44b)]()[_0x37086d(0x250)](this[_0x37086d(0x2fe)]),this['getSliceResources']()[_0x37086d(0x250)](this['cachedSlices']),this[_0x37086d(0x463)]()['replace'](this[_0x37086d(0x2e1)]),this[_0x37086d(0x19f)](_0x2c39d6[_0x37086d(0x456)]||_0x2c39d6[_0x37086d(0x295)]||0x1,_0x2c39d6[_0x37086d(0x3de)]||_0x2c39d6['clientHeight']||0x1);}[_0x2859cf(0x3f3)](_0xf804b4){const _0x25ce87=_0x2859cf;this[_0x25ce87(0x44d)]+=0x1,this[_0x25ce87(0x469)](new DOMException(_0x25ce87(0x2ca),'AbortError')),this[_0x25ce87(0x204)]={..._0xf804b4},this[_0x25ce87(0x25e)][_0x25ce87(0x314)](),this['uploadedBrickCount']=0x0,this['uploadBatchCount']=0x0,this[_0x25ce87(0x24c)]=0x0,this[_0x25ce87(0x24f)]===_0x25ce87(0x436)&&this['configureSourceResources'](_0xf804b4);}['uploadBrick'](_0x965a60){const _0x364b9e=_0x2859cf;return this[_0x364b9e(0x4a2)](_0x965a60,!0x0);}[_0x2859cf(0x209)](_0x3021b5){const _0x430873=_0x2859cf;this[_0x430873(0x299)]()['touch'](_0x3021b5,this[_0x430873(0x3d2)]);for(let _0x180305 of _0x3021b5){let _0xa390fb=this[_0x430873(0x25e)][_0x430873(0x374)](_0x180305);_0xa390fb&&(this[_0x430873(0x25e)][_0x430873(0x18e)](_0x180305),this[_0x430873(0x25e)][_0x430873(0x252)](_0x180305,_0xa390fb));}}[_0x2859cf(0x28f)](_0x213587){const _0xaaa62a=_0x2859cf;validateMatrix(_0x213587['viewProjection'],_0xaaa62a(0x387)),validateMatrix(_0x213587['inverseViewProjection'],'inverseViewProjection'),this[_0xaaa62a(0x448)]={'viewProjection':[..._0x213587['viewProjection']],'inverseViewProjection':[..._0x213587[_0xaaa62a(0x2bb)]],'cameraPosition':[..._0x213587[_0xaaa62a(0x352)]]};}[_0x2859cf(0x1c1)](_0x38256c){const _0x4f2cbf=_0x2859cf;this[_0x4f2cbf(0x2fe)]=cloneMeshes(_0x38256c),this[_0x4f2cbf(0x44b)]()[_0x4f2cbf(0x250)](_0x38256c);}[_0x2859cf(0x1fd)](_0x45c816){const _0x4505b0=_0x2859cf;this[_0x4505b0(0x39c)]=_0x45c816[_0x4505b0(0x3c0)](_0x71b7d0=>({..._0x71b7d0})),this['getSliceResources']()[_0x4505b0(0x250)](_0x45c816);}['setAxes'](_0x7002d4){const _0x2b33ae=_0x2859cf;this['cachedAxes']=cloneMeshes(_0x7002d4),this[_0x2b33ae(0x463)]()[_0x2b33ae(0x250)](_0x7002d4);}['setTransfer'](_0x289c89,_0x171bcf,_0x360422){const _0x579b6f=_0x2859cf;this['colorStops']=_0x289c89['map'](_0x4d988d=>({'value':_0x4d988d[_0x579b6f(0x414)],'color':[..._0x4d988d[_0x579b6f(0x447)]]})),this[_0x579b6f(0x37b)]=_0x171bcf[_0x579b6f(0x3c0)](_0x1e13e8=>({..._0x1e13e8})),_0x360422&&(this['colorMode']=_0x360422),this[_0x579b6f(0x24f)]===_0x579b6f(0x436)&&this['updateTransferResources']();}[_0x2859cf(0x207)](_0xeea3ec){const _0x1c9ec0=_0x2859cf;_0xeea3ec[_0x1c9ec0(0x46c)]&&(validateMatrix(_0xeea3ec['modelMatrix'],_0x1c9ec0(0x46c)),this[_0x1c9ec0(0x46c)]=[..._0xeea3ec['modelMatrix']]),_0xeea3ec[_0x1c9ec0(0x25d)]&&(validateMatrix(_0xeea3ec[_0x1c9ec0(0x25d)],_0x1c9ec0(0x25d)),this['inverseModelMatrix']=[..._0xeea3ec[_0x1c9ec0(0x25d)]]),_0xeea3ec['clipMinimum']&&(this['clipMinimum']=[..._0xeea3ec[_0x1c9ec0(0x3c7)]]),_0xeea3ec[_0x1c9ec0(0x26c)]&&(this[_0x1c9ec0(0x26c)]=[..._0xeea3ec[_0x1c9ec0(0x26c)]]),_0xeea3ec[_0x1c9ec0(0x3b9)]&&(this['renderMode']=_0xeea3ec[_0x1c9ec0(0x3b9)]),_0xeea3ec['opacity']!==void 0x0&&(this[_0x1c9ec0(0x446)]=validateNonNegative(_0xeea3ec[_0x1c9ec0(0x446)],_0x1c9ec0(0x446))),_0xeea3ec['densityScale']!==void 0x0&&(this[_0x1c9ec0(0x1ea)]=validateNonNegative(_0xeea3ec[_0x1c9ec0(0x1ea)],_0x1c9ec0(0x1ea))),_0xeea3ec['stepLength']!==void 0x0&&(this[_0x1c9ec0(0x3b4)]=validatePositive(_0xeea3ec['stepLength'],_0x1c9ec0(0x3b4))),_0xeea3ec['volumeDimFactor']!==void 0x0&&(this[_0x1c9ec0(0x328)]=validateNonNegative(_0xeea3ec[_0x1c9ec0(0x328)],'volumeDimFactor')),_0xeea3ec[_0x1c9ec0(0x429)]&&(this[_0x1c9ec0(0x429)]=_0xeea3ec[_0x1c9ec0(0x429)]),_0xeea3ec['geographicTransform']!==void 0x0&&(this['geographicTransform']=_0xeea3ec[_0x1c9ec0(0x49d)]?{..._0xeea3ec[_0x1c9ec0(0x49d)]}:null);}[_0x2859cf(0x19f)](_0x1e87f4,_0x3e1652){const _0x26754c=_0x2859cf;if(!Number[_0x26754c(0x2dd)](_0x1e87f4)||!Number[_0x26754c(0x2dd)](_0x3e1652)||_0x1e87f4<=0x0||_0x3e1652<=0x0)throw Error(_0x26754c(0x1f6));let _0x54eff0=this[_0x26754c(0x195)]();_0x54eff0[_0x26754c(0x456)]=_0x1e87f4,_0x54eff0[_0x26754c(0x3de)]=_0x3e1652,this[_0x26754c(0x456)]=_0x1e87f4,this['height']=_0x3e1652,this[_0x26754c(0x398)]()[_0x26754c(0x19f)](_0x1e87f4,_0x3e1652),this[_0x26754c(0x357)]();}['render'](){const _0x17a52d=_0x2859cf;if(this[_0x17a52d(0x24f)]!==_0x17a52d(0x436)||!this[_0x17a52d(0x204)]||this[_0x17a52d(0x456)]<=0x0||this[_0x17a52d(0x3de)]<=0x0||this['frameInFlight'])return!0x1;let _0x41f6ea=performance[_0x17a52d(0x289)]();this['frameIndex']+=0x1,this['writeParams']();let _0x55d683=this['getDevice'](),_0x37ba98=_0x55d683[_0x17a52d(0x1d8)]({'label':_0x17a52d(0x3e5)}),_0x4cb94e=this[_0x17a52d(0x1a3)]()[_0x17a52d(0x2a9)]()[_0x17a52d(0x354)]();return this[_0x17a52d(0x29a)](_0x37ba98,_0x4cb94e),this[_0x17a52d(0x3d1)](_0x37ba98,_0x4cb94e),this[_0x17a52d(0x1ca)](_0x37ba98,_0x4cb94e),_0x55d683[_0x17a52d(0x24a)]['submit']([_0x37ba98[_0x17a52d(0x1ba)]()]),this[_0x17a52d(0x311)]=!0x0,this[_0x17a52d(0x3f0)]+=0x1,this[_0x17a52d(0x255)]=Math[_0x17a52d(0x284)](0.000001,performance[_0x17a52d(0x289)]()-_0x41f6ea),_0x55d683[_0x17a52d(0x24a)][_0x17a52d(0x256)]()[_0x17a52d(0x346)](()=>{const _0x2fdafc=_0x17a52d;this[_0x2fdafc(0x358)]!==_0x55d683||this['lifecycleState']!==_0x2fdafc(0x436)||(this[_0x2fdafc(0x311)]=!0x1,this[_0x2fdafc(0x474)]?.());})[_0x17a52d(0x27a)](()=>{const _0x33d8d3=_0x17a52d;this[_0x33d8d3(0x358)]===_0x55d683&&(this[_0x33d8d3(0x311)]=!0x1);}),!0x0;}async[_0x2859cf(0x23a)](){const _0xcb8bc2=_0x2859cf;if(this[_0xcb8bc2(0x24f)]!==_0xcb8bc2(0x436)||!this['metadata']||this['width']<=0x0||this[_0xcb8bc2(0x3de)]<=0x0)throw Error(_0xcb8bc2(0x1af));let _0x20332f=this['getDevice'](),_0x3a9dcb=this['width']*0x4,_0x22c042=Math[_0xcb8bc2(0x1b5)](_0x3a9dcb/0x100)*0x100,_0x545752=_0x20332f[_0xcb8bc2(0x322)]({'label':_0xcb8bc2(0x245),'size':_0x22c042*this[_0xcb8bc2(0x3de)],'usage':GPUBufferUsage[_0xcb8bc2(0x4a3)]|GPUBufferUsage[_0xcb8bc2(0x2be)]});_0x20332f[_0xcb8bc2(0x496)](_0xcb8bc2(0x327)),this['frameIndex']+=0x1,this[_0xcb8bc2(0x190)]();let _0x1da00e=_0x20332f[_0xcb8bc2(0x1d8)]({'label':_0xcb8bc2(0x384)}),_0xa3e1cb=this[_0xcb8bc2(0x1a3)]()[_0xcb8bc2(0x2a9)](),_0x1c25f0=_0xa3e1cb[_0xcb8bc2(0x354)]();this['encodeScenePass'](_0x1da00e,_0x1c25f0),this[_0xcb8bc2(0x3d1)](_0x1da00e,_0x1c25f0),this[_0xcb8bc2(0x1ca)](_0x1da00e,_0x1c25f0),_0x1da00e['copyTextureToBuffer']({'texture':_0xa3e1cb},{'buffer':_0x545752,'bytesPerRow':_0x22c042,'rowsPerImage':this[_0xcb8bc2(0x3de)]},[this[_0xcb8bc2(0x456)],this[_0xcb8bc2(0x3de)]]),_0x20332f['queue']['submit']([_0x1da00e['finish']()]);let _0xfdfb41=await _0x20332f['popErrorScope']();if(_0xfdfb41)throw _0x545752['destroy'](),Error(_0xcb8bc2(0x196)+_0xfdfb41[_0xcb8bc2(0x1dd)]+'.\x20WebGPU\x20体积帧读取失败。');await _0x545752[_0xcb8bc2(0x450)](GPUMapMode[_0xcb8bc2(0x482)]);let _0xe47ebf=new Uint8Array(_0x545752[_0xcb8bc2(0x329)]()),_0x19d45e=new Uint8Array(_0x3a9dcb*this[_0xcb8bc2(0x3de)]),_0x25e2f7=this['getFormat']()===_0xcb8bc2(0x407);for(let _0x192026=0x0;_0x192026<this[_0xcb8bc2(0x3de)];_0x192026+=0x1){let _0x2a92cb=_0xe47ebf[_0xcb8bc2(0x23f)](_0x192026*_0x22c042,_0x192026*_0x22c042+_0x3a9dcb),_0x5c0c67=_0x192026*_0x3a9dcb;if(!_0x25e2f7){_0x19d45e[_0xcb8bc2(0x252)](_0x2a92cb,_0x5c0c67);continue;}for(let _0x4a5cc5=0x0;_0x4a5cc5<this[_0xcb8bc2(0x456)];_0x4a5cc5+=0x1){let _0x24be07=_0x4a5cc5*0x4,_0x462f3f=_0x5c0c67+_0x24be07;_0x19d45e[_0x462f3f]=_0x2a92cb[_0x24be07+0x2],_0x19d45e[_0x462f3f+0x1]=_0x2a92cb[_0x24be07+0x1],_0x19d45e[_0x462f3f+0x2]=_0x2a92cb[_0x24be07],_0x19d45e[_0x462f3f+0x3]=_0x2a92cb[_0x24be07+0x3];}}return _0x545752[_0xcb8bc2(0x40d)](),_0x545752['destroy'](),this[_0xcb8bc2(0x3f0)]+=0x1,{'width':this[_0xcb8bc2(0x456)],'height':this[_0xcb8bc2(0x3de)],'pixels':_0x19d45e};}['destroy'](){const _0x387fdd=_0x2859cf;this['lifecycleState']!=='destroyed'&&(++this['initializationGeneration'],this[_0x387fdd(0x479)](),this['canvas']=null,this[_0x387fdd(0x204)]=null,this[_0x387fdd(0x474)]=null,this[_0x387fdd(0x24f)]=_0x387fdd(0x2d3));}['createGpuResources'](){const _0x2c03bb=_0x2859cf;let _0x370597=this[_0x2c03bb(0x18f)]();this[_0x2c03bb(0x1e2)]=_0x370597['createBuffer']({'label':_0x2c03bb(0x3bc),'size':0x190,'usage':GPUBufferUsage['UNIFORM']|GPUBufferUsage[_0x2c03bb(0x4a3)]}),this[_0x2c03bb(0x20d)]=_0x370597[_0x2c03bb(0x322)]({'label':_0x2c03bb(0x386),'size':0x60,'usage':GPUBufferUsage[_0x2c03bb(0x222)]|GPUBufferUsage[_0x2c03bb(0x4a3)]}),this[_0x2c03bb(0x3c5)]=_0x370597[_0x2c03bb(0x3fb)]({'label':_0x2c03bb(0x1ae),'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x2c03bb(0x36b)]|GPUShaderStage[_0x2c03bb(0x1e7)],'buffer':{'type':_0x2c03bb(0x1bc)}}]}),this[_0x2c03bb(0x457)]=_0x370597['createBindGroupLayout']({'label':_0x2c03bb(0x3c8),'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x2c03bb(0x36b)]|GPUShaderStage[_0x2c03bb(0x1e7)],'buffer':{'type':_0x2c03bb(0x1bc)}},{'binding':0x1,'visibility':GPUShaderStage[_0x2c03bb(0x1e7)],'texture':{'sampleType':'depth'}}]}),this[_0x2c03bb(0x1fa)]=_0x370597[_0x2c03bb(0x3fb)]({'label':'volume\x20atlas\x20bind\x20group\x20layout','entries':[...Array[_0x2c03bb(0x1e5)]({'length':0x8},(_0x10b162,_0xd41137)=>({'binding':_0xd41137,'visibility':GPUShaderStage[_0x2c03bb(0x1e7)],'texture':{'sampleType':_0x2c03bb(0x2df),'viewDimension':'3d'}})),{'binding':0x8,'visibility':GPUShaderStage[_0x2c03bb(0x1e7)],'buffer':{'type':_0x2c03bb(0x396)}},{'binding':0x9,'visibility':GPUShaderStage['FRAGMENT'],'buffer':{'type':_0x2c03bb(0x1bc)}}]}),this[_0x2c03bb(0x3ec)]=_0x370597['createBindGroupLayout']({'label':_0x2c03bb(0x2fc),'entries':[0x0,0x1,0x2,0x3][_0x2c03bb(0x3c0)](_0x55531c=>({'binding':_0x55531c,'visibility':GPUShaderStage['FRAGMENT'],'buffer':{'type':_0x2c03bb(0x396)}}))}),this[_0x2c03bb(0x312)]=_0x370597[_0x2c03bb(0x3fb)]({'label':_0x2c03bb(0x30b),'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x2c03bb(0x36b)]|GPUShaderStage[_0x2c03bb(0x1e7)],'buffer':{'type':_0x2c03bb(0x1bc)}}]}),this['attachments']=new WebgpuSceneAttachments(_0x370597),this['transferResources']=new WebgpuTransferResources(_0x370597),this[_0x2c03bb(0x319)]=new WebgpuSceneMeshResources(_0x370597),this[_0x2c03bb(0x433)]=new WebgpuSliceResources(_0x370597,this[_0x2c03bb(0x47f)]()),this[_0x2c03bb(0x4a4)]=new WebgpuSceneMeshResources(_0x370597),this[_0x2c03bb(0x3ad)]();}[_0x2859cf(0x3ad)](){const _0x50e111=_0x2859cf;let _0x4bb335=this[_0x50e111(0x18f)](),_0x1a3019=this[_0x50e111(0x254)](),_0xf33ac2=this[_0x50e111(0x31b)](),_0x722e96=this[_0x50e111(0x43d)](),_0x239384=_0x4bb335[_0x50e111(0x206)]({'label':_0x50e111(0x461),'code':sceneMesh_default}),_0x49170c={'module':_0x239384,'entryPoint':_0x50e111(0x186),'buffers':[{'arrayStride':0x1c,'attributes':[{'shaderLocation':0x0,'offset':0x0,'format':_0x50e111(0x3c6)},{'shaderLocation':0x1,'offset':0xc,'format':_0x50e111(0x3f8)}]}]},_0x56c9d6={'module':_0x239384,'entryPoint':_0x50e111(0x265),'targets':[{'format':_0x1a3019,'blend':premultipliedBlend()}]},_0x33cd31=(_0x38b252,_0x517ce5)=>_0x4bb335['createRenderPipeline']({'layout':_0x4bb335[_0x50e111(0x272)]({'bindGroupLayouts':[_0xf33ac2]}),'vertex':_0x49170c,'fragment':_0x56c9d6,'primitive':{'topology':_0x38b252},'depthStencil':_0x517ce5?{'format':_0x50e111(0x3ea),'depthWriteEnabled':!0x0,'depthCompare':_0x50e111(0x42a)}:void 0x0});this[_0x50e111(0x1f2)]=_0x33cd31(_0x50e111(0x2fa),!0x0),this[_0x50e111(0x366)]=_0x33cd31(_0x50e111(0x2d6),!0x0),this['overlayTrianglePipeline']=_0x33cd31('triangle-list',!0x1),this[_0x50e111(0x223)]=_0x33cd31(_0x50e111(0x2d6),!0x1);let _0x57fc39=_0x4bb335[_0x50e111(0x206)]({'label':_0x50e111(0x2b4),'code':volumeRaymarch_default});this[_0x50e111(0x1e3)]=_0x4bb335[_0x50e111(0x278)]({'layout':_0x4bb335['createPipelineLayout']({'bindGroupLayouts':[_0x722e96,this[_0x50e111(0x2fb)](),this[_0x50e111(0x35e)]()]}),'vertex':{'module':_0x57fc39,'entryPoint':'vertexMain'},'fragment':{'module':_0x57fc39,'entryPoint':_0x50e111(0x265),'targets':[{'format':_0x1a3019,'blend':premultipliedBlend()}]},'primitive':{'topology':'triangle-list'}});let _0x4d73ee=_0x4bb335[_0x50e111(0x206)]({'label':_0x50e111(0x1e8),'code':volumeSlice_default}),_0x4978a8=_0x59ab22=>_0x4bb335[_0x50e111(0x278)]({'layout':_0x4bb335['createPipelineLayout']({'bindGroupLayouts':[_0xf33ac2,this[_0x50e111(0x2fb)](),this['getTransferBindGroupLayout'](),this[_0x50e111(0x47f)]()]}),'vertex':{'module':_0x4d73ee,'entryPoint':_0x50e111(0x186)},'fragment':{'module':_0x4d73ee,'entryPoint':_0x50e111(0x265),'targets':[{'format':_0x1a3019,'blend':premultipliedBlend()}]},'primitive':{'topology':_0x50e111(0x2fa)},'depthStencil':_0x59ab22?{'format':_0x50e111(0x3ea),'depthWriteEnabled':!0x0,'depthCompare':_0x50e111(0x42a)}:void 0x0});this[_0x50e111(0x3ba)]=_0x4978a8(!0x0),this[_0x50e111(0x20f)]=_0x4978a8(!0x1);}['configureSourceResources'](_0x364948){const _0x4963f0=_0x2859cf;this[_0x4963f0(0x351)]?.[_0x4963f0(0x355)](),this[_0x4963f0(0x351)]=new WebgpuBrickAtlas(this['getDevice'](),this[_0x4963f0(0x1e4)][_0x4963f0(0x33b)]??DEFAULT_MEMORY_TARGET_BYTES,this[_0x4963f0(0x1e4)][_0x4963f0(0x1d7)]??this[_0x4963f0(0x1e4)][_0x4963f0(0x33b)]??DEFAULT_MEMORY_TARGET_BYTES),this['atlas'][_0x4963f0(0x1a0)](_0x364948),this[_0x4963f0(0x292)](),this[_0x4963f0(0x3b5)]=this[_0x4963f0(0x351)]['createBindGroup'](this[_0x4963f0(0x2fb)](),this[_0x4963f0(0x1a9)]());}[_0x2859cf(0x4a2)](_0x5f31af,_0x4fb0a1){return new Promise((_0x37eb7e,_0xc4ca87)=>{const _0x50ce5e=_0x1b5d;this['pendingBrickUploads'][_0x50ce5e(0x39a)]({'upload':_0x5f31af,'generation':this[_0x50ce5e(0x44d)],'cacheOnSuccess':_0x4fb0a1,'resolve':_0x37eb7e,'reject':_0xc4ca87}),this[_0x50ce5e(0x471)]();});}[_0x2859cf(0x471)](){const _0x3fe47a=_0x2859cf;this[_0x3fe47a(0x335)]||=Promise[_0x3fe47a(0x40a)]()[_0x3fe47a(0x346)](()=>this['processBrickUploads']())[_0x3fe47a(0x373)](()=>{const _0x5515a9=_0x3fe47a;this[_0x5515a9(0x335)]=null,this[_0x5515a9(0x37e)][_0x5515a9(0x326)]>0x0&&this['lifecycleState']===_0x5515a9(0x436)&&this[_0x5515a9(0x471)]();});}async[_0x2859cf(0x294)](){const _0x30a1a8=_0x2859cf;for(;this[_0x30a1a8(0x37e)]['length']>0x0&&this[_0x30a1a8(0x24f)]===_0x30a1a8(0x436)&&this['metadata'];){let _0x253c9e=this[_0x30a1a8(0x18f)](),_0x1e2628=estimateBrickUploadBytes(this[_0x30a1a8(0x204)]),_0x431412=Math[_0x30a1a8(0x28e)](0x4000000,Math[_0x30a1a8(0x284)](_0x1e2628,Math[_0x30a1a8(0x49c)](_0x253c9e[_0x30a1a8(0x3e9)]['maxBufferSize']/0x4))),_0x2741a7=[],_0x23404c=0x0;for(;this[_0x30a1a8(0x37e)][_0x30a1a8(0x326)]>0x0&&_0x2741a7[_0x30a1a8(0x326)]<0x10;){let _0x2c8033=this[_0x30a1a8(0x37e)][0x0];if(_0x2741a7['length']>0x0&&_0x23404c+_0x1e2628>_0x431412)break;if(this[_0x30a1a8(0x37e)][_0x30a1a8(0x2bc)](),_0x2c8033['generation']!==this[_0x30a1a8(0x44d)]){_0x2c8033['reject'](new DOMException('Volume\x20brick\x20upload\x20became\x20stale.\x20体积砖上传已过期。','AbortError'));continue;}_0x2741a7[_0x30a1a8(0x39a)](_0x2c8033),_0x23404c+=_0x1e2628;}if(_0x2741a7[_0x30a1a8(0x326)]!==0x0)try{let _0x2678aa=[],_0x4303b5=0x0;for(let _0x321afa of _0x2741a7){let _0x10c621=this['getAtlas']()[_0x30a1a8(0x425)](_0x321afa['upload'],this[_0x30a1a8(0x3d2)]),_0x4c7470=Math[_0x30a1a8(0x1b5)](_0x4303b5/0x100)*0x100;_0x2678aa[_0x30a1a8(0x39a)]({'item':_0x321afa,'prepared':_0x10c621,'bufferOffset':_0x4c7470}),_0x4303b5=_0x4c7470+_0x10c621[_0x30a1a8(0x1cd)][_0x30a1a8(0x242)];}let _0x142205=this['getUploadStagingBuffer'](_0x4303b5);await _0x142205[_0x30a1a8(0x450)](GPUMapMode[_0x30a1a8(0x2a2)]);let _0x152afe=new Uint8Array(_0x142205['getMappedRange']());for(let _0x2954c6 of _0x2678aa){let _0x24c080=_0x2954c6[_0x30a1a8(0x313)]['values'];_0x152afe['set'](new Uint8Array(_0x24c080[_0x30a1a8(0x3ce)],_0x24c080['byteOffset'],_0x24c080[_0x30a1a8(0x242)]),_0x2954c6[_0x30a1a8(0x46d)]);}_0x142205[_0x30a1a8(0x40d)]();let _0x437000=_0x253c9e[_0x30a1a8(0x1d8)]({'label':_0x30a1a8(0x24b)});for(let _0x4671bc of _0x2678aa)this[_0x30a1a8(0x299)]()[_0x30a1a8(0x404)](_0x437000,_0x142205,_0x4671bc[_0x30a1a8(0x46d)],_0x4671bc[_0x30a1a8(0x313)]);_0x253c9e[_0x30a1a8(0x24a)][_0x30a1a8(0x2a5)]([_0x437000[_0x30a1a8(0x1ba)]()]),await _0x253c9e['queue'][_0x30a1a8(0x256)](),await new Promise(_0x350c44=>setTimeout(_0x350c44,0x0)),this['uploadedBrickCount']+=_0x2741a7[_0x30a1a8(0x326)],this[_0x30a1a8(0x201)]+=0x1,this[_0x30a1a8(0x24c)]=Math['max'](this[_0x30a1a8(0x24c)],_0x23404c);for(let _0x5214d2 of _0x2741a7){if(_0x5214d2[_0x30a1a8(0x418)]!==this[_0x30a1a8(0x44d)]){_0x5214d2[_0x30a1a8(0x460)](new DOMException(_0x30a1a8(0x372),_0x30a1a8(0x45b)));continue;}_0x5214d2[_0x30a1a8(0x333)]&&this[_0x30a1a8(0x48d)](_0x5214d2[_0x30a1a8(0x1a4)]),_0x5214d2[_0x30a1a8(0x40a)]();}}catch(_0x2d343f){for(let _0x433377 of _0x2741a7)_0x433377['reject'](_0x2d343f);}}}[_0x2859cf(0x280)](_0x41effd){const _0x4919fa=_0x2859cf;let _0x78a6cd=Math[_0x4919fa(0x284)](0x100,Math[_0x4919fa(0x1b5)](_0x41effd/0x100)*0x100);return this['uploadStagingBuffer']&&this[_0x4919fa(0x38d)]>=_0x78a6cd?this[_0x4919fa(0x309)]:(this['uploadStagingBuffer']?.['destroy'](),this['uploadStagingBuffer']=this[_0x4919fa(0x18f)]()[_0x4919fa(0x322)]({'label':_0x4919fa(0x3dc),'size':_0x78a6cd,'usage':GPUBufferUsage['MAP_WRITE']|GPUBufferUsage[_0x4919fa(0x1d3)]}),this['uploadStagingBufferSize']=_0x78a6cd,this['uploadStagingBuffer']);}[_0x2859cf(0x48d)](_0x2270d4){const _0x206cc4=_0x2859cf;for(this[_0x206cc4(0x25e)]['delete'](_0x2270d4[_0x206cc4(0x191)]),this[_0x206cc4(0x25e)][_0x206cc4(0x252)](_0x2270d4[_0x206cc4(0x191)],new Float32Array(_0x2270d4[_0x206cc4(0x1cd)]));this[_0x206cc4(0x25e)][_0x206cc4(0x376)]>this[_0x206cc4(0x34f)][_0x206cc4(0x391)];){let _0x266387=this[_0x206cc4(0x25e)][_0x206cc4(0x484)]()[_0x206cc4(0x1d6)]()[_0x206cc4(0x414)];if(_0x266387===void 0x0)break;this[_0x206cc4(0x25e)][_0x206cc4(0x18e)](_0x266387);}}[_0x2859cf(0x469)](_0x27dd67){const _0x212b62=_0x2859cf;for(let _0x147f02 of this['pendingBrickUploads'][_0x212b62(0x22b)](0x0))_0x147f02[_0x212b62(0x460)](_0x27dd67);}[_0x2859cf(0x241)](){const _0x430116=_0x2859cf;let _0x4f9e8b=this['getTransferResources']();_0x4f9e8b[_0x430116(0x207)](this[_0x430116(0x1ad)],this['opacityStops']),this[_0x430116(0x2b2)]=_0x4f9e8b[_0x430116(0x3b3)](this['getTransferBindGroupLayout']());}[_0x2859cf(0x357)](){const _0x41dc0b=_0x2859cf;!this[_0x41dc0b(0x1e2)]||!this[_0x41dc0b(0x36d)]||!this[_0x41dc0b(0x3c5)]||!this[_0x41dc0b(0x457)]||(this[_0x41dc0b(0x42e)]=this[_0x41dc0b(0x18f)]()[_0x41dc0b(0x3b3)]({'label':'volume\x20geometry\x20bind\x20group','layout':this['geometryBindGroupLayout'],'entries':[{'binding':0x0,'resource':{'buffer':this[_0x41dc0b(0x1e2)]}}]}),this[_0x41dc0b(0x2bd)]=this['getDevice']()['createBindGroup']({'label':_0x41dc0b(0x3b6),'layout':this[_0x41dc0b(0x457)],'entries':[{'binding':0x0,'resource':{'buffer':this[_0x41dc0b(0x1e2)]}},{'binding':0x1,'resource':this[_0x41dc0b(0x36d)][_0x41dc0b(0x1bb)]}]}));}['writeParams'](){const _0x2c6447=_0x2859cf;let _0x494899=new Float32Array(0x64);_0x494899[_0x2c6447(0x252)](this[_0x2c6447(0x448)][_0x2c6447(0x387)],0x0),_0x494899[_0x2c6447(0x252)](this['camera']['inverseViewProjection'],0x10),_0x494899[_0x2c6447(0x252)](this[_0x2c6447(0x46c)],0x20),_0x494899[_0x2c6447(0x252)](this[_0x2c6447(0x25d)],0x30),_0x494899[_0x2c6447(0x252)]([...this[_0x2c6447(0x448)][_0x2c6447(0x352)],0x1],0x40),_0x494899[_0x2c6447(0x252)]([this[_0x2c6447(0x456)],this['height'],0x1/this[_0x2c6447(0x456)],0x1/this[_0x2c6447(0x3de)]],0x44),_0x494899[_0x2c6447(0x252)]([...this[_0x2c6447(0x3c7)],0x0],0x48),_0x494899[_0x2c6447(0x252)]([...this[_0x2c6447(0x26c)],0x0],0x4c),_0x494899['set']([+(this[_0x2c6447(0x3b9)]==='maximum'),this[_0x2c6447(0x446)],this[_0x2c6447(0x1ea)],this[_0x2c6447(0x3b4)]],0x50),_0x494899['set']([this[_0x2c6447(0x1ad)][_0x2c6447(0x326)],this[_0x2c6447(0x37b)][_0x2c6447(0x326)],this['volumeDimFactor'],+(this[_0x2c6447(0x429)]===_0x2c6447(0x2b3))],0x54);let _0xfbfc94=this[_0x2c6447(0x49d)];_0xfbfc94&&(_0x494899['set']([0x1,..._0xfbfc94[_0x2c6447(0x3b0)]],0x58),_0x494899[_0x2c6447(0x252)]([_0xfbfc94[_0x2c6447(0x442)],_0xfbfc94['semiMinorAxisScaled'],..._0xfbfc94[_0x2c6447(0x44a)]],0x5c),_0x494899['set']([..._0xfbfc94[_0x2c6447(0x402)],..._0xfbfc94[_0x2c6447(0x330)]],0x60)),this[_0x2c6447(0x18f)]()['queue']['writeBuffer'](this[_0x2c6447(0x2d1)](),0x0,_0x494899);}[_0x2859cf(0x292)](){const _0x5d9312=_0x2859cf;let _0x33fd22=this[_0x5d9312(0x204)],_0x5912aa=this[_0x5d9312(0x351)];if(!_0x33fd22||!_0x5912aa)return;let _0x24096e=_0x5912aa[_0x5d9312(0x1eb)],_0x148838=new Uint32Array(0x60/0x4),_0x4ed674=Math[_0x5d9312(0x1b5)](_0x33fd22[_0x5d9312(0x1bf)]['count']/_0x33fd22['brickWidth']),_0x145b28=Math[_0x5d9312(0x1b5)](_0x33fd22[_0x5d9312(0x1de)][_0x5d9312(0x251)]/_0x33fd22[_0x5d9312(0x2c4)]),_0x27166f=Math[_0x5d9312(0x1b5)](_0x33fd22[_0x5d9312(0x203)][_0x5d9312(0x251)]/_0x33fd22[_0x5d9312(0x3d8)]);_0x148838[_0x5d9312(0x252)]([_0x33fd22['xAxis'][_0x5d9312(0x251)],_0x33fd22['yAxis'][_0x5d9312(0x251)],_0x33fd22[_0x5d9312(0x203)][_0x5d9312(0x251)],0x0],0x0),_0x148838[_0x5d9312(0x252)]([_0x33fd22['brickWidth'],_0x33fd22['brickHeight'],_0x33fd22[_0x5d9312(0x3d8)],0x1],0x4),_0x148838[_0x5d9312(0x252)]([_0x4ed674,_0x145b28,_0x27166f,0x0],0x8),_0x148838['set']([_0x24096e[_0x5d9312(0x228)],_0x24096e[_0x5d9312(0x32d)],_0x24096e[_0x5d9312(0x3e8)],_0x24096e['slotCount']],0xc),_0x148838[_0x5d9312(0x252)]([(_0x33fd22[_0x5d9312(0x420)]+0x2)*_0x24096e['slotCountX'],(_0x33fd22[_0x5d9312(0x2c4)]+0x2)*_0x24096e[_0x5d9312(0x32d)],(_0x33fd22['brickDepth']+0x2)*_0x24096e['slotCountZ'],0x0],0x10),new Float32Array(_0x148838['buffer'])[_0x5d9312(0x252)]([_0x33fd22[_0x5d9312(0x219)]??0x0,_0x33fd22[_0x5d9312(0x219)]===void 0x0?0x0:0x1,0x0,0x0],0x14),this[_0x5d9312(0x18f)]()[_0x5d9312(0x24a)][_0x5d9312(0x2c0)](this['getVolumeParamsBuffer'](),0x0,_0x148838);}[_0x2859cf(0x29a)](_0x243a9f,_0x16b92f){const _0x2fd991=_0x2859cf;let _0x58a709=_0x243a9f[_0x2fd991(0x47d)]({'label':_0x2fd991(0x22c),'colorAttachments':[{'view':_0x16b92f,'clearValue':{'r':0x0,'g':0x0,'b':0x0,'a':0x0},'loadOp':_0x2fd991(0x314),'storeOp':'store'}],'depthStencilAttachment':{'view':this[_0x2fd991(0x398)]()[_0x2fd991(0x1bb)],'depthClearValue':0x1,'depthLoadOp':_0x2fd991(0x314),'depthStoreOp':'store'}});this['drawMeshes'](_0x58a709,_0x2fd991(0x3cc)),this['drawSlices'](_0x58a709,'scene'),_0x58a709[_0x2fd991(0x317)]();}[_0x2859cf(0x3d1)](_0x15003e,_0x479586){const _0x2810ee=_0x2859cf;if(!this[_0x2810ee(0x3b5)]||!this[_0x2810ee(0x2b2)]||!this[_0x2810ee(0x2bd)]||!this[_0x2810ee(0x1e3)])return;let _0x1fce08=_0x15003e['beginRenderPass']({'label':_0x2810ee(0x268),'colorAttachments':[{'view':_0x479586,'loadOp':_0x2810ee(0x286),'storeOp':_0x2810ee(0x367)}]});_0x1fce08['setPipeline'](this[_0x2810ee(0x1e3)]),_0x1fce08[_0x2810ee(0x44e)](0x0,this[_0x2810ee(0x2bd)]),_0x1fce08['setBindGroup'](0x1,this[_0x2810ee(0x3b5)]),_0x1fce08[_0x2810ee(0x44e)](0x2,this['transferBindGroup']),_0x1fce08['draw'](0x3),_0x1fce08[_0x2810ee(0x317)]();}[_0x2859cf(0x1ca)](_0x586bb6,_0x4352d9){const _0x3a5de5=_0x2859cf;let _0x2ddb2f=_0x586bb6[_0x3a5de5(0x47d)]({'label':'volume\x20always\x20visible\x20pass','colorAttachments':[{'view':_0x4352d9,'loadOp':_0x3a5de5(0x286),'storeOp':_0x3a5de5(0x367)}]});this[_0x3a5de5(0x1a5)](_0x2ddb2f,_0x3a5de5(0x1dc)),this[_0x3a5de5(0x464)](_0x2ddb2f,_0x3a5de5(0x1dc)),_0x2ddb2f[_0x3a5de5(0x317)]();}[_0x2859cf(0x1a5)](_0x17c5d5,_0x1c95e9){const _0x592a34=_0x2859cf;let _0x1341f7=this[_0x592a34(0x42e)];if(!_0x1341f7)return;let _0x5a771b=_0x1c95e9===_0x592a34(0x3cc)?this[_0x592a34(0x1f2)]:this[_0x592a34(0x1e1)],_0x33d8b6=_0x1c95e9===_0x592a34(0x3cc)?this[_0x592a34(0x366)]:this[_0x592a34(0x223)];_0x5a771b&&(_0x17c5d5['setPipeline'](_0x5a771b),_0x17c5d5[_0x592a34(0x44e)](0x0,_0x1341f7),this[_0x592a34(0x319)]?.[_0x592a34(0x1db)](_0x17c5d5,'triangle-list',_0x1c95e9),this[_0x592a34(0x4a4)]?.['draw'](_0x17c5d5,_0x592a34(0x2fa),_0x1c95e9)),_0x33d8b6&&(_0x17c5d5[_0x592a34(0x208)](_0x33d8b6),_0x17c5d5[_0x592a34(0x44e)](0x0,_0x1341f7),this[_0x592a34(0x319)]?.[_0x592a34(0x1db)](_0x17c5d5,_0x592a34(0x2d6),_0x1c95e9),this['axisResources']?.[_0x592a34(0x1db)](_0x17c5d5,_0x592a34(0x2d6),_0x1c95e9));}[_0x2859cf(0x464)](_0x225945,_0x37283b){const _0x5b00ad=_0x2859cf;let _0x3de310=_0x37283b===_0x5b00ad(0x3cc)?this['sceneSlicePipeline']:this[_0x5b00ad(0x20f)];!_0x3de310||!this[_0x5b00ad(0x42e)]||!this['volumeBindGroup']||!this[_0x5b00ad(0x2b2)]||(_0x225945[_0x5b00ad(0x44e)](0x0,this[_0x5b00ad(0x42e)]),_0x225945[_0x5b00ad(0x44e)](0x1,this[_0x5b00ad(0x3b5)]),_0x225945[_0x5b00ad(0x44e)](0x2,this[_0x5b00ad(0x2b2)]),this[_0x5b00ad(0x433)]?.['draw'](_0x225945,_0x3de310,_0x37283b));}[_0x2859cf(0x3ee)](_0x338068){const _0x5b3b21=_0x2859cf;_0x338068[_0x5b3b21(0x41b)][_0x5b3b21(0x346)](_0x34fc26=>{const _0x1d0108=_0x5b3b21;if(this[_0x1d0108(0x358)]!==_0x338068||this[_0x1d0108(0x24f)]===_0x1d0108(0x2d3))return;this[_0x1d0108(0x24f)]='lost',console[_0x1d0108(0x1ed)](_0x1d0108(0x1c6)+_0x34fc26['message']+_0x1d0108(0x213));let _0x5dfdbf=this[_0x1d0108(0x23c)];this[_0x1d0108(0x479)](),_0x5dfdbf&&this[_0x1d0108(0x1b3)](_0x5dfdbf)[_0x1d0108(0x27a)](_0x4d5e3a=>{const _0x30980f=_0x1d0108;console[_0x30980f(0x1ed)](_0x30980f(0x26a),_0x4d5e3a);});});}[_0x2859cf(0x479)](){const _0x5bcc87=_0x2859cf;this[_0x5bcc87(0x44d)]+=0x1,this[_0x5bcc87(0x469)](new DOMException(_0x5bcc87(0x2e5),_0x5bcc87(0x45b))),this[_0x5bcc87(0x351)]?.[_0x5bcc87(0x355)](),this[_0x5bcc87(0x1fc)]?.[_0x5bcc87(0x355)](),this[_0x5bcc87(0x319)]?.[_0x5bcc87(0x355)](),this[_0x5bcc87(0x433)]?.[_0x5bcc87(0x355)](),this['axisResources']?.[_0x5bcc87(0x355)](),this[_0x5bcc87(0x36d)]?.['destroy'](),this[_0x5bcc87(0x1e2)]?.[_0x5bcc87(0x355)](),this['volumeParamsBuffer']?.[_0x5bcc87(0x355)](),this[_0x5bcc87(0x309)]?.[_0x5bcc87(0x355)]();try{this[_0x5bcc87(0x45c)]?.['unconfigure']();}catch{}this['device']?.[_0x5bcc87(0x355)](),this['adapter']=null,this[_0x5bcc87(0x358)]=null,this[_0x5bcc87(0x45c)]=null,this[_0x5bcc87(0x2f2)]=null,this[_0x5bcc87(0x1e2)]=null,this[_0x5bcc87(0x20d)]=null,this['uploadStagingBuffer']=null,this[_0x5bcc87(0x38d)]=0x0,this[_0x5bcc87(0x3c5)]=null,this[_0x5bcc87(0x457)]=null,this[_0x5bcc87(0x1fa)]=null,this[_0x5bcc87(0x3ec)]=null,this[_0x5bcc87(0x312)]=null,this[_0x5bcc87(0x42e)]=null,this[_0x5bcc87(0x2bd)]=null,this[_0x5bcc87(0x3b5)]=null,this['transferBindGroup']=null,this[_0x5bcc87(0x1e3)]=null,this[_0x5bcc87(0x1f2)]=null,this[_0x5bcc87(0x366)]=null,this[_0x5bcc87(0x1e1)]=null,this[_0x5bcc87(0x223)]=null,this[_0x5bcc87(0x3ba)]=null,this[_0x5bcc87(0x20f)]=null,this[_0x5bcc87(0x36d)]=null,this[_0x5bcc87(0x351)]=null,this[_0x5bcc87(0x1fc)]=null,this[_0x5bcc87(0x319)]=null,this['sliceResources']=null,this[_0x5bcc87(0x4a4)]=null,this[_0x5bcc87(0x311)]=!0x1,this[_0x5bcc87(0x456)]=0x0,this['height']=0x0;}['getDevice'](){const _0x522393=_0x2859cf;if(!this['device'])throw Error(_0x522393(0x3a5));return this[_0x522393(0x358)];}['getContext'](){const _0x2f9453=_0x2859cf;if(!this[_0x2f9453(0x45c)])throw Error(_0x2f9453(0x2b8));return this[_0x2f9453(0x45c)];}[_0x2859cf(0x254)](){const _0x5489cb=_0x2859cf;if(!this[_0x5489cb(0x2f2)])throw Error(_0x5489cb(0x412));return this[_0x5489cb(0x2f2)];}[_0x2859cf(0x195)](){const _0x17027a=_0x2859cf;if(!this[_0x17027a(0x23c)])throw Error(_0x17027a(0x1a6));return this[_0x17027a(0x23c)];}[_0x2859cf(0x398)](){const _0xdf35b8=_0x2859cf;if(!this[_0xdf35b8(0x36d)])throw Error(_0xdf35b8(0x449));return this['attachments'];}[_0x2859cf(0x299)](){const _0x10650b=_0x2859cf;if(!this[_0x10650b(0x351)])throw Error(_0x10650b(0x38c));return this[_0x10650b(0x351)];}[_0x2859cf(0x438)](){const _0x422e21=_0x2859cf;if(!this['transferResources'])throw Error(_0x422e21(0x405));return this[_0x422e21(0x1fc)];}[_0x2859cf(0x44b)](){const _0x260d93=_0x2859cf;if(!this[_0x260d93(0x319)])throw Error(_0x260d93(0x422));return this[_0x260d93(0x319)];}['getSliceResources'](){const _0x3a1044=_0x2859cf;if(!this['sliceResources'])throw Error(_0x3a1044(0x267));return this[_0x3a1044(0x433)];}[_0x2859cf(0x463)](){const _0x15dd30=_0x2859cf;if(!this[_0x15dd30(0x4a4)])throw Error(_0x15dd30(0x236));return this[_0x15dd30(0x4a4)];}['getSceneBindGroupLayout'](){const _0x607e36=_0x2859cf;if(!this['sceneBindGroupLayout'])throw Error(_0x607e36(0x187));return this[_0x607e36(0x457)];}[_0x2859cf(0x31b)](){const _0x15aa1e=_0x2859cf;if(!this[_0x15aa1e(0x3c5)])throw Error(_0x15aa1e(0x394));return this[_0x15aa1e(0x3c5)];}[_0x2859cf(0x2fb)](){const _0x44817a=_0x2859cf;if(!this[_0x44817a(0x1fa)])throw Error('WebGPU\x20volume\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20体积绑定布局不可用。');return this[_0x44817a(0x1fa)];}[_0x2859cf(0x35e)](){const _0x1182e7=_0x2859cf;if(!this[_0x1182e7(0x3ec)])throw Error('WebGPU\x20transfer\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20传递函数绑定布局不可用。');return this[_0x1182e7(0x3ec)];}[_0x2859cf(0x47f)](){const _0x50c06f=_0x2859cf;if(!this[_0x50c06f(0x312)])throw Error('WebGPU\x20slice\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20切面绑定布局不可用。');return this[_0x50c06f(0x312)];}['getSceneParamsBuffer'](){const _0x2959fc=_0x2859cf;if(!this['sceneParamsBuffer'])throw Error(_0x2959fc(0x22e));return this['sceneParamsBuffer'];}['getVolumeParamsBuffer'](){const _0x4c89df=_0x2859cf;if(!this['volumeParamsBuffer'])throw Error(_0x4c89df(0x237));return this[_0x4c89df(0x20d)];}};const getAxis=(_0x5f5cfa,_0x203aa4)=>_0x203aa4==='x'?_0x5f5cfa[_0x2859cf(0x1bf)]:_0x203aa4==='y'?_0x5f5cfa['yAxis']:_0x5f5cfa[_0x2859cf(0x203)],clampPosition=(_0x56f194,_0x5840ab,_0xd7ef2d)=>{const _0x3a6872=_0x2859cf;if(!Number['isFinite'](_0xd7ef2d))throw Error(_0x3a6872(0x21d));let _0x420dd6=getAxis(_0x56f194,_0x5840ab),_0x228659=Math[_0x3a6872(0x28e)](_0x420dd6[_0x3a6872(0x1df)],_0x420dd6[_0x3a6872(0x317)]),_0x330b80=Math[_0x3a6872(0x284)](_0x420dd6[_0x3a6872(0x1df)],_0x420dd6[_0x3a6872(0x317)]);return Math[_0x3a6872(0x28e)](_0x330b80,Math[_0x3a6872(0x284)](_0x228659,_0xd7ef2d));},clonePreview=_0x266b12=>_0x266b12?{..._0x266b12}:null,cloneLockedSlice=_0x7efe0c=>({..._0x7efe0c}),validateAxes=_0x4e9f4c=>{const _0x260466=_0x2859cf;for(let _0x499eb6 of[_0x4e9f4c[_0x260466(0x1bf)],_0x4e9f4c[_0x260466(0x1de)],_0x4e9f4c[_0x260466(0x203)]]){if(!Number[_0x260466(0x273)](_0x499eb6[_0x260466(0x1df)])||!Number[_0x260466(0x273)](_0x499eb6[_0x260466(0x317)]))throw Error(_0x260466(0x26f));if(!(Number[_0x260466(0x2dd)](_0x499eb6[_0x260466(0x251)])&&_0x499eb6[_0x260466(0x251)]>0x0))throw Error(_0x260466(0x20b));if(_0x499eb6[_0x260466(0x251)]>0x1&&_0x499eb6[_0x260466(0x1df)]===_0x499eb6[_0x260466(0x317)])throw Error(_0x260466(0x2b9));}},volumeAxisValueToNormalized=(_0x1906e2,_0x24eb63)=>_0x1906e2['start']===_0x1906e2['end']?0x0:(_0x24eb63-_0x1906e2[_0x2859cf(0x1df)])/(_0x1906e2[_0x2859cf(0x317)]-_0x1906e2[_0x2859cf(0x1df)]),normalizedToVolumeAxisValue=(_0x2554c9,_0x1a378b)=>_0x2554c9[_0x2859cf(0x1df)]+_0x1a378b*(_0x2554c9[_0x2859cf(0x317)]-_0x2554c9[_0x2859cf(0x1df)]);var SliceState=class{[_0x2859cf(0x3ae)];['listeners']=new Set();['onLimitReached'];[_0x2859cf(0x1f9)];[_0x2859cf(0x341)];['nextId']=0x1;[_0x2859cf(0x370)]=null;[_0x2859cf(0x3ff)]=[];[_0x2859cf(0x263)]=_0x2859cf(0x229);[_0x2859cf(0x328)];constructor(_0x3a5a89,_0x13c7a2={}){const _0x82c9e6=_0x2859cf;if(validateAxes(_0x3a5a89),this['axes']={'xAxis':{..._0x3a5a89[_0x82c9e6(0x1bf)]},'yAxis':{..._0x3a5a89[_0x82c9e6(0x1de)]},'zAxis':{..._0x3a5a89[_0x82c9e6(0x203)]}},this[_0x82c9e6(0x328)]=_0x13c7a2[_0x82c9e6(0x328)]??0.25,this['depthMode']=_0x13c7a2[_0x82c9e6(0x341)]??_0x82c9e6(0x3cc),this['maxLockedSlices']=_0x13c7a2[_0x82c9e6(0x1f9)]??0xc,this['onLimitReached']=_0x13c7a2[_0x82c9e6(0x3da)],!(this[_0x82c9e6(0x328)]>=0x0&&this[_0x82c9e6(0x328)]<=0x1))throw Error(_0x82c9e6(0x1f8));if(this[_0x82c9e6(0x341)]!==_0x82c9e6(0x3cc)&&this['depthMode']!==_0x82c9e6(0x1dc))throw Error('切面深度模式无效\x20/\x20Slice\x20depth\x20mode\x20is\x20invalid');if(!(Number['isInteger'](this[_0x82c9e6(0x1f9)])&&this['maxLockedSlices']>0x0))throw Error('maxLockedSlices\x20必须是正整数。');}get[_0x2859cf(0x276)](){const _0x2f4e83=_0x2859cf;return clonePreview(this[_0x2f4e83(0x370)]);}get[_0x2859cf(0x21b)](){const _0x3649b2=_0x2859cf;return this[_0x3649b2(0x3ff)][_0x3649b2(0x3c0)](cloneLockedSlice);}get[_0x2859cf(0x483)](){return this['mode'];}get[_0x2859cf(0x47b)](){const _0x188e96=_0x2859cf;return{'preview':this[_0x188e96(0x276)],'lockedSlices':this[_0x188e96(0x21b)],'toolMode':this['mode'],'volumeDimFactor':this[_0x188e96(0x328)]};}['subscribe'](_0x2a90b9){const _0x26d1a9=_0x2859cf;return this[_0x26d1a9(0x428)][_0x26d1a9(0x35c)](_0x2a90b9),_0x2a90b9(this['snapshot']),()=>this[_0x26d1a9(0x428)]['delete'](_0x2a90b9);}get['axisDefinitions'](){const _0x52197e=_0x2859cf;return{'xAxis':{...this[_0x52197e(0x3ae)]['xAxis']},'yAxis':{...this[_0x52197e(0x3ae)][_0x52197e(0x1de)]},'zAxis':{...this[_0x52197e(0x3ae)]['zAxis']}};}[_0x2859cf(0x26d)](_0x48bff2){const _0x14c3e4=_0x2859cf;validateAxes(_0x48bff2),this[_0x14c3e4(0x3ae)]={'xAxis':{..._0x48bff2[_0x14c3e4(0x1bf)]},'yAxis':{..._0x48bff2[_0x14c3e4(0x1de)]},'zAxis':{..._0x48bff2[_0x14c3e4(0x203)]}},this[_0x14c3e4(0x370)]&&(this['currentPreview']['position']=clampPosition(this[_0x14c3e4(0x3ae)],this[_0x14c3e4(0x370)][_0x14c3e4(0x1d4)],this[_0x14c3e4(0x370)]['position'])),this['slices']=this[_0x14c3e4(0x3ff)][_0x14c3e4(0x3c0)](_0x482537=>({..._0x482537,'position':clampPosition(this[_0x14c3e4(0x3ae)],_0x482537['axis'],_0x482537[_0x14c3e4(0x27c)])})),this['notify']();}[_0x2859cf(0x1ef)](_0x5019e5){const _0x287787=_0x2859cf;this['mode']!==_0x5019e5&&(this[_0x287787(0x263)]=_0x5019e5,(_0x5019e5===null||_0x5019e5!==_0x287787(0x229)&&this['currentPreview']?.[_0x287787(0x1d4)]!==_0x5019e5)&&(this[_0x287787(0x370)]=null),this[_0x287787(0x33a)]());}['updatePreview'](_0xf35690,_0x13face){const _0x510bb7=_0x2859cf;if(this[_0x510bb7(0x263)]===null||this['mode']!==_0x510bb7(0x229)&&this[_0x510bb7(0x263)]!==_0xf35690)return;let _0x549765=clampPosition(this[_0x510bb7(0x3ae)],_0xf35690,_0x13face);this['currentPreview']?.[_0x510bb7(0x1d4)]===_0xf35690&&this[_0x510bb7(0x370)][_0x510bb7(0x27c)]===_0x549765||(this['currentPreview']={'axis':_0xf35690,'position':_0x549765},this[_0x510bb7(0x33a)]());}['clearPreview'](){const _0x27a5a3=_0x2859cf;this[_0x27a5a3(0x370)]&&(this[_0x27a5a3(0x370)]=null,this['notify']());}[_0x2859cf(0x3d0)](_0x10d6e6=this[_0x2859cf(0x341)]){const _0x5d5ccb=_0x2859cf;return this[_0x5d5ccb(0x370)]?this[_0x5d5ccb(0x476)](this[_0x5d5ccb(0x370)][_0x5d5ccb(0x1d4)],this[_0x5d5ccb(0x370)][_0x5d5ccb(0x27c)],_0x10d6e6):null;}[_0x2859cf(0x476)](_0x2d86a5,_0x4a0aef,_0x53c477=this[_0x2859cf(0x341)]){const _0x561501=_0x2859cf;if(this[_0x561501(0x3ff)]['length']>=this[_0x561501(0x1f9)])return this[_0x561501(0x3da)]?.(this[_0x561501(0x1f9)]),null;let _0x250106={'id':'volume-slice-'+this[_0x561501(0x46f)],'axis':_0x2d86a5,'position':clampPosition(this[_0x561501(0x3ae)],_0x2d86a5,_0x4a0aef),'depthMode':_0x53c477,'visible':!0x0};return this[_0x561501(0x46f)]+=0x1,this['slices']=[...this['slices'],_0x250106],this[_0x561501(0x33a)](),cloneLockedSlice(_0x250106);}[_0x2859cf(0x39d)](_0x3df579,_0x225ad3){const _0x5c98aa=_0x2859cf;let _0x21415c=this[_0x5c98aa(0x3ff)][_0x5c98aa(0x248)](_0x5a39ce=>_0x5a39ce['id']===_0x3df579);if(_0x21415c<0x0)return;let _0x51c5cc=this[_0x5c98aa(0x3ff)][_0x21415c],_0x21c175=clampPosition(this[_0x5c98aa(0x3ae)],_0x51c5cc['axis'],_0x225ad3);_0x21c175!==_0x51c5cc[_0x5c98aa(0x27c)]&&(this['slices']=this[_0x5c98aa(0x3ff)]['map'](_0x50cd7d=>_0x50cd7d['id']===_0x3df579?{..._0x50cd7d,'position':_0x21c175}:_0x50cd7d),this[_0x5c98aa(0x33a)]());}[_0x2859cf(0x2cb)](_0x2687c5){const _0x19472d=_0x2859cf;let _0x490ae6=this['slices'][_0x19472d(0x29e)](_0x55e2ea=>_0x55e2ea['id']!==_0x2687c5);_0x490ae6[_0x19472d(0x326)]!==this['slices']['length']&&(this['slices']=_0x490ae6,this['notify']());}[_0x2859cf(0x41d)](){const _0x546c10=_0x2859cf;this[_0x546c10(0x3ff)][_0x546c10(0x326)]!==0x0&&(this[_0x546c10(0x3ff)]=[],this[_0x546c10(0x33a)]());}[_0x2859cf(0x33a)](){const _0x33d5ae=_0x2859cf;let _0x3fe5e9=this[_0x33d5ae(0x47b)];for(let _0x29ae32 of this[_0x33d5ae(0x428)])_0x29ae32(_0x3fe5e9);}};function _0xa78c(){const _0x568040=['WebGPU\x20volume\x20atlas\x20has\x20no\x20evictable\x20slot.\x20WebGPU\x20体积图集没有可驱逐的槽位。','writeBuffer','markers','brickSortCount','skippedSampleCount','brickHeight','sliceDepthMode','176188HStlBu','maxTextureDimension3D','distance','static','Volume\x20brick\x20upload\x20was\x20superseded\x20by\x20a\x20new\x20source.\x20体积砖上传已被新数据源替代。','removeSlice','endX','toLowerCase','The\x20maximum\x20locked\x20slice\x20count\x20has\x20been\x20reached.\x20已达到最大锁定切面数量。','sliceId','pointercancel','getSceneParamsBuffer','moved','destroyed','actualFrameIntervalMilliseconds','vertexCount','line-list','Unable\x20to\x20allocate\x20a\x20WebGPU\x20R32F\x20volume\x20atlas\x20within\x20device\x20limits.\x20无法在设备限制内分配\x20WebGPU\x20R32F\x20体积图集。','handlePointerDown','\x20must\x20be\x20a\x20non-negative\x20finite\x20value.\x20','getEffectiveQuality','exp','clearPageEntry','isInteger','minZ','unfilterable-float','proxyModelMatrix','cachedAxes','skippedSamples','路线剖面\x20id\x20不能为空。','timeCount','WebGPU\x20volume\x20resources\x20were\x20released.\x20WebGPU\x20体积资源已释放。','Returned\x20volume\x20chunk\x20timeIndex\x20does\x20not\x20match\x20the\x20request.\x20返回体积分块的时间索引与请求不一致。','split','composite','volume\x20scene\x20mesh\x20','layout','syncPreview','cartesian','dispatchWorkgroups','flushBrickSchedule','.\x20体积\x20timeIndex\x20越界。','occupied','balanced','format','sourceGeneration','clipBox','requestBrickSchedule','state','extent','rgb(','transform','triangle-list','getVolumeBindGroupLayout','volume\x20transfer\x20bind\x20group\x20layout','autoFrameCount','cachedProfiles','Volume\x20valueScale\x20must\x20be\x20finite.\x20体积\x20valueScale\x20必须是有限数值。','previewMarker','WebGPU\x20volume\x20transfer\x20resources\x20are\x20incomplete.\x20WebGPU\x20体积传递函数资源不完整。','endsWith','路线剖面\x20','levelCount','Volume\x20opacity\x20stops\x20cannot\x20be\x20empty.\x20体积透明度节点不能为空。','abort','readRange','residentBrickCount','uploadStagingBuffer','Count','volume\x20slice\x20bind\x20group\x20layout','background','pendingKeys','3px\x206px','projection','onInteractionStart','frameInFlight','sliceBindGroupLayout','prepared','clear','transparent','1px\x20solid\x20rgb(255\x20255\x20255\x20/\x2065%)','end','mouse','profileResources','minY','getGeometryBindGroupLayout','个色标范围的\x20min\x20必须小于\x20max','initialized','visible','render','zIndex','aborted','createBuffer','requestRender','\x20axis\x20must\x20contain\x20two\x20different\x20finite\x20endpoints.\x20','.\x20创建\x20WebGPU\x20体积管线失败。','length','validation','volumeDimFactor','getMappedRange','overlayContainer','maximumPitch','createSliceState','slotCountY','plateColor','beginComputePass','heightScaled','slicePlateColor','clearPreview','cacheOnSuccess','levelStart','uploadPump','has','Volume\x20Z\x20axis','initializing','function','notify','memoryTargetBytes','colorValuesBuffer','premultiplied','touch','one','minimumPitchDegrees','depthMode','The\x20current\x20WebGPU\x20volume\x20atlas\x20requires\x20halo:\x201.\x20当前\x20WebGPU\x20体积图集要求\x20halo\x20为\x201。','configureModel','configureSourceResources','isSafeInteger','then','translate(-50%,\x20-100%)','hypot','相机宽高比必须是大于\x200\x20的有限数。','orthographic','Volume\x20opacity\x20stops\x20must\x20be\x20between\x20zero\x20and\x20one.\x20体积透明度色标必须位于零到一之间。','handleFrameAvailable','rotateSpeed','\x20must\x20contain\x20sixteen\x20finite\x20values.\x20','statistics','rgb(17\x2024\x2039\x20/\x2082%)','atlas','cameraPosition','\x20至少需要两个高度层。','createView','destroy','findAxisHit','recreateSceneBindGroup','device','Volume\x20opacity\x20stop\x20values\x20must\x20be\x20finite\x20and\x20strictly\x20increasing.\x20体积透明度节点值必须有限且严格递增。','coreRange','lastSubmittedFrameTimestamp','add','abs','getTransferBindGroupLayout','minimumPitch','\x20requires\x20','center','Volume\x20brick\x20','.\x20体积逻辑砖块索引无效。','coordinate','\x20的\x20opacity\x20必须位于\x200\x20到\x201。','sceneLinePipeline','store','Failed\x20to\x20create\x20a\x20WebGPU\x20canvas\x20context\x20for\x20the\x20volume\x20scene.\x20无法为体积场景创建\x20WebGPU\x20Canvas\x20上下文。','frameRequest','getBoundingClientRect','VERTEX','Returned\x20volume\x20chunk\x20dimensions\x20do\x20not\x20match\x20its\x20range.\x20返回体积分块尺寸与范围不一致。','attachments','setAspect','Alpha\x20颜色通道必须在0\x20~\x201之间','currentPreview','mixed','Volume\x20brick\x20upload\x20became\x20stale.\x20体积砖上传已过期。','finally','get','WebGPU\x20volume\x20page\x20table\x20is\x20unavailable.\x20WebGPU\x20体积页表不可用。','size','append','createGpuResources','padding','rgb\x20颜色通道数量不正确:\x20','opacityStops','atan2','resetBrickRequests','pendingBrickUploads','\x20noData\x20must\x20be\x20finite\x20or\x20NaN.\x20','create','0.72','43743fyzyoB','18toiNId','volume\x20frame\x20capture','interactionController','volume\x20metadata\x20params','viewProjection','.\x20体积分块数值数量与尺寸不一致。','devicePixelRatio','locked','opacityValuesBuffer','WebGPU\x20volume\x20source\x20must\x20be\x20configured\x20before\x20uploading\x20bricks.\x20上传砖块前必须配置\x20WebGPU\x20体积数据源。','uploadStagingBufferSize','positions','pointerId','uniformUpdateCount','atlasCapacity','viewProjectionMatrix','\x20must\x20be\x20a\x20positive\x20finite\x20value.\x20','WebGPU\x20geometry\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20几何绑定布局不可用。','Volume\x20opacity\x20stops\x20must\x20be\x20sorted\x20by\x20value.\x20体积透明度色标必须按数值升序排列。','read-only-storage','colorStops\x20不能为空','getAttachments','\x20必须是非负有限数值。','push','getPageTableBuffer','cachedSlices','updateLockedSlice','Volume\x20slice\x20','hitTolerance','#fff','Invalid\x20logical\x20volume\x20brick\x20index:\x20','style','stopPropagation','autoFrameIntervalTotal','WebGPU\x20volume\x20device\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20device\x20尚未初始化。','toUpperCase','interactionRenderScale','rowsPerImage','clientHeight','getAtlasTexture','level','\x20must\x20contain\x20position\x20and\x20RGBA\x20values\x20for\x20every\x20vertex.\x20场景网格顶点必须包含位置和\x20RGBA。','createPipelines','axes','beginLockedSliceDrag','centerEcefScaled','minX','budgetLimited','createBindGroup','stepLength','volumeBindGroup','volume\x20scene\x20bind\x20group','Volume\x20brick\x20halo\x20must\x20be\x20a\x20positive\x20integer.\x20体积分块\x20halo\x20必须是正整数。','destroyResources','renderMode','sceneSlicePipeline','Volume\x20chunk\x20','volume\x20scene\x20params','preventDefault','Failed\x20to\x20acquire\x20a\x20WebGPU\x20adapter\x20for\x20the\x20volume\x20scene.\x20无法为体积场景获取\x20WebGPU\x20adapter。','\x20端点必须是有限数值。','map','requestControllers','touchAction','endY','performance','geometryBindGroupLayout','float32x3','clipMinimum','volume\x20scene\x20bind\x20group\x20layout','wheel','atlasTextures','coordinateSystem','scene','sort','buffer','round','lockPreview','encodeVolumePass','frameIndex','updateSlice','Volume\x20chunk\x20request\x20was\x20aborted.\x20体积块请求已取消。','gap','\x20无效。','display','brickDepth','coreSampleCount','onLimitReached','isNaN','volume\x20brick\x20reusable\x20upload\x20staging','uploadBrick','height','createComputePipeline','20xhTNfP','STORAGE','sqrt','axisDefinitions','bindSliceInteraction','volume\x20scene\x20frame','residentBySlotIndex','includes','slotCountZ','limits','depth32float','renderDirty','transferBindGroupLayout','resources','watchDeviceLost','Volume\x20timeIndex\x20is\x20out\x20of\x20range:\x20','submittedFrameCount','one-minus-src-alpha','fovYDegrees','setSource','Volume\x20color\x20and\x20opacity\x20stops\x20cannot\x20be\x20empty.\x20体积颜色和透明度色标不能为空。','createLayout','Scene\x20mesh\x20','main','float32x4','bindSliceState','tan','createBindGroupLayout','BYTES_PER_ELEMENT','\x20必须是正整数。','hideAllMarkers','slices','eventDisposers','aria-label','latitudeRadians','Volume\x20X\x20axis','encodePreparedBrickUpload','WebGPU\x20transfer\x20resources\x20are\x20unavailable.\x20WebGPU\x20传递函数资源不可用。','showDebugGeometry','bgra8unorm','volume\x20atlas\x20clear\x20pass','volume-slice-preview','resolve','pointer','path','unmap','perspective','axisHysteresis','scheduleBricks','onSliceError','WebGPU\x20volume\x20format\x20is\x20not\x20initialized.\x20WebGPU\x20体积格式尚未初始化。','left','value','managed','profiles',',\x20count=','generation','opacityBuffer','\x20轴必须包含两个不同的有限端点。','lost','valuesEqual','clearLockedSlices','webgpu','pixelRatioCap','brickWidth','previousContainerPosition','WebGPU\x20profile\x20resources\x20are\x20unavailable.\x20WebGPU\x20剖面资源不可用。','textContent','resourceRebuildCount','prepareBrickUpload','slotIndex','type','listeners','colorMode','less','viewportHeight','startX','depth','geometryBindGroup','verticalScale','high-performance','vertices','flushSliceState','sliceResources','xCount','positionMarker','ready','Volume\x20Y\x20axis','getTransferResources','skippedCells','153241MjDmVo','colorInputs','WebGPU\x20volume\x20atlas\x20is\x20not\x20configured.\x20WebGPU\x20体积图集尚未配置。','getSceneBindGroupLayout','volume\x20brick\x20atlas\x20','slotCount','2422984kzpxGr','revision','semiMajorAxisScaled','remove','WebGPU\x20is\x20required\x20for\x20the\x20volume\x20scene\x20but\x20is\x20unavailable.\x20体积场景需要\x20WebGPU,但当前环境不可用。','acquireSlot','opacity','color','camera','WebGPU\x20scene\x20attachments\x20are\x20unavailable.\x20WebGPU\x20场景附件不可用。','longitudeRadians','getProfileResources','name','uploadGeneration','setBindGroup','bindGroup','mapAsync','activeInteractions','setAttribute','toFixed','countY','colorStopCount','width','sceneBindGroupLayout','cameraState','capacity','volumeCamera','AbortError','context','parseInt','heights','Volume\x20timeCount','reject','volume\x20scene\x20mesh\x20shader','Volume\x20source\x20must\x20provide\x20readChunk().\x20体积数据源必须提供\x20readChunk()。','getAxisResources','drawSlices','far','2037658Ondxzh','depthTexture','previousAxis','rejectPendingBrickUploads','autoQuality','aspect','modelMatrix','bufferOffset','relative','nextId','entries','scheduleUploadPump','chunk','不支持的\x20hex\x20颜色格式:\x20','frameAvailableCallback','onSlicesChange','lockSlice','interactionElement','startsWith','releaseGpuResources','不支持的\x20rgb\x20颜色格式:\x20','snapshot','volume\x20brick\x20page\x20table','beginRenderPass','syncLockedMarkers','getSliceBindGroupLayout','getBindGroupLayout','interactionStepScale','READ','toolMode','keys','flex','删除切面','pageTableValues','startY','getStepLength','相机裁剪距离必须满足\x200\x20<=\x20near\x20<\x20far。','handlePointerLeave','atlasIndex','cacheBrickUpload','pointermove','sliceInteraction','uploadedBrickCount','volume\x20atlas\x20clear\x20bind\x20group','zoomSpeed','pageTableBuffer','pan','requestAdapter','pushErrorScope','button','near','hitRadius','22CTwySW','setFrameAvailableCallback','floor','geographicTransform','\x20position\x20must\x20be\x20normalized\x20to\x20zero\x20through\x20one.\x20体积切面位置必须归一化到零至一。','logicalBrickCount','memoryLimitBytes','rebuildProfiles','enqueueBrickUpload','COPY_DST','axisResources','onInteractionEnd','vertexMain','WebGPU\x20scene\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20场景绑定布局不可用。','formatPosition','desiredKeys','volume-bounds','volume\x20atlas\x20clear','recordFrameInterval','Volume\x20opacity\x20must\x20be\x20within\x20[0,\x201].\x20体积透明度必须位于\x20[0,\x201]。','delete','getDevice','writeParams','logicalIndex','axisHysteresisPixels','volume\x20atlas\x20clear\x20shader','maximumDistance','getCanvas','WebGPU\x20volume\x20frame\x20capture\x20failed:\x20','descriptors','find','nowrap','inherit','depthView','destroyBuffers','TEXTURE_BINDING','15jVIYZF','resize','configure','createValues','bytesPerRow','getContext','upload','drawMeshes','WebGPU\x20volume\x20canvas\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20Canvas\x20尚未初始化。','\x20必须是大于\x200\x20的有限数。','whiteSpace','getVolumeParamsBuffer','clientX','unsubscribe','topology','colorStops','volume\x20geometry\x20bind\x20group\x20layout','WebGPU\x20volume\x20renderer\x20is\x20not\x20ready\x20for\x20frame\x20capture.\x20WebGPU\x20体积渲染器尚不能读取帧。','1170504IodYfd','不支持的颜色格式:\x20','volumeMetadata','initialize','RGB\x20颜色通道必须在\x200\x20~\x20255\x20之间','ceil','getInteractionKind','some','external','maxZ','finish','sceneDepthView','uniform','cos','valueScale','xAxis','.\x20体积分块\x20','setProfiles','container','createElement','viewportWidth','trim','WebGPU\x20volume\x20device\x20was\x20lost:\x20','geographic-wgs84','beginInteraction','minimumDistance','encodeOverlayPass','gpu','createLockedMarker','values','getEffectiveRenderScale',',\x20size=','hasPointerCapture','maxX','WebGPU\x20volume\x20atlas\x20texture\x20is\x20unavailable.\x20WebGPU\x20体积图集纹理不可用。','COPY_SRC','axis','activePointer','next','memoryHardLimitBytes','createCommandEncoder','pointerup','idle','draw','always-visible','message','yAxis','start','createTexture','overlayTrianglePipeline','sceneParamsBuffer','volumePipeline','options','from','colorBuffer','FRAGMENT','volume\x20slice\x20shader','countX','densityScale','atlasLayout','\x20values\x20but\x20received\x20','error','WebGPU\x20volume\x20bricks\x20require\x20halo\x201.\x20WebGPU\x20体积砖块要求\x20halo\x20为\x201。','setToolMode','bindControls','adapter','sceneTrianglePipeline','contextmenu','Volume\x20revision\x20must\x20be\x20a\x20non-negative\x20integer.\x20体积\x20revision\x20必须是非负整数。','div','WebGPU\x20volume\x20scene\x20dimensions\x20must\x20be\x20positive\x20integers.\x20WebGPU\x20体积场景尺寸必须是正整数。','1037772FDflNG','volumeDimFactor\x20必须位于\x200\x20到\x201。','maxLockedSlices','volumeBindGroupLayout','applyHit','transferResources','setSlices','clientY','cursor','setTransfer','uploadBatchCount','lastTimingFrameTimestamp','zAxis','metadata','removeEventListener','createShaderModule','update','setPipeline','touchBricks','createProjectionMatrix','切面轴采样数必须是正整数。','\x20with\x20one\x20sample\x20must\x20use\x20equal\x20endpoints.\x20','volumeParamsBuffer','相机裁剪距离必须满足\x200\x20<\x20near\x20<\x20far。','overlaySlicePipeline','atlasViews','shape','sourceYStart','.\x20WebGPU\x20体积设备已丢失。','absolute','opacityStopCount','\x20的\x20values\x20长度与\x20path、heights\x20不匹配。','signal','无法归一化长度为零的三维向量。','noData','\x20is\x20invalid:\x20','lockedSlices','sourceYCount','切面位置必须是有限数。','key','\x20count','normalizationMeters','maximum','UNIFORM','overlayLinePipeline','updatePreview','maxY','slice','\x20只有一个采样点时端点必须相等。','slotCountX','auto','WebGPU\x20volume\x20page\x20table\x20exceeds\x20the\x20configured\x20memory\x20limit.\x20WebGPU\x20体积页表超过显存限制。','splice','volume\x20scene\x20geometry\x20pass','configureSource','WebGPU\x20scene\x20params\x20buffer\x20is\x20unavailable.\x20WebGPU\x20场景参数\x20Buffer\x20不可用。','deltaY','\x20必须是正有限数值。','xStart','\x20plate\x20color\x20must\x20use\x20values\x20from\x20zero\x20through\x20one.\x20体积切面底板颜色必须位于零至一。','handlePointerMove','isInteracting','loadedKeys','WebGPU\x20axis\x20resources\x20are\x20unavailable.\x20WebGPU\x20轴线资源不可用。','WebGPU\x20volume\x20params\x20buffer\x20is\x20unavailable.\x20WebGPU\x20体积参数\x20Buffer\x20不可用。','\x20must\x20be\x20a\x20positive\x20integer.\x20','endInteraction','captureFrame','navigationMode','canvas','pointerleave','renderer','subarray','markerOverlay','updateTransferResources','byteLength','quality','透视相机参数无效。','volume\x20frame\x20readback','dolly','kind','findIndex','矩阵不可逆。','queue','volume\x20brick\x20upload\x20batch\x20flush','maximumUploadBatchBytes','top','volume\x20color\x20stop\x20colors','lifecycleState','replace','count','set','residentByLogicalIndex','getFormat','lastFrameTimeMilliseconds','onSubmittedWorkDone','verticalScale\x20must\x20be\x20a\x20positive\x20finite\x20value.\x20verticalScale\x20必须是大于\x200\x20的有限数。','0\x202px','fill','subscribe','timeIndex','font','inverseModelMatrix','cachedBricks','baseModelMatrix','WebGPU\x20volume\x20atlas\x20resources\x20are\x20incomplete.\x20WebGPU\x20体积图集资源不完整。','border','borderRadius','mode','centerEcef','fragmentMain','sin','WebGPU\x20slice\x20resources\x20are\x20unavailable.\x20WebGPU\x20切面资源不可用。','volume\x20raymarch\x20pass','12px/1.2\x20sans-serif','WebGPU\x20volume\x20device\x20restoration\x20failed.\x20WebGPU\x20体积设备恢复失败。','4px','clipMaximum','setAxes','indices','切面轴端点必须是有限数。','Failed\x20to\x20create\x20WebGPU\x20volume\x20pipelines:\x20','Height\x20/\x20高度','createPipelineLayout','isFinite','\x20noData\x20必须是有限数值或\x20NaN。','renderScale','preview','个色标范围不能是NaN','createRenderPipeline','popErrorScope','catch','wgs84','position','powerPreference','matrices','pendingSliceSnapshot','getUploadStagingBuffer','相机宽高比必须大于\x200。','countZ','initializationGeneration','max','lastUsedFrame','load','source','brickScheduleDirty','now','panSpeed','Geographic\x20WGS84\x20volume\x20scenes\x20manage\x20their\x20own\x20model\x20transform.\x20WGS84\x20地理体积场景自行管理模型变换。','\x20with\x20multiple\x20samples\x20must\x20have\x20a\x20non-zero\x20step.\x20','orbit','min','setCamera','volume-axes','updateAutoQuality','writeVolumeParams','pointerdown','processBrickUploads','clientWidth','forEach','volume\x20color\x20stop\x20values','sliceState','getAtlas','encodeScenePass','\x20的\x20path\x20包含非有限坐标。','addEventListener','volume\x20opacity\x20stop\x20values','filter','volume\x20slice\x20','A\x20destroyed\x20volume\x20scene\x20cannot\x20capture\x20a\x20frame.\x20已销毁的体积场景不能读取帧。','smooth','WRITE','backend','setState','submit','target','clearAtlasTexture','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','getCurrentTexture','brickScheduleCount','element','none','\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','handlePointerUp','createResource','range','halo','transferBindGroup','step','volume\x20raymarch\x20shader','getFrame','loadBrick','handleWindowPointerMove','WebGPU\x20volume\x20context\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20context\x20尚未初始化。','多采样点切面轴的起止值不能相等。','A\x20destroyed\x20WebGPU\x20volume\x20renderer\x20cannot\x20be\x20initialized\x20again.\x20已销毁的\x20WebGPU\x20体积渲染器不能再次初始化。','inverseViewProjection','shift','sceneBindGroup','MAP_READ'];_0xa78c=function(){return _0x568040;};return _0xa78c();}const axisEndpoints=_0xa29e51=>_0xa29e51==='x'?[[0x0,0x0,0x0],[0x1,0x0,0x0]]:_0xa29e51==='y'?[[0x0,0x0,0x0],[0x0,0x1,0x0]]:[[0x0,0x0,0x0],[0x0,0x0,0x1]],projectAxis=(_0x1cbf86,_0x58d289)=>{const _0x5da280=_0x2859cf;let _0x18f777=multiplyMatrices(_0x58d289[_0x5da280(0x392)],_0x58d289['modelMatrix']),[_0x5ecb98,_0x24ef79]=axisEndpoints(_0x1cbf86),_0x2afd30=projectPointToViewport(_0x18f777,_0x5ecb98,_0x58d289[_0x5da280(0x1c4)],_0x58d289[_0x5da280(0x42b)]),_0x42ea35=projectPointToViewport(_0x18f777,_0x24ef79,_0x58d289[_0x5da280(0x1c4)],_0x58d289[_0x5da280(0x42b)]);return!_0x2afd30||!_0x42ea35?null:{'axis':_0x1cbf86,'startX':_0x2afd30[0x0],'startY':_0x2afd30[0x1],'endX':_0x42ea35[0x0],'endY':_0x42ea35[0x1]};},hitProjectedAxis=(_0x1c9613,_0xfcba10,_0x2a2f4a)=>{const _0x572e69=_0x2859cf;let _0x29202f=_0x1c9613[_0x572e69(0x2cc)]-_0x1c9613['startX'],_0x428ba6=_0x1c9613[_0x572e69(0x3c3)]-_0x1c9613[_0x572e69(0x488)],_0x388c45=_0x29202f*_0x29202f+_0x428ba6*_0x428ba6,_0x17f40a=_0x388c45===0x0?0x0:((_0xfcba10-_0x1c9613[_0x572e69(0x42c)])*_0x29202f+(_0x2a2f4a-_0x1c9613[_0x572e69(0x488)])*_0x428ba6)/_0x388c45,_0x49d513=Math[_0x572e69(0x28e)](0x1,Math[_0x572e69(0x284)](0x0,_0x17f40a)),_0x595ddb=_0x1c9613[_0x572e69(0x42c)]+_0x49d513*_0x29202f,_0xb01cc=_0x1c9613[_0x572e69(0x488)]+_0x49d513*_0x428ba6;return{'axis':_0x1c9613[_0x572e69(0x1d4)],'distance':Math[_0x572e69(0x348)](_0xfcba10-_0x595ddb,_0x2a2f4a-_0xb01cc),'normalizedPosition':_0x49d513};},eventViewportPoint=(_0x470146,_0x37e3f2,_0x4ab136)=>{const _0x11a52e=_0x2859cf;let _0xc267c=_0x37e3f2[_0x11a52e(0x36a)]();return[_0xc267c[_0x11a52e(0x456)]===0x0?0x0:(_0x470146[_0x11a52e(0x1aa)]-_0xc267c[_0x11a52e(0x413)])*_0x4ab136['viewportWidth']/_0xc267c[_0x11a52e(0x456)],_0xc267c['height']===0x0?0x0:(_0x470146[_0x11a52e(0x1fe)]-_0xc267c[_0x11a52e(0x24d)])*_0x4ab136[_0x11a52e(0x42b)]/_0xc267c[_0x11a52e(0x3de)]];},realAxisPosition=(_0x4c95ad,_0xe7ec9a,_0x33484f)=>{const _0x343aeb=_0x2859cf;let _0xa7220e=_0x4c95ad[_0x343aeb(0x3e3)];return normalizedToVolumeAxisValue(_0xe7ec9a==='x'?_0xa7220e[_0x343aeb(0x1bf)]:_0xe7ec9a==='y'?_0xa7220e[_0x343aeb(0x1de)]:_0xa7220e[_0x343aeb(0x203)],_0x33484f);};var SliceInteractionController=class{[_0x2859cf(0x2ab)];[_0x2859cf(0x2f6)];['getFrame'];[_0x2859cf(0x39f)];[_0x2859cf(0x40f)];[_0x2859cf(0x310)];['onInteractionEnd'];[_0x2859cf(0x1d5)]=null;[_0x2859cf(0x468)]=null;['initialized']=!0x1;constructor(_0x745a16,_0x17c96a,_0x632545,_0x204ffd={}){const _0x20185b=_0x2859cf;this[_0x20185b(0x2ab)]=_0x745a16,this['state']=_0x17c96a,this[_0x20185b(0x2b5)]=_0x632545,this[_0x20185b(0x39f)]=_0x204ffd['hitTolerancePixels']??0xa,this[_0x20185b(0x40f)]=_0x204ffd[_0x20185b(0x192)]??0x4,this['onInteractionStart']=_0x204ffd[_0x20185b(0x310)],this['onInteractionEnd']=_0x204ffd[_0x20185b(0x185)];}[_0x2859cf(0x1b3)](){const _0x43d1c2=_0x2859cf;this[_0x43d1c2(0x31d)]||(this['initialized']=!0x0,this[_0x43d1c2(0x2ab)][_0x43d1c2(0x29c)](_0x43d1c2(0x293),this[_0x43d1c2(0x2d8)],!0x0),this[_0x43d1c2(0x2ab)]['addEventListener'](_0x43d1c2(0x48e),this[_0x43d1c2(0x233)],!0x0),this[_0x43d1c2(0x2ab)][_0x43d1c2(0x29c)](_0x43d1c2(0x23d),this[_0x43d1c2(0x48b)],!0x0),window[_0x43d1c2(0x29c)](_0x43d1c2(0x48e),this[_0x43d1c2(0x2b7)],!0x0),window[_0x43d1c2(0x29c)](_0x43d1c2(0x1d9),this['handlePointerUp'],!0x0),window[_0x43d1c2(0x29c)]('pointercancel',this[_0x43d1c2(0x2ae)],!0x0));}[_0x2859cf(0x3af)](_0x1df784,_0x4beb13){const _0x1f5c5e=_0x2859cf;let _0x362e99=this[_0x1f5c5e(0x2f6)][_0x1f5c5e(0x21b)]['find'](_0x579c4a=>_0x579c4a['id']===_0x1df784);_0x362e99&&(this[_0x1f5c5e(0x1d5)]={'kind':_0x1f5c5e(0x38a),'axis':_0x362e99[_0x1f5c5e(0x1d4)],'pointerId':_0x4beb13[_0x1f5c5e(0x38f)],'sliceId':_0x1df784,'startX':_0x4beb13[_0x1f5c5e(0x1aa)],'startY':_0x4beb13[_0x1f5c5e(0x1fe)],'moved':!0x1},this['onInteractionStart']?.(),_0x4beb13['preventDefault'](),_0x4beb13[_0x1f5c5e(0x3a3)]());}[_0x2859cf(0x355)](){const _0x376fa2=_0x2859cf;this[_0x376fa2(0x31d)]&&(this['initialized']=!0x1,this['element'][_0x376fa2(0x205)](_0x376fa2(0x293),this[_0x376fa2(0x2d8)],!0x0),this[_0x376fa2(0x2ab)][_0x376fa2(0x205)]('pointermove',this[_0x376fa2(0x233)],!0x0),this[_0x376fa2(0x2ab)][_0x376fa2(0x205)](_0x376fa2(0x23d),this['handlePointerLeave'],!0x0),window[_0x376fa2(0x205)](_0x376fa2(0x48e),this[_0x376fa2(0x2b7)],!0x0),window[_0x376fa2(0x205)](_0x376fa2(0x1d9),this[_0x376fa2(0x2ae)],!0x0),window[_0x376fa2(0x205)](_0x376fa2(0x2d0),this[_0x376fa2(0x2ae)],!0x0),this[_0x376fa2(0x1d5)]&&this['onInteractionEnd']?.(),this[_0x376fa2(0x1d5)]=null,this['previousAxis']=null,this[_0x376fa2(0x2f6)]['clearPreview']());}['findAxisHit'](_0x33979a,_0x3d5d13){const _0x808d7=_0x2859cf;let _0xb76f62=this[_0x808d7(0x2b5)]();if(!_0xb76f62)return null;let [_0x181752,_0x3ac98b]=eventViewportPoint(_0x33979a,this[_0x808d7(0x2ab)],_0xb76f62),_0x3589ba=this[_0x808d7(0x2f6)]['toolMode'];if(_0x3589ba===null)return null;let _0x44abc8=(_0x3d5d13?[_0x3d5d13]:_0x3589ba==='auto'?['x','y','z']:[_0x3589ba])['map'](_0x5dc729=>projectAxis(_0x5dc729,_0xb76f62))[_0x808d7(0x29e)](_0x2bc841=>_0x2bc841!==null)[_0x808d7(0x3c0)](_0x34bada=>hitProjectedAxis(_0x34bada,_0x181752,_0x3ac98b));if(_0x44abc8[_0x808d7(0x326)]===0x0)return null;_0x44abc8[_0x808d7(0x3cd)]((_0x4298fb,_0x1297d4)=>_0x4298fb[_0x808d7(0x2c8)]-_0x1297d4[_0x808d7(0x2c8)]);let _0x27e583=_0x44abc8[0x0];if(!_0x3d5d13&&this['previousAxis']){let _0x4624cd=_0x44abc8[_0x808d7(0x198)](_0x5c73d6=>_0x5c73d6[_0x808d7(0x1d4)]===this[_0x808d7(0x468)]);_0x4624cd&&_0x4624cd[_0x808d7(0x2c8)]<=_0x27e583[_0x808d7(0x2c8)]+this[_0x808d7(0x40f)]&&(_0x27e583=_0x4624cd);}return!_0x3d5d13&&_0x27e583[_0x808d7(0x2c8)]>this['hitTolerance']?null:_0x27e583;}[_0x2859cf(0x1fb)](_0x5c07a2,_0x26228d){const _0x55b467=_0x2859cf;let _0x5c3768=realAxisPosition(this[_0x55b467(0x2f6)],_0x5c07a2[_0x55b467(0x1d4)],_0x5c07a2['normalizedPosition']);_0x26228d?this['state'][_0x55b467(0x39d)](_0x26228d,_0x5c3768):this[_0x55b467(0x2f6)][_0x55b467(0x224)](_0x5c07a2[_0x55b467(0x1d4)],_0x5c3768),this[_0x55b467(0x468)]=_0x5c07a2[_0x55b467(0x1d4)];}['handlePointerDown']=_0x49e367=>{const _0x29cbbf=_0x2859cf;if(_0x49e367[_0x29cbbf(0x497)]!==0x0||this[_0x29cbbf(0x1d5)])return;let _0xc04e75=this['findAxisHit'](_0x49e367);_0xc04e75&&(this['applyHit'](_0xc04e75),this['activePointer']={'kind':_0x29cbbf(0x276),'axis':_0xc04e75[_0x29cbbf(0x1d4)],'pointerId':_0x49e367[_0x29cbbf(0x38f)],'startX':_0x49e367[_0x29cbbf(0x1aa)],'startY':_0x49e367[_0x29cbbf(0x1fe)],'moved':!0x1},this[_0x29cbbf(0x310)]?.(),this[_0x29cbbf(0x2ab)]['setPointerCapture']?.(_0x49e367['pointerId']),_0x49e367['preventDefault'](),_0x49e367[_0x29cbbf(0x3a3)]());};[_0x2859cf(0x233)]=_0x8877fb=>{const _0x52a608=_0x2859cf;if(this[_0x52a608(0x1d5)])return;let _0x5e2d56=this['findAxisHit'](_0x8877fb);if(!_0x5e2d56){this[_0x52a608(0x468)]=null,this[_0x52a608(0x2f6)][_0x52a608(0x332)]();return;}this[_0x52a608(0x1fb)](_0x5e2d56);};[_0x2859cf(0x2b7)]=_0x3cf492=>{const _0x3c46ae=_0x2859cf;let _0x470777=this['activePointer'];if(!_0x470777||_0x470777[_0x3c46ae(0x38f)]!==_0x3cf492['pointerId'])return;let _0x18b615=this[_0x3c46ae(0x356)](_0x3cf492,_0x470777[_0x3c46ae(0x1d4)]);_0x18b615&&(Math[_0x3c46ae(0x348)](_0x3cf492[_0x3c46ae(0x1aa)]-_0x470777['startX'],_0x3cf492['clientY']-_0x470777['startY'])>0x4&&(_0x470777[_0x3c46ae(0x2d2)]=!0x0),this['applyHit'](_0x18b615,_0x470777[_0x3c46ae(0x2cf)]),_0x3cf492[_0x3c46ae(0x3bd)](),_0x3cf492[_0x3c46ae(0x3a3)]());};[_0x2859cf(0x2ae)]=_0x505abd=>{const _0x13a3ea=_0x2859cf;let _0x48a949=this[_0x13a3ea(0x1d5)];!_0x48a949||_0x48a949[_0x13a3ea(0x38f)]!==_0x505abd[_0x13a3ea(0x38f)]||(_0x48a949[_0x13a3ea(0x247)]===_0x13a3ea(0x276)&&!_0x48a949['moved']&&this[_0x13a3ea(0x2f6)][_0x13a3ea(0x3d0)](),this[_0x13a3ea(0x2ab)][_0x13a3ea(0x1d0)]?.(_0x505abd[_0x13a3ea(0x38f)])&&this['element']['releasePointerCapture'](_0x505abd[_0x13a3ea(0x38f)]),this[_0x13a3ea(0x1d5)]=null,this[_0x13a3ea(0x185)]?.(),_0x505abd[_0x13a3ea(0x3bd)](),_0x505abd['stopPropagation']());};[_0x2859cf(0x48b)]=()=>{const _0x408391=_0x2859cf;this['activePointer']||this[_0x408391(0x2f6)][_0x408391(0x332)]();};};const axisLabel=_0x563693=>_0x563693[_0x2859cf(0x3a6)](),defaultFormatPosition=(_0x2fdaec,_0x4627e8)=>axisLabel(_0x2fdaec)+'\x20'+Number(_0x4627e8[_0x2859cf(0x453)](0x4)),getAxisDefinition=(_0x5e349b,_0x9a683f)=>{const _0x3fa108=_0x2859cf;let _0x3ab706=_0x5e349b[_0x3fa108(0x3e3)];return _0x9a683f==='x'?_0x3ab706[_0x3fa108(0x1bf)]:_0x9a683f==='y'?_0x3ab706[_0x3fa108(0x1de)]:_0x3ab706[_0x3fa108(0x203)];},markerModelPoint=(_0x24e88e,_0x2ee7bc)=>{const _0x2588e4=_0x2859cf;let _0xb98f8a=volumeAxisValueToNormalized(getAxisDefinition(_0x24e88e,_0x2ee7bc[_0x2588e4(0x1d4)]),_0x2ee7bc['position']);return _0x2ee7bc['axis']==='x'?[_0xb98f8a,0x0,0x0]:_0x2ee7bc['axis']==='y'?[0x0,_0xb98f8a,0x0]:[0x0,0x0,_0xb98f8a];},applyMarkerBaseStyle=_0x210a0e=>{const _0x5bcc73=_0x2859cf;_0x210a0e[_0x5bcc73(0x3a2)][_0x5bcc73(0x27c)]=_0x5bcc73(0x214),_0x210a0e[_0x5bcc73(0x3a2)][_0x5bcc73(0x320)]='1',_0x210a0e[_0x5bcc73(0x3a2)][_0x5bcc73(0x3d7)]=_0x5bcc73(0x485),_0x210a0e[_0x5bcc73(0x3a2)]['alignItems']=_0x5bcc73(0x361),_0x210a0e[_0x5bcc73(0x3a2)][_0x5bcc73(0x3d5)]=_0x5bcc73(0x26b),_0x210a0e[_0x5bcc73(0x3a2)][_0x5bcc73(0x379)]=_0x5bcc73(0x30e),_0x210a0e[_0x5bcc73(0x3a2)][_0x5bcc73(0x261)]=_0x5bcc73(0x316),_0x210a0e[_0x5bcc73(0x3a2)][_0x5bcc73(0x262)]=_0x5bcc73(0x26b),_0x210a0e[_0x5bcc73(0x3a2)]['color']=_0x5bcc73(0x3a0),_0x210a0e[_0x5bcc73(0x3a2)][_0x5bcc73(0x30c)]=_0x5bcc73(0x350),_0x210a0e[_0x5bcc73(0x3a2)][_0x5bcc73(0x25c)]=_0x5bcc73(0x269),_0x210a0e[_0x5bcc73(0x3a2)][_0x5bcc73(0x1a8)]=_0x5bcc73(0x199),_0x210a0e[_0x5bcc73(0x3a2)][_0x5bcc73(0x2f9)]=_0x5bcc73(0x347),_0x210a0e[_0x5bcc73(0x3a2)]['userSelect']='none',_0x210a0e[_0x5bcc73(0x3a2)][_0x5bcc73(0x3c2)]='none';},createDeleteButton=()=>{const _0x3da012=_0x2859cf;let _0x2d71e3=document[_0x3da012(0x1c3)](_0x3da012(0x497));return _0x2d71e3[_0x3da012(0x427)]=_0x3da012(0x497),_0x2d71e3[_0x3da012(0x423)]='×',_0x2d71e3[_0x3da012(0x452)](_0x3da012(0x401),_0x3da012(0x486)),_0x2d71e3[_0x3da012(0x3a2)][_0x3da012(0x379)]=_0x3da012(0x258),_0x2d71e3[_0x3da012(0x3a2)]['border']='0',_0x2d71e3[_0x3da012(0x3a2)][_0x3da012(0x447)]=_0x3da012(0x19a),_0x2d71e3[_0x3da012(0x3a2)]['background']=_0x3da012(0x315),_0x2d71e3['style'][_0x3da012(0x1ff)]=_0x3da012(0x40b),_0x2d71e3;};var SliceMarkerOverlay=class{[_0x2859cf(0x1c2)];[_0x2859cf(0x2f6)];[_0x2859cf(0x2b5)];[_0x2859cf(0x385)];[_0x2859cf(0x188)];[_0x2859cf(0x2c1)]=new Map();[_0x2859cf(0x421)];[_0x2859cf(0x1ab)];[_0x2859cf(0x300)]=null;constructor(_0x4b2773,_0x33553f,_0x41a166,_0x4fa536={}){const _0x2c315b=_0x2859cf;this['container']=_0x4b2773,this['state']=_0x33553f,this[_0x2c315b(0x2b5)]=_0x41a166,this[_0x2c315b(0x385)]=_0x4fa536[_0x2c315b(0x385)],this[_0x2c315b(0x188)]=_0x4fa536['formatPosition']??defaultFormatPosition,this[_0x2c315b(0x421)]=_0x4b2773[_0x2c315b(0x3a2)][_0x2c315b(0x27c)],getComputedStyle(_0x4b2773)[_0x2c315b(0x27c)]===_0x2c315b(0x2c9)&&(_0x4b2773['style'][_0x2c315b(0x27c)]=_0x2c315b(0x46e)),this[_0x2c315b(0x1ab)]=_0x33553f[_0x2c315b(0x25a)](()=>this[_0x2c315b(0x207)]());}['update'](){const _0x49d3f2=_0x2859cf;let _0x47f21e=this['state'][_0x49d3f2(0x47b)];this[_0x49d3f2(0x2eb)](_0x47f21e[_0x49d3f2(0x276)]),this[_0x49d3f2(0x47e)](_0x47f21e[_0x49d3f2(0x21b)]);let _0x5a4e7e=this[_0x49d3f2(0x2b5)]();if(!_0x5a4e7e){this[_0x49d3f2(0x3fe)]();return;}_0x47f21e[_0x49d3f2(0x276)]&&this[_0x49d3f2(0x300)]&&this[_0x49d3f2(0x435)](this['previewMarker'],_0x47f21e['preview'],_0x5a4e7e);for(let _0x490889 of _0x47f21e[_0x49d3f2(0x21b)]){let _0x20f114=this[_0x49d3f2(0x2c1)][_0x49d3f2(0x374)](_0x490889['id']);_0x20f114&&this['positionMarker'](_0x20f114,_0x490889,_0x5a4e7e);}}[_0x2859cf(0x355)](){const _0x16cfb1=_0x2859cf;this['unsubscribe'](),this['previewMarker']?.[_0x16cfb1(0x443)](),this[_0x16cfb1(0x300)]=null;for(let _0x5c6b71 of this[_0x16cfb1(0x2c1)][_0x16cfb1(0x1cd)]())_0x5c6b71[_0x16cfb1(0x443)]();this['markers']['clear'](),this[_0x16cfb1(0x1c2)][_0x16cfb1(0x3a2)][_0x16cfb1(0x27c)]=this['previousContainerPosition'];}[_0x2859cf(0x2eb)](_0x1216d4){const _0x260abe=_0x2859cf;if(!_0x1216d4){this['previewMarker']?.[_0x260abe(0x443)](),this[_0x260abe(0x300)]=null;return;}this[_0x260abe(0x300)]||(this[_0x260abe(0x300)]=document[_0x260abe(0x1c3)](_0x260abe(0x1f5)),applyMarkerBaseStyle(this[_0x260abe(0x300)]),this['previewMarker'][_0x260abe(0x3a2)]['pointerEvents']=_0x260abe(0x2ac),this[_0x260abe(0x300)][_0x260abe(0x3a2)][_0x260abe(0x446)]=_0x260abe(0x381),this[_0x260abe(0x1c2)]['append'](this['previewMarker'])),this['previewMarker']['textContent']=this[_0x260abe(0x188)](_0x1216d4[_0x260abe(0x1d4)],_0x1216d4[_0x260abe(0x27c)]);}[_0x2859cf(0x47e)](_0x819838){const _0x459d52=_0x2859cf;let _0x216e7a=new Set(_0x819838['map'](_0x3f0e55=>_0x3f0e55['id']));for(let [_0x1f7c4b,_0x1f00bc]of this[_0x459d52(0x2c1)])_0x216e7a[_0x459d52(0x336)](_0x1f7c4b)||(_0x1f00bc[_0x459d52(0x443)](),this[_0x459d52(0x2c1)][_0x459d52(0x18e)](_0x1f7c4b));for(let _0x258ff4 of _0x819838){let _0x232775=this['markers'][_0x459d52(0x374)](_0x258ff4['id']);_0x232775||(_0x232775=this[_0x459d52(0x1cc)](_0x258ff4['id']),this[_0x459d52(0x2c1)][_0x459d52(0x252)](_0x258ff4['id'],_0x232775),this[_0x459d52(0x1c2)]['append'](_0x232775));let _0x3c3036=_0x232775['firstChild'];_0x3c3036&&(_0x3c3036[_0x459d52(0x423)]=this[_0x459d52(0x188)](_0x258ff4[_0x459d52(0x1d4)],_0x258ff4[_0x459d52(0x27c)]));}}[_0x2859cf(0x1cc)](_0x18b26e){const _0xe1207b=_0x2859cf;let _0x17f709=document[_0xe1207b(0x1c3)]('div');applyMarkerBaseStyle(_0x17f709),_0x17f709[_0xe1207b(0x3a2)]['cursor']='grab',_0x17f709['append'](document['createTextNode'](''));let _0x36e025=createDeleteButton();return _0x36e025[_0xe1207b(0x29c)](_0xe1207b(0x293),_0x58abb0=>_0x58abb0['stopPropagation']()),_0x36e025[_0xe1207b(0x29c)]('click',_0x184a63=>{const _0x1384e2=_0xe1207b;_0x184a63['stopPropagation'](),this[_0x1384e2(0x2f6)]['removeSlice'](_0x18b26e);}),_0x17f709['addEventListener'](_0xe1207b(0x293),_0x4f08e6=>this[_0xe1207b(0x385)]?.[_0xe1207b(0x3af)](_0x18b26e,_0x4f08e6)),_0x17f709[_0xe1207b(0x377)](_0x36e025),_0x17f709;}['positionMarker'](_0x5e0512,_0xb4633,_0xbf6eca){const _0x386b3f=_0x2859cf;let _0x4c93b2=projectPointToViewport(multiplyMatrices(_0xbf6eca[_0x386b3f(0x392)],_0xbf6eca['modelMatrix']),markerModelPoint(this[_0x386b3f(0x2f6)],_0xb4633),_0xbf6eca[_0x386b3f(0x1c4)],_0xbf6eca[_0x386b3f(0x42b)]);if(!_0x4c93b2||_0x4c93b2[0x2]<0x0||_0x4c93b2[0x2]>0x1){_0x5e0512[_0x386b3f(0x3a2)][_0x386b3f(0x3d7)]=_0x386b3f(0x2ac);return;}_0x5e0512[_0x386b3f(0x3a2)]['display']=_0x386b3f(0x485),_0x5e0512[_0x386b3f(0x3a2)][_0x386b3f(0x413)]=_0x4c93b2[0x0]+'px',_0x5e0512['style'][_0x386b3f(0x24d)]=_0x4c93b2[0x1]+'px';}[_0x2859cf(0x3fe)](){const _0x4a4937=_0x2859cf;this['previewMarker']&&(this['previewMarker'][_0x4a4937(0x3a2)][_0x4a4937(0x3d7)]=_0x4a4937(0x2ac));for(let _0x273e46 of this[_0x4a4937(0x2c1)]['values']())_0x273e46[_0x4a4937(0x3a2)][_0x4a4937(0x3d7)]=_0x4a4937(0x2ac);}};const clamp=(_0x144c28,_0x3ccf7e)=>Math[_0x2859cf(0x28e)](_0x3ccf7e-0x1,Math[_0x2859cf(0x284)](0x0,_0x144c28)),createPhysicalBrickValues=(_0x54e598,_0x21c248,_0x15fc25,_0x3379ca)=>{const _0x28316f=_0x2859cf;validateVolumeChunk(_0x54e598,_0x3379ca,_0x15fc25[_0x28316f(0x307)]);let _0x37e130=_0x21c248['width']+_0x21c248[_0x28316f(0x2b1)]*0x2,_0x3c330a=_0x21c248['height']+_0x21c248[_0x28316f(0x2b1)]*0x2,_0x5665a6=_0x21c248[_0x28316f(0x42d)]+_0x21c248[_0x28316f(0x2b1)]*0x2,_0x4f76cb=new Float32Array(_0x37e130*_0x3c330a*_0x5665a6);for(let _0x33266d=0x0;_0x33266d<_0x5665a6;_0x33266d+=0x1){let _0x378dfc=clamp(_0x15fc25[_0x28316f(0x35a)]['sourceYStart']+_0x33266d-_0x21c248[_0x28316f(0x2b1)],_0x54e598[_0x28316f(0x203)][_0x28316f(0x251)])-_0x3379ca[_0x28316f(0x2b0)][_0x28316f(0x212)];for(let _0x520343=0x0;_0x520343<_0x3c330a;_0x520343+=0x1){let _0x2b7879=clamp(_0x15fc25['coreRange'][_0x28316f(0x334)]+_0x520343-_0x21c248[_0x28316f(0x2b1)],_0x54e598['yAxis'][_0x28316f(0x251)])-_0x3379ca[_0x28316f(0x2b0)][_0x28316f(0x334)];for(let _0x3b16bc=0x0;_0x3b16bc<_0x37e130;_0x3b16bc+=0x1){let _0x12d115=clamp(_0x15fc25[_0x28316f(0x35a)][_0x28316f(0x231)]+_0x3b16bc-_0x21c248[_0x28316f(0x2b1)],_0x54e598[_0x28316f(0x1bf)][_0x28316f(0x251)])-_0x3379ca[_0x28316f(0x2b0)][_0x28316f(0x231)];_0x4f76cb[(_0x33266d*_0x3c330a+_0x520343)*_0x37e130+_0x3b16bc]=_0x3379ca[_0x28316f(0x1cd)][(_0x378dfc*_0x3379ca['height']+_0x2b7879)*_0x3379ca[_0x28316f(0x456)]+_0x12d115];}}}return _0x4f76cb;},normalizeColorStops=_0x25add4=>{const _0x4f785f=_0x2859cf;if(_0x25add4[_0x4f785f(0x326)]===0x0)throw Error(_0x4f785f(0x397));return _0x25add4[_0x4f785f(0x3c0)]((_0x1f7184,_0x4ef6bb)=>{const _0x4b8f72=_0x4f785f;if(Number['isNaN'](_0x1f7184['min'])||Number[_0x4b8f72(0x3db)](_0x1f7184[_0x4b8f72(0x284)]))throw TypeError('第'+(_0x4ef6bb+0x1)+_0x4b8f72(0x277));if(_0x1f7184[_0x4b8f72(0x28e)]>=_0x1f7184[_0x4b8f72(0x284)])throw Error('第'+(_0x4ef6bb+0x1)+_0x4b8f72(0x31c));return{'min':_0x1f7184[_0x4b8f72(0x28e)],'max':_0x1f7184[_0x4b8f72(0x284)],'color':parseRasterColor(_0x1f7184['color'])};})[_0x4f785f(0x3cd)]((_0xdba0dd,_0x482157)=>_0xdba0dd[_0x4f785f(0x28e)]-_0x482157[_0x4f785f(0x28e)]);},parseRasterColor=_0x5cec19=>{const _0x5c02c3=_0x2859cf;let _0x3205df=_0x5cec19[_0x5c02c3(0x1c5)]()[_0x5c02c3(0x2cd)]();if(_0x3205df[_0x5c02c3(0x478)]('#'))return parseHexColor(_0x3205df);if(_0x3205df[_0x5c02c3(0x478)]('rgba('))return parseRgbColor(_0x3205df,!0x0);if(_0x3205df['startsWith'](_0x5c02c3(0x2f8)))return parseRgbColor(_0x3205df,!0x1);throw Error(_0x5c02c3(0x1b1)+_0x5cec19);},parseHexColor=_0x5d8dd5=>{const _0x12c3e5=_0x2859cf;if(_0x5d8dd5[_0x12c3e5(0x326)]===0x4)return normalizeRgb(Number[_0x12c3e5(0x45d)](''+_0x5d8dd5[0x1]+_0x5d8dd5[0x1],0x10),Number['parseInt'](''+_0x5d8dd5[0x2]+_0x5d8dd5[0x2],0x10),Number[_0x12c3e5(0x45d)](''+_0x5d8dd5[0x3]+_0x5d8dd5[0x3],0x10),0x1);if(_0x5d8dd5[_0x12c3e5(0x326)]===0x7)return normalizeRgb(Number[_0x12c3e5(0x45d)](_0x5d8dd5[_0x12c3e5(0x226)](0x1,0x3),0x10),Number[_0x12c3e5(0x45d)](_0x5d8dd5[_0x12c3e5(0x226)](0x3,0x5),0x10),Number[_0x12c3e5(0x45d)](_0x5d8dd5[_0x12c3e5(0x226)](0x5,0x7),0x10),0x1);throw Error(_0x12c3e5(0x473)+_0x5d8dd5);},parseRgbColor=(_0xe5775d,_0x4ffc66)=>{const _0x1bbe43=_0x2859cf;let _0x4cf28e=_0xe5775d['match'](/^rgba?\(([^)]+)\)$/);if(!_0x4cf28e)throw Error(_0x1bbe43(0x47a)+_0xe5775d);let _0x566f0d=_0x4cf28e[0x1][_0x1bbe43(0x2e7)](',')[_0x1bbe43(0x3c0)](_0x3be99b=>_0x3be99b[_0x1bbe43(0x1c5)]()),_0x143547=_0x4ffc66?0x4:0x3;if(_0x566f0d[_0x1bbe43(0x326)]!==_0x143547)throw Error(_0x1bbe43(0x37a)+_0xe5775d);return normalizeRgb(Number(_0x566f0d[0x0]),Number(_0x566f0d[0x1]),Number(_0x566f0d[0x2]),_0x4ffc66?Number(_0x566f0d[0x3]):0x1);},normalizeRgb=(_0x3bf12a,_0xa8fa09,_0x46eab6,_0x34f3ad)=>{const _0x2907bd=_0x2859cf;if(!isValidRgbChannel(_0x3bf12a)||!isValidRgbChannel(_0xa8fa09)||!isValidRgbChannel(_0x46eab6))throw Error(_0x2907bd(0x1b4));if(!Number['isFinite'](_0x34f3ad)||_0x34f3ad<0x0||_0x34f3ad>0x1)throw Error(_0x2907bd(0x36f));return[_0x3bf12a/0xff,_0xa8fa09/0xff,_0x46eab6/0xff,_0x34f3ad];},isValidRgbChannel=_0x5e6d75=>Number[_0x2859cf(0x273)](_0x5e6d75)&&_0x5e6d75>=0x0&&_0x5e6d75<=0xff,validateStops=_0x121ee7=>{const _0x4b68c7=_0x2859cf;if(_0x121ee7['length']===0x0)throw Error(_0x4b68c7(0x305));let _0x2c7abb=-0x1/0x0;for(let _0x5cfeaa of _0x121ee7){if(!Number['isFinite'](_0x5cfeaa[_0x4b68c7(0x414)])||_0x5cfeaa['value']<=_0x2c7abb)throw Error(_0x4b68c7(0x359));if(!Number[_0x4b68c7(0x273)](_0x5cfeaa[_0x4b68c7(0x446)])||_0x5cfeaa[_0x4b68c7(0x446)]<0x0||_0x5cfeaa['opacity']>0x1)throw Error(_0x4b68c7(0x18d));_0x2c7abb=_0x5cfeaa[_0x4b68c7(0x414)];}},findTransferInterval=(_0x551f42,_0x5f2246)=>{const _0x237f89=_0x2859cf;if(_0x551f42<=_0x5f2246[0x0])return[0x0,0x0,0x0];for(let _0xbb0d66=0x1;_0xbb0d66<_0x5f2246[_0x237f89(0x326)];_0xbb0d66+=0x1)if(_0x551f42<=_0x5f2246[_0xbb0d66]){let _0x4d67ba=_0x5f2246[_0xbb0d66]-_0x5f2246[_0xbb0d66-0x1];return[_0xbb0d66-0x1,_0xbb0d66,_0x4d67ba===0x0?0x0:Math[_0x237f89(0x28e)](0x1,Math['max'](0x0,(_0x551f42-_0x5f2246[_0xbb0d66-0x1])/_0x4d67ba))];}let _0x54af4c=_0x5f2246[_0x237f89(0x326)]-0x1;return[_0x54af4c,_0x54af4c,0x0];},prepareWebgpuVolumeTransfer=(_0xac6a3c,_0x483c76)=>{validateStops(_0x483c76);let _0x4fc433=normalizeColorStops([..._0xac6a3c]);return{'colorStops':_0x4fc433['flatMap']((_0x239c53,_0x1eaa5c)=>{const _0x1f02c1=_0x1b5d;let _0x2c630b=_0x4fc433[Math['min'](_0x1eaa5c+0x1,_0x4fc433[_0x1f02c1(0x326)]-0x1)][_0x1f02c1(0x447)];return[{'value':_0x239c53['min'],'color':_0x239c53[_0x1f02c1(0x447)]},{'value':_0x239c53[_0x1f02c1(0x284)],'color':_0x2c630b}];}),'opacityStops':_0x483c76['map'](_0x41bae2=>({..._0x41bae2}))};},sampleVolumeTransferColor=(_0x5363d0,_0x1b3649,_0xb9bb74,_0x48bc9a)=>{const _0x46ad4f=_0x2859cf;if(!Number[_0x46ad4f(0x273)](_0x5363d0))return[0x0,0x0,0x0,0x0];let [_0x21cff8,_0x53dbfa,_0x455675]=findTransferInterval(_0x5363d0,_0x1b3649[_0x46ad4f(0x3c0)](_0x26cd64=>_0x26cd64[_0x46ad4f(0x414)])),_0x22e859=_0x1b3649[_0x21cff8],_0x436f56=_0x1b3649[_0x53dbfa],_0x4468f7=_0x48bc9a===_0x46ad4f(0x2b3)?0x0:_0x455675;return[_0x22e859[_0x46ad4f(0x447)][0x0]+(_0x436f56[_0x46ad4f(0x447)][0x0]-_0x22e859['color'][0x0])*_0x4468f7,_0x22e859[_0x46ad4f(0x447)][0x1]+(_0x436f56[_0x46ad4f(0x447)][0x1]-_0x22e859[_0x46ad4f(0x447)][0x1])*_0x4468f7,_0x22e859[_0x46ad4f(0x447)][0x2]+(_0x436f56[_0x46ad4f(0x447)][0x2]-_0x22e859['color'][0x2])*_0x4468f7,(_0x22e859[_0x46ad4f(0x447)][0x3]+(_0x436f56[_0x46ad4f(0x447)][0x3]-_0x22e859['color'][0x3])*_0x4468f7)*_0xb9bb74];},sampleVolumeTransferOpacity=(_0x3b3164,_0x50c79c,_0xa383d0)=>{const _0x476d8a=_0x2859cf;if(!Number[_0x476d8a(0x273)](_0x3b3164))return 0x0;let [_0x56111c,_0x5dc9fb,_0x3bf55d]=findTransferInterval(_0x3b3164,_0x50c79c['map'](_0x57fe9c=>_0x57fe9c[_0x476d8a(0x414)])),_0x865094=_0xa383d0===_0x476d8a(0x2b3)?0x0:_0x3bf55d;return _0x50c79c[_0x56111c][_0x476d8a(0x446)]+(_0x50c79c[_0x5dc9fb][_0x476d8a(0x446)]-_0x50c79c[_0x56111c][_0x476d8a(0x446)])*_0x865094;},DEFAULT_CAMERA={'position':[1.4,1.2,2.1],'target':[0.5,0.5,0.5],'up':[0x0,0x1,0x0],'projection':{'type':_0x2859cf(0x40e),'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=_0x2d9562=>Math['min'](0x1,Math[_0x2859cf(0x284)](0x0,_0x2d9562)),qualityStepLength=_0x1f7ae5=>_0x1f7ae5===_0x2859cf(0x3c4)?0.012:_0x1f7ae5===_0x2859cf(0x243)?0.0025:_0x1f7ae5===_0x2859cf(0x2f1)?0.005:0.006,qualityUploadCount=_0x16341d=>_0x16341d===_0x2859cf(0x3c4)?0x8:_0x16341d===_0x2859cf(0x243)?0x2:0x4,nextAutoQuality=(_0x58152b,_0x163ae3)=>_0x163ae3>0x18?_0x58152b===_0x2859cf(0x243)?_0x2859cf(0x2f1):_0x2859cf(0x3c4):_0x163ae3<0xe?_0x58152b==='performance'?_0x2859cf(0x2f1):'quality':_0x58152b,validatePositiveOption=(_0x4bfa6f,_0x4a8ee4)=>{const _0x3a5ffb=_0x2859cf;if(!Number[_0x3a5ffb(0x273)](_0x4bfa6f)||_0x4bfa6f<=0x0)throw Error(_0x4a8ee4+'\x20must\x20be\x20a\x20positive\x20finite\x20number.\x20'+_0x4a8ee4+_0x3a5ffb(0x1a7));return _0x4bfa6f;},normalizeClipBox=(_0x5ed398,_0x2bdea9)=>{const _0xee479e=_0x2859cf;if(!_0x2bdea9)return{'minimum':[0x0,0x0,0x0],'maximum':[0x1,0x1,0x1]};let _0x42e285=clamp01(volumeAxisValueToNormalized(_0x5ed398[_0xee479e(0x204)][_0xee479e(0x1bf)],_0x2bdea9[_0xee479e(0x3b1)])),_0x2e875d=clamp01(volumeAxisValueToNormalized(_0x5ed398[_0xee479e(0x204)][_0xee479e(0x1bf)],_0x2bdea9[_0xee479e(0x1d1)])),_0x35b46c=clamp01(volumeAxisValueToNormalized(_0x5ed398['metadata'][_0xee479e(0x1de)],_0x2bdea9[_0xee479e(0x31a)])),_0x3d2da8=clamp01(volumeAxisValueToNormalized(_0x5ed398[_0xee479e(0x204)][_0xee479e(0x1de)],_0x2bdea9[_0xee479e(0x225)])),_0x509397=clamp01(volumeAxisValueToNormalized(_0x5ed398[_0xee479e(0x204)][_0xee479e(0x203)],_0x2bdea9[_0xee479e(0x2de)])),_0x5789c6=clamp01(volumeAxisValueToNormalized(_0x5ed398[_0xee479e(0x204)][_0xee479e(0x203)],_0x2bdea9[_0xee479e(0x1b9)]));return{'minimum':[Math[_0xee479e(0x28e)](_0x42e285,_0x2e875d),Math[_0xee479e(0x28e)](_0x35b46c,_0x3d2da8),Math['min'](_0x509397,_0x5789c6)],'maximum':[Math['max'](_0x42e285,_0x2e875d),Math[_0xee479e(0x284)](_0x35b46c,_0x3d2da8),Math[_0xee479e(0x284)](_0x509397,_0x5789c6)]};},createAxesMesh=()=>({'id':_0x2859cf(0x290),'topology':_0x2859cf(0x2d6),'depthMode':'always-visible','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 _0x45251a=_0x2859cf;let _0x15efe5=[0.1,0.53,0.56,0.62],_0xd42dd1=[[0x0,0x0,0x0],[0x1,0x0,0x0],[0x0,0x1,0x0],[0x1,0x1,0x0],[0x0,0x0,0x1],[0x1,0x0,0x1],[0x0,0x1,0x1],[0x1,0x1,0x1]],_0x38ffdc=[[0x0,0x1],[0x0,0x2],[0x1,0x3],[0x2,0x3],[0x4,0x5],[0x4,0x6],[0x5,0x7],[0x6,0x7],[0x0,0x4],[0x1,0x5],[0x2,0x6],[0x3,0x7]],_0x5f3b46=new Float32Array(_0x38ffdc[_0x45251a(0x326)]*0x2*0x7),_0x535e7c=0x0;for(let _0x165788 of _0x38ffdc)for(let _0x3cd854 of _0x165788)_0x5f3b46['set']([..._0xd42dd1[_0x3cd854],..._0x15efe5],_0x535e7c),_0x535e7c+=0x7;return{'id':_0x45251a(0x18a),'topology':'line-list','depthMode':_0x45251a(0x3cc),'vertices':_0x5f3b46};},createProfileSceneMesh=(_0xc26f71,_0x3efe18,_0x307932,_0xb5fb68)=>{const _0x24152d=_0x2859cf;let _0x2bdb9e=new Float32Array(_0xc26f71[_0x24152d(0x26e)][_0x24152d(0x326)]*0x7);for(let _0x22d053=0x0;_0x22d053<_0xc26f71['indices'][_0x24152d(0x326)];_0x22d053+=0x1){let _0x3b44db=_0xc26f71[_0x24152d(0x26e)][_0x22d053],_0x3b8a7b=_0x3b44db*0x3,_0x2245b9=sampleVolumeTransferOpacity(_0xc26f71['values'][_0x3b44db],_0x307932,_0xb5fb68),_0x2c76fd=sampleVolumeTransferColor(_0xc26f71['values'][_0x3b44db],_0x3efe18,_0xc26f71[_0x24152d(0x446)]*_0x2245b9,_0xb5fb68);_0x2bdb9e[_0x24152d(0x252)]([_0xc26f71[_0x24152d(0x38e)][_0x3b8a7b],_0xc26f71[_0x24152d(0x38e)][_0x3b8a7b+0x1],_0xc26f71[_0x24152d(0x38e)][_0x3b8a7b+0x2],_0x2c76fd[0x0]*_0x2c76fd[0x3],_0x2c76fd[0x1]*_0x2c76fd[0x3],_0x2c76fd[0x2]*_0x2c76fd[0x3],_0x2c76fd[0x3]],_0x22d053*0x7);}return{'id':_0xc26f71['id'],'topology':_0x24152d(0x2fa),'depthMode':_0xc26f71[_0x24152d(0x341)],'vertices':_0x2bdb9e};},descriptorDistance=(_0x5d26e8,_0x436ad2,_0x541e42)=>{const _0x4a6ef5=_0x2859cf;let _0x25d441=(_0x5d26e8[_0x4a6ef5(0x364)]['x']+0.5)/_0x436ad2[_0x4a6ef5(0x1e9)],_0x6aaa39=(_0x5d26e8['coordinate']['y']+0.5)/_0x436ad2['countY'],_0x3f3b6d=(_0x5d26e8[_0x4a6ef5(0x364)]['z']+0.5)/_0x436ad2[_0x4a6ef5(0x282)];return Math['hypot'](_0x25d441-_0x541e42['position'][0x0],_0x6aaa39-_0x541e42[_0x4a6ef5(0x27c)][0x1],_0x3f3b6d-_0x541e42['position'][0x2]);},descriptorLogicalIndex=(_0x3e3aac,_0x2b8942)=>(_0x3e3aac['coordinate']['z']*_0x2b8942['countY']+_0x3e3aac[_0x2859cf(0x364)]['y'])*_0x2b8942[_0x2859cf(0x1e9)]+_0x3e3aac[_0x2859cf(0x364)]['x'],descriptorContainsSlice=(_0x25fd87,_0x573a06,_0x132253,_0x5df3de)=>{const _0x4ac21f=_0x2859cf;let _0x527cb6=_0x132253==='x'?{'start':_0x25fd87[_0x4ac21f(0x35a)][_0x4ac21f(0x231)],'count':_0x25fd87['coreRange'][_0x4ac21f(0x434)],'size':_0x573a06[_0x4ac21f(0x204)][_0x4ac21f(0x1bf)][_0x4ac21f(0x251)]}:_0x132253==='y'?{'start':_0x25fd87['coreRange'][_0x4ac21f(0x334)],'count':_0x25fd87[_0x4ac21f(0x35a)][_0x4ac21f(0x304)],'size':_0x573a06[_0x4ac21f(0x204)]['yAxis'][_0x4ac21f(0x251)]}:{'start':_0x25fd87[_0x4ac21f(0x35a)]['sourceYStart'],'count':_0x25fd87[_0x4ac21f(0x35a)][_0x4ac21f(0x21c)],'size':_0x573a06[_0x4ac21f(0x204)][_0x4ac21f(0x203)]['count']};return _0x5df3de>=_0x527cb6[_0x4ac21f(0x1df)]/_0x527cb6[_0x4ac21f(0x376)]&&_0x5df3de<=(_0x527cb6[_0x4ac21f(0x1df)]+_0x527cb6['count'])/_0x527cb6['size'];},descriptorContainsProfile=(_0x125e1a,_0x335ff4,_0xdb559c)=>{const _0x29479f=_0x2859cf;let _0x38de63=_0x125e1a[_0x29479f(0x35a)]['xStart']/_0x335ff4[_0x29479f(0x204)]['xAxis'][_0x29479f(0x251)],_0x50b344=(_0x125e1a[_0x29479f(0x35a)][_0x29479f(0x231)]+_0x125e1a[_0x29479f(0x35a)][_0x29479f(0x434)])/_0x335ff4[_0x29479f(0x204)][_0x29479f(0x1bf)]['count'],_0x3689fe=_0x125e1a[_0x29479f(0x35a)][_0x29479f(0x334)]/_0x335ff4[_0x29479f(0x204)][_0x29479f(0x1de)][_0x29479f(0x251)],_0x4fde3a=(_0x125e1a[_0x29479f(0x35a)][_0x29479f(0x334)]+_0x125e1a[_0x29479f(0x35a)][_0x29479f(0x304)])/_0x335ff4[_0x29479f(0x204)][_0x29479f(0x1de)][_0x29479f(0x251)],_0x421bae=_0x125e1a['coreRange'][_0x29479f(0x212)]/_0x335ff4[_0x29479f(0x204)][_0x29479f(0x203)][_0x29479f(0x251)],_0x9daabd=(_0x125e1a[_0x29479f(0x35a)][_0x29479f(0x212)]+_0x125e1a[_0x29479f(0x35a)][_0x29479f(0x21c)])/_0x335ff4['metadata'][_0x29479f(0x203)][_0x29479f(0x251)];return _0xdb559c[_0x29479f(0x1b7)](_0x51c5d3=>{const _0x5db643=_0x29479f;let _0x511333=volumeAxisValueToNormalized(_0x335ff4[_0x5db643(0x204)][_0x5db643(0x1de)],_0x51c5d3[_0x5db643(0x45e)][0x0]),_0x395c73=volumeAxisValueToNormalized(_0x335ff4[_0x5db643(0x204)][_0x5db643(0x1de)],_0x51c5d3[_0x5db643(0x45e)][_0x51c5d3['heights'][_0x5db643(0x326)]-0x1]);if(Math[_0x5db643(0x284)](_0x511333,_0x395c73)<_0x3689fe||Math[_0x5db643(0x28e)](_0x511333,_0x395c73)>_0x4fde3a)return!0x1;for(let _0x4b189d=0x0;_0x4b189d<_0x51c5d3[_0x5db643(0x40c)]['length'];_0x4b189d+=0x2){let _0x11730c=volumeAxisValueToNormalized(_0x335ff4[_0x5db643(0x204)][_0x5db643(0x1bf)],_0x51c5d3[_0x5db643(0x40c)][_0x4b189d]),_0x3d12a6=volumeAxisValueToNormalized(_0x335ff4[_0x5db643(0x204)][_0x5db643(0x203)],_0x51c5d3[_0x5db643(0x40c)][_0x4b189d+0x1]);if(_0x11730c>=_0x38de63&&_0x11730c<=_0x50b344&&_0x3d12a6>=_0x421bae&&_0x3d12a6<=_0x9daabd)return!0x0;}return!0x1;});},descriptorDemandPriority=(_0x15a37a,_0x5c93b8,_0x57dc85,_0x32beec)=>{const _0x723a4b=_0x2859cf;let _0xf9a029=_0x57dc85[_0x723a4b(0x276)];if(_0xf9a029){let _0x36a455=_0xf9a029[_0x723a4b(0x1d4)]==='x'?_0x5c93b8[_0x723a4b(0x204)][_0x723a4b(0x1bf)]:_0xf9a029[_0x723a4b(0x1d4)]==='y'?_0x5c93b8[_0x723a4b(0x204)][_0x723a4b(0x1de)]:_0x5c93b8[_0x723a4b(0x204)][_0x723a4b(0x203)];if(descriptorContainsSlice(_0x15a37a,_0x5c93b8,_0xf9a029[_0x723a4b(0x1d4)],volumeAxisValueToNormalized(_0x36a455,_0xf9a029[_0x723a4b(0x27c)])))return 0x0;}for(let _0x57284d of _0x57dc85[_0x723a4b(0x21b)]){let _0xc16e36=_0x57284d['axis']==='x'?_0x5c93b8[_0x723a4b(0x204)]['xAxis']:_0x57284d[_0x723a4b(0x1d4)]==='y'?_0x5c93b8[_0x723a4b(0x204)]['yAxis']:_0x5c93b8[_0x723a4b(0x204)][_0x723a4b(0x203)];if(_0x57284d[_0x723a4b(0x31e)]&&descriptorContainsSlice(_0x15a37a,_0x5c93b8,_0x57284d[_0x723a4b(0x1d4)],volumeAxisValueToNormalized(_0xc16e36,_0x57284d[_0x723a4b(0x27c)])))return 0x1;}return descriptorContainsProfile(_0x15a37a,_0x5c93b8,_0x32beec)?0x2:0x3;};var VolumeScene=class VolumeScene{[_0x2859cf(0x2a3)]=_0x2859cf(0x41e);[_0x2859cf(0x23e)];['volumeCamera'];[_0x2859cf(0x23c)];[_0x2859cf(0x3b9)];['interactionElement'];[_0x2859cf(0x400)]=[];[_0x2859cf(0x287)];[_0x2859cf(0x2ea)];[_0x2859cf(0x197)];[_0x2859cf(0x298)];[_0x2859cf(0x1ad)];[_0x2859cf(0x43b)];[_0x2859cf(0x37b)];[_0x2859cf(0x416)]=[];[_0x2859cf(0x25b)];[_0x2859cf(0x2f3)]=0x0;[_0x2859cf(0x235)]=new Set();['pendingKeys']=new Map();['desiredKeys']=new Set();[_0x2859cf(0x369)]=0x0;[_0x2859cf(0x2d3)]=!0x1;[_0x2859cf(0x25f)];[_0x2859cf(0x42f)];[_0x2859cf(0x3cb)];['clipBox'];[_0x2859cf(0x243)];[_0x2859cf(0x46a)]=_0x2859cf(0x2f1);['autoFrameCount']=0x0;[_0x2859cf(0x3a4)]=0x0;[_0x2859cf(0x429)];[_0x2859cf(0x40b)]=null;[_0x2859cf(0x23b)];[_0x2859cf(0x41f)];['renderScale'];[_0x2859cf(0x3a7)];['interactionStepScale'];[_0x2859cf(0x451)]=new Set();[_0x2859cf(0x3eb)]=!0x0;[_0x2859cf(0x288)]=!0x1;['brickScheduleCount']=0x0;[_0x2859cf(0x2c2)]=0x0;[_0x2859cf(0x27f)]=null;[_0x2859cf(0x2c5)];[_0x2859cf(0x331)];['onSlicesChange'];[_0x2859cf(0x35b)]=0x0;['lastTimingFrameTimestamp']=0x0;[_0x2859cf(0x2d4)]=0x0;[_0x2859cf(0x3c1)]=new Set();['sliceInteraction']=null;[_0x2859cf(0x240)]=null;constructor(_0x274dd8,_0x141d70){const _0x130f87=_0x2859cf;this['renderer']=_0x141d70,this[_0x130f87(0x23c)]=_0x274dd8['canvas'],this[_0x130f87(0x477)]=_0x274dd8['interactionElement']??_0x274dd8[_0x130f87(0x23c)],this[_0x130f87(0x3b9)]=_0x274dd8[_0x130f87(0x3b9)]??'managed',this[_0x130f87(0x287)]=_0x274dd8[_0x130f87(0x287)],this['timeIndex']=_0x274dd8[_0x130f87(0x25b)]??0x0,this['layout']=this[_0x130f87(0x3f5)](_0x274dd8),this['descriptors']=createVolumeBrickDescriptors(this[_0x130f87(0x287)]['metadata'],this[_0x130f87(0x2ea)]),this['volumeCamera']=new VolumeCamera({'state':_0x274dd8[_0x130f87(0x448)]??DEFAULT_CAMERA}),this['sliceState']=this[_0x130f87(0x32c)](_0x274dd8);let _0x5d2e2e=prepareWebgpuVolumeTransfer(_0x274dd8[_0x130f87(0x1ad)],_0x274dd8[_0x130f87(0x37b)]);if(this[_0x130f87(0x1ad)]=_0x5d2e2e[_0x130f87(0x1ad)],this['colorInputs']=_0x274dd8[_0x130f87(0x1ad)],this[_0x130f87(0x37b)]=_0x274dd8[_0x130f87(0x37b)],this[_0x130f87(0x25f)]=_0x274dd8[_0x130f87(0x46c)]??IDENTITY_MATRIX,this['verticalScale']=validatePositiveOption(_0x274dd8[_0x130f87(0x42f)]??0x1,_0x130f87(0x42f)),this[_0x130f87(0x3cb)]=_0x274dd8['coordinateSystem']??_0x130f87(0x2ec),this[_0x130f87(0x3cb)]===_0x130f87(0x1c7)&&_0x274dd8[_0x130f87(0x46c)])throw Error(_0x130f87(0x28b));this[_0x130f87(0x2f4)]=_0x274dd8['clipBox']??null,this['quality']=_0x274dd8[_0x130f87(0x243)]??_0x130f87(0x229),this[_0x130f87(0x23b)]=_0x274dd8['navigationMode']??_0x130f87(0x28d),this['pixelRatioCap']=validatePositiveOption(_0x274dd8[_0x130f87(0x41f)]??0x2,_0x130f87(0x41f)),this[_0x130f87(0x275)]=validatePositiveOption(_0x274dd8[_0x130f87(0x275)]??0x1,'renderScale'),this['interactionRenderScale']=validatePositiveOption(_0x274dd8['interactionRenderScale']??0.6,_0x130f87(0x3a7)),this[_0x130f87(0x481)]=validatePositiveOption(_0x274dd8[_0x130f87(0x481)]??0x1,_0x130f87(0x481)),this[_0x130f87(0x429)]=_0x274dd8['colorMode']??_0x130f87(0x2a1),this[_0x130f87(0x2c5)]=_0x274dd8['sliceInteraction']?.[_0x130f87(0x341)]??_0x130f87(0x3cc),this[_0x130f87(0x331)]=_0x274dd8[_0x130f87(0x48f)]?.[_0x130f87(0x32e)],this[_0x130f87(0x475)]=_0x274dd8[_0x130f87(0x48f)]?.[_0x130f87(0x475)],this[_0x130f87(0x23e)][_0x130f87(0x49b)](()=>this[_0x130f87(0x34c)]()),this[_0x130f87(0x23e)][_0x130f87(0x200)](_0x5d2e2e['colorStops'],_0x5d2e2e['opacityStops']);let _0x3655a6=_0x274dd8[_0x130f87(0x406)]??this['coordinateSystem']===_0x130f87(0x2ec);this[_0x130f87(0x23e)]['setAxes'](_0x3655a6?[createBoundsMesh(),createAxesMesh()]:[]),this['renderer'][_0x130f87(0x207)]({'renderMode':_0x274dd8['mode']??_0x130f87(0x2e8),'colorMode':this['colorMode'],'opacity':_0x274dd8[_0x130f87(0x446)]??0.3,'densityScale':_0x274dd8[_0x130f87(0x1ea)]??0x1,'stepLength':this['getStepLength'](),'volumeDimFactor':this['sliceState']['volumeDimFactor']}),this[_0x130f87(0x22d)](),this[_0x130f87(0x343)](),this[_0x130f87(0x3f9)](),this[_0x130f87(0x3e4)](_0x274dd8),this[_0x130f87(0x1f0)]();}static async[_0x2859cf(0x380)](_0x42d70d){const _0x1d6aca=_0x2859cf;if(validateVolumeSource(_0x42d70d[_0x1d6aca(0x287)]),validateVolumeTimeIndex(_0x42d70d[_0x1d6aca(0x287)][_0x1d6aca(0x204)],_0x42d70d[_0x1d6aca(0x25b)]??0x0),(_0x42d70d[_0x1d6aca(0x472)]?.[_0x1d6aca(0x2b1)]??0x1)!==0x1)throw Error(_0x1d6aca(0x342));let _0x364711=_0x42d70d[_0x1d6aca(0x472)]?.[_0x1d6aca(0x33b)]??0x20000000,_0x292296=new WebgpuVolumeSceneRenderer({'memoryTargetBytes':_0x364711,'memoryHardLimitBytes':_0x42d70d[_0x1d6aca(0x472)]?.[_0x1d6aca(0x4a0)]??_0x364711});await _0x292296['initialize'](_0x42d70d['canvas']);let _0xbc0b9e=new VolumeScene(_0x42d70d,_0x292296);return _0xbc0b9e[_0x1d6aca(0x19f)](),_0xbc0b9e['scheduleBricks'](),_0xbc0b9e[_0x1d6aca(0x3b9)]===_0x1d6aca(0x415)&&_0xbc0b9e[_0x1d6aca(0x323)](),_0xbc0b9e;}get[_0x2859cf(0x448)](){const _0x5a1fd7=_0x2859cf;return this['volumeCamera'][_0x5a1fd7(0x2f6)];}get[_0x2859cf(0x21b)](){const _0xa47d03=_0x2859cf;return this[_0xa47d03(0x298)][_0xa47d03(0x21b)];}get[_0x2859cf(0x34f)](){const _0x4ea305=_0x2859cf;let _0x2a4b7c=this[_0x4ea305(0x3b9)]===_0x4ea305(0x1b8)||this['isInteracting']()||performance[_0x4ea305(0x289)]()-this[_0x4ea305(0x35b)]<=0xfa?this[_0x4ea305(0x2d4)]:0x0;return{...this[_0x4ea305(0x23e)]['statistics'],'pendingBrickCount':this[_0x4ea305(0x30d)][_0x4ea305(0x376)],'brickScheduleCount':this[_0x4ea305(0x2aa)],'brickSortCount':this[_0x4ea305(0x2c2)],'actualFrameIntervalMilliseconds':_0x2a4b7c,'estimatedFps':_0x2a4b7c>0x0?0x3e8/_0x2a4b7c:0x0,'effectiveQuality':this['getEffectiveQuality'](),'effectiveRenderScale':this[_0x4ea305(0x1ce)](),'interactionKind':this['getInteractionKind']()};}['update'](_0x2c586e){const _0x1dca53=_0x2859cf;_0x2c586e['camera']&&this[_0x1dca53(0x28f)](_0x2c586e['camera']),_0x2c586e[_0x1dca53(0x46c)]&&(this[_0x1dca53(0x25f)]=[..._0x2c586e['modelMatrix']]),_0x2c586e[_0x1dca53(0x42f)]!==void 0x0&&(this[_0x1dca53(0x42f)]=validatePositiveOption(_0x2c586e[_0x1dca53(0x42f)],_0x1dca53(0x42f))),_0x2c586e[_0x1dca53(0x2f4)]!==void 0x0&&(this[_0x1dca53(0x2f4)]=_0x2c586e[_0x1dca53(0x2f4)]),_0x2c586e[_0x1dca53(0x243)]&&(this[_0x1dca53(0x243)]=_0x2c586e[_0x1dca53(0x243)]),_0x2c586e[_0x1dca53(0x23b)]&&(this['navigationMode']=_0x2c586e[_0x1dca53(0x23b)]);let _0x324c8f=!0x1;if(_0x2c586e[_0x1dca53(0x41f)]!==void 0x0&&(this[_0x1dca53(0x41f)]=validatePositiveOption(_0x2c586e[_0x1dca53(0x41f)],_0x1dca53(0x41f)),_0x324c8f=!0x0),_0x2c586e[_0x1dca53(0x275)]!==void 0x0&&(this[_0x1dca53(0x275)]=validatePositiveOption(_0x2c586e['renderScale'],_0x1dca53(0x275)),_0x324c8f=!0x0),_0x2c586e[_0x1dca53(0x3a7)]!==void 0x0&&(this[_0x1dca53(0x3a7)]=validatePositiveOption(_0x2c586e['interactionRenderScale'],_0x1dca53(0x3a7)),_0x324c8f=this[_0x1dca53(0x234)]()),_0x2c586e['interactionStepScale']!==void 0x0&&(this['interactionStepScale']=validatePositiveOption(_0x2c586e[_0x1dca53(0x481)],_0x1dca53(0x481))),_0x2c586e['colorMode']&&(this[_0x1dca53(0x429)]=_0x2c586e[_0x1dca53(0x429)]),_0x2c586e[_0x1dca53(0x1ad)]||_0x2c586e[_0x1dca53(0x37b)]){let _0x3d6ae7=prepareWebgpuVolumeTransfer(_0x2c586e[_0x1dca53(0x1ad)]??this[_0x1dca53(0x43b)],_0x2c586e['opacityStops']??this[_0x1dca53(0x37b)]);this[_0x1dca53(0x1ad)]=_0x3d6ae7[_0x1dca53(0x1ad)],this[_0x1dca53(0x43b)]=_0x2c586e[_0x1dca53(0x1ad)]??this['colorInputs'],this[_0x1dca53(0x37b)]=_0x2c586e[_0x1dca53(0x37b)]??this[_0x1dca53(0x37b)],this[_0x1dca53(0x23e)][_0x1dca53(0x200)](_0x3d6ae7[_0x1dca53(0x1ad)],_0x3d6ae7[_0x1dca53(0x37b)]),this[_0x1dca53(0x4a1)]();}_0x2c586e[_0x1dca53(0x429)]&&!_0x2c586e[_0x1dca53(0x1ad)]&&!_0x2c586e['opacityStops']&&this[_0x1dca53(0x4a1)](),this[_0x1dca53(0x23e)][_0x1dca53(0x207)]({'renderMode':_0x2c586e[_0x1dca53(0x263)],'colorMode':_0x2c586e[_0x1dca53(0x429)],'opacity':_0x2c586e[_0x1dca53(0x446)],'densityScale':_0x2c586e[_0x1dca53(0x1ea)],'stepLength':this[_0x1dca53(0x489)]()}),this['configureModel'](),_0x324c8f&&this[_0x1dca53(0x19f)](),this[_0x1dca53(0x323)]();}[_0x2859cf(0x28f)](_0x3865f8){const _0x220086=_0x2859cf;this[_0x220086(0x45a)][_0x220086(0x2a4)](_0x3865f8),this[_0x220086(0x2f5)](),this[_0x220086(0x323)]();}['setTimeIndex'](_0x53b76b){const _0x3ed4a7=_0x2859cf;validateVolumeTimeIndex(this['source'][_0x3ed4a7(0x204)],_0x53b76b),_0x53b76b!==this['timeIndex']&&(this['timeIndex']=_0x53b76b,this['resetBrickRequests']());}[_0x2859cf(0x3f3)](_0x447aa7){const _0x11b449=_0x2859cf;validateVolumeSource(_0x447aa7),this['source']=_0x447aa7,this[_0x11b449(0x25b)]=Math[_0x11b449(0x28e)](this['timeIndex'],_0x447aa7[_0x11b449(0x204)][_0x11b449(0x2e4)]-0x1),this['layout']=createVolumeBrickLayout(_0x447aa7['metadata'],this[_0x11b449(0x2ea)]['shape']),this[_0x11b449(0x197)]=createVolumeBrickDescriptors(_0x447aa7[_0x11b449(0x204)],this['layout']),this[_0x11b449(0x298)][_0x11b449(0x26d)](_0x447aa7[_0x11b449(0x204)]),this[_0x11b449(0x22d)](),this['configureModel'](),this['resetBrickRequests'](),this['rebuildProfiles'](),this[_0x11b449(0x323)]();}['setRouteProfiles'](_0x563259){const _0x39a78f=_0x2859cf;this[_0x39a78f(0x416)]=_0x563259,this[_0x39a78f(0x4a1)](),this['requestBrickSchedule'](),this[_0x39a78f(0x323)]();}['setSliceTool'](_0x3d79a4){const _0x3a8bbc=_0x2859cf;this['sliceState'][_0x3a8bbc(0x1ef)](_0x3d79a4);}[_0x2859cf(0x1c8)](_0xc0631d){const _0x38beb0=_0x2859cf;if(this['destroyed']||this['activeInteractions']['has'](_0xc0631d))return;let _0x280353=!this[_0x38beb0(0x234)]();this[_0x38beb0(0x451)]['add'](_0xc0631d),_0x280353&&(this[_0x38beb0(0x202)]=0x0,this[_0x38beb0(0x19f)]());}[_0x2859cf(0x239)](_0x1c4d21){const _0x786a01=_0x2859cf;this['destroyed']||!this[_0x786a01(0x451)][_0x786a01(0x18e)](_0x1c4d21)||this[_0x786a01(0x234)]()||(this[_0x786a01(0x202)]=0x0,this[_0x786a01(0x19f)]());}[_0x2859cf(0x476)](_0x12f39,_0x211296){const _0x399030=_0x2859cf;this['sliceState'][_0x399030(0x224)](_0x12f39,_0x211296);let _0x456987=this[_0x399030(0x298)][_0x399030(0x3d0)]();if(!_0x456987)throw Error(_0x399030(0x2ce));return _0x456987;}[_0x2859cf(0x3d3)](_0x2b752c,_0x5db0c4){const _0x2296a6=_0x2859cf;this['sliceState'][_0x2296a6(0x39d)](_0x2b752c,_0x5db0c4);}[_0x2859cf(0x2cb)](_0x183c62){const _0x4f13cc=_0x2859cf;this[_0x4f13cc(0x298)][_0x4f13cc(0x2cb)](_0x183c62);}[_0x2859cf(0x41d)](){const _0x2292c8=_0x2859cf;this[_0x2292c8(0x298)][_0x2292c8(0x41d)]();}[_0x2859cf(0x19f)](){const _0x515bc5=_0x2859cf;let _0x670121=Math[_0x515bc5(0x28e)](window[_0x515bc5(0x389)]||0x1,this[_0x515bc5(0x41f)])*this[_0x515bc5(0x1ce)](),_0x58d1b7=Math['max'](0x1,Math[_0x515bc5(0x3cf)](this[_0x515bc5(0x23c)][_0x515bc5(0x295)]*_0x670121||this['canvas']['width']||0x1)),_0x46cb67=Math[_0x515bc5(0x284)](0x1,Math[_0x515bc5(0x3cf)](this[_0x515bc5(0x23c)][_0x515bc5(0x3a9)]*_0x670121||this['canvas']['height']||0x1));this[_0x515bc5(0x45a)][_0x515bc5(0x36e)](_0x58d1b7/_0x46cb67),(this['canvas'][_0x515bc5(0x456)]!==_0x58d1b7||this[_0x515bc5(0x23c)][_0x515bc5(0x3de)]!==_0x46cb67)&&this['renderer']['resize'](_0x58d1b7,_0x46cb67),this['requestRender']();}[_0x2859cf(0x31f)](){const _0x2e0511=_0x2859cf;if(this[_0x2e0511(0x2d3)])return;this[_0x2e0511(0x432)](),this[_0x2e0511(0x2ee)]();let _0x5afbd7=this[_0x2e0511(0x45a)][_0x2e0511(0x27e)];if(this[_0x2e0511(0x23e)][_0x2e0511(0x28f)]({'viewProjection':Array[_0x2e0511(0x1e5)](_0x5afbd7[_0x2e0511(0x387)]),'inverseViewProjection':Array[_0x2e0511(0x1e5)](_0x5afbd7['inverseViewProjection']),'cameraPosition':this[_0x2e0511(0x45a)][_0x2e0511(0x2f6)]['position']}),this['renderer'][_0x2e0511(0x207)]({'stepLength':this[_0x2e0511(0x489)]()}),!this[_0x2e0511(0x23e)][_0x2e0511(0x31f)]()){this['renderDirty']=!0x0;return;}this[_0x2e0511(0x3eb)]=!0x1,this['recordFrameInterval'](performance['now']()),this['markerOverlay']?.[_0x2e0511(0x207)]();}[_0x2859cf(0x23a)](){const _0x510822=_0x2859cf;if(this['destroyed'])return Promise[_0x510822(0x460)](Error(_0x510822(0x2a0)));this['flushSliceState'](),this['flushBrickSchedule']();let _0x1b29df=this[_0x510822(0x45a)]['matrices'];return this[_0x510822(0x23e)][_0x510822(0x28f)]({'viewProjection':Array[_0x510822(0x1e5)](_0x1b29df['viewProjection']),'inverseViewProjection':Array[_0x510822(0x1e5)](_0x1b29df[_0x510822(0x2bb)]),'cameraPosition':this[_0x510822(0x45a)]['state']['position']}),this[_0x510822(0x23e)][_0x510822(0x23a)]();}[_0x2859cf(0x355)](){const _0x489422=_0x2859cf;if(!this[_0x489422(0x2d3)]){this[_0x489422(0x2d3)]=!0x0,this[_0x489422(0x2f3)]+=0x1;for(let _0x400be4 of this[_0x489422(0x3c1)])_0x400be4[_0x489422(0x306)]();this[_0x489422(0x3c1)][_0x489422(0x314)](),cancelAnimationFrame(this[_0x489422(0x369)]),this['renderer'][_0x489422(0x49b)](null),this[_0x489422(0x400)]['splice'](0x0)[_0x489422(0x296)](_0x363aa8=>_0x363aa8()),this[_0x489422(0x23e)][_0x489422(0x355)](),this[_0x489422(0x48f)]?.[_0x489422(0x355)](),this[_0x489422(0x240)]?.['destroy'](),this['loadedKeys'][_0x489422(0x314)](),this['pendingKeys'][_0x489422(0x314)](),this[_0x489422(0x189)]['clear'](),this['activeInteractions'][_0x489422(0x314)](),this[_0x489422(0x27f)]=null;}}[_0x2859cf(0x3f5)](_0x52ab42){const _0x23207a=_0x2859cf;return createVolumeBrickLayout(_0x52ab42[_0x23207a(0x287)]['metadata'],{'width':_0x52ab42['chunk']?.[_0x23207a(0x456)],'height':_0x52ab42['chunk']?.[_0x23207a(0x3de)],'depth':_0x52ab42[_0x23207a(0x472)]?.[_0x23207a(0x42d)],'halo':_0x52ab42[_0x23207a(0x472)]?.[_0x23207a(0x2b1)]});}[_0x2859cf(0x2da)](){const _0x475cc3=_0x2859cf;return this['quality']===_0x475cc3(0x229)?this['autoQuality']:this[_0x475cc3(0x243)];}[_0x2859cf(0x489)](){const _0x561a30=_0x2859cf;let _0x29de85=qualityStepLength(this[_0x561a30(0x2da)]());return(this[_0x561a30(0x3cb)]===_0x561a30(0x1c7)?_0x29de85*0.05:_0x29de85)*(this[_0x561a30(0x234)]()?this[_0x561a30(0x481)]:0x1);}['isInteracting'](){const _0x41c761=_0x2859cf;return this['activeInteractions'][_0x41c761(0x376)]>0x0;}[_0x2859cf(0x1b6)](){const _0x1bfb0d=_0x2859cf;return this[_0x1bfb0d(0x451)][_0x1bfb0d(0x376)]===0x0?_0x1bfb0d(0x1da):this[_0x1bfb0d(0x451)][_0x1bfb0d(0x376)]>0x1?_0x1bfb0d(0x371):this[_0x1bfb0d(0x451)]['values']()['next']()['value']??'idle';}['getEffectiveRenderScale'](){const _0x4b705c=_0x2859cf;return this[_0x4b705c(0x275)]*(this[_0x4b705c(0x234)]()?this[_0x4b705c(0x3a7)]:0x1);}[_0x2859cf(0x18c)](_0x478b17){const _0x3f4d4f=_0x2859cf;if(this[_0x3f4d4f(0x35b)]=_0x478b17,!(this[_0x3f4d4f(0x3b9)]==='external'||this[_0x3f4d4f(0x234)]())){this['lastTimingFrameTimestamp']=0x0;return;}if(this[_0x3f4d4f(0x202)]>0x0){let _0x127131=_0x478b17-this['lastTimingFrameTimestamp'];_0x127131>0x0&&_0x127131<=0xfa&&(this[_0x3f4d4f(0x2d4)]=this['actualFrameIntervalMilliseconds']===0x0?_0x127131:this[_0x3f4d4f(0x2d4)]*0.8+_0x127131*0.2,this[_0x3f4d4f(0x291)](_0x127131));}this[_0x3f4d4f(0x202)]=_0x478b17;}[_0x2859cf(0x291)](_0x15d68e){const _0x2b9051=_0x2859cf;if(this['quality']!==_0x2b9051(0x229)||(this[_0x2b9051(0x2fd)]+=0x1,this[_0x2b9051(0x3a4)]+=_0x15d68e,this[_0x2b9051(0x2fd)]<0x1e))return;let _0xf9aefe=this[_0x2b9051(0x3a4)]/this[_0x2b9051(0x2fd)];if(this[_0x2b9051(0x2fd)]=0x0,this['autoFrameIntervalTotal']=0x0,this[_0x2b9051(0x234)]()&&_0xf9aefe<0xe)return;let _0x575fcc=nextAutoQuality(this[_0x2b9051(0x46a)],_0xf9aefe);_0x575fcc!==this['autoQuality']&&(this[_0x2b9051(0x46a)]=_0x575fcc,this['requestBrickSchedule'](),this[_0x2b9051(0x323)]());}['createSliceState'](_0x2abfa9){const _0x2b17c3=_0x2859cf;return new SliceState(_0x2abfa9[_0x2b17c3(0x287)][_0x2b17c3(0x204)],{'volumeDimFactor':_0x2abfa9[_0x2b17c3(0x48f)]?.[_0x2b17c3(0x328)],'depthMode':_0x2abfa9['sliceInteraction']?.[_0x2b17c3(0x341)],'maxLockedSlices':_0x2abfa9[_0x2b17c3(0x48f)]?.[_0x2b17c3(0x1f9)],'onLimitReached':_0x445c5f=>_0x2abfa9[_0x2b17c3(0x48f)]?.[_0x2b17c3(0x411)]?.(Error('Maximum\x20locked\x20slice\x20count\x20is\x20'+_0x445c5f+'.\x20最大锁定切面数量为\x20'+_0x445c5f+'。'))});}[_0x2859cf(0x3f9)](){const _0x3b6ebf=_0x2859cf;let _0x2585f6=this[_0x3b6ebf(0x298)]['subscribe'](_0x4a3360=>{const _0x2fe9e=_0x3b6ebf;this[_0x2fe9e(0x27f)]=_0x4a3360,this[_0x2fe9e(0x323)]();});this[_0x3b6ebf(0x400)]['push'](_0x2585f6);}[_0x2859cf(0x432)](){const _0x35d7b2=_0x2859cf;let _0x420220=this[_0x35d7b2(0x27f)];if(!_0x420220)return;this[_0x35d7b2(0x27f)]=null;let _0x19f607=[];if(_0x420220[_0x35d7b2(0x276)]){let _0x45743a=_0x420220[_0x35d7b2(0x276)][_0x35d7b2(0x1d4)]==='x'?this[_0x35d7b2(0x287)][_0x35d7b2(0x204)][_0x35d7b2(0x1bf)]:_0x420220[_0x35d7b2(0x276)][_0x35d7b2(0x1d4)]==='y'?this[_0x35d7b2(0x287)][_0x35d7b2(0x204)][_0x35d7b2(0x1de)]:this[_0x35d7b2(0x287)]['metadata'][_0x35d7b2(0x203)];_0x19f607[_0x35d7b2(0x39a)]({'id':_0x35d7b2(0x409),'axis':_0x420220[_0x35d7b2(0x276)]['axis'],'position':clamp01(volumeAxisValueToNormalized(_0x45743a,_0x420220[_0x35d7b2(0x276)]['position'])),'depthMode':this[_0x35d7b2(0x2c5)],'visible':!0x0,'opacity':0.72,'plateColor':this[_0x35d7b2(0x331)]});}for(let _0x59c6e0 of _0x420220[_0x35d7b2(0x21b)]){let _0x3b0965=_0x59c6e0['axis']==='x'?this['source']['metadata']['xAxis']:_0x59c6e0[_0x35d7b2(0x1d4)]==='y'?this[_0x35d7b2(0x287)][_0x35d7b2(0x204)][_0x35d7b2(0x1de)]:this[_0x35d7b2(0x287)]['metadata']['zAxis'];_0x19f607[_0x35d7b2(0x39a)]({..._0x59c6e0,'position':clamp01(volumeAxisValueToNormalized(_0x3b0965,_0x59c6e0[_0x35d7b2(0x27c)])),'opacity':0x1,'plateColor':this[_0x35d7b2(0x331)]});}this['renderer'][_0x35d7b2(0x1fd)](_0x19f607),this['renderer'][_0x35d7b2(0x207)]({'volumeDimFactor':_0x420220[_0x35d7b2(0x276)]||_0x420220[_0x35d7b2(0x21b)][_0x35d7b2(0x1b7)](_0x521057=>_0x521057['visible'])?_0x420220[_0x35d7b2(0x328)]:0x1}),this[_0x35d7b2(0x475)]?.(_0x420220[_0x35d7b2(0x21b)]),this[_0x35d7b2(0x288)]=!0x0;}['bindSliceInteraction'](_0x370ccd){const _0x7264c1=_0x2859cf;let _0x4d3b78=()=>({'viewProjectionMatrix':this['volumeCamera'][_0x7264c1(0x27e)]['viewProjection'],'modelMatrix':composeVolumeModelMatrix(this[_0x7264c1(0x25f)],this[_0x7264c1(0x42f)]),'viewportWidth':Math[_0x7264c1(0x284)](0x1,this[_0x7264c1(0x23c)][_0x7264c1(0x295)]),'viewportHeight':Math['max'](0x1,this[_0x7264c1(0x23c)][_0x7264c1(0x3a9)])});this[_0x7264c1(0x48f)]=new SliceInteractionController(this[_0x7264c1(0x477)],this['sliceState'],_0x4d3b78,{'hitTolerancePixels':_0x370ccd[_0x7264c1(0x48f)]?.[_0x7264c1(0x499)],'onInteractionStart':()=>this[_0x7264c1(0x1c8)](_0x7264c1(0x226)),'onInteractionEnd':()=>this[_0x7264c1(0x239)](_0x7264c1(0x226))}),this[_0x7264c1(0x48f)][_0x7264c1(0x1b3)](),_0x370ccd[_0x7264c1(0x32a)]&&(this['markerOverlay']=new SliceMarkerOverlay(_0x370ccd[_0x7264c1(0x32a)],this[_0x7264c1(0x298)],_0x4d3b78,{'interactionController':this[_0x7264c1(0x48f)]}));}[_0x2859cf(0x1f0)](){const _0x135359=_0x2859cf;let _0x4134d2=_0x177799=>{const _0x593fdd=_0x1b5d;_0x177799['button']!==0x0&&_0x177799[_0x593fdd(0x497)]!==0x2||(this[_0x593fdd(0x40b)]={'id':_0x177799[_0x593fdd(0x38f)],'x':_0x177799[_0x593fdd(0x1aa)],'y':_0x177799[_0x593fdd(0x1fe)],'pan':_0x177799[_0x593fdd(0x497)]===0x2||_0x177799['pointerType']!==_0x593fdd(0x318)&&this[_0x593fdd(0x23b)]===_0x593fdd(0x494)},this['beginInteraction'](_0x593fdd(0x448)),this[_0x593fdd(0x477)]['setPointerCapture']?.(_0x177799[_0x593fdd(0x38f)]),_0x177799[_0x593fdd(0x3bd)]());},_0xee862=_0x57d27b=>{const _0x2f435e=_0x1b5d;if(!this[_0x2f435e(0x40b)]||this[_0x2f435e(0x40b)]['id']!==_0x57d27b[_0x2f435e(0x38f)])return;let _0x4b2e88=_0x57d27b[_0x2f435e(0x1aa)]-this[_0x2f435e(0x40b)]['x'],_0x42bde5=_0x57d27b[_0x2f435e(0x1fe)]-this[_0x2f435e(0x40b)]['y'];this[_0x2f435e(0x40b)]['x']=_0x57d27b[_0x2f435e(0x1aa)],this[_0x2f435e(0x40b)]['y']=_0x57d27b[_0x2f435e(0x1fe)],this[_0x2f435e(0x40b)]['pan']?this[_0x2f435e(0x45a)][_0x2f435e(0x494)](_0x4b2e88,_0x42bde5,this[_0x2f435e(0x23c)][_0x2f435e(0x3a9)]):this[_0x2f435e(0x45a)][_0x2f435e(0x28d)](_0x4b2e88,_0x42bde5),this[_0x2f435e(0x2f5)](),this[_0x2f435e(0x323)]();},_0x3d22db=_0x270685=>{const _0x47e033=_0x1b5d;this[_0x47e033(0x40b)]?.['id']===_0x270685[_0x47e033(0x38f)]&&(this[_0x47e033(0x40b)]=null,this[_0x47e033(0x239)]('camera'));},_0x166e2a=_0x38f73b=>{const _0x1f5061=_0x1b5d;_0x38f73b['preventDefault'](),this['volumeCamera'][_0x1f5061(0x246)](_0x38f73b[_0x1f5061(0x22f)]),this[_0x1f5061(0x2f5)](),this[_0x1f5061(0x323)]();},_0x5ea105=_0x5194d9=>_0x5194d9[_0x135359(0x3bd)]();this[_0x135359(0x477)][_0x135359(0x29c)](_0x135359(0x293),_0x4134d2),this[_0x135359(0x477)][_0x135359(0x29c)](_0x135359(0x48e),_0xee862),this[_0x135359(0x477)][_0x135359(0x29c)](_0x135359(0x1d9),_0x3d22db),this[_0x135359(0x477)][_0x135359(0x29c)]('pointercancel',_0x3d22db),this['interactionElement'][_0x135359(0x29c)](_0x135359(0x3c9),_0x166e2a,{'passive':!0x1}),this[_0x135359(0x477)][_0x135359(0x29c)](_0x135359(0x1f3),_0x5ea105),this[_0x135359(0x400)][_0x135359(0x39a)](()=>this[_0x135359(0x477)][_0x135359(0x205)](_0x135359(0x293),_0x4134d2),()=>this[_0x135359(0x477)][_0x135359(0x205)](_0x135359(0x48e),_0xee862),()=>this[_0x135359(0x477)][_0x135359(0x205)]('pointerup',_0x3d22db),()=>this['interactionElement'][_0x135359(0x205)](_0x135359(0x2d0),_0x3d22db),()=>this[_0x135359(0x477)]['removeEventListener'](_0x135359(0x3c9),_0x166e2a),()=>this[_0x135359(0x477)][_0x135359(0x205)](_0x135359(0x1f3),_0x5ea105));}['configureSource'](){const _0x343816=_0x2859cf;this[_0x343816(0x23e)][_0x343816(0x3f3)]({'xAxis':this[_0x343816(0x287)][_0x343816(0x204)][_0x343816(0x1bf)],'yAxis':this[_0x343816(0x287)][_0x343816(0x204)][_0x343816(0x1de)],'zAxis':this[_0x343816(0x287)][_0x343816(0x204)][_0x343816(0x203)],'brickWidth':this[_0x343816(0x2ea)][_0x343816(0x211)][_0x343816(0x456)],'brickHeight':this[_0x343816(0x2ea)][_0x343816(0x211)][_0x343816(0x3de)],'brickDepth':this[_0x343816(0x2ea)][_0x343816(0x211)][_0x343816(0x42d)],'halo':0x1,'noData':this['source'][_0x343816(0x204)][_0x343816(0x219)]});}[_0x2859cf(0x343)](){const _0x24bd31=_0x2859cf;if(this[_0x24bd31(0x3cb)]===_0x24bd31(0x1c7)){let _0x1ff015=createGeographicVolumeLayout(this[_0x24bd31(0x287)]['metadata'],this['verticalScale']);this[_0x24bd31(0x23e)]['update']({'modelMatrix':_0x1ff015[_0x24bd31(0x2e0)],'inverseModelMatrix':Array[_0x24bd31(0x1e5)](invertMatrix(_0x1ff015[_0x24bd31(0x2e0)])),'geographicTransform':_0x1ff015[_0x24bd31(0x2f9)],'clipMinimum':[0x0,0x0,0x0],'clipMaximum':[0x1,0x1,0x1]}),this[_0x24bd31(0x323)]();return;}let _0x2401b8=composeVolumeModelMatrix(this['baseModelMatrix'],this[_0x24bd31(0x42f)]),_0xb0fecd=normalizeClipBox(this[_0x24bd31(0x287)],this['clipBox']);this['renderer'][_0x24bd31(0x207)]({'modelMatrix':Array[_0x24bd31(0x1e5)](_0x2401b8),'inverseModelMatrix':Array[_0x24bd31(0x1e5)](invertMatrix(_0x2401b8)),'geographicTransform':null,'clipMinimum':_0xb0fecd['minimum'],'clipMaximum':_0xb0fecd[_0x24bd31(0x221)]}),this[_0x24bd31(0x323)]();}[_0x2859cf(0x4a1)](){const _0x55a5a7=_0x2859cf;let _0x4ddcac=this[_0x55a5a7(0x416)][_0x55a5a7(0x3c0)](_0x4f5d8a=>createProfileSceneMesh(buildVolumeRouteProfileMesh(_0x4f5d8a,this[_0x55a5a7(0x287)][_0x55a5a7(0x204)]),this[_0x55a5a7(0x1ad)],this[_0x55a5a7(0x37b)],this[_0x55a5a7(0x429)]));this['renderer']['setProfiles'](_0x4ddcac),this[_0x55a5a7(0x323)]();}[_0x2859cf(0x37d)](){const _0x43b7d6=_0x2859cf;this['sourceGeneration']+=0x1;for(let _0x144316 of this[_0x43b7d6(0x3c1)])_0x144316['abort']();this[_0x43b7d6(0x3c1)][_0x43b7d6(0x314)](),this[_0x43b7d6(0x235)]['clear'](),this[_0x43b7d6(0x30d)]['clear'](),this[_0x43b7d6(0x189)][_0x43b7d6(0x314)](),this[_0x43b7d6(0x22d)](),this[_0x43b7d6(0x410)]();}[_0x2859cf(0x2f5)](){const _0x396ab6=_0x2859cf;this[_0x396ab6(0x288)]=!0x0,this['requestRender']();}[_0x2859cf(0x2ee)](){const _0x5a3a40=_0x2859cf;this[_0x5a3a40(0x288)]&&(this[_0x5a3a40(0x288)]=!0x1,this['scheduleBricks']());}[_0x2859cf(0x410)](){const _0x27483c=_0x2859cf;if(this[_0x27483c(0x2d3)])return;this['brickScheduleDirty']=!0x1,this[_0x27483c(0x2aa)]+=0x1;let _0x17108f=this['renderer']['statistics']['atlasCapacity'];if(_0x17108f<=0x0)return;let _0x651012=_0x17108f>=this[_0x27483c(0x197)]['length'];if(_0x651012&&this[_0x27483c(0x189)][_0x27483c(0x376)]===this[_0x27483c(0x197)][_0x27483c(0x326)]&&this['loadedKeys'][_0x27483c(0x376)]===this[_0x27483c(0x197)][_0x27483c(0x326)]&&this[_0x27483c(0x30d)]['size']===0x0)return;let _0x3c125d;_0x651012?_0x3c125d=this[_0x27483c(0x197)]:(this['brickSortCount']+=0x1,_0x3c125d=[...this['descriptors']][_0x27483c(0x3cd)]((_0x2ebcb9,_0xd2fbee)=>descriptorDemandPriority(_0x2ebcb9,this[_0x27483c(0x287)],this[_0x27483c(0x298)],this[_0x27483c(0x416)])-descriptorDemandPriority(_0xd2fbee,this[_0x27483c(0x287)],this['sliceState'],this['profiles'])||descriptorDistance(_0x2ebcb9,this[_0x27483c(0x2ea)],this[_0x27483c(0x45a)]['state'])-descriptorDistance(_0xd2fbee,this['layout'],this[_0x27483c(0x45a)][_0x27483c(0x2f6)]))['slice'](0x0,_0x17108f));let _0x23435c=new Set(_0x3c125d['map'](_0x216835=>_0x216835[_0x27483c(0x21e)]));this['desiredKeys']=_0x23435c,_0x651012||this[_0x27483c(0x23e)]['touchBricks'](_0x3c125d[_0x27483c(0x29e)](_0xe827e=>this[_0x27483c(0x235)][_0x27483c(0x336)](_0xe827e[_0x27483c(0x21e)]))[_0x27483c(0x3c0)](_0x50b2b2=>descriptorLogicalIndex(_0x50b2b2,this[_0x27483c(0x2ea)])));for(let _0x53ddc2 of this[_0x27483c(0x235)])_0x23435c[_0x27483c(0x336)](_0x53ddc2)||this[_0x27483c(0x235)]['delete'](_0x53ddc2);let _0x466553=Math['max'](0x0,qualityUploadCount(this[_0x27483c(0x2da)]())-this[_0x27483c(0x30d)][_0x27483c(0x376)]),_0x204b04=_0x3c125d['filter'](_0x26496c=>!this['loadedKeys'][_0x27483c(0x336)](_0x26496c[_0x27483c(0x21e)])&&!this[_0x27483c(0x30d)][_0x27483c(0x336)](_0x26496c[_0x27483c(0x21e)]))[_0x27483c(0x226)](0x0,_0x466553);for(let _0x5c4356 of _0x204b04)this[_0x27483c(0x2b6)](_0x5c4356);}['loadBrick'](_0x5ac2ea){const _0x2cc157=_0x2859cf;let _0x9a46b4=this[_0x2cc157(0x2f3)],_0x2796b2=this['source'],_0x3ff5d4=this[_0x2cc157(0x25b)],_0x52260f=new AbortController();this[_0x2cc157(0x3c1)][_0x2cc157(0x35c)](_0x52260f),this[_0x2cc157(0x30d)][_0x2cc157(0x252)](_0x5ac2ea[_0x2cc157(0x21e)],_0x9a46b4),Promise[_0x2cc157(0x40a)](_0x2796b2['readChunk'](_0x3ff5d4,_0x5ac2ea[_0x2cc157(0x307)],_0x52260f[_0x2cc157(0x217)]))[_0x2cc157(0x346)](async _0x44cc6b=>{const _0x139b0d=_0x2cc157;if(this['destroyed']||_0x9a46b4!==this[_0x139b0d(0x2f3)]||_0x2796b2!==this['source']||_0x3ff5d4!==this[_0x139b0d(0x25b)]||!this['desiredKeys'][_0x139b0d(0x336)](_0x5ac2ea[_0x139b0d(0x21e)]))return;let _0x3f6eb1=createPhysicalBrickValues(_0x2796b2[_0x139b0d(0x204)],this[_0x139b0d(0x2ea)][_0x139b0d(0x211)],_0x5ac2ea,_0x44cc6b),_0x1a21b2=descriptorLogicalIndex(_0x5ac2ea,this[_0x139b0d(0x2ea)]);await this[_0x139b0d(0x23e)][_0x139b0d(0x3dd)]({'logicalIndex':_0x1a21b2,'values':_0x3f6eb1}),!(this[_0x139b0d(0x2d3)]||_0x9a46b4!==this[_0x139b0d(0x2f3)]||_0x2796b2!==this[_0x139b0d(0x287)]||_0x3ff5d4!==this[_0x139b0d(0x25b)]||!this[_0x139b0d(0x189)]['has'](_0x5ac2ea[_0x139b0d(0x21e)]))&&(this[_0x139b0d(0x235)][_0x139b0d(0x35c)](_0x5ac2ea[_0x139b0d(0x21e)]),this[_0x139b0d(0x323)]());})['catch'](_0x18327f=>{const _0x1c86df=_0x2cc157;_0x18327f instanceof DOMException&&_0x18327f[_0x1c86df(0x44c)]===_0x1c86df(0x45b)||console[_0x1c86df(0x1ed)](_0x18327f);})['finally'](()=>{const _0x169e31=_0x2cc157;this[_0x169e31(0x3c1)][_0x169e31(0x18e)](_0x52260f),this[_0x169e31(0x30d)][_0x169e31(0x374)](_0x5ac2ea['key'])===_0x9a46b4&&this[_0x169e31(0x30d)][_0x169e31(0x18e)](_0x5ac2ea['key']),_0x9a46b4===this[_0x169e31(0x2f3)]&&this[_0x169e31(0x410)]();});}[_0x2859cf(0x34c)](){const _0x5427f7=_0x2859cf;this['renderDirty']&&this[_0x5427f7(0x323)]();}[_0x2859cf(0x323)](){const _0x44c61f=_0x2859cf;this['destroyed']||(this[_0x44c61f(0x3eb)]=!0x0,!(this['renderMode']!==_0x44c61f(0x415)||this[_0x44c61f(0x369)]!==0x0)&&(this['frameRequest']=requestAnimationFrame(()=>{const _0x4831e4=_0x44c61f;this['frameRequest']=0x0,!(this[_0x4831e4(0x2d3)]||!this[_0x4831e4(0x3eb)])&&this[_0x4831e4(0x31f)]();})));}};const createVolumeScene=_0x4e8127=>VolumeScene[_0x2859cf(0x380)](_0x4e8127),validateIndexRange=(_0x5284a2,_0x27e38d,_0x419bb6,_0x50f007)=>{const _0x4f377b=_0x2859cf;if(!Number[_0x4f377b(0x2dd)](_0x5284a2)||!Number['isInteger'](_0x27e38d)||_0x5284a2<0x0||_0x27e38d<=0x0||_0x5284a2+_0x27e38d>_0x419bb6)throw Error(_0x50f007+'\x20range\x20is\x20invalid:\x20start='+_0x5284a2+_0x4f377b(0x417)+_0x27e38d+_0x4f377b(0x1cf)+_0x419bb6+'.\x20'+_0x50f007+'\x20范围无效。');},validateRange=(_0x51569f,_0x10a509)=>{const _0x1e4c2d=_0x2859cf;validateIndexRange(_0x10a509['xStart'],_0x10a509[_0x1e4c2d(0x434)],_0x51569f['xAxis'][_0x1e4c2d(0x251)],'X'),validateIndexRange(_0x10a509[_0x1e4c2d(0x334)],_0x10a509['levelCount'],_0x51569f[_0x1e4c2d(0x1de)][_0x1e4c2d(0x251)],_0x1e4c2d(0x3ab)),validateIndexRange(_0x10a509[_0x1e4c2d(0x212)],_0x10a509['sourceYCount'],_0x51569f[_0x1e4c2d(0x203)][_0x1e4c2d(0x251)],'sourceY');},validateData=_0x552c43=>{const _0x12d707=_0x2859cf;validateVolumeMetadata(_0x552c43);let _0x3da0d6=_0x552c43[_0x12d707(0x1bf)][_0x12d707(0x251)]*_0x552c43['yAxis'][_0x12d707(0x251)]*_0x552c43[_0x12d707(0x203)][_0x12d707(0x251)]*_0x552c43['timeCount'];if(_0x552c43[_0x12d707(0x1cd)][_0x12d707(0x326)]!==_0x3da0d6)throw Error('Volume\x20requires\x20'+_0x3da0d6+_0x12d707(0x1ec)+_0x552c43[_0x12d707(0x1cd)]['length']+'.\x20体积数据长度与维度不匹配。');},createInMemoryVolumeSource=_0xdb51e=>{validateData(_0xdb51e);let {values:_0xde9659,..._0x1288e7}=_0xdb51e;return{'metadata':_0x1288e7,'readChunk'(_0x37fc0c,_0x5f4384,_0x5bec86){const _0x43fd66=_0x1b5d;if(_0x5bec86?.[_0x43fd66(0x321)])throw new DOMException(_0x43fd66(0x3d4),_0x43fd66(0x45b));if(!Number[_0x43fd66(0x2dd)](_0x37fc0c)||_0x37fc0c<0x0||_0x37fc0c>=_0xdb51e[_0x43fd66(0x2e4)])throw Error('Volume\x20timeIndex\x20is\x20out\x20of\x20range:\x20'+_0x37fc0c+_0x43fd66(0x2ef));validateRange(_0xdb51e,_0x5f4384);let _0x27a19c=new Float32Array(_0x5f4384[_0x43fd66(0x434)]*_0x5f4384[_0x43fd66(0x304)]*_0x5f4384[_0x43fd66(0x21c)]),_0x4567ef=_0xdb51e['xAxis'][_0x43fd66(0x251)],_0x9ef737=_0xdb51e[_0x43fd66(0x1de)][_0x43fd66(0x251)],_0x1a2323=_0xdb51e[_0x43fd66(0x203)][_0x43fd66(0x251)],_0x1a1419=_0x37fc0c*_0x4567ef*_0x9ef737*_0x1a2323;for(let _0x1f634b=0x0;_0x1f634b<_0x5f4384[_0x43fd66(0x21c)];_0x1f634b+=0x1)for(let _0xc28fe2=0x0;_0xc28fe2<_0x5f4384[_0x43fd66(0x304)];_0xc28fe2+=0x1){let _0xe61faf=_0x1a1419+(((_0x5f4384['sourceYStart']+_0x1f634b)*_0x9ef737+_0x5f4384[_0x43fd66(0x334)]+_0xc28fe2)*_0x4567ef+_0x5f4384[_0x43fd66(0x231)]),_0x57b901=(_0x1f634b*_0x5f4384[_0x43fd66(0x304)]+_0xc28fe2)*_0x5f4384[_0x43fd66(0x434)];_0x27a19c[_0x43fd66(0x252)](_0xde9659[_0x43fd66(0x23f)](_0xe61faf,_0xe61faf+_0x5f4384[_0x43fd66(0x434)]),_0x57b901);}return{'timeIndex':_0x37fc0c,'range':{..._0x5f4384},'width':_0x5f4384[_0x43fd66(0x434)],'height':_0x5f4384['levelCount'],'depth':_0x5f4384[_0x43fd66(0x21c)],'values':_0x27a19c};}};};export{VolumeCamera,createGeographicVolumeLayout,createInMemoryVolumeSource,createVolumeScene,ecefToGeographicVolumeLocal,normalizedToVolumeAxisValue,volumeAxisValueToNormalized};
|