m4-w-fast 1.2.1 → 1.2.2
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/dist/index.cjs +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 -2
- package/dist/raster-leaflet/index.js +1 -1
- package/dist/raster-leaflet/index.mjs +2 -2
- package/dist/raster-leaflet/m4-w-raster-leaflet.umd.js +2 -2
- package/dist/raster-mars3d/cesiumRasterPlaneRenderer.js +1 -1
- package/dist/raster-mars3d/cesiumRasterTextureAdapter.js +1 -1
- package/dist/raster-mars3d/index.cjs +2 -2
- package/dist/raster-mars3d/index.js +1 -1
- package/dist/raster-mars3d/index.mjs +2 -2
- package/dist/raster-mars3d/m4-w-raster-mars3d.umd.js +2 -2
- package/dist/raster-mars3d/mars3dRasterImageryProvider.js +1 -1
- package/dist/raster-mars3d/mars3dRasterPlaneLayer.js +1 -1
- package/dist/raster-mars3d/rasterPlaneGeometry.js +1 -1
- package/dist/raster-mars3d/rasterPlaneGridChunks.js +1 -1
- package/dist/raster-mars3d/rasterPlaneMaterial.js +1 -1
- package/dist/raster-overlay/color.js +1 -1
- package/dist/raster-overlay/core.js +1 -1
- package/dist/raster-overlay/index.cjs +2 -2
- package/dist/raster-overlay/index.js +1 -1
- package/dist/raster-overlay/index.mjs +2 -2
- package/dist/raster-overlay/leaflet-renderers/createRenderer.js +1 -1
- package/dist/raster-overlay/leafletLayer.js +1 -1
- package/dist/raster-overlay/m4-w-raster-overlay.umd.js +2 -2
- package/dist/raster-overlay/query.js +1 -1
- package/dist/raster-overlay/rendering/createRasterRenderer.js +1 -1
- package/dist/raster-overlay/rendering/index.js +1 -1
- package/dist/raster-overlay/rendering/rasterRenderState.js +1 -1
- package/dist/raster-overlay/rendering/webgl2RasterRenderer.js +1 -1
- package/dist/raster-overlay/rendering/webgpuRasterRenderer.js +1 -1
- package/dist/raster-rendering/index.cjs +2 -2
- package/dist/raster-rendering/index.js +1 -1
- package/dist/raster-rendering/index.mjs +2 -2
- package/dist/raster-rendering/m4-w-raster-rendering.umd.js +2 -2
- package/dist/raster-rendering/webgpuRasterTileRenderer.js +1 -1
- package/dist/readFile.js +1 -1
- package/dist/rendering/index.js +1 -1
- package/dist/rendering/webgl2/baseWebgl2Renderer.js +1 -1
- package/dist/rendering/webgl2/index.js +1 -1
- package/dist/rendering/webgl2/webgl2CoverageResources.js +1 -1
- package/dist/rendering/webgl2/webgl2VisualizationResources.js +1 -1
- package/dist/rendering/webgpu/baseWebgpuRenderer.js +1 -1
- package/dist/rendering/webgpu/index.js +1 -1
- package/dist/rendering/webgpu/visualizationParams.js +1 -1
- package/dist/rendering/webgpu/visualizationResources.js +1 -1
- package/dist/rendering/webgpu/webgpuCoverageResources.js +1 -1
- package/dist/road-overlay/coordinateTransform.js +1 -1
- package/dist/road-overlay/index.cjs +2 -2
- package/dist/road-overlay/index.js +1 -1
- package/dist/road-overlay/index.mjs +2 -2
- package/dist/road-overlay/leaflet-renderers/createRenderer.js +1 -1
- 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.js +1 -1
- package/dist/road-overlay/rendering/index.js +1 -1
- package/dist/road-overlay/rendering/roadRenderState.js +1 -1
- package/dist/road-overlay/rendering/webgl2RoadRenderer.js +1 -1
- package/dist/road-overlay/rendering/webgpuRoadRenderer.js +1 -1
- package/dist/road-overlay/roadData.js +1 -1
- package/dist/road-overlay/roadGeometry.js +1 -1
- package/dist/road-overlay/roadMesh.js +1 -1
- package/dist/shared/coordinate-shader/webgl2/index.js +1 -1
- package/dist/shared/coordinate-shader/webgpu/index.js +1 -1
- package/dist/shared/map/index.js +1 -1
- package/dist/shared/map/leaflet.js +1 -1
- package/dist/shared/polygon/contains.js +1 -1
- package/dist/shared/polygon/index.js +1 -1
- package/dist/shared/polygon/polygonMesh.js +1 -1
- package/dist/shared/shader/assemble.js +1 -1
- package/dist/shared/visualization/index.js +1 -1
- package/dist/shared/visualization/shader/webgl2/index.js +1 -1
- package/dist/shared/visualization/shader/webgpu/index.js +1 -1
- package/dist/shared/visualization/utils.js +1 -1
- package/dist/volume-data/index.cjs +1 -0
- package/dist/volume-data/index.d.ts +5 -0
- package/dist/volume-data/index.js +1 -0
- package/dist/volume-data/index.mjs +1 -0
- package/dist/volume-data/input.d.ts +2 -0
- package/dist/volume-data/input.js +1 -0
- package/dist/volume-data/loadVolumeSource.d.ts +2 -0
- package/dist/volume-data/loadVolumeSource.js +1 -0
- package/dist/volume-data/m4-w-volume-data.umd.js +1 -0
- package/dist/volume-data/parserRegistry.d.ts +5 -0
- package/dist/volume-data/parserRegistry.js +1 -0
- package/dist/volume-data/radarGridVolumeMetadata.d.ts +2 -0
- package/dist/volume-data/radarGridVolumeMetadata.js +1 -0
- package/dist/volume-data/radarGridVolumeParser.d.ts +2 -0
- package/dist/volume-data/radarGridVolumeParser.js +1 -0
- package/dist/volume-data/radarGridVolumeSource.d.ts +3 -0
- package/dist/volume-data/radarGridVolumeSource.js +1 -0
- package/dist/volume-data/volumeDataError.d.ts +5 -0
- package/dist/volume-data/volumeDataError.js +1 -0
- package/dist/volume-data/volumeDataTypes.d.ts +54 -0
- package/dist/volume-data/volumeDataTypes.js +1 -0
- package/dist/volume-data/zipArchive.d.ts +6 -0
- package/dist/volume-data/zipArchive.js +1 -0
- package/dist/volume-mars3d/createMars3dVolumeScene.js +1 -1
- package/dist/volume-mars3d/index.cjs +1 -1
- package/dist/volume-mars3d/index.js +1 -1
- package/dist/volume-mars3d/index.mjs +1 -1
- package/dist/volume-mars3d/m4-w-volume-mars3d.umd.js +1 -1
- package/dist/volume-mars3d/mars3dCanvasCompensation.js +1 -1
- package/dist/volume-mars3d/mars3dRaymarchShader.js +1 -1
- package/dist/volume-mars3d/mars3dVolumeLayer.js +1 -1
- package/dist/volume-mars3d/mars3dVolumeRenderer.js +1 -1
- package/dist/volume-mars3d-native/index.cjs +1 -1
- package/dist/volume-mars3d-native/index.js +1 -1
- package/dist/volume-mars3d-native/index.mjs +1 -1
- package/dist/volume-mars3d-native/liveUpdateScheduler.js +1 -1
- package/dist/volume-mars3d-native/m4-w-volume-mars3d-native.umd.js +1 -1
- package/dist/volume-mars3d-native/mars3dNativeSliceLayer.js +1 -1
- package/dist/volume-mars3d-native/mars3dNativeSliceRenderer.js +1 -1
- package/dist/volume-mars3d-native/mars3dNativeVolumeLayer.js +1 -1
- package/dist/volume-mars3d-native/mars3dNativeVolumeRenderer.js +1 -1
- package/dist/volume-mars3d-native/nativeAxisSliceRenderer.js +1 -1
- package/dist/volume-mars3d-native/nativeSliceAtlas.js +1 -1
- package/dist/volume-mars3d-native/nativeVoxelProvider.js +1 -1
- package/dist/volume-mars3d-native/nativeVoxelShader.js +1 -1
- package/dist/volume-mars3d-native/voxelData.js +1 -1
- package/dist/volume-scene/brickLayout.js +1 -1
- package/dist/volume-scene/brickResidency.js +1 -1
- package/dist/volume-scene/camera.js +1 -1
- package/dist/volume-scene/createVolumeScene.js +1 -1
- package/dist/volume-scene/geographicVolume.js +1 -1
- package/dist/volume-scene/inMemoryVolumeSource.js +1 -1
- package/dist/volume-scene/index.cjs +1 -1
- package/dist/volume-scene/index.js +1 -1
- package/dist/volume-scene/index.mjs +1 -1
- package/dist/volume-scene/m4-w-volume-scene.umd.js +1 -1
- package/dist/volume-scene/matrix.js +1 -1
- package/dist/volume-scene/rendering/webgpu/index.js +1 -1
- package/dist/volume-scene/rendering/webgpu/webgpuBrickAtlas.js +1 -1
- package/dist/volume-scene/rendering/webgpu/webgpuSceneAttachments.js +1 -1
- package/dist/volume-scene/rendering/webgpu/webgpuSceneMeshResources.js +1 -1
- package/dist/volume-scene/rendering/webgpu/webgpuSliceResources.js +1 -1
- package/dist/volume-scene/rendering/webgpu/webgpuTransferResources.js +1 -1
- package/dist/volume-scene/rendering/webgpu/webgpuVolumeSceneRenderer.js +1 -1
- package/dist/volume-scene/routeProfileMesh.js +1 -1
- package/dist/volume-scene/sliceInteractionController.js +1 -1
- package/dist/volume-scene/sliceMarkerOverlay.js +1 -1
- package/dist/volume-scene/sliceState.js +1 -1
- package/dist/volume-scene/volumeBrickData.js +1 -1
- package/dist/volume-scene/volumeScene.js +1 -1
- package/dist/volume-scene/volumeTransfer.js +1 -1
- package/dist/volume-scene/volumeValidation.js +1 -1
- package/dist/volume-section/createHorizontalRasterGrid.d.ts +3 -0
- package/dist/volume-section/createHorizontalRasterGrid.js +1 -0
- package/dist/volume-section/createVolumeSection.d.ts +3 -0
- package/dist/volume-section/createVolumeSection.js +1 -0
- package/dist/volume-section/createVolumeSectionRasterGrid.d.ts +3 -0
- package/dist/volume-section/createVolumeSectionRasterGrid.js +1 -0
- package/dist/volume-section/createVolumeSectionRouteProfile.d.ts +3 -0
- package/dist/volume-section/createVolumeSectionRouteProfile.js +1 -0
- package/dist/volume-section/geographic.d.ts +3 -0
- package/dist/volume-section/geographic.js +1 -0
- package/dist/volume-section/gridLayerStatistics.d.ts +9 -0
- package/dist/volume-section/gridLayerStatistics.js +1 -0
- package/dist/volume-section/index.cjs +1 -0
- package/dist/volume-section/index.d.ts +8 -0
- package/dist/volume-section/index.js +1 -0
- package/dist/volume-section/index.mjs +1 -0
- package/dist/volume-section/m4-w-volume-section.umd.js +1 -0
- package/dist/volume-section/routeSampling.d.ts +9 -0
- package/dist/volume-section/routeSampling.js +1 -0
- package/dist/volume-section/volumeSectionTypes.d.ts +39 -0
- package/dist/volume-section/volumeSectionTypes.js +1 -0
- package/package.json +14 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0x2e1660=_0x2b0a;(function(_0x32911e,_0x372517){const _0x4751ac=_0x2b0a,_0x2a6d36=_0x32911e();while(!![]){try{const _0x5ee4bd=parseInt(_0x4751ac(0x1cd))/0x1+-parseInt(_0x4751ac(0x150))/0x2*(parseInt(_0x4751ac(0x1dc))/0x3)+parseInt(_0x4751ac(0x25b))/0x4*(-parseInt(_0x4751ac(0xd6))/0x5)+-parseInt(_0x4751ac(0x215))/0x6+-parseInt(_0x4751ac(0x3d3))/0x7+parseInt(_0x4751ac(0x3b7))/0x8+parseInt(_0x4751ac(0x3e6))/0x9*(parseInt(_0x4751ac(0x296))/0xa);if(_0x5ee4bd===_0x372517)break;else _0x2a6d36['push'](_0x2a6d36['shift']());}catch(_0x62fad){_0x2a6d36['push'](_0x2a6d36['shift']());}}}(_0x1938,0x339f1),Object[_0x2e1660(0x190)](exports,Symbol[_0x2e1660(0x1e2)],{'value':_0x2e1660(0x3bb)}));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=_0x5144f3=>_0x5144f3*Math['PI']/0xb4,geodeticToEcef=(_0x4f5cc8,_0x10f853,_0x585c6e)=>{const _0x3c1ced=_0x2e1660;let _0x296b85=Math[_0x3c1ced(0x2f5)](_0x10f853),_0x4e60b9=Math[_0x3c1ced(0x254)](_0x10f853),_0x2f3404=Math[_0x3c1ced(0x2f5)](_0x4f5cc8),_0x2807b7=Math[_0x3c1ced(0x254)](_0x4f5cc8),_0x31e015=WGS84_SEMI_MAJOR_AXIS_METERS/Math[_0x3c1ced(0x3e4)](0x1-WGS84_FIRST_ECCENTRICITY_SQUARED*_0x296b85*_0x296b85);return[(_0x31e015+_0x585c6e)*_0x4e60b9*_0x2807b7,(_0x31e015+_0x585c6e)*_0x4e60b9*_0x2f3404,(_0x31e015*(0x1-WGS84_FIRST_ECCENTRICITY_SQUARED)+_0x585c6e)*_0x296b85];},validateAxisSpan=(_0x18414c,_0xd9ab86,_0x524c1a)=>{const _0x36247c=_0x2e1660;if(!Number[_0x36247c(0x2c4)](_0x18414c)||!Number[_0x36247c(0x2c4)](_0xd9ab86)||_0x18414c===_0xd9ab86)throw Error(_0x524c1a+_0x36247c(0x265)+_0x524c1a+'\x20轴必须包含两个不同的有限端点。');},createGeographicVolumeLayout=(_0x39fab0,_0x515327=0x1)=>{const _0x5a75c6=_0x2e1660;let _0xbadede=degreesToRadians(_0x39fab0['xAxis'][_0x5a75c6(0x2ce)]),_0xe595b2=degreesToRadians(_0x39fab0[_0x5a75c6(0x3a3)]['end']),_0x1e6ab0=degreesToRadians(_0x39fab0[_0x5a75c6(0x271)][_0x5a75c6(0x2ce)]),_0xb4ec8e=degreesToRadians(_0x39fab0['zAxis'][_0x5a75c6(0x209)]);validateAxisSpan(_0xbadede,_0xe595b2,_0x5a75c6(0x12a)),validateAxisSpan(_0x1e6ab0,_0xb4ec8e,'Latitude\x20/\x20纬度');let _0x2036bd=_0x39fab0[_0x5a75c6(0x185)][_0x5a75c6(0x2ce)],_0x3c452d=_0x39fab0[_0x5a75c6(0x185)][_0x5a75c6(0x209)];if(validateAxisSpan(_0x2036bd,_0x3c452d,_0x5a75c6(0x3af)),!(_0x515327>0x0)||!Number['isFinite'](_0x515327))throw Error(_0x5a75c6(0x2a6));let _0x116c53=_0x2036bd+(_0x3c452d-_0x2036bd)*_0x515327,_0x57959c=(_0xbadede+_0xe595b2)/0x2,_0x4c683f=(_0x1e6ab0+_0xb4ec8e)/0x2,_0x4712bb=geodeticToEcef(_0x57959c,_0x4c683f,0x0),_0x2232eb=Math[_0x5a75c6(0x193)](_0xe595b2-_0xbadede)*WGS84_SEMI_MAJOR_AXIS_METERS*Math[_0x5a75c6(0x3b1)](0.01,Math[_0x5a75c6(0x254)](_0x4c683f)),_0x6fe3d6=Math['abs'](_0xb4ec8e-_0x1e6ab0)*WGS84_SEMI_MAJOR_AXIS_METERS,_0x1371e7=Math[_0x5a75c6(0x3b1)](_0x2232eb,_0x6fe3d6);if(!(_0x1371e7>0x0)||!Number[_0x5a75c6(0x2c4)](_0x1371e7))throw Error(_0x5a75c6(0x159));let _0xacfe03=[0x1/0x0,0x1/0x0,0x1/0x0],_0x428772=[-0x1/0x0,-0x1/0x0,-0x1/0x0];for(let _0x32a3d9=0x0;_0x32a3d9<=0x8;_0x32a3d9+=0x1){let _0x4d8033=_0x1e6ab0+(_0xb4ec8e-_0x1e6ab0)*_0x32a3d9/0x8;for(let _0x3a1377=0x0;_0x3a1377<=0x8;_0x3a1377+=0x1){let _0x3e16a0=_0xbadede+(_0xe595b2-_0xbadede)*_0x3a1377/0x8;for(let _0x8e4a7a of[_0x2036bd,_0x116c53]){let _0x3ddca1=geodeticToEcef(_0x3e16a0,_0x4d8033,_0x8e4a7a);for(let _0x15ac07=0x0;_0x15ac07<0x3;_0x15ac07+=0x1){let _0x5e65c9=(_0x3ddca1[_0x15ac07]-_0x4712bb[_0x15ac07])/_0x1371e7;_0xacfe03[_0x15ac07]=Math['min'](_0xacfe03[_0x15ac07],_0x5e65c9),_0x428772[_0x15ac07]=Math['max'](_0x428772[_0x15ac07],_0x5e65c9);}}}}let _0x3cbd6b=_0x428772[_0x5a75c6(0x10e)]((_0x58453a,_0x48269b)=>_0x58453a-_0xacfe03[_0x48269b]);if(_0x3cbd6b['some'](_0x179dfd=>!(_0x179dfd>0x0)||!Number[_0x5a75c6(0x2c4)](_0x179dfd)))throw Error(_0x5a75c6(0x2ff));return{'centerEcef':_0x4712bb,'normalizationMeters':_0x1371e7,'proxyModelMatrix':[_0x3cbd6b[0x0],0x0,0x0,0x0,0x0,_0x3cbd6b[0x1],0x0,0x0,0x0,0x0,_0x3cbd6b[0x2],0x0,_0xacfe03[0x0],_0xacfe03[0x1],_0xacfe03[0x2],0x1],'transform':{'mode':_0x5a75c6(0x3ca),'centerEcefScaled':[_0x4712bb[0x0]/_0x1371e7,_0x4712bb[0x1]/_0x1371e7,_0x4712bb[0x2]/_0x1371e7],'semiMajorAxisScaled':WGS84_SEMI_MAJOR_AXIS_METERS/_0x1371e7,'semiMinorAxisScaled':WGS84_SEMI_MINOR_AXIS_METERS/_0x1371e7,'longitudeRadians':[_0xbadede,_0xe595b2],'latitudeRadians':[_0x1e6ab0,_0xb4ec8e],'heightScaled':[_0x2036bd/_0x1371e7,_0x116c53/_0x1371e7]}};},ecefToGeographicVolumeLocal=(_0x276b43,_0x15189a)=>[(_0x276b43[0x0]-_0x15189a[_0x2e1660(0x39a)][0x0])/_0x15189a[_0x2e1660(0x413)],(_0x276b43[0x1]-_0x15189a['centerEcef'][0x1])/_0x15189a['normalizationMeters'],(_0x276b43[0x2]-_0x15189a[_0x2e1660(0x39a)][0x2])/_0x15189a[_0x2e1660(0x413)]],validatePositiveInteger=(_0x2fca89,_0x2fd049)=>{const _0x4819a5=_0x2e1660;if(!Number[_0x4819a5(0x406)](_0x2fca89)||_0x2fca89<=0x0)throw Error(_0x2fd049+_0x4819a5(0x149)+_0x2fd049+'\x20必须是正整数。');},validateAxis=(_0x537500,_0x5470e7)=>{const _0x20d80c=_0x2e1660;if(validatePositiveInteger(_0x537500[_0x20d80c(0x2e2)],_0x5470e7+'\x20count'),!Number[_0x20d80c(0x2c4)](_0x537500[_0x20d80c(0x2ce)])||!Number[_0x20d80c(0x2c4)](_0x537500[_0x20d80c(0x209)]))throw Error(_0x5470e7+_0x20d80c(0x279)+_0x5470e7+_0x20d80c(0x419));if(_0x537500[_0x20d80c(0x2e2)]===0x1&&_0x537500[_0x20d80c(0x2ce)]!==_0x537500[_0x20d80c(0x209)])throw Error(_0x5470e7+'\x20with\x20one\x20sample\x20must\x20use\x20equal\x20endpoints.\x20'+_0x5470e7+_0x20d80c(0x220));if(_0x537500[_0x20d80c(0x2e2)]>0x1&&_0x537500[_0x20d80c(0x2ce)]===_0x537500['end'])throw Error(_0x5470e7+'\x20with\x20multiple\x20samples\x20must\x20have\x20a\x20non-zero\x20step.\x20'+_0x5470e7+'\x20包含多个采样点时步长不能为零。');},validateNoData=(_0x1b0eae,_0x52bf4c)=>{const _0x4bb1b6=_0x2e1660;if(_0x1b0eae!==void 0x0&&!Number['isFinite'](_0x1b0eae)&&!Number[_0x4bb1b6(0x1d5)](_0x1b0eae))throw Error(_0x52bf4c+'\x20noData\x20must\x20be\x20finite\x20or\x20NaN.\x20'+_0x52bf4c+_0x4bb1b6(0x130));},rangesEqual=(_0xbc906b,_0x10580b)=>_0xbc906b[_0x2e1660(0x23f)]===_0x10580b['xStart']&&_0xbc906b[_0x2e1660(0x1ca)]===_0x10580b[_0x2e1660(0x1ca)]&&_0xbc906b['levelStart']===_0x10580b[_0x2e1660(0x182)]&&_0xbc906b[_0x2e1660(0x1f5)]===_0x10580b[_0x2e1660(0x1f5)]&&_0xbc906b[_0x2e1660(0x30e)]===_0x10580b[_0x2e1660(0x30e)]&&_0xbc906b[_0x2e1660(0x37b)]===_0x10580b[_0x2e1660(0x37b)],validateVolumeMetadata=_0x3e75ef=>{const _0x277c60=_0x2e1660;if(validateAxis(_0x3e75ef[_0x277c60(0x3a3)],'Volume\x20X\x20axis'),validateAxis(_0x3e75ef[_0x277c60(0x185)],'Volume\x20Y\x20axis'),validateAxis(_0x3e75ef[_0x277c60(0x271)],'Volume\x20Z\x20axis'),validatePositiveInteger(_0x3e75ef['timeCount'],'Volume\x20timeCount'),validateNoData(_0x3e75ef['noData'],_0x277c60(0x230)),_0x3e75ef[_0x277c60(0xe6)]!==void 0x0&&!Number[_0x277c60(0x2c4)](_0x3e75ef[_0x277c60(0xe6)]))throw Error('Volume\x20valueScale\x20must\x20be\x20finite.\x20体积\x20valueScale\x20必须是有限数值。');if(_0x3e75ef[_0x277c60(0x3bc)]!==void 0x0&&(!Number[_0x277c60(0x406)](_0x3e75ef[_0x277c60(0x3bc)])||_0x3e75ef[_0x277c60(0x3bc)]<0x0))throw Error('Volume\x20revision\x20must\x20be\x20a\x20non-negative\x20integer.\x20体积\x20revision\x20必须是非负整数。');},validateVolumeTimeIndex=(_0x4bb4cc,_0x1d45aa)=>{const _0x291e06=_0x2e1660;if(!Number['isInteger'](_0x1d45aa)||_0x1d45aa<0x0||_0x1d45aa>=_0x4bb4cc[_0x291e06(0x147)])throw Error(_0x291e06(0x28e)+_0x1d45aa+_0x291e06(0x120));},validateVolumeChunkRange=(_0x4be626,_0x572110)=>{const _0x5b6a01=_0x2e1660;let _0x5c590b=[[_0x572110[_0x5b6a01(0x23f)],_0x5b6a01(0x23f)],[_0x572110[_0x5b6a01(0x1ca)],_0x5b6a01(0x1ca)],[_0x572110[_0x5b6a01(0x182)],_0x5b6a01(0x182)],[_0x572110[_0x5b6a01(0x1f5)],_0x5b6a01(0x1f5)],[_0x572110['sourceYStart'],'sourceYStart'],[_0x572110['sourceYCount'],_0x5b6a01(0x37b)]];for(let [_0x1ea338,_0x1d0dde]of _0x5c590b)if(!Number['isInteger'](_0x1ea338)||_0x1ea338<0x0||_0x1d0dde[_0x5b6a01(0x330)](_0x5b6a01(0x2f4))&&_0x1ea338===0x0)throw Error('Volume\x20chunk\x20'+_0x1d0dde+_0x5b6a01(0x1d1)+_0x1ea338+_0x5b6a01(0x3be)+_0x1d0dde+_0x5b6a01(0xf9));if(_0x572110['xStart']+_0x572110['xCount']>_0x4be626[_0x5b6a01(0x3a3)]['count']||_0x572110[_0x5b6a01(0x182)]+_0x572110['levelCount']>_0x4be626[_0x5b6a01(0x185)][_0x5b6a01(0x2e2)]||_0x572110[_0x5b6a01(0x30e)]+_0x572110['sourceYCount']>_0x4be626[_0x5b6a01(0x271)][_0x5b6a01(0x2e2)])throw Error(_0x5b6a01(0x207));},validateVolumeChunk=(_0x57b35c,_0x594c10,_0x520678,_0x49a118)=>{const _0x1aedcc=_0x2e1660;if(validateVolumeTimeIndex(_0x57b35c,_0x594c10[_0x1aedcc(0x200)]),validateVolumeChunkRange(_0x57b35c,_0x594c10[_0x1aedcc(0x338)]),_0x49a118!==void 0x0&&_0x594c10['timeIndex']!==_0x49a118)throw Error(_0x1aedcc(0x1e7));if(_0x520678&&!rangesEqual(_0x594c10['range'],_0x520678))throw Error(_0x1aedcc(0x20b));if(_0x594c10['width']!==_0x594c10[_0x1aedcc(0x338)][_0x1aedcc(0x1ca)]||_0x594c10[_0x1aedcc(0x1c0)]!==_0x594c10[_0x1aedcc(0x338)]['levelCount']||_0x594c10[_0x1aedcc(0xc8)]!==_0x594c10['range'][_0x1aedcc(0x37b)])throw Error(_0x1aedcc(0x22b));let _0xd55533=_0x594c10[_0x1aedcc(0x274)]*_0x594c10[_0x1aedcc(0x1c0)]*_0x594c10[_0x1aedcc(0xc8)];if(!Number['isSafeInteger'](_0xd55533)||_0x594c10[_0x1aedcc(0x21e)][_0x1aedcc(0x37f)]!==_0xd55533)throw Error('Volume\x20chunk\x20requires\x20'+_0xd55533+'\x20values\x20but\x20received\x20'+_0x594c10['values'][_0x1aedcc(0x37f)]+_0x1aedcc(0x134));},validateVolumeSource=_0x5aee6a=>{const _0x84b3d3=_0x2e1660;if(!_0x5aee6a||typeof _0x5aee6a[_0x84b3d3(0x3c7)]!=_0x84b3d3(0xf3))throw Error('Volume\x20source\x20must\x20provide\x20readChunk().\x20体积数据源必须提供\x20readChunk()。');validateVolumeMetadata(_0x5aee6a[_0x84b3d3(0x246)]);},validateBrickShape=_0x1e9b59=>{const _0x26b696=_0x2e1660;for(let [_0x1da62f,_0x4b06d0]of[[_0x1e9b59['width'],'width'],[_0x1e9b59[_0x26b696(0x1c0)],_0x26b696(0x1c0)],[_0x1e9b59[_0x26b696(0xc8)],_0x26b696(0xc8)]])if(!Number[_0x26b696(0x406)](_0x1da62f)||_0x1da62f<=0x0)throw Error(_0x26b696(0x10f)+_0x4b06d0+_0x26b696(0x316)+_0x4b06d0+_0x26b696(0x29d));if(!Number['isInteger'](_0x1e9b59['halo'])||_0x1e9b59['halo']<0x1)throw Error(_0x26b696(0x2c9));},resolveVolumeBrickShape=(_0x47b7d0={})=>{const _0x2e7e0b=_0x2e1660;let _0x4d458d={'width':_0x47b7d0[_0x2e7e0b(0x274)]??0x100,'height':_0x47b7d0['height']??0x8,'depth':_0x47b7d0['depth']??0x100,'halo':_0x47b7d0[_0x2e7e0b(0x405)]??0x1};return validateBrickShape(_0x4d458d),_0x4d458d;},createVolumeBrickLayout=(_0x57e021,_0x33c6e3={})=>{const _0xe252da=_0x2e1660;validateVolumeMetadata(_0x57e021);let _0xcb32e5=resolveVolumeBrickShape(_0x33c6e3),_0x4097ce=Math[_0xe252da(0x32e)](_0x57e021['xAxis']['count']/_0xcb32e5[_0xe252da(0x274)]),_0x1ab732=Math[_0xe252da(0x32e)](_0x57e021[_0xe252da(0x185)][_0xe252da(0x2e2)]/_0xcb32e5[_0xe252da(0x1c0)]),_0x4de233=Math[_0xe252da(0x32e)](_0x57e021[_0xe252da(0x271)][_0xe252da(0x2e2)]/_0xcb32e5[_0xe252da(0xc8)]);return{'shape':_0xcb32e5,'countX':_0x4097ce,'countY':_0x1ab732,'countZ':_0x4de233,'brickCount':_0x4097ce*_0x1ab732*_0x4de233};},createVolumeBrickKey=_0x5d4817=>_0x5d4817['x']+':'+_0x5d4817['y']+':'+_0x5d4817['z'],createVolumeBrickDescriptor=(_0x206d91,_0x1ec84b,_0x47091e)=>{const _0x59f9e6=_0x2e1660;if(!Number[_0x59f9e6(0x406)](_0x47091e['x'])||!Number[_0x59f9e6(0x406)](_0x47091e['y'])||!Number[_0x59f9e6(0x406)](_0x47091e['z'])||_0x47091e['x']<0x0||_0x47091e['x']>=_0x1ec84b[_0x59f9e6(0x10b)]||_0x47091e['y']<0x0||_0x47091e['y']>=_0x1ec84b[_0x59f9e6(0x30d)]||_0x47091e['z']<0x0||_0x47091e['z']>=_0x1ec84b[_0x59f9e6(0x17a)])throw Error(_0x59f9e6(0x39f));let _0x4f8bb2=_0x47091e['x']*_0x1ec84b[_0x59f9e6(0x39b)][_0x59f9e6(0x274)],_0x2c1b00=_0x47091e['y']*_0x1ec84b[_0x59f9e6(0x39b)][_0x59f9e6(0x1c0)],_0x423be6=_0x47091e['z']*_0x1ec84b[_0x59f9e6(0x39b)][_0x59f9e6(0xc8)],_0x4fe081=Math[_0x59f9e6(0x3ce)](_0x1ec84b[_0x59f9e6(0x39b)]['width'],_0x206d91['xAxis']['count']-_0x4f8bb2),_0x45e923=Math[_0x59f9e6(0x3ce)](_0x1ec84b[_0x59f9e6(0x39b)][_0x59f9e6(0x1c0)],_0x206d91[_0x59f9e6(0x185)][_0x59f9e6(0x2e2)]-_0x2c1b00),_0x2efce4=Math[_0x59f9e6(0x3ce)](_0x1ec84b[_0x59f9e6(0x39b)][_0x59f9e6(0xc8)],_0x206d91[_0x59f9e6(0x271)][_0x59f9e6(0x2e2)]-_0x423be6),_0x26082a=_0x1ec84b[_0x59f9e6(0x39b)]['halo'],_0x207337=Math[_0x59f9e6(0x3b1)](0x0,_0x4f8bb2-_0x26082a),_0x2bd7f4=Math[_0x59f9e6(0x3b1)](0x0,_0x2c1b00-_0x26082a),_0x3527ff=Math[_0x59f9e6(0x3b1)](0x0,_0x423be6-_0x26082a),_0x2a207b=Math[_0x59f9e6(0x3ce)](_0x206d91[_0x59f9e6(0x3a3)][_0x59f9e6(0x2e2)],_0x4f8bb2+_0x4fe081+_0x26082a),_0x339f07=Math['min'](_0x206d91['yAxis'][_0x59f9e6(0x2e2)],_0x2c1b00+_0x45e923+_0x26082a),_0x28f968=Math['min'](_0x206d91[_0x59f9e6(0x271)][_0x59f9e6(0x2e2)],_0x423be6+_0x2efce4+_0x26082a),_0x347533=_0x1ec84b[_0x59f9e6(0x39b)]['width']+_0x26082a*0x2,_0x3fb45d=_0x1ec84b[_0x59f9e6(0x39b)][_0x59f9e6(0x1c0)]+_0x26082a*0x2,_0x4fbff6=_0x1ec84b[_0x59f9e6(0x39b)][_0x59f9e6(0xc8)]+_0x26082a*0x2;return{'key':createVolumeBrickKey(_0x47091e),'coordinate':_0x47091e,'coreRange':{'xStart':_0x4f8bb2,'xCount':_0x4fe081,'levelStart':_0x2c1b00,'levelCount':_0x45e923,'sourceYStart':_0x423be6,'sourceYCount':_0x2efce4},'readRange':{'xStart':_0x207337,'xCount':_0x2a207b-_0x207337,'levelStart':_0x2bd7f4,'levelCount':_0x339f07-_0x2bd7f4,'sourceYStart':_0x3527ff,'sourceYCount':_0x28f968-_0x3527ff},'physicalWidth':_0x347533,'physicalHeight':_0x3fb45d,'physicalDepth':_0x4fbff6,'byteLength':_0x347533*_0x3fb45d*_0x4fbff6*Float32Array[_0x59f9e6(0x385)]};},createVolumeBrickDescriptors=(_0x2839c8,_0x25221d)=>{const _0x33048e=_0x2e1660;let _0x44df2a=[];for(let _0x3a93fe=0x0;_0x3a93fe<_0x25221d['countZ'];_0x3a93fe+=0x1)for(let _0x20c370=0x0;_0x20c370<_0x25221d[_0x33048e(0x30d)];_0x20c370+=0x1)for(let _0x3a7a60=0x0;_0x3a7a60<_0x25221d[_0x33048e(0x10b)];_0x3a7a60+=0x1)_0x44df2a[_0x33048e(0x3aa)](createVolumeBrickDescriptor(_0x2839c8,_0x25221d,{'x':_0x3a7a60,'y':_0x20c370,'z':_0x3a93fe}));return _0x44df2a;},EPSILON=1e-8,createMatrix=()=>new Float32Array(0x10),dotVector3=(_0x2975c7,_0x33d274)=>_0x2975c7[0x0]*_0x33d274[0x0]+_0x2975c7[0x1]*_0x33d274[0x1]+_0x2975c7[0x2]*_0x33d274[0x2],subtractVector3=(_0x2f9797,_0x547bf4)=>[_0x2f9797[0x0]-_0x547bf4[0x0],_0x2f9797[0x1]-_0x547bf4[0x1],_0x2f9797[0x2]-_0x547bf4[0x2]],crossVector3=(_0x3cba6a,_0x10717c)=>[_0x3cba6a[0x1]*_0x10717c[0x2]-_0x3cba6a[0x2]*_0x10717c[0x1],_0x3cba6a[0x2]*_0x10717c[0x0]-_0x3cba6a[0x0]*_0x10717c[0x2],_0x3cba6a[0x0]*_0x10717c[0x1]-_0x3cba6a[0x1]*_0x10717c[0x0]],normalizeVector3=_0x3edcd2=>{const _0x2ce4de=_0x2e1660;let _0x2db87e=Math[_0x2ce4de(0x305)](_0x3edcd2[0x0],_0x3edcd2[0x1],_0x3edcd2[0x2]);if(_0x2db87e<=EPSILON)throw Error(_0x2ce4de(0x210));return[_0x3edcd2[0x0]/_0x2db87e,_0x3edcd2[0x1]/_0x2db87e,_0x3edcd2[0x2]/_0x2db87e];},createIdentityMatrix=()=>{let _0x250278=createMatrix();return _0x250278[0x0]=0x1,_0x250278[0x5]=0x1,_0x250278[0xa]=0x1,_0x250278[0xf]=0x1,_0x250278;},multiplyMatrices=(_0xcdf0b7,_0x95016e)=>{let _0x309377=createMatrix();for(let _0x3eb115=0x0;_0x3eb115<0x4;_0x3eb115+=0x1)for(let _0x3568d3=0x0;_0x3568d3<0x4;_0x3568d3+=0x1){let _0x41e3bd=0x0;for(let _0x69e1f1=0x0;_0x69e1f1<0x4;_0x69e1f1+=0x1)_0x41e3bd+=_0xcdf0b7[_0x69e1f1*0x4+_0x3568d3]*_0x95016e[_0x3eb115*0x4+_0x69e1f1];_0x309377[_0x3eb115*0x4+_0x3568d3]=_0x41e3bd;}return _0x309377;},invertMatrix=_0x127583=>{const _0x3e1837=_0x2e1660;let _0x2f0101=Array['from']({'length':0x4},(_0x24bdd1,_0x59d0a0)=>{let _0x25d207=new Float64Array(0x8);for(let _0x26a4e0=0x0;_0x26a4e0<0x4;_0x26a4e0+=0x1)_0x25d207[_0x26a4e0]=_0x127583[_0x26a4e0*0x4+_0x59d0a0];return _0x25d207[_0x59d0a0+0x4]=0x1,_0x25d207;});for(let _0x552cf4=0x0;_0x552cf4<0x4;_0x552cf4+=0x1){let _0x367b88=_0x552cf4;for(let _0xb59bd5=_0x552cf4+0x1;_0xb59bd5<0x4;_0xb59bd5+=0x1)Math[_0x3e1837(0x193)](_0x2f0101[_0xb59bd5][_0x552cf4])>Math[_0x3e1837(0x193)](_0x2f0101[_0x367b88][_0x552cf4])&&(_0x367b88=_0xb59bd5);if(Math[_0x3e1837(0x193)](_0x2f0101[_0x367b88][_0x552cf4])<=EPSILON)throw Error(_0x3e1837(0x3dd));_0x367b88!==_0x552cf4&&([_0x2f0101[_0x552cf4],_0x2f0101[_0x367b88]]=[_0x2f0101[_0x367b88],_0x2f0101[_0x552cf4]]);let _0x389020=_0x2f0101[_0x552cf4][_0x552cf4];for(let _0x5baf4a=0x0;_0x5baf4a<0x8;_0x5baf4a+=0x1)_0x2f0101[_0x552cf4][_0x5baf4a]/=_0x389020;for(let _0x553dd0=0x0;_0x553dd0<0x4;_0x553dd0+=0x1){if(_0x553dd0===_0x552cf4)continue;let _0x4e821e=_0x2f0101[_0x553dd0][_0x552cf4];for(let _0x4ef0ed=0x0;_0x4ef0ed<0x8;_0x4ef0ed+=0x1)_0x2f0101[_0x553dd0][_0x4ef0ed]-=_0x4e821e*_0x2f0101[_0x552cf4][_0x4ef0ed];}}let _0x48878c=createMatrix();for(let _0x164ac=0x0;_0x164ac<0x4;_0x164ac+=0x1)for(let _0x55cf90=0x0;_0x55cf90<0x4;_0x55cf90+=0x1)_0x48878c[_0x55cf90*0x4+_0x164ac]=_0x2f0101[_0x164ac][_0x55cf90+0x4];return _0x48878c;},createLookAtMatrix=(_0x224748,_0x186510,_0x163742)=>{let _0xdb3942=normalizeVector3(subtractVector3(_0x224748,_0x186510)),_0x410c6b=normalizeVector3(crossVector3(_0x163742,_0xdb3942)),_0x14007d=crossVector3(_0xdb3942,_0x410c6b),_0x4e2777=createIdentityMatrix();return _0x4e2777[0x0]=_0x410c6b[0x0],_0x4e2777[0x1]=_0x14007d[0x0],_0x4e2777[0x2]=_0xdb3942[0x0],_0x4e2777[0x4]=_0x410c6b[0x1],_0x4e2777[0x5]=_0x14007d[0x1],_0x4e2777[0x6]=_0xdb3942[0x1],_0x4e2777[0x8]=_0x410c6b[0x2],_0x4e2777[0x9]=_0x14007d[0x2],_0x4e2777[0xa]=_0xdb3942[0x2],_0x4e2777[0xc]=-dotVector3(_0x410c6b,_0x224748),_0x4e2777[0xd]=-dotVector3(_0x14007d,_0x224748),_0x4e2777[0xe]=-dotVector3(_0xdb3942,_0x224748),_0x4e2777;},createPerspectiveMatrix=(_0x170b08,_0x2e2d46,_0x1f3dbf,_0x491d80)=>{const _0x192e4f=_0x2e1660;if(!(_0x170b08>0x0&&_0x170b08<Math['PI']))throw Error(_0x192e4f(0xf0));if(!(_0x2e2d46>0x0))throw Error('相机宽高比必须大于\x200。');if(!(_0x1f3dbf>0x0&&_0x491d80>_0x1f3dbf))throw Error(_0x192e4f(0x1f1));let _0x15a21d=0x1/Math[_0x192e4f(0x3fe)](_0x170b08/0x2),_0xb2bfc7=createMatrix();return _0xb2bfc7[0x0]=_0x15a21d/_0x2e2d46,_0xb2bfc7[0x5]=_0x15a21d,_0xb2bfc7[0xa]=_0x491d80/(_0x1f3dbf-_0x491d80),_0xb2bfc7[0xb]=-0x1,_0xb2bfc7[0xe]=_0x1f3dbf*_0x491d80/(_0x1f3dbf-_0x491d80),_0xb2bfc7;},createOrthographicMatrix=(_0x9a3cde,_0x3cb36f,_0x4a1174,_0x462a7b)=>{const _0x1136bf=_0x2e1660;if(!(_0x9a3cde>0x0&&_0x3cb36f>0x0))throw Error(_0x1136bf(0x13d));if(!(_0x4a1174>=0x0&&_0x462a7b>_0x4a1174))throw Error(_0x1136bf(0x29c));let _0x38acd0=_0x9a3cde*_0x3cb36f,_0x4ffb20=createIdentityMatrix();return _0x4ffb20[0x0]=0x2/_0x38acd0,_0x4ffb20[0x5]=0x2/_0x9a3cde,_0x4ffb20[0xa]=0x1/(_0x4a1174-_0x462a7b),_0x4ffb20[0xe]=_0x4a1174/(_0x4a1174-_0x462a7b),_0x4ffb20;},createScaleMatrix=(_0x3be41c,_0x4bbbba,_0x23be89)=>{let _0x2b8de0=createIdentityMatrix();return _0x2b8de0[0x0]=_0x3be41c,_0x2b8de0[0x5]=_0x4bbbba,_0x2b8de0[0xa]=_0x23be89,_0x2b8de0;},composeVolumeModelMatrix=(_0xe1d71b,_0x1e555e)=>{const _0x29bc8b=_0x2e1660;if(!(_0x1e555e>0x0)||!Number[_0x29bc8b(0x2c4)](_0x1e555e))throw Error(_0x29bc8b(0x123));let _0x1f7cd2=createScaleMatrix(0x1,_0x1e555e,0x1);return _0xe1d71b?multiplyMatrices(_0xe1d71b,_0x1f7cd2):_0x1f7cd2;},transformPoint=(_0x336778,_0x308ac0,_0x562bd8=0x1)=>[_0x336778[0x0]*_0x308ac0[0x0]+_0x336778[0x4]*_0x308ac0[0x1]+_0x336778[0x8]*_0x308ac0[0x2]+_0x336778[0xc]*_0x562bd8,_0x336778[0x1]*_0x308ac0[0x0]+_0x336778[0x5]*_0x308ac0[0x1]+_0x336778[0x9]*_0x308ac0[0x2]+_0x336778[0xd]*_0x562bd8,_0x336778[0x2]*_0x308ac0[0x0]+_0x336778[0x6]*_0x308ac0[0x1]+_0x336778[0xa]*_0x308ac0[0x2]+_0x336778[0xe]*_0x562bd8,_0x336778[0x3]*_0x308ac0[0x0]+_0x336778[0x7]*_0x308ac0[0x1]+_0x336778[0xb]*_0x308ac0[0x2]+_0x336778[0xf]*_0x562bd8],projectPointToViewport=(_0x24d331,_0x2a6b76,_0x3c7cf9,_0x3aafab)=>{let _0x4b7a6c=transformPoint(_0x24d331,_0x2a6b76);if(_0x4b7a6c[0x3]<=EPSILON)return null;let _0x336334=0x1/_0x4b7a6c[0x3];return[(_0x4b7a6c[0x0]*_0x336334*0.5+0.5)*_0x3c7cf9,(0.5-_0x4b7a6c[0x1]*_0x336334*0.5)*_0x3aafab,_0x4b7a6c[0x2]*_0x336334];},DEFAULT_POSITION=[0x0,0x1,0x2],DEFAULT_TARGET=[0x0,0x0,0x0],DEFAULT_UP=[0x0,0x1,0x0],DEFAULT_PROJECTION={'type':_0x2e1660(0x219),'fovYDegrees':0x2d,'near':0.01,'far':0x2710},DEGREE_TO_RADIAN=Math['PI']/0xb4,cloneVector=_0x5cec44=>[_0x5cec44[0x0],_0x5cec44[0x1],_0x5cec44[0x2]],cloneProjection=_0xcabfd0=>(_0xcabfd0[_0x2e1660(0x208)],{..._0xcabfd0}),cloneState=_0x4148=>({'position':cloneVector(_0x4148['position']),'target':cloneVector(_0x4148['target']),'up':cloneVector(_0x4148['up']),'projection':cloneProjection(_0x4148[_0x2e1660(0x1e6)])}),subtractVector=(_0x198e31,_0x41d482)=>[_0x198e31[0x0]-_0x41d482[0x0],_0x198e31[0x1]-_0x41d482[0x1],_0x198e31[0x2]-_0x41d482[0x2]],addVector=(_0x8ceca6,_0x22c2ca)=>[_0x8ceca6[0x0]+_0x22c2ca[0x0],_0x8ceca6[0x1]+_0x22c2ca[0x1],_0x8ceca6[0x2]+_0x22c2ca[0x2]],scaleVector=(_0xc6474d,_0x43ff61)=>[_0xc6474d[0x0]*_0x43ff61,_0xc6474d[0x1]*_0x43ff61,_0xc6474d[0x2]*_0x43ff61],crossVector$1=(_0xe156fb,_0x3e3e52)=>[_0xe156fb[0x1]*_0x3e3e52[0x2]-_0xe156fb[0x2]*_0x3e3e52[0x1],_0xe156fb[0x2]*_0x3e3e52[0x0]-_0xe156fb[0x0]*_0x3e3e52[0x2],_0xe156fb[0x0]*_0x3e3e52[0x1]-_0xe156fb[0x1]*_0x3e3e52[0x0]],normalizeVector$1=_0x7d05e8=>{const _0x531fe4=_0x2e1660;let _0x29f482=Math[_0x531fe4(0x305)](_0x7d05e8[0x0],_0x7d05e8[0x1],_0x7d05e8[0x2]);return _0x29f482===0x0?[0x0,0x0,0x0]:scaleVector(_0x7d05e8,0x1/_0x29f482);},clamp$1=(_0xa3288a,_0x25df05,_0x8c5288)=>Math[_0x2e1660(0x3ce)](_0x8c5288,Math['max'](_0x25df05,_0xa3288a)),validateProjection=_0x2212da=>{const _0x1e70db=_0x2e1660;if(!(_0x2212da['near']>=0x0&&_0x2212da[_0x1e70db(0x21f)]>_0x2212da[_0x1e70db(0x2d8)]))throw Error(_0x1e70db(0x29c));if(_0x2212da[_0x1e70db(0x208)]===_0x1e70db(0x219)&&!(_0x2212da[_0x1e70db(0x2d8)]>0x0&&_0x2212da[_0x1e70db(0x1d3)]>0x0&&_0x2212da[_0x1e70db(0x1d3)]<0xb4))throw Error('透视相机参数无效。');if(_0x2212da[_0x1e70db(0x208)]===_0x1e70db(0x302)&&!(_0x2212da[_0x1e70db(0x1c0)]>0x0))throw Error(_0x1e70db(0x3db));},resolveInitialState=_0x46cf8b=>{const _0x32c3de=_0x2e1660;let _0xe31604={'position':_0x46cf8b[_0x32c3de(0x322)]?.['position']?cloneVector(_0x46cf8b[_0x32c3de(0x322)]['position']):cloneVector(DEFAULT_POSITION),'target':_0x46cf8b[_0x32c3de(0x322)]?.[_0x32c3de(0xda)]?cloneVector(_0x46cf8b[_0x32c3de(0x322)][_0x32c3de(0xda)]):cloneVector(DEFAULT_TARGET),'up':_0x46cf8b['state']?.['up']?cloneVector(_0x46cf8b[_0x32c3de(0x322)]['up']):cloneVector(DEFAULT_UP),'projection':_0x46cf8b[_0x32c3de(0x322)]?.[_0x32c3de(0x1e6)]?cloneProjection(_0x46cf8b[_0x32c3de(0x322)][_0x32c3de(0x1e6)]):cloneProjection(DEFAULT_PROJECTION)};return validateProjection(_0xe31604[_0x32c3de(0x1e6)]),_0xe31604;};function _0x2b0a(_0x501aa2,_0x4c590c){const _0x1938f0=_0x1938();return _0x2b0a=function(_0x2b0a87,_0x1b4013){_0x2b0a87=_0x2b0a87-0xc2;let _0x511778=_0x1938f0[_0x2b0a87];return _0x511778;},_0x2b0a(_0x501aa2,_0x4c590c);}var VolumeCamera=class{[_0x2e1660(0x358)];['aspect'];['rotateSpeed'];[_0x2e1660(0x1eb)];[_0x2e1660(0x144)];[_0x2e1660(0xd3)];[_0x2e1660(0x353)];[_0x2e1660(0x3e1)];[_0x2e1660(0x213)];constructor(_0x149de2={}){const _0xb581b3=_0x2e1660;if(this[_0xb581b3(0x358)]=resolveInitialState(_0x149de2),this[_0xb581b3(0x1f7)]=_0x149de2[_0xb581b3(0x1f7)]??0x1,this[_0xb581b3(0x26d)]=_0x149de2[_0xb581b3(0x26d)]??0.005,this[_0xb581b3(0x1eb)]=_0x149de2[_0xb581b3(0x1eb)]??0x1,this['zoomSpeed']=_0x149de2[_0xb581b3(0x144)]??0.0015,this[_0xb581b3(0xd3)]=_0x149de2[_0xb581b3(0xd3)]??0.001,this['maximumDistance']=_0x149de2['maximumDistance']??0x1/0x0,this[_0xb581b3(0x3e1)]=(_0x149de2[_0xb581b3(0x2e8)]??-0x59)*DEGREE_TO_RADIAN,this['maximumPitch']=(_0x149de2[_0xb581b3(0x1df)]??0x59)*DEGREE_TO_RADIAN,!(this[_0xb581b3(0x1f7)]>0x0))throw Error(_0xb581b3(0x2ca));}get['state'](){const _0x114747=_0x2e1660;return cloneState(this[_0x114747(0x358)]);}get[_0x2e1660(0x3a4)](){const _0x115b16=_0x2e1660;let _0x591324=createLookAtMatrix(this[_0x115b16(0x358)]['position'],this[_0x115b16(0x358)][_0x115b16(0xda)],this[_0x115b16(0x358)]['up']),_0xd5f9ee=this[_0x115b16(0x125)](),_0x4a05aa=multiplyMatrices(_0xd5f9ee,_0x591324);return{'view':_0x591324,'projection':_0xd5f9ee,'viewProjection':_0x4a05aa,'inverseViewProjection':invertMatrix(_0x4a05aa)};}['setState'](_0x2e67e6){const _0xd0d9c0=_0x2e1660;validateProjection(_0x2e67e6['projection']),this[_0xd0d9c0(0x358)]=cloneState(_0x2e67e6);}['setAspect'](_0x409846){const _0x23178b=_0x2e1660;if(!(_0x409846>0x0)||!Number[_0x23178b(0x2c4)](_0x409846))throw Error(_0x23178b(0x25e));this[_0x23178b(0x1f7)]=_0x409846;}[_0x2e1660(0x119)](_0x30402a){const _0x255ed8=_0x2e1660;if(_0x30402a===this['cameraState'][_0x255ed8(0x1e6)][_0x255ed8(0x208)])return;let _0x4fac10=Math['hypot'](...subtractVector(this[_0x255ed8(0x358)][_0x255ed8(0x154)],this[_0x255ed8(0x358)]['target']));if(_0x30402a==='orthographic'){let _0x1f24c8=this[_0x255ed8(0x358)]['projection'],_0x1553c3=_0x1f24c8[_0x255ed8(0x208)]===_0x255ed8(0x219)?_0x1f24c8[_0x255ed8(0x1d3)]*DEGREE_TO_RADIAN:0x2d*DEGREE_TO_RADIAN;this[_0x255ed8(0x358)][_0x255ed8(0x1e6)]={'type':_0x30402a,'height':0x2*_0x4fac10*Math[_0x255ed8(0x3fe)](_0x1553c3/0x2),'near':_0x1f24c8[_0x255ed8(0x2d8)],'far':_0x1f24c8[_0x255ed8(0x21f)]};return;}let _0x3b2e49=this[_0x255ed8(0x358)][_0x255ed8(0x1e6)],_0x4d741c=_0x3b2e49[_0x255ed8(0x208)]===_0x255ed8(0x302)?_0x3b2e49[_0x255ed8(0x1c0)]/(0x2*Math[_0x255ed8(0x3fe)](0x2d*DEGREE_TO_RADIAN/0x2)):_0x4fac10,_0x2a4a07=normalizeVector$1(subtractVector(this[_0x255ed8(0x358)]['position'],this[_0x255ed8(0x358)][_0x255ed8(0xda)]));this[_0x255ed8(0x358)][_0x255ed8(0x154)]=addVector(this[_0x255ed8(0x358)][_0x255ed8(0xda)],scaleVector(_0x2a4a07,_0x4d741c)),this[_0x255ed8(0x358)][_0x255ed8(0x1e6)]={'type':_0x30402a,'fovYDegrees':0x2d,'near':_0x3b2e49[_0x255ed8(0x2d8)],'far':_0x3b2e49['far']};}[_0x2e1660(0x16e)](_0x1b5f04,_0x1ea92d){const _0x58f690=_0x2e1660;let _0x59f7f6=subtractVector(this[_0x58f690(0x358)][_0x58f690(0x154)],this['cameraState'][_0x58f690(0xda)]),_0x4436ec=Math[_0x58f690(0x305)](..._0x59f7f6);if(_0x4436ec===0x0)return;let _0x195ce6=Math[_0x58f690(0x333)](_0x59f7f6[0x0],_0x59f7f6[0x2])-_0x1b5f04*this[_0x58f690(0x26d)],_0x4aa409=clamp$1(Math[_0x58f690(0x344)](_0x59f7f6[0x1]/_0x4436ec)+_0x1ea92d*this[_0x58f690(0x26d)],this['minimumPitch'],this[_0x58f690(0x213)]),_0x5e1787=Math[_0x58f690(0x254)](_0x4aa409)*_0x4436ec;this[_0x58f690(0x358)][_0x58f690(0x154)]=addVector(this['cameraState'][_0x58f690(0xda)],[Math[_0x58f690(0x2f5)](_0x195ce6)*_0x5e1787,Math[_0x58f690(0x2f5)](_0x4aa409)*_0x4436ec,Math[_0x58f690(0x254)](_0x195ce6)*_0x5e1787]);}[_0x2e1660(0x37e)](_0x2f301e,_0x3c0951,_0x6abdd3){const _0x182435=_0x2e1660;if(!(_0x6abdd3>0x0))return;let _0x5433cb=normalizeVector$1(subtractVector(this[_0x182435(0x358)][_0x182435(0xda)],this[_0x182435(0x358)][_0x182435(0x154)])),_0x4696d6=normalizeVector$1(crossVector$1(_0x5433cb,this[_0x182435(0x358)]['up'])),_0x264c37=normalizeVector$1(crossVector$1(_0x4696d6,_0x5433cb)),_0x5984b9=Math[_0x182435(0x305)](...subtractVector(this[_0x182435(0x358)][_0x182435(0x154)],this[_0x182435(0x358)][_0x182435(0xda)])),_0x3e8800=(this[_0x182435(0x358)][_0x182435(0x1e6)][_0x182435(0x208)]===_0x182435(0x302)?this[_0x182435(0x358)][_0x182435(0x1e6)]['height']:0x2*_0x5984b9*Math[_0x182435(0x3fe)](this[_0x182435(0x358)][_0x182435(0x1e6)][_0x182435(0x1d3)]*DEGREE_TO_RADIAN/0x2))/_0x6abdd3*this[_0x182435(0x1eb)],_0xe12bd4=addVector(scaleVector(_0x4696d6,-_0x2f301e*_0x3e8800),scaleVector(_0x264c37,_0x3c0951*_0x3e8800));this[_0x182435(0x358)]['position']=addVector(this[_0x182435(0x358)]['position'],_0xe12bd4),this[_0x182435(0x358)][_0x182435(0xda)]=addVector(this['cameraState'][_0x182435(0xda)],_0xe12bd4);}[_0x2e1660(0x2e4)](_0x2b6d39){const _0x21ac38=_0x2e1660;let _0x24a2d5=Math[_0x21ac38(0x340)](_0x2b6d39*this[_0x21ac38(0x144)]);if(this['cameraState'][_0x21ac38(0x1e6)][_0x21ac38(0x208)]===_0x21ac38(0x302)){this[_0x21ac38(0x358)][_0x21ac38(0x1e6)]={...this[_0x21ac38(0x358)][_0x21ac38(0x1e6)],'height':Math['max'](this['minimumDistance'],this['cameraState'][_0x21ac38(0x1e6)]['height']*_0x24a2d5)};return;}let _0x2ea92c=subtractVector(this[_0x21ac38(0x358)][_0x21ac38(0x154)],this[_0x21ac38(0x358)][_0x21ac38(0xda)]),_0x60029f=clamp$1(Math[_0x21ac38(0x305)](..._0x2ea92c)*_0x24a2d5,this['minimumDistance'],this[_0x21ac38(0x353)]);this[_0x21ac38(0x358)][_0x21ac38(0x154)]=addVector(this[_0x21ac38(0x358)]['target'],scaleVector(normalizeVector$1(_0x2ea92c),_0x60029f));}[_0x2e1660(0x125)](){const _0x774c75=_0x2e1660;let _0x222007=this[_0x774c75(0x358)]['projection'];return _0x222007[_0x774c75(0x208)]==='perspective'?createPerspectiveMatrix(_0x222007['fovYDegrees']*DEGREE_TO_RADIAN,this[_0x774c75(0x1f7)],_0x222007[_0x774c75(0x2d8)],_0x222007['far']):createOrthographicMatrix(_0x222007[_0x774c75(0x1c0)],this['aspect'],_0x222007[_0x774c75(0x2d8)],_0x222007[_0x774c75(0x21f)]);}};const isMissingValue=(_0x24079a,_0x14d3b4)=>Number['isNaN'](_0x24079a)||_0x14d3b4!==void 0x0&&_0x24079a===_0x14d3b4,axisValueToNormalized=(_0x54d6fa,_0x380a32)=>_0x54d6fa[_0x2e1660(0x2ce)]===_0x54d6fa[_0x2e1660(0x209)]?0x0:(_0x380a32-_0x54d6fa[_0x2e1660(0x2ce)])/(_0x54d6fa[_0x2e1660(0x209)]-_0x54d6fa['start']),validateProfile=_0xc6721f=>{const _0x55f807=_0x2e1660;if(!_0xc6721f['id'])throw Error('路线剖面\x20id\x20不能为空。');if(_0xc6721f[_0x55f807(0x381)][_0x55f807(0x37f)]<0x4||_0xc6721f[_0x55f807(0x381)]['length']%0x2!=0x0)throw Error(_0x55f807(0x416)+_0xc6721f['id']+_0x55f807(0x3c5));if(_0xc6721f[_0x55f807(0x3e7)]['length']<0x2)throw Error('路线剖面\x20'+_0xc6721f['id']+'\x20至少需要两个高度层。');let _0x38e173=_0xc6721f[_0x55f807(0x381)][_0x55f807(0x37f)]/0x2;if(_0xc6721f[_0x55f807(0x21e)][_0x55f807(0x37f)]!==_0x38e173*_0xc6721f[_0x55f807(0x3e7)]['length'])throw Error(_0x55f807(0x416)+_0xc6721f['id']+_0x55f807(0x2a5));if(_0xc6721f[_0x55f807(0x211)]!==void 0x0&&(!(_0xc6721f[_0x55f807(0x211)]>=0x0&&_0xc6721f[_0x55f807(0x211)]<=0x1)||!Number[_0x55f807(0x2c4)](_0xc6721f[_0x55f807(0x211)])))throw Error(_0x55f807(0x416)+_0xc6721f['id']+_0x55f807(0x169));for(let _0x54c44d of _0xc6721f['path'])if(!Number['isFinite'](_0x54c44d))throw Error(_0x55f807(0x416)+_0xc6721f['id']+_0x55f807(0x14c));for(let _0x343b67 of _0xc6721f[_0x55f807(0x3e7)])if(!Number['isFinite'](_0x343b67))throw Error(_0x55f807(0x416)+_0xc6721f['id']+'\x20的\x20heights\x20包含非有限高度。');return _0x38e173;},createPositions=(_0x489635,_0x39d263,_0x5e577b)=>{const _0x1583b6=_0x2e1660;let _0xb50225=new Float32Array(_0x39d263*_0x489635[_0x1583b6(0x3e7)][_0x1583b6(0x37f)]*0x3);for(let _0x520bbb=0x0;_0x520bbb<_0x489635[_0x1583b6(0x3e7)][_0x1583b6(0x37f)];_0x520bbb+=0x1)for(let _0x170c48=0x0;_0x170c48<_0x39d263;_0x170c48+=0x1){let _0x21358b=(_0x520bbb*_0x39d263+_0x170c48)*0x3;_0xb50225[_0x21358b]=axisValueToNormalized(_0x5e577b[_0x1583b6(0x3a3)],_0x489635['path'][_0x170c48*0x2]),_0xb50225[_0x21358b+0x1]=axisValueToNormalized(_0x5e577b[_0x1583b6(0x185)],_0x489635['heights'][_0x520bbb]),_0xb50225[_0x21358b+0x2]=axisValueToNormalized(_0x5e577b[_0x1583b6(0x271)],_0x489635[_0x1583b6(0x381)][_0x170c48*0x2+0x1]);}return _0xb50225;},createValues=_0x182469=>{const _0x545e6f=_0x2e1660;let _0x30bac4=new Float32Array(_0x182469[_0x545e6f(0x21e)][_0x545e6f(0x37f)]);for(let _0x30adcb=0x0;_0x30adcb<_0x182469[_0x545e6f(0x21e)][_0x545e6f(0x37f)];_0x30adcb+=0x1){let _0x3157a8=_0x182469[_0x545e6f(0x21e)][_0x30adcb];_0x30bac4[_0x30adcb]=isMissingValue(_0x3157a8,_0x182469[_0x545e6f(0x27a)])?NaN:_0x3157a8;}return _0x30bac4;},createIndices=(_0x518330,_0x3211c1)=>{let _0x566a8f=new Uint32Array((_0x518330-0x1)*(_0x3211c1-0x1)*0x6),_0x4ec216=0x0;for(let _0x531326=0x0;_0x531326<_0x3211c1-0x1;_0x531326+=0x1)for(let _0x20c5d8=0x0;_0x20c5d8<_0x518330-0x1;_0x20c5d8+=0x1){let _0x4bc498=_0x531326*_0x518330+_0x20c5d8,_0x297ea8=_0x4bc498+0x1,_0x5228d7=_0x4bc498+_0x518330,_0xa3fb6=_0x5228d7+0x1;_0x566a8f[_0x4ec216]=_0x4bc498,_0x566a8f[_0x4ec216+0x1]=_0x297ea8,_0x566a8f[_0x4ec216+0x2]=_0x5228d7,_0x566a8f[_0x4ec216+0x3]=_0x5228d7,_0x566a8f[_0x4ec216+0x4]=_0x297ea8,_0x566a8f[_0x4ec216+0x5]=_0xa3fb6,_0x4ec216+=0x6;}return _0x566a8f;},buildVolumeRouteProfileMesh=(_0xcd3511,_0x104fa4)=>{const _0x16e899=_0x2e1660;let _0x298f38=validateProfile(_0xcd3511);return{'id':_0xcd3511['id'],'positions':createPositions(_0xcd3511,_0x298f38,_0x104fa4),'values':createValues(_0xcd3511),'indices':createIndices(_0x298f38,_0xcd3511['heights'][_0x16e899(0x37f)]),'opacity':_0xcd3511[_0x16e899(0x211)]??0x1,'depthMode':_0xcd3511[_0x16e899(0x155)]??_0x16e899(0x17e),'revision':_0xcd3511[_0x16e899(0x3bc)]};};var volumeRaymarch_default=_0x2e1660(0x3f6),sceneMesh_default=_0x2e1660(0x374),volumeSlice_default=_0x2e1660(0x3d7);const validateMetadata=_0x55b413=>{const _0x4e34ac=_0x2e1660;if([_0x55b413['xAxis'][_0x4e34ac(0x2e2)],_0x55b413[_0x4e34ac(0x185)]['count'],_0x55b413['zAxis'][_0x4e34ac(0x2e2)],_0x55b413[_0x4e34ac(0x16b)],_0x55b413[_0x4e34ac(0x11b)],_0x55b413[_0x4e34ac(0x2cc)]]['some'](_0x529d07=>!Number[_0x4e34ac(0x406)](_0x529d07)||_0x529d07<=0x0))throw Error(_0x4e34ac(0xf4));if(_0x55b413['halo']!==0x1)throw Error(_0x4e34ac(0x38c));},getBrickCount=_0x2d14f5=>[Math[_0x2e1660(0x32e)](_0x2d14f5['xAxis'][_0x2e1660(0x2e2)]/_0x2d14f5[_0x2e1660(0x16b)]),Math[_0x2e1660(0x32e)](_0x2d14f5[_0x2e1660(0x185)][_0x2e1660(0x2e2)]/_0x2d14f5[_0x2e1660(0x11b)]),Math['ceil'](_0x2d14f5[_0x2e1660(0x271)]['count']/_0x2d14f5[_0x2e1660(0x2cc)])],getLogicalBrickCoordinate=(_0x11d049,_0x5ce10b)=>{const _0x2b4780=_0x2e1660;let _0xff4284=_0x5ce10b[0x0]*_0x5ce10b[0x1],_0x5e7b09=Math[_0x2b4780(0x315)](_0x11d049/_0xff4284),_0x2acd21=_0x11d049-_0x5e7b09*_0xff4284,_0x292fcb=Math['floor'](_0x2acd21/_0x5ce10b[0x0]);return[_0x2acd21-_0x292fcb*_0x5ce10b[0x0],_0x292fcb,_0x5e7b09];},analyzeBrickOccupancy=(_0x4019e1,_0x357f8e,_0x543bc3)=>{const _0x5399b7=_0x2e1660;let _0x29811d=_0x357f8e[_0x5399b7(0x16b)]+0x2,_0x313297=_0x357f8e['brickHeight']+0x2,_0x6417d=getLogicalBrickCoordinate(_0x4019e1[_0x5399b7(0x2f1)],_0x543bc3),_0x39d69e=Math[_0x5399b7(0x3ce)](_0x357f8e['brickWidth'],_0x357f8e['xAxis'][_0x5399b7(0x2e2)]-_0x6417d[0x0]*_0x357f8e[_0x5399b7(0x16b)]),_0x3c0928=Math[_0x5399b7(0x3ce)](_0x357f8e[_0x5399b7(0x11b)],_0x357f8e['yAxis'][_0x5399b7(0x2e2)]-_0x6417d[0x1]*_0x357f8e[_0x5399b7(0x11b)]),_0xc6250e=Math[_0x5399b7(0x3ce)](_0x357f8e[_0x5399b7(0x2cc)],_0x357f8e[_0x5399b7(0x271)][_0x5399b7(0x2e2)]-_0x6417d[0x2]*_0x357f8e[_0x5399b7(0x2cc)]);for(let _0x6a83b4=0x0;_0x6a83b4<_0xc6250e;_0x6a83b4+=0x1)for(let _0x3dce08=0x0;_0x3dce08<_0x3c0928;_0x3dce08+=0x1){let _0x4e1302=((_0x6a83b4+0x1)*_0x313297+_0x3dce08+0x1)*_0x29811d+0x1;for(let _0x12db5a=0x0;_0x12db5a<_0x39d69e;_0x12db5a+=0x1){let _0x3ea6db=_0x4019e1[_0x5399b7(0x21e)][_0x4e1302+_0x12db5a];if(_0x3ea6db===_0x3ea6db&&(_0x357f8e['noData']===void 0x0||_0x3ea6db!==_0x357f8e['noData']))return{'occupied':!0x0,'coreSampleCount':_0x39d69e*_0x3c0928*_0xc6250e};}}return{'occupied':!0x1,'coreSampleCount':_0x39d69e*_0x3c0928*_0xc6250e};},findAtlasLayout=(_0x47d62e,_0x3e24d9,_0x38b68e,_0x1fae7f,_0xe828b9)=>{const _0x23b60b=_0x2e1660;if(_0x47d62e<=0x0)return null;let _0x1cc3a8=Math[_0x23b60b(0x315)](_0xe828b9/_0x3e24d9),_0x3d968b=Math[_0x23b60b(0x315)](_0xe828b9/_0x38b68e),_0x1229bd=Math['floor'](_0xe828b9/_0x1fae7f),_0x479a6e=null;for(let _0x52b1e2=0x1;_0x52b1e2<=_0x1cc3a8;_0x52b1e2+=0x1)for(let _0x37012b=0x1;_0x37012b<=_0x3d968b;_0x37012b+=0x1){let _0x3b1bc=Math[_0x23b60b(0x3ce)](_0x1229bd,Math[_0x23b60b(0x315)](_0x47d62e/(_0x52b1e2*_0x37012b))),_0x4da1b1=_0x52b1e2*_0x37012b*_0x3b1bc;_0x3b1bc<=0x0||_0x4da1b1<=(_0x479a6e?.[_0x23b60b(0x1ed)]??0x0)||(_0x479a6e={'slotCountX':_0x52b1e2,'slotCountY':_0x37012b,'slotCountZ':_0x3b1bc,'slotCount':_0x4da1b1,'textureCount':0x1,'capacity':_0x4da1b1});}return _0x479a6e;},getSlotCoordinate=(_0x3fef9d,_0x14e53a)=>{const _0x56fc81=_0x2e1660;let _0x45503d=_0x14e53a[_0x56fc81(0x35d)]*_0x14e53a['slotCountY'],_0x15aba3=Math[_0x56fc81(0x315)](_0x3fef9d/_0x45503d),_0x167d93=_0x3fef9d-_0x15aba3*_0x45503d,_0x2f7d79=Math[_0x56fc81(0x315)](_0x167d93/_0x14e53a['slotCountX']);return[_0x167d93-_0x2f7d79*_0x14e53a[_0x56fc81(0x35d)],_0x2f7d79,_0x15aba3];},findLeastRecentlyUsed=(_0x311d7a,_0x18e571)=>{const _0x4ef29d=_0x2e1660;let _0x59b536=null;for(let _0x1bedac of _0x311d7a)_0x1bedac[_0x4ef29d(0x3d4)]!==_0x18e571&&(!_0x59b536||_0x1bedac[_0x4ef29d(0x3d4)]<_0x59b536[_0x4ef29d(0x3d4)])&&(_0x59b536=_0x1bedac);return _0x59b536;},createPaddedTextureData=(_0x3e8b3f,_0x29a6cb,_0x123003,_0x589055)=>{const _0xf36f1e=_0x2e1660;let _0x1a8b59=_0x29a6cb*Float32Array[_0xf36f1e(0x385)],_0x990ab8=Math['ceil'](_0x1a8b59/0x100)*0x100;if(_0x1a8b59===_0x990ab8)return{'values':_0x3e8b3f,'bytesPerRow':_0x990ab8};let _0x44e545=_0x990ab8/Float32Array['BYTES_PER_ELEMENT'],_0x5e19a2=new Float32Array(_0x44e545*_0x123003*_0x589055);for(let _0x20e130=0x0;_0x20e130<_0x589055;_0x20e130+=0x1)for(let _0x4ef988=0x0;_0x4ef988<_0x123003;_0x4ef988+=0x1){let _0x19d683=(_0x20e130*_0x123003+_0x4ef988)*_0x29a6cb,_0x5cfc8a=(_0x20e130*_0x123003+_0x4ef988)*_0x44e545;_0x5e19a2[_0xf36f1e(0x105)](_0x3e8b3f[_0xf36f1e(0x2da)](_0x19d683,_0x19d683+_0x29a6cb),_0x5cfc8a);}return{'values':_0x5e19a2,'bytesPerRow':_0x990ab8};};var WebgpuBrickAtlas=class{[_0x2e1660(0x239)];[_0x2e1660(0x2a1)];[_0x2e1660(0x103)];['metadata']=null;[_0x2e1660(0x158)]=null;[_0x2e1660(0x17c)]=[];['atlasViews']=[];['pageTableBuffer']=null;[_0x2e1660(0x1d4)]=new Uint32Array();[_0x2e1660(0x1ae)]=new Map();['residentBySlotIndex']=new Map();[_0x2e1660(0x2fb)]=0x0;constructor(_0x40a5bc,_0x15911a=0x20000000,_0x23687f=_0x15911a){const _0x54e157=_0x2e1660;if(!Number[_0x54e157(0x2c4)](_0x15911a)||!Number[_0x54e157(0x2c4)](_0x23687f)||_0x15911a<=0x0||_0x23687f<=0x0)throw Error(_0x54e157(0x241));this['device']=_0x40a5bc,this[_0x54e157(0x2a1)]=Math[_0x54e157(0x3ce)](_0x15911a,_0x23687f),this[_0x54e157(0x103)]=_0x23687f;}get['volumeMetadata'](){const _0x94da60=_0x2e1660;if(!this[_0x94da60(0x246)])throw Error(_0x94da60(0x167));return this[_0x94da60(0x246)];}get[_0x2e1660(0xed)](){const _0x3476f5=_0x2e1660;if(!this['layout'])throw Error(_0x3476f5(0x37d));return this[_0x3476f5(0x158)];}get['residentBrickCount'](){const _0x485c48=_0x2e1660;return this[_0x485c48(0x1ae)][_0x485c48(0x234)];}get[_0x2e1660(0x311)](){const _0x1b5eeb=_0x2e1660;if(!this[_0x1b5eeb(0x246)]||!this[_0x1b5eeb(0x158)])return{'logicalBrickCount':0x0,'atlasCapacity':0x0,'gpuBytes':0x0,'memoryLimitBytes':this[_0x1b5eeb(0x103)],'budgetLimited':!0x1,'skippedSamples':0x0,'skippedCells':0x0};let _0x405c96=getBrickCount(this[_0x1b5eeb(0x246)]),_0x48d744=_0x405c96[0x0]*_0x405c96[0x1]*_0x405c96[0x2],_0x44659c=this['metadata'][_0x1b5eeb(0x16b)]+0x2,_0x4878ec=this[_0x1b5eeb(0x246)]['brickHeight']+0x2,_0x1c0940=this[_0x1b5eeb(0x246)]['brickDepth']+0x2,_0x3d3cd1=_0x44659c*_0x4878ec*_0x1c0940*this[_0x1b5eeb(0x158)][_0x1b5eeb(0x267)]*Float32Array[_0x1b5eeb(0x385)],_0x349dbe=_0x48d744*0x4*Uint32Array[_0x1b5eeb(0x385)],_0x313ab3=0x0,_0x5a79a2=0x0;for(let _0xcde7a7 of this[_0x1b5eeb(0x1ae)][_0x1b5eeb(0x21e)]())_0xcde7a7[_0x1b5eeb(0x264)]||(_0x5a79a2+=0x1,_0x313ab3+=_0xcde7a7[_0x1b5eeb(0x2d1)]);return{'logicalBrickCount':_0x48d744,'atlasCapacity':this[_0x1b5eeb(0x158)][_0x1b5eeb(0x267)],'gpuBytes':_0x3d3cd1+_0x349dbe,'memoryLimitBytes':this['memoryHardLimitBytes'],'budgetLimited':this['layout'][_0x1b5eeb(0x267)]<_0x48d744,'skippedSamples':_0x313ab3,'skippedCells':_0x5a79a2};}[_0x2e1660(0x168)](_0x41497e){const _0x4d3998=_0x2e1660;validateMetadata(_0x41497e);let _0x1218e0=_0x41497e[_0x4d3998(0x16b)]+0x2,_0x486314=_0x41497e['brickHeight']+0x2,_0xd58c1c=_0x41497e['brickDepth']+0x2,_0x121faa=getBrickCount(_0x41497e),_0x348d93=_0x121faa[0x0]*_0x121faa[0x1]*_0x121faa[0x2],_0x3ced6c=_0x348d93*0x4*Uint32Array[_0x4d3998(0x385)],_0x5670bc=Math[_0x4d3998(0x3ce)](this[_0x4d3998(0x2a1)],this[_0x4d3998(0x103)])-_0x3ced6c;if(_0x5670bc<=0x0)throw Error('WebGPU\x20volume\x20page\x20table\x20exceeds\x20the\x20configured\x20memory\x20limit.\x20WebGPU\x20体积页表超过显存限制。');let _0x58f524=_0x1218e0*_0x486314*_0xd58c1c*Float32Array[_0x4d3998(0x385)],_0x14a4f5=Math[_0x4d3998(0x3ce)](_0x348d93,Math[_0x4d3998(0x315)](_0x5670bc/_0x58f524)),_0x56e180=Math[_0x4d3998(0x3b1)](0x1,Math[_0x4d3998(0x315)](0x4000000/_0x58f524)),_0x5901de=Math[_0x4d3998(0x3ce)](0x8,Math[_0x4d3998(0x3b1)](0x1,Math[_0x4d3998(0x32e)](_0x14a4f5/_0x56e180))),_0x1578ce=findAtlasLayout(Math['max'](0x1,Math[_0x4d3998(0x315)](_0x14a4f5/_0x5901de)),_0x1218e0,_0x486314,_0xd58c1c,this[_0x4d3998(0x239)][_0x4d3998(0xf1)][_0x4d3998(0x3ee)]);if(!_0x1578ce)throw Error(_0x4d3998(0x236));let _0x5ce45a={..._0x1578ce,'textureCount':_0x5901de,'capacity':_0x1578ce[_0x4d3998(0x1ed)]*_0x5901de},_0x26b690=_0x1218e0*_0x5ce45a['slotCountX'],_0x36f2af=_0x486314*_0x5ce45a[_0x4d3998(0x1e5)],_0x1c2dc7=_0xd58c1c*_0x5ce45a['slotCountZ'],_0x51e406=Array['from']({'length':_0x5901de},(_0x1ce0a2,_0x4301f1)=>this['device']['createTexture']({'label':_0x4d3998(0x2de)+_0x4301f1,'size':[_0x26b690,_0x36f2af,_0x1c2dc7],'dimension':'3d','format':_0x4d3998(0x387),'usage':GPUTextureUsage[_0x4d3998(0x23b)]|GPUTextureUsage[_0x4d3998(0x3c8)]|GPUTextureUsage[_0x4d3998(0x273)]})),_0x554e9e=this[_0x4d3998(0x239)]['createBuffer']({'label':_0x4d3998(0x38a),'size':Math[_0x4d3998(0x3b1)](0x10,_0x3ced6c),'usage':GPUBufferUsage['STORAGE']|GPUBufferUsage[_0x4d3998(0x3c8)]});this[_0x4d3998(0x3ff)](),this[_0x4d3998(0x246)]={..._0x41497e},this[_0x4d3998(0x158)]=_0x5ce45a,this[_0x4d3998(0x17c)]=_0x51e406,this[_0x4d3998(0x3c4)]=_0x51e406['map'](_0x4d5cc6=>_0x4d5cc6[_0x4d3998(0x17f)]({'dimension':'3d'})),this['pageTableBuffer']=_0x554e9e,this[_0x4d3998(0x1d4)]=new Uint32Array(_0x348d93*0x4),this['device'][_0x4d3998(0x16c)][_0x4d3998(0x10c)](_0x554e9e,0x0,this[_0x4d3998(0x1d4)]);for(let _0x533ccd of _0x51e406)this['clearAtlasTexture'](_0x533ccd,_0x26b690,_0x36f2af,_0x1c2dc7);this[_0x4d3998(0x2fb)]+=0x1;}['prepareBrickUpload'](_0x5328fc,_0x2fc5db){const _0x3d57c2=_0x2e1660;let _0x10028a=this[_0x3d57c2(0x247)],_0x40a1df=this[_0x3d57c2(0xed)],_0x38599a=getBrickCount(_0x10028a),_0x2c7bdf=_0x38599a[0x0]*_0x38599a[0x1]*_0x38599a[0x2];if(!Number['isInteger'](_0x5328fc[_0x3d57c2(0x2f1)])||_0x5328fc[_0x3d57c2(0x2f1)]<0x0||_0x5328fc[_0x3d57c2(0x2f1)]>=_0x2c7bdf)throw Error(_0x3d57c2(0x112)+_0x5328fc['logicalIndex']+'.\x20体积逻辑砖块索引无效。');let _0x56b17a=_0x10028a[_0x3d57c2(0x16b)]+0x2,_0x14c9af=_0x10028a[_0x3d57c2(0x11b)]+0x2,_0x3ccda5=_0x10028a['brickDepth']+0x2,_0x1cf4ca=_0x56b17a*_0x14c9af*_0x3ccda5;if(_0x5328fc['values']['length']!==_0x1cf4ca)throw Error(_0x3d57c2(0x10f)+_0x5328fc[_0x3d57c2(0x2f1)]+_0x3d57c2(0x20a)+_0x1cf4ca+_0x3d57c2(0x3ea)+_0x5328fc[_0x3d57c2(0x21e)][_0x3d57c2(0x37f)]+'.\x20体积砖块数据长度不正确。');let _0x2aebba=this[_0x3d57c2(0x1ae)][_0x3d57c2(0x37a)](_0x5328fc[_0x3d57c2(0x2f1)])??this[_0x3d57c2(0x1e4)](_0x5328fc[_0x3d57c2(0x2f1)],_0x2fc5db),_0x505e70=analyzeBrickOccupancy(_0x5328fc,_0x10028a,_0x38599a),_0x3753d6=Math[_0x3d57c2(0x315)](_0x2aebba[_0x3d57c2(0x114)]/_0x40a1df['slotCount']),_0x67b8c7=getSlotCoordinate(_0x2aebba[_0x3d57c2(0x114)]%_0x40a1df[_0x3d57c2(0x1ed)],_0x40a1df),_0x2e72f3=createPaddedTextureData(new Float32Array(_0x5328fc[_0x3d57c2(0x21e)]),_0x56b17a,_0x14c9af,_0x3ccda5);return _0x2aebba[_0x3d57c2(0x3d4)]=_0x2fc5db,_0x2aebba[_0x3d57c2(0x2fb)]=this['generation'],_0x2aebba[_0x3d57c2(0x264)]=_0x505e70[_0x3d57c2(0x264)],_0x2aebba[_0x3d57c2(0x2d1)]=_0x505e70[_0x3d57c2(0xfc)],this[_0x3d57c2(0x3a2)](_0x2aebba),{'values':_0x2e72f3[_0x3d57c2(0x21e)],'bytesPerRow':_0x2e72f3[_0x3d57c2(0x346)],'rowsPerImage':_0x14c9af,'origin':{'x':_0x67b8c7[0x0]*_0x56b17a,'y':_0x67b8c7[0x1]*_0x14c9af,'z':_0x67b8c7[0x2]*_0x3ccda5},'extent':[_0x56b17a,_0x14c9af,_0x3ccda5],'atlasIndex':_0x3753d6};}[_0x2e1660(0x1f2)](_0x27413f,_0x5f5947,_0x144a93,_0x24d62e){const _0x5605cf=_0x2e1660;_0x27413f[_0x5605cf(0xd0)]({'buffer':_0x5f5947,'offset':_0x144a93,'bytesPerRow':_0x24d62e[_0x5605cf(0x346)],'rowsPerImage':_0x24d62e[_0x5605cf(0x137)]},{'texture':this[_0x5605cf(0x129)](_0x24d62e[_0x5605cf(0x179)]),'origin':_0x24d62e[_0x5605cf(0x403)]},_0x24d62e[_0x5605cf(0x262)]);}[_0x2e1660(0x332)](_0x71f49e,_0x48434c){const _0x796cd9=_0x2e1660;for(let _0x122099 of _0x71f49e){let _0xd36f93=this[_0x796cd9(0x1ae)]['get'](_0x122099);_0xd36f93&&(_0xd36f93[_0x796cd9(0x3d4)]=_0x48434c);}}[_0x2e1660(0x3b9)](_0x4c7e4c,_0x25d700){const _0x5e2254=_0x2e1660;if(this[_0x5e2254(0x3c4)]['length']===0x0||!this[_0x5e2254(0xc4)])throw Error('WebGPU\x20volume\x20atlas\x20resources\x20are\x20incomplete.\x20WebGPU\x20体积图集资源不完整。');return this[_0x5e2254(0x239)][_0x5e2254(0x3b9)]({'label':_0x5e2254(0x1f8),'layout':_0x4c7e4c,'entries':[...Array[_0x5e2254(0x309)]({'length':0x8},(_0x400833,_0x4559cb)=>({'binding':_0x4559cb,'resource':this[_0x5e2254(0x3c4)][_0x4559cb]??this['atlasViews'][0x0]})),{'binding':0x8,'resource':{'buffer':this[_0x5e2254(0xc4)]}},{'binding':0x9,'resource':{'buffer':_0x25d700}}]});}[_0x2e1660(0x3e2)](){const _0x4fbdc1=_0x2e1660;this[_0x4fbdc1(0x3ff)](),this[_0x4fbdc1(0x246)]=null,this['layout']=null,this[_0x4fbdc1(0x1d4)]=new Uint32Array();}[_0x2e1660(0x1e4)](_0x28e951,_0x12e1b8){const _0x78ae67=_0x2e1660;let _0x3358f5=this[_0x78ae67(0xed)],_0x387720=this[_0x78ae67(0x156)]['size'];if(_0x387720>=_0x3358f5[_0x78ae67(0x267)]){let _0x2b1e5b=findLeastRecentlyUsed(this['residentBySlotIndex'][_0x78ae67(0x21e)](),_0x12e1b8);if(!_0x2b1e5b)throw Error(_0x78ae67(0x3b6));_0x387720=_0x2b1e5b['slotIndex'],this[_0x78ae67(0x2f3)](_0x2b1e5b[_0x78ae67(0x2f1)]),this['residentByLogicalIndex'][_0x78ae67(0x214)](_0x2b1e5b[_0x78ae67(0x2f1)]),this[_0x78ae67(0x156)][_0x78ae67(0x214)](_0x387720);}let _0x2b60e1={'logicalIndex':_0x28e951,'slotIndex':_0x387720,'lastUsedFrame':_0x12e1b8,'generation':this[_0x78ae67(0x2fb)],'occupied':!0x1,'skippedSampleCount':0x0};return this[_0x78ae67(0x1ae)]['set'](_0x28e951,_0x2b60e1),this[_0x78ae67(0x156)][_0x78ae67(0x105)](_0x387720,_0x2b60e1),_0x2b60e1;}[_0x2e1660(0x3a2)](_0x34cf25){const _0x586c63=_0x2e1660;let _0x5950b0=_0x34cf25[_0x586c63(0x2f1)]*0x4;this[_0x586c63(0x1d4)][_0x5950b0]=_0x34cf25[_0x586c63(0x114)]%this['atlasLayout'][_0x586c63(0x1ed)]+0x1,this[_0x586c63(0x1d4)][_0x5950b0+0x1]=_0x34cf25[_0x586c63(0x2fb)],this[_0x586c63(0x1d4)][_0x5950b0+0x2]=+!!_0x34cf25['occupied'],this['pageTableValues'][_0x5950b0+0x3]=Math[_0x586c63(0x315)](_0x34cf25[_0x586c63(0x114)]/this['atlasLayout'][_0x586c63(0x1ed)]),this[_0x586c63(0x239)][_0x586c63(0x16c)]['writeBuffer'](this[_0x586c63(0x2a0)](),_0x5950b0*Uint32Array[_0x586c63(0x385)],this[_0x586c63(0x1d4)],_0x5950b0,0x4);}[_0x2e1660(0x2f3)](_0x231248){const _0x15311f=_0x2e1660;let _0x1ce2d6=_0x231248*0x4;this[_0x15311f(0x1d4)][_0x15311f(0x366)](0x0,_0x1ce2d6,_0x1ce2d6+0x4),this[_0x15311f(0x239)][_0x15311f(0x16c)][_0x15311f(0x10c)](this[_0x15311f(0x2a0)](),_0x1ce2d6*Uint32Array[_0x15311f(0x385)],this[_0x15311f(0x1d4)],_0x1ce2d6,0x4);}['getAtlasTexture'](_0x1702b9){const _0x678adf=_0x2e1660;let _0x4a53de=this[_0x678adf(0x17c)][_0x1702b9];if(!_0x4a53de)throw Error(_0x678adf(0x18d));return _0x4a53de;}[_0x2e1660(0x2f7)](_0x3f6550,_0x4284d8,_0xe0b2c4,_0x537d43){const _0xee5251=_0x2e1660;let _0xbffdeb=this[_0xee5251(0x239)]['createShaderModule']({'label':_0xee5251(0x404),'code':_0xee5251(0x369)}),_0x1f95e8=this[_0xee5251(0x239)]['createComputePipeline']({'label':_0xee5251(0xce),'layout':_0xee5251(0x3d0),'compute':{'module':_0xbffdeb,'entryPoint':'main'}}),_0x393557=this[_0xee5251(0x239)][_0xee5251(0x3b9)]({'label':_0xee5251(0x175),'layout':_0x1f95e8['getBindGroupLayout'](0x0),'entries':[{'binding':0x0,'resource':_0x3f6550['createView']({'dimension':'3d'})}]}),_0x2f32f0=this[_0xee5251(0x239)][_0xee5251(0x31f)]({'label':_0xee5251(0x21d)}),_0x203a48=_0x2f32f0[_0xee5251(0x24b)]({'label':'volume\x20atlas\x20clear\x20pass'});_0x203a48['setPipeline'](_0x1f95e8),_0x203a48[_0xee5251(0x3f3)](0x0,_0x393557),_0x203a48['dispatchWorkgroups'](Math['ceil'](_0x4284d8/0x4),Math[_0xee5251(0x32e)](_0xe0b2c4/0x4),Math[_0xee5251(0x32e)](_0x537d43/0x4)),_0x203a48[_0xee5251(0x209)](),this[_0xee5251(0x239)]['queue'][_0xee5251(0x2bd)]([_0x2f32f0[_0xee5251(0x37c)]()]);}[_0x2e1660(0x2a0)](){const _0x72734f=_0x2e1660;if(!this['pageTableBuffer'])throw Error(_0x72734f(0x29a));return this['pageTableBuffer'];}[_0x2e1660(0x3ff)](){const _0x214c36=_0x2e1660;for(let _0x1f6a85 of this[_0x214c36(0x17c)])_0x1f6a85[_0x214c36(0x3e2)]();this['pageTableBuffer']?.[_0x214c36(0x3e2)](),this['atlasTextures']=[],this[_0x214c36(0x3c4)]=[],this[_0x214c36(0xc4)]=null,this[_0x214c36(0x1ae)][_0x214c36(0xf2)](),this['residentBySlotIndex']['clear']();}},WebgpuSceneAttachments=class{[_0x2e1660(0x239)];[_0x2e1660(0x3c2)]=null;['depthView']=null;['width']=0x0;[_0x2e1660(0x1c0)]=0x0;constructor(_0x20ca9b){const _0x31c136=_0x2e1660;this[_0x31c136(0x239)]=_0x20ca9b;}get[_0x2e1660(0x32a)](){const _0x2d5c92=_0x2e1660;if(!this[_0x2d5c92(0xe1)])throw Error(_0x2d5c92(0x301));return this[_0x2d5c92(0xe1)];}[_0x2e1660(0x1c2)](_0x2c04f9,_0x37e124){const _0x5b4833=_0x2e1660;if(this[_0x5b4833(0x274)]===_0x2c04f9&&this[_0x5b4833(0x1c0)]===_0x37e124)return;let _0x5927fc=this['device'][_0x5b4833(0x1b9)]({'label':_0x5b4833(0xef),'size':[_0x2c04f9,_0x37e124],'format':_0x5b4833(0x1a1),'usage':GPUTextureUsage['RENDER_ATTACHMENT']|GPUTextureUsage[_0x5b4833(0x23b)]}),_0x368b6b=this['depthTexture'];this[_0x5b4833(0x3c2)]=_0x5927fc,this['depthView']=_0x5927fc[_0x5b4833(0x17f)](),this[_0x5b4833(0x274)]=_0x2c04f9,this[_0x5b4833(0x1c0)]=_0x37e124,_0x368b6b?.[_0x5b4833(0x3e2)]();}[_0x2e1660(0x3e2)](){const _0x53a46b=_0x2e1660;this[_0x53a46b(0x3c2)]?.['destroy'](),this[_0x53a46b(0x3c2)]=null,this[_0x53a46b(0xe1)]=null,this['width']=0x0,this[_0x53a46b(0x1c0)]=0x0;}},WebgpuSceneMeshResources=class{['device'];[_0x2e1660(0x39e)]=[];constructor(_0x304e07){const _0x5f013c=_0x2e1660;this[_0x5f013c(0x239)]=_0x304e07;}get[_0x2e1660(0x2e2)](){const _0x368509=_0x2e1660;return this[_0x368509(0x39e)][_0x368509(0x37f)];}[_0x2e1660(0x118)](_0x59cfba){const _0x5ca7a9=_0x2e1660;let _0x5dacb2=[];try{for(let _0x52b54a of _0x59cfba)_0x5dacb2['push'](this['createResource'](_0x52b54a));}catch(_0x238732){for(let _0x31617e of _0x5dacb2)_0x31617e[_0x5ca7a9(0x228)][_0x5ca7a9(0x3e2)]();throw _0x238732;}this['destroyResources'](),this[_0x5ca7a9(0x39e)]=_0x5dacb2;}['draw'](_0x4fcf02,_0x4e5241,_0x5de66d){const _0x536bb9=_0x2e1660;for(let _0x335592 of this[_0x536bb9(0x39e)])_0x335592[_0x536bb9(0x3eb)]!==_0x4e5241||_0x335592['depthMode']!==_0x5de66d||(_0x4fcf02[_0x536bb9(0x2bb)](0x0,_0x335592[_0x536bb9(0x228)]),_0x4fcf02[_0x536bb9(0x282)](_0x335592['vertexCount']));}[_0x2e1660(0x3e2)](){const _0x3f0595=_0x2e1660;this[_0x3f0595(0x3ff)]();}[_0x2e1660(0x184)](_0x44a1c1){const _0x259c37=_0x2e1660;if(_0x44a1c1[_0x259c37(0x2c8)]['length']===0x0||_0x44a1c1[_0x259c37(0x2c8)][_0x259c37(0x37f)]%0x7!=0x0)throw Error(_0x259c37(0x292)+_0x44a1c1['id']+'\x20must\x20contain\x20position\x20and\x20RGBA\x20values\x20for\x20every\x20vertex.\x20场景网格顶点必须包含位置和\x20RGBA。');let _0x2618c5=new Float32Array(_0x44a1c1[_0x259c37(0x2c8)]),_0x38bacd=this[_0x259c37(0x239)][_0x259c37(0x269)]({'label':_0x259c37(0x233)+_0x44a1c1['id'],'size':_0x2618c5['byteLength'],'usage':GPUBufferUsage[_0x259c37(0x1a3)]|GPUBufferUsage[_0x259c37(0x3c8)]});return this['device'][_0x259c37(0x16c)]['writeBuffer'](_0x38bacd,0x0,_0x2618c5),{'id':_0x44a1c1['id'],'topology':_0x44a1c1[_0x259c37(0x3eb)],'depthMode':_0x44a1c1[_0x259c37(0x155)],'buffer':_0x38bacd,'vertexCount':_0x44a1c1['vertices']['length']/0x7};}[_0x2e1660(0x3ff)](){const _0x1eb7e6=_0x2e1660;for(let _0x5ebca2 of this[_0x1eb7e6(0x39e)])_0x5ebca2[_0x1eb7e6(0x228)][_0x1eb7e6(0x3e2)]();this[_0x1eb7e6(0x39e)]=[];}},WebgpuSliceResources=class{[_0x2e1660(0x239)];[_0x2e1660(0x158)];[_0x2e1660(0x39e)]=[];[_0x2e1660(0x205)]=0x0;[_0x2e1660(0x1c5)]=0x0;constructor(_0x2af03c,_0xd340a9){const _0x387946=_0x2e1660;this[_0x387946(0x239)]=_0x2af03c,this[_0x387946(0x158)]=_0xd340a9;}get[_0x2e1660(0x2e2)](){const _0x2972a7=_0x2e1660;return this[_0x2972a7(0x39e)]['length'];}get['statistics'](){const _0x16d169=_0x2e1660;return{'uniformUpdateCount':this[_0x16d169(0x205)],'resourceRebuildCount':this['resourceRebuildCount']};}[_0x2e1660(0x118)](_0x54eb58){const _0x442f0a=_0x2e1660;let _0x5f4051=new Map(this[_0x442f0a(0x39e)][_0x442f0a(0x10e)](_0x2c5736=>[_0x2c5736['id'],_0x2c5736])),_0x2e4f1f=[],_0x268712=new Set();try{for(let _0x158552 of _0x54eb58){if(!_0x158552['visible'])continue;if(_0x268712[_0x442f0a(0x192)](_0x158552['id']))throw Error('Volume\x20slice\x20ID\x20'+_0x158552['id']+'\x20is\x20duplicated.\x20体积切面\x20ID\x20重复。');_0x268712[_0x442f0a(0x23e)](_0x158552['id']);let _0x389a2a=this['createValues'](_0x158552),_0x1cfd44=_0x5f4051[_0x442f0a(0x37a)](_0x158552['id']);if(!_0x1cfd44){_0x2e4f1f[_0x442f0a(0x3aa)](this[_0x442f0a(0x184)](_0x158552,_0x389a2a));continue;}_0x5f4051[_0x442f0a(0x214)](_0x158552['id']),_0x1cfd44['depthMode']=_0x158552['depthMode'],this[_0x442f0a(0xd4)](_0x1cfd44[_0x442f0a(0x21e)],_0x389a2a)||(this[_0x442f0a(0x239)][_0x442f0a(0x16c)]['writeBuffer'](_0x1cfd44['buffer'],0x0,_0x389a2a),_0x1cfd44[_0x442f0a(0x21e)]=_0x389a2a,this[_0x442f0a(0x205)]+=0x1),_0x2e4f1f[_0x442f0a(0x3aa)](_0x1cfd44);}}catch(_0x5a1ea7){for(let _0x4df002 of _0x2e4f1f)this[_0x442f0a(0x39e)][_0x442f0a(0x377)](_0x4df002)||_0x4df002['buffer'][_0x442f0a(0x3e2)]();throw _0x5a1ea7;}for(let _0x315e5d of _0x5f4051[_0x442f0a(0x21e)]())_0x315e5d['buffer'][_0x442f0a(0x3e2)]();this[_0x442f0a(0x39e)]=_0x2e4f1f;}[_0x2e1660(0x282)](_0x4e5bea,_0x4c7d90,_0x22ecce){const _0x536dfa=_0x2e1660;_0x4e5bea[_0x536dfa(0x26a)](_0x4c7d90);for(let _0x5c970d of this[_0x536dfa(0x39e)])_0x5c970d['depthMode']===_0x22ecce&&(_0x4e5bea[_0x536dfa(0x3f3)](0x3,_0x5c970d['bindGroup']),_0x4e5bea[_0x536dfa(0x282)](0x1800));}[_0x2e1660(0x3e2)](){const _0x399549=_0x2e1660;this[_0x399549(0x3ff)]();}['createValues'](_0x474c38){const _0x21e4e4=_0x2e1660;if(!Number[_0x21e4e4(0x2c4)](_0x474c38[_0x21e4e4(0x154)])||_0x474c38[_0x21e4e4(0x154)]<0x0||_0x474c38['position']>0x1)throw Error(_0x21e4e4(0x237)+_0x474c38['id']+_0x21e4e4(0x3c1));let _0xf536a0=_0x474c38[_0x21e4e4(0x3f9)]==='x'?0x0:_0x474c38['axis']==='y'?0x1:0x2,_0x225de7=_0x474c38[_0x21e4e4(0x19b)]??[0x0,0x0,0x0,0x0];if(_0x225de7[_0x21e4e4(0x38b)](_0x1e2fbb=>!Number[_0x21e4e4(0x2c4)](_0x1e2fbb)||_0x1e2fbb<0x0||_0x1e2fbb>0x1))throw Error('Volume\x20slice\x20'+_0x474c38['id']+'\x20plate\x20color\x20must\x20use\x20values\x20from\x20zero\x20through\x20one.\x20体积切面底板颜色必须位于零至一。');return new Float32Array([_0xf536a0,_0x474c38[_0x21e4e4(0x154)],_0x474c38['opacity']??0x1,0x0,..._0x225de7]);}[_0x2e1660(0x184)](_0x24e300,_0x195707){const _0x4ef58f=_0x2e1660;let _0x1e5532=this[_0x4ef58f(0x239)][_0x4ef58f(0x269)]({'label':'volume\x20slice\x20'+_0x24e300['id'],'size':0x20,'usage':GPUBufferUsage[_0x4ef58f(0x2f8)]|GPUBufferUsage[_0x4ef58f(0x3c8)]});this[_0x4ef58f(0x239)]['queue'][_0x4ef58f(0x10c)](_0x1e5532,0x0,_0x195707);let _0x25c898=this[_0x4ef58f(0x239)]['createBindGroup']({'layout':this[_0x4ef58f(0x158)],'entries':[{'binding':0x0,'resource':{'buffer':_0x1e5532}}]});return this[_0x4ef58f(0x1c5)]+=0x1,{'id':_0x24e300['id'],'depthMode':_0x24e300['depthMode'],'buffer':_0x1e5532,'bindGroup':_0x25c898,'values':_0x195707};}[_0x2e1660(0xd4)](_0x4bd45f,_0x5a06bb){for(let _0x4fa024=0x0;_0x4fa024<_0x4bd45f['length'];_0x4fa024+=0x1)if(_0x4bd45f[_0x4fa024]!==_0x5a06bb[_0x4fa024])return!0x1;return!0x0;}[_0x2e1660(0x3ff)](){for(let _0x4bc096 of this['resources'])_0x4bc096['buffer']['destroy']();this['resources']=[];}};const createStorageBuffer=(_0x38c58b,_0x5e5edd,_0x36a50f)=>{const _0x558c46=_0x2e1660;let _0x2af951=_0x38c58b['createBuffer']({'label':_0x36a50f,'size':Math[_0x558c46(0x3b1)](0x4,_0x5e5edd['byteLength']),'usage':GPUBufferUsage[_0x558c46(0x310)]|GPUBufferUsage[_0x558c46(0x3c8)]});return _0x5e5edd[_0x558c46(0x1cf)]>0x0&&_0x38c58b['queue'][_0x558c46(0x10c)](_0x2af951,0x0,_0x5e5edd),_0x2af951;},validateStops$1=(_0x174cde,_0x49f812)=>{const _0xe65dfc=_0x2e1660;if(_0x174cde[_0xe65dfc(0x37f)]===0x0||_0x49f812[_0xe65dfc(0x37f)]===0x0)throw Error('Volume\x20color\x20and\x20opacity\x20stops\x20cannot\x20be\x20empty.\x20体积颜色和透明度色标不能为空。');for(let _0x32ad13=0x1;_0x32ad13<_0x174cde[_0xe65dfc(0x37f)];_0x32ad13+=0x1)if(_0x174cde[_0x32ad13]['value']<_0x174cde[_0x32ad13-0x1][_0xe65dfc(0x3a0)])throw Error(_0xe65dfc(0x2b0));for(let _0xb87bc3=0x0;_0xb87bc3<_0x49f812[_0xe65dfc(0x37f)];_0xb87bc3+=0x1){if(_0x49f812[_0xb87bc3][_0xe65dfc(0x211)]<0x0||_0x49f812[_0xb87bc3][_0xe65dfc(0x211)]>0x1)throw Error(_0xe65dfc(0x2af));if(_0xb87bc3>0x0&&_0x49f812[_0xb87bc3][_0xe65dfc(0x3a0)]<_0x49f812[_0xb87bc3-0x1][_0xe65dfc(0x3a0)])throw Error(_0xe65dfc(0x394));}};var WebgpuTransferResources=class{[_0x2e1660(0x239)];[_0x2e1660(0x174)]=null;[_0x2e1660(0x28a)]=null;[_0x2e1660(0x259)]=null;['opacityBuffer']=null;[_0x2e1660(0x1f0)]=0x0;[_0x2e1660(0x360)]=0x0;constructor(_0x402434){const _0x1c3cce=_0x2e1660;this[_0x1c3cce(0x239)]=_0x402434;}get['counts'](){const _0x2d0284=_0x2e1660;return[this[_0x2d0284(0x1f0)],this[_0x2d0284(0x360)]];}['update'](_0x264bc1,_0x2bfa4a){const _0x3ce211=_0x2e1660;validateStops$1(_0x264bc1,_0x2bfa4a);let _0x47e88a=new Float32Array(_0x264bc1[_0x3ce211(0x37f)]),_0xf31af3=new Float32Array(_0x264bc1[_0x3ce211(0x37f)]*0x4),_0x58a36f=new Float32Array(_0x2bfa4a['length']),_0x21026d=new Float32Array(_0x2bfa4a[_0x3ce211(0x37f)]);for(let _0x51a802=0x0;_0x51a802<_0x264bc1[_0x3ce211(0x37f)];_0x51a802+=0x1)_0x47e88a[_0x51a802]=_0x264bc1[_0x51a802]['value'],_0xf31af3[_0x3ce211(0x105)](_0x264bc1[_0x51a802][_0x3ce211(0x2eb)],_0x51a802*0x4);for(let _0x3c1825=0x0;_0x3c1825<_0x2bfa4a['length'];_0x3c1825+=0x1)_0x58a36f[_0x3c1825]=_0x2bfa4a[_0x3c1825]['value'],_0x21026d[_0x3c1825]=_0x2bfa4a[_0x3c1825]['opacity'];let _0x2e7bab=[createStorageBuffer(this[_0x3ce211(0x239)],_0x47e88a,'volume\x20color\x20stop\x20values'),createStorageBuffer(this[_0x3ce211(0x239)],_0xf31af3,_0x3ce211(0x16d)),createStorageBuffer(this[_0x3ce211(0x239)],_0x58a36f,_0x3ce211(0x2d4)),createStorageBuffer(this[_0x3ce211(0x239)],_0x21026d,'volume\x20opacity\x20stop\x20alphas')];this[_0x3ce211(0x402)](),this[_0x3ce211(0x174)]=_0x2e7bab[0x0],this[_0x3ce211(0x28a)]=_0x2e7bab[0x1],this[_0x3ce211(0x259)]=_0x2e7bab[0x2],this[_0x3ce211(0x388)]=_0x2e7bab[0x3],this[_0x3ce211(0x1f0)]=_0x264bc1[_0x3ce211(0x37f)],this[_0x3ce211(0x360)]=_0x2bfa4a[_0x3ce211(0x37f)];}[_0x2e1660(0x3b9)](_0x25cf83){const _0x2b573b=_0x2e1660;if(!this[_0x2b573b(0x174)]||!this['colorBuffer']||!this[_0x2b573b(0x259)]||!this[_0x2b573b(0x388)])throw Error(_0x2b573b(0x27c));return this['device']['createBindGroup']({'label':_0x2b573b(0x1e3),'layout':_0x25cf83,'entries':[{'binding':0x0,'resource':{'buffer':this[_0x2b573b(0x174)]}},{'binding':0x1,'resource':{'buffer':this[_0x2b573b(0x28a)]}},{'binding':0x2,'resource':{'buffer':this[_0x2b573b(0x259)]}},{'binding':0x3,'resource':{'buffer':this['opacityBuffer']}}]});}[_0x2e1660(0x3e2)](){const _0x160ca3=_0x2e1660;this[_0x160ca3(0x402)](),this['colorStopCount']=0x0,this[_0x160ca3(0x360)]=0x0;}[_0x2e1660(0x402)](){const _0x15c070=_0x2e1660;this[_0x15c070(0x174)]?.[_0x15c070(0x3e2)](),this[_0x15c070(0x28a)]?.[_0x15c070(0x3e2)](),this[_0x15c070(0x259)]?.['destroy'](),this[_0x15c070(0x388)]?.[_0x15c070(0x3e2)](),this[_0x15c070(0x174)]=null,this[_0x15c070(0x28a)]=null,this[_0x15c070(0x259)]=null,this[_0x15c070(0x388)]=null;}};const DEFAULT_MEMORY_TARGET_BYTES=0x200*0x400*0x400,IDENTITY_MATRIX$1=[0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1],DEFAULT_COLOR_STOPS=[{'value':0x0,'color':[0x0,0x0,0x1,0x1]},{'value':0x1,'color':[0x1,0x0,0x0,0x1]}],DEFAULT_OPACITY_STOPS=[{'value':0x0,'opacity':0x0},{'value':0x1,'opacity':0x1}],premultipliedBlend$1=()=>({'color':{'srcFactor':_0x2e1660(0x23a),'dstFactor':_0x2e1660(0x2e0),'operation':_0x2e1660(0x23e)},'alpha':{'srcFactor':_0x2e1660(0x23a),'dstFactor':_0x2e1660(0x2e0),'operation':_0x2e1660(0x23e)}}),validateMatrix=(_0x4715d5,_0x5d6897)=>{const _0xda527=_0x2e1660;if(_0x4715d5[_0xda527(0x37f)]!==0x10||_0x4715d5['some'](_0x5acc9b=>!Number[_0xda527(0x2c4)](_0x5acc9b)))throw Error(_0x5d6897+_0xda527(0x1c4)+_0x5d6897+'\x20必须包含十六个有限数值。');},validateNonNegative=(_0x2e8925,_0x5175d5)=>{const _0x2eaa81=_0x2e1660;if(!Number['isFinite'](_0x2e8925)||_0x2e8925<0x0)throw Error(_0x5175d5+_0x2eaa81(0x124)+_0x5175d5+'\x20必须是非负有限数值。');return _0x2e8925;},validatePositive=(_0x60b81a,_0x1e5d5d)=>{const _0x3c1f2c=_0x2e1660;if(!Number[_0x3c1f2c(0x2c4)](_0x60b81a)||_0x60b81a<=0x0)throw Error(_0x1e5d5d+'\x20must\x20be\x20a\x20positive\x20finite\x20value.\x20'+_0x1e5d5d+_0x3c1f2c(0x2c3));return _0x60b81a;},cloneMeshes=_0x235b3b=>_0x235b3b['map'](_0x2e6909=>({..._0x2e6909,'vertices':new Float32Array(_0x2e6909[_0x2e1660(0x2c8)])})),estimateBrickUploadBytes=_0x136068=>{const _0x23854d=_0x2e1660;let _0x5dda73=_0x136068[_0x23854d(0x16b)]+_0x136068[_0x23854d(0x405)]*0x2,_0x187b5d=_0x136068['brickHeight']+_0x136068['halo']*0x2,_0x533acd=_0x136068['brickDepth']+_0x136068[_0x23854d(0x405)]*0x2;return Math[_0x23854d(0x32e)](_0x5dda73*Float32Array[_0x23854d(0x385)]/0x100)*0x100*_0x187b5d*_0x533acd+0x10;};function _0x1938(){const _0x489247=['setAxes','device','one','TEXTURE_BINDING','createPipelines','setProfiles','add','xStart','getSceneBindGroupLayout','WebGPU\x20volume\x20memory\x20limits\x20must\x20be\x20positive.\x20WebGPU\x20体积显存限制必须大于零。','applyHit','maxBufferSize','currentPreview','geographic-wgs84','metadata','volumeMetadata','volume\x20scene\x20geometry\x20pass','canvas','writeVolumeParams','beginComputePass','every','updatePreview','startX','handleResize','unconfigure','pointerEvents','bindControls','composite','cos','adapter','切面轴端点必须是有限数。','getAxisResources','colorStops','opacityValuesBuffer','setShow','46224JhWoRX','absolute','endY','相机宽高比必须是大于\x200\x20的有限数。','semiMajorAxisScaled','proxyModelMatrix','getProfileResources','extent','#fff','occupied','\x20axis\x20must\x20contain\x20two\x20different\x20finite\x20endpoints.\x20','submittedFrameCount','capacity','WRITE','createBuffer','setPipeline','volume\x20always\x20visible\x20pass','createTextNode','rotateSpeed','pushErrorScope','volume\x20scene\x20mesh\x20shader','zIndex','zAxis','uploadBatchCount','STORAGE_BINDING','width','watchDeviceLost','maxLockedSlices','interactionElement','previousContainerPosition','\x20endpoints\x20must\x20be\x20finite.\x20','noData','listeners','WebGPU\x20volume\x20transfer\x20resources\x20are\x20incomplete.\x20WebGPU\x20体积传递函数资源不完整。','maxLockedSlices\x20必须是正整数。','clipBox','pointer','多采样点切面轴的起止值不能相等。','handlePointerDown','draw','stopPropagation','toUpperCase','createRenderPipeline','createPipelineLayout','\x20必须是大于\x200\x20的有限数。','transferResources','WebGPU\x20scene\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20场景绑定布局不可用。','colorBuffer','uniform','createSliceState','volumeDimFactor','Volume\x20timeIndex\x20is\x20out\x20of\x20range:\x20','pointermove','viewportHeight','transferBindGroup','Scene\x20mesh\x20','catch','transparent','clipMinimum','7270wXXAun','pointerdown','devicePixelRatio','colorInputs','WebGPU\x20volume\x20page\x20table\x20is\x20unavailable.\x20WebGPU\x20体积页表不可用。','prepareBrickUpload','相机裁剪距离必须满足\x200\x20<=\x20near\x20<\x20far。','\x20必须是正整数。','ready','display','getPageTableBuffer','memoryTargetBytes','translate(-50%,\x20-100%)','0.72','overlaySlicePipeline','\x20的\x20values\x20长度与\x20path、heights\x20不匹配。','verticalScale\x20must\x20be\x20a\x20positive\x20finite\x20value.\x20verticalScale\x20必须是大于\x200\x20的有限数。','WebGPU\x20geometry\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20几何绑定布局不可用。','createMars3dVolumeLayer','initialize','quality','4px','matrix(','brickScheduleCount','beginLockedSliceDrag','Volume\x20opacity\x20stops\x20must\x20be\x20between\x20zero\x20and\x20one.\x20体积透明度色标必须位于零到一之间。','Volume\x20color\x20stops\x20must\x20be\x20sorted\x20by\x20value.\x20体积颜色色标必须按数值升序排列。','remove','cacheBrickUpload','viewportWidth','cameraFrameCompensation','maxY','releaseGpuResources','lost','load','contextmenu','direction','setVertexBuffer','WebGPU\x20slice\x20resources\x20are\x20unavailable.\x20WebGPU\x20切面资源不可用。','submit','cachedBricks','error','pointerleave','container','destroyed','\x20必须是正有限数值。','isFinite','BaseLayer','_map','initialized','vertices','Volume\x20brick\x20halo\x20must\x20be\x20a\x20positive\x20integer.\x20体积分块\x20halo\x20必须是正整数。','相机宽高比必须大于\x200。','flushSliceState','brickDepth','then','start','volumeBindGroupLayout','idle','skippedSampleCount','WebGPU\x20volume\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20体积绑定布局不可用。','beginRenderPass','volume\x20opacity\x20stop\x20values','clipMaximum','Volume\x20opacity\x20must\x20be\x20within\x20[0,\x201].\x20体积透明度必须位于\x20[0,\x201]。','padding','near','semiMinorAxisScaled','subarray','The\x20maximum\x20locked\x20slice\x20count\x20has\x20been\x20reached.\x20已达到最大锁定切面数量。','getBoundingClientRect','WebGPU\x20profile\x20resources\x20are\x20unavailable.\x20WebGPU\x20剖面资源不可用。','volume\x20brick\x20atlas\x20','endInteraction','one-minus-src-alpha','getTransferResources','count','snapshot','dolly','worldAnchors','slotCountZ','atlas','minimumPitchDegrees','getAttachments','onSliceError','color','bgra8unorm','deltaY','sceneBindGroupLayout','applyCameraFrameCompensation','volume\x20geometry\x20bind\x20group','logicalIndex','firstChild','clearPageEntry','Count','sin','Failed\x20to\x20create\x20WebGPU\x20volume\x20pipelines:\x20','clearAtlasTexture','UNIFORM','pendingSliceSnapshot','bindSliceState','generation','Alpha\x20颜色通道必须在0\x20~\x201之间','clientY','heightScaled','Geographic\x20volume\x20proxy\x20bounds\x20are\x20invalid.\x20地理体积代理范围无效。','volume\x20raymarch\x20pass','WebGPU\x20scene\x20depth\x20attachment\x20is\x20not\x20initialized.\x20WebGPU\x20场景深度附件尚未初始化。','orthographic','getVolumeParamsBuffer','setTimeIndex','hypot','name','screenAnchors','setSliceTool','from','loadBrick','store','popErrorScope','countY','sourceYStart','float32x4','STORAGE','statistics','切面轴采样数必须是正整数。','Mars3D\x20volume\x20shader\x20marker\x20is\x20missing\x20or\x20duplicated:\x20','distance','floor','\x20must\x20be\x20a\x20positive\x20integer.\x20体积分块\x20','cameraSignature','positionMarker','mapAsync','3px\x206px','indexOf','WebGPU\x20slice\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20切面绑定布局不可用。','configureModel','updateSlice','createCommandEncoder','wheel','setRouteProfiles','state','syncLockedMarkers','forEach','prototype','Volume\x20opacity\x20stops\x20cannot\x20be\x20empty.\x20体积透明度节点不能为空。','sceneLinePipeline','volume\x20metadata\x20params','WebGPU\x20volume\x20device\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20device\x20尚未初始化。','sceneDepthView','setToolMode','densityScale','modelMatrix','ceil','hasPointerCapture','endsWith','getFrame','touch','atan2','toPrecision','bindSliceInteraction','uploadPump','createCanvas','range','getCanvas','hitTolerance','overlayContainer','Failed\x20to\x20create\x20a\x20WebGPU\x20canvas\x20context\x20for\x20the\x20volume\x20scene.\x20无法为体积场景创建\x20WebGPU\x20Canvas\x20上下文。','WebGPU\x20volume\x20renderer\x20is\x20not\x20ready\x20for\x20frame\x20capture.\x20WebGPU\x20体积渲染器尚不能读取帧。','slicePlateColor','high-performance','exp','backend','Volume\x20opacity\x20stop\x20values\x20must\x20be\x20finite\x20and\x20strictly\x20increasing.\x20体积透明度节点值必须有限且严格递增。','balanced','asin','layer','bytesPerRow','sceneParamsBuffer','getVolumeBindGroupLayout','scheduleUploadPump','getStepLength','Mars3D\x20map\x20canvas\x20must\x20have\x20a\x20parent\x20element.\x20Mars3D\x20地图\x20Canvas\x20必须存在父元素。','shift','uploadedBrickCount','splice','getCurrentTexture','sourceGeneration','onLimitReached','attachments','maximumDistance','displayedCompensationFrame','createCameraSignature','rebuildProfiles','createElement','cameraState','block','aria-label','切面位置必须是有限数。','clientWidth','slotCountX','context','uploadStagingBuffer','opacityStopCount','brickSortCount','beginCameraInteraction','handlePointerLeave','maxX','renderMode','fill','renderScale','createLockedMarker','\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','notify','readyReject','entries','bind','now','volume\x20frame\x20readback','FRAGMENT','setPointerCapture','\x0afn\x20intersectEllipsoid(origin:\x20vec3f,\x20direction:\x20vec3f,\x20semiMajor:\x20f32,\x20semiMinor:\x20f32)\x20->\x20vec2f\x20{\x0a\x20\x20\x20\x20let\x20inverseRadiiSquared\x20=\x20vec3f(\x0a\x20\x20\x20\x20\x20\x20\x20\x201.0\x20/\x20(semiMajor\x20*\x20semiMajor),\x0a\x20\x20\x20\x20\x20\x20\x20\x201.0\x20/\x20(semiMajor\x20*\x20semiMajor),\x0a\x20\x20\x20\x20\x20\x20\x20\x201.0\x20/\x20(semiMinor\x20*\x20semiMinor)\x0a\x20\x20\x20\x20);\x0a\x20\x20\x20\x20let\x20coefficientA\x20=\x20dot(direction\x20*\x20direction,\x20inverseRadiiSquared);\x0a\x20\x20\x20\x20let\x20coefficientB\x20=\x202.0\x20*\x20dot(origin\x20*\x20direction,\x20inverseRadiiSquared);\x0a\x20\x20\x20\x20let\x20coefficientC\x20=\x20dot(origin\x20*\x20origin,\x20inverseRadiiSquared)\x20-\x201.0;\x0a\x20\x20\x20\x20let\x20discriminant\x20=\x20coefficientB\x20*\x20coefficientB\x20-\x204.0\x20*\x20coefficientA\x20*\x20coefficientC;\x0a\x0a\x20\x20\x20\x20if\x20(discriminant\x20<\x200.0\x20||\x20coefficientA\x20<=\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec2f(1.0,\x20-1.0);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20root\x20=\x20sqrt(discriminant);\x0a\x20\x20\x20\x20let\x20inverseDenominator\x20=\x200.5\x20/\x20coefficientA;\x0a\x20\x20\x20\x20let\x20first\x20=\x20(-coefficientB\x20-\x20root)\x20*\x20inverseDenominator;\x0a\x20\x20\x20\x20let\x20second\x20=\x20(-coefficientB\x20+\x20root)\x20*\x20inverseDenominator;\x0a\x20\x20\x20\x20return\x20vec2f(min(first,\x20second),\x20max(first,\x20second));\x0a}\x0a\x0afn\x20intersectGeographicShell(origin:\x20vec3f,\x20direction:\x20vec3f)\x20->\x20RayInterval\x20{\x0a\x20\x20\x20\x20let\x20worldOrigin\x20=\x20transformPoint(scene.modelMatrix,\x20origin)\x20+\x20scene.geographic0.yzw;\x0a\x20\x20\x20\x20let\x20worldDirection\x20=\x20transformPoint(scene.modelMatrix,\x20origin\x20+\x20direction)\x20-\x20transformPoint(scene.modelMatrix,\x20origin);\x0a\x20\x20\x20\x20let\x20minimumHeight\x20=\x20min(scene.geographic2.z,\x20scene.geographic2.w);\x0a\x20\x20\x20\x20let\x20maximumHeight\x20=\x20max(scene.geographic2.z,\x20scene.geographic2.w);\x0a\x20\x20\x20\x20let\x20outer\x20=\x20intersectEllipsoid(worldOrigin,\x20worldDirection,\x20scene.geographic1.x\x20+\x20maximumHeight,\x20scene.geographic1.y\x20+\x20maximumHeight);\x0a\x0a\x20\x20\x20\x20if\x20(outer.y\x20<\x20max(0.0,\x20outer.x))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20RayInterval(1.0,\x20-1.0,\x20false);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20var\x20minimumDistance\x20=\x20max(0.0,\x20outer.x);\x0a\x20\x20\x20\x20var\x20maximumDistance\x20=\x20outer.y;\x0a\x20\x20\x20\x20let\x20inner\x20=\x20intersectEllipsoid(worldOrigin,\x20worldDirection,\x20scene.geographic1.x\x20+\x20minimumHeight,\x20scene.geographic1.y\x20+\x20minimumHeight);\x0a\x0a\x20\x20\x20\x20if\x20(inner.y\x20>=\x20max(0.0,\x20inner.x))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(inner.x\x20>\x20minimumDistance)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20maximumDistance\x20=\x20min(maximumDistance,\x20inner.x);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(inner.y\x20>\x20minimumDistance)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20minimumDistance\x20=\x20max(minimumDistance,\x20inner.y);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20RayInterval(minimumDistance,\x20maximumDistance,\x20maximumDistance\x20>=\x20minimumDistance);\x0a}\x0a\x0afn\x20getPageIndex','create','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','READ','lastFrameTimeMilliseconds','includes','trim','initializationGeneration','get','sourceYCount','finish','WebGPU\x20volume\x20atlas\x20layout\x20is\x20unavailable.\x20WebGPU\x20体积图集布局不可用。','pan','length','recreateSceneBindGroup','path','all','inverseViewProjection','touchBricks','BYTES_PER_ELEMENT','vertexMain','r32float','opacityBuffer','.\x20WebGPU\x20体积设备已丢失。','volume\x20brick\x20page\x20table','some','WebGPU\x20volume\x20bricks\x20require\x20halo\x201.\x20WebGPU\x20体积砖块要求\x20halo\x20为\x201。','subscribe','_addedHook','getInteractionKind','sceneSlicePipeline','不支持的\x20rgb\x20颜色格式:\x20','step','showDebugGeometry','Volume\x20opacity\x20stops\x20must\x20be\x20sorted\x20by\x20value.\x20体积透明度色标必须按数值升序排列。','interactionController','requestDevice','sliceId','不支持的\x20hex\x20颜色格式:\x20','isInteracting','centerEcef','shape','assertAlive','\x20\x20\x20\x20var\x20interval\x20=\x20intersectClipBox(nearModel,\x20direction);\x0a\x0a\x20\x20\x20\x20if\x20(scene.geographic0.x\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20shellInterval\x20=\x20intersectGeographicShell(nearModel,\x20direction);\x0a\x20\x20\x20\x20\x20\x20\x20\x20interval.minimum\x20=\x20max(interval.minimum,\x20shellInterval.minimum);\x0a\x20\x20\x20\x20\x20\x20\x20\x20interval.maximum\x20=\x20min(interval.maximum,\x20shellInterval.maximum);\x0a\x20\x20\x20\x20\x20\x20\x20\x20interval.valid\x20=\x20interval.valid\x20&&\x20shellInterval.valid\x20&&\x20interval.maximum\x20>=\x20interval.minimum;\x0a\x20\x20\x20\x20}','resources','Volume\x20brick\x20coordinate\x20is\x20out\x20of\x20range.\x20体积分块坐标越界。','value','inverseModelMatrix','writePageEntry','xAxis','matrices','read-only-storage','sceneBindGroup','logicalBrickCount','interactionStepScale','geometryBindGroup','push','volumeDimFactor\x20必须位于\x200\x20到\x201。','AbortError','background','stepLength','Height\x20/\x20高度','triangle-list','max','desiredKeys','unsubscribe','preview','navigationMode','WebGPU\x20volume\x20atlas\x20has\x20no\x20evictable\x20slot.\x20WebGPU\x20体积图集没有可驱逐的槽位。','2913824TLLqtw','writeParams','createBindGroup','volume\x20raymarch\x20shader','Module','revision','minY','.\x20体积分块\x20','pendingCompensationFrame','top','\x20position\x20must\x20be\x20normalized\x20to\x20zero\x20through\x20one.\x20体积切面位置必须归一化到零至一。','depthTexture','gpuBytes','atlasViews','\x20的\x20path\x20必须包含至少两个\x20[x,\x20z]\x20点。','external','readChunk','COPY_DST','renderDirty','wgs84','requestRender','onSlicesChange','setSource','min','WebGPU\x20volume\x20format\x20is\x20not\x20initialized.\x20WebGPU\x20体积格式尚未初始化。','auto','touchAction','beginInteraction','2317007SicHsy','lastUsedFrame','activePointer','sceneTrianglePipeline','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','readyResolve','filter','getSliceResources','正交相机高度必须大于\x200。','coreRange','矩阵不可逆。','hitTolerancePixels','fovYRadians','performance','minimumPitch','destroy','markers','sqrt','createShaderModule','2529FuiAyN','heights','sliceState','slices','\x20values\x20but\x20received\x20','topology','sliceResources','reject','maxTextureDimension3D','autoFrameCount','autoQuality','onSubmittedWorkDone','maximumUploadBatchBytes','setBindGroup','captureFrame','minZ','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','setFrameAvailableCallback','alignItems','axis','cartesian','inherit','shown','lockSlice','tan','destroyResources','renderFrame','eventDisposers','destroyBuffers','origin','volume\x20atlas\x20clear\x20shader','halo','isInteger','less','readRange','pointerup','clientX','volumeCamera','transferBindGroupLayout','volume\x20scene\x20bind\x20group\x20layout','transform','hideAllMarkers','validation','mode','volumeOptions','normalizationMeters','slice','removeSlice','路线剖面\x20','rgb(17\x2024\x2039\x20/\x2082%)','onInteractionStart','\x20端点必须是有限数值。','resolve','lockedSlices','volumeParamsBuffer','frameInFlight','colorStops\x20不能为空','pageTableBuffer','renderer','updateLockedSlice','source','depth','webgpu','requireScene','unmap','removeEventListener','frameIndex','volume\x20atlas\x20clear\x20pipeline','requestFrames','copyBufferToTexture','lastSubmittedFrameTimestamp','sort','minimumDistance','valuesEqual','cameraMoving','25ZCrkLy','split','render','fovy','target','textContent','flex','bindFrameAvailableCallback','createBindGroupLayout','100%','pendingBrickUploads','depthView','indices','budgetLimited','syncCamera','clearCameraFrameCompensation','valueScale','个色标范围的\x20min\x20必须小于\x20max','axisHysteresis','encodeVolumePass','cachedProfiles','descriptors','A\x20destroyed\x20volume\x20scene\x20cannot\x20capture\x20a\x20frame.\x20已销毁的体积场景不能读取帧。','atlasLayout','managed','volume\x20scene\x20depth','透视相机视场角必须位于\x200\x20到\x20180\x20度之间。','limits','clear','function','WebGPU\x20volume\x20dimensions\x20must\x20be\x20positive\x20integers.\x20WebGPU\x20体积尺寸必须是正整数。','formatPosition','viewProjectionMatrix','getSceneParamsBuffer','mars3d\x20volume\x20shell\x20raymarch\x20shader','\x20无效。','createCurrentCompensationFrame','lifecycleState','coreSampleCount','syncPreview','signal','sliceInteraction','setState','framesRemaining','findAxisHit','memoryHardLimitBytes','handlePointerMove','set','requestAdapter','loadedKeys','opacityStops','A\x20destroyed\x20Mars3D\x20volume\x20layer\x20cannot\x20be\x20used.\x20已销毁的\x20Mars3D\x20体积层不能继续使用。','baseModelMatrix','countX','writeBuffer','cameraEndTimer','map','Volume\x20brick\x20','pendingKeys','uploadBrick','Invalid\x20logical\x20volume\x20brick\x20index:\x20','atlasCapacity','slotIndex','cachedAxes','none','drawMeshes','replace','setProjectionType','unfilterable-float','brickHeight','axisResources','chunk','markerOverlay','cameraPosition','.\x20体积时间索引越界。','volumePipeline','\x20\x20\x20\x20var\x20interval\x20=\x20intersectClipBox(nearModel,\x20direction);','verticalScale\x20必须是大于\x200\x20的有限数。','\x20must\x20be\x20a\x20non-negative\x20finite\x20value.\x20','createProjectionMatrix','enqueueBrickUpload','next','handlePreRender','getAtlasTexture','Longitude\x20/\x20经度','always-visible','pixelRatioCap','volume\x20slice\x20bind\x20group\x20layout','getGeometryBindGroupLayout','toolMode','\x20noData\x20必须是有限数值或\x20NaN。','Failed\x20to\x20acquire\x20a\x20WebGPU\x20adapter\x20for\x20the\x20volume\x20scene.\x20无法为体积场景获取\x20WebGPU\x20adapter。','handlePointerUp','startY','.\x20体积分块数值数量与尺寸不一致。','profiles','key','rowsPerImage','keys','volume\x20frame\x20capture','previousAxis','parseInt','gap','正交相机高度和宽高比必须大于\x200。','endX','requireRenderer','coordinate','parentElement','Volume\x20brick\x20upload\x20became\x20stale.\x20体积砖上传已过期。','geometryBindGroupLayout','zoomSpeed','volume\x20scene\x20frame','overlayTrianglePipeline','timeCount','upload','\x20must\x20be\x20a\x20positive\x20integer.\x20','positionWC','cachedSlices','\x20的\x20path\x20包含非有限坐标。','startsWith','pointercancel','activeInteractions','6vNuqXe','frameAvailableCallback','createProjectionCamera','preventDefault','position','depthMode','residentBySlotIndex','nowrap','layout','Geographic\x20volume\x20normalization\x20must\x20be\x20a\x20positive\x20finite\x20distance.\x20地理体积归一化尺度必须是正有限距离。','axes','flushBrickSchedule','setSlices','encodeScenePass','updateTransferResources','profileResources','directionWC','getUploadStagingBuffer','preRender','getAtlas','toLowerCase','fragmentMain','rgb\x20颜色通道数量不正确:\x20','WebGPU\x20volume\x20atlas\x20is\x20not\x20configured.\x20WebGPU\x20体积图集尚未配置。','configure','\x20的\x20opacity\x20必须位于\x200\x20到\x201。','切面深度模式无效\x20/\x20Slice\x20depth\x20mode\x20is\x20invalid','brickWidth','queue','volume\x20color\x20stop\x20colors','orbit','Maximum\x20locked\x20slice\x20count\x20is\x20','actualFrameIntervalMilliseconds','update','MAP_READ','pointerType','colorValuesBuffer','volume\x20atlas\x20clear\x20bind\x20group','skippedCells','volume\x20brick\x20reusable\x20upload\x20staging','setTimeout','atlasIndex','countZ','uploadStagingBufferSize','atlasTextures','gpu','scene','createView','find','requestControllers','levelStart','encodeOverlayPass','createResource','yAxis','font','getEffectiveQuality','WebGPU\x20volume\x20resources\x20were\x20released.\x20WebGPU\x20体积资源已释放。','resetBrickRequests','volume\x20scene\x20bind\x20group','finishCameraInteraction','abort','WebGPU\x20volume\x20atlas\x20texture\x20is\x20unavailable.\x20WebGPU\x20体积图集纹理不可用。','border','memoryLimitBytes','defineProperty','clientHeight','has','abs','uploadGeneration','verticalScale','colorMode','recordFrameInterval','volume\x20brick\x20upload\x20batch\x20flush','button','line-list','plateColor','coordinateSystem','handleFrameAvailable','WebGPU\x20volume\x20context\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20context\x20尚未初始化。','createLayout','copyTextureToBuffer','depth32float','cacheOnSuccess','VERTEX','setTransfer','viewProjection','configureSource','lastTimingFrameTimestamp','_showHook','setCamera','message','volume-axes','overlayLinePipeline','brickScheduleDirty','residentByLogicalIndex','camera','handleWindowPointerMove','onError','sliceDepthMode','nextId','round','lockPreview','WebGPU\x20volume\x20frame\x20capture\x20failed:\x20','WebGPU\x20volume\x20params\x20buffer\x20is\x20unavailable.\x20WebGPU\x20体积参数\x20Buffer\x20不可用。','left','createTexture','COPY_SRC','volume\x20atlas\x20bind\x20group\x20layout','positions','rejectPendingBrickUploads','volumeBindGroup','onInteractionEnd','height','show','resize','.\x20最大锁定切面数量为\x20','\x20must\x20contain\x20sixteen\x20finite\x20values.\x20','resourceRebuildCount','setAttribute','interactionRenderScale','readyPromise','format','xCount','drawSlices','grab','202552PlQZeA','clearPreview','byteLength','axisDefinitions','\x20is\x20invalid:\x20','options','fovYDegrees','pageTableValues','isNaN','anchorDistance','getTransferBindGroupLayout','rgba(','geographicTransform','A\x20destroyed\x20WebGPU\x20volume\x20renderer\x20cannot\x20be\x20initialized\x20again.\x20已销毁的\x20WebGPU\x20体积渲染器不能再次初始化。','getEffectiveRenderScale','144798KyUWyN','Volume\x20brick\x20upload\x20was\x20superseded\x20by\x20a\x20new\x20source.\x20体积砖上传已被新数据源替代。','WebGPU\x20transfer\x20resources\x20are\x20unavailable.\x20WebGPU\x20传递函数资源不可用。','maximumPitchDegrees','maxZ','toFixed','toStringTag','volume\x20transfer\x20bind\x20group','acquireSlot','slotCountY','projection','Returned\x20volume\x20chunk\x20timeIndex\x20does\x20not\x20match\x20the\x20request.\x20返回体积分块的时间索引与请求不一致。','WebGPU\x20volume\x20scene\x20dimensions\x20must\x20be\x20positive\x20integers.\x20WebGPU\x20体积场景尺寸必须是正整数。','sliceBindGroupLayout','configureSourceResources','panSpeed','getSliceBindGroupLayout','slotCount','processBrickUploads','scheduleBricks','colorStopCount','相机裁剪距离必须满足\x200\x20<\x20near\x20<\x20far。','encodePreparedBrickUpload','个色标范围不能是NaN','byteOffset','levelCount','getDevice','aspect','volume\x20atlas\x20bind\x20group','scheduleCameraMoveEnd','getMappedRange','WebGPU\x20is\x20required\x20for\x20the\x20volume\x20scene\x20but\x20is\x20unavailable.\x20体积场景需要\x20WebGPU,但当前环境不可用。','clearLockedSlices','RGB\x20颜色通道必须在\x200\x20~\x20255\x20之间','visible','The\x20current\x20WebGPU\x20volume\x20atlas\x20requires\x20halo:\x201.\x20当前\x20WebGPU\x20体积图集要求\x20halo\x20为\x201。','timeIndex','positionCartographic','element','frameRequest','append','uniformUpdateCount','moved','Volume\x20chunk\x20range\x20exceeds\x20source\x20dimensions.\x20体积分块范围超出源数据尺寸。','type','end','\x20requires\x20','Returned\x20volume\x20chunk\x20range\x20does\x20not\x20match\x20the\x20request.\x20返回体积分块范围与请求不一致。','style','pointerId','getFormat','cursor','无法归一化长度为零的三维向量。','opacity','call','maximumPitch','delete','156282jXEXqX','frustum','normalizedPosition','residentBrickCount','perspective','addEventListener','WebGPU\x20transfer\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20传递函数绑定布局不可用。','Geographic\x20WGS84\x20volume\x20scenes\x20manage\x20their\x20own\x20model\x20transform.\x20WGS84\x20地理体积场景自行管理模型变换。','volume\x20atlas\x20clear','values','far','\x20只有一个采样点时端点必须相等。','autoFrameIntervalTotal','volume\x20geometry\x20bind\x20group\x20layout','finally','axisHysteresisPixels','clearTimeout','requestBrickSchedule','releasePointerCapture','buffer','fov','upWC','Returned\x20volume\x20chunk\x20dimensions\x20do\x20not\x20match\x20its\x20range.\x20返回体积分块尺寸与范围不一致。','mars3d\x20volume\x20shell\x20raymarch\x20pipeline','WebGPU\x20scene\x20params\x20buffer\x20is\x20unavailable.\x20WebGPU\x20场景参数\x20Buffer\x20不可用。','join','previewMarker','Volume','relative','getContext','volume\x20scene\x20mesh\x20','size','powerPreference','Unable\x20to\x20allocate\x20a\x20WebGPU\x20R32F\x20volume\x20atlas\x20within\x20device\x20limits.\x20无法在设备限制内分配\x20WebGPU\x20R32F\x20体积图集。','Volume\x20slice\x20'];_0x1938=function(){return _0x489247;};return _0x1938();}var WebgpuVolumeSceneRenderer=class{[_0x2e1660(0x1d2)];[_0x2e1660(0xfb)]='idle';[_0x2e1660(0x249)]=null;[_0x2e1660(0x255)]=null;[_0x2e1660(0x239)]=null;[_0x2e1660(0x35e)]=null;[_0x2e1660(0x1c9)]=null;['sceneParamsBuffer']=null;['volumeParamsBuffer']=null;['geometryBindGroupLayout']=null;[_0x2e1660(0x2ee)]=null;['volumeBindGroupLayout']=null;['transferBindGroupLayout']=null;['sliceBindGroupLayout']=null;[_0x2e1660(0x3a9)]=null;[_0x2e1660(0x3a6)]=null;[_0x2e1660(0x1be)]=null;['transferBindGroup']=null;[_0x2e1660(0x121)]=null;[_0x2e1660(0x3d6)]=null;[_0x2e1660(0x327)]=null;[_0x2e1660(0x146)]=null;[_0x2e1660(0x1ac)]=null;[_0x2e1660(0x390)]=null;[_0x2e1660(0x2a4)]=null;[_0x2e1660(0x352)]=null;[_0x2e1660(0x2e7)]=null;[_0x2e1660(0x288)]=null;[_0x2e1660(0x15f)]=null;['sliceResources']=null;[_0x2e1660(0x11c)]=null;[_0x2e1660(0x246)]=null;[_0x2e1660(0x1af)]={'viewProjection':IDENTITY_MATRIX$1,'inverseViewProjection':IDENTITY_MATRIX$1,'cameraPosition':[0x0,0x0,0x2]};[_0x2e1660(0x32d)]=IDENTITY_MATRIX$1;['inverseModelMatrix']=IDENTITY_MATRIX$1;[_0x2e1660(0x295)]=[0x0,0x0,0x0];[_0x2e1660(0x2d5)]=[0x1,0x1,0x1];[_0x2e1660(0x365)]=_0x2e1660(0x253);['opacity']=0.3;[_0x2e1660(0x32c)]=0x1;[_0x2e1660(0x3ae)]=0.005;['volumeDimFactor']=0x1;['colorMode']='smooth';[_0x2e1660(0x1d9)]=null;[_0x2e1660(0x258)]=DEFAULT_COLOR_STOPS;['opacityStops']=DEFAULT_OPACITY_STOPS;[_0x2e1660(0xcd)]=0x0;['submittedFrameCount']=0x0;[_0x2e1660(0x274)]=0x0;[_0x2e1660(0x1c0)]=0x0;[_0x2e1660(0x379)]=0x0;['lastFrameTimeMilliseconds']=0x0;[_0x2e1660(0xea)]=[];['cachedSlices']=[];[_0x2e1660(0x115)]=[];[_0x2e1660(0x2be)]=new Map();[_0x2e1660(0xe0)]=[];[_0x2e1660(0x336)]=null;[_0x2e1660(0x194)]=0x0;[_0x2e1660(0x35f)]=null;[_0x2e1660(0x17b)]=0x0;['uploadedBrickCount']=0x0;['uploadBatchCount']=0x0;['maximumUploadBatchBytes']=0x0;['frameInFlight']=!0x1;[_0x2e1660(0x151)]=null;constructor(_0x1d8641={}){const _0xa4b981=_0x2e1660;this[_0xa4b981(0x1d2)]={..._0x1d8641};}get['state'](){return this['lifecycleState'];}get[_0x2e1660(0x311)](){const _0x5ad0f3=_0x2e1660;let _0x3b82db=this[_0x5ad0f3(0x2e7)]?.[_0x5ad0f3(0x311)]??{'logicalBrickCount':0x0,'atlasCapacity':0x0,'gpuBytes':0x0,'memoryLimitBytes':this[_0x5ad0f3(0x1d2)][_0x5ad0f3(0x103)]??this[_0x5ad0f3(0x1d2)][_0x5ad0f3(0x2a1)]??DEFAULT_MEMORY_TARGET_BYTES,'budgetLimited':!0x1,'skippedSamples':0x0,'skippedCells':0x0},_0x447551=this['sliceResources']?.[_0x5ad0f3(0x311)]??{'uniformUpdateCount':0x0,'resourceRebuildCount':0x0};return{'logicalBrickCount':_0x3b82db[_0x5ad0f3(0x3a7)],'residentBrickCount':this[_0x5ad0f3(0x2e7)]?.[_0x5ad0f3(0x218)]??0x0,'pendingBrickCount':0x0,'atlasCapacity':_0x3b82db[_0x5ad0f3(0x113)],'gpuBytes':_0x3b82db[_0x5ad0f3(0x3c3)],'memoryLimitBytes':_0x3b82db['memoryLimitBytes'],'budgetLimited':_0x3b82db[_0x5ad0f3(0xe3)],'frameTimeMilliseconds':this[_0x5ad0f3(0x376)],'submittedFrameCount':this[_0x5ad0f3(0x266)],'uploadedBrickCount':this['uploadedBrickCount'],'uploadBatchCount':this[_0x5ad0f3(0x272)],'maximumUploadBatchBytes':this[_0x5ad0f3(0x3f2)],'sliceUniformUpdateCount':_0x447551[_0x5ad0f3(0x205)],'sliceResourceRebuildCount':_0x447551[_0x5ad0f3(0x1c5)],'skippedSamples':_0x3b82db['skippedSamples'],'skippedCells':_0x3b82db[_0x5ad0f3(0x176)]};}[_0x2e1660(0x3f7)](_0x4a5e5c){this['frameAvailableCallback']=_0x4a5e5c;}async[_0x2e1660(0x2a9)](_0x5b0af0){const _0x23567f=_0x2e1660;if(this[_0x23567f(0xfb)]===_0x23567f(0x2c2))throw Error(_0x23567f(0x1da));let _0x4642e5=++this[_0x23567f(0x379)];this[_0x23567f(0x2b6)](),this[_0x23567f(0x249)]=_0x5b0af0,this['lifecycleState']='initializing';let _0x780f6b=navigator[_0x23567f(0x17d)];if(!_0x780f6b)throw this[_0x23567f(0xfb)]=_0x23567f(0x2d0),Error(_0x23567f(0x1fb));let _0x52a9e2=await _0x780f6b[_0x23567f(0x106)]({'powerPreference':this[_0x23567f(0x1d2)][_0x23567f(0x235)]??_0x23567f(0x33f)});if(_0x4642e5!==this['initializationGeneration'])return;if(!_0x52a9e2)throw this[_0x23567f(0xfb)]='idle',Error(_0x23567f(0x131));let _0x2d5d23=await _0x52a9e2[_0x23567f(0x396)]();if(_0x4642e5!==this[_0x23567f(0x379)]){_0x2d5d23[_0x23567f(0x3e2)]();return;}let _0x9a2cd4=_0x5b0af0['getContext'](_0x23567f(0xc9));if(!_0x9a2cd4)throw _0x2d5d23['destroy'](),this[_0x23567f(0xfb)]=_0x23567f(0x2d0),Error(_0x23567f(0x33c));let _0x27e980=_0x780f6b['getPreferredCanvasFormat']();_0x9a2cd4[_0x23567f(0x168)]({'device':_0x2d5d23,'format':_0x27e980,'alphaMode':'premultiplied','usage':GPUTextureUsage['RENDER_ATTACHMENT']|GPUTextureUsage[_0x23567f(0x1ba)]}),this[_0x23567f(0x255)]=_0x52a9e2,this['device']=_0x2d5d23,this[_0x23567f(0x35e)]=_0x9a2cd4,this['format']=_0x27e980,_0x2d5d23[_0x23567f(0x26e)]('validation'),this['createGpuResources']();let _0x2ada8e=await _0x2d5d23[_0x23567f(0x30c)]();if(_0x2ada8e)throw this[_0x23567f(0x2b6)](),this[_0x23567f(0xfb)]=_0x23567f(0x2d0),Error(_0x23567f(0x2f6)+_0x2ada8e[_0x23567f(0x1aa)]+'.\x20创建\x20WebGPU\x20体积管线失败。');if(this['watchDeviceLost'](_0x2d5d23),this[_0x23567f(0xfb)]='ready',this[_0x23567f(0x246)]){this['configureSourceResources'](this[_0x23567f(0x246)]);let _0x45defa=Array[_0x23567f(0x309)](this[_0x23567f(0x2be)][_0x23567f(0x36c)]());await Promise[_0x23567f(0x382)](_0x45defa['map'](([_0x581ce3,_0x4d13a9])=>this[_0x23567f(0x126)]({'logicalIndex':_0x581ce3,'values':_0x4d13a9},!0x1)));}this[_0x23567f(0x15e)](),this[_0x23567f(0x261)]()['replace'](this[_0x23567f(0xea)]),this[_0x23567f(0x3da)]()[_0x23567f(0x118)](this[_0x23567f(0x14b)]),this[_0x23567f(0x257)]()[_0x23567f(0x118)](this['cachedAxes']),this[_0x23567f(0x1c2)](_0x5b0af0['width']||_0x5b0af0[_0x23567f(0x35c)]||0x1,_0x5b0af0[_0x23567f(0x1c0)]||_0x5b0af0[_0x23567f(0x191)]||0x1);}[_0x2e1660(0x3cd)](_0x44a7df){const _0xd67c98=_0x2e1660;this['uploadGeneration']+=0x1,this[_0xd67c98(0x1bd)](new DOMException(_0xd67c98(0x1dd),'AbortError')),this[_0xd67c98(0x246)]={..._0x44a7df},this[_0xd67c98(0x2be)]['clear'](),this[_0xd67c98(0x34d)]=0x0,this['uploadBatchCount']=0x0,this[_0xd67c98(0x3f2)]=0x0,this[_0xd67c98(0xfb)]===_0xd67c98(0x29e)&&this[_0xd67c98(0x1ea)](_0x44a7df);}[_0x2e1660(0x111)](_0x5aa4f1){const _0x37450e=_0x2e1660;return this[_0x37450e(0x126)](_0x5aa4f1,!0x0);}[_0x2e1660(0x384)](_0x364a87){const _0x11d2c7=_0x2e1660;this['getAtlas']()[_0x11d2c7(0x332)](_0x364a87,this[_0x11d2c7(0xcd)]);for(let _0x30c8d4 of _0x364a87){let _0x399d32=this[_0x11d2c7(0x2be)][_0x11d2c7(0x37a)](_0x30c8d4);_0x399d32&&(this[_0x11d2c7(0x2be)]['delete'](_0x30c8d4),this[_0x11d2c7(0x2be)][_0x11d2c7(0x105)](_0x30c8d4,_0x399d32));}}[_0x2e1660(0x1a9)](_0x3a614b){const _0x37418c=_0x2e1660;validateMatrix(_0x3a614b['viewProjection'],_0x37418c(0x1a5)),validateMatrix(_0x3a614b[_0x37418c(0x383)],'inverseViewProjection'),this['camera']={'viewProjection':[..._0x3a614b[_0x37418c(0x1a5)]],'inverseViewProjection':[..._0x3a614b[_0x37418c(0x383)]],'cameraPosition':[..._0x3a614b[_0x37418c(0x11f)]]};}[_0x2e1660(0x23d)](_0x59b2f4){const _0xc64022=_0x2e1660;this[_0xc64022(0xea)]=cloneMeshes(_0x59b2f4),this[_0xc64022(0x261)]()[_0xc64022(0x118)](_0x59b2f4);}[_0x2e1660(0x15c)](_0x148b7f){const _0x55c120=_0x2e1660;this['cachedSlices']=_0x148b7f[_0x55c120(0x10e)](_0x478874=>({..._0x478874})),this[_0x55c120(0x3da)]()[_0x55c120(0x118)](_0x148b7f);}['setAxes'](_0x3d1902){const _0x23452f=_0x2e1660;this[_0x23452f(0x115)]=cloneMeshes(_0x3d1902),this[_0x23452f(0x257)]()[_0x23452f(0x118)](_0x3d1902);}[_0x2e1660(0x1a4)](_0x21b67c,_0x2a4252,_0x26e334){const _0x44281f=_0x2e1660;this[_0x44281f(0x258)]=_0x21b67c[_0x44281f(0x10e)](_0x56eb57=>({'value':_0x56eb57[_0x44281f(0x3a0)],'color':[..._0x56eb57[_0x44281f(0x2eb)]]})),this[_0x44281f(0x108)]=_0x2a4252['map'](_0xb7287e=>({..._0xb7287e})),_0x26e334&&(this['colorMode']=_0x26e334),this[_0x44281f(0xfb)]===_0x44281f(0x29e)&&this['updateTransferResources']();}[_0x2e1660(0x171)](_0x20fb50){const _0x21150a=_0x2e1660;_0x20fb50[_0x21150a(0x32d)]&&(validateMatrix(_0x20fb50[_0x21150a(0x32d)],_0x21150a(0x32d)),this[_0x21150a(0x32d)]=[..._0x20fb50[_0x21150a(0x32d)]]),_0x20fb50[_0x21150a(0x3a1)]&&(validateMatrix(_0x20fb50['inverseModelMatrix'],_0x21150a(0x3a1)),this[_0x21150a(0x3a1)]=[..._0x20fb50[_0x21150a(0x3a1)]]),_0x20fb50[_0x21150a(0x295)]&&(this['clipMinimum']=[..._0x20fb50['clipMinimum']]),_0x20fb50['clipMaximum']&&(this[_0x21150a(0x2d5)]=[..._0x20fb50[_0x21150a(0x2d5)]]),_0x20fb50[_0x21150a(0x365)]&&(this[_0x21150a(0x365)]=_0x20fb50[_0x21150a(0x365)]),_0x20fb50[_0x21150a(0x211)]!==void 0x0&&(this[_0x21150a(0x211)]=validateNonNegative(_0x20fb50[_0x21150a(0x211)],'opacity')),_0x20fb50['densityScale']!==void 0x0&&(this[_0x21150a(0x32c)]=validateNonNegative(_0x20fb50['densityScale'],_0x21150a(0x32c))),_0x20fb50[_0x21150a(0x3ae)]!==void 0x0&&(this[_0x21150a(0x3ae)]=validatePositive(_0x20fb50[_0x21150a(0x3ae)],'stepLength')),_0x20fb50[_0x21150a(0x28d)]!==void 0x0&&(this[_0x21150a(0x28d)]=validateNonNegative(_0x20fb50[_0x21150a(0x28d)],_0x21150a(0x28d))),_0x20fb50['colorMode']&&(this[_0x21150a(0x196)]=_0x20fb50[_0x21150a(0x196)]),_0x20fb50[_0x21150a(0x1d9)]!==void 0x0&&(this[_0x21150a(0x1d9)]=_0x20fb50[_0x21150a(0x1d9)]?{..._0x20fb50[_0x21150a(0x1d9)]}:null);}[_0x2e1660(0x1c2)](_0x2026a9,_0x9e908a){const _0x1f649b=_0x2e1660;if(!Number[_0x1f649b(0x406)](_0x2026a9)||!Number[_0x1f649b(0x406)](_0x9e908a)||_0x2026a9<=0x0||_0x9e908a<=0x0)throw Error(_0x1f649b(0x1e8));let _0x48f228=this['getCanvas']();_0x48f228['width']=_0x2026a9,_0x48f228[_0x1f649b(0x1c0)]=_0x9e908a,this[_0x1f649b(0x274)]=_0x2026a9,this['height']=_0x9e908a,this[_0x1f649b(0x2e9)]()[_0x1f649b(0x1c2)](_0x2026a9,_0x9e908a),this[_0x1f649b(0x380)]();}['render'](){const _0x18164a=_0x2e1660;if(this[_0x18164a(0xfb)]!=='ready'||!this[_0x18164a(0x246)]||this[_0x18164a(0x274)]<=0x0||this[_0x18164a(0x1c0)]<=0x0||this[_0x18164a(0xc2)])return!0x1;let _0x5b3f37=performance[_0x18164a(0x36e)]();this[_0x18164a(0xcd)]+=0x1,this[_0x18164a(0x3b8)]();let _0x15bce2=this[_0x18164a(0x1f6)](),_0x16aa9c=_0x15bce2[_0x18164a(0x31f)]({'label':_0x18164a(0x145)}),_0x184aa3=this['getContext']()[_0x18164a(0x34f)]()[_0x18164a(0x17f)]();return this[_0x18164a(0x15d)](_0x16aa9c,_0x184aa3),this['encodeVolumePass'](_0x16aa9c,_0x184aa3),this[_0x18164a(0x183)](_0x16aa9c,_0x184aa3),_0x15bce2[_0x18164a(0x16c)]['submit']([_0x16aa9c[_0x18164a(0x37c)]()]),this[_0x18164a(0xc2)]=!0x0,this[_0x18164a(0x266)]+=0x1,this[_0x18164a(0x376)]=Math['max'](0.000001,performance['now']()-_0x5b3f37),_0x15bce2['queue'][_0x18164a(0x3f1)]()[_0x18164a(0x2cd)](()=>{const _0x7169b3=_0x18164a;this[_0x7169b3(0x239)]!==_0x15bce2||this[_0x7169b3(0xfb)]!==_0x7169b3(0x29e)||(this[_0x7169b3(0xc2)]=!0x1,this[_0x7169b3(0x151)]?.());})[_0x18164a(0x293)](()=>{const _0x4e90f1=_0x18164a;this['device']===_0x15bce2&&(this[_0x4e90f1(0xc2)]=!0x1);}),!0x0;}async[_0x2e1660(0x3f4)](){const _0x4b9f5c=_0x2e1660;if(this[_0x4b9f5c(0xfb)]!==_0x4b9f5c(0x29e)||!this['metadata']||this[_0x4b9f5c(0x274)]<=0x0||this[_0x4b9f5c(0x1c0)]<=0x0)throw Error(_0x4b9f5c(0x33d));let _0x5b7962=this['getDevice'](),_0x4332c8=this[_0x4b9f5c(0x274)]*0x4,_0x2d34cd=Math[_0x4b9f5c(0x32e)](_0x4332c8/0x100)*0x100,_0x47edbb=_0x5b7962[_0x4b9f5c(0x269)]({'label':_0x4b9f5c(0x36f),'size':_0x2d34cd*this['height'],'usage':GPUBufferUsage[_0x4b9f5c(0x3c8)]|GPUBufferUsage[_0x4b9f5c(0x172)]});_0x5b7962[_0x4b9f5c(0x26e)](_0x4b9f5c(0x410)),this[_0x4b9f5c(0xcd)]+=0x1,this['writeParams']();let _0x3799ae=_0x5b7962[_0x4b9f5c(0x31f)]({'label':_0x4b9f5c(0x139)}),_0xe1ef9e=this[_0x4b9f5c(0x232)]()[_0x4b9f5c(0x34f)](),_0x518103=_0xe1ef9e['createView']();this['encodeScenePass'](_0x3799ae,_0x518103),this[_0x4b9f5c(0xe9)](_0x3799ae,_0x518103),this[_0x4b9f5c(0x183)](_0x3799ae,_0x518103),_0x3799ae[_0x4b9f5c(0x1a0)]({'texture':_0xe1ef9e},{'buffer':_0x47edbb,'bytesPerRow':_0x2d34cd,'rowsPerImage':this[_0x4b9f5c(0x1c0)]},[this[_0x4b9f5c(0x274)],this[_0x4b9f5c(0x1c0)]]),_0x5b7962[_0x4b9f5c(0x16c)][_0x4b9f5c(0x2bd)]([_0x3799ae[_0x4b9f5c(0x37c)]()]);let _0x6b684c=await _0x5b7962[_0x4b9f5c(0x30c)]();if(_0x6b684c)throw _0x47edbb[_0x4b9f5c(0x3e2)](),Error(_0x4b9f5c(0x1b6)+_0x6b684c['message']+'.\x20WebGPU\x20体积帧读取失败。');await _0x47edbb['mapAsync'](GPUMapMode[_0x4b9f5c(0x375)]);let _0x13ada9=new Uint8Array(_0x47edbb[_0x4b9f5c(0x1fa)]()),_0x1cf785=new Uint8Array(_0x4332c8*this[_0x4b9f5c(0x1c0)]),_0x2329b1=this[_0x4b9f5c(0x20e)]()===_0x4b9f5c(0x2ec);for(let _0x198524=0x0;_0x198524<this[_0x4b9f5c(0x1c0)];_0x198524+=0x1){let _0x55dab4=_0x13ada9[_0x4b9f5c(0x2da)](_0x198524*_0x2d34cd,_0x198524*_0x2d34cd+_0x4332c8),_0x1223f4=_0x198524*_0x4332c8;if(!_0x2329b1){_0x1cf785[_0x4b9f5c(0x105)](_0x55dab4,_0x1223f4);continue;}for(let _0x7466d4=0x0;_0x7466d4<this[_0x4b9f5c(0x274)];_0x7466d4+=0x1){let _0x532428=_0x7466d4*0x4,_0x434571=_0x1223f4+_0x532428;_0x1cf785[_0x434571]=_0x55dab4[_0x532428+0x2],_0x1cf785[_0x434571+0x1]=_0x55dab4[_0x532428+0x1],_0x1cf785[_0x434571+0x2]=_0x55dab4[_0x532428],_0x1cf785[_0x434571+0x3]=_0x55dab4[_0x532428+0x3];}}return _0x47edbb[_0x4b9f5c(0xcb)](),_0x47edbb['destroy'](),this[_0x4b9f5c(0x266)]+=0x1,{'width':this[_0x4b9f5c(0x274)],'height':this[_0x4b9f5c(0x1c0)],'pixels':_0x1cf785};}[_0x2e1660(0x3e2)](){const _0x43782f=_0x2e1660;this[_0x43782f(0xfb)]!==_0x43782f(0x2c2)&&(++this[_0x43782f(0x379)],this[_0x43782f(0x2b6)](),this[_0x43782f(0x249)]=null,this[_0x43782f(0x246)]=null,this[_0x43782f(0x151)]=null,this['lifecycleState']=_0x43782f(0x2c2));}['createGpuResources'](){const _0x4a30ba=_0x2e1660;let _0x7aef4=this[_0x4a30ba(0x1f6)]();this[_0x4a30ba(0x347)]=_0x7aef4[_0x4a30ba(0x269)]({'label':'volume\x20scene\x20params','size':0x190,'usage':GPUBufferUsage[_0x4a30ba(0x2f8)]|GPUBufferUsage[_0x4a30ba(0x3c8)]}),this[_0x4a30ba(0x41c)]=_0x7aef4[_0x4a30ba(0x269)]({'label':_0x4a30ba(0x328),'size':0x60,'usage':GPUBufferUsage['UNIFORM']|GPUBufferUsage['COPY_DST']}),this[_0x4a30ba(0x143)]=_0x7aef4[_0x4a30ba(0xde)]({'label':_0x4a30ba(0x222),'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x4a30ba(0x1a3)]|GPUShaderStage[_0x4a30ba(0x370)],'buffer':{'type':'uniform'}}]}),this[_0x4a30ba(0x2ee)]=_0x7aef4[_0x4a30ba(0xde)]({'label':_0x4a30ba(0x40d),'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x4a30ba(0x1a3)]|GPUShaderStage[_0x4a30ba(0x370)],'buffer':{'type':_0x4a30ba(0x28b)}},{'binding':0x1,'visibility':GPUShaderStage[_0x4a30ba(0x370)],'texture':{'sampleType':_0x4a30ba(0xc8)}}]}),this['volumeBindGroupLayout']=_0x7aef4['createBindGroupLayout']({'label':_0x4a30ba(0x1bb),'entries':[...Array['from']({'length':0x8},(_0x51ec80,_0x302fb1)=>({'binding':_0x302fb1,'visibility':GPUShaderStage['FRAGMENT'],'texture':{'sampleType':_0x4a30ba(0x11a),'viewDimension':'3d'}})),{'binding':0x8,'visibility':GPUShaderStage[_0x4a30ba(0x370)],'buffer':{'type':'read-only-storage'}},{'binding':0x9,'visibility':GPUShaderStage[_0x4a30ba(0x370)],'buffer':{'type':_0x4a30ba(0x28b)}}]}),this['transferBindGroupLayout']=_0x7aef4['createBindGroupLayout']({'label':'volume\x20transfer\x20bind\x20group\x20layout','entries':[0x0,0x1,0x2,0x3][_0x4a30ba(0x10e)](_0xbce7e9=>({'binding':_0xbce7e9,'visibility':GPUShaderStage[_0x4a30ba(0x370)],'buffer':{'type':_0x4a30ba(0x3a5)}}))}),this[_0x4a30ba(0x1e9)]=_0x7aef4[_0x4a30ba(0xde)]({'label':_0x4a30ba(0x12d),'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x4a30ba(0x1a3)]|GPUShaderStage[_0x4a30ba(0x370)],'buffer':{'type':_0x4a30ba(0x28b)}}]}),this['attachments']=new WebgpuSceneAttachments(_0x7aef4),this[_0x4a30ba(0x288)]=new WebgpuTransferResources(_0x7aef4),this[_0x4a30ba(0x15f)]=new WebgpuSceneMeshResources(_0x7aef4),this[_0x4a30ba(0x3ec)]=new WebgpuSliceResources(_0x7aef4,this[_0x4a30ba(0x1ec)]()),this[_0x4a30ba(0x11c)]=new WebgpuSceneMeshResources(_0x7aef4),this[_0x4a30ba(0x23c)]();}['createPipelines'](){const _0x115383=_0x2e1660;let _0x2f1d98=this['getDevice'](),_0x52f083=this[_0x115383(0x20e)](),_0x1d2ea8=this[_0x115383(0x12e)](),_0x189ebd=this[_0x115383(0x240)](),_0x4717e6=_0x2f1d98[_0x115383(0x3e5)]({'label':_0x115383(0x26f),'code':sceneMesh_default}),_0x50ba9f={'module':_0x4717e6,'entryPoint':'vertexMain','buffers':[{'arrayStride':0x1c,'attributes':[{'shaderLocation':0x0,'offset':0x0,'format':'float32x3'},{'shaderLocation':0x1,'offset':0xc,'format':_0x115383(0x30f)}]}]},_0xe1ce47={'module':_0x4717e6,'entryPoint':_0x115383(0x165),'targets':[{'format':_0x52f083,'blend':premultipliedBlend$1()}]},_0x5eaa3b=(_0x27cfc8,_0xca7d1b)=>_0x2f1d98['createRenderPipeline']({'layout':_0x2f1d98['createPipelineLayout']({'bindGroupLayouts':[_0x1d2ea8]}),'vertex':_0x50ba9f,'fragment':_0xe1ce47,'primitive':{'topology':_0x27cfc8},'depthStencil':_0xca7d1b?{'format':_0x115383(0x1a1),'depthWriteEnabled':!0x0,'depthCompare':_0x115383(0x407)}:void 0x0});this['sceneTrianglePipeline']=_0x5eaa3b(_0x115383(0x3b0),!0x0),this[_0x115383(0x327)]=_0x5eaa3b(_0x115383(0x19a),!0x0),this['overlayTrianglePipeline']=_0x5eaa3b(_0x115383(0x3b0),!0x1),this[_0x115383(0x1ac)]=_0x5eaa3b(_0x115383(0x19a),!0x1);let _0x5d2fd9=_0x2f1d98['createShaderModule']({'label':_0x115383(0x3ba),'code':volumeRaymarch_default});this[_0x115383(0x121)]=_0x2f1d98[_0x115383(0x285)]({'layout':_0x2f1d98[_0x115383(0x286)]({'bindGroupLayouts':[_0x189ebd,this[_0x115383(0x348)](),this[_0x115383(0x1d7)]()]}),'vertex':{'module':_0x5d2fd9,'entryPoint':'vertexMain'},'fragment':{'module':_0x5d2fd9,'entryPoint':'fragmentMain','targets':[{'format':_0x52f083,'blend':premultipliedBlend$1()}]},'primitive':{'topology':'triangle-list'}});let _0x1830a7=_0x2f1d98[_0x115383(0x3e5)]({'label':'volume\x20slice\x20shader','code':volumeSlice_default}),_0x45d01b=_0x15c458=>_0x2f1d98['createRenderPipeline']({'layout':_0x2f1d98[_0x115383(0x286)]({'bindGroupLayouts':[_0x1d2ea8,this['getVolumeBindGroupLayout'](),this[_0x115383(0x1d7)](),this[_0x115383(0x1ec)]()]}),'vertex':{'module':_0x1830a7,'entryPoint':_0x115383(0x386)},'fragment':{'module':_0x1830a7,'entryPoint':_0x115383(0x165),'targets':[{'format':_0x52f083,'blend':premultipliedBlend$1()}]},'primitive':{'topology':'triangle-list'},'depthStencil':_0x15c458?{'format':_0x115383(0x1a1),'depthWriteEnabled':!0x0,'depthCompare':_0x115383(0x407)}:void 0x0});this[_0x115383(0x390)]=_0x45d01b(!0x0),this[_0x115383(0x2a4)]=_0x45d01b(!0x1);}[_0x2e1660(0x1ea)](_0x106cda){const _0x10117b=_0x2e1660;this['atlas']?.['destroy'](),this['atlas']=new WebgpuBrickAtlas(this[_0x10117b(0x1f6)](),this[_0x10117b(0x1d2)][_0x10117b(0x2a1)]??DEFAULT_MEMORY_TARGET_BYTES,this[_0x10117b(0x1d2)][_0x10117b(0x103)]??this[_0x10117b(0x1d2)][_0x10117b(0x2a1)]??DEFAULT_MEMORY_TARGET_BYTES),this['atlas'][_0x10117b(0x168)](_0x106cda),this[_0x10117b(0x24a)](),this[_0x10117b(0x1be)]=this[_0x10117b(0x2e7)][_0x10117b(0x3b9)](this[_0x10117b(0x348)](),this[_0x10117b(0x303)]());}[_0x2e1660(0x126)](_0x14fc8e,_0x4b3882){return new Promise((_0x5a4726,_0x167a84)=>{const _0x5975df=_0x2b0a;this['pendingBrickUploads'][_0x5975df(0x3aa)]({'upload':_0x14fc8e,'generation':this[_0x5975df(0x194)],'cacheOnSuccess':_0x4b3882,'resolve':_0x5a4726,'reject':_0x167a84}),this[_0x5975df(0x349)]();});}[_0x2e1660(0x349)](){const _0x5c8049=_0x2e1660;this['uploadPump']||=Promise[_0x5c8049(0x41a)]()[_0x5c8049(0x2cd)](()=>this[_0x5c8049(0x1ee)]())['finally'](()=>{const _0x1c98a8=_0x5c8049;this[_0x1c98a8(0x336)]=null,this[_0x1c98a8(0xe0)][_0x1c98a8(0x37f)]>0x0&&this[_0x1c98a8(0xfb)]==='ready'&&this[_0x1c98a8(0x349)]();});}async[_0x2e1660(0x1ee)](){const _0x328685=_0x2e1660;for(;this[_0x328685(0xe0)][_0x328685(0x37f)]>0x0&&this['lifecycleState']==='ready'&&this[_0x328685(0x246)];){let _0x46e439=this[_0x328685(0x1f6)](),_0x319d73=estimateBrickUploadBytes(this[_0x328685(0x246)]),_0x32ec4e=Math[_0x328685(0x3ce)](0x4000000,Math['max'](_0x319d73,Math['floor'](_0x46e439['limits'][_0x328685(0x243)]/0x4))),_0x334441=[],_0x53deb7=0x0;for(;this[_0x328685(0xe0)][_0x328685(0x37f)]>0x0&&_0x334441['length']<0x10;){let _0x4b2f28=this[_0x328685(0xe0)][0x0];if(_0x334441[_0x328685(0x37f)]>0x0&&_0x53deb7+_0x319d73>_0x32ec4e)break;if(this[_0x328685(0xe0)][_0x328685(0x34c)](),_0x4b2f28[_0x328685(0x2fb)]!==this['uploadGeneration']){_0x4b2f28['reject'](new DOMException(_0x328685(0x142),_0x328685(0x3ac)));continue;}_0x334441[_0x328685(0x3aa)](_0x4b2f28),_0x53deb7+=_0x319d73;}if(_0x334441[_0x328685(0x37f)]!==0x0)try{let _0x42b889=[],_0x433ee2=0x0;for(let _0x2ed56f of _0x334441){let _0x37f48=this[_0x328685(0x163)]()[_0x328685(0x29b)](_0x2ed56f['upload'],this[_0x328685(0xcd)]),_0x15a199=Math[_0x328685(0x32e)](_0x433ee2/0x100)*0x100;_0x42b889[_0x328685(0x3aa)]({'item':_0x2ed56f,'prepared':_0x37f48,'bufferOffset':_0x15a199}),_0x433ee2=_0x15a199+_0x37f48['values']['byteLength'];}let _0x547a4f=this[_0x328685(0x161)](_0x433ee2);await _0x547a4f[_0x328685(0x319)](GPUMapMode[_0x328685(0x268)]);let _0x499cb6=new Uint8Array(_0x547a4f[_0x328685(0x1fa)]());for(let _0x30a60d of _0x42b889){let _0x29efea=_0x30a60d['prepared'][_0x328685(0x21e)];_0x499cb6[_0x328685(0x105)](new Uint8Array(_0x29efea[_0x328685(0x228)],_0x29efea[_0x328685(0x1f4)],_0x29efea[_0x328685(0x1cf)]),_0x30a60d['bufferOffset']);}_0x547a4f[_0x328685(0xcb)]();let _0x1cc771=_0x46e439[_0x328685(0x31f)]({'label':_0x328685(0x198)});for(let _0xe79ed7 of _0x42b889)this[_0x328685(0x163)]()[_0x328685(0x1f2)](_0x1cc771,_0x547a4f,_0xe79ed7['bufferOffset'],_0xe79ed7['prepared']);_0x46e439[_0x328685(0x16c)][_0x328685(0x2bd)]([_0x1cc771[_0x328685(0x37c)]()]),await _0x46e439['queue'][_0x328685(0x3f1)](),await new Promise(_0x1fc430=>setTimeout(_0x1fc430,0x0)),this[_0x328685(0x34d)]+=_0x334441[_0x328685(0x37f)],this[_0x328685(0x272)]+=0x1,this['maximumUploadBatchBytes']=Math[_0x328685(0x3b1)](this['maximumUploadBatchBytes'],_0x53deb7);for(let _0x49adfc of _0x334441){if(_0x49adfc[_0x328685(0x2fb)]!==this[_0x328685(0x194)]){_0x49adfc[_0x328685(0x3ed)](new DOMException(_0x328685(0x142),_0x328685(0x3ac)));continue;}_0x49adfc[_0x328685(0x1a2)]&&this['cacheBrickUpload'](_0x49adfc[_0x328685(0x148)]),_0x49adfc[_0x328685(0x41a)]();}}catch(_0x342f41){for(let _0x4a73e4 of _0x334441)_0x4a73e4[_0x328685(0x3ed)](_0x342f41);}}}[_0x2e1660(0x161)](_0xd23c25){const _0x45b36f=_0x2e1660;let _0x4cd538=Math[_0x45b36f(0x3b1)](0x100,Math[_0x45b36f(0x32e)](_0xd23c25/0x100)*0x100);return this[_0x45b36f(0x35f)]&&this[_0x45b36f(0x17b)]>=_0x4cd538?this[_0x45b36f(0x35f)]:(this['uploadStagingBuffer']?.['destroy'](),this[_0x45b36f(0x35f)]=this[_0x45b36f(0x1f6)]()['createBuffer']({'label':_0x45b36f(0x177),'size':_0x4cd538,'usage':GPUBufferUsage['MAP_WRITE']|GPUBufferUsage[_0x45b36f(0x1ba)]}),this[_0x45b36f(0x17b)]=_0x4cd538,this['uploadStagingBuffer']);}[_0x2e1660(0x2b2)](_0x10e26a){const _0x3bac93=_0x2e1660;for(this[_0x3bac93(0x2be)][_0x3bac93(0x214)](_0x10e26a['logicalIndex']),this[_0x3bac93(0x2be)][_0x3bac93(0x105)](_0x10e26a[_0x3bac93(0x2f1)],new Float32Array(_0x10e26a[_0x3bac93(0x21e)]));this[_0x3bac93(0x2be)][_0x3bac93(0x234)]>this[_0x3bac93(0x311)]['atlasCapacity'];){let _0x4ecff1=this['cachedBricks'][_0x3bac93(0x138)]()[_0x3bac93(0x127)]()[_0x3bac93(0x3a0)];if(_0x4ecff1===void 0x0)break;this[_0x3bac93(0x2be)]['delete'](_0x4ecff1);}}['rejectPendingBrickUploads'](_0x31dbe4){const _0x334413=_0x2e1660;for(let _0xf177ec of this['pendingBrickUploads'][_0x334413(0x34e)](0x0))_0xf177ec[_0x334413(0x3ed)](_0x31dbe4);}[_0x2e1660(0x15e)](){const _0x1f3f47=_0x2e1660;let _0xe43e11=this[_0x1f3f47(0x2e1)]();_0xe43e11[_0x1f3f47(0x171)](this['colorStops'],this[_0x1f3f47(0x108)]),this[_0x1f3f47(0x291)]=_0xe43e11[_0x1f3f47(0x3b9)](this[_0x1f3f47(0x1d7)]());}[_0x2e1660(0x380)](){const _0x4811e2=_0x2e1660;!this['sceneParamsBuffer']||!this[_0x4811e2(0x352)]||!this[_0x4811e2(0x143)]||!this[_0x4811e2(0x2ee)]||(this[_0x4811e2(0x3a9)]=this['getDevice']()[_0x4811e2(0x3b9)]({'label':_0x4811e2(0x2f0),'layout':this[_0x4811e2(0x143)],'entries':[{'binding':0x0,'resource':{'buffer':this[_0x4811e2(0x347)]}}]}),this[_0x4811e2(0x3a6)]=this[_0x4811e2(0x1f6)]()[_0x4811e2(0x3b9)]({'label':_0x4811e2(0x18a),'layout':this[_0x4811e2(0x2ee)],'entries':[{'binding':0x0,'resource':{'buffer':this[_0x4811e2(0x347)]}},{'binding':0x1,'resource':this[_0x4811e2(0x352)][_0x4811e2(0x32a)]}]}));}['writeParams'](){const _0x16207a=_0x2e1660;let _0x469770=new Float32Array(0x64);_0x469770[_0x16207a(0x105)](this[_0x16207a(0x1af)][_0x16207a(0x1a5)],0x0),_0x469770[_0x16207a(0x105)](this['camera'][_0x16207a(0x383)],0x10),_0x469770[_0x16207a(0x105)](this['modelMatrix'],0x20),_0x469770['set'](this[_0x16207a(0x3a1)],0x30),_0x469770[_0x16207a(0x105)]([...this['camera'][_0x16207a(0x11f)],0x1],0x40),_0x469770['set']([this[_0x16207a(0x274)],this['height'],0x1/this['width'],0x1/this[_0x16207a(0x1c0)]],0x44),_0x469770[_0x16207a(0x105)]([...this['clipMinimum'],0x0],0x48),_0x469770[_0x16207a(0x105)]([...this[_0x16207a(0x2d5)],0x0],0x4c),_0x469770[_0x16207a(0x105)]([+(this[_0x16207a(0x365)]==='maximum'),this[_0x16207a(0x211)],this[_0x16207a(0x32c)],this[_0x16207a(0x3ae)]],0x50),_0x469770[_0x16207a(0x105)]([this[_0x16207a(0x258)][_0x16207a(0x37f)],this['opacityStops'][_0x16207a(0x37f)],this[_0x16207a(0x28d)],+(this[_0x16207a(0x196)]===_0x16207a(0x392))],0x54);let _0x3db935=this['geographicTransform'];_0x3db935&&(_0x469770[_0x16207a(0x105)]([0x1,..._0x3db935['centerEcefScaled']],0x58),_0x469770[_0x16207a(0x105)]([_0x3db935[_0x16207a(0x25f)],_0x3db935[_0x16207a(0x2d9)],..._0x3db935['longitudeRadians']],0x5c),_0x469770[_0x16207a(0x105)]([..._0x3db935['latitudeRadians'],..._0x3db935[_0x16207a(0x2fe)]],0x60)),this['getDevice']()['queue'][_0x16207a(0x10c)](this['getSceneParamsBuffer'](),0x0,_0x469770);}[_0x2e1660(0x24a)](){const _0x27b4dc=_0x2e1660;let _0x16ebe6=this[_0x27b4dc(0x246)],_0x1be78a=this[_0x27b4dc(0x2e7)];if(!_0x16ebe6||!_0x1be78a)return;let _0xeef814=_0x1be78a[_0x27b4dc(0xed)],_0x525d65=new Uint32Array(0x60/0x4),_0x2974bb=Math['ceil'](_0x16ebe6[_0x27b4dc(0x3a3)][_0x27b4dc(0x2e2)]/_0x16ebe6[_0x27b4dc(0x16b)]),_0x329269=Math[_0x27b4dc(0x32e)](_0x16ebe6[_0x27b4dc(0x185)]['count']/_0x16ebe6[_0x27b4dc(0x11b)]),_0x22dad2=Math['ceil'](_0x16ebe6['zAxis'][_0x27b4dc(0x2e2)]/_0x16ebe6[_0x27b4dc(0x2cc)]);_0x525d65[_0x27b4dc(0x105)]([_0x16ebe6['xAxis'][_0x27b4dc(0x2e2)],_0x16ebe6[_0x27b4dc(0x185)][_0x27b4dc(0x2e2)],_0x16ebe6['zAxis'][_0x27b4dc(0x2e2)],0x0],0x0),_0x525d65[_0x27b4dc(0x105)]([_0x16ebe6[_0x27b4dc(0x16b)],_0x16ebe6[_0x27b4dc(0x11b)],_0x16ebe6[_0x27b4dc(0x2cc)],0x1],0x4),_0x525d65['set']([_0x2974bb,_0x329269,_0x22dad2,0x0],0x8),_0x525d65['set']([_0xeef814[_0x27b4dc(0x35d)],_0xeef814[_0x27b4dc(0x1e5)],_0xeef814[_0x27b4dc(0x2e6)],_0xeef814['slotCount']],0xc),_0x525d65[_0x27b4dc(0x105)]([(_0x16ebe6['brickWidth']+0x2)*_0xeef814[_0x27b4dc(0x35d)],(_0x16ebe6['brickHeight']+0x2)*_0xeef814['slotCountY'],(_0x16ebe6[_0x27b4dc(0x2cc)]+0x2)*_0xeef814[_0x27b4dc(0x2e6)],0x0],0x10),new Float32Array(_0x525d65[_0x27b4dc(0x228)])[_0x27b4dc(0x105)]([_0x16ebe6['noData']??0x0,_0x16ebe6[_0x27b4dc(0x27a)]===void 0x0?0x0:0x1,0x0,0x0],0x14),this['getDevice']()[_0x27b4dc(0x16c)][_0x27b4dc(0x10c)](this['getVolumeParamsBuffer'](),0x0,_0x525d65);}[_0x2e1660(0x15d)](_0x5db55c,_0x45b058){const _0x152c6e=_0x2e1660;let _0x5549dc=_0x5db55c[_0x152c6e(0x2d3)]({'label':_0x152c6e(0x248),'colorAttachments':[{'view':_0x45b058,'clearValue':{'r':0x0,'g':0x0,'b':0x0,'a':0x0},'loadOp':_0x152c6e(0xf2),'storeOp':'store'}],'depthStencilAttachment':{'view':this[_0x152c6e(0x2e9)]()[_0x152c6e(0x32a)],'depthClearValue':0x1,'depthLoadOp':'clear','depthStoreOp':_0x152c6e(0x30b)}});this[_0x152c6e(0x117)](_0x5549dc,_0x152c6e(0x17e)),this[_0x152c6e(0x1cb)](_0x5549dc,'scene'),_0x5549dc[_0x152c6e(0x209)]();}[_0x2e1660(0xe9)](_0x5438b7,_0x394718){const _0xb273ed=_0x2e1660;if(!this['volumeBindGroup']||!this[_0xb273ed(0x291)]||!this['sceneBindGroup']||!this[_0xb273ed(0x121)])return;let _0x3e0562=_0x5438b7[_0xb273ed(0x2d3)]({'label':_0xb273ed(0x300),'colorAttachments':[{'view':_0x394718,'loadOp':'load','storeOp':_0xb273ed(0x30b)}]});_0x3e0562[_0xb273ed(0x26a)](this['volumePipeline']),_0x3e0562['setBindGroup'](0x0,this[_0xb273ed(0x3a6)]),_0x3e0562[_0xb273ed(0x3f3)](0x1,this[_0xb273ed(0x1be)]),_0x3e0562[_0xb273ed(0x3f3)](0x2,this[_0xb273ed(0x291)]),_0x3e0562['draw'](0x3),_0x3e0562[_0xb273ed(0x209)]();}['encodeOverlayPass'](_0x474bec,_0x107010){const _0x227cf2=_0x2e1660;let _0x3c6ef9=_0x474bec[_0x227cf2(0x2d3)]({'label':_0x227cf2(0x26b),'colorAttachments':[{'view':_0x107010,'loadOp':_0x227cf2(0x2b8),'storeOp':'store'}]});this[_0x227cf2(0x117)](_0x3c6ef9,_0x227cf2(0x12b)),this[_0x227cf2(0x1cb)](_0x3c6ef9,'always-visible'),_0x3c6ef9[_0x227cf2(0x209)]();}[_0x2e1660(0x117)](_0x546636,_0x7faf82){const _0x324222=_0x2e1660;let _0xe20a83=this[_0x324222(0x3a9)];if(!_0xe20a83)return;let _0x339987=_0x7faf82===_0x324222(0x17e)?this['sceneTrianglePipeline']:this[_0x324222(0x146)],_0x58b5f6=_0x7faf82===_0x324222(0x17e)?this[_0x324222(0x327)]:this[_0x324222(0x1ac)];_0x339987&&(_0x546636[_0x324222(0x26a)](_0x339987),_0x546636['setBindGroup'](0x0,_0xe20a83),this[_0x324222(0x15f)]?.[_0x324222(0x282)](_0x546636,_0x324222(0x3b0),_0x7faf82),this['axisResources']?.[_0x324222(0x282)](_0x546636,_0x324222(0x3b0),_0x7faf82)),_0x58b5f6&&(_0x546636[_0x324222(0x26a)](_0x58b5f6),_0x546636['setBindGroup'](0x0,_0xe20a83),this['profileResources']?.['draw'](_0x546636,_0x324222(0x19a),_0x7faf82),this['axisResources']?.['draw'](_0x546636,'line-list',_0x7faf82));}[_0x2e1660(0x1cb)](_0x1ead0b,_0x552e0f){const _0x5a8d58=_0x2e1660;let _0x4d4913=_0x552e0f===_0x5a8d58(0x17e)?this[_0x5a8d58(0x390)]:this[_0x5a8d58(0x2a4)];!_0x4d4913||!this[_0x5a8d58(0x3a9)]||!this['volumeBindGroup']||!this[_0x5a8d58(0x291)]||(_0x1ead0b[_0x5a8d58(0x3f3)](0x0,this[_0x5a8d58(0x3a9)]),_0x1ead0b['setBindGroup'](0x1,this['volumeBindGroup']),_0x1ead0b[_0x5a8d58(0x3f3)](0x2,this['transferBindGroup']),this[_0x5a8d58(0x3ec)]?.[_0x5a8d58(0x282)](_0x1ead0b,_0x4d4913,_0x552e0f));}[_0x2e1660(0x275)](_0x52efa4){const _0x54a92b=_0x2e1660;_0x52efa4[_0x54a92b(0x2b7)][_0x54a92b(0x2cd)](_0x1a68a0=>{const _0x26f209=_0x54a92b;if(this[_0x26f209(0x239)]!==_0x52efa4||this['lifecycleState']===_0x26f209(0x2c2))return;this['lifecycleState']=_0x26f209(0x2b7),console[_0x26f209(0x2bf)]('WebGPU\x20volume\x20device\x20was\x20lost:\x20'+_0x1a68a0[_0x26f209(0x1aa)]+_0x26f209(0x389));let _0x39c172=this['canvas'];this[_0x26f209(0x2b6)](),_0x39c172&&this[_0x26f209(0x2a9)](_0x39c172)[_0x26f209(0x293)](_0x501a09=>{const _0x252d29=_0x26f209;console[_0x252d29(0x2bf)]('WebGPU\x20volume\x20device\x20restoration\x20failed.\x20WebGPU\x20体积设备恢复失败。',_0x501a09);});});}[_0x2e1660(0x2b6)](){const _0x599fa5=_0x2e1660;this[_0x599fa5(0x194)]+=0x1,this[_0x599fa5(0x1bd)](new DOMException(_0x599fa5(0x188),'AbortError')),this[_0x599fa5(0x2e7)]?.[_0x599fa5(0x3e2)](),this[_0x599fa5(0x288)]?.[_0x599fa5(0x3e2)](),this[_0x599fa5(0x15f)]?.['destroy'](),this['sliceResources']?.[_0x599fa5(0x3e2)](),this['axisResources']?.['destroy'](),this[_0x599fa5(0x352)]?.['destroy'](),this['sceneParamsBuffer']?.[_0x599fa5(0x3e2)](),this['volumeParamsBuffer']?.[_0x599fa5(0x3e2)](),this[_0x599fa5(0x35f)]?.[_0x599fa5(0x3e2)]();try{this['context']?.[_0x599fa5(0x250)]();}catch{}this[_0x599fa5(0x239)]?.['destroy'](),this['adapter']=null,this[_0x599fa5(0x239)]=null,this['context']=null,this[_0x599fa5(0x1c9)]=null,this[_0x599fa5(0x347)]=null,this[_0x599fa5(0x41c)]=null,this['uploadStagingBuffer']=null,this['uploadStagingBufferSize']=0x0,this[_0x599fa5(0x143)]=null,this[_0x599fa5(0x2ee)]=null,this[_0x599fa5(0x2cf)]=null,this[_0x599fa5(0x40c)]=null,this[_0x599fa5(0x1e9)]=null,this[_0x599fa5(0x3a9)]=null,this[_0x599fa5(0x3a6)]=null,this[_0x599fa5(0x1be)]=null,this[_0x599fa5(0x291)]=null,this[_0x599fa5(0x121)]=null,this[_0x599fa5(0x3d6)]=null,this[_0x599fa5(0x327)]=null,this[_0x599fa5(0x146)]=null,this['overlayLinePipeline']=null,this['sceneSlicePipeline']=null,this[_0x599fa5(0x2a4)]=null,this[_0x599fa5(0x352)]=null,this[_0x599fa5(0x2e7)]=null,this['transferResources']=null,this[_0x599fa5(0x15f)]=null,this['sliceResources']=null,this[_0x599fa5(0x11c)]=null,this['frameInFlight']=!0x1,this[_0x599fa5(0x274)]=0x0,this[_0x599fa5(0x1c0)]=0x0;}[_0x2e1660(0x1f6)](){const _0x2b830b=_0x2e1660;if(!this[_0x2b830b(0x239)])throw Error(_0x2b830b(0x329));return this['device'];}['getContext'](){const _0x7a098=_0x2e1660;if(!this[_0x7a098(0x35e)])throw Error(_0x7a098(0x19e));return this[_0x7a098(0x35e)];}['getFormat'](){const _0x290fd5=_0x2e1660;if(!this['format'])throw Error(_0x290fd5(0x3cf));return this[_0x290fd5(0x1c9)];}[_0x2e1660(0x339)](){const _0x41485f=_0x2e1660;if(!this['canvas'])throw Error('WebGPU\x20volume\x20canvas\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20Canvas\x20尚未初始化。');return this[_0x41485f(0x249)];}[_0x2e1660(0x2e9)](){const _0x590d1f=_0x2e1660;if(!this[_0x590d1f(0x352)])throw Error('WebGPU\x20scene\x20attachments\x20are\x20unavailable.\x20WebGPU\x20场景附件不可用。');return this[_0x590d1f(0x352)];}[_0x2e1660(0x163)](){const _0x6e21bf=_0x2e1660;if(!this[_0x6e21bf(0x2e7)])throw Error('WebGPU\x20volume\x20source\x20must\x20be\x20configured\x20before\x20uploading\x20bricks.\x20上传砖块前必须配置\x20WebGPU\x20体积数据源。');return this[_0x6e21bf(0x2e7)];}[_0x2e1660(0x2e1)](){const _0x3b0a85=_0x2e1660;if(!this[_0x3b0a85(0x288)])throw Error(_0x3b0a85(0x1de));return this['transferResources'];}[_0x2e1660(0x261)](){const _0x5d386e=_0x2e1660;if(!this[_0x5d386e(0x15f)])throw Error(_0x5d386e(0x2dd));return this[_0x5d386e(0x15f)];}[_0x2e1660(0x3da)](){const _0x386849=_0x2e1660;if(!this[_0x386849(0x3ec)])throw Error(_0x386849(0x2bc));return this['sliceResources'];}[_0x2e1660(0x257)](){const _0x14de25=_0x2e1660;if(!this[_0x14de25(0x11c)])throw Error('WebGPU\x20axis\x20resources\x20are\x20unavailable.\x20WebGPU\x20轴线资源不可用。');return this[_0x14de25(0x11c)];}[_0x2e1660(0x240)](){const _0x30627b=_0x2e1660;if(!this['sceneBindGroupLayout'])throw Error(_0x30627b(0x289));return this['sceneBindGroupLayout'];}[_0x2e1660(0x12e)](){const _0x4d2ac9=_0x2e1660;if(!this[_0x4d2ac9(0x143)])throw Error(_0x4d2ac9(0x2a7));return this[_0x4d2ac9(0x143)];}[_0x2e1660(0x348)](){const _0x2771e1=_0x2e1660;if(!this[_0x2771e1(0x2cf)])throw Error(_0x2771e1(0x2d2));return this[_0x2771e1(0x2cf)];}['getTransferBindGroupLayout'](){const _0x2b696e=_0x2e1660;if(!this[_0x2b696e(0x40c)])throw Error(_0x2b696e(0x21b));return this['transferBindGroupLayout'];}['getSliceBindGroupLayout'](){const _0x4666e8=_0x2e1660;if(!this[_0x4666e8(0x1e9)])throw Error(_0x4666e8(0x31c));return this['sliceBindGroupLayout'];}[_0x2e1660(0xf7)](){const _0x4f443c=_0x2e1660;if(!this['sceneParamsBuffer'])throw Error(_0x4f443c(0x22d));return this[_0x4f443c(0x347)];}[_0x2e1660(0x303)](){const _0x5de112=_0x2e1660;if(!this[_0x5de112(0x41c)])throw Error(_0x5de112(0x1b7));return this[_0x5de112(0x41c)];}};const getAxis=(_0x439cbd,_0x3852d3)=>_0x3852d3==='x'?_0x439cbd[_0x2e1660(0x3a3)]:_0x3852d3==='y'?_0x439cbd[_0x2e1660(0x185)]:_0x439cbd['zAxis'],clampPosition=(_0x48b1d6,_0xa9c0a8,_0x6bb1a5)=>{const _0x1145fc=_0x2e1660;if(!Number[_0x1145fc(0x2c4)](_0x6bb1a5))throw Error(_0x1145fc(0x35b));let _0xe5bcc1=getAxis(_0x48b1d6,_0xa9c0a8),_0x314289=Math[_0x1145fc(0x3ce)](_0xe5bcc1[_0x1145fc(0x2ce)],_0xe5bcc1['end']),_0x4a0e26=Math[_0x1145fc(0x3b1)](_0xe5bcc1[_0x1145fc(0x2ce)],_0xe5bcc1[_0x1145fc(0x209)]);return Math[_0x1145fc(0x3ce)](_0x4a0e26,Math[_0x1145fc(0x3b1)](_0x314289,_0x6bb1a5));},clonePreview=_0x3d70b0=>_0x3d70b0?{..._0x3d70b0}:null,cloneLockedSlice=_0x12c5ef=>({..._0x12c5ef}),validateAxes=_0x1b7835=>{const _0x5eec31=_0x2e1660;for(let _0x32a1c1 of[_0x1b7835[_0x5eec31(0x3a3)],_0x1b7835['yAxis'],_0x1b7835[_0x5eec31(0x271)]]){if(!Number[_0x5eec31(0x2c4)](_0x32a1c1[_0x5eec31(0x2ce)])||!Number[_0x5eec31(0x2c4)](_0x32a1c1['end']))throw Error(_0x5eec31(0x256));if(!(Number[_0x5eec31(0x406)](_0x32a1c1[_0x5eec31(0x2e2)])&&_0x32a1c1[_0x5eec31(0x2e2)]>0x0))throw Error(_0x5eec31(0x312));if(_0x32a1c1[_0x5eec31(0x2e2)]>0x1&&_0x32a1c1[_0x5eec31(0x2ce)]===_0x32a1c1[_0x5eec31(0x209)])throw Error(_0x5eec31(0x280));}},volumeAxisValueToNormalized=(_0x5c77ac,_0x306c59)=>_0x5c77ac[_0x2e1660(0x2ce)]===_0x5c77ac['end']?0x0:(_0x306c59-_0x5c77ac[_0x2e1660(0x2ce)])/(_0x5c77ac['end']-_0x5c77ac['start']),normalizedToVolumeAxisValue=(_0x93c58b,_0x52b74b)=>_0x93c58b['start']+_0x52b74b*(_0x93c58b['end']-_0x93c58b[_0x2e1660(0x2ce)]);var SliceState=class{[_0x2e1660(0x15a)];['listeners']=new Set();['onLimitReached'];[_0x2e1660(0x276)];[_0x2e1660(0x155)];[_0x2e1660(0x1b3)]=0x1;[_0x2e1660(0x244)]=null;[_0x2e1660(0x3e9)]=[];['mode']='auto';[_0x2e1660(0x28d)];constructor(_0xe7bbef,_0x18ac72={}){const _0x466a85=_0x2e1660;if(validateAxes(_0xe7bbef),this[_0x466a85(0x15a)]={'xAxis':{..._0xe7bbef[_0x466a85(0x3a3)]},'yAxis':{..._0xe7bbef[_0x466a85(0x185)]},'zAxis':{..._0xe7bbef['zAxis']}},this[_0x466a85(0x28d)]=_0x18ac72[_0x466a85(0x28d)]??0.25,this[_0x466a85(0x155)]=_0x18ac72[_0x466a85(0x155)]??_0x466a85(0x17e),this[_0x466a85(0x276)]=_0x18ac72['maxLockedSlices']??0xc,this[_0x466a85(0x351)]=_0x18ac72[_0x466a85(0x351)],!(this[_0x466a85(0x28d)]>=0x0&&this[_0x466a85(0x28d)]<=0x1))throw Error(_0x466a85(0x3ab));if(this[_0x466a85(0x155)]!==_0x466a85(0x17e)&&this[_0x466a85(0x155)]!=='always-visible')throw Error(_0x466a85(0x16a));if(!(Number['isInteger'](this[_0x466a85(0x276)])&&this[_0x466a85(0x276)]>0x0))throw Error(_0x466a85(0x27d));}get['preview'](){return clonePreview(this['currentPreview']);}get['lockedSlices'](){const _0x2e5199=_0x2e1660;return this['slices'][_0x2e5199(0x10e)](cloneLockedSlice);}get[_0x2e1660(0x12f)](){const _0x410d7d=_0x2e1660;return this[_0x410d7d(0x411)];}get[_0x2e1660(0x2e3)](){const _0x5b7d6a=_0x2e1660;return{'preview':this['preview'],'lockedSlices':this[_0x5b7d6a(0x41b)],'toolMode':this[_0x5b7d6a(0x411)],'volumeDimFactor':this['volumeDimFactor']};}['subscribe'](_0x440395){const _0x5e0c3d=_0x2e1660;return this[_0x5e0c3d(0x27b)][_0x5e0c3d(0x23e)](_0x440395),_0x440395(this[_0x5e0c3d(0x2e3)]),()=>this[_0x5e0c3d(0x27b)][_0x5e0c3d(0x214)](_0x440395);}get['axisDefinitions'](){const _0x2837ec=_0x2e1660;return{'xAxis':{...this['axes'][_0x2837ec(0x3a3)]},'yAxis':{...this[_0x2837ec(0x15a)]['yAxis']},'zAxis':{...this['axes'][_0x2837ec(0x271)]}};}[_0x2e1660(0x238)](_0x2189fb){const _0x41d94d=_0x2e1660;validateAxes(_0x2189fb),this[_0x41d94d(0x15a)]={'xAxis':{..._0x2189fb[_0x41d94d(0x3a3)]},'yAxis':{..._0x2189fb[_0x41d94d(0x185)]},'zAxis':{..._0x2189fb[_0x41d94d(0x271)]}},this[_0x41d94d(0x244)]&&(this[_0x41d94d(0x244)][_0x41d94d(0x154)]=clampPosition(this['axes'],this[_0x41d94d(0x244)][_0x41d94d(0x3f9)],this[_0x41d94d(0x244)][_0x41d94d(0x154)])),this[_0x41d94d(0x3e9)]=this[_0x41d94d(0x3e9)][_0x41d94d(0x10e)](_0x4b882f=>({..._0x4b882f,'position':clampPosition(this[_0x41d94d(0x15a)],_0x4b882f[_0x41d94d(0x3f9)],_0x4b882f[_0x41d94d(0x154)])})),this[_0x41d94d(0x36a)]();}['setToolMode'](_0x58d846){const _0x7d7039=_0x2e1660;this['mode']!==_0x58d846&&(this['mode']=_0x58d846,(_0x58d846===null||_0x58d846!=='auto'&&this['currentPreview']?.[_0x7d7039(0x3f9)]!==_0x58d846)&&(this[_0x7d7039(0x244)]=null),this[_0x7d7039(0x36a)]());}[_0x2e1660(0x24d)](_0x140d93,_0x427ec7){const _0x537842=_0x2e1660;if(this[_0x537842(0x411)]===null||this[_0x537842(0x411)]!=='auto'&&this[_0x537842(0x411)]!==_0x140d93)return;let _0x5e9a84=clampPosition(this[_0x537842(0x15a)],_0x140d93,_0x427ec7);this[_0x537842(0x244)]?.[_0x537842(0x3f9)]===_0x140d93&&this[_0x537842(0x244)][_0x537842(0x154)]===_0x5e9a84||(this[_0x537842(0x244)]={'axis':_0x140d93,'position':_0x5e9a84},this[_0x537842(0x36a)]());}['clearPreview'](){const _0xaa4519=_0x2e1660;this[_0xaa4519(0x244)]&&(this[_0xaa4519(0x244)]=null,this['notify']());}[_0x2e1660(0x1b5)](_0x8f087d=this[_0x2e1660(0x155)]){const _0x273a74=_0x2e1660;return this[_0x273a74(0x244)]?this[_0x273a74(0x3fd)](this[_0x273a74(0x244)][_0x273a74(0x3f9)],this[_0x273a74(0x244)]['position'],_0x8f087d):null;}[_0x2e1660(0x3fd)](_0x5ae5e8,_0xcd3b42,_0x58e896=this[_0x2e1660(0x155)]){const _0x57b79b=_0x2e1660;if(this['slices']['length']>=this['maxLockedSlices'])return this[_0x57b79b(0x351)]?.(this[_0x57b79b(0x276)]),null;let _0x2d0654={'id':'volume-slice-'+this[_0x57b79b(0x1b3)],'axis':_0x5ae5e8,'position':clampPosition(this['axes'],_0x5ae5e8,_0xcd3b42),'depthMode':_0x58e896,'visible':!0x0};return this[_0x57b79b(0x1b3)]+=0x1,this['slices']=[...this[_0x57b79b(0x3e9)],_0x2d0654],this[_0x57b79b(0x36a)](),cloneLockedSlice(_0x2d0654);}[_0x2e1660(0xc6)](_0x36f07a,_0x107cd5){const _0x4fb83f=_0x2e1660;let _0x2d69c7=this[_0x4fb83f(0x3e9)]['findIndex'](_0x150d9f=>_0x150d9f['id']===_0x36f07a);if(_0x2d69c7<0x0)return;let _0x2c44ab=this[_0x4fb83f(0x3e9)][_0x2d69c7],_0x14b146=clampPosition(this[_0x4fb83f(0x15a)],_0x2c44ab[_0x4fb83f(0x3f9)],_0x107cd5);_0x14b146!==_0x2c44ab[_0x4fb83f(0x154)]&&(this[_0x4fb83f(0x3e9)]=this[_0x4fb83f(0x3e9)][_0x4fb83f(0x10e)](_0xb63238=>_0xb63238['id']===_0x36f07a?{..._0xb63238,'position':_0x14b146}:_0xb63238),this['notify']());}[_0x2e1660(0x415)](_0x230416){const _0x2f8435=_0x2e1660;let _0x543d6e=this[_0x2f8435(0x3e9)][_0x2f8435(0x3d9)](_0x387e5a=>_0x387e5a['id']!==_0x230416);_0x543d6e['length']!==this['slices']['length']&&(this[_0x2f8435(0x3e9)]=_0x543d6e,this[_0x2f8435(0x36a)]());}[_0x2e1660(0x1fc)](){const _0x186262=_0x2e1660;this['slices']['length']!==0x0&&(this[_0x186262(0x3e9)]=[],this[_0x186262(0x36a)]());}[_0x2e1660(0x36a)](){const _0x5a9e42=_0x2e1660;let _0x491c4a=this[_0x5a9e42(0x2e3)];for(let _0x5d8960 of this[_0x5a9e42(0x27b)])_0x5d8960(_0x491c4a);}};const axisEndpoints=_0x4228a4=>_0x4228a4==='x'?[[0x0,0x0,0x0],[0x1,0x0,0x0]]:_0x4228a4==='y'?[[0x0,0x0,0x0],[0x0,0x1,0x0]]:[[0x0,0x0,0x0],[0x0,0x0,0x1]],projectAxis=(_0xf5eb03,_0x1e5225)=>{const _0x12f07d=_0x2e1660;let _0x333062=multiplyMatrices(_0x1e5225[_0x12f07d(0xf6)],_0x1e5225[_0x12f07d(0x32d)]),[_0x5ebf48,_0xfba80]=axisEndpoints(_0xf5eb03),_0xaaead=projectPointToViewport(_0x333062,_0x5ebf48,_0x1e5225['viewportWidth'],_0x1e5225[_0x12f07d(0x290)]),_0x456338=projectPointToViewport(_0x333062,_0xfba80,_0x1e5225[_0x12f07d(0x2b3)],_0x1e5225[_0x12f07d(0x290)]);return!_0xaaead||!_0x456338?null:{'axis':_0xf5eb03,'startX':_0xaaead[0x0],'startY':_0xaaead[0x1],'endX':_0x456338[0x0],'endY':_0x456338[0x1]};},hitProjectedAxis=(_0x97dd,_0x43e952,_0x4f82cb)=>{const _0x33e515=_0x2e1660;let _0x4429b2=_0x97dd[_0x33e515(0x13e)]-_0x97dd[_0x33e515(0x24e)],_0x260084=_0x97dd[_0x33e515(0x25d)]-_0x97dd[_0x33e515(0x133)],_0x4777bf=_0x4429b2*_0x4429b2+_0x260084*_0x260084,_0x5aeb92=_0x4777bf===0x0?0x0:((_0x43e952-_0x97dd[_0x33e515(0x24e)])*_0x4429b2+(_0x4f82cb-_0x97dd[_0x33e515(0x133)])*_0x260084)/_0x4777bf,_0x38a92b=Math[_0x33e515(0x3ce)](0x1,Math[_0x33e515(0x3b1)](0x0,_0x5aeb92)),_0x2f4d17=_0x97dd[_0x33e515(0x24e)]+_0x38a92b*_0x4429b2,_0x20a8ce=_0x97dd[_0x33e515(0x133)]+_0x38a92b*_0x260084;return{'axis':_0x97dd[_0x33e515(0x3f9)],'distance':Math[_0x33e515(0x305)](_0x43e952-_0x2f4d17,_0x4f82cb-_0x20a8ce),'normalizedPosition':_0x38a92b};},eventViewportPoint=(_0x44616c,_0x68363a,_0x2773a5)=>{const _0x239f8b=_0x2e1660;let _0x33a058=_0x68363a[_0x239f8b(0x2dc)]();return[_0x33a058[_0x239f8b(0x274)]===0x0?0x0:(_0x44616c[_0x239f8b(0x40a)]-_0x33a058[_0x239f8b(0x1b8)])*_0x2773a5['viewportWidth']/_0x33a058[_0x239f8b(0x274)],_0x33a058[_0x239f8b(0x1c0)]===0x0?0x0:(_0x44616c['clientY']-_0x33a058[_0x239f8b(0x3c0)])*_0x2773a5[_0x239f8b(0x290)]/_0x33a058[_0x239f8b(0x1c0)]];},realAxisPosition=(_0x4115a3,_0x212cfa,_0x5ee42c)=>{const _0x34a15e=_0x2e1660;let _0x225084=_0x4115a3[_0x34a15e(0x1d0)];return normalizedToVolumeAxisValue(_0x212cfa==='x'?_0x225084['xAxis']:_0x212cfa==='y'?_0x225084['yAxis']:_0x225084['zAxis'],_0x5ee42c);};var SliceInteractionController=class{[_0x2e1660(0x202)];['state'];[_0x2e1660(0x331)];[_0x2e1660(0x33a)];['axisHysteresis'];['onInteractionStart'];['onInteractionEnd'];[_0x2e1660(0x3d5)]=null;[_0x2e1660(0x13a)]=null;[_0x2e1660(0x2c7)]=!0x1;constructor(_0x57cca7,_0x31feb3,_0x41311c,_0x3f710d={}){const _0x588511=_0x2e1660;this[_0x588511(0x202)]=_0x57cca7,this['state']=_0x31feb3,this[_0x588511(0x331)]=_0x41311c,this[_0x588511(0x33a)]=_0x3f710d[_0x588511(0x3de)]??0xa,this['axisHysteresis']=_0x3f710d[_0x588511(0x224)]??0x4,this['onInteractionStart']=_0x3f710d[_0x588511(0x418)],this[_0x588511(0x1bf)]=_0x3f710d[_0x588511(0x1bf)];}['initialize'](){const _0x284b08=_0x2e1660;this[_0x284b08(0x2c7)]||(this['initialized']=!0x0,this[_0x284b08(0x202)][_0x284b08(0x21a)](_0x284b08(0x297),this[_0x284b08(0x281)],!0x0),this['element'][_0x284b08(0x21a)](_0x284b08(0x28f),this[_0x284b08(0x104)],!0x0),this['element'][_0x284b08(0x21a)](_0x284b08(0x2c0),this[_0x284b08(0x363)],!0x0),window['addEventListener']('pointermove',this['handleWindowPointerMove'],!0x0),window[_0x284b08(0x21a)](_0x284b08(0x409),this[_0x284b08(0x132)],!0x0),window['addEventListener']('pointercancel',this[_0x284b08(0x132)],!0x0));}[_0x2e1660(0x2ae)](_0x374aab,_0x275fbb){const _0x4c3cbd=_0x2e1660;let _0x3a2274=this['state']['lockedSlices'][_0x4c3cbd(0x180)](_0x17a9d1=>_0x17a9d1['id']===_0x374aab);_0x3a2274&&(this[_0x4c3cbd(0x3d5)]={'kind':'locked','axis':_0x3a2274[_0x4c3cbd(0x3f9)],'pointerId':_0x275fbb[_0x4c3cbd(0x20d)],'sliceId':_0x374aab,'startX':_0x275fbb[_0x4c3cbd(0x40a)],'startY':_0x275fbb[_0x4c3cbd(0x2fd)],'moved':!0x1},this[_0x4c3cbd(0x418)]?.(),_0x275fbb[_0x4c3cbd(0x153)](),_0x275fbb['stopPropagation']());}[_0x2e1660(0x3e2)](){const _0xd2d6c6=_0x2e1660;this[_0xd2d6c6(0x2c7)]&&(this['initialized']=!0x1,this[_0xd2d6c6(0x202)][_0xd2d6c6(0xcc)](_0xd2d6c6(0x297),this[_0xd2d6c6(0x281)],!0x0),this['element'][_0xd2d6c6(0xcc)](_0xd2d6c6(0x28f),this[_0xd2d6c6(0x104)],!0x0),this[_0xd2d6c6(0x202)][_0xd2d6c6(0xcc)](_0xd2d6c6(0x2c0),this[_0xd2d6c6(0x363)],!0x0),window[_0xd2d6c6(0xcc)](_0xd2d6c6(0x28f),this[_0xd2d6c6(0x1b0)],!0x0),window[_0xd2d6c6(0xcc)](_0xd2d6c6(0x409),this[_0xd2d6c6(0x132)],!0x0),window[_0xd2d6c6(0xcc)](_0xd2d6c6(0x14e),this[_0xd2d6c6(0x132)],!0x0),this[_0xd2d6c6(0x3d5)]&&this[_0xd2d6c6(0x1bf)]?.(),this[_0xd2d6c6(0x3d5)]=null,this[_0xd2d6c6(0x13a)]=null,this[_0xd2d6c6(0x322)][_0xd2d6c6(0x1ce)]());}['findAxisHit'](_0x2a2ba0,_0x334269){const _0x40eb17=_0x2e1660;let _0x12acfd=this['getFrame']();if(!_0x12acfd)return null;let [_0x55cbbd,_0x4e31e4]=eventViewportPoint(_0x2a2ba0,this[_0x40eb17(0x202)],_0x12acfd),_0x12c33f=this[_0x40eb17(0x322)]['toolMode'];if(_0x12c33f===null)return null;let _0x89f829=(_0x334269?[_0x334269]:_0x12c33f===_0x40eb17(0x3d0)?['x','y','z']:[_0x12c33f])[_0x40eb17(0x10e)](_0x1c066c=>projectAxis(_0x1c066c,_0x12acfd))['filter'](_0x476072=>_0x476072!==null)['map'](_0x196aa5=>hitProjectedAxis(_0x196aa5,_0x55cbbd,_0x4e31e4));if(_0x89f829[_0x40eb17(0x37f)]===0x0)return null;_0x89f829['sort']((_0x31bc16,_0x5151d3)=>_0x31bc16['distance']-_0x5151d3[_0x40eb17(0x314)]);let _0x1a97b5=_0x89f829[0x0];if(!_0x334269&&this[_0x40eb17(0x13a)]){let _0x20ad78=_0x89f829[_0x40eb17(0x180)](_0x2aeac5=>_0x2aeac5[_0x40eb17(0x3f9)]===this['previousAxis']);_0x20ad78&&_0x20ad78[_0x40eb17(0x314)]<=_0x1a97b5['distance']+this[_0x40eb17(0xe8)]&&(_0x1a97b5=_0x20ad78);}return!_0x334269&&_0x1a97b5[_0x40eb17(0x314)]>this['hitTolerance']?null:_0x1a97b5;}['applyHit'](_0x33ae23,_0x1c7d01){const _0xb7d412=_0x2e1660;let _0xb2fadd=realAxisPosition(this[_0xb7d412(0x322)],_0x33ae23['axis'],_0x33ae23[_0xb7d412(0x217)]);_0x1c7d01?this[_0xb7d412(0x322)][_0xb7d412(0xc6)](_0x1c7d01,_0xb2fadd):this[_0xb7d412(0x322)]['updatePreview'](_0x33ae23[_0xb7d412(0x3f9)],_0xb2fadd),this[_0xb7d412(0x13a)]=_0x33ae23['axis'];}[_0x2e1660(0x281)]=_0x2cb2c3=>{const _0x2a439d=_0x2e1660;if(_0x2cb2c3[_0x2a439d(0x199)]!==0x0||this[_0x2a439d(0x3d5)])return;let _0x498a46=this[_0x2a439d(0x102)](_0x2cb2c3);_0x498a46&&(this['applyHit'](_0x498a46),this[_0x2a439d(0x3d5)]={'kind':_0x2a439d(0x3b4),'axis':_0x498a46[_0x2a439d(0x3f9)],'pointerId':_0x2cb2c3[_0x2a439d(0x20d)],'startX':_0x2cb2c3['clientX'],'startY':_0x2cb2c3[_0x2a439d(0x2fd)],'moved':!0x1},this[_0x2a439d(0x418)]?.(),this[_0x2a439d(0x202)][_0x2a439d(0x371)]?.(_0x2cb2c3['pointerId']),_0x2cb2c3[_0x2a439d(0x153)](),_0x2cb2c3[_0x2a439d(0x283)]());};['handlePointerMove']=_0x3d38d6=>{const _0x23fd8e=_0x2e1660;if(this[_0x23fd8e(0x3d5)])return;let _0x4c0905=this[_0x23fd8e(0x102)](_0x3d38d6);if(!_0x4c0905){this[_0x23fd8e(0x13a)]=null,this[_0x23fd8e(0x322)]['clearPreview']();return;}this[_0x23fd8e(0x242)](_0x4c0905);};[_0x2e1660(0x1b0)]=_0x1e2aa6=>{const _0x32a021=_0x2e1660;let _0x1a66bc=this['activePointer'];if(!_0x1a66bc||_0x1a66bc[_0x32a021(0x20d)]!==_0x1e2aa6[_0x32a021(0x20d)])return;let _0x1280ff=this['findAxisHit'](_0x1e2aa6,_0x1a66bc[_0x32a021(0x3f9)]);_0x1280ff&&(Math[_0x32a021(0x305)](_0x1e2aa6[_0x32a021(0x40a)]-_0x1a66bc[_0x32a021(0x24e)],_0x1e2aa6[_0x32a021(0x2fd)]-_0x1a66bc[_0x32a021(0x133)])>0x4&&(_0x1a66bc[_0x32a021(0x206)]=!0x0),this[_0x32a021(0x242)](_0x1280ff,_0x1a66bc[_0x32a021(0x397)]),_0x1e2aa6[_0x32a021(0x153)](),_0x1e2aa6[_0x32a021(0x283)]());};[_0x2e1660(0x132)]=_0x404f3b=>{const _0x304235=_0x2e1660;let _0x16b7ed=this[_0x304235(0x3d5)];!_0x16b7ed||_0x16b7ed[_0x304235(0x20d)]!==_0x404f3b[_0x304235(0x20d)]||(_0x16b7ed['kind']==='preview'&&!_0x16b7ed[_0x304235(0x206)]&&this[_0x304235(0x322)]['lockPreview'](),this['element'][_0x304235(0x32f)]?.(_0x404f3b[_0x304235(0x20d)])&&this[_0x304235(0x202)][_0x304235(0x227)](_0x404f3b[_0x304235(0x20d)]),this[_0x304235(0x3d5)]=null,this[_0x304235(0x1bf)]?.(),_0x404f3b['preventDefault'](),_0x404f3b[_0x304235(0x283)]());};[_0x2e1660(0x363)]=()=>{const _0x46db60=_0x2e1660;this['activePointer']||this[_0x46db60(0x322)][_0x46db60(0x1ce)]();};};const axisLabel=_0x197cc3=>_0x197cc3[_0x2e1660(0x284)](),defaultFormatPosition=(_0x165d1,_0x5c439c)=>axisLabel(_0x165d1)+'\x20'+Number(_0x5c439c[_0x2e1660(0x1e1)](0x4)),getAxisDefinition=(_0x556217,_0x467b10)=>{const _0x72967=_0x2e1660;let _0x340e92=_0x556217[_0x72967(0x1d0)];return _0x467b10==='x'?_0x340e92[_0x72967(0x3a3)]:_0x467b10==='y'?_0x340e92[_0x72967(0x185)]:_0x340e92[_0x72967(0x271)];},markerModelPoint=(_0x42cb5d,_0x7bbcdd)=>{const _0x50fd81=_0x2e1660;let _0x36bbe5=volumeAxisValueToNormalized(getAxisDefinition(_0x42cb5d,_0x7bbcdd[_0x50fd81(0x3f9)]),_0x7bbcdd['position']);return _0x7bbcdd[_0x50fd81(0x3f9)]==='x'?[_0x36bbe5,0x0,0x0]:_0x7bbcdd[_0x50fd81(0x3f9)]==='y'?[0x0,_0x36bbe5,0x0]:[0x0,0x0,_0x36bbe5];},applyMarkerBaseStyle=_0x593d5d=>{const _0x39c182=_0x2e1660;_0x593d5d[_0x39c182(0x20c)][_0x39c182(0x154)]=_0x39c182(0x25c),_0x593d5d[_0x39c182(0x20c)][_0x39c182(0x270)]='1',_0x593d5d[_0x39c182(0x20c)][_0x39c182(0x29f)]='flex',_0x593d5d[_0x39c182(0x20c)][_0x39c182(0x3f8)]='center',_0x593d5d[_0x39c182(0x20c)][_0x39c182(0x13c)]=_0x39c182(0x2ab),_0x593d5d[_0x39c182(0x20c)]['padding']=_0x39c182(0x31a),_0x593d5d['style'][_0x39c182(0x18e)]='1px\x20solid\x20rgb(255\x20255\x20255\x20/\x2065%)',_0x593d5d['style']['borderRadius']=_0x39c182(0x2ab),_0x593d5d[_0x39c182(0x20c)]['color']=_0x39c182(0x263),_0x593d5d[_0x39c182(0x20c)][_0x39c182(0x3ad)]=_0x39c182(0x417),_0x593d5d[_0x39c182(0x20c)][_0x39c182(0x186)]='12px/1.2\x20sans-serif',_0x593d5d[_0x39c182(0x20c)]['whiteSpace']=_0x39c182(0x157),_0x593d5d[_0x39c182(0x20c)][_0x39c182(0x40e)]=_0x39c182(0x2a2),_0x593d5d[_0x39c182(0x20c)]['userSelect']=_0x39c182(0x116),_0x593d5d['style'][_0x39c182(0x3d1)]=_0x39c182(0x116);},createDeleteButton=()=>{const _0x5f22a9=_0x2e1660;let _0x45de0a=document[_0x5f22a9(0x357)](_0x5f22a9(0x199));return _0x45de0a['type']=_0x5f22a9(0x199),_0x45de0a['textContent']='×',_0x45de0a[_0x5f22a9(0x1c6)](_0x5f22a9(0x35a),'删除切面'),_0x45de0a[_0x5f22a9(0x20c)][_0x5f22a9(0x2d7)]='0\x202px',_0x45de0a[_0x5f22a9(0x20c)][_0x5f22a9(0x18e)]='0',_0x45de0a['style'][_0x5f22a9(0x2eb)]=_0x5f22a9(0x3fb),_0x45de0a['style'][_0x5f22a9(0x3ad)]=_0x5f22a9(0x294),_0x45de0a[_0x5f22a9(0x20c)][_0x5f22a9(0x20f)]=_0x5f22a9(0x27f),_0x45de0a;};var SliceMarkerOverlay=class{[_0x2e1660(0x2c1)];['state'];[_0x2e1660(0x331)];[_0x2e1660(0x395)];[_0x2e1660(0xf5)];['markers']=new Map();[_0x2e1660(0x278)];['unsubscribe'];[_0x2e1660(0x22f)]=null;constructor(_0x22331d,_0x5b9a0d,_0x4603a8,_0x3dd262={}){const _0x39094f=_0x2e1660;this[_0x39094f(0x2c1)]=_0x22331d,this[_0x39094f(0x322)]=_0x5b9a0d,this[_0x39094f(0x331)]=_0x4603a8,this[_0x39094f(0x395)]=_0x3dd262[_0x39094f(0x395)],this[_0x39094f(0xf5)]=_0x3dd262[_0x39094f(0xf5)]??defaultFormatPosition,this[_0x39094f(0x278)]=_0x22331d[_0x39094f(0x20c)][_0x39094f(0x154)],getComputedStyle(_0x22331d)['position']==='static'&&(_0x22331d[_0x39094f(0x20c)][_0x39094f(0x154)]=_0x39094f(0x231)),this[_0x39094f(0x3b3)]=_0x5b9a0d['subscribe'](()=>this['update']());}['update'](){const _0x13197c=_0x2e1660;let _0x1edd59=this[_0x13197c(0x322)][_0x13197c(0x2e3)];this['syncPreview'](_0x1edd59['preview']),this[_0x13197c(0x323)](_0x1edd59[_0x13197c(0x41b)]);let _0x5ee8a7=this['getFrame']();if(!_0x5ee8a7){this[_0x13197c(0x40f)]();return;}_0x1edd59[_0x13197c(0x3b4)]&&this[_0x13197c(0x22f)]&&this[_0x13197c(0x318)](this[_0x13197c(0x22f)],_0x1edd59[_0x13197c(0x3b4)],_0x5ee8a7);for(let _0x5d58dd of _0x1edd59[_0x13197c(0x41b)]){let _0x2b95b5=this[_0x13197c(0x3e3)][_0x13197c(0x37a)](_0x5d58dd['id']);_0x2b95b5&&this[_0x13197c(0x318)](_0x2b95b5,_0x5d58dd,_0x5ee8a7);}}[_0x2e1660(0x3e2)](){const _0x160cb8=_0x2e1660;this[_0x160cb8(0x3b3)](),this['previewMarker']?.['remove'](),this[_0x160cb8(0x22f)]=null;for(let _0x130abc of this[_0x160cb8(0x3e3)]['values']())_0x130abc[_0x160cb8(0x2b1)]();this[_0x160cb8(0x3e3)][_0x160cb8(0xf2)](),this[_0x160cb8(0x2c1)][_0x160cb8(0x20c)][_0x160cb8(0x154)]=this[_0x160cb8(0x278)];}[_0x2e1660(0xfd)](_0x572d36){const _0x3aedff=_0x2e1660;if(!_0x572d36){this[_0x3aedff(0x22f)]?.['remove'](),this[_0x3aedff(0x22f)]=null;return;}this[_0x3aedff(0x22f)]||(this[_0x3aedff(0x22f)]=document['createElement']('div'),applyMarkerBaseStyle(this[_0x3aedff(0x22f)]),this[_0x3aedff(0x22f)][_0x3aedff(0x20c)][_0x3aedff(0x251)]=_0x3aedff(0x116),this['previewMarker'][_0x3aedff(0x20c)][_0x3aedff(0x211)]=_0x3aedff(0x2a3),this['container'][_0x3aedff(0x204)](this[_0x3aedff(0x22f)])),this[_0x3aedff(0x22f)][_0x3aedff(0xdb)]=this[_0x3aedff(0xf5)](_0x572d36[_0x3aedff(0x3f9)],_0x572d36[_0x3aedff(0x154)]);}[_0x2e1660(0x323)](_0x3762dd){const _0x52f267=_0x2e1660;let _0x2b6e77=new Set(_0x3762dd[_0x52f267(0x10e)](_0x459f8d=>_0x459f8d['id']));for(let [_0x42c6f9,_0x3a8912]of this[_0x52f267(0x3e3)])_0x2b6e77['has'](_0x42c6f9)||(_0x3a8912[_0x52f267(0x2b1)](),this[_0x52f267(0x3e3)][_0x52f267(0x214)](_0x42c6f9));for(let _0x21423e of _0x3762dd){let _0x54eab9=this[_0x52f267(0x3e3)]['get'](_0x21423e['id']);_0x54eab9||(_0x54eab9=this[_0x52f267(0x368)](_0x21423e['id']),this[_0x52f267(0x3e3)]['set'](_0x21423e['id'],_0x54eab9),this[_0x52f267(0x2c1)]['append'](_0x54eab9));let _0x400d57=_0x54eab9[_0x52f267(0x2f2)];_0x400d57&&(_0x400d57[_0x52f267(0xdb)]=this[_0x52f267(0xf5)](_0x21423e[_0x52f267(0x3f9)],_0x21423e[_0x52f267(0x154)]));}}[_0x2e1660(0x368)](_0x1e4726){const _0x4d1f9c=_0x2e1660;let _0x1f1885=document[_0x4d1f9c(0x357)]('div');applyMarkerBaseStyle(_0x1f1885),_0x1f1885['style'][_0x4d1f9c(0x20f)]=_0x4d1f9c(0x1cc),_0x1f1885[_0x4d1f9c(0x204)](document[_0x4d1f9c(0x26c)](''));let _0x50fd0d=createDeleteButton();return _0x50fd0d[_0x4d1f9c(0x21a)](_0x4d1f9c(0x297),_0x331aea=>_0x331aea['stopPropagation']()),_0x50fd0d[_0x4d1f9c(0x21a)]('click',_0x57af7a=>{const _0x273886=_0x4d1f9c;_0x57af7a[_0x273886(0x283)](),this[_0x273886(0x322)]['removeSlice'](_0x1e4726);}),_0x1f1885['addEventListener']('pointerdown',_0x3f3b45=>this['interactionController']?.[_0x4d1f9c(0x2ae)](_0x1e4726,_0x3f3b45)),_0x1f1885[_0x4d1f9c(0x204)](_0x50fd0d),_0x1f1885;}[_0x2e1660(0x318)](_0x4c11e,_0x56c87b,_0x5f3950){const _0x23c953=_0x2e1660;let _0x568187=projectPointToViewport(multiplyMatrices(_0x5f3950[_0x23c953(0xf6)],_0x5f3950[_0x23c953(0x32d)]),markerModelPoint(this[_0x23c953(0x322)],_0x56c87b),_0x5f3950[_0x23c953(0x2b3)],_0x5f3950['viewportHeight']);if(!_0x568187||_0x568187[0x2]<0x0||_0x568187[0x2]>0x1){_0x4c11e[_0x23c953(0x20c)][_0x23c953(0x29f)]=_0x23c953(0x116);return;}_0x4c11e[_0x23c953(0x20c)][_0x23c953(0x29f)]=_0x23c953(0xdc),_0x4c11e[_0x23c953(0x20c)]['left']=_0x568187[0x0]+'px',_0x4c11e[_0x23c953(0x20c)][_0x23c953(0x3c0)]=_0x568187[0x1]+'px';}[_0x2e1660(0x40f)](){const _0x55c8e8=_0x2e1660;this['previewMarker']&&(this[_0x55c8e8(0x22f)][_0x55c8e8(0x20c)][_0x55c8e8(0x29f)]='none');for(let _0x435cc2 of this[_0x55c8e8(0x3e3)][_0x55c8e8(0x21e)]())_0x435cc2['style'][_0x55c8e8(0x29f)]=_0x55c8e8(0x116);}};const clamp=(_0x5234f7,_0x54ed10)=>Math[_0x2e1660(0x3ce)](_0x54ed10-0x1,Math[_0x2e1660(0x3b1)](0x0,_0x5234f7)),createPhysicalBrickValues=(_0x4d2647,_0x3847d3,_0x30d25e,_0x3bf4bc)=>{const _0x1ea48d=_0x2e1660;validateVolumeChunk(_0x4d2647,_0x3bf4bc,_0x30d25e[_0x1ea48d(0x408)]);let _0x5c021e=_0x3847d3[_0x1ea48d(0x274)]+_0x3847d3[_0x1ea48d(0x405)]*0x2,_0x177869=_0x3847d3[_0x1ea48d(0x1c0)]+_0x3847d3[_0x1ea48d(0x405)]*0x2,_0x2acead=_0x3847d3[_0x1ea48d(0xc8)]+_0x3847d3[_0x1ea48d(0x405)]*0x2,_0x1494d6=new Float32Array(_0x5c021e*_0x177869*_0x2acead);for(let _0x2848bd=0x0;_0x2848bd<_0x2acead;_0x2848bd+=0x1){let _0x438c80=clamp(_0x30d25e['coreRange']['sourceYStart']+_0x2848bd-_0x3847d3[_0x1ea48d(0x405)],_0x4d2647['zAxis'][_0x1ea48d(0x2e2)])-_0x3bf4bc[_0x1ea48d(0x338)][_0x1ea48d(0x30e)];for(let _0x4cdb12=0x0;_0x4cdb12<_0x177869;_0x4cdb12+=0x1){let _0x489fcf=clamp(_0x30d25e[_0x1ea48d(0x3dc)][_0x1ea48d(0x182)]+_0x4cdb12-_0x3847d3[_0x1ea48d(0x405)],_0x4d2647['yAxis'][_0x1ea48d(0x2e2)])-_0x3bf4bc['range'][_0x1ea48d(0x182)];for(let _0x79e44a=0x0;_0x79e44a<_0x5c021e;_0x79e44a+=0x1){let _0x542dac=clamp(_0x30d25e[_0x1ea48d(0x3dc)][_0x1ea48d(0x23f)]+_0x79e44a-_0x3847d3['halo'],_0x4d2647['xAxis']['count'])-_0x3bf4bc[_0x1ea48d(0x338)][_0x1ea48d(0x23f)];_0x1494d6[(_0x2848bd*_0x177869+_0x4cdb12)*_0x5c021e+_0x79e44a]=_0x3bf4bc['values'][(_0x438c80*_0x3bf4bc['height']+_0x489fcf)*_0x3bf4bc[_0x1ea48d(0x274)]+_0x542dac];}}}return _0x1494d6;},normalizeColorStops=_0x1bb49f=>{const _0x9fcddb=_0x2e1660;if(_0x1bb49f[_0x9fcddb(0x37f)]===0x0)throw Error(_0x9fcddb(0xc3));return _0x1bb49f[_0x9fcddb(0x10e)]((_0x5e315c,_0x21694f)=>{const _0x25f692=_0x9fcddb;if(Number[_0x25f692(0x1d5)](_0x5e315c[_0x25f692(0x3ce)])||Number[_0x25f692(0x1d5)](_0x5e315c['max']))throw TypeError('第'+(_0x21694f+0x1)+_0x25f692(0x1f3));if(_0x5e315c['min']>=_0x5e315c[_0x25f692(0x3b1)])throw Error('第'+(_0x21694f+0x1)+_0x25f692(0xe7));return{'min':_0x5e315c[_0x25f692(0x3ce)],'max':_0x5e315c[_0x25f692(0x3b1)],'color':parseRasterColor(_0x5e315c[_0x25f692(0x2eb)])};})['sort']((_0x3260a7,_0x3222e4)=>_0x3260a7['min']-_0x3222e4['min']);},parseRasterColor=_0x51035f=>{const _0x4b372d=_0x2e1660;let _0xfbeaa4=_0x51035f[_0x4b372d(0x378)]()[_0x4b372d(0x164)]();if(_0xfbeaa4[_0x4b372d(0x14d)]('#'))return parseHexColor(_0xfbeaa4);if(_0xfbeaa4['startsWith'](_0x4b372d(0x1d8)))return parseRgbColor(_0xfbeaa4,!0x0);if(_0xfbeaa4['startsWith']('rgb('))return parseRgbColor(_0xfbeaa4,!0x1);throw Error('不支持的颜色格式:\x20'+_0x51035f);},parseHexColor=_0x5cb9b4=>{const _0x469740=_0x2e1660;if(_0x5cb9b4[_0x469740(0x37f)]===0x4)return normalizeRgb(Number[_0x469740(0x13b)](''+_0x5cb9b4[0x1]+_0x5cb9b4[0x1],0x10),Number[_0x469740(0x13b)](''+_0x5cb9b4[0x2]+_0x5cb9b4[0x2],0x10),Number[_0x469740(0x13b)](''+_0x5cb9b4[0x3]+_0x5cb9b4[0x3],0x10),0x1);if(_0x5cb9b4[_0x469740(0x37f)]===0x7)return normalizeRgb(Number[_0x469740(0x13b)](_0x5cb9b4[_0x469740(0x414)](0x1,0x3),0x10),Number['parseInt'](_0x5cb9b4['slice'](0x3,0x5),0x10),Number[_0x469740(0x13b)](_0x5cb9b4[_0x469740(0x414)](0x5,0x7),0x10),0x1);throw Error(_0x469740(0x398)+_0x5cb9b4);},parseRgbColor=(_0xcec288,_0x2458bf)=>{const _0x5a441c=_0x2e1660;let _0x52faeb=_0xcec288['match'](/^rgba?\(([^)]+)\)$/);if(!_0x52faeb)throw Error(_0x5a441c(0x391)+_0xcec288);let _0x1feee5=_0x52faeb[0x1][_0x5a441c(0xd7)](',')[_0x5a441c(0x10e)](_0x4e0e6e=>_0x4e0e6e[_0x5a441c(0x378)]()),_0x392b30=_0x2458bf?0x4:0x3;if(_0x1feee5['length']!==_0x392b30)throw Error(_0x5a441c(0x166)+_0xcec288);return normalizeRgb(Number(_0x1feee5[0x0]),Number(_0x1feee5[0x1]),Number(_0x1feee5[0x2]),_0x2458bf?Number(_0x1feee5[0x3]):0x1);},normalizeRgb=(_0x3c1b49,_0x2d2870,_0x2389a7,_0x346398)=>{const _0x3013a1=_0x2e1660;if(!isValidRgbChannel(_0x3c1b49)||!isValidRgbChannel(_0x2d2870)||!isValidRgbChannel(_0x2389a7))throw Error(_0x3013a1(0x1fd));if(!Number[_0x3013a1(0x2c4)](_0x346398)||_0x346398<0x0||_0x346398>0x1)throw Error(_0x3013a1(0x2fc));return[_0x3c1b49/0xff,_0x2d2870/0xff,_0x2389a7/0xff,_0x346398];},isValidRgbChannel=_0x27f75f=>Number[_0x2e1660(0x2c4)](_0x27f75f)&&_0x27f75f>=0x0&&_0x27f75f<=0xff,validateStops=_0x187994=>{const _0x8639d1=_0x2e1660;if(_0x187994['length']===0x0)throw Error(_0x8639d1(0x326));let _0x42d5c1=-0x1/0x0;for(let _0x492f31 of _0x187994){if(!Number['isFinite'](_0x492f31['value'])||_0x492f31[_0x8639d1(0x3a0)]<=_0x42d5c1)throw Error(_0x8639d1(0x342));if(!Number[_0x8639d1(0x2c4)](_0x492f31[_0x8639d1(0x211)])||_0x492f31[_0x8639d1(0x211)]<0x0||_0x492f31[_0x8639d1(0x211)]>0x1)throw Error(_0x8639d1(0x2d6));_0x42d5c1=_0x492f31[_0x8639d1(0x3a0)];}},findTransferInterval=(_0x62f802,_0x45b0fc)=>{const _0x441844=_0x2e1660;if(_0x62f802<=_0x45b0fc[0x0])return[0x0,0x0,0x0];for(let _0x23f8f7=0x1;_0x23f8f7<_0x45b0fc['length'];_0x23f8f7+=0x1)if(_0x62f802<=_0x45b0fc[_0x23f8f7]){let _0x4132d8=_0x45b0fc[_0x23f8f7]-_0x45b0fc[_0x23f8f7-0x1];return[_0x23f8f7-0x1,_0x23f8f7,_0x4132d8===0x0?0x0:Math[_0x441844(0x3ce)](0x1,Math[_0x441844(0x3b1)](0x0,(_0x62f802-_0x45b0fc[_0x23f8f7-0x1])/_0x4132d8))];}let _0x273e59=_0x45b0fc[_0x441844(0x37f)]-0x1;return[_0x273e59,_0x273e59,0x0];},prepareWebgpuVolumeTransfer=(_0x28ac8b,_0x304a86)=>{validateStops(_0x304a86);let _0x350bae=normalizeColorStops([..._0x28ac8b]);return{'colorStops':_0x350bae['flatMap']((_0x2487c9,_0x4bd16a)=>{const _0x8ba8f6=_0x2b0a;let _0x530488=_0x350bae[Math[_0x8ba8f6(0x3ce)](_0x4bd16a+0x1,_0x350bae[_0x8ba8f6(0x37f)]-0x1)][_0x8ba8f6(0x2eb)];return[{'value':_0x2487c9[_0x8ba8f6(0x3ce)],'color':_0x2487c9['color']},{'value':_0x2487c9[_0x8ba8f6(0x3b1)],'color':_0x530488}];}),'opacityStops':_0x304a86['map'](_0x16496c=>({..._0x16496c}))};},sampleVolumeTransferColor=(_0x27af30,_0x5a1525,_0x81a6b8,_0x50a481)=>{const _0x4a7475=_0x2e1660;if(!Number[_0x4a7475(0x2c4)](_0x27af30))return[0x0,0x0,0x0,0x0];let [_0x4c3500,_0x3568f4,_0x5969e8]=findTransferInterval(_0x27af30,_0x5a1525[_0x4a7475(0x10e)](_0x4d6676=>_0x4d6676[_0x4a7475(0x3a0)])),_0x50bc42=_0x5a1525[_0x4c3500],_0x5acc8e=_0x5a1525[_0x3568f4],_0x220f4b=_0x50a481===_0x4a7475(0x392)?0x0:_0x5969e8;return[_0x50bc42[_0x4a7475(0x2eb)][0x0]+(_0x5acc8e[_0x4a7475(0x2eb)][0x0]-_0x50bc42['color'][0x0])*_0x220f4b,_0x50bc42[_0x4a7475(0x2eb)][0x1]+(_0x5acc8e[_0x4a7475(0x2eb)][0x1]-_0x50bc42[_0x4a7475(0x2eb)][0x1])*_0x220f4b,_0x50bc42[_0x4a7475(0x2eb)][0x2]+(_0x5acc8e[_0x4a7475(0x2eb)][0x2]-_0x50bc42[_0x4a7475(0x2eb)][0x2])*_0x220f4b,(_0x50bc42[_0x4a7475(0x2eb)][0x3]+(_0x5acc8e[_0x4a7475(0x2eb)][0x3]-_0x50bc42['color'][0x3])*_0x220f4b)*_0x81a6b8];},sampleVolumeTransferOpacity=(_0xd9530b,_0x2869f4,_0x18f9ed)=>{const _0x58cd16=_0x2e1660;if(!Number[_0x58cd16(0x2c4)](_0xd9530b))return 0x0;let [_0x5f5423,_0x57109c,_0x1abc26]=findTransferInterval(_0xd9530b,_0x2869f4[_0x58cd16(0x10e)](_0x153ae9=>_0x153ae9[_0x58cd16(0x3a0)])),_0x37f2cd=_0x18f9ed===_0x58cd16(0x392)?0x0:_0x1abc26;return _0x2869f4[_0x5f5423]['opacity']+(_0x2869f4[_0x57109c][_0x58cd16(0x211)]-_0x2869f4[_0x5f5423]['opacity'])*_0x37f2cd;},DEFAULT_CAMERA={'position':[1.4,1.2,2.1],'target':[0.5,0.5,0.5],'up':[0x0,0x1,0x0],'projection':{'type':_0x2e1660(0x219),'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=_0x2b55e6=>Math['min'](0x1,Math['max'](0x0,_0x2b55e6)),qualityStepLength=_0x25d5d2=>_0x25d5d2===_0x2e1660(0x3e0)?0.012:_0x25d5d2===_0x2e1660(0x2aa)?0.0025:_0x25d5d2==='balanced'?0.005:0.006,qualityUploadCount=_0xc92e29=>_0xc92e29==='performance'?0x8:_0xc92e29==='quality'?0x2:0x4,nextAutoQuality=(_0x14eb08,_0xcae2aa)=>_0xcae2aa>0x18?_0x14eb08==='quality'?_0x2e1660(0x343):_0x2e1660(0x3e0):_0xcae2aa<0xe?_0x14eb08===_0x2e1660(0x3e0)?_0x2e1660(0x343):_0x2e1660(0x2aa):_0x14eb08,validatePositiveOption=(_0x3b924f,_0x200e35)=>{const _0xef0750=_0x2e1660;if(!Number[_0xef0750(0x2c4)](_0x3b924f)||_0x3b924f<=0x0)throw Error(_0x200e35+'\x20must\x20be\x20a\x20positive\x20finite\x20number.\x20'+_0x200e35+_0xef0750(0x287));return _0x3b924f;},normalizeClipBox=(_0x34c018,_0x1decf4)=>{const _0x538449=_0x2e1660;if(!_0x1decf4)return{'minimum':[0x0,0x0,0x0],'maximum':[0x1,0x1,0x1]};let _0x2cb72e=clamp01(volumeAxisValueToNormalized(_0x34c018[_0x538449(0x246)][_0x538449(0x3a3)],_0x1decf4['minX'])),_0x394f3c=clamp01(volumeAxisValueToNormalized(_0x34c018[_0x538449(0x246)][_0x538449(0x3a3)],_0x1decf4[_0x538449(0x364)])),_0x260ed0=clamp01(volumeAxisValueToNormalized(_0x34c018[_0x538449(0x246)]['yAxis'],_0x1decf4[_0x538449(0x3bd)])),_0x7c7563=clamp01(volumeAxisValueToNormalized(_0x34c018[_0x538449(0x246)][_0x538449(0x185)],_0x1decf4[_0x538449(0x2b5)])),_0x41b315=clamp01(volumeAxisValueToNormalized(_0x34c018[_0x538449(0x246)][_0x538449(0x271)],_0x1decf4[_0x538449(0x3f5)])),_0x1b92eb=clamp01(volumeAxisValueToNormalized(_0x34c018['metadata']['zAxis'],_0x1decf4[_0x538449(0x1e0)]));return{'minimum':[Math['min'](_0x2cb72e,_0x394f3c),Math[_0x538449(0x3ce)](_0x260ed0,_0x7c7563),Math['min'](_0x41b315,_0x1b92eb)],'maximum':[Math[_0x538449(0x3b1)](_0x2cb72e,_0x394f3c),Math[_0x538449(0x3b1)](_0x260ed0,_0x7c7563),Math[_0x538449(0x3b1)](_0x41b315,_0x1b92eb)]};},createAxesMesh=()=>({'id':_0x2e1660(0x1ab),'topology':_0x2e1660(0x19a),'depthMode':_0x2e1660(0x12b),'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 _0x1f513b=_0x2e1660;let _0x15d166=[0.1,0.53,0.56,0.62],_0xc2ac69=[[0x0,0x0,0x0],[0x1,0x0,0x0],[0x0,0x1,0x0],[0x1,0x1,0x0],[0x0,0x0,0x1],[0x1,0x0,0x1],[0x0,0x1,0x1],[0x1,0x1,0x1]],_0xa847e1=[[0x0,0x1],[0x0,0x2],[0x1,0x3],[0x2,0x3],[0x4,0x5],[0x4,0x6],[0x5,0x7],[0x6,0x7],[0x0,0x4],[0x1,0x5],[0x2,0x6],[0x3,0x7]],_0x494fbf=new Float32Array(_0xa847e1[_0x1f513b(0x37f)]*0x2*0x7),_0x5ad4fe=0x0;for(let _0x3748b1 of _0xa847e1)for(let _0x152882 of _0x3748b1)_0x494fbf[_0x1f513b(0x105)]([..._0xc2ac69[_0x152882],..._0x15d166],_0x5ad4fe),_0x5ad4fe+=0x7;return{'id':'volume-bounds','topology':_0x1f513b(0x19a),'depthMode':'scene','vertices':_0x494fbf};},createProfileSceneMesh=(_0x151246,_0x217144,_0x45e487,_0x556331)=>{const _0x51123a=_0x2e1660;let _0x332c2a=new Float32Array(_0x151246[_0x51123a(0xe2)][_0x51123a(0x37f)]*0x7);for(let _0x47a7b6=0x0;_0x47a7b6<_0x151246[_0x51123a(0xe2)]['length'];_0x47a7b6+=0x1){let _0x39d5cc=_0x151246[_0x51123a(0xe2)][_0x47a7b6],_0x535dec=_0x39d5cc*0x3,_0x24e7f6=sampleVolumeTransferOpacity(_0x151246['values'][_0x39d5cc],_0x45e487,_0x556331),_0x5d0a30=sampleVolumeTransferColor(_0x151246['values'][_0x39d5cc],_0x217144,_0x151246[_0x51123a(0x211)]*_0x24e7f6,_0x556331);_0x332c2a['set']([_0x151246[_0x51123a(0x1bc)][_0x535dec],_0x151246[_0x51123a(0x1bc)][_0x535dec+0x1],_0x151246['positions'][_0x535dec+0x2],_0x5d0a30[0x0]*_0x5d0a30[0x3],_0x5d0a30[0x1]*_0x5d0a30[0x3],_0x5d0a30[0x2]*_0x5d0a30[0x3],_0x5d0a30[0x3]],_0x47a7b6*0x7);}return{'id':_0x151246['id'],'topology':_0x51123a(0x3b0),'depthMode':_0x151246['depthMode'],'vertices':_0x332c2a};},descriptorDistance=(_0x5cd886,_0x5e9d68,_0x2c4423)=>{const _0x53fb93=_0x2e1660;let _0x4ce539=(_0x5cd886['coordinate']['x']+0.5)/_0x5e9d68[_0x53fb93(0x10b)],_0x1d9387=(_0x5cd886[_0x53fb93(0x140)]['y']+0.5)/_0x5e9d68[_0x53fb93(0x30d)],_0xd7b4bd=(_0x5cd886[_0x53fb93(0x140)]['z']+0.5)/_0x5e9d68[_0x53fb93(0x17a)];return Math[_0x53fb93(0x305)](_0x4ce539-_0x2c4423[_0x53fb93(0x154)][0x0],_0x1d9387-_0x2c4423[_0x53fb93(0x154)][0x1],_0xd7b4bd-_0x2c4423['position'][0x2]);},descriptorLogicalIndex=(_0x3292c2,_0x5e447d)=>(_0x3292c2[_0x2e1660(0x140)]['z']*_0x5e447d[_0x2e1660(0x30d)]+_0x3292c2['coordinate']['y'])*_0x5e447d[_0x2e1660(0x10b)]+_0x3292c2['coordinate']['x'],descriptorContainsSlice=(_0x2407ef,_0x266f0a,_0x12586a,_0x4e68f8)=>{const _0x445a03=_0x2e1660;let _0x1cfe9d=_0x12586a==='x'?{'start':_0x2407ef['coreRange'][_0x445a03(0x23f)],'count':_0x2407ef[_0x445a03(0x3dc)][_0x445a03(0x1ca)],'size':_0x266f0a[_0x445a03(0x246)][_0x445a03(0x3a3)][_0x445a03(0x2e2)]}:_0x12586a==='y'?{'start':_0x2407ef[_0x445a03(0x3dc)][_0x445a03(0x182)],'count':_0x2407ef[_0x445a03(0x3dc)][_0x445a03(0x1f5)],'size':_0x266f0a[_0x445a03(0x246)][_0x445a03(0x185)][_0x445a03(0x2e2)]}:{'start':_0x2407ef[_0x445a03(0x3dc)][_0x445a03(0x30e)],'count':_0x2407ef[_0x445a03(0x3dc)][_0x445a03(0x37b)],'size':_0x266f0a[_0x445a03(0x246)][_0x445a03(0x271)]['count']};return _0x4e68f8>=_0x1cfe9d[_0x445a03(0x2ce)]/_0x1cfe9d[_0x445a03(0x234)]&&_0x4e68f8<=(_0x1cfe9d['start']+_0x1cfe9d[_0x445a03(0x2e2)])/_0x1cfe9d[_0x445a03(0x234)];},descriptorContainsProfile=(_0x40ea39,_0x4e9845,_0x3daab6)=>{const _0x34a2c6=_0x2e1660;let _0x1ec395=_0x40ea39[_0x34a2c6(0x3dc)]['xStart']/_0x4e9845['metadata'][_0x34a2c6(0x3a3)]['count'],_0x484d5d=(_0x40ea39[_0x34a2c6(0x3dc)][_0x34a2c6(0x23f)]+_0x40ea39[_0x34a2c6(0x3dc)][_0x34a2c6(0x1ca)])/_0x4e9845['metadata'][_0x34a2c6(0x3a3)][_0x34a2c6(0x2e2)],_0x5b3c62=_0x40ea39['coreRange'][_0x34a2c6(0x182)]/_0x4e9845[_0x34a2c6(0x246)][_0x34a2c6(0x185)][_0x34a2c6(0x2e2)],_0x42161b=(_0x40ea39[_0x34a2c6(0x3dc)]['levelStart']+_0x40ea39[_0x34a2c6(0x3dc)][_0x34a2c6(0x1f5)])/_0x4e9845[_0x34a2c6(0x246)][_0x34a2c6(0x185)][_0x34a2c6(0x2e2)],_0x42390e=_0x40ea39[_0x34a2c6(0x3dc)]['sourceYStart']/_0x4e9845['metadata'][_0x34a2c6(0x271)]['count'],_0x629cf1=(_0x40ea39[_0x34a2c6(0x3dc)][_0x34a2c6(0x30e)]+_0x40ea39[_0x34a2c6(0x3dc)][_0x34a2c6(0x37b)])/_0x4e9845[_0x34a2c6(0x246)][_0x34a2c6(0x271)][_0x34a2c6(0x2e2)];return _0x3daab6[_0x34a2c6(0x38b)](_0x98de83=>{const _0x2057cd=_0x34a2c6;let _0x57d4e1=volumeAxisValueToNormalized(_0x4e9845['metadata']['yAxis'],_0x98de83[_0x2057cd(0x3e7)][0x0]),_0x277004=volumeAxisValueToNormalized(_0x4e9845['metadata'][_0x2057cd(0x185)],_0x98de83['heights'][_0x98de83[_0x2057cd(0x3e7)][_0x2057cd(0x37f)]-0x1]);if(Math[_0x2057cd(0x3b1)](_0x57d4e1,_0x277004)<_0x5b3c62||Math[_0x2057cd(0x3ce)](_0x57d4e1,_0x277004)>_0x42161b)return!0x1;for(let _0x3141be=0x0;_0x3141be<_0x98de83[_0x2057cd(0x381)][_0x2057cd(0x37f)];_0x3141be+=0x2){let _0xc14e8e=volumeAxisValueToNormalized(_0x4e9845['metadata'][_0x2057cd(0x3a3)],_0x98de83[_0x2057cd(0x381)][_0x3141be]),_0x5d1002=volumeAxisValueToNormalized(_0x4e9845['metadata'][_0x2057cd(0x271)],_0x98de83['path'][_0x3141be+0x1]);if(_0xc14e8e>=_0x1ec395&&_0xc14e8e<=_0x484d5d&&_0x5d1002>=_0x42390e&&_0x5d1002<=_0x629cf1)return!0x0;}return!0x1;});},descriptorDemandPriority=(_0x260362,_0x2b2eb8,_0x1c71ca,_0x29e6ca)=>{const _0x45805b=_0x2e1660;let _0x2186cc=_0x1c71ca[_0x45805b(0x3b4)];if(_0x2186cc){let _0x324fa4=_0x2186cc[_0x45805b(0x3f9)]==='x'?_0x2b2eb8['metadata']['xAxis']:_0x2186cc['axis']==='y'?_0x2b2eb8[_0x45805b(0x246)][_0x45805b(0x185)]:_0x2b2eb8[_0x45805b(0x246)][_0x45805b(0x271)];if(descriptorContainsSlice(_0x260362,_0x2b2eb8,_0x2186cc[_0x45805b(0x3f9)],volumeAxisValueToNormalized(_0x324fa4,_0x2186cc[_0x45805b(0x154)])))return 0x0;}for(let _0x22a5d1 of _0x1c71ca[_0x45805b(0x41b)]){let _0x51b3dc=_0x22a5d1[_0x45805b(0x3f9)]==='x'?_0x2b2eb8[_0x45805b(0x246)][_0x45805b(0x3a3)]:_0x22a5d1[_0x45805b(0x3f9)]==='y'?_0x2b2eb8['metadata'][_0x45805b(0x185)]:_0x2b2eb8[_0x45805b(0x246)]['zAxis'];if(_0x22a5d1[_0x45805b(0x1fe)]&&descriptorContainsSlice(_0x260362,_0x2b2eb8,_0x22a5d1[_0x45805b(0x3f9)],volumeAxisValueToNormalized(_0x51b3dc,_0x22a5d1['position'])))return 0x1;}return descriptorContainsProfile(_0x260362,_0x2b2eb8,_0x29e6ca)?0x2:0x3;};var VolumeScene=class VolumeScene{[_0x2e1660(0x341)]=_0x2e1660(0xc9);[_0x2e1660(0xc5)];['volumeCamera'];['canvas'];[_0x2e1660(0x365)];[_0x2e1660(0x277)];[_0x2e1660(0x401)]=[];[_0x2e1660(0xc7)];[_0x2e1660(0x158)];[_0x2e1660(0xeb)];['sliceState'];[_0x2e1660(0x258)];['colorInputs'];[_0x2e1660(0x108)];[_0x2e1660(0x135)]=[];[_0x2e1660(0x200)];[_0x2e1660(0x350)]=0x0;[_0x2e1660(0x107)]=new Set();[_0x2e1660(0x110)]=new Map();[_0x2e1660(0x3b2)]=new Set();[_0x2e1660(0x203)]=0x0;[_0x2e1660(0x2c2)]=!0x1;[_0x2e1660(0x10a)];['verticalScale'];[_0x2e1660(0x19c)];[_0x2e1660(0x27e)];['quality'];[_0x2e1660(0x3f0)]=_0x2e1660(0x343);[_0x2e1660(0x3ef)]=0x0;[_0x2e1660(0x221)]=0x0;[_0x2e1660(0x196)];['pointer']=null;['navigationMode'];[_0x2e1660(0x12c)];[_0x2e1660(0x367)];[_0x2e1660(0x1c7)];['interactionStepScale'];['activeInteractions']=new Set();[_0x2e1660(0x3c9)]=!0x0;[_0x2e1660(0x1ad)]=!0x1;[_0x2e1660(0x2ad)]=0x0;[_0x2e1660(0x361)]=0x0;[_0x2e1660(0x2f9)]=null;[_0x2e1660(0x1b2)];[_0x2e1660(0x33e)];['onSlicesChange'];[_0x2e1660(0xd1)]=0x0;[_0x2e1660(0x1a7)]=0x0;['actualFrameIntervalMilliseconds']=0x0;[_0x2e1660(0x181)]=new Set();['sliceInteraction']=null;[_0x2e1660(0x11e)]=null;constructor(_0x1481fa,_0x7ce057){const _0x1c516d=_0x2e1660;this[_0x1c516d(0xc5)]=_0x7ce057,this['canvas']=_0x1481fa[_0x1c516d(0x249)],this['interactionElement']=_0x1481fa[_0x1c516d(0x277)]??_0x1481fa[_0x1c516d(0x249)],this[_0x1c516d(0x365)]=_0x1481fa[_0x1c516d(0x365)]??_0x1c516d(0xee),this[_0x1c516d(0xc7)]=_0x1481fa['source'],this[_0x1c516d(0x200)]=_0x1481fa[_0x1c516d(0x200)]??0x0,this[_0x1c516d(0x158)]=this['createLayout'](_0x1481fa),this['descriptors']=createVolumeBrickDescriptors(this[_0x1c516d(0xc7)][_0x1c516d(0x246)],this[_0x1c516d(0x158)]),this['volumeCamera']=new VolumeCamera({'state':_0x1481fa[_0x1c516d(0x1af)]??DEFAULT_CAMERA}),this[_0x1c516d(0x3e8)]=this[_0x1c516d(0x28c)](_0x1481fa);let _0x7c55d6=prepareWebgpuVolumeTransfer(_0x1481fa[_0x1c516d(0x258)],_0x1481fa[_0x1c516d(0x108)]);if(this['colorStops']=_0x7c55d6['colorStops'],this[_0x1c516d(0x299)]=_0x1481fa['colorStops'],this[_0x1c516d(0x108)]=_0x1481fa['opacityStops'],this[_0x1c516d(0x10a)]=_0x1481fa[_0x1c516d(0x32d)]??IDENTITY_MATRIX,this[_0x1c516d(0x195)]=validatePositiveOption(_0x1481fa['verticalScale']??0x1,_0x1c516d(0x195)),this[_0x1c516d(0x19c)]=_0x1481fa['coordinateSystem']??_0x1c516d(0x3fa),this[_0x1c516d(0x19c)]===_0x1c516d(0x245)&&_0x1481fa[_0x1c516d(0x32d)])throw Error(_0x1c516d(0x21c));this['clipBox']=_0x1481fa[_0x1c516d(0x27e)]??null,this[_0x1c516d(0x2aa)]=_0x1481fa[_0x1c516d(0x2aa)]??_0x1c516d(0x3d0),this[_0x1c516d(0x3b5)]=_0x1481fa[_0x1c516d(0x3b5)]??_0x1c516d(0x16e),this['pixelRatioCap']=validatePositiveOption(_0x1481fa[_0x1c516d(0x12c)]??0x2,_0x1c516d(0x12c)),this[_0x1c516d(0x367)]=validatePositiveOption(_0x1481fa['renderScale']??0x1,_0x1c516d(0x367)),this[_0x1c516d(0x1c7)]=validatePositiveOption(_0x1481fa['interactionRenderScale']??0.6,_0x1c516d(0x1c7)),this[_0x1c516d(0x3a8)]=validatePositiveOption(_0x1481fa[_0x1c516d(0x3a8)]??0x1,_0x1c516d(0x3a8)),this['colorMode']=_0x1481fa[_0x1c516d(0x196)]??'smooth',this[_0x1c516d(0x1b2)]=_0x1481fa[_0x1c516d(0xff)]?.[_0x1c516d(0x155)]??_0x1c516d(0x17e),this[_0x1c516d(0x33e)]=_0x1481fa[_0x1c516d(0xff)]?.[_0x1c516d(0x19b)],this[_0x1c516d(0x3cc)]=_0x1481fa[_0x1c516d(0xff)]?.[_0x1c516d(0x3cc)],this[_0x1c516d(0xc5)][_0x1c516d(0x3f7)](()=>this[_0x1c516d(0x19d)]()),this[_0x1c516d(0xc5)][_0x1c516d(0x1a4)](_0x7c55d6[_0x1c516d(0x258)],_0x7c55d6[_0x1c516d(0x108)]);let _0x246b1d=_0x1481fa[_0x1c516d(0x393)]??this[_0x1c516d(0x19c)]===_0x1c516d(0x3fa);this[_0x1c516d(0xc5)]['setAxes'](_0x246b1d?[createBoundsMesh(),createAxesMesh()]:[]),this[_0x1c516d(0xc5)][_0x1c516d(0x171)]({'renderMode':_0x1481fa['mode']??_0x1c516d(0x253),'colorMode':this[_0x1c516d(0x196)],'opacity':_0x1481fa[_0x1c516d(0x211)]??0.3,'densityScale':_0x1481fa[_0x1c516d(0x32c)]??0x1,'stepLength':this[_0x1c516d(0x34a)](),'volumeDimFactor':this[_0x1c516d(0x3e8)][_0x1c516d(0x28d)]}),this['configureSource'](),this[_0x1c516d(0x31d)](),this[_0x1c516d(0x2fa)](),this[_0x1c516d(0x335)](_0x1481fa),this[_0x1c516d(0x252)]();}static async[_0x2e1660(0x373)](_0x7ee824){const _0x150ee5=_0x2e1660;if(validateVolumeSource(_0x7ee824[_0x150ee5(0xc7)]),validateVolumeTimeIndex(_0x7ee824['source']['metadata'],_0x7ee824['timeIndex']??0x0),(_0x7ee824[_0x150ee5(0x11d)]?.[_0x150ee5(0x405)]??0x1)!==0x1)throw Error(_0x150ee5(0x1ff));let _0x265727=_0x7ee824[_0x150ee5(0x11d)]?.[_0x150ee5(0x2a1)]??0x20000000,_0x178ea9=new WebgpuVolumeSceneRenderer({'memoryTargetBytes':_0x265727,'memoryHardLimitBytes':_0x7ee824[_0x150ee5(0x11d)]?.[_0x150ee5(0x18f)]??_0x265727});await _0x178ea9['initialize'](_0x7ee824[_0x150ee5(0x249)]);let _0x5eb326=new VolumeScene(_0x7ee824,_0x178ea9);return _0x5eb326[_0x150ee5(0x1c2)](),_0x5eb326[_0x150ee5(0x1ef)](),_0x5eb326[_0x150ee5(0x365)]===_0x150ee5(0xee)&&_0x5eb326['requestRender'](),_0x5eb326;}get['camera'](){const _0x3a04bd=_0x2e1660;return this['volumeCamera'][_0x3a04bd(0x322)];}get[_0x2e1660(0x41b)](){const _0x331067=_0x2e1660;return this[_0x331067(0x3e8)][_0x331067(0x41b)];}get[_0x2e1660(0x311)](){const _0x5ba9b6=_0x2e1660;let _0x49916b=this['renderMode']===_0x5ba9b6(0x3c6)||this['isInteracting']()||performance['now']()-this[_0x5ba9b6(0xd1)]<=0xfa?this[_0x5ba9b6(0x170)]:0x0;return{...this['renderer'][_0x5ba9b6(0x311)],'pendingBrickCount':this[_0x5ba9b6(0x110)][_0x5ba9b6(0x234)],'brickScheduleCount':this['brickScheduleCount'],'brickSortCount':this[_0x5ba9b6(0x361)],'actualFrameIntervalMilliseconds':_0x49916b,'estimatedFps':_0x49916b>0x0?0x3e8/_0x49916b:0x0,'effectiveQuality':this['getEffectiveQuality'](),'effectiveRenderScale':this[_0x5ba9b6(0x1db)](),'interactionKind':this[_0x5ba9b6(0x38f)]()};}[_0x2e1660(0x171)](_0x3df78d){const _0x45d425=_0x2e1660;_0x3df78d[_0x45d425(0x1af)]&&this[_0x45d425(0x1a9)](_0x3df78d[_0x45d425(0x1af)]),_0x3df78d[_0x45d425(0x32d)]&&(this[_0x45d425(0x10a)]=[..._0x3df78d[_0x45d425(0x32d)]]),_0x3df78d['verticalScale']!==void 0x0&&(this[_0x45d425(0x195)]=validatePositiveOption(_0x3df78d['verticalScale'],_0x45d425(0x195))),_0x3df78d[_0x45d425(0x27e)]!==void 0x0&&(this['clipBox']=_0x3df78d['clipBox']),_0x3df78d[_0x45d425(0x2aa)]&&(this[_0x45d425(0x2aa)]=_0x3df78d[_0x45d425(0x2aa)]),_0x3df78d['navigationMode']&&(this[_0x45d425(0x3b5)]=_0x3df78d['navigationMode']);let _0x220b0f=!0x1;if(_0x3df78d['pixelRatioCap']!==void 0x0&&(this[_0x45d425(0x12c)]=validatePositiveOption(_0x3df78d[_0x45d425(0x12c)],_0x45d425(0x12c)),_0x220b0f=!0x0),_0x3df78d['renderScale']!==void 0x0&&(this[_0x45d425(0x367)]=validatePositiveOption(_0x3df78d[_0x45d425(0x367)],_0x45d425(0x367)),_0x220b0f=!0x0),_0x3df78d['interactionRenderScale']!==void 0x0&&(this[_0x45d425(0x1c7)]=validatePositiveOption(_0x3df78d[_0x45d425(0x1c7)],_0x45d425(0x1c7)),_0x220b0f=this[_0x45d425(0x399)]()),_0x3df78d[_0x45d425(0x3a8)]!==void 0x0&&(this[_0x45d425(0x3a8)]=validatePositiveOption(_0x3df78d[_0x45d425(0x3a8)],_0x45d425(0x3a8))),_0x3df78d[_0x45d425(0x196)]&&(this[_0x45d425(0x196)]=_0x3df78d[_0x45d425(0x196)]),_0x3df78d[_0x45d425(0x258)]||_0x3df78d[_0x45d425(0x108)]){let _0x43a807=prepareWebgpuVolumeTransfer(_0x3df78d['colorStops']??this[_0x45d425(0x299)],_0x3df78d[_0x45d425(0x108)]??this[_0x45d425(0x108)]);this[_0x45d425(0x258)]=_0x43a807[_0x45d425(0x258)],this['colorInputs']=_0x3df78d['colorStops']??this[_0x45d425(0x299)],this[_0x45d425(0x108)]=_0x3df78d[_0x45d425(0x108)]??this[_0x45d425(0x108)],this['renderer']['setTransfer'](_0x43a807['colorStops'],_0x43a807[_0x45d425(0x108)]),this[_0x45d425(0x356)]();}_0x3df78d[_0x45d425(0x196)]&&!_0x3df78d[_0x45d425(0x258)]&&!_0x3df78d[_0x45d425(0x108)]&&this[_0x45d425(0x356)](),this[_0x45d425(0xc5)][_0x45d425(0x171)]({'renderMode':_0x3df78d[_0x45d425(0x411)],'colorMode':_0x3df78d[_0x45d425(0x196)],'opacity':_0x3df78d[_0x45d425(0x211)],'densityScale':_0x3df78d['densityScale'],'stepLength':this[_0x45d425(0x34a)]()}),this['configureModel'](),_0x220b0f&&this['resize'](),this[_0x45d425(0x3cb)]();}[_0x2e1660(0x1a9)](_0xb8c533){const _0x42aecd=_0x2e1660;this[_0x42aecd(0x40b)][_0x42aecd(0x100)](_0xb8c533),this[_0x42aecd(0x226)](),this['requestRender']();}[_0x2e1660(0x304)](_0x2159e0){const _0x3fdf6e=_0x2e1660;validateVolumeTimeIndex(this[_0x3fdf6e(0xc7)][_0x3fdf6e(0x246)],_0x2159e0),_0x2159e0!==this[_0x3fdf6e(0x200)]&&(this[_0x3fdf6e(0x200)]=_0x2159e0,this[_0x3fdf6e(0x189)]());}[_0x2e1660(0x3cd)](_0x22d7f4){const _0x5cd7c2=_0x2e1660;validateVolumeSource(_0x22d7f4),this[_0x5cd7c2(0xc7)]=_0x22d7f4,this['timeIndex']=Math[_0x5cd7c2(0x3ce)](this[_0x5cd7c2(0x200)],_0x22d7f4[_0x5cd7c2(0x246)][_0x5cd7c2(0x147)]-0x1),this[_0x5cd7c2(0x158)]=createVolumeBrickLayout(_0x22d7f4['metadata'],this['layout'][_0x5cd7c2(0x39b)]),this[_0x5cd7c2(0xeb)]=createVolumeBrickDescriptors(_0x22d7f4[_0x5cd7c2(0x246)],this[_0x5cd7c2(0x158)]),this['sliceState'][_0x5cd7c2(0x238)](_0x22d7f4[_0x5cd7c2(0x246)]),this['configureSource'](),this[_0x5cd7c2(0x31d)](),this[_0x5cd7c2(0x189)](),this[_0x5cd7c2(0x356)](),this[_0x5cd7c2(0x3cb)]();}['setRouteProfiles'](_0x3ba0b2){const _0xa503d=_0x2e1660;this[_0xa503d(0x135)]=_0x3ba0b2,this['rebuildProfiles'](),this['requestBrickSchedule'](),this[_0xa503d(0x3cb)]();}[_0x2e1660(0x308)](_0x1d7556){const _0x260dec=_0x2e1660;this[_0x260dec(0x3e8)][_0x260dec(0x32b)](_0x1d7556);}[_0x2e1660(0x3d2)](_0x3f7d4f){const _0x16116a=_0x2e1660;if(this[_0x16116a(0x2c2)]||this[_0x16116a(0x14f)][_0x16116a(0x192)](_0x3f7d4f))return;let _0x46b521=!this[_0x16116a(0x399)]();this[_0x16116a(0x14f)]['add'](_0x3f7d4f),_0x46b521&&(this[_0x16116a(0x1a7)]=0x0,this[_0x16116a(0x1c2)]());}[_0x2e1660(0x2df)](_0x5a0aca){const _0x26490d=_0x2e1660;this[_0x26490d(0x2c2)]||!this[_0x26490d(0x14f)][_0x26490d(0x214)](_0x5a0aca)||this[_0x26490d(0x399)]()||(this[_0x26490d(0x1a7)]=0x0,this[_0x26490d(0x1c2)]());}[_0x2e1660(0x3fd)](_0x18b0c0,_0x51382e){const _0x48cc0a=_0x2e1660;this['sliceState']['updatePreview'](_0x18b0c0,_0x51382e);let _0x289548=this[_0x48cc0a(0x3e8)][_0x48cc0a(0x1b5)]();if(!_0x289548)throw Error(_0x48cc0a(0x2db));return _0x289548;}[_0x2e1660(0x31e)](_0x553309,_0x39ede2){const _0x1959f3=_0x2e1660;this[_0x1959f3(0x3e8)][_0x1959f3(0xc6)](_0x553309,_0x39ede2);}[_0x2e1660(0x415)](_0x213087){const _0x2e3017=_0x2e1660;this['sliceState'][_0x2e3017(0x415)](_0x213087);}['clearLockedSlices'](){const _0xe27cea=_0x2e1660;this['sliceState'][_0xe27cea(0x1fc)]();}['resize'](){const _0x2e4aff=_0x2e1660;let _0x691dc9=Math['min'](window[_0x2e4aff(0x298)]||0x1,this[_0x2e4aff(0x12c)])*this[_0x2e4aff(0x1db)](),_0x5ac7cf=Math['max'](0x1,Math['round'](this[_0x2e4aff(0x249)]['clientWidth']*_0x691dc9||this[_0x2e4aff(0x249)][_0x2e4aff(0x274)]||0x1)),_0x515ccb=Math[_0x2e4aff(0x3b1)](0x1,Math[_0x2e4aff(0x1b4)](this[_0x2e4aff(0x249)][_0x2e4aff(0x191)]*_0x691dc9||this[_0x2e4aff(0x249)][_0x2e4aff(0x1c0)]||0x1));this[_0x2e4aff(0x40b)]['setAspect'](_0x5ac7cf/_0x515ccb),(this[_0x2e4aff(0x249)][_0x2e4aff(0x274)]!==_0x5ac7cf||this[_0x2e4aff(0x249)]['height']!==_0x515ccb)&&this['renderer'][_0x2e4aff(0x1c2)](_0x5ac7cf,_0x515ccb),this['requestRender']();}['render'](){const _0x21d032=_0x2e1660;if(this['destroyed'])return;this[_0x21d032(0x2cb)](),this['flushBrickSchedule']();let _0x298693=this[_0x21d032(0x40b)][_0x21d032(0x3a4)];if(this[_0x21d032(0xc5)][_0x21d032(0x1a9)]({'viewProjection':Array['from'](_0x298693[_0x21d032(0x1a5)]),'inverseViewProjection':Array['from'](_0x298693[_0x21d032(0x383)]),'cameraPosition':this[_0x21d032(0x40b)][_0x21d032(0x322)][_0x21d032(0x154)]}),this[_0x21d032(0xc5)][_0x21d032(0x171)]({'stepLength':this[_0x21d032(0x34a)]()}),!this[_0x21d032(0xc5)][_0x21d032(0xd8)]()){this[_0x21d032(0x3c9)]=!0x0;return;}this[_0x21d032(0x3c9)]=!0x1,this[_0x21d032(0x197)](performance[_0x21d032(0x36e)]()),this[_0x21d032(0x11e)]?.[_0x21d032(0x171)]();}[_0x2e1660(0x3f4)](){const _0x1d5d89=_0x2e1660;if(this[_0x1d5d89(0x2c2)])return Promise[_0x1d5d89(0x3ed)](Error(_0x1d5d89(0xec)));this['flushSliceState'](),this[_0x1d5d89(0x15b)]();let _0x47235b=this[_0x1d5d89(0x40b)][_0x1d5d89(0x3a4)];return this[_0x1d5d89(0xc5)][_0x1d5d89(0x1a9)]({'viewProjection':Array[_0x1d5d89(0x309)](_0x47235b[_0x1d5d89(0x1a5)]),'inverseViewProjection':Array['from'](_0x47235b[_0x1d5d89(0x383)]),'cameraPosition':this[_0x1d5d89(0x40b)]['state'][_0x1d5d89(0x154)]}),this[_0x1d5d89(0xc5)][_0x1d5d89(0x3f4)]();}[_0x2e1660(0x3e2)](){const _0x577520=_0x2e1660;if(!this[_0x577520(0x2c2)]){this[_0x577520(0x2c2)]=!0x0,this[_0x577520(0x350)]+=0x1;for(let _0x413ba3 of this[_0x577520(0x181)])_0x413ba3[_0x577520(0x18c)]();this['requestControllers']['clear'](),cancelAnimationFrame(this[_0x577520(0x203)]),this['renderer'][_0x577520(0x3f7)](null),this['eventDisposers']['splice'](0x0)[_0x577520(0x324)](_0x35397e=>_0x35397e()),this['renderer'][_0x577520(0x3e2)](),this[_0x577520(0xff)]?.['destroy'](),this[_0x577520(0x11e)]?.['destroy'](),this[_0x577520(0x107)][_0x577520(0xf2)](),this[_0x577520(0x110)][_0x577520(0xf2)](),this[_0x577520(0x3b2)][_0x577520(0xf2)](),this['activeInteractions'][_0x577520(0xf2)](),this[_0x577520(0x2f9)]=null;}}[_0x2e1660(0x19f)](_0x3ec78c){const _0x2985c7=_0x2e1660;return createVolumeBrickLayout(_0x3ec78c[_0x2985c7(0xc7)][_0x2985c7(0x246)],{'width':_0x3ec78c[_0x2985c7(0x11d)]?.[_0x2985c7(0x274)],'height':_0x3ec78c[_0x2985c7(0x11d)]?.[_0x2985c7(0x1c0)],'depth':_0x3ec78c[_0x2985c7(0x11d)]?.[_0x2985c7(0xc8)],'halo':_0x3ec78c['chunk']?.['halo']});}[_0x2e1660(0x187)](){const _0x3ee0e1=_0x2e1660;return this['quality']===_0x3ee0e1(0x3d0)?this[_0x3ee0e1(0x3f0)]:this['quality'];}[_0x2e1660(0x34a)](){const _0x37cfcc=_0x2e1660;let _0x4cf55b=qualityStepLength(this[_0x37cfcc(0x187)]());return(this[_0x37cfcc(0x19c)]===_0x37cfcc(0x245)?_0x4cf55b*0.05:_0x4cf55b)*(this['isInteracting']()?this[_0x37cfcc(0x3a8)]:0x1);}['isInteracting'](){const _0x56787f=_0x2e1660;return this[_0x56787f(0x14f)][_0x56787f(0x234)]>0x0;}[_0x2e1660(0x38f)](){const _0x3912a1=_0x2e1660;return this[_0x3912a1(0x14f)][_0x3912a1(0x234)]===0x0?_0x3912a1(0x2d0):this[_0x3912a1(0x14f)][_0x3912a1(0x234)]>0x1?'mixed':this[_0x3912a1(0x14f)][_0x3912a1(0x21e)]()[_0x3912a1(0x127)]()[_0x3912a1(0x3a0)]??_0x3912a1(0x2d0);}[_0x2e1660(0x1db)](){const _0x829c4d=_0x2e1660;return this['renderScale']*(this['isInteracting']()?this[_0x829c4d(0x1c7)]:0x1);}[_0x2e1660(0x197)](_0xd7e834){const _0x20c66f=_0x2e1660;if(this[_0x20c66f(0xd1)]=_0xd7e834,!(this[_0x20c66f(0x365)]==='external'||this['isInteracting']())){this[_0x20c66f(0x1a7)]=0x0;return;}if(this[_0x20c66f(0x1a7)]>0x0){let _0x4f74cf=_0xd7e834-this[_0x20c66f(0x1a7)];_0x4f74cf>0x0&&_0x4f74cf<=0xfa&&(this[_0x20c66f(0x170)]=this['actualFrameIntervalMilliseconds']===0x0?_0x4f74cf:this[_0x20c66f(0x170)]*0.8+_0x4f74cf*0.2,this['updateAutoQuality'](_0x4f74cf));}this[_0x20c66f(0x1a7)]=_0xd7e834;}['updateAutoQuality'](_0x1a0991){const _0x947bc9=_0x2e1660;if(this['quality']!=='auto'||(this['autoFrameCount']+=0x1,this['autoFrameIntervalTotal']+=_0x1a0991,this[_0x947bc9(0x3ef)]<0x1e))return;let _0x29e39f=this[_0x947bc9(0x221)]/this['autoFrameCount'];if(this[_0x947bc9(0x3ef)]=0x0,this[_0x947bc9(0x221)]=0x0,this[_0x947bc9(0x399)]()&&_0x29e39f<0xe)return;let _0x44d938=nextAutoQuality(this['autoQuality'],_0x29e39f);_0x44d938!==this[_0x947bc9(0x3f0)]&&(this['autoQuality']=_0x44d938,this['requestBrickSchedule'](),this[_0x947bc9(0x3cb)]());}[_0x2e1660(0x28c)](_0x3744ac){const _0x18dc2d=_0x2e1660;return new SliceState(_0x3744ac[_0x18dc2d(0xc7)][_0x18dc2d(0x246)],{'volumeDimFactor':_0x3744ac[_0x18dc2d(0xff)]?.[_0x18dc2d(0x28d)],'depthMode':_0x3744ac[_0x18dc2d(0xff)]?.[_0x18dc2d(0x155)],'maxLockedSlices':_0x3744ac[_0x18dc2d(0xff)]?.['maxLockedSlices'],'onLimitReached':_0x179ab1=>_0x3744ac[_0x18dc2d(0xff)]?.[_0x18dc2d(0x2ea)]?.(Error(_0x18dc2d(0x16f)+_0x179ab1+_0x18dc2d(0x1c3)+_0x179ab1+'。'))});}[_0x2e1660(0x2fa)](){const _0x1b1817=_0x2e1660;let _0x4a858a=this[_0x1b1817(0x3e8)][_0x1b1817(0x38d)](_0x2aec54=>{const _0x327e57=_0x1b1817;this[_0x327e57(0x2f9)]=_0x2aec54,this[_0x327e57(0x3cb)]();});this[_0x1b1817(0x401)][_0x1b1817(0x3aa)](_0x4a858a);}[_0x2e1660(0x2cb)](){const _0x5288f1=_0x2e1660;let _0x158297=this[_0x5288f1(0x2f9)];if(!_0x158297)return;this[_0x5288f1(0x2f9)]=null;let _0x22effa=[];if(_0x158297[_0x5288f1(0x3b4)]){let _0x28fe9f=_0x158297[_0x5288f1(0x3b4)][_0x5288f1(0x3f9)]==='x'?this['source'][_0x5288f1(0x246)]['xAxis']:_0x158297['preview'][_0x5288f1(0x3f9)]==='y'?this[_0x5288f1(0xc7)]['metadata'][_0x5288f1(0x185)]:this[_0x5288f1(0xc7)][_0x5288f1(0x246)][_0x5288f1(0x271)];_0x22effa[_0x5288f1(0x3aa)]({'id':'volume-slice-preview','axis':_0x158297[_0x5288f1(0x3b4)][_0x5288f1(0x3f9)],'position':clamp01(volumeAxisValueToNormalized(_0x28fe9f,_0x158297[_0x5288f1(0x3b4)][_0x5288f1(0x154)])),'depthMode':this[_0x5288f1(0x1b2)],'visible':!0x0,'opacity':0.72,'plateColor':this[_0x5288f1(0x33e)]});}for(let _0x243986 of _0x158297['lockedSlices']){let _0x345d50=_0x243986[_0x5288f1(0x3f9)]==='x'?this[_0x5288f1(0xc7)][_0x5288f1(0x246)][_0x5288f1(0x3a3)]:_0x243986['axis']==='y'?this[_0x5288f1(0xc7)][_0x5288f1(0x246)]['yAxis']:this[_0x5288f1(0xc7)][_0x5288f1(0x246)]['zAxis'];_0x22effa[_0x5288f1(0x3aa)]({..._0x243986,'position':clamp01(volumeAxisValueToNormalized(_0x345d50,_0x243986['position'])),'opacity':0x1,'plateColor':this['slicePlateColor']});}this[_0x5288f1(0xc5)][_0x5288f1(0x15c)](_0x22effa),this[_0x5288f1(0xc5)][_0x5288f1(0x171)]({'volumeDimFactor':_0x158297[_0x5288f1(0x3b4)]||_0x158297[_0x5288f1(0x41b)][_0x5288f1(0x38b)](_0x1a8c47=>_0x1a8c47[_0x5288f1(0x1fe)])?_0x158297[_0x5288f1(0x28d)]:0x1}),this[_0x5288f1(0x3cc)]?.(_0x158297[_0x5288f1(0x41b)]),this[_0x5288f1(0x1ad)]=!0x0;}[_0x2e1660(0x335)](_0x192849){const _0x1deb3f=_0x2e1660;let _0x410c3a=()=>({'viewProjectionMatrix':this[_0x1deb3f(0x40b)]['matrices'][_0x1deb3f(0x1a5)],'modelMatrix':composeVolumeModelMatrix(this[_0x1deb3f(0x10a)],this['verticalScale']),'viewportWidth':Math[_0x1deb3f(0x3b1)](0x1,this[_0x1deb3f(0x249)][_0x1deb3f(0x35c)]),'viewportHeight':Math['max'](0x1,this[_0x1deb3f(0x249)][_0x1deb3f(0x191)])});this[_0x1deb3f(0xff)]=new SliceInteractionController(this[_0x1deb3f(0x277)],this[_0x1deb3f(0x3e8)],_0x410c3a,{'hitTolerancePixels':_0x192849[_0x1deb3f(0xff)]?.['hitRadius'],'onInteractionStart':()=>this[_0x1deb3f(0x3d2)](_0x1deb3f(0x414)),'onInteractionEnd':()=>this['endInteraction'](_0x1deb3f(0x414))}),this['sliceInteraction'][_0x1deb3f(0x2a9)](),_0x192849[_0x1deb3f(0x33b)]&&(this['markerOverlay']=new SliceMarkerOverlay(_0x192849[_0x1deb3f(0x33b)],this[_0x1deb3f(0x3e8)],_0x410c3a,{'interactionController':this[_0x1deb3f(0xff)]}));}[_0x2e1660(0x252)](){const _0x3841fa=_0x2e1660;let _0xa43f9c=_0x51408e=>{const _0xe175e8=_0x2b0a;_0x51408e[_0xe175e8(0x199)]!==0x0&&_0x51408e[_0xe175e8(0x199)]!==0x2||(this[_0xe175e8(0x27f)]={'id':_0x51408e[_0xe175e8(0x20d)],'x':_0x51408e['clientX'],'y':_0x51408e[_0xe175e8(0x2fd)],'pan':_0x51408e['button']===0x2||_0x51408e[_0xe175e8(0x173)]!=='mouse'&&this[_0xe175e8(0x3b5)]==='pan'},this[_0xe175e8(0x3d2)](_0xe175e8(0x1af)),this[_0xe175e8(0x277)][_0xe175e8(0x371)]?.(_0x51408e[_0xe175e8(0x20d)]),_0x51408e[_0xe175e8(0x153)]());},_0x173de0=_0x3fce50=>{const _0x1d20af=_0x2b0a;if(!this[_0x1d20af(0x27f)]||this[_0x1d20af(0x27f)]['id']!==_0x3fce50[_0x1d20af(0x20d)])return;let _0x3174bf=_0x3fce50['clientX']-this[_0x1d20af(0x27f)]['x'],_0x41b2c6=_0x3fce50['clientY']-this[_0x1d20af(0x27f)]['y'];this['pointer']['x']=_0x3fce50[_0x1d20af(0x40a)],this['pointer']['y']=_0x3fce50[_0x1d20af(0x2fd)],this[_0x1d20af(0x27f)][_0x1d20af(0x37e)]?this[_0x1d20af(0x40b)][_0x1d20af(0x37e)](_0x3174bf,_0x41b2c6,this[_0x1d20af(0x249)]['clientHeight']):this[_0x1d20af(0x40b)]['orbit'](_0x3174bf,_0x41b2c6),this[_0x1d20af(0x226)](),this[_0x1d20af(0x3cb)]();},_0x1d2b03=_0x151574=>{const _0x1c632e=_0x2b0a;this[_0x1c632e(0x27f)]?.['id']===_0x151574[_0x1c632e(0x20d)]&&(this[_0x1c632e(0x27f)]=null,this[_0x1c632e(0x2df)](_0x1c632e(0x1af)));},_0x17a3dc=_0x420ab7=>{const _0x40707f=_0x2b0a;_0x420ab7[_0x40707f(0x153)](),this[_0x40707f(0x40b)][_0x40707f(0x2e4)](_0x420ab7[_0x40707f(0x2ed)]),this[_0x40707f(0x226)](),this[_0x40707f(0x3cb)]();},_0xfd1ffd=_0x150c34=>_0x150c34[_0x3841fa(0x153)]();this['interactionElement'][_0x3841fa(0x21a)](_0x3841fa(0x297),_0xa43f9c),this[_0x3841fa(0x277)][_0x3841fa(0x21a)](_0x3841fa(0x28f),_0x173de0),this['interactionElement']['addEventListener'](_0x3841fa(0x409),_0x1d2b03),this[_0x3841fa(0x277)][_0x3841fa(0x21a)](_0x3841fa(0x14e),_0x1d2b03),this[_0x3841fa(0x277)][_0x3841fa(0x21a)](_0x3841fa(0x320),_0x17a3dc,{'passive':!0x1}),this[_0x3841fa(0x277)][_0x3841fa(0x21a)]('contextmenu',_0xfd1ffd),this[_0x3841fa(0x401)]['push'](()=>this[_0x3841fa(0x277)][_0x3841fa(0xcc)](_0x3841fa(0x297),_0xa43f9c),()=>this[_0x3841fa(0x277)][_0x3841fa(0xcc)]('pointermove',_0x173de0),()=>this[_0x3841fa(0x277)]['removeEventListener'](_0x3841fa(0x409),_0x1d2b03),()=>this['interactionElement']['removeEventListener'](_0x3841fa(0x14e),_0x1d2b03),()=>this[_0x3841fa(0x277)][_0x3841fa(0xcc)]('wheel',_0x17a3dc),()=>this[_0x3841fa(0x277)]['removeEventListener'](_0x3841fa(0x2b9),_0xfd1ffd));}[_0x2e1660(0x1a6)](){const _0x4a5ed6=_0x2e1660;this['renderer'][_0x4a5ed6(0x3cd)]({'xAxis':this[_0x4a5ed6(0xc7)]['metadata'][_0x4a5ed6(0x3a3)],'yAxis':this[_0x4a5ed6(0xc7)][_0x4a5ed6(0x246)][_0x4a5ed6(0x185)],'zAxis':this['source'][_0x4a5ed6(0x246)]['zAxis'],'brickWidth':this[_0x4a5ed6(0x158)][_0x4a5ed6(0x39b)][_0x4a5ed6(0x274)],'brickHeight':this['layout'][_0x4a5ed6(0x39b)][_0x4a5ed6(0x1c0)],'brickDepth':this[_0x4a5ed6(0x158)][_0x4a5ed6(0x39b)][_0x4a5ed6(0xc8)],'halo':0x1,'noData':this[_0x4a5ed6(0xc7)][_0x4a5ed6(0x246)][_0x4a5ed6(0x27a)]});}[_0x2e1660(0x31d)](){const _0x38245e=_0x2e1660;if(this[_0x38245e(0x19c)]==='geographic-wgs84'){let _0x487009=createGeographicVolumeLayout(this[_0x38245e(0xc7)][_0x38245e(0x246)],this[_0x38245e(0x195)]);this[_0x38245e(0xc5)]['update']({'modelMatrix':_0x487009[_0x38245e(0x260)],'inverseModelMatrix':Array[_0x38245e(0x309)](invertMatrix(_0x487009['proxyModelMatrix'])),'geographicTransform':_0x487009[_0x38245e(0x40e)],'clipMinimum':[0x0,0x0,0x0],'clipMaximum':[0x1,0x1,0x1]}),this[_0x38245e(0x3cb)]();return;}let _0x4f5ed6=composeVolumeModelMatrix(this[_0x38245e(0x10a)],this[_0x38245e(0x195)]),_0x7a4165=normalizeClipBox(this[_0x38245e(0xc7)],this['clipBox']);this[_0x38245e(0xc5)]['update']({'modelMatrix':Array[_0x38245e(0x309)](_0x4f5ed6),'inverseModelMatrix':Array[_0x38245e(0x309)](invertMatrix(_0x4f5ed6)),'geographicTransform':null,'clipMinimum':_0x7a4165['minimum'],'clipMaximum':_0x7a4165['maximum']}),this[_0x38245e(0x3cb)]();}[_0x2e1660(0x356)](){const _0x5144b1=_0x2e1660;let _0x1452a4=this[_0x5144b1(0x135)][_0x5144b1(0x10e)](_0x8d0af7=>createProfileSceneMesh(buildVolumeRouteProfileMesh(_0x8d0af7,this[_0x5144b1(0xc7)][_0x5144b1(0x246)]),this[_0x5144b1(0x258)],this[_0x5144b1(0x108)],this['colorMode']));this[_0x5144b1(0xc5)][_0x5144b1(0x23d)](_0x1452a4),this[_0x5144b1(0x3cb)]();}[_0x2e1660(0x189)](){const _0x238f83=_0x2e1660;this[_0x238f83(0x350)]+=0x1;for(let _0x4b2f5c of this[_0x238f83(0x181)])_0x4b2f5c['abort']();this[_0x238f83(0x181)][_0x238f83(0xf2)](),this[_0x238f83(0x107)]['clear'](),this[_0x238f83(0x110)][_0x238f83(0xf2)](),this[_0x238f83(0x3b2)][_0x238f83(0xf2)](),this[_0x238f83(0x1a6)](),this['scheduleBricks']();}[_0x2e1660(0x226)](){const _0x4dda7f=_0x2e1660;this[_0x4dda7f(0x1ad)]=!0x0,this[_0x4dda7f(0x3cb)]();}[_0x2e1660(0x15b)](){const _0x5e3b53=_0x2e1660;this['brickScheduleDirty']&&(this[_0x5e3b53(0x1ad)]=!0x1,this[_0x5e3b53(0x1ef)]());}[_0x2e1660(0x1ef)](){const _0x2eb539=_0x2e1660;if(this[_0x2eb539(0x2c2)])return;this[_0x2eb539(0x1ad)]=!0x1,this['brickScheduleCount']+=0x1;let _0x467eb7=this[_0x2eb539(0xc5)][_0x2eb539(0x311)]['atlasCapacity'];if(_0x467eb7<=0x0)return;let _0x7a279d=_0x467eb7>=this[_0x2eb539(0xeb)][_0x2eb539(0x37f)];if(_0x7a279d&&this[_0x2eb539(0x3b2)][_0x2eb539(0x234)]===this['descriptors']['length']&&this[_0x2eb539(0x107)][_0x2eb539(0x234)]===this[_0x2eb539(0xeb)][_0x2eb539(0x37f)]&&this['pendingKeys'][_0x2eb539(0x234)]===0x0)return;let _0x294e4e;_0x7a279d?_0x294e4e=this['descriptors']:(this[_0x2eb539(0x361)]+=0x1,_0x294e4e=[...this[_0x2eb539(0xeb)]][_0x2eb539(0xd2)]((_0x235832,_0x47d1cb)=>descriptorDemandPriority(_0x235832,this['source'],this[_0x2eb539(0x3e8)],this['profiles'])-descriptorDemandPriority(_0x47d1cb,this['source'],this[_0x2eb539(0x3e8)],this[_0x2eb539(0x135)])||descriptorDistance(_0x235832,this['layout'],this['volumeCamera'][_0x2eb539(0x322)])-descriptorDistance(_0x47d1cb,this['layout'],this[_0x2eb539(0x40b)]['state']))[_0x2eb539(0x414)](0x0,_0x467eb7));let _0x2ab0dd=new Set(_0x294e4e[_0x2eb539(0x10e)](_0xb52d4d=>_0xb52d4d[_0x2eb539(0x136)]));this[_0x2eb539(0x3b2)]=_0x2ab0dd,_0x7a279d||this['renderer']['touchBricks'](_0x294e4e[_0x2eb539(0x3d9)](_0x2b57f0=>this[_0x2eb539(0x107)][_0x2eb539(0x192)](_0x2b57f0['key']))['map'](_0x52d8e2=>descriptorLogicalIndex(_0x52d8e2,this['layout'])));for(let _0x3862fd of this[_0x2eb539(0x107)])_0x2ab0dd['has'](_0x3862fd)||this[_0x2eb539(0x107)]['delete'](_0x3862fd);let _0x4d5d62=Math[_0x2eb539(0x3b1)](0x0,qualityUploadCount(this[_0x2eb539(0x187)]())-this[_0x2eb539(0x110)][_0x2eb539(0x234)]),_0x273a85=_0x294e4e['filter'](_0x4f707e=>!this[_0x2eb539(0x107)][_0x2eb539(0x192)](_0x4f707e['key'])&&!this['pendingKeys']['has'](_0x4f707e[_0x2eb539(0x136)]))[_0x2eb539(0x414)](0x0,_0x4d5d62);for(let _0x12ee4a of _0x273a85)this[_0x2eb539(0x30a)](_0x12ee4a);}['loadBrick'](_0x317ffe){const _0x30459b=_0x2e1660;let _0x128a4c=this[_0x30459b(0x350)],_0x64fba5=this[_0x30459b(0xc7)],_0x3eba9d=this['timeIndex'],_0x2f56dc=new AbortController();this[_0x30459b(0x181)][_0x30459b(0x23e)](_0x2f56dc),this[_0x30459b(0x110)][_0x30459b(0x105)](_0x317ffe['key'],_0x128a4c),Promise[_0x30459b(0x41a)](_0x64fba5['readChunk'](_0x3eba9d,_0x317ffe[_0x30459b(0x408)],_0x2f56dc[_0x30459b(0xfe)]))[_0x30459b(0x2cd)](async _0x181060=>{const _0x517ea3=_0x30459b;if(this['destroyed']||_0x128a4c!==this[_0x517ea3(0x350)]||_0x64fba5!==this[_0x517ea3(0xc7)]||_0x3eba9d!==this[_0x517ea3(0x200)]||!this['desiredKeys'][_0x517ea3(0x192)](_0x317ffe['key']))return;let _0x26618a=createPhysicalBrickValues(_0x64fba5['metadata'],this[_0x517ea3(0x158)][_0x517ea3(0x39b)],_0x317ffe,_0x181060),_0x4df2ac=descriptorLogicalIndex(_0x317ffe,this[_0x517ea3(0x158)]);await this['renderer']['uploadBrick']({'logicalIndex':_0x4df2ac,'values':_0x26618a}),!(this[_0x517ea3(0x2c2)]||_0x128a4c!==this[_0x517ea3(0x350)]||_0x64fba5!==this[_0x517ea3(0xc7)]||_0x3eba9d!==this[_0x517ea3(0x200)]||!this['desiredKeys'][_0x517ea3(0x192)](_0x317ffe['key']))&&(this['loadedKeys'][_0x517ea3(0x23e)](_0x317ffe[_0x517ea3(0x136)]),this[_0x517ea3(0x3cb)]());})[_0x30459b(0x293)](_0x1fa426=>{const _0xd25c97=_0x30459b;_0x1fa426 instanceof DOMException&&_0x1fa426[_0xd25c97(0x306)]==='AbortError'||console[_0xd25c97(0x2bf)](_0x1fa426);})[_0x30459b(0x223)](()=>{const _0x2daeb9=_0x30459b;this[_0x2daeb9(0x181)][_0x2daeb9(0x214)](_0x2f56dc),this['pendingKeys'][_0x2daeb9(0x37a)](_0x317ffe[_0x2daeb9(0x136)])===_0x128a4c&&this['pendingKeys']['delete'](_0x317ffe[_0x2daeb9(0x136)]),_0x128a4c===this[_0x2daeb9(0x350)]&&this[_0x2daeb9(0x1ef)]();});}[_0x2e1660(0x19d)](){const _0x285914=_0x2e1660;this[_0x285914(0x3c9)]&&this[_0x285914(0x3cb)]();}[_0x2e1660(0x3cb)](){const _0x1dbd7b=_0x2e1660;this[_0x1dbd7b(0x2c2)]||(this['renderDirty']=!0x0,!(this[_0x1dbd7b(0x365)]!=='managed'||this[_0x1dbd7b(0x203)]!==0x0)&&(this[_0x1dbd7b(0x203)]=requestAnimationFrame(()=>{const _0x4ec4a7=_0x1dbd7b;this[_0x4ec4a7(0x203)]=0x0,!(this[_0x4ec4a7(0x2c2)]||!this[_0x4ec4a7(0x3c9)])&&this[_0x4ec4a7(0xd8)]();})));}};const createVolumeScene=_0x3a2e90=>VolumeScene[_0x2e1660(0x373)](_0x3a2e90),insertOnce=(_0x561af4,_0x5a19fb,_0x37d3dd)=>{const _0x2adc4c=_0x2e1660;let _0x135f44=_0x561af4[_0x2adc4c(0x31b)](_0x5a19fb);if(_0x135f44<0x0||_0x561af4[_0x2adc4c(0x31b)](_0x5a19fb,_0x135f44+_0x5a19fb[_0x2adc4c(0x37f)])>=0x0)throw Error(_0x2adc4c(0x313)+_0x5a19fb);return''+_0x561af4[_0x2adc4c(0x414)](0x0,_0x135f44)+_0x37d3dd+_0x561af4['slice'](_0x135f44+_0x5a19fb[_0x2adc4c(0x37f)]);},mars3dVolumeRaymarchSource=insertOnce(insertOnce(volumeRaymarch_default,'fn\x20getPageIndex',_0x2e1660(0x372)),_0x2e1660(0x122),_0x2e1660(0x39d)),premultipliedBlend=()=>({'color':{'srcFactor':_0x2e1660(0x23a),'dstFactor':_0x2e1660(0x2e0),'operation':_0x2e1660(0x23e)},'alpha':{'srcFactor':_0x2e1660(0x23a),'dstFactor':_0x2e1660(0x2e0),'operation':_0x2e1660(0x23e)}}),rendererPrototype=WebgpuVolumeSceneRenderer[_0x2e1660(0x325)],mars3dCanvases=new WeakSet();let pipelineHookInstalled=!0x1;const installPipelineHook=()=>{const _0x5c7be6=_0x2e1660;if(pipelineHookInstalled)return;let _0x19004b=rendererPrototype['createPipelines'];rendererPrototype[_0x5c7be6(0x23c)]=function(){const _0xd4917f=_0x5c7be6;if(_0x19004b[_0xd4917f(0x212)](this),!this['canvas']||!mars3dCanvases[_0xd4917f(0x192)](this[_0xd4917f(0x249)]))return;let _0x507f02=this[_0xd4917f(0x1f6)](),_0x242adb=_0x507f02[_0xd4917f(0x3e5)]({'label':_0xd4917f(0xf8),'code':mars3dVolumeRaymarchSource});this[_0xd4917f(0x121)]=_0x507f02['createRenderPipeline']({'label':_0xd4917f(0x22c),'layout':_0x507f02[_0xd4917f(0x286)]({'bindGroupLayouts':[this[_0xd4917f(0x240)](),this['getVolumeBindGroupLayout'](),this['getTransferBindGroupLayout']()]}),'vertex':{'module':_0x242adb,'entryPoint':_0xd4917f(0x386)},'fragment':{'module':_0x242adb,'entryPoint':_0xd4917f(0x165),'targets':[{'format':this['getFormat'](),'blend':premultipliedBlend()}]},'primitive':{'topology':_0xd4917f(0x3b0)}});},pipelineHookInstalled=!0x0;},createMars3dVolumeScene=async _0x4a4f42=>{const _0x5e8c2e=_0x2e1660;installPipelineHook(),mars3dCanvases[_0x5e8c2e(0x23e)](_0x4a4f42[_0x5e8c2e(0x249)]);try{let _0x16df76=await createVolumeScene(_0x4a4f42),_0x347ad8=_0x16df76[_0x5e8c2e(0x3e2)][_0x5e8c2e(0x36d)](_0x16df76);return _0x16df76[_0x5e8c2e(0x3e2)]=()=>{const _0x4b4719=_0x5e8c2e;mars3dCanvases[_0x4b4719(0x214)](_0x4a4f42['canvas']),_0x347ad8();},_0x16df76;}catch(_0x211f8e){throw mars3dCanvases['delete'](_0x4a4f42[_0x5e8c2e(0x249)]),_0x211f8e;}},crossVector=(_0x23cc3a,_0x55518a)=>[_0x23cc3a[0x1]*_0x55518a[0x2]-_0x23cc3a[0x2]*_0x55518a[0x1],_0x23cc3a[0x2]*_0x55518a[0x0]-_0x23cc3a[0x0]*_0x55518a[0x2],_0x23cc3a[0x0]*_0x55518a[0x1]-_0x23cc3a[0x1]*_0x55518a[0x0]],normalizeVector=_0xd53d89=>{const _0x3ecb01=_0x2e1660;let _0x51ca11=Math[_0x3ecb01(0x305)](_0xd53d89[0x0],_0xd53d89[0x1],_0xd53d89[0x2]);return _0x51ca11>1e-10?[_0xd53d89[0x0]/_0x51ca11,_0xd53d89[0x1]/_0x51ca11,_0xd53d89[0x2]/_0x51ca11]:null;},dotVector=(_0x37f377,_0x384ce8)=>_0x37f377[0x0]*_0x384ce8[0x0]+_0x37f377[0x1]*_0x384ce8[0x1]+_0x37f377[0x2]*_0x384ce8[0x2],addScaledVector=(_0x29202e,_0x5f0078,_0x226514)=>[_0x29202e[0x0]+_0x5f0078[0x0]*_0x226514,_0x29202e[0x1]+_0x5f0078[0x1]*_0x226514,_0x29202e[0x2]+_0x5f0078[0x2]*_0x226514],createMars3dCompensationFrame=(_0x6cff84,_0x2bc1e0,_0x38bf33)=>{const _0x52c78a=_0x2e1660;let _0x3d4ae9=normalizeVector(_0x6cff84[_0x52c78a(0x2ba)]),_0x1454aa=_0x3d4ae9?normalizeVector(crossVector(_0x3d4ae9,_0x6cff84['up'])):null,_0x16463f=_0x3d4ae9&&_0x1454aa?normalizeVector(crossVector(_0x1454aa,_0x3d4ae9)):null,_0x189356=Math[_0x52c78a(0x3fe)](_0x6cff84[_0x52c78a(0x3df)]/0x2),_0x3169b1=_0x2bc1e0/_0x38bf33;if(!_0x3d4ae9||!_0x1454aa||!_0x16463f||!(_0x189356>0x0)||!(_0x3169b1>0x0)||!(_0x6cff84[_0x52c78a(0x1d6)]>0x0))return null;let _0x533fe7=addScaledVector(_0x6cff84[_0x52c78a(0x154)],_0x3d4ae9,_0x6cff84[_0x52c78a(0x1d6)]),_0xc5c9d=[_0x533fe7,addScaledVector(_0x533fe7,_0x1454aa,_0x6cff84[_0x52c78a(0x1d6)]*_0x189356*_0x3169b1*0.5),addScaledVector(_0x533fe7,_0x16463f,_0x6cff84[_0x52c78a(0x1d6)]*_0x189356*0.5)],_0xad1270=projectMars3dCompensationAnchors(_0x6cff84,_0xc5c9d,_0x2bc1e0,_0x38bf33);return _0xad1270?{'worldAnchors':_0xc5c9d,'screenAnchors':_0xad1270}:null;},projectMars3dCompensationAnchors=(_0x408de3,_0x4d38f2,_0x2cf7c0,_0x48d620)=>{const _0x1037ae=_0x2e1660;let _0x586084=normalizeVector(_0x408de3[_0x1037ae(0x2ba)]),_0x5b9e4c=_0x586084?normalizeVector(crossVector(_0x586084,_0x408de3['up'])):null,_0x1f24bb=_0x586084&&_0x5b9e4c?normalizeVector(crossVector(_0x5b9e4c,_0x586084)):null,_0x24bee0=Math[_0x1037ae(0x3fe)](_0x408de3[_0x1037ae(0x3df)]/0x2),_0x3c0460=_0x2cf7c0/_0x48d620;if(!_0x586084||!_0x5b9e4c||!_0x1f24bb||!(_0x24bee0>0x0)||!(_0x3c0460>0x0))return null;let _0xb76f27=[];for(let _0x5ee62d of _0x4d38f2){let _0x1fa981=[_0x5ee62d[0x0]-_0x408de3[_0x1037ae(0x154)][0x0],_0x5ee62d[0x1]-_0x408de3[_0x1037ae(0x154)][0x1],_0x5ee62d[0x2]-_0x408de3[_0x1037ae(0x154)][0x2]],_0x556e2d=dotVector(_0x1fa981,_0x586084);if(!(_0x556e2d>0.000001))return null;let _0x427e17=dotVector(_0x1fa981,_0x5b9e4c)/(_0x556e2d*_0x24bee0*_0x3c0460),_0x9045e2=dotVector(_0x1fa981,_0x1f24bb)/(_0x556e2d*_0x24bee0);_0xb76f27['push']({'x':(_0x427e17*0.5+0.5)*_0x2cf7c0,'y':(0.5-_0x9045e2*0.5)*_0x48d620});}return _0xb76f27;},createMars3dCanvasCompensationTransform=(_0x1362dd,_0xe4c48b)=>{const _0x7891ba=_0x2e1660;if(_0x1362dd['length']!==0x3||_0xe4c48b[_0x7891ba(0x37f)]!==0x3)return null;let _0x22c068={'x':_0x1362dd[0x1]['x']-_0x1362dd[0x0]['x'],'y':_0x1362dd[0x1]['y']-_0x1362dd[0x0]['y']},_0x1127b0={'x':_0x1362dd[0x2]['x']-_0x1362dd[0x0]['x'],'y':_0x1362dd[0x2]['y']-_0x1362dd[0x0]['y']},_0x36b23f={'x':_0xe4c48b[0x1]['x']-_0xe4c48b[0x0]['x'],'y':_0xe4c48b[0x1]['y']-_0xe4c48b[0x0]['y']},_0x4aa9c6={'x':_0xe4c48b[0x2]['x']-_0xe4c48b[0x0]['x'],'y':_0xe4c48b[0x2]['y']-_0xe4c48b[0x0]['y']},_0x4ca826=_0x22c068['x']*_0x1127b0['y']-_0x1127b0['x']*_0x22c068['y'];if(Math[_0x7891ba(0x193)](_0x4ca826)<0.000001)return null;let _0x559a74=(_0x36b23f['x']*_0x1127b0['y']-_0x4aa9c6['x']*_0x22c068['y'])/_0x4ca826,_0x2e9b8a=(-_0x36b23f['x']*_0x1127b0['x']+_0x4aa9c6['x']*_0x22c068['x'])/_0x4ca826,_0x209017=(_0x36b23f['y']*_0x1127b0['y']-_0x4aa9c6['y']*_0x22c068['y'])/_0x4ca826,_0x3ff5ce=(-_0x36b23f['y']*_0x1127b0['x']+_0x4aa9c6['y']*_0x22c068['x'])/_0x4ca826,_0x294480=[_0x559a74,_0x209017,_0x2e9b8a,_0x3ff5ce,_0xe4c48b[0x0]['x']-_0x559a74*_0x1362dd[0x0]['x']-_0x2e9b8a*_0x1362dd[0x0]['y'],_0xe4c48b[0x0]['y']-_0x209017*_0x1362dd[0x0]['x']-_0x3ff5ce*_0x1362dd[0x0]['y']];return _0x294480[_0x7891ba(0x24c)](Number['isFinite'])?_0x7891ba(0x2ac)+_0x294480['join'](',')+')':null;},getError=_0x708936=>_0x708936 instanceof Error?_0x708936:Error(String(_0x708936));var Mars3dVolumeRenderer=class{[_0x2e1660(0x1c8)];[_0x2e1660(0x10e)];[_0x2e1660(0x249)];[_0x2e1660(0x1b1)];[_0x2e1660(0x2b4)];[_0x2e1660(0x17e)]=null;['source'];[_0x2e1660(0x158)];[_0x2e1660(0x203)]=0x0;[_0x2e1660(0x10d)]=0x0;[_0x2e1660(0x101)]=0x0;[_0x2e1660(0x3fc)];['destroyed']=!0x1;[_0x2e1660(0xd5)]=!0x1;[_0x2e1660(0x317)]='';['pendingCompensationFrame']=null;[_0x2e1660(0x354)]=null;constructor(_0x4f9eec,_0x139efe){const _0x48f302=_0x2e1660;this[_0x48f302(0x10e)]=_0x4f9eec,this['source']=_0x139efe['source'],this['layout']=createGeographicVolumeLayout(_0x139efe['source'][_0x48f302(0x246)]),this[_0x48f302(0x1b1)]=_0x139efe[_0x48f302(0x1b1)],this[_0x48f302(0x2b4)]=_0x139efe['cameraFrameCompensation']??!0x0,this[_0x48f302(0x3fc)]=_0x139efe[_0x48f302(0x1c1)]??!0x0,this[_0x48f302(0x249)]=this[_0x48f302(0x337)](_0x4f9eec[_0x48f302(0x17e)]['canvas']),this[_0x48f302(0x1c8)]=this['initialize'](_0x139efe);}get[_0x2e1660(0x311)](){const _0x32ea6f=_0x2e1660;return this[_0x32ea6f(0x17e)]?.[_0x32ea6f(0x311)]??null;}get[_0x2e1660(0x41b)](){const _0x2e511e=_0x2e1660;return this[_0x2e511e(0x17e)]?.[_0x2e511e(0x41b)]??[];}['setShow'](_0x211af6){const _0x415661=_0x2e1660;this[_0x415661(0x39c)](),this[_0x415661(0x3fc)]=_0x211af6,this[_0x415661(0x249)][_0x415661(0x20c)][_0x415661(0x29f)]=_0x211af6?'block':_0x415661(0x116),_0x211af6&&this['requestFrames'](0x3);}['update'](_0x1227f2){const _0xbeaf44=_0x2e1660;this[_0xbeaf44(0xca)]()['update'](_0x1227f2),this[_0xbeaf44(0xcf)](0x3);}[_0x2e1660(0x304)](_0x45631f){const _0x516141=_0x2e1660;this[_0x516141(0xca)]()[_0x516141(0x304)](_0x45631f),this[_0x516141(0xcf)](0x3);}[_0x2e1660(0x321)](_0x24b1db){const _0x34a83b=_0x2e1660;this['requireScene']()[_0x34a83b(0x321)](_0x24b1db),this[_0x34a83b(0xcf)](0x3);}[_0x2e1660(0x31e)](_0x2fc9ec,_0x500a09){const _0x1e6d82=_0x2e1660;this[_0x1e6d82(0xca)]()[_0x1e6d82(0x31e)](_0x2fc9ec,_0x500a09),this[_0x1e6d82(0xcf)](0x3);}[_0x2e1660(0x415)](_0x1ee21a){const _0x3d81f6=_0x2e1660;this[_0x3d81f6(0xca)]()['removeSlice'](_0x1ee21a),this[_0x3d81f6(0xcf)](0x3);}[_0x2e1660(0x1fc)](){const _0x1a177d=_0x2e1660;this['requireScene']()[_0x1a177d(0x1fc)](),this[_0x1a177d(0xcf)](0x3);}[_0x2e1660(0x3fd)](_0x2a8ed0,_0x20dfc6){const _0x1a8a69=_0x2e1660;let _0x1a2300=this[_0x1a8a69(0xca)]()[_0x1a8a69(0x3fd)](_0x2a8ed0,_0x20dfc6);return this[_0x1a8a69(0xcf)](0x3),_0x1a2300;}['setSource'](_0x112c65){const _0x38036f=_0x2e1660;this[_0x38036f(0x39c)](),this['source']=_0x112c65,this[_0x38036f(0x158)]=createGeographicVolumeLayout(_0x112c65[_0x38036f(0x246)]),this[_0x38036f(0xe5)](),this[_0x38036f(0xca)]()['setSource'](_0x112c65),this['syncCamera'](),this[_0x38036f(0xcf)](0x3);}[_0x2e1660(0x3e2)](){const _0x42eb01=_0x2e1660;this[_0x42eb01(0x2c2)]||(this[_0x42eb01(0x2c2)]=!0x0,cancelAnimationFrame(this[_0x42eb01(0x203)]),window['clearTimeout'](this[_0x42eb01(0x10d)]),this[_0x42eb01(0x203)]=0x0,this[_0x42eb01(0x10d)]=0x0,this[_0x42eb01(0x10e)][_0x42eb01(0x17e)][_0x42eb01(0x162)][_0x42eb01(0xcc)](this[_0x42eb01(0x128)]),window['removeEventListener'](_0x42eb01(0x1c2),this[_0x42eb01(0x24f)]),this[_0x42eb01(0x17e)]?.['destroy'](),this[_0x42eb01(0x17e)]=null,this[_0x42eb01(0x249)][_0x42eb01(0x2b1)]());}[_0x2e1660(0x18b)](){const _0xec1e3d=_0x2e1660;this['cameraMoving']&&(window['clearTimeout'](this['cameraEndTimer']),this['cameraEndTimer']=0x0,this[_0xec1e3d(0xd5)]=!0x1,this[_0xec1e3d(0x17e)]?.[_0xec1e3d(0x2df)](_0xec1e3d(0x1af)),this[_0xec1e3d(0xe4)](),this[_0xec1e3d(0xcf)](0x3));}[_0x2e1660(0x128)]=()=>{const _0x883164=_0x2e1660;let _0x3858d6=this[_0x883164(0x355)](this[_0x883164(0x10e)][_0x883164(0x17e)][_0x883164(0x1af)]);_0x3858d6!==this['cameraSignature']&&(this['cameraSignature']=_0x3858d6,this[_0x883164(0x362)](),this[_0x883164(0xe4)](),this[_0x883164(0x2ef)](),this['requestFramesImmediately'](0x1));};[_0x2e1660(0x24f)]=()=>{const _0x519c49=_0x2e1660;this[_0x519c49(0xe5)](),this[_0x519c49(0x17e)]?.[_0x519c49(0x1c2)](),this[_0x519c49(0xe4)](),this[_0x519c49(0xcf)](0x3);};async[_0x2e1660(0x2a9)](_0x22d85f){const _0x730307=_0x2e1660;try{let _0x425e15=await createMars3dVolumeScene({..._0x22d85f,'interactionStepScale':_0x22d85f[_0x730307(0x3a8)]??1.35,'canvas':this[_0x730307(0x249)],'coordinateSystem':_0x730307(0x245),'showDebugGeometry':!0x1,'renderMode':_0x730307(0x3c6)});if(this[_0x730307(0x2c2)]){_0x425e15['destroy']();return;}this[_0x730307(0x17e)]=_0x425e15,this[_0x730307(0xdd)](_0x425e15),this['map'][_0x730307(0x17e)][_0x730307(0x162)][_0x730307(0x21a)](this[_0x730307(0x128)]),window[_0x730307(0x21a)](_0x730307(0x1c2),this['handleResize']),this[_0x730307(0xe4)](),this[_0x730307(0xcf)](0x3);}catch(_0x408a1c){let _0x469fdd=getError(_0x408a1c);throw this['canvas'][_0x730307(0x2b1)](),this[_0x730307(0x1b1)]?.(_0x469fdd),_0x469fdd;}}[_0x2e1660(0xe4)](){const _0x4a5cff=_0x2e1660;let _0x28836c=this[_0x4a5cff(0x17e)];if(!_0x28836c)return;let _0x1965cc=this['map']['scene']['camera'],_0x145de3=ecefToGeographicVolumeLocal([_0x1965cc[_0x4a5cff(0x14a)]['x'],_0x1965cc[_0x4a5cff(0x14a)]['y'],_0x1965cc[_0x4a5cff(0x14a)]['z']],this[_0x4a5cff(0x158)]),_0x423a1e=[_0x1965cc['directionWC']['x'],_0x1965cc[_0x4a5cff(0x160)]['y'],_0x1965cc[_0x4a5cff(0x160)]['z']],_0x5ecdea=[_0x1965cc[_0x4a5cff(0x22a)]['x'],_0x1965cc[_0x4a5cff(0x22a)]['y'],_0x1965cc[_0x4a5cff(0x22a)]['z']],_0x3161fe=Math[_0x4a5cff(0x3b1)](0.001,Math[_0x4a5cff(0x193)](_0x1965cc[_0x4a5cff(0x201)]['height'])/this[_0x4a5cff(0x158)][_0x4a5cff(0x413)]),_0x4ce912=[_0x145de3[0x0]+_0x423a1e[0x0]*_0x3161fe,_0x145de3[0x1]+_0x423a1e[0x1]*_0x3161fe,_0x145de3[0x2]+_0x423a1e[0x2]*_0x3161fe],_0x2063ee=_0x1965cc['frustum'][_0x4a5cff(0xd9)]??_0x1965cc['frustum'][_0x4a5cff(0x229)]??Math['PI']/0x3,_0x512758=Math['max'](0.0001,_0x3161fe/0x2710),_0x1522ad=Math['max'](0x64,_0x3161fe*0x4);_0x28836c[_0x4a5cff(0x1a9)]({'position':_0x145de3,'target':_0x4ce912,'up':_0x5ecdea,'projection':{'type':_0x4a5cff(0x219),'fovYDegrees':_0x2063ee*0xb4/Math['PI'],'near':_0x512758,'far':_0x1522ad}});}[_0x2e1660(0xdd)](_0x5741df){const _0x4ce5e2=_0x2e1660;let _0x49936e=_0x5741df[_0x4ce5e2(0xc5)],_0x52bf48=_0x49936e[_0x4ce5e2(0x151)];_0x49936e[_0x4ce5e2(0x151)]=()=>{const _0x5440f1=_0x4ce5e2;this[_0x5440f1(0x3bf)]&&(this[_0x5440f1(0x354)]=this['pendingCompensationFrame'],this['pendingCompensationFrame']=null,this['applyCameraFrameCompensation']()),_0x52bf48?.();};}[_0x2e1660(0x152)](){const _0x517de6=_0x2e1660;let _0x2fcc52=this[_0x517de6(0x10e)][_0x517de6(0x17e)][_0x517de6(0x1af)];return{'position':[_0x2fcc52[_0x517de6(0x14a)]['x'],_0x2fcc52[_0x517de6(0x14a)]['y'],_0x2fcc52[_0x517de6(0x14a)]['z']],'direction':[_0x2fcc52[_0x517de6(0x160)]['x'],_0x2fcc52[_0x517de6(0x160)]['y'],_0x2fcc52[_0x517de6(0x160)]['z']],'up':[_0x2fcc52[_0x517de6(0x22a)]['x'],_0x2fcc52[_0x517de6(0x22a)]['y'],_0x2fcc52[_0x517de6(0x22a)]['z']],'fovYRadians':_0x2fcc52[_0x517de6(0x216)]['fovy']??_0x2fcc52['frustum'][_0x517de6(0x229)]??Math['PI']/0x3,'anchorDistance':Math['max'](0x3e8,Math['abs'](_0x2fcc52['positionCartographic']['height'])*0x2)};}[_0x2e1660(0xfa)](){const _0x590562=_0x2e1660;return createMars3dCompensationFrame(this[_0x590562(0x152)](),this[_0x590562(0x249)][_0x590562(0x35c)],this[_0x590562(0x249)][_0x590562(0x191)]);}[_0x2e1660(0x2ef)](){const _0x14afae=_0x2e1660;if(!this[_0x14afae(0x2b4)]||!this[_0x14afae(0x354)]){this[_0x14afae(0x249)][_0x14afae(0x20c)]['transform']='none';return;}let _0x174f88=projectMars3dCompensationAnchors(this[_0x14afae(0x152)](),this[_0x14afae(0x354)][_0x14afae(0x2e5)],this['canvas'][_0x14afae(0x35c)],this[_0x14afae(0x249)][_0x14afae(0x191)]),_0x976e9a=_0x174f88?createMars3dCanvasCompensationTransform(this['displayedCompensationFrame'][_0x14afae(0x307)],_0x174f88):null;this[_0x14afae(0x249)][_0x14afae(0x20c)][_0x14afae(0x40e)]=_0x976e9a??_0x14afae(0x116);}[_0x2e1660(0xe5)](){const _0x5ed613=_0x2e1660;this['pendingCompensationFrame']=null,this[_0x5ed613(0x354)]=null,this[_0x5ed613(0x249)][_0x5ed613(0x20c)][_0x5ed613(0x40e)]=_0x5ed613(0x116);}[_0x2e1660(0xcf)](_0x2c22c6){const _0x420bd5=_0x2e1660;!this[_0x420bd5(0x3fc)]||this['destroyed']||(this[_0x420bd5(0x101)]=Math[_0x420bd5(0x3b1)](this[_0x420bd5(0x101)],_0x2c22c6),this['frameRequest']||=requestAnimationFrame(this[_0x420bd5(0x400)]));}['requestFramesImmediately'](_0x2d855e){const _0x38c6be=_0x2e1660;!this[_0x38c6be(0x3fc)]||this[_0x38c6be(0x2c2)]||(this['framesRemaining']=Math[_0x38c6be(0x3b1)](this[_0x38c6be(0x101)],_0x2d855e),this[_0x38c6be(0x203)]&&cancelAnimationFrame(this[_0x38c6be(0x203)]),this['frameRequest']=0x0,this[_0x38c6be(0x400)]());}[_0x2e1660(0x400)]=()=>{const _0x82ae92=_0x2e1660;this[_0x82ae92(0x203)]=0x0;let _0x1769a3=this[_0x82ae92(0x17e)];if(!(!_0x1769a3||!this['shown']||this[_0x82ae92(0x2c2)]))try{_0x1769a3[_0x82ae92(0x1c2)]();let _0xd5812d=_0x1769a3['statistics']['submittedFrameCount'];_0x1769a3[_0x82ae92(0xd8)](),_0x1769a3[_0x82ae92(0x311)][_0x82ae92(0x266)]>_0xd5812d&&(this[_0x82ae92(0x3bf)]=this[_0x82ae92(0xfa)](),this[_0x82ae92(0x101)]=Math[_0x82ae92(0x3b1)](0x0,this['framesRemaining']-0x1));let _0x29aa18=_0x1769a3[_0x82ae92(0x311)];(_0x29aa18['pendingBrickCount']>0x0||_0x29aa18[_0x82ae92(0x34d)]<_0x29aa18[_0x82ae92(0x3a7)]||this['framesRemaining']>0x0)&&(this[_0x82ae92(0x203)]=requestAnimationFrame(this[_0x82ae92(0x400)]));}catch(_0x26c736){this[_0x82ae92(0x1b1)]?.(getError(_0x26c736));}};[_0x2e1660(0x337)](_0xc7016e){const _0x7f5f9c=_0x2e1660;let _0x519d18=_0xc7016e[_0x7f5f9c(0x141)];if(!_0x519d18)throw Error(_0x7f5f9c(0x34b));let _0x4101f0=document['createElement']('canvas');return _0x4101f0[_0x7f5f9c(0x20c)][_0x7f5f9c(0x154)]=_0x7f5f9c(0x25c),_0x4101f0['style']['inset']='0',_0x4101f0[_0x7f5f9c(0x20c)]['width']=_0x7f5f9c(0xdf),_0x4101f0[_0x7f5f9c(0x20c)][_0x7f5f9c(0x1c0)]='100%',_0x4101f0[_0x7f5f9c(0x20c)][_0x7f5f9c(0x251)]=_0x7f5f9c(0x116),_0x4101f0['style'][_0x7f5f9c(0x29f)]=this[_0x7f5f9c(0x3fc)]?_0x7f5f9c(0x359):_0x7f5f9c(0x116),_0x4101f0['style'][_0x7f5f9c(0x270)]='1',_0x519d18['append'](_0x4101f0),_0x4101f0;}['createCameraSignature'](_0x352b5b){const _0xb2be41=_0x2e1660;return[_0x352b5b['positionWC']['x'],_0x352b5b[_0xb2be41(0x14a)]['y'],_0x352b5b[_0xb2be41(0x14a)]['z'],_0x352b5b[_0xb2be41(0x160)]['x'],_0x352b5b['directionWC']['y'],_0x352b5b[_0xb2be41(0x160)]['z'],_0x352b5b[_0xb2be41(0x22a)]['x'],_0x352b5b['upWC']['y'],_0x352b5b[_0xb2be41(0x22a)]['z'],_0x352b5b['frustum'][_0xb2be41(0xd9)]??_0x352b5b[_0xb2be41(0x216)]['fov']??0x0,_0x352b5b[_0xb2be41(0x216)][_0xb2be41(0x2d8)],_0x352b5b[_0xb2be41(0x216)][_0xb2be41(0x21f)]][_0xb2be41(0x10e)](_0xa85335=>_0xa85335[_0xb2be41(0x334)](0xa))[_0xb2be41(0x22e)]('|');}[_0x2e1660(0x1f9)](){const _0x3262e4=_0x2e1660;window[_0x3262e4(0x225)](this['cameraEndTimer']),this[_0x3262e4(0x10d)]=window[_0x3262e4(0x178)](this[_0x3262e4(0x18b)]['bind'](this),0xc8);}['beginCameraInteraction'](){const _0x2fbf10=_0x2e1660;this[_0x2fbf10(0xd5)]||(this[_0x2fbf10(0xd5)]=!0x0,this['scene']?.[_0x2fbf10(0x3d2)](_0x2fbf10(0x1af))),this[_0x2fbf10(0x1f9)]();}[_0x2e1660(0xca)](){const _0x4e119c=_0x2e1660;if(this[_0x4e119c(0x39c)](),!this[_0x4e119c(0x17e)])throw Error('Mars3D\x20volume\x20layer\x20is\x20not\x20ready;\x20await\x20readyPromise\x20first.\x20Mars3D\x20体积层尚未就绪,请先等待\x20readyPromise。');return this['scene'];}['assertAlive'](){const _0x384861=_0x2e1660;if(this['destroyed'])throw Error(_0x384861(0x109));}};const layerConstructors=new WeakMap(),getVolumeLayerConstructor=_0x29b663=>{const _0x346d72=_0x2e1660;let _0x58d16d=layerConstructors[_0x346d72(0x37a)](_0x29b663);if(_0x58d16d)return _0x58d16d;let _0x220de9=_0x29b663[_0x346d72(0x345)][_0x346d72(0x2c5)];class _0x2db8af extends _0x220de9{[_0x346d72(0x412)];[_0x346d72(0xc5)]=null;['readyResolve']=null;[_0x346d72(0x36b)]=null;[_0x346d72(0x1c8)]=new Promise((resolve,reject)=>{const _0x1d6d27=_0x346d72;this[_0x1d6d27(0x3d8)]=resolve,this[_0x1d6d27(0x36b)]=reject;});constructor(_0x598c06){super({..._0x598c06}),this['volumeOptions']={..._0x598c06};}get[_0x346d72(0x311)](){const _0x1413f0=_0x346d72;return this[_0x1413f0(0xc5)]?.[_0x1413f0(0x311)]??null;}get['lockedSlices'](){return this['renderer']?.['lockedSlices']??[];}[_0x346d72(0x171)](_0x63783c){const _0x7075a0=_0x346d72;this[_0x7075a0(0xc5)]?.[_0x7075a0(0x171)](_0x63783c);}[_0x346d72(0x3cd)](_0x5822aa){const _0x5c86f6=_0x346d72;this[_0x5c86f6(0x412)][_0x5c86f6(0xc7)]=_0x5822aa,this[_0x5c86f6(0x13f)]()[_0x5c86f6(0x3cd)](_0x5822aa);}['setTimeIndex'](_0x550ad6){const _0x254975=_0x346d72;this['requireRenderer']()[_0x254975(0x304)](_0x550ad6);}[_0x346d72(0x321)](_0x359edf){const _0x5cabbe=_0x346d72;this[_0x5cabbe(0x13f)]()[_0x5cabbe(0x321)](_0x359edf);}[_0x346d72(0x3fd)](_0x1efe48,_0x504367){const _0x29ea2f=_0x346d72;return this[_0x29ea2f(0x13f)]()[_0x29ea2f(0x3fd)](_0x1efe48,_0x504367);}[_0x346d72(0x31e)](_0x2539d5,_0x56b3f2){const _0x127086=_0x346d72;this[_0x127086(0x13f)]()['updateSlice'](_0x2539d5,_0x56b3f2);}[_0x346d72(0x415)](_0x5795ac){const _0x5bbaac=_0x346d72;this['requireRenderer']()[_0x5bbaac(0x415)](_0x5795ac);}['clearLockedSlices'](){const _0xee62c6=_0x346d72;this[_0xee62c6(0x13f)]()[_0xee62c6(0x1fc)]();}['_mountedHook'](){}[_0x346d72(0x38e)](){const _0x5c431b=_0x346d72;if(!this[_0x5c431b(0x2c6)])throw Error('Mars3D\x20volume\x20layer\x20is\x20not\x20attached\x20to\x20a\x20map.\x20Mars3D\x20体积层尚未关联地图。');this[_0x5c431b(0xc5)]?.[_0x5c431b(0x3e2)](),this['renderer']=new Mars3dVolumeRenderer(this['_map'],this['volumeOptions']),this[_0x5c431b(0xc5)][_0x5c431b(0x25a)](this[_0x5c431b(0x1c1)]),this[_0x5c431b(0xc5)][_0x5c431b(0x1c8)][_0x5c431b(0x2cd)](()=>this[_0x5c431b(0x3d8)]?.())[_0x5c431b(0x293)](_0x2ea752=>this['readyReject']?.(_0x2ea752));}[_0x346d72(0x1a8)](_0x564a50){const _0x446ab9=_0x346d72;this[_0x446ab9(0xc5)]?.[_0x446ab9(0x25a)](_0x564a50);}['_removedHook'](){const _0x4889da=_0x346d72;this['renderer']?.[_0x4889da(0x3e2)](),this[_0x4889da(0xc5)]=null;}[_0x346d72(0x13f)](){const _0x590057=_0x346d72;if(!this[_0x590057(0xc5)])throw Error('Mars3D\x20volume\x20layer\x20is\x20not\x20added\x20to\x20a\x20map.\x20Mars3D\x20体积层尚未添加到地图。');return this[_0x590057(0xc5)];}}let _0x968e6f=_0x2db8af;return layerConstructors[_0x346d72(0x105)](_0x29b663,_0x968e6f),_0x968e6f;},createMars3dVolumeLayer=(_0x343be7,_0x271244)=>new(getVolumeLayerConstructor(_0x343be7))(_0x271244);exports[_0x2e1660(0x2a8)]=createMars3dVolumeLayer;
|
|
1
|
+
const _0x328247=_0x3351;(function(_0x5e3301,_0x3bc6eb){const _0xb32d95=_0x3351,_0x12a2e8=_0x5e3301();while(!![]){try{const _0xe511a1=-parseInt(_0xb32d95(0x4c5))/0x1+parseInt(_0xb32d95(0x480))/0x2+-parseInt(_0xb32d95(0x44f))/0x3+-parseInt(_0xb32d95(0x1ec))/0x4*(-parseInt(_0xb32d95(0x46b))/0x5)+-parseInt(_0xb32d95(0x26b))/0x6*(parseInt(_0xb32d95(0x2e0))/0x7)+parseInt(_0xb32d95(0x393))/0x8+parseInt(_0xb32d95(0x43e))/0x9;if(_0xe511a1===_0x3bc6eb)break;else _0x12a2e8['push'](_0x12a2e8['shift']());}catch(_0x14c473){_0x12a2e8['push'](_0x12a2e8['shift']());}}}(_0x2b72,0xbeea1),Object[_0x328247(0x221)](exports,Symbol[_0x328247(0x2c9)],{'value':_0x328247(0x3f7)}));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=_0x4cf4f9=>_0x4cf4f9*Math['PI']/0xb4,geodeticToEcef=(_0x1eaf03,_0x20c906,_0x268574)=>{const _0x5d520b=_0x328247;let _0x21893a=Math[_0x5d520b(0x322)](_0x20c906),_0x3e1e92=Math[_0x5d520b(0x2b4)](_0x20c906),_0x554154=Math[_0x5d520b(0x322)](_0x1eaf03),_0x133a74=Math[_0x5d520b(0x2b4)](_0x1eaf03),_0x39ba52=WGS84_SEMI_MAJOR_AXIS_METERS/Math['sqrt'](0x1-WGS84_FIRST_ECCENTRICITY_SQUARED*_0x21893a*_0x21893a);return[(_0x39ba52+_0x268574)*_0x3e1e92*_0x133a74,(_0x39ba52+_0x268574)*_0x3e1e92*_0x554154,(_0x39ba52*(0x1-WGS84_FIRST_ECCENTRICITY_SQUARED)+_0x268574)*_0x21893a];},validateAxisSpan=(_0x305da6,_0x3f87c0,_0x5dbca3)=>{const _0x4bc5e2=_0x328247;if(!Number[_0x4bc5e2(0x410)](_0x305da6)||!Number[_0x4bc5e2(0x410)](_0x3f87c0)||_0x305da6===_0x3f87c0)throw Error(_0x5dbca3+_0x4bc5e2(0x288)+_0x5dbca3+_0x4bc5e2(0x2f8));},createGeographicVolumeLayout=(_0x59383e,_0xc05b69=0x1)=>{const _0x580ab4=_0x328247;let _0x2c9591=degreesToRadians(_0x59383e['xAxis'][_0x580ab4(0x4b1)]),_0x24ef0a=degreesToRadians(_0x59383e[_0x580ab4(0x3c7)]['end']),_0xd7e5de=degreesToRadians(_0x59383e[_0x580ab4(0x1d5)][_0x580ab4(0x4b1)]),_0x28dc23=degreesToRadians(_0x59383e[_0x580ab4(0x1d5)][_0x580ab4(0x24b)]);validateAxisSpan(_0x2c9591,_0x24ef0a,'Longitude\x20/\x20经度'),validateAxisSpan(_0xd7e5de,_0x28dc23,_0x580ab4(0x346));let _0x324896=_0x59383e['yAxis'][_0x580ab4(0x4b1)],_0x25bc4c=_0x59383e[_0x580ab4(0x2fa)]['end'];if(validateAxisSpan(_0x324896,_0x25bc4c,'Height\x20/\x20高度'),!(_0xc05b69>0x0)||!Number['isFinite'](_0xc05b69))throw Error(_0x580ab4(0x17a));let _0x112e04=_0x324896+(_0x25bc4c-_0x324896)*_0xc05b69,_0x28b0be=(_0x2c9591+_0x24ef0a)/0x2,_0x270a94=(_0xd7e5de+_0x28dc23)/0x2,_0x473455=geodeticToEcef(_0x28b0be,_0x270a94,0x0),_0x51a56a=Math[_0x580ab4(0x1b4)](_0x24ef0a-_0x2c9591)*WGS84_SEMI_MAJOR_AXIS_METERS*Math['max'](0.01,Math[_0x580ab4(0x2b4)](_0x270a94)),_0xb87203=Math[_0x580ab4(0x1b4)](_0x28dc23-_0xd7e5de)*WGS84_SEMI_MAJOR_AXIS_METERS,_0x2da216=Math['max'](_0x51a56a,_0xb87203);if(!(_0x2da216>0x0)||!Number[_0x580ab4(0x410)](_0x2da216))throw Error(_0x580ab4(0x2ec));let _0x23b96c=[0x1/0x0,0x1/0x0,0x1/0x0],_0x5cffd8=[-0x1/0x0,-0x1/0x0,-0x1/0x0];for(let _0x3619da=0x0;_0x3619da<=0x8;_0x3619da+=0x1){let _0x3d9156=_0xd7e5de+(_0x28dc23-_0xd7e5de)*_0x3619da/0x8;for(let _0x3df293=0x0;_0x3df293<=0x8;_0x3df293+=0x1){let _0x3733e2=_0x2c9591+(_0x24ef0a-_0x2c9591)*_0x3df293/0x8;for(let _0x114262 of[_0x324896,_0x112e04]){let _0x44b131=geodeticToEcef(_0x3733e2,_0x3d9156,_0x114262);for(let _0x20481a=0x0;_0x20481a<0x3;_0x20481a+=0x1){let _0x3ef3d8=(_0x44b131[_0x20481a]-_0x473455[_0x20481a])/_0x2da216;_0x23b96c[_0x20481a]=Math[_0x580ab4(0x4ab)](_0x23b96c[_0x20481a],_0x3ef3d8),_0x5cffd8[_0x20481a]=Math[_0x580ab4(0x4b3)](_0x5cffd8[_0x20481a],_0x3ef3d8);}}}}let _0x3d2b66=_0x5cffd8['map']((_0xd19b0a,_0x5020cd)=>_0xd19b0a-_0x23b96c[_0x5020cd]);if(_0x3d2b66['some'](_0x41bbf7=>!(_0x41bbf7>0x0)||!Number[_0x580ab4(0x410)](_0x41bbf7)))throw Error(_0x580ab4(0x451));return{'centerEcef':_0x473455,'normalizationMeters':_0x2da216,'proxyModelMatrix':[_0x3d2b66[0x0],0x0,0x0,0x0,0x0,_0x3d2b66[0x1],0x0,0x0,0x0,0x0,_0x3d2b66[0x2],0x0,_0x23b96c[0x0],_0x23b96c[0x1],_0x23b96c[0x2],0x1],'transform':{'mode':_0x580ab4(0x3b5),'centerEcefScaled':[_0x473455[0x0]/_0x2da216,_0x473455[0x1]/_0x2da216,_0x473455[0x2]/_0x2da216],'semiMajorAxisScaled':WGS84_SEMI_MAJOR_AXIS_METERS/_0x2da216,'semiMinorAxisScaled':WGS84_SEMI_MINOR_AXIS_METERS/_0x2da216,'longitudeRadians':[_0x2c9591,_0x24ef0a],'latitudeRadians':[_0xd7e5de,_0x28dc23],'heightScaled':[_0x324896/_0x2da216,_0x112e04/_0x2da216]}};},ecefToGeographicVolumeLocal=(_0x1614ca,_0xc2c9d5)=>[(_0x1614ca[0x0]-_0xc2c9d5[_0x328247(0x246)][0x0])/_0xc2c9d5[_0x328247(0x25b)],(_0x1614ca[0x1]-_0xc2c9d5[_0x328247(0x246)][0x1])/_0xc2c9d5[_0x328247(0x25b)],(_0x1614ca[0x2]-_0xc2c9d5[_0x328247(0x246)][0x2])/_0xc2c9d5[_0x328247(0x25b)]],validatePositiveInteger=(_0x11830e,_0x3222bd)=>{const _0x18726a=_0x328247;if(!Number['isInteger'](_0x11830e)||_0x11830e<=0x0)throw Error(_0x3222bd+_0x18726a(0x3af)+_0x3222bd+_0x18726a(0x337));},validateAxis=(_0x27ead7,_0xb92b8e)=>{const _0x1f4096=_0x328247;if(validatePositiveInteger(_0x27ead7[_0x1f4096(0x1c1)],_0xb92b8e+_0x1f4096(0x3a7)),!Number[_0x1f4096(0x410)](_0x27ead7[_0x1f4096(0x4b1)])||!Number[_0x1f4096(0x410)](_0x27ead7[_0x1f4096(0x24b)]))throw Error(_0xb92b8e+'\x20endpoints\x20must\x20be\x20finite.\x20'+_0xb92b8e+_0x1f4096(0x1b9));if(_0x27ead7[_0x1f4096(0x1c1)]===0x1&&_0x27ead7['start']!==_0x27ead7[_0x1f4096(0x24b)])throw Error(_0xb92b8e+_0x1f4096(0x378)+_0xb92b8e+'\x20只有一个采样点时端点必须相等。');if(_0x27ead7[_0x1f4096(0x1c1)]>0x1&&_0x27ead7[_0x1f4096(0x4b1)]===_0x27ead7['end'])throw Error(_0xb92b8e+_0x1f4096(0x47f)+_0xb92b8e+'\x20包含多个采样点时步长不能为零。');},validateNoData=(_0x500fcc,_0x5eec13)=>{const _0x5c31f9=_0x328247;if(_0x500fcc!==void 0x0&&!Number[_0x5c31f9(0x410)](_0x500fcc)&&!Number[_0x5c31f9(0x447)](_0x500fcc))throw Error(_0x5eec13+_0x5c31f9(0x317)+_0x5eec13+'\x20noData\x20必须是有限数值或\x20NaN。');},rangesEqual=(_0x945835,_0xccb402)=>_0x945835[_0x328247(0x3fd)]===_0xccb402['xStart']&&_0x945835[_0x328247(0x42e)]===_0xccb402['xCount']&&_0x945835[_0x328247(0x29a)]===_0xccb402[_0x328247(0x29a)]&&_0x945835['levelCount']===_0xccb402[_0x328247(0x494)]&&_0x945835[_0x328247(0x44b)]===_0xccb402[_0x328247(0x44b)]&&_0x945835[_0x328247(0x414)]===_0xccb402[_0x328247(0x414)],validateVolumeMetadata=_0x1f6965=>{const _0x1f5d50=_0x328247;if(validateAxis(_0x1f6965[_0x1f5d50(0x3c7)],_0x1f5d50(0x45d)),validateAxis(_0x1f6965[_0x1f5d50(0x2fa)],_0x1f5d50(0x1b5)),validateAxis(_0x1f6965[_0x1f5d50(0x1d5)],_0x1f5d50(0x4cc)),validatePositiveInteger(_0x1f6965[_0x1f5d50(0x230)],_0x1f5d50(0x234)),validateNoData(_0x1f6965[_0x1f5d50(0x187)],'Volume'),_0x1f6965[_0x1f5d50(0x249)]!==void 0x0&&!Number[_0x1f5d50(0x410)](_0x1f6965['valueScale']))throw Error(_0x1f5d50(0x48b));if(_0x1f6965['revision']!==void 0x0&&(!Number['isInteger'](_0x1f6965[_0x1f5d50(0x2ee)])||_0x1f6965[_0x1f5d50(0x2ee)]<0x0))throw Error(_0x1f5d50(0x2e4));},validateVolumeTimeIndex=(_0x1633b4,_0x30517a)=>{const _0x2e4e2d=_0x328247;if(!Number[_0x2e4e2d(0x474)](_0x30517a)||_0x30517a<0x0||_0x30517a>=_0x1633b4['timeCount'])throw Error(_0x2e4e2d(0x30e)+_0x30517a+_0x2e4e2d(0x30d));},validateVolumeChunkRange=(_0x50ad7f,_0x57b41f)=>{const _0x2fba88=_0x328247;let _0x3aa481=[[_0x57b41f[_0x2fba88(0x3fd)],'xStart'],[_0x57b41f['xCount'],_0x2fba88(0x42e)],[_0x57b41f[_0x2fba88(0x29a)],'levelStart'],[_0x57b41f[_0x2fba88(0x494)],_0x2fba88(0x494)],[_0x57b41f[_0x2fba88(0x44b)],_0x2fba88(0x44b)],[_0x57b41f[_0x2fba88(0x414)],_0x2fba88(0x414)]];for(let [_0x13ce9d,_0x536fa2]of _0x3aa481)if(!Number[_0x2fba88(0x474)](_0x13ce9d)||_0x13ce9d<0x0||_0x536fa2['endsWith'](_0x2fba88(0x24e))&&_0x13ce9d===0x0)throw Error('Volume\x20chunk\x20'+_0x536fa2+_0x2fba88(0x2b0)+_0x13ce9d+'.\x20体积分块\x20'+_0x536fa2+_0x2fba88(0x1bd));if(_0x57b41f[_0x2fba88(0x3fd)]+_0x57b41f[_0x2fba88(0x42e)]>_0x50ad7f['xAxis'][_0x2fba88(0x1c1)]||_0x57b41f[_0x2fba88(0x29a)]+_0x57b41f[_0x2fba88(0x494)]>_0x50ad7f[_0x2fba88(0x2fa)]['count']||_0x57b41f[_0x2fba88(0x44b)]+_0x57b41f[_0x2fba88(0x414)]>_0x50ad7f[_0x2fba88(0x1d5)]['count'])throw Error('Volume\x20chunk\x20range\x20exceeds\x20source\x20dimensions.\x20体积分块范围超出源数据尺寸。');},validateVolumeChunk=(_0x238e13,_0x2b1247,_0x2dfab8,_0x2d8110)=>{const _0x1f3cc1=_0x328247;if(validateVolumeTimeIndex(_0x238e13,_0x2b1247[_0x1f3cc1(0x424)]),validateVolumeChunkRange(_0x238e13,_0x2b1247[_0x1f3cc1(0x261)]),_0x2d8110!==void 0x0&&_0x2b1247['timeIndex']!==_0x2d8110)throw Error(_0x1f3cc1(0x4c4));if(_0x2dfab8&&!rangesEqual(_0x2b1247[_0x1f3cc1(0x261)],_0x2dfab8))throw Error('Returned\x20volume\x20chunk\x20range\x20does\x20not\x20match\x20the\x20request.\x20返回体积分块范围与请求不一致。');if(_0x2b1247[_0x1f3cc1(0x25d)]!==_0x2b1247[_0x1f3cc1(0x261)][_0x1f3cc1(0x42e)]||_0x2b1247[_0x1f3cc1(0x304)]!==_0x2b1247['range'][_0x1f3cc1(0x494)]||_0x2b1247[_0x1f3cc1(0x1fd)]!==_0x2b1247[_0x1f3cc1(0x261)][_0x1f3cc1(0x414)])throw Error(_0x1f3cc1(0x231));let _0x1a4f9a=_0x2b1247[_0x1f3cc1(0x25d)]*_0x2b1247[_0x1f3cc1(0x304)]*_0x2b1247[_0x1f3cc1(0x1fd)];if(!Number[_0x1f3cc1(0x335)](_0x1a4f9a)||_0x2b1247['values']['length']!==_0x1a4f9a)throw Error(_0x1f3cc1(0x2e1)+_0x1a4f9a+'\x20values\x20but\x20received\x20'+_0x2b1247[_0x1f3cc1(0x3b8)][_0x1f3cc1(0x34f)]+'.\x20体积分块数值数量与尺寸不一致。');},validateVolumeSource=_0x2e4834=>{const _0x3c17ec=_0x328247;if(!_0x2e4834||typeof _0x2e4834[_0x3c17ec(0x299)]!='function')throw Error(_0x3c17ec(0x1e1));validateVolumeMetadata(_0x2e4834[_0x3c17ec(0x36e)]);},validateBrickShape=_0x10fec0=>{const _0x2a833c=_0x328247;for(let [_0x41bc7a,_0x35c8aa]of[[_0x10fec0[_0x2a833c(0x25d)],_0x2a833c(0x25d)],[_0x10fec0[_0x2a833c(0x304)],_0x2a833c(0x304)],[_0x10fec0[_0x2a833c(0x1fd)],_0x2a833c(0x1fd)]])if(!Number['isInteger'](_0x41bc7a)||_0x41bc7a<=0x0)throw Error(_0x2a833c(0x1c3)+_0x35c8aa+_0x2a833c(0x487)+_0x35c8aa+_0x2a833c(0x337));if(!Number['isInteger'](_0x10fec0[_0x2a833c(0x1e3)])||_0x10fec0['halo']<0x1)throw Error(_0x2a833c(0x4b7));},resolveVolumeBrickShape=(_0x2bc915={})=>{const _0x512156=_0x328247;let _0x31c761={'width':_0x2bc915[_0x512156(0x25d)]??0x100,'height':_0x2bc915['height']??0x8,'depth':_0x2bc915[_0x512156(0x1fd)]??0x100,'halo':_0x2bc915[_0x512156(0x1e3)]??0x1};return validateBrickShape(_0x31c761),_0x31c761;},createVolumeBrickLayout=(_0x42b3b7,_0x3d2d31={})=>{const _0x39f826=_0x328247;validateVolumeMetadata(_0x42b3b7);let _0x4f2a93=resolveVolumeBrickShape(_0x3d2d31),_0x322691=Math[_0x39f826(0x22e)](_0x42b3b7['xAxis']['count']/_0x4f2a93[_0x39f826(0x25d)]),_0x387380=Math[_0x39f826(0x22e)](_0x42b3b7[_0x39f826(0x2fa)][_0x39f826(0x1c1)]/_0x4f2a93[_0x39f826(0x304)]),_0x214a71=Math[_0x39f826(0x22e)](_0x42b3b7['zAxis']['count']/_0x4f2a93[_0x39f826(0x1fd)]);return{'shape':_0x4f2a93,'countX':_0x322691,'countY':_0x387380,'countZ':_0x214a71,'brickCount':_0x322691*_0x387380*_0x214a71};},createVolumeBrickKey=_0xcc30ae=>_0xcc30ae['x']+':'+_0xcc30ae['y']+':'+_0xcc30ae['z'],createVolumeBrickDescriptor=(_0x883a68,_0x16eaa3,_0x9e70e0)=>{const _0x35d2ab=_0x328247;if(!Number[_0x35d2ab(0x474)](_0x9e70e0['x'])||!Number['isInteger'](_0x9e70e0['y'])||!Number['isInteger'](_0x9e70e0['z'])||_0x9e70e0['x']<0x0||_0x9e70e0['x']>=_0x16eaa3[_0x35d2ab(0x34c)]||_0x9e70e0['y']<0x0||_0x9e70e0['y']>=_0x16eaa3['countY']||_0x9e70e0['z']<0x0||_0x9e70e0['z']>=_0x16eaa3[_0x35d2ab(0x3c1)])throw Error(_0x35d2ab(0x1da));let _0x1d98ac=_0x9e70e0['x']*_0x16eaa3[_0x35d2ab(0x1a8)]['width'],_0x4f35c1=_0x9e70e0['y']*_0x16eaa3[_0x35d2ab(0x1a8)][_0x35d2ab(0x304)],_0x18969f=_0x9e70e0['z']*_0x16eaa3[_0x35d2ab(0x1a8)][_0x35d2ab(0x1fd)],_0x4b4628=Math[_0x35d2ab(0x4ab)](_0x16eaa3[_0x35d2ab(0x1a8)]['width'],_0x883a68[_0x35d2ab(0x3c7)][_0x35d2ab(0x1c1)]-_0x1d98ac),_0x493a91=Math[_0x35d2ab(0x4ab)](_0x16eaa3[_0x35d2ab(0x1a8)][_0x35d2ab(0x304)],_0x883a68[_0x35d2ab(0x2fa)]['count']-_0x4f35c1),_0x2b4cfc=Math[_0x35d2ab(0x4ab)](_0x16eaa3[_0x35d2ab(0x1a8)][_0x35d2ab(0x1fd)],_0x883a68[_0x35d2ab(0x1d5)]['count']-_0x18969f),_0x2edb3f=_0x16eaa3[_0x35d2ab(0x1a8)][_0x35d2ab(0x1e3)],_0x58816f=Math[_0x35d2ab(0x4b3)](0x0,_0x1d98ac-_0x2edb3f),_0x544454=Math[_0x35d2ab(0x4b3)](0x0,_0x4f35c1-_0x2edb3f),_0x17710b=Math['max'](0x0,_0x18969f-_0x2edb3f),_0x3114f1=Math[_0x35d2ab(0x4ab)](_0x883a68[_0x35d2ab(0x3c7)][_0x35d2ab(0x1c1)],_0x1d98ac+_0x4b4628+_0x2edb3f),_0x2fdb18=Math[_0x35d2ab(0x4ab)](_0x883a68[_0x35d2ab(0x2fa)][_0x35d2ab(0x1c1)],_0x4f35c1+_0x493a91+_0x2edb3f),_0x1073f9=Math[_0x35d2ab(0x4ab)](_0x883a68[_0x35d2ab(0x1d5)][_0x35d2ab(0x1c1)],_0x18969f+_0x2b4cfc+_0x2edb3f),_0x5ce467=_0x16eaa3[_0x35d2ab(0x1a8)][_0x35d2ab(0x25d)]+_0x2edb3f*0x2,_0x33d748=_0x16eaa3['shape'][_0x35d2ab(0x304)]+_0x2edb3f*0x2,_0x1474bc=_0x16eaa3[_0x35d2ab(0x1a8)][_0x35d2ab(0x1fd)]+_0x2edb3f*0x2;return{'key':createVolumeBrickKey(_0x9e70e0),'coordinate':_0x9e70e0,'coreRange':{'xStart':_0x1d98ac,'xCount':_0x4b4628,'levelStart':_0x4f35c1,'levelCount':_0x493a91,'sourceYStart':_0x18969f,'sourceYCount':_0x2b4cfc},'readRange':{'xStart':_0x58816f,'xCount':_0x3114f1-_0x58816f,'levelStart':_0x544454,'levelCount':_0x2fdb18-_0x544454,'sourceYStart':_0x17710b,'sourceYCount':_0x1073f9-_0x17710b},'physicalWidth':_0x5ce467,'physicalHeight':_0x33d748,'physicalDepth':_0x1474bc,'byteLength':_0x5ce467*_0x33d748*_0x1474bc*Float32Array[_0x35d2ab(0x490)]};},createVolumeBrickDescriptors=(_0xc295cc,_0x1f26c8)=>{const _0x572a4d=_0x328247;let _0x3daebf=[];for(let _0x4afd41=0x0;_0x4afd41<_0x1f26c8[_0x572a4d(0x3c1)];_0x4afd41+=0x1)for(let _0x3e302d=0x0;_0x3e302d<_0x1f26c8[_0x572a4d(0x3a1)];_0x3e302d+=0x1)for(let _0x485658=0x0;_0x485658<_0x1f26c8[_0x572a4d(0x34c)];_0x485658+=0x1)_0x3daebf[_0x572a4d(0x17b)](createVolumeBrickDescriptor(_0xc295cc,_0x1f26c8,{'x':_0x485658,'y':_0x3e302d,'z':_0x4afd41}));return _0x3daebf;},EPSILON=1e-8,createMatrix=()=>new Float32Array(0x10),dotVector3=(_0xa40270,_0x3864dc)=>_0xa40270[0x0]*_0x3864dc[0x0]+_0xa40270[0x1]*_0x3864dc[0x1]+_0xa40270[0x2]*_0x3864dc[0x2],subtractVector3=(_0x1fc69a,_0x2f2ad3)=>[_0x1fc69a[0x0]-_0x2f2ad3[0x0],_0x1fc69a[0x1]-_0x2f2ad3[0x1],_0x1fc69a[0x2]-_0x2f2ad3[0x2]],crossVector3=(_0x369ee3,_0x339f3c)=>[_0x369ee3[0x1]*_0x339f3c[0x2]-_0x369ee3[0x2]*_0x339f3c[0x1],_0x369ee3[0x2]*_0x339f3c[0x0]-_0x369ee3[0x0]*_0x339f3c[0x2],_0x369ee3[0x0]*_0x339f3c[0x1]-_0x369ee3[0x1]*_0x339f3c[0x0]],normalizeVector3=_0x577c0c=>{const _0x25a4ad=_0x328247;let _0x540774=Math[_0x25a4ad(0x24d)](_0x577c0c[0x0],_0x577c0c[0x1],_0x577c0c[0x2]);if(_0x540774<=EPSILON)throw Error(_0x25a4ad(0x3d2));return[_0x577c0c[0x0]/_0x540774,_0x577c0c[0x1]/_0x540774,_0x577c0c[0x2]/_0x540774];},createIdentityMatrix=()=>{let _0x14fe7b=createMatrix();return _0x14fe7b[0x0]=0x1,_0x14fe7b[0x5]=0x1,_0x14fe7b[0xa]=0x1,_0x14fe7b[0xf]=0x1,_0x14fe7b;},multiplyMatrices=(_0x5c2c96,_0x59ab4b)=>{let _0x500424=createMatrix();for(let _0x1e4377=0x0;_0x1e4377<0x4;_0x1e4377+=0x1)for(let _0x5d293c=0x0;_0x5d293c<0x4;_0x5d293c+=0x1){let _0x543c41=0x0;for(let _0x667028=0x0;_0x667028<0x4;_0x667028+=0x1)_0x543c41+=_0x5c2c96[_0x667028*0x4+_0x5d293c]*_0x59ab4b[_0x1e4377*0x4+_0x667028];_0x500424[_0x1e4377*0x4+_0x5d293c]=_0x543c41;}return _0x500424;},invertMatrix=_0x1aa63f=>{const _0x52979d=_0x328247;let _0x13dc1d=Array['from']({'length':0x4},(_0x42d50b,_0x7ecd47)=>{let _0x2fb1ed=new Float64Array(0x8);for(let _0x21ef44=0x0;_0x21ef44<0x4;_0x21ef44+=0x1)_0x2fb1ed[_0x21ef44]=_0x1aa63f[_0x21ef44*0x4+_0x7ecd47];return _0x2fb1ed[_0x7ecd47+0x4]=0x1,_0x2fb1ed;});for(let _0x25eb6f=0x0;_0x25eb6f<0x4;_0x25eb6f+=0x1){let _0xc1bdfb=_0x25eb6f;for(let _0x536a09=_0x25eb6f+0x1;_0x536a09<0x4;_0x536a09+=0x1)Math[_0x52979d(0x1b4)](_0x13dc1d[_0x536a09][_0x25eb6f])>Math['abs'](_0x13dc1d[_0xc1bdfb][_0x25eb6f])&&(_0xc1bdfb=_0x536a09);if(Math[_0x52979d(0x1b4)](_0x13dc1d[_0xc1bdfb][_0x25eb6f])<=EPSILON)throw Error(_0x52979d(0x1e9));_0xc1bdfb!==_0x25eb6f&&([_0x13dc1d[_0x25eb6f],_0x13dc1d[_0xc1bdfb]]=[_0x13dc1d[_0xc1bdfb],_0x13dc1d[_0x25eb6f]]);let _0x1225d3=_0x13dc1d[_0x25eb6f][_0x25eb6f];for(let _0x3d50a3=0x0;_0x3d50a3<0x8;_0x3d50a3+=0x1)_0x13dc1d[_0x25eb6f][_0x3d50a3]/=_0x1225d3;for(let _0xb002e=0x0;_0xb002e<0x4;_0xb002e+=0x1){if(_0xb002e===_0x25eb6f)continue;let _0x5db921=_0x13dc1d[_0xb002e][_0x25eb6f];for(let _0x9c9c12=0x0;_0x9c9c12<0x8;_0x9c9c12+=0x1)_0x13dc1d[_0xb002e][_0x9c9c12]-=_0x5db921*_0x13dc1d[_0x25eb6f][_0x9c9c12];}}let _0x2f4bb0=createMatrix();for(let _0x56ecbc=0x0;_0x56ecbc<0x4;_0x56ecbc+=0x1)for(let _0x2536f5=0x0;_0x2536f5<0x4;_0x2536f5+=0x1)_0x2f4bb0[_0x2536f5*0x4+_0x56ecbc]=_0x13dc1d[_0x56ecbc][_0x2536f5+0x4];return _0x2f4bb0;},createLookAtMatrix=(_0x4e22cb,_0x53398f,_0xe77b34)=>{let _0x20a743=normalizeVector3(subtractVector3(_0x4e22cb,_0x53398f)),_0x1f6f77=normalizeVector3(crossVector3(_0xe77b34,_0x20a743)),_0x345f3d=crossVector3(_0x20a743,_0x1f6f77),_0x50567e=createIdentityMatrix();return _0x50567e[0x0]=_0x1f6f77[0x0],_0x50567e[0x1]=_0x345f3d[0x0],_0x50567e[0x2]=_0x20a743[0x0],_0x50567e[0x4]=_0x1f6f77[0x1],_0x50567e[0x5]=_0x345f3d[0x1],_0x50567e[0x6]=_0x20a743[0x1],_0x50567e[0x8]=_0x1f6f77[0x2],_0x50567e[0x9]=_0x345f3d[0x2],_0x50567e[0xa]=_0x20a743[0x2],_0x50567e[0xc]=-dotVector3(_0x1f6f77,_0x4e22cb),_0x50567e[0xd]=-dotVector3(_0x345f3d,_0x4e22cb),_0x50567e[0xe]=-dotVector3(_0x20a743,_0x4e22cb),_0x50567e;},createPerspectiveMatrix=(_0x1170c1,_0x578ae8,_0x37d04a,_0x403bed)=>{const _0x1b152a=_0x328247;if(!(_0x1170c1>0x0&&_0x1170c1<Math['PI']))throw Error(_0x1b152a(0x41e));if(!(_0x578ae8>0x0))throw Error(_0x1b152a(0x1aa));if(!(_0x37d04a>0x0&&_0x403bed>_0x37d04a))throw Error('相机裁剪距离必须满足\x200\x20<\x20near\x20<\x20far。');let _0x937e0a=0x1/Math[_0x1b152a(0x4bf)](_0x1170c1/0x2),_0x170368=createMatrix();return _0x170368[0x0]=_0x937e0a/_0x578ae8,_0x170368[0x5]=_0x937e0a,_0x170368[0xa]=_0x403bed/(_0x37d04a-_0x403bed),_0x170368[0xb]=-0x1,_0x170368[0xe]=_0x37d04a*_0x403bed/(_0x37d04a-_0x403bed),_0x170368;},createOrthographicMatrix=(_0x5f05f9,_0x6928e4,_0x593982,_0x244764)=>{const _0x5e9cb2=_0x328247;if(!(_0x5f05f9>0x0&&_0x6928e4>0x0))throw Error(_0x5e9cb2(0x2e5));if(!(_0x593982>=0x0&&_0x244764>_0x593982))throw Error('相机裁剪距离必须满足\x200\x20<=\x20near\x20<\x20far。');let _0x119223=_0x5f05f9*_0x6928e4,_0x5597aa=createIdentityMatrix();return _0x5597aa[0x0]=0x2/_0x119223,_0x5597aa[0x5]=0x2/_0x5f05f9,_0x5597aa[0xa]=0x1/(_0x593982-_0x244764),_0x5597aa[0xe]=_0x593982/(_0x593982-_0x244764),_0x5597aa;},createScaleMatrix=(_0x58598e,_0x1f68f4,_0x40bf00)=>{let _0xe6809d=createIdentityMatrix();return _0xe6809d[0x0]=_0x58598e,_0xe6809d[0x5]=_0x1f68f4,_0xe6809d[0xa]=_0x40bf00,_0xe6809d;},composeVolumeModelMatrix=(_0x55d595,_0x8ccf00)=>{const _0x2378b0=_0x328247;if(!(_0x8ccf00>0x0)||!Number[_0x2378b0(0x410)](_0x8ccf00))throw Error('verticalScale\x20必须是大于\x200\x20的有限数。');let _0x535023=createScaleMatrix(0x1,_0x8ccf00,0x1);return _0x55d595?multiplyMatrices(_0x55d595,_0x535023):_0x535023;},transformPoint=(_0x5ef786,_0x18f948,_0x4e3718=0x1)=>[_0x5ef786[0x0]*_0x18f948[0x0]+_0x5ef786[0x4]*_0x18f948[0x1]+_0x5ef786[0x8]*_0x18f948[0x2]+_0x5ef786[0xc]*_0x4e3718,_0x5ef786[0x1]*_0x18f948[0x0]+_0x5ef786[0x5]*_0x18f948[0x1]+_0x5ef786[0x9]*_0x18f948[0x2]+_0x5ef786[0xd]*_0x4e3718,_0x5ef786[0x2]*_0x18f948[0x0]+_0x5ef786[0x6]*_0x18f948[0x1]+_0x5ef786[0xa]*_0x18f948[0x2]+_0x5ef786[0xe]*_0x4e3718,_0x5ef786[0x3]*_0x18f948[0x0]+_0x5ef786[0x7]*_0x18f948[0x1]+_0x5ef786[0xb]*_0x18f948[0x2]+_0x5ef786[0xf]*_0x4e3718],projectPointToViewport=(_0x5da2ee,_0x25c79a,_0x486b5a,_0x3f0382)=>{let _0xa4e4e3=transformPoint(_0x5da2ee,_0x25c79a);if(_0xa4e4e3[0x3]<=EPSILON)return null;let _0x5cd7e6=0x1/_0xa4e4e3[0x3];return[(_0xa4e4e3[0x0]*_0x5cd7e6*0.5+0.5)*_0x486b5a,(0.5-_0xa4e4e3[0x1]*_0x5cd7e6*0.5)*_0x3f0382,_0xa4e4e3[0x2]*_0x5cd7e6];},DEFAULT_POSITION=[0x0,0x1,0x2],DEFAULT_TARGET=[0x0,0x0,0x0],DEFAULT_UP=[0x0,0x1,0x0],DEFAULT_PROJECTION={'type':_0x328247(0x341),'fovYDegrees':0x2d,'near':0.01,'far':0x2710},DEGREE_TO_RADIAN=Math['PI']/0xb4,cloneVector=_0x2ab148=>[_0x2ab148[0x0],_0x2ab148[0x1],_0x2ab148[0x2]],cloneProjection=_0x11a704=>(_0x11a704[_0x328247(0x2cb)],{..._0x11a704}),cloneState=_0x52aea9=>({'position':cloneVector(_0x52aea9[_0x328247(0x2b1)]),'target':cloneVector(_0x52aea9[_0x328247(0x181)]),'up':cloneVector(_0x52aea9['up']),'projection':cloneProjection(_0x52aea9['projection'])}),subtractVector=(_0x576ed1,_0x431b98)=>[_0x576ed1[0x0]-_0x431b98[0x0],_0x576ed1[0x1]-_0x431b98[0x1],_0x576ed1[0x2]-_0x431b98[0x2]],addVector=(_0x4d8a39,_0x17c5d6)=>[_0x4d8a39[0x0]+_0x17c5d6[0x0],_0x4d8a39[0x1]+_0x17c5d6[0x1],_0x4d8a39[0x2]+_0x17c5d6[0x2]],scaleVector=(_0x36e034,_0x39c8d3)=>[_0x36e034[0x0]*_0x39c8d3,_0x36e034[0x1]*_0x39c8d3,_0x36e034[0x2]*_0x39c8d3],crossVector$1=(_0x222e69,_0x500627)=>[_0x222e69[0x1]*_0x500627[0x2]-_0x222e69[0x2]*_0x500627[0x1],_0x222e69[0x2]*_0x500627[0x0]-_0x222e69[0x0]*_0x500627[0x2],_0x222e69[0x0]*_0x500627[0x1]-_0x222e69[0x1]*_0x500627[0x0]],normalizeVector$1=_0x4ee037=>{let _0x3efcd2=Math['hypot'](_0x4ee037[0x0],_0x4ee037[0x1],_0x4ee037[0x2]);return _0x3efcd2===0x0?[0x0,0x0,0x0]:scaleVector(_0x4ee037,0x1/_0x3efcd2);},clamp$1=(_0x591bc5,_0x7d6ddc,_0x3571da)=>Math[_0x328247(0x4ab)](_0x3571da,Math['max'](_0x7d6ddc,_0x591bc5)),validateProjection=_0x55212d=>{const _0x57fab4=_0x328247;if(!(_0x55212d['near']>=0x0&&_0x55212d['far']>_0x55212d['near']))throw Error(_0x57fab4(0x20b));if(_0x55212d[_0x57fab4(0x2cb)]==='perspective'&&!(_0x55212d[_0x57fab4(0x1f9)]>0x0&&_0x55212d['fovYDegrees']>0x0&&_0x55212d['fovYDegrees']<0xb4))throw Error(_0x57fab4(0x229));if(_0x55212d[_0x57fab4(0x2cb)]==='orthographic'&&!(_0x55212d[_0x57fab4(0x304)]>0x0))throw Error(_0x57fab4(0x364));},resolveInitialState=_0x51eaac=>{const _0x1315a4=_0x328247;let _0x16f072={'position':_0x51eaac[_0x1315a4(0x1f8)]?.[_0x1315a4(0x2b1)]?cloneVector(_0x51eaac[_0x1315a4(0x1f8)][_0x1315a4(0x2b1)]):cloneVector(DEFAULT_POSITION),'target':_0x51eaac[_0x1315a4(0x1f8)]?.[_0x1315a4(0x181)]?cloneVector(_0x51eaac[_0x1315a4(0x1f8)][_0x1315a4(0x181)]):cloneVector(DEFAULT_TARGET),'up':_0x51eaac[_0x1315a4(0x1f8)]?.['up']?cloneVector(_0x51eaac[_0x1315a4(0x1f8)]['up']):cloneVector(DEFAULT_UP),'projection':_0x51eaac[_0x1315a4(0x1f8)]?.[_0x1315a4(0x395)]?cloneProjection(_0x51eaac['state'][_0x1315a4(0x395)]):cloneProjection(DEFAULT_PROJECTION)};return validateProjection(_0x16f072['projection']),_0x16f072;};var VolumeCamera=class{[_0x328247(0x3c6)];[_0x328247(0x24a)];[_0x328247(0x2cd)];[_0x328247(0x286)];[_0x328247(0x3e4)];[_0x328247(0x340)];[_0x328247(0x2f0)];[_0x328247(0x380)];['maximumPitch'];constructor(_0x289584={}){const _0x32645b=_0x328247;if(this[_0x32645b(0x3c6)]=resolveInitialState(_0x289584),this[_0x32645b(0x24a)]=_0x289584[_0x32645b(0x24a)]??0x1,this['rotateSpeed']=_0x289584[_0x32645b(0x2cd)]??0.005,this[_0x32645b(0x286)]=_0x289584[_0x32645b(0x286)]??0x1,this[_0x32645b(0x3e4)]=_0x289584[_0x32645b(0x3e4)]??0.0015,this[_0x32645b(0x340)]=_0x289584[_0x32645b(0x340)]??0.001,this['maximumDistance']=_0x289584[_0x32645b(0x2f0)]??0x1/0x0,this['minimumPitch']=(_0x289584[_0x32645b(0x404)]??-0x59)*DEGREE_TO_RADIAN,this['maximumPitch']=(_0x289584[_0x32645b(0x325)]??0x59)*DEGREE_TO_RADIAN,!(this[_0x32645b(0x24a)]>0x0))throw Error(_0x32645b(0x1aa));}get[_0x328247(0x1f8)](){return cloneState(this['cameraState']);}get[_0x328247(0x4a8)](){const _0x4df5e6=_0x328247;let _0x496f9c=createLookAtMatrix(this[_0x4df5e6(0x3c6)][_0x4df5e6(0x2b1)],this[_0x4df5e6(0x3c6)][_0x4df5e6(0x181)],this[_0x4df5e6(0x3c6)]['up']),_0xee1132=this[_0x4df5e6(0x21a)](),_0x4bfe9b=multiplyMatrices(_0xee1132,_0x496f9c);return{'view':_0x496f9c,'projection':_0xee1132,'viewProjection':_0x4bfe9b,'inverseViewProjection':invertMatrix(_0x4bfe9b)};}[_0x328247(0x436)](_0x2f6581){const _0x4a9acd=_0x328247;validateProjection(_0x2f6581[_0x4a9acd(0x395)]),this[_0x4a9acd(0x3c6)]=cloneState(_0x2f6581);}['setAspect'](_0x18bc2b){const _0x4b6282=_0x328247;if(!(_0x18bc2b>0x0)||!Number['isFinite'](_0x18bc2b))throw Error(_0x4b6282(0x1f7));this[_0x4b6282(0x24a)]=_0x18bc2b;}[_0x328247(0x42c)](_0xa31658){const _0x5e80ce=_0x328247;if(_0xa31658===this[_0x5e80ce(0x3c6)][_0x5e80ce(0x395)]['type'])return;let _0x4ccbf8=Math[_0x5e80ce(0x24d)](...subtractVector(this[_0x5e80ce(0x3c6)]['position'],this[_0x5e80ce(0x3c6)][_0x5e80ce(0x181)]));if(_0xa31658==='orthographic'){let _0x441d71=this[_0x5e80ce(0x3c6)]['projection'],_0x21cd8e=_0x441d71[_0x5e80ce(0x2cb)]==='perspective'?_0x441d71[_0x5e80ce(0x403)]*DEGREE_TO_RADIAN:0x2d*DEGREE_TO_RADIAN;this[_0x5e80ce(0x3c6)][_0x5e80ce(0x395)]={'type':_0xa31658,'height':0x2*_0x4ccbf8*Math[_0x5e80ce(0x4bf)](_0x21cd8e/0x2),'near':_0x441d71[_0x5e80ce(0x1f9)],'far':_0x441d71[_0x5e80ce(0x32b)]};return;}let _0x4ea5c9=this['cameraState'][_0x5e80ce(0x395)],_0x9addc3=_0x4ea5c9['type']==='orthographic'?_0x4ea5c9[_0x5e80ce(0x304)]/(0x2*Math[_0x5e80ce(0x4bf)](0x2d*DEGREE_TO_RADIAN/0x2)):_0x4ccbf8,_0x42436c=normalizeVector$1(subtractVector(this['cameraState']['position'],this[_0x5e80ce(0x3c6)]['target']));this[_0x5e80ce(0x3c6)]['position']=addVector(this[_0x5e80ce(0x3c6)]['target'],scaleVector(_0x42436c,_0x9addc3)),this[_0x5e80ce(0x3c6)][_0x5e80ce(0x395)]={'type':_0xa31658,'fovYDegrees':0x2d,'near':_0x4ea5c9['near'],'far':_0x4ea5c9[_0x5e80ce(0x32b)]};}[_0x328247(0x38e)](_0x4b9e7b,_0x58b41f){const _0x58050d=_0x328247;let _0x2d598a=subtractVector(this['cameraState'][_0x58050d(0x2b1)],this[_0x58050d(0x3c6)][_0x58050d(0x181)]),_0x243a35=Math[_0x58050d(0x24d)](..._0x2d598a);if(_0x243a35===0x0)return;let _0x21c60a=Math[_0x58050d(0x263)](_0x2d598a[0x0],_0x2d598a[0x2])-_0x4b9e7b*this['rotateSpeed'],_0x4fe36c=clamp$1(Math['asin'](_0x2d598a[0x1]/_0x243a35)+_0x58b41f*this[_0x58050d(0x2cd)],this[_0x58050d(0x380)],this[_0x58050d(0x1ca)]),_0x27d0f2=Math[_0x58050d(0x2b4)](_0x4fe36c)*_0x243a35;this[_0x58050d(0x3c6)][_0x58050d(0x2b1)]=addVector(this['cameraState'][_0x58050d(0x181)],[Math[_0x58050d(0x322)](_0x21c60a)*_0x27d0f2,Math[_0x58050d(0x322)](_0x4fe36c)*_0x243a35,Math[_0x58050d(0x2b4)](_0x21c60a)*_0x27d0f2]);}[_0x328247(0x41f)](_0xaab3ab,_0x49653f,_0x51c70f){const _0x9371d5=_0x328247;if(!(_0x51c70f>0x0))return;let _0x1d4e3e=normalizeVector$1(subtractVector(this[_0x9371d5(0x3c6)][_0x9371d5(0x181)],this[_0x9371d5(0x3c6)][_0x9371d5(0x2b1)])),_0x27eda7=normalizeVector$1(crossVector$1(_0x1d4e3e,this[_0x9371d5(0x3c6)]['up'])),_0x50243f=normalizeVector$1(crossVector$1(_0x27eda7,_0x1d4e3e)),_0x4c361a=Math[_0x9371d5(0x24d)](...subtractVector(this[_0x9371d5(0x3c6)]['position'],this[_0x9371d5(0x3c6)]['target'])),_0x15caca=(this[_0x9371d5(0x3c6)]['projection'][_0x9371d5(0x2cb)]===_0x9371d5(0x17e)?this[_0x9371d5(0x3c6)][_0x9371d5(0x395)]['height']:0x2*_0x4c361a*Math[_0x9371d5(0x4bf)](this['cameraState'][_0x9371d5(0x395)]['fovYDegrees']*DEGREE_TO_RADIAN/0x2))/_0x51c70f*this[_0x9371d5(0x286)],_0x498a59=addVector(scaleVector(_0x27eda7,-_0xaab3ab*_0x15caca),scaleVector(_0x50243f,_0x49653f*_0x15caca));this[_0x9371d5(0x3c6)]['position']=addVector(this[_0x9371d5(0x3c6)][_0x9371d5(0x2b1)],_0x498a59),this[_0x9371d5(0x3c6)]['target']=addVector(this[_0x9371d5(0x3c6)][_0x9371d5(0x181)],_0x498a59);}[_0x328247(0x237)](_0x5537f){const _0x1cdfa6=_0x328247;let _0xdcf414=Math[_0x1cdfa6(0x46f)](_0x5537f*this[_0x1cdfa6(0x3e4)]);if(this[_0x1cdfa6(0x3c6)]['projection'][_0x1cdfa6(0x2cb)]===_0x1cdfa6(0x17e)){this[_0x1cdfa6(0x3c6)][_0x1cdfa6(0x395)]={...this['cameraState'][_0x1cdfa6(0x395)],'height':Math[_0x1cdfa6(0x4b3)](this[_0x1cdfa6(0x340)],this['cameraState'][_0x1cdfa6(0x395)][_0x1cdfa6(0x304)]*_0xdcf414)};return;}let _0xe313af=subtractVector(this[_0x1cdfa6(0x3c6)][_0x1cdfa6(0x2b1)],this[_0x1cdfa6(0x3c6)][_0x1cdfa6(0x181)]),_0x431f3c=clamp$1(Math[_0x1cdfa6(0x24d)](..._0xe313af)*_0xdcf414,this[_0x1cdfa6(0x340)],this[_0x1cdfa6(0x2f0)]);this[_0x1cdfa6(0x3c6)]['position']=addVector(this[_0x1cdfa6(0x3c6)]['target'],scaleVector(normalizeVector$1(_0xe313af),_0x431f3c));}[_0x328247(0x21a)](){const _0xee67f3=_0x328247;let _0x4e0170=this[_0xee67f3(0x3c6)][_0xee67f3(0x395)];return _0x4e0170[_0xee67f3(0x2cb)]==='perspective'?createPerspectiveMatrix(_0x4e0170[_0xee67f3(0x403)]*DEGREE_TO_RADIAN,this['aspect'],_0x4e0170['near'],_0x4e0170['far']):createOrthographicMatrix(_0x4e0170[_0xee67f3(0x304)],this[_0xee67f3(0x24a)],_0x4e0170['near'],_0x4e0170[_0xee67f3(0x32b)]);}};const isMissingValue=(_0x1f00e7,_0x6c8c05)=>Number[_0x328247(0x447)](_0x1f00e7)||_0x6c8c05!==void 0x0&&_0x1f00e7===_0x6c8c05,axisValueToNormalized=(_0x5c2b40,_0x97438b)=>_0x5c2b40['start']===_0x5c2b40[_0x328247(0x24b)]?0x0:(_0x97438b-_0x5c2b40[_0x328247(0x4b1)])/(_0x5c2b40[_0x328247(0x24b)]-_0x5c2b40[_0x328247(0x4b1)]),validateProfile=_0x3eecd2=>{const _0x21c2bb=_0x328247;if(!_0x3eecd2['id'])throw Error(_0x21c2bb(0x329));if(_0x3eecd2[_0x21c2bb(0x1c2)][_0x21c2bb(0x34f)]<0x4||_0x3eecd2['path'][_0x21c2bb(0x34f)]%0x2!=0x0)throw Error(_0x21c2bb(0x3cb)+_0x3eecd2['id']+_0x21c2bb(0x3a9));if(_0x3eecd2[_0x21c2bb(0x3fe)][_0x21c2bb(0x34f)]<0x2)throw Error(_0x21c2bb(0x3cb)+_0x3eecd2['id']+_0x21c2bb(0x1b0));let _0xc0b013=_0x3eecd2[_0x21c2bb(0x1c2)][_0x21c2bb(0x34f)]/0x2;if(_0x3eecd2[_0x21c2bb(0x3b8)][_0x21c2bb(0x34f)]!==_0xc0b013*_0x3eecd2[_0x21c2bb(0x3fe)]['length'])throw Error(_0x21c2bb(0x3cb)+_0x3eecd2['id']+_0x21c2bb(0x35a));if(_0x3eecd2[_0x21c2bb(0x321)]!==void 0x0&&(!(_0x3eecd2[_0x21c2bb(0x321)]>=0x0&&_0x3eecd2[_0x21c2bb(0x321)]<=0x1)||!Number['isFinite'](_0x3eecd2[_0x21c2bb(0x321)])))throw Error(_0x21c2bb(0x3cb)+_0x3eecd2['id']+'\x20的\x20opacity\x20必须位于\x200\x20到\x201。');for(let _0x130f5f of _0x3eecd2[_0x21c2bb(0x1c2)])if(!Number[_0x21c2bb(0x410)](_0x130f5f))throw Error('路线剖面\x20'+_0x3eecd2['id']+_0x21c2bb(0x2de));for(let _0xc11feb of _0x3eecd2['heights'])if(!Number[_0x21c2bb(0x410)](_0xc11feb))throw Error(_0x21c2bb(0x3cb)+_0x3eecd2['id']+_0x21c2bb(0x167));return _0xc0b013;},createPositions=(_0x392dee,_0x1ab774,_0x4076b9)=>{const _0x5d5567=_0x328247;let _0x14fdec=new Float32Array(_0x1ab774*_0x392dee[_0x5d5567(0x3fe)]['length']*0x3);for(let _0x955203=0x0;_0x955203<_0x392dee['heights'][_0x5d5567(0x34f)];_0x955203+=0x1)for(let _0x560570=0x0;_0x560570<_0x1ab774;_0x560570+=0x1){let _0x13738f=(_0x955203*_0x1ab774+_0x560570)*0x3;_0x14fdec[_0x13738f]=axisValueToNormalized(_0x4076b9[_0x5d5567(0x3c7)],_0x392dee[_0x5d5567(0x1c2)][_0x560570*0x2]),_0x14fdec[_0x13738f+0x1]=axisValueToNormalized(_0x4076b9[_0x5d5567(0x2fa)],_0x392dee[_0x5d5567(0x3fe)][_0x955203]),_0x14fdec[_0x13738f+0x2]=axisValueToNormalized(_0x4076b9[_0x5d5567(0x1d5)],_0x392dee[_0x5d5567(0x1c2)][_0x560570*0x2+0x1]);}return _0x14fdec;},createValues=_0xc6a43c=>{const _0x5e1a5c=_0x328247;let _0x521c9c=new Float32Array(_0xc6a43c[_0x5e1a5c(0x3b8)][_0x5e1a5c(0x34f)]);for(let _0x4fec14=0x0;_0x4fec14<_0xc6a43c[_0x5e1a5c(0x3b8)]['length'];_0x4fec14+=0x1){let _0x4fe117=_0xc6a43c[_0x5e1a5c(0x3b8)][_0x4fec14];_0x521c9c[_0x4fec14]=isMissingValue(_0x4fe117,_0xc6a43c[_0x5e1a5c(0x187)])?NaN:_0x4fe117;}return _0x521c9c;},createIndices=(_0x5a4b3f,_0x38fda2)=>{let _0x5e2112=new Uint32Array((_0x5a4b3f-0x1)*(_0x38fda2-0x1)*0x6),_0x584272=0x0;for(let _0x330ee2=0x0;_0x330ee2<_0x38fda2-0x1;_0x330ee2+=0x1)for(let _0x290550=0x0;_0x290550<_0x5a4b3f-0x1;_0x290550+=0x1){let _0x3b0456=_0x330ee2*_0x5a4b3f+_0x290550,_0x2fc267=_0x3b0456+0x1,_0x15d6de=_0x3b0456+_0x5a4b3f,_0x278452=_0x15d6de+0x1;_0x5e2112[_0x584272]=_0x3b0456,_0x5e2112[_0x584272+0x1]=_0x2fc267,_0x5e2112[_0x584272+0x2]=_0x15d6de,_0x5e2112[_0x584272+0x3]=_0x15d6de,_0x5e2112[_0x584272+0x4]=_0x2fc267,_0x5e2112[_0x584272+0x5]=_0x278452,_0x584272+=0x6;}return _0x5e2112;},buildVolumeRouteProfileMesh=(_0x548c18,_0x589f2f)=>{const _0x85e3df=_0x328247;let _0x4687e4=validateProfile(_0x548c18);return{'id':_0x548c18['id'],'positions':createPositions(_0x548c18,_0x4687e4,_0x589f2f),'values':createValues(_0x548c18),'indices':createIndices(_0x4687e4,_0x548c18[_0x85e3df(0x3fe)][_0x85e3df(0x34f)]),'opacity':_0x548c18[_0x85e3df(0x321)]??0x1,'depthMode':_0x548c18[_0x85e3df(0x199)]??'scene','revision':_0x548c18[_0x85e3df(0x2ee)]};};var volumeRaymarch_default=_0x328247(0x314),sceneMesh_default=_0x328247(0x38a),volumeSlice_default=_0x328247(0x27e);const validateMetadata=_0x5186b0=>{const _0x2fb67f=_0x328247;if([_0x5186b0[_0x2fb67f(0x3c7)]['count'],_0x5186b0[_0x2fb67f(0x2fa)][_0x2fb67f(0x1c1)],_0x5186b0[_0x2fb67f(0x1d5)]['count'],_0x5186b0[_0x2fb67f(0x499)],_0x5186b0[_0x2fb67f(0x27a)],_0x5186b0[_0x2fb67f(0x3f4)]][_0x2fb67f(0x3dd)](_0x4319b2=>!Number[_0x2fb67f(0x474)](_0x4319b2)||_0x4319b2<=0x0))throw Error(_0x2fb67f(0x195));if(_0x5186b0[_0x2fb67f(0x1e3)]!==0x1)throw Error('WebGPU\x20volume\x20bricks\x20require\x20halo\x201.\x20WebGPU\x20体积砖块要求\x20halo\x20为\x201。');},getBrickCount=_0x2da943=>[Math[_0x328247(0x22e)](_0x2da943[_0x328247(0x3c7)][_0x328247(0x1c1)]/_0x2da943[_0x328247(0x499)]),Math[_0x328247(0x22e)](_0x2da943[_0x328247(0x2fa)]['count']/_0x2da943['brickHeight']),Math[_0x328247(0x22e)](_0x2da943['zAxis'][_0x328247(0x1c1)]/_0x2da943[_0x328247(0x3f4)])],getLogicalBrickCoordinate=(_0x4e6b47,_0x2adb5c)=>{const _0x1a7d64=_0x328247;let _0x7b85ab=_0x2adb5c[0x0]*_0x2adb5c[0x1],_0x6b57c0=Math[_0x1a7d64(0x4a3)](_0x4e6b47/_0x7b85ab),_0x338d51=_0x4e6b47-_0x6b57c0*_0x7b85ab,_0x4059ea=Math[_0x1a7d64(0x4a3)](_0x338d51/_0x2adb5c[0x0]);return[_0x338d51-_0x4059ea*_0x2adb5c[0x0],_0x4059ea,_0x6b57c0];},analyzeBrickOccupancy=(_0x320326,_0x1061ee,_0x4fb8f5)=>{const _0xbb0788=_0x328247;let _0x23897d=_0x1061ee[_0xbb0788(0x499)]+0x2,_0x167d98=_0x1061ee[_0xbb0788(0x27a)]+0x2,_0x3dddd1=getLogicalBrickCoordinate(_0x320326[_0xbb0788(0x23a)],_0x4fb8f5),_0x365e1c=Math[_0xbb0788(0x4ab)](_0x1061ee[_0xbb0788(0x499)],_0x1061ee[_0xbb0788(0x3c7)][_0xbb0788(0x1c1)]-_0x3dddd1[0x0]*_0x1061ee[_0xbb0788(0x499)]),_0x3f3f10=Math[_0xbb0788(0x4ab)](_0x1061ee[_0xbb0788(0x27a)],_0x1061ee[_0xbb0788(0x2fa)][_0xbb0788(0x1c1)]-_0x3dddd1[0x1]*_0x1061ee[_0xbb0788(0x27a)]),_0x5eeb22=Math[_0xbb0788(0x4ab)](_0x1061ee[_0xbb0788(0x3f4)],_0x1061ee[_0xbb0788(0x1d5)]['count']-_0x3dddd1[0x2]*_0x1061ee[_0xbb0788(0x3f4)]);for(let _0x2215f6=0x0;_0x2215f6<_0x5eeb22;_0x2215f6+=0x1)for(let _0x5f02e5=0x0;_0x5f02e5<_0x3f3f10;_0x5f02e5+=0x1){let _0x1d44d1=((_0x2215f6+0x1)*_0x167d98+_0x5f02e5+0x1)*_0x23897d+0x1;for(let _0x87d589=0x0;_0x87d589<_0x365e1c;_0x87d589+=0x1){let _0x32cd02=_0x320326[_0xbb0788(0x3b8)][_0x1d44d1+_0x87d589];if(_0x32cd02===_0x32cd02&&(_0x1061ee[_0xbb0788(0x187)]===void 0x0||_0x32cd02!==_0x1061ee[_0xbb0788(0x187)]))return{'occupied':!0x0,'coreSampleCount':_0x365e1c*_0x3f3f10*_0x5eeb22};}}return{'occupied':!0x1,'coreSampleCount':_0x365e1c*_0x3f3f10*_0x5eeb22};},findAtlasLayout=(_0x109568,_0x3202c5,_0x3b7f25,_0x595374,_0x30156b)=>{const _0x43a8bf=_0x328247;if(_0x109568<=0x0)return null;let _0x1c71ca=Math[_0x43a8bf(0x4a3)](_0x30156b/_0x3202c5),_0x51c485=Math[_0x43a8bf(0x4a3)](_0x30156b/_0x3b7f25),_0xd07334=Math[_0x43a8bf(0x4a3)](_0x30156b/_0x595374),_0x271b67=null;for(let _0x4beaba=0x1;_0x4beaba<=_0x1c71ca;_0x4beaba+=0x1)for(let _0x4c3a12=0x1;_0x4c3a12<=_0x51c485;_0x4c3a12+=0x1){let _0x472c4a=Math['min'](_0xd07334,Math[_0x43a8bf(0x4a3)](_0x109568/(_0x4beaba*_0x4c3a12))),_0x1934e7=_0x4beaba*_0x4c3a12*_0x472c4a;_0x472c4a<=0x0||_0x1934e7<=(_0x271b67?.[_0x43a8bf(0x34a)]??0x0)||(_0x271b67={'slotCountX':_0x4beaba,'slotCountY':_0x4c3a12,'slotCountZ':_0x472c4a,'slotCount':_0x1934e7,'textureCount':0x1,'capacity':_0x1934e7});}return _0x271b67;},getSlotCoordinate=(_0x119310,_0x1bc87b)=>{const _0x42adcd=_0x328247;let _0x13e769=_0x1bc87b[_0x42adcd(0x2a7)]*_0x1bc87b[_0x42adcd(0x32e)],_0x3226a2=Math[_0x42adcd(0x4a3)](_0x119310/_0x13e769),_0x1690fd=_0x119310-_0x3226a2*_0x13e769,_0x251353=Math[_0x42adcd(0x4a3)](_0x1690fd/_0x1bc87b[_0x42adcd(0x2a7)]);return[_0x1690fd-_0x251353*_0x1bc87b[_0x42adcd(0x2a7)],_0x251353,_0x3226a2];},findLeastRecentlyUsed=(_0x4fdc1a,_0x8858b6)=>{const _0x2e60ca=_0x328247;let _0x39ba6f=null;for(let _0x502419 of _0x4fdc1a)_0x502419[_0x2e60ca(0x1cc)]!==_0x8858b6&&(!_0x39ba6f||_0x502419['lastUsedFrame']<_0x39ba6f['lastUsedFrame'])&&(_0x39ba6f=_0x502419);return _0x39ba6f;},createPaddedTextureData=(_0x18e0c5,_0x19fde6,_0x288f56,_0x54a4fc)=>{const _0x6a57c5=_0x328247;let _0x23ee86=_0x19fde6*Float32Array[_0x6a57c5(0x490)],_0xa4f86e=Math[_0x6a57c5(0x22e)](_0x23ee86/0x100)*0x100;if(_0x23ee86===_0xa4f86e)return{'values':_0x18e0c5,'bytesPerRow':_0xa4f86e};let _0xda479a=_0xa4f86e/Float32Array['BYTES_PER_ELEMENT'],_0x5b7ca8=new Float32Array(_0xda479a*_0x288f56*_0x54a4fc);for(let _0x455f7e=0x0;_0x455f7e<_0x54a4fc;_0x455f7e+=0x1)for(let _0x5921e9=0x0;_0x5921e9<_0x288f56;_0x5921e9+=0x1){let _0x691596=(_0x455f7e*_0x288f56+_0x5921e9)*_0x19fde6,_0x473a26=(_0x455f7e*_0x288f56+_0x5921e9)*_0xda479a;_0x5b7ca8['set'](_0x18e0c5[_0x6a57c5(0x34b)](_0x691596,_0x691596+_0x19fde6),_0x473a26);}return{'values':_0x5b7ca8,'bytesPerRow':_0xa4f86e};};var WebgpuBrickAtlas=class{['device'];[_0x328247(0x363)];[_0x328247(0x4be)];['metadata']=null;[_0x328247(0x324)]=null;[_0x328247(0x3f3)]=[];[_0x328247(0x327)]=[];['pageTableBuffer']=null;[_0x328247(0x233)]=new Uint32Array();[_0x328247(0x172)]=new Map();[_0x328247(0x373)]=new Map();[_0x328247(0x367)]=0x0;constructor(_0x5bd871,_0x336f38=0x20000000,_0x5c7c03=_0x336f38){const _0x598484=_0x328247;if(!Number[_0x598484(0x410)](_0x336f38)||!Number[_0x598484(0x410)](_0x5c7c03)||_0x336f38<=0x0||_0x5c7c03<=0x0)throw Error(_0x598484(0x226));this[_0x598484(0x4af)]=_0x5bd871,this[_0x598484(0x363)]=Math[_0x598484(0x4ab)](_0x336f38,_0x5c7c03),this[_0x598484(0x4be)]=_0x5c7c03;}get[_0x328247(0x16c)](){const _0x2ac538=_0x328247;if(!this['metadata'])throw Error(_0x2ac538(0x350));return this['metadata'];}get[_0x328247(0x334)](){const _0x57a490=_0x328247;if(!this[_0x57a490(0x324)])throw Error(_0x57a490(0x4c7));return this[_0x57a490(0x324)];}get[_0x328247(0x40e)](){const _0x3aad85=_0x328247;return this[_0x3aad85(0x172)]['size'];}get[_0x328247(0x2f5)](){const _0x4cd548=_0x328247;if(!this[_0x4cd548(0x36e)]||!this[_0x4cd548(0x324)])return{'logicalBrickCount':0x0,'atlasCapacity':0x0,'gpuBytes':0x0,'memoryLimitBytes':this['memoryHardLimitBytes'],'budgetLimited':!0x1,'skippedSamples':0x0,'skippedCells':0x0};let _0xd1bd2c=getBrickCount(this['metadata']),_0x4e38cf=_0xd1bd2c[0x0]*_0xd1bd2c[0x1]*_0xd1bd2c[0x2],_0x39f511=this[_0x4cd548(0x36e)][_0x4cd548(0x499)]+0x2,_0x345dbf=this[_0x4cd548(0x36e)][_0x4cd548(0x27a)]+0x2,_0x46a313=this[_0x4cd548(0x36e)][_0x4cd548(0x3f4)]+0x2,_0x13f664=_0x39f511*_0x345dbf*_0x46a313*this[_0x4cd548(0x324)]['capacity']*Float32Array[_0x4cd548(0x490)],_0x4fa371=_0x4e38cf*0x4*Uint32Array[_0x4cd548(0x490)],_0x1abfd7=0x0,_0x13e810=0x0;for(let _0x47b145 of this['residentByLogicalIndex'][_0x4cd548(0x3b8)]())_0x47b145[_0x4cd548(0x19b)]||(_0x13e810+=0x1,_0x1abfd7+=_0x47b145[_0x4cd548(0x475)]);return{'logicalBrickCount':_0x4e38cf,'atlasCapacity':this[_0x4cd548(0x324)]['capacity'],'gpuBytes':_0x13f664+_0x4fa371,'memoryLimitBytes':this[_0x4cd548(0x4be)],'budgetLimited':this[_0x4cd548(0x324)][_0x4cd548(0x290)]<_0x4e38cf,'skippedSamples':_0x1abfd7,'skippedCells':_0x13e810};}['configure'](_0x158cde){const _0x285971=_0x328247;validateMetadata(_0x158cde);let _0x523961=_0x158cde[_0x285971(0x499)]+0x2,_0x403527=_0x158cde[_0x285971(0x27a)]+0x2,_0x2ea6b6=_0x158cde['brickDepth']+0x2,_0x18d872=getBrickCount(_0x158cde),_0x44676a=_0x18d872[0x0]*_0x18d872[0x1]*_0x18d872[0x2],_0xc6f5bb=_0x44676a*0x4*Uint32Array[_0x285971(0x490)],_0x3a89b0=Math[_0x285971(0x4ab)](this[_0x285971(0x363)],this[_0x285971(0x4be)])-_0xc6f5bb;if(_0x3a89b0<=0x0)throw Error(_0x285971(0x3dc));let _0x4674dc=_0x523961*_0x403527*_0x2ea6b6*Float32Array[_0x285971(0x490)],_0x291385=Math['min'](_0x44676a,Math[_0x285971(0x4a3)](_0x3a89b0/_0x4674dc)),_0x4e9612=Math[_0x285971(0x4b3)](0x1,Math['floor'](0x4000000/_0x4674dc)),_0x7868dd=Math[_0x285971(0x4ab)](0x8,Math[_0x285971(0x4b3)](0x1,Math[_0x285971(0x22e)](_0x291385/_0x4e9612))),_0x505ba3=findAtlasLayout(Math[_0x285971(0x4b3)](0x1,Math[_0x285971(0x4a3)](_0x291385/_0x7868dd)),_0x523961,_0x403527,_0x2ea6b6,this['device'][_0x285971(0x240)]['maxTextureDimension3D']);if(!_0x505ba3)throw Error(_0x285971(0x21f));let _0x3d7186={..._0x505ba3,'textureCount':_0x7868dd,'capacity':_0x505ba3['slotCount']*_0x7868dd},_0x34fe8e=_0x523961*_0x3d7186[_0x285971(0x2a7)],_0x53f2ae=_0x403527*_0x3d7186['slotCountY'],_0x48e868=_0x2ea6b6*_0x3d7186['slotCountZ'],_0xef37f3=Array[_0x285971(0x366)]({'length':_0x7868dd},(_0x45f829,_0x545118)=>this[_0x285971(0x4af)][_0x285971(0x345)]({'label':_0x285971(0x3b1)+_0x545118,'size':[_0x34fe8e,_0x53f2ae,_0x48e868],'dimension':'3d','format':_0x285971(0x4d0),'usage':GPUTextureUsage[_0x285971(0x461)]|GPUTextureUsage[_0x285971(0x169)]|GPUTextureUsage[_0x285971(0x4c8)]})),_0x95b44e=this[_0x285971(0x4af)]['createBuffer']({'label':_0x285971(0x49d),'size':Math[_0x285971(0x4b3)](0x10,_0xc6f5bb),'usage':GPUBufferUsage['STORAGE']|GPUBufferUsage['COPY_DST']});this[_0x285971(0x38c)](),this[_0x285971(0x36e)]={..._0x158cde},this[_0x285971(0x324)]=_0x3d7186,this['atlasTextures']=_0xef37f3,this[_0x285971(0x327)]=_0xef37f3[_0x285971(0x352)](_0x3ecac9=>_0x3ecac9[_0x285971(0x3c3)]({'dimension':'3d'})),this['pageTableBuffer']=_0x95b44e,this[_0x285971(0x233)]=new Uint32Array(_0x44676a*0x4),this[_0x285971(0x4af)]['queue'][_0x285971(0x41b)](_0x95b44e,0x0,this[_0x285971(0x233)]);for(let _0x2b8972 of _0xef37f3)this[_0x285971(0x218)](_0x2b8972,_0x34fe8e,_0x53f2ae,_0x48e868);this['generation']+=0x1;}[_0x328247(0x4a0)](_0x40cb35,_0x1fed86){const _0x3e8acf=_0x328247;let _0x496c01=this[_0x3e8acf(0x16c)],_0x3afac9=this[_0x3e8acf(0x334)],_0x21e002=getBrickCount(_0x496c01),_0x244581=_0x21e002[0x0]*_0x21e002[0x1]*_0x21e002[0x2];if(!Number['isInteger'](_0x40cb35[_0x3e8acf(0x23a)])||_0x40cb35[_0x3e8acf(0x23a)]<0x0||_0x40cb35['logicalIndex']>=_0x244581)throw Error(_0x3e8acf(0x320)+_0x40cb35['logicalIndex']+_0x3e8acf(0x426));let _0x2c663a=_0x496c01['brickWidth']+0x2,_0x3f7094=_0x496c01[_0x3e8acf(0x27a)]+0x2,_0xd51c46=_0x496c01[_0x3e8acf(0x3f4)]+0x2,_0x1f0380=_0x2c663a*_0x3f7094*_0xd51c46;if(_0x40cb35[_0x3e8acf(0x3b8)][_0x3e8acf(0x34f)]!==_0x1f0380)throw Error('Volume\x20brick\x20'+_0x40cb35[_0x3e8acf(0x23a)]+_0x3e8acf(0x36b)+_0x1f0380+_0x3e8acf(0x39d)+_0x40cb35[_0x3e8acf(0x3b8)]['length']+_0x3e8acf(0x460));let _0x14f5c2=this[_0x3e8acf(0x172)][_0x3e8acf(0x177)](_0x40cb35[_0x3e8acf(0x23a)])??this[_0x3e8acf(0x18d)](_0x40cb35[_0x3e8acf(0x23a)],_0x1fed86),_0x10a77a=analyzeBrickOccupancy(_0x40cb35,_0x496c01,_0x21e002),_0x41aee8=Math[_0x3e8acf(0x4a3)](_0x14f5c2[_0x3e8acf(0x170)]/_0x3afac9[_0x3e8acf(0x34a)]),_0x2e06c1=getSlotCoordinate(_0x14f5c2[_0x3e8acf(0x170)]%_0x3afac9[_0x3e8acf(0x34a)],_0x3afac9),_0x36c9a1=createPaddedTextureData(new Float32Array(_0x40cb35[_0x3e8acf(0x3b8)]),_0x2c663a,_0x3f7094,_0xd51c46);return _0x14f5c2['lastUsedFrame']=_0x1fed86,_0x14f5c2[_0x3e8acf(0x367)]=this[_0x3e8acf(0x367)],_0x14f5c2[_0x3e8acf(0x19b)]=_0x10a77a[_0x3e8acf(0x19b)],_0x14f5c2[_0x3e8acf(0x475)]=_0x10a77a[_0x3e8acf(0x3ad)],this[_0x3e8acf(0x282)](_0x14f5c2),{'values':_0x36c9a1['values'],'bytesPerRow':_0x36c9a1['bytesPerRow'],'rowsPerImage':_0x3f7094,'origin':{'x':_0x2e06c1[0x0]*_0x2c663a,'y':_0x2e06c1[0x1]*_0x3f7094,'z':_0x2e06c1[0x2]*_0xd51c46},'extent':[_0x2c663a,_0x3f7094,_0xd51c46],'atlasIndex':_0x41aee8};}['encodePreparedBrickUpload'](_0x427f11,_0x22c57d,_0x1321fa,_0x5c3740){const _0x2266b8=_0x328247;_0x427f11[_0x2266b8(0x469)]({'buffer':_0x22c57d,'offset':_0x1321fa,'bytesPerRow':_0x5c3740[_0x2266b8(0x381)],'rowsPerImage':_0x5c3740[_0x2266b8(0x315)]},{'texture':this[_0x2266b8(0x208)](_0x5c3740[_0x2266b8(0x1b7)]),'origin':_0x5c3740[_0x2266b8(0x331)]},_0x5c3740[_0x2266b8(0x2a6)]);}[_0x328247(0x165)](_0x33528e,_0x36732b){const _0x36a284=_0x328247;for(let _0x484f33 of _0x33528e){let _0x9bc625=this[_0x36a284(0x172)][_0x36a284(0x177)](_0x484f33);_0x9bc625&&(_0x9bc625[_0x36a284(0x1cc)]=_0x36732b);}}[_0x328247(0x307)](_0x3c9f44,_0xccd216){const _0x3ccbd0=_0x328247;if(this[_0x3ccbd0(0x327)][_0x3ccbd0(0x34f)]===0x0||!this[_0x3ccbd0(0x26d)])throw Error(_0x3ccbd0(0x36d));return this[_0x3ccbd0(0x4af)][_0x3ccbd0(0x307)]({'label':_0x3ccbd0(0x196),'layout':_0x3c9f44,'entries':[...Array['from']({'length':0x8},(_0x2d6f08,_0x244768)=>({'binding':_0x244768,'resource':this[_0x3ccbd0(0x327)][_0x244768]??this['atlasViews'][0x0]})),{'binding':0x8,'resource':{'buffer':this[_0x3ccbd0(0x26d)]}},{'binding':0x9,'resource':{'buffer':_0xccd216}}]});}[_0x328247(0x179)](){const _0x2f9364=_0x328247;this['destroyResources'](),this[_0x2f9364(0x36e)]=null,this[_0x2f9364(0x324)]=null,this[_0x2f9364(0x233)]=new Uint32Array();}['acquireSlot'](_0xf3ba83,_0x21f261){const _0x5ecd91=_0x328247;let _0x5462f8=this['atlasLayout'],_0x450d60=this['residentBySlotIndex']['size'];if(_0x450d60>=_0x5462f8[_0x5ecd91(0x290)]){let _0x412527=findLeastRecentlyUsed(this[_0x5ecd91(0x373)][_0x5ecd91(0x3b8)](),_0x21f261);if(!_0x412527)throw Error(_0x5ecd91(0x1d6));_0x450d60=_0x412527[_0x5ecd91(0x170)],this['clearPageEntry'](_0x412527[_0x5ecd91(0x23a)]),this[_0x5ecd91(0x172)][_0x5ecd91(0x434)](_0x412527['logicalIndex']),this[_0x5ecd91(0x373)]['delete'](_0x450d60);}let _0x3889eb={'logicalIndex':_0xf3ba83,'slotIndex':_0x450d60,'lastUsedFrame':_0x21f261,'generation':this[_0x5ecd91(0x367)],'occupied':!0x1,'skippedSampleCount':0x0};return this['residentByLogicalIndex']['set'](_0xf3ba83,_0x3889eb),this[_0x5ecd91(0x373)][_0x5ecd91(0x476)](_0x450d60,_0x3889eb),_0x3889eb;}['writePageEntry'](_0x47ec31){const _0x2b5e21=_0x328247;let _0x57190f=_0x47ec31[_0x2b5e21(0x23a)]*0x4;this[_0x2b5e21(0x233)][_0x57190f]=_0x47ec31['slotIndex']%this[_0x2b5e21(0x334)]['slotCount']+0x1,this['pageTableValues'][_0x57190f+0x1]=_0x47ec31[_0x2b5e21(0x367)],this[_0x2b5e21(0x233)][_0x57190f+0x2]=+!!_0x47ec31[_0x2b5e21(0x19b)],this[_0x2b5e21(0x233)][_0x57190f+0x3]=Math[_0x2b5e21(0x4a3)](_0x47ec31[_0x2b5e21(0x170)]/this[_0x2b5e21(0x334)][_0x2b5e21(0x34a)]),this[_0x2b5e21(0x4af)][_0x2b5e21(0x21d)][_0x2b5e21(0x41b)](this[_0x2b5e21(0x3e3)](),_0x57190f*Uint32Array[_0x2b5e21(0x490)],this['pageTableValues'],_0x57190f,0x4);}[_0x328247(0x31b)](_0x1f6d81){const _0x54129d=_0x328247;let _0x2a3eae=_0x1f6d81*0x4;this['pageTableValues'][_0x54129d(0x2e2)](0x0,_0x2a3eae,_0x2a3eae+0x4),this[_0x54129d(0x4af)][_0x54129d(0x21d)]['writeBuffer'](this[_0x54129d(0x3e3)](),_0x2a3eae*Uint32Array[_0x54129d(0x490)],this[_0x54129d(0x233)],_0x2a3eae,0x4);}[_0x328247(0x208)](_0x4d62cb){const _0x460d40=_0x328247;let _0x487579=this['atlasTextures'][_0x4d62cb];if(!_0x487579)throw Error(_0x460d40(0x464));return _0x487579;}[_0x328247(0x218)](_0x200466,_0x5a1805,_0x3e7f20,_0x54ce56){const _0x4ce545=_0x328247;let _0x2a5f3c=this['device'][_0x4ce545(0x37f)]({'label':_0x4ce545(0x4b8),'code':'\x0a@group(0)\x20@binding(0)\x20var\x20atlas:\x20texture_storage_3d<r32float,\x20write>;\x0a\x0a@compute\x20@workgroup_size(4,\x204,\x204)\x0afn\x20main(@builtin(global_invocation_id)\x20invocation:\x20vec3u)\x20{\x0a\x20\x20\x20\x20let\x20dimensions\x20=\x20textureDimensions(atlas);\x0a\x20\x20\x20\x20if\x20(all(invocation\x20<\x20dimensions))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20textureStore(atlas,\x20vec3i(invocation),\x20vec4f(0.0));\x0a\x20\x20\x20\x20}\x0a}\x0a'}),_0x186ec4=this['device'][_0x4ce545(0x198)]({'label':_0x4ce545(0x168),'layout':_0x4ce545(0x449),'compute':{'module':_0x2a5f3c,'entryPoint':'main'}}),_0xc052f=this['device'][_0x4ce545(0x307)]({'label':_0x4ce545(0x3da),'layout':_0x186ec4[_0x4ce545(0x4ad)](0x0),'entries':[{'binding':0x0,'resource':_0x200466[_0x4ce545(0x3c3)]({'dimension':'3d'})}]}),_0x4ec00b=this['device'][_0x4ce545(0x388)]({'label':_0x4ce545(0x29e)}),_0x51f6ef=_0x4ec00b['beginComputePass']({'label':_0x4ce545(0x2fc)});_0x51f6ef[_0x4ce545(0x4bd)](_0x186ec4),_0x51f6ef[_0x4ce545(0x421)](0x0,_0xc052f),_0x51f6ef[_0x4ce545(0x342)](Math[_0x4ce545(0x22e)](_0x5a1805/0x4),Math[_0x4ce545(0x22e)](_0x3e7f20/0x4),Math[_0x4ce545(0x22e)](_0x54ce56/0x4)),_0x51f6ef[_0x4ce545(0x24b)](),this[_0x4ce545(0x4af)][_0x4ce545(0x21d)]['submit']([_0x4ec00b[_0x4ce545(0x484)]()]);}['getPageTableBuffer'](){const _0x59a8ca=_0x328247;if(!this[_0x59a8ca(0x26d)])throw Error(_0x59a8ca(0x2ff));return this[_0x59a8ca(0x26d)];}[_0x328247(0x38c)](){const _0xb1f721=_0x328247;for(let _0x1a5ed2 of this['atlasTextures'])_0x1a5ed2[_0xb1f721(0x179)]();this[_0xb1f721(0x26d)]?.[_0xb1f721(0x179)](),this[_0xb1f721(0x3f3)]=[],this[_0xb1f721(0x327)]=[],this['pageTableBuffer']=null,this[_0xb1f721(0x172)][_0xb1f721(0x433)](),this[_0xb1f721(0x373)][_0xb1f721(0x433)]();}},WebgpuSceneAttachments=class{[_0x328247(0x4af)];[_0x328247(0x3fb)]=null;['depthView']=null;[_0x328247(0x25d)]=0x0;[_0x328247(0x304)]=0x0;constructor(_0x43c1c4){const _0x496f8c=_0x328247;this[_0x496f8c(0x4af)]=_0x43c1c4;}get[_0x328247(0x33b)](){const _0x4ca748=_0x328247;if(!this[_0x4ca748(0x31c)])throw Error(_0x4ca748(0x268));return this['depthView'];}[_0x328247(0x3c0)](_0x296661,_0x3a6dca){const _0x2b02ab=_0x328247;if(this[_0x2b02ab(0x25d)]===_0x296661&&this[_0x2b02ab(0x304)]===_0x3a6dca)return;let _0x59515a=this[_0x2b02ab(0x4af)][_0x2b02ab(0x345)]({'label':'volume\x20scene\x20depth','size':[_0x296661,_0x3a6dca],'format':_0x2b02ab(0x430),'usage':GPUTextureUsage['RENDER_ATTACHMENT']|GPUTextureUsage['TEXTURE_BINDING']}),_0x5cdbed=this[_0x2b02ab(0x3fb)];this['depthTexture']=_0x59515a,this[_0x2b02ab(0x31c)]=_0x59515a[_0x2b02ab(0x3c3)](),this[_0x2b02ab(0x25d)]=_0x296661,this[_0x2b02ab(0x304)]=_0x3a6dca,_0x5cdbed?.['destroy']();}['destroy'](){const _0x25d035=_0x328247;this[_0x25d035(0x3fb)]?.[_0x25d035(0x179)](),this[_0x25d035(0x3fb)]=null,this[_0x25d035(0x31c)]=null,this[_0x25d035(0x25d)]=0x0,this[_0x25d035(0x304)]=0x0;}},WebgpuSceneMeshResources=class{[_0x328247(0x4af)];[_0x328247(0x40f)]=[];constructor(_0x10764c){const _0x3bb50f=_0x328247;this[_0x3bb50f(0x4af)]=_0x10764c;}get[_0x328247(0x1c1)](){const _0x328b84=_0x328247;return this[_0x328b84(0x40f)]['length'];}[_0x328247(0x4aa)](_0x432802){const _0x4e951a=_0x328247;let _0x992a1=[];try{for(let _0xb39952 of _0x432802)_0x992a1[_0x4e951a(0x17b)](this[_0x4e951a(0x26a)](_0xb39952));}catch(_0x2e7017){for(let _0x566e62 of _0x992a1)_0x566e62[_0x4e951a(0x32a)][_0x4e951a(0x179)]();throw _0x2e7017;}this[_0x4e951a(0x38c)](),this[_0x4e951a(0x40f)]=_0x992a1;}[_0x328247(0x2b3)](_0x28b9bd,_0x3bc2d6,_0x2a1b9d){const _0x42399e=_0x328247;for(let _0x13397c of this['resources'])_0x13397c[_0x42399e(0x4b6)]!==_0x3bc2d6||_0x13397c[_0x42399e(0x199)]!==_0x2a1b9d||(_0x28b9bd[_0x42399e(0x3ed)](0x0,_0x13397c['buffer']),_0x28b9bd[_0x42399e(0x2b3)](_0x13397c[_0x42399e(0x409)]));}['destroy'](){this['destroyResources']();}[_0x328247(0x26a)](_0x2044cb){const _0x55bb33=_0x328247;if(_0x2044cb[_0x55bb33(0x2ac)][_0x55bb33(0x34f)]===0x0||_0x2044cb[_0x55bb33(0x2ac)][_0x55bb33(0x34f)]%0x7!=0x0)throw Error(_0x55bb33(0x1c4)+_0x2044cb['id']+_0x55bb33(0x203));let _0x358e24=new Float32Array(_0x2044cb['vertices']),_0x155220=this[_0x55bb33(0x4af)]['createBuffer']({'label':'volume\x20scene\x20mesh\x20'+_0x2044cb['id'],'size':_0x358e24[_0x55bb33(0x43d)],'usage':GPUBufferUsage[_0x55bb33(0x16b)]|GPUBufferUsage[_0x55bb33(0x169)]});return this[_0x55bb33(0x4af)][_0x55bb33(0x21d)][_0x55bb33(0x41b)](_0x155220,0x0,_0x358e24),{'id':_0x2044cb['id'],'topology':_0x2044cb['topology'],'depthMode':_0x2044cb[_0x55bb33(0x199)],'buffer':_0x155220,'vertexCount':_0x2044cb['vertices']['length']/0x7};}[_0x328247(0x38c)](){const _0xd2e79d=_0x328247;for(let _0x1aac20 of this['resources'])_0x1aac20[_0xd2e79d(0x32a)][_0xd2e79d(0x179)]();this['resources']=[];}},WebgpuSliceResources=class{[_0x328247(0x4af)];[_0x328247(0x324)];['resources']=[];[_0x328247(0x2a0)]=0x0;['resourceRebuildCount']=0x0;constructor(_0x37ddfe,_0x1e48b8){const _0x5d0b5b=_0x328247;this[_0x5d0b5b(0x4af)]=_0x37ddfe,this[_0x5d0b5b(0x324)]=_0x1e48b8;}get[_0x328247(0x1c1)](){const _0xc25f7=_0x328247;return this[_0xc25f7(0x40f)]['length'];}get[_0x328247(0x2f5)](){const _0x5b3cb7=_0x328247;return{'uniformUpdateCount':this['uniformUpdateCount'],'resourceRebuildCount':this[_0x5b3cb7(0x2a5)]};}[_0x328247(0x4aa)](_0x5907a0){const _0x205fd2=_0x328247;let _0x52c600=new Map(this[_0x205fd2(0x40f)][_0x205fd2(0x352)](_0x135d85=>[_0x135d85['id'],_0x135d85])),_0x392292=[],_0x97b749=new Set();try{for(let _0x437f15 of _0x5907a0){if(!_0x437f15[_0x205fd2(0x1e0)])continue;if(_0x97b749[_0x205fd2(0x497)](_0x437f15['id']))throw Error(_0x205fd2(0x3b6)+_0x437f15['id']+_0x205fd2(0x3f5));_0x97b749['add'](_0x437f15['id']);let _0x237a15=this[_0x205fd2(0x452)](_0x437f15),_0x33f898=_0x52c600[_0x205fd2(0x177)](_0x437f15['id']);if(!_0x33f898){_0x392292[_0x205fd2(0x17b)](this[_0x205fd2(0x26a)](_0x437f15,_0x237a15));continue;}_0x52c600['delete'](_0x437f15['id']),_0x33f898['depthMode']=_0x437f15[_0x205fd2(0x199)],this['valuesEqual'](_0x33f898['values'],_0x237a15)||(this['device'][_0x205fd2(0x21d)][_0x205fd2(0x41b)](_0x33f898[_0x205fd2(0x32a)],0x0,_0x237a15),_0x33f898['values']=_0x237a15,this[_0x205fd2(0x2a0)]+=0x1),_0x392292[_0x205fd2(0x17b)](_0x33f898);}}catch(_0xd64481){for(let _0x2c2857 of _0x392292)this[_0x205fd2(0x40f)][_0x205fd2(0x37b)](_0x2c2857)||_0x2c2857['buffer']['destroy']();throw _0xd64481;}for(let _0x2c8be9 of _0x52c600[_0x205fd2(0x3b8)]())_0x2c8be9['buffer'][_0x205fd2(0x179)]();this[_0x205fd2(0x40f)]=_0x392292;}[_0x328247(0x2b3)](_0xec5862,_0x19740d,_0x2eb8a1){const _0x2270d1=_0x328247;_0xec5862['setPipeline'](_0x19740d);for(let _0x5a90bd of this['resources'])_0x5a90bd[_0x2270d1(0x199)]===_0x2eb8a1&&(_0xec5862[_0x2270d1(0x421)](0x3,_0x5a90bd[_0x2270d1(0x283)]),_0xec5862[_0x2270d1(0x2b3)](0x1800));}[_0x328247(0x179)](){const _0x1777be=_0x328247;this[_0x1777be(0x38c)]();}[_0x328247(0x452)](_0xb7a96b){const _0x1fbb75=_0x328247;if(!Number[_0x1fbb75(0x410)](_0xb7a96b[_0x1fbb75(0x2b1)])||_0xb7a96b[_0x1fbb75(0x2b1)]<0x0||_0xb7a96b[_0x1fbb75(0x2b1)]>0x1)throw Error(_0x1fbb75(0x415)+_0xb7a96b['id']+_0x1fbb75(0x1f6));let _0x2ce9ce=_0xb7a96b[_0x1fbb75(0x171)]==='x'?0x0:_0xb7a96b[_0x1fbb75(0x171)]==='y'?0x1:0x2,_0x3c1c95=_0xb7a96b[_0x1fbb75(0x432)]??[0x0,0x0,0x0,0x0];if(_0x3c1c95[_0x1fbb75(0x3dd)](_0x39f68d=>!Number[_0x1fbb75(0x410)](_0x39f68d)||_0x39f68d<0x0||_0x39f68d>0x1))throw Error(_0x1fbb75(0x415)+_0xb7a96b['id']+_0x1fbb75(0x280));return new Float32Array([_0x2ce9ce,_0xb7a96b[_0x1fbb75(0x2b1)],_0xb7a96b[_0x1fbb75(0x321)]??0x1,0x0,..._0x3c1c95]);}[_0x328247(0x26a)](_0x5f1812,_0x419ed8){const _0x10f466=_0x328247;let _0x27456e=this[_0x10f466(0x4af)][_0x10f466(0x2c5)]({'label':_0x10f466(0x173)+_0x5f1812['id'],'size':0x20,'usage':GPUBufferUsage[_0x10f466(0x3e6)]|GPUBufferUsage[_0x10f466(0x169)]});this[_0x10f466(0x4af)]['queue'][_0x10f466(0x41b)](_0x27456e,0x0,_0x419ed8);let _0x2a570a=this[_0x10f466(0x4af)][_0x10f466(0x307)]({'layout':this['layout'],'entries':[{'binding':0x0,'resource':{'buffer':_0x27456e}}]});return this[_0x10f466(0x2a5)]+=0x1,{'id':_0x5f1812['id'],'depthMode':_0x5f1812[_0x10f466(0x199)],'buffer':_0x27456e,'bindGroup':_0x2a570a,'values':_0x419ed8};}[_0x328247(0x343)](_0x269c28,_0x4e5195){const _0x2aa337=_0x328247;for(let _0x5754da=0x0;_0x5754da<_0x269c28[_0x2aa337(0x34f)];_0x5754da+=0x1)if(_0x269c28[_0x5754da]!==_0x4e5195[_0x5754da])return!0x1;return!0x0;}[_0x328247(0x38c)](){const _0x304bec=_0x328247;for(let _0x5e8c0e of this['resources'])_0x5e8c0e[_0x304bec(0x32a)][_0x304bec(0x179)]();this[_0x304bec(0x40f)]=[];}};const createStorageBuffer=(_0x33624e,_0x2884ce,_0x6e1c79)=>{const _0x338875=_0x328247;let _0x4c15c1=_0x33624e[_0x338875(0x2c5)]({'label':_0x6e1c79,'size':Math[_0x338875(0x4b3)](0x4,_0x2884ce[_0x338875(0x43d)]),'usage':GPUBufferUsage[_0x338875(0x401)]|GPUBufferUsage[_0x338875(0x169)]});return _0x2884ce[_0x338875(0x43d)]>0x0&&_0x33624e[_0x338875(0x21d)]['writeBuffer'](_0x4c15c1,0x0,_0x2884ce),_0x4c15c1;},validateStops$1=(_0x46a00b,_0x48d4d1)=>{const _0x3896e7=_0x328247;if(_0x46a00b[_0x3896e7(0x34f)]===0x0||_0x48d4d1[_0x3896e7(0x34f)]===0x0)throw Error(_0x3896e7(0x431));for(let _0x16f50c=0x1;_0x16f50c<_0x46a00b['length'];_0x16f50c+=0x1)if(_0x46a00b[_0x16f50c]['value']<_0x46a00b[_0x16f50c-0x1]['value'])throw Error(_0x3896e7(0x333));for(let _0x502cb4=0x0;_0x502cb4<_0x48d4d1[_0x3896e7(0x34f)];_0x502cb4+=0x1){if(_0x48d4d1[_0x502cb4][_0x3896e7(0x321)]<0x0||_0x48d4d1[_0x502cb4][_0x3896e7(0x321)]>0x1)throw Error(_0x3896e7(0x1e2));if(_0x502cb4>0x0&&_0x48d4d1[_0x502cb4][_0x3896e7(0x287)]<_0x48d4d1[_0x502cb4-0x1][_0x3896e7(0x287)])throw Error(_0x3896e7(0x293));}};var WebgpuTransferResources=class{['device'];['colorValuesBuffer']=null;[_0x328247(0x29c)]=null;[_0x328247(0x33e)]=null;['opacityBuffer']=null;[_0x328247(0x39f)]=0x0;[_0x328247(0x3e9)]=0x0;constructor(_0x363af0){const _0x131c65=_0x328247;this[_0x131c65(0x4af)]=_0x363af0;}get[_0x328247(0x2df)](){const _0x922908=_0x328247;return[this[_0x922908(0x39f)],this['opacityStopCount']];}[_0x328247(0x41a)](_0x5a002f,_0x5d33b3){const _0xfefe97=_0x328247;validateStops$1(_0x5a002f,_0x5d33b3);let _0xde163c=new Float32Array(_0x5a002f[_0xfefe97(0x34f)]),_0x40b3d1=new Float32Array(_0x5a002f[_0xfefe97(0x34f)]*0x4),_0x404f76=new Float32Array(_0x5d33b3['length']),_0x5adf3d=new Float32Array(_0x5d33b3[_0xfefe97(0x34f)]);for(let _0x5de871=0x0;_0x5de871<_0x5a002f[_0xfefe97(0x34f)];_0x5de871+=0x1)_0xde163c[_0x5de871]=_0x5a002f[_0x5de871][_0xfefe97(0x287)],_0x40b3d1[_0xfefe97(0x476)](_0x5a002f[_0x5de871]['color'],_0x5de871*0x4);for(let _0x91b031=0x0;_0x91b031<_0x5d33b3[_0xfefe97(0x34f)];_0x91b031+=0x1)_0x404f76[_0x91b031]=_0x5d33b3[_0x91b031]['value'],_0x5adf3d[_0x91b031]=_0x5d33b3[_0x91b031][_0xfefe97(0x321)];let _0x1b4b9e=[createStorageBuffer(this[_0xfefe97(0x4af)],_0xde163c,_0xfefe97(0x30c)),createStorageBuffer(this[_0xfefe97(0x4af)],_0x40b3d1,_0xfefe97(0x3d4)),createStorageBuffer(this[_0xfefe97(0x4af)],_0x404f76,'volume\x20opacity\x20stop\x20values'),createStorageBuffer(this[_0xfefe97(0x4af)],_0x5adf3d,_0xfefe97(0x2e9))];this[_0xfefe97(0x1ef)](),this[_0xfefe97(0x2f9)]=_0x1b4b9e[0x0],this[_0xfefe97(0x29c)]=_0x1b4b9e[0x1],this[_0xfefe97(0x33e)]=_0x1b4b9e[0x2],this[_0xfefe97(0x281)]=_0x1b4b9e[0x3],this[_0xfefe97(0x39f)]=_0x5a002f['length'],this[_0xfefe97(0x3e9)]=_0x5d33b3['length'];}[_0x328247(0x307)](_0x5a186c){const _0x409ec7=_0x328247;if(!this[_0x409ec7(0x2f9)]||!this[_0x409ec7(0x29c)]||!this[_0x409ec7(0x33e)]||!this[_0x409ec7(0x281)])throw Error('WebGPU\x20volume\x20transfer\x20resources\x20are\x20incomplete.\x20WebGPU\x20体积传递函数资源不完整。');return this[_0x409ec7(0x4af)][_0x409ec7(0x307)]({'label':'volume\x20transfer\x20bind\x20group','layout':_0x5a186c,'entries':[{'binding':0x0,'resource':{'buffer':this[_0x409ec7(0x2f9)]}},{'binding':0x1,'resource':{'buffer':this['colorBuffer']}},{'binding':0x2,'resource':{'buffer':this[_0x409ec7(0x33e)]}},{'binding':0x3,'resource':{'buffer':this[_0x409ec7(0x281)]}}]});}['destroy'](){const _0x48ff79=_0x328247;this[_0x48ff79(0x1ef)](),this['colorStopCount']=0x0,this[_0x48ff79(0x3e9)]=0x0;}[_0x328247(0x1ef)](){const _0x4a13ba=_0x328247;this['colorValuesBuffer']?.[_0x4a13ba(0x179)](),this[_0x4a13ba(0x29c)]?.[_0x4a13ba(0x179)](),this['opacityValuesBuffer']?.[_0x4a13ba(0x179)](),this['opacityBuffer']?.[_0x4a13ba(0x179)](),this[_0x4a13ba(0x2f9)]=null,this[_0x4a13ba(0x29c)]=null,this['opacityValuesBuffer']=null,this['opacityBuffer']=null;}};const DEFAULT_MEMORY_TARGET_BYTES=0x200*0x400*0x400,IDENTITY_MATRIX$1=[0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1],DEFAULT_COLOR_STOPS=[{'value':0x0,'color':[0x0,0x0,0x1,0x1]},{'value':0x1,'color':[0x1,0x0,0x0,0x1]}],DEFAULT_OPACITY_STOPS=[{'value':0x0,'opacity':0x0},{'value':0x1,'opacity':0x1}],premultipliedBlend$1=()=>({'color':{'srcFactor':_0x328247(0x357),'dstFactor':_0x328247(0x40d),'operation':_0x328247(0x18a)},'alpha':{'srcFactor':_0x328247(0x357),'dstFactor':_0x328247(0x40d),'operation':_0x328247(0x18a)}}),validateMatrix=(_0x4c73c2,_0xc29413)=>{const _0x444cb4=_0x328247;if(_0x4c73c2[_0x444cb4(0x34f)]!==0x10||_0x4c73c2['some'](_0x3fd02b=>!Number['isFinite'](_0x3fd02b)))throw Error(_0xc29413+_0x444cb4(0x2e8)+_0xc29413+'\x20必须包含十六个有限数值。');},validateNonNegative=(_0x5a71fe,_0x840883)=>{const _0x1ac5fa=_0x328247;if(!Number[_0x1ac5fa(0x410)](_0x5a71fe)||_0x5a71fe<0x0)throw Error(_0x840883+'\x20must\x20be\x20a\x20non-negative\x20finite\x20value.\x20'+_0x840883+_0x1ac5fa(0x1f1));return _0x5a71fe;},validatePositive=(_0x34fd4e,_0x5affd3)=>{const _0x4459c6=_0x328247;if(!Number[_0x4459c6(0x410)](_0x34fd4e)||_0x34fd4e<=0x0)throw Error(_0x5affd3+'\x20must\x20be\x20a\x20positive\x20finite\x20value.\x20'+_0x5affd3+_0x4459c6(0x3f2));return _0x34fd4e;},cloneMeshes=_0x174992=>_0x174992[_0x328247(0x352)](_0x9301d9=>({..._0x9301d9,'vertices':new Float32Array(_0x9301d9[_0x328247(0x2ac)])})),estimateBrickUploadBytes=_0x2c9cb0=>{const _0x7a0ac6=_0x328247;let _0x4928de=_0x2c9cb0[_0x7a0ac6(0x499)]+_0x2c9cb0[_0x7a0ac6(0x1e3)]*0x2,_0x33e4f5=_0x2c9cb0[_0x7a0ac6(0x27a)]+_0x2c9cb0['halo']*0x2,_0x3d476c=_0x2c9cb0[_0x7a0ac6(0x3f4)]+_0x2c9cb0[_0x7a0ac6(0x1e3)]*0x2;return Math[_0x7a0ac6(0x22e)](_0x4928de*Float32Array[_0x7a0ac6(0x490)]/0x100)*0x100*_0x33e4f5*_0x3d476c+0x10;};var WebgpuVolumeSceneRenderer=class{['options'];['lifecycleState']='idle';[_0x328247(0x3ea)]=null;[_0x328247(0x2eb)]=null;[_0x328247(0x4af)]=null;[_0x328247(0x355)]=null;[_0x328247(0x1f4)]=null;[_0x328247(0x2a1)]=null;['volumeParamsBuffer']=null;[_0x328247(0x3b2)]=null;[_0x328247(0x2d7)]=null;[_0x328247(0x219)]=null;['transferBindGroupLayout']=null;[_0x328247(0x1af)]=null;[_0x328247(0x206)]=null;[_0x328247(0x4bc)]=null;[_0x328247(0x44e)]=null;[_0x328247(0x257)]=null;[_0x328247(0x1a1)]=null;[_0x328247(0x1cf)]=null;[_0x328247(0x28d)]=null;[_0x328247(0x30f)]=null;[_0x328247(0x439)]=null;['sceneSlicePipeline']=null;['overlaySlicePipeline']=null;[_0x328247(0x4a4)]=null;['atlas']=null;['transferResources']=null;[_0x328247(0x400)]=null;['sliceResources']=null;[_0x328247(0x298)]=null;[_0x328247(0x36e)]=null;[_0x328247(0x245)]={'viewProjection':IDENTITY_MATRIX$1,'inverseViewProjection':IDENTITY_MATRIX$1,'cameraPosition':[0x0,0x0,0x2]};['modelMatrix']=IDENTITY_MATRIX$1;['inverseModelMatrix']=IDENTITY_MATRIX$1;['clipMinimum']=[0x0,0x0,0x0];[_0x328247(0x4ac)]=[0x1,0x1,0x1];['renderMode']=_0x328247(0x2d9);[_0x328247(0x321)]=0.3;[_0x328247(0x23b)]=0x1;['stepLength']=0.005;[_0x328247(0x1ab)]=0x1;['colorMode']=_0x328247(0x211);[_0x328247(0x427)]=null;['colorStops']=DEFAULT_COLOR_STOPS;[_0x328247(0x28f)]=DEFAULT_OPACITY_STOPS;[_0x328247(0x197)]=0x0;['submittedFrameCount']=0x0;['width']=0x0;[_0x328247(0x304)]=0x0;['initializationGeneration']=0x0;[_0x328247(0x2f6)]=0x0;[_0x328247(0x25a)]=[];[_0x328247(0x4b9)]=[];[_0x328247(0x2ce)]=[];[_0x328247(0x1bb)]=new Map();[_0x328247(0x28a)]=[];[_0x328247(0x47c)]=null;['uploadGeneration']=0x0;['uploadStagingBuffer']=null;['uploadStagingBufferSize']=0x0;['uploadedBrickCount']=0x0;[_0x328247(0x2ba)]=0x0;[_0x328247(0x2bc)]=0x0;['frameInFlight']=!0x1;['frameAvailableCallback']=null;constructor(_0x108bc4={}){const _0x4eefea=_0x328247;this[_0x4eefea(0x244)]={..._0x108bc4};}get['state'](){const _0x43880b=_0x328247;return this[_0x43880b(0x1b1)];}get[_0x328247(0x2f5)](){const _0x3b364c=_0x328247;let _0x88252d=this[_0x3b364c(0x483)]?.[_0x3b364c(0x2f5)]??{'logicalBrickCount':0x0,'atlasCapacity':0x0,'gpuBytes':0x0,'memoryLimitBytes':this[_0x3b364c(0x244)]['memoryHardLimitBytes']??this[_0x3b364c(0x244)]['memoryTargetBytes']??DEFAULT_MEMORY_TARGET_BYTES,'budgetLimited':!0x1,'skippedSamples':0x0,'skippedCells':0x0},_0x10f26d=this['sliceResources']?.[_0x3b364c(0x2f5)]??{'uniformUpdateCount':0x0,'resourceRebuildCount':0x0};return{'logicalBrickCount':_0x88252d[_0x3b364c(0x272)],'residentBrickCount':this[_0x3b364c(0x483)]?.[_0x3b364c(0x40e)]??0x0,'pendingBrickCount':0x0,'atlasCapacity':_0x88252d['atlasCapacity'],'gpuBytes':_0x88252d['gpuBytes'],'memoryLimitBytes':_0x88252d[_0x3b364c(0x1a9)],'budgetLimited':_0x88252d[_0x3b364c(0x296)],'frameTimeMilliseconds':this[_0x3b364c(0x2f6)],'submittedFrameCount':this[_0x3b364c(0x1a0)],'uploadedBrickCount':this[_0x3b364c(0x18f)],'uploadBatchCount':this[_0x3b364c(0x2ba)],'maximumUploadBatchBytes':this[_0x3b364c(0x2bc)],'sliceUniformUpdateCount':_0x10f26d[_0x3b364c(0x2a0)],'sliceResourceRebuildCount':_0x10f26d[_0x3b364c(0x2a5)],'skippedSamples':_0x88252d[_0x3b364c(0x2ae)],'skippedCells':_0x88252d[_0x3b364c(0x32c)]};}[_0x328247(0x1eb)](_0x51bd92){this['frameAvailableCallback']=_0x51bd92;}async[_0x328247(0x47a)](_0x58deda){const _0x145f61=_0x328247;if(this[_0x145f61(0x1b1)]==='destroyed')throw Error(_0x145f61(0x2b7));let _0x5d8594=++this[_0x145f61(0x1c0)];this[_0x145f61(0x2c4)](),this[_0x145f61(0x3ea)]=_0x58deda,this[_0x145f61(0x1b1)]=_0x145f61(0x3aa);let _0x426793=navigator[_0x145f61(0x3e7)];if(!_0x426793)throw this['lifecycleState']='idle',Error(_0x145f61(0x311));let _0x4292c7=await _0x426793[_0x145f61(0x3f8)]({'powerPreference':this['options'][_0x145f61(0x2e3)]??'high-performance'});if(_0x5d8594!==this[_0x145f61(0x1c0)])return;if(!_0x4292c7)throw this[_0x145f61(0x1b1)]=_0x145f61(0x3d9),Error(_0x145f61(0x2bf));let _0x178bc0=await _0x4292c7[_0x145f61(0x18e)]();if(_0x5d8594!==this['initializationGeneration']){_0x178bc0['destroy']();return;}let _0x1fb7e9=_0x58deda[_0x145f61(0x29f)](_0x145f61(0x38f));if(!_0x1fb7e9)throw _0x178bc0[_0x145f61(0x179)](),this['lifecycleState']=_0x145f61(0x3d9),Error(_0x145f61(0x454));let _0xa88796=_0x426793['getPreferredCanvasFormat']();_0x1fb7e9[_0x145f61(0x20a)]({'device':_0x178bc0,'format':_0xa88796,'alphaMode':_0x145f61(0x1a3),'usage':GPUTextureUsage['RENDER_ATTACHMENT']|GPUTextureUsage[_0x145f61(0x2d3)]}),this[_0x145f61(0x2eb)]=_0x4292c7,this[_0x145f61(0x4af)]=_0x178bc0,this['context']=_0x1fb7e9,this['format']=_0xa88796,_0x178bc0[_0x145f61(0x274)](_0x145f61(0x456)),this[_0x145f61(0x1ae)]();let _0x4c9726=await _0x178bc0[_0x145f61(0x2a3)]();if(_0x4c9726)throw this[_0x145f61(0x2c4)](),this[_0x145f61(0x1b1)]=_0x145f61(0x3d9),Error(_0x145f61(0x3fc)+_0x4c9726[_0x145f61(0x448)]+_0x145f61(0x377));if(this[_0x145f61(0x35f)](_0x178bc0),this[_0x145f61(0x1b1)]='ready',this['metadata']){this[_0x145f61(0x356)](this[_0x145f61(0x36e)]);let _0xcedb06=Array[_0x145f61(0x366)](this[_0x145f61(0x1bb)][_0x145f61(0x235)]());await Promise[_0x145f61(0x422)](_0xcedb06[_0x145f61(0x352)](([_0x503b81,_0x37dc5c])=>this['enqueueBrickUpload']({'logicalIndex':_0x503b81,'values':_0x37dc5c},!0x1)));}this[_0x145f61(0x270)](),this[_0x145f61(0x2dc)]()[_0x145f61(0x4aa)](this[_0x145f61(0x25a)]),this['getSliceResources']()[_0x145f61(0x4aa)](this['cachedSlices']),this[_0x145f61(0x440)]()[_0x145f61(0x4aa)](this[_0x145f61(0x2ce)]),this['resize'](_0x58deda[_0x145f61(0x25d)]||_0x58deda[_0x145f61(0x1ce)]||0x1,_0x58deda[_0x145f61(0x304)]||_0x58deda[_0x145f61(0x27c)]||0x1);}[_0x328247(0x276)](_0x222ff7){const _0x43c698=_0x328247;this[_0x43c698(0x185)]+=0x1,this[_0x43c698(0x3e0)](new DOMException(_0x43c698(0x3ec),_0x43c698(0x22f))),this['metadata']={..._0x222ff7},this[_0x43c698(0x1bb)][_0x43c698(0x433)](),this['uploadedBrickCount']=0x0,this[_0x43c698(0x2ba)]=0x0,this[_0x43c698(0x2bc)]=0x0,this[_0x43c698(0x1b1)]===_0x43c698(0x4cb)&&this[_0x43c698(0x356)](_0x222ff7);}[_0x328247(0x45b)](_0x3686ba){const _0x49a881=_0x328247;return this[_0x49a881(0x42d)](_0x3686ba,!0x0);}[_0x328247(0x2c0)](_0x481ae8){const _0x9e06ee=_0x328247;this[_0x9e06ee(0x46d)]()[_0x9e06ee(0x165)](_0x481ae8,this[_0x9e06ee(0x197)]);for(let _0x2248c8 of _0x481ae8){let _0x14df6b=this[_0x9e06ee(0x1bb)][_0x9e06ee(0x177)](_0x2248c8);_0x14df6b&&(this[_0x9e06ee(0x1bb)][_0x9e06ee(0x434)](_0x2248c8),this[_0x9e06ee(0x1bb)][_0x9e06ee(0x476)](_0x2248c8,_0x14df6b));}}[_0x328247(0x271)](_0x3295ef){const _0xa70e0b=_0x328247;validateMatrix(_0x3295ef[_0xa70e0b(0x1d8)],_0xa70e0b(0x1d8)),validateMatrix(_0x3295ef[_0xa70e0b(0x41c)],_0xa70e0b(0x41c)),this['camera']={'viewProjection':[..._0x3295ef[_0xa70e0b(0x1d8)]],'inverseViewProjection':[..._0x3295ef[_0xa70e0b(0x41c)]],'cameraPosition':[..._0x3295ef[_0xa70e0b(0x3ce)]]};}[_0x328247(0x371)](_0x2cb965){const _0x357392=_0x328247;this['cachedProfiles']=cloneMeshes(_0x2cb965),this['getProfileResources']()[_0x357392(0x4aa)](_0x2cb965);}['setSlices'](_0x1c4f4d){const _0x52b7af=_0x328247;this[_0x52b7af(0x4b9)]=_0x1c4f4d['map'](_0x27f09b=>({..._0x27f09b})),this[_0x52b7af(0x3ee)]()[_0x52b7af(0x4aa)](_0x1c4f4d);}[_0x328247(0x349)](_0x4fc3c4){const _0x4dfda1=_0x328247;this[_0x4dfda1(0x2ce)]=cloneMeshes(_0x4fc3c4),this[_0x4dfda1(0x440)]()['replace'](_0x4fc3c4);}['setTransfer'](_0x260b8b,_0x439c8b,_0x5d54f7){const _0x20d73f=_0x328247;this[_0x20d73f(0x48d)]=_0x260b8b[_0x20d73f(0x352)](_0x4173e8=>({'value':_0x4173e8['value'],'color':[..._0x4173e8[_0x20d73f(0x1be)]]})),this[_0x20d73f(0x28f)]=_0x439c8b[_0x20d73f(0x352)](_0x55eb05=>({..._0x55eb05})),_0x5d54f7&&(this[_0x20d73f(0x205)]=_0x5d54f7),this[_0x20d73f(0x1b1)]==='ready'&&this[_0x20d73f(0x270)]();}['update'](_0x321d12){const _0x3e110d=_0x328247;_0x321d12['modelMatrix']&&(validateMatrix(_0x321d12[_0x3e110d(0x4c9)],'modelMatrix'),this[_0x3e110d(0x4c9)]=[..._0x321d12[_0x3e110d(0x4c9)]]),_0x321d12[_0x3e110d(0x2d8)]&&(validateMatrix(_0x321d12[_0x3e110d(0x2d8)],'inverseModelMatrix'),this[_0x3e110d(0x2d8)]=[..._0x321d12[_0x3e110d(0x2d8)]]),_0x321d12[_0x3e110d(0x1e5)]&&(this[_0x3e110d(0x1e5)]=[..._0x321d12[_0x3e110d(0x1e5)]]),_0x321d12[_0x3e110d(0x4ac)]&&(this[_0x3e110d(0x4ac)]=[..._0x321d12['clipMaximum']]),_0x321d12[_0x3e110d(0x2d6)]&&(this[_0x3e110d(0x2d6)]=_0x321d12[_0x3e110d(0x2d6)]),_0x321d12[_0x3e110d(0x321)]!==void 0x0&&(this[_0x3e110d(0x321)]=validateNonNegative(_0x321d12[_0x3e110d(0x321)],_0x3e110d(0x321))),_0x321d12[_0x3e110d(0x23b)]!==void 0x0&&(this[_0x3e110d(0x23b)]=validateNonNegative(_0x321d12['densityScale'],'densityScale')),_0x321d12[_0x3e110d(0x3e5)]!==void 0x0&&(this[_0x3e110d(0x3e5)]=validatePositive(_0x321d12['stepLength'],_0x3e110d(0x3e5))),_0x321d12[_0x3e110d(0x1ab)]!==void 0x0&&(this['volumeDimFactor']=validateNonNegative(_0x321d12['volumeDimFactor'],_0x3e110d(0x1ab))),_0x321d12['colorMode']&&(this['colorMode']=_0x321d12['colorMode']),_0x321d12[_0x3e110d(0x427)]!==void 0x0&&(this[_0x3e110d(0x427)]=_0x321d12[_0x3e110d(0x427)]?{..._0x321d12[_0x3e110d(0x427)]}:null);}[_0x328247(0x3c0)](_0x35d682,_0x53da87){const _0x436b92=_0x328247;if(!Number[_0x436b92(0x474)](_0x35d682)||!Number[_0x436b92(0x474)](_0x53da87)||_0x35d682<=0x0||_0x53da87<=0x0)throw Error('WebGPU\x20volume\x20scene\x20dimensions\x20must\x20be\x20positive\x20integers.\x20WebGPU\x20体积场景尺寸必须是正整数。');let _0x5a7779=this[_0x436b92(0x1dc)]();_0x5a7779[_0x436b92(0x25d)]=_0x35d682,_0x5a7779[_0x436b92(0x304)]=_0x53da87,this[_0x436b92(0x25d)]=_0x35d682,this[_0x436b92(0x304)]=_0x53da87,this[_0x436b92(0x3de)]()[_0x436b92(0x3c0)](_0x35d682,_0x53da87),this[_0x436b92(0x19c)]();}['render'](){const _0x1ae25e=_0x328247;if(this['lifecycleState']!==_0x1ae25e(0x4cb)||!this[_0x1ae25e(0x36e)]||this['width']<=0x0||this[_0x1ae25e(0x304)]<=0x0||this[_0x1ae25e(0x1cd)])return!0x1;let _0x209574=performance['now']();this['frameIndex']+=0x1,this[_0x1ae25e(0x2f4)]();let _0x53e518=this[_0x1ae25e(0x1f3)](),_0x27d12b=_0x53e518[_0x1ae25e(0x388)]({'label':_0x1ae25e(0x36c)}),_0x122789=this['getContext']()['getCurrentTexture']()[_0x1ae25e(0x3c3)]();return this[_0x1ae25e(0x2af)](_0x27d12b,_0x122789),this[_0x1ae25e(0x44a)](_0x27d12b,_0x122789),this[_0x1ae25e(0x339)](_0x27d12b,_0x122789),_0x53e518[_0x1ae25e(0x21d)][_0x1ae25e(0x1f0)]([_0x27d12b[_0x1ae25e(0x484)]()]),this[_0x1ae25e(0x1cd)]=!0x0,this[_0x1ae25e(0x1a0)]+=0x1,this['lastFrameTimeMilliseconds']=Math['max'](0.000001,performance[_0x1ae25e(0x360)]()-_0x209574),_0x53e518[_0x1ae25e(0x21d)]['onSubmittedWorkDone']()['then'](()=>{const _0x4324f4=_0x1ae25e;this[_0x4324f4(0x4af)]!==_0x53e518||this['lifecycleState']!==_0x4324f4(0x4cb)||(this['frameInFlight']=!0x1,this[_0x4324f4(0x1a5)]?.());})[_0x1ae25e(0x43b)](()=>{const _0x420380=_0x1ae25e;this[_0x420380(0x4af)]===_0x53e518&&(this[_0x420380(0x1cd)]=!0x1);}),!0x0;}async['captureFrame'](){const _0x4d794a=_0x328247;if(this['lifecycleState']!==_0x4d794a(0x4cb)||!this[_0x4d794a(0x36e)]||this[_0x4d794a(0x25d)]<=0x0||this[_0x4d794a(0x304)]<=0x0)throw Error(_0x4d794a(0x1ad));let _0x3c69e2=this[_0x4d794a(0x1f3)](),_0x3510cb=this[_0x4d794a(0x25d)]*0x4,_0x16bced=Math[_0x4d794a(0x22e)](_0x3510cb/0x100)*0x100,_0x4775e1=_0x3c69e2['createBuffer']({'label':'volume\x20frame\x20readback','size':_0x16bced*this[_0x4d794a(0x304)],'usage':GPUBufferUsage[_0x4d794a(0x169)]|GPUBufferUsage[_0x4d794a(0x30b)]});_0x3c69e2[_0x4d794a(0x274)](_0x4d794a(0x456)),this[_0x4d794a(0x197)]+=0x1,this[_0x4d794a(0x2f4)]();let _0x2c1788=_0x3c69e2[_0x4d794a(0x388)]({'label':_0x4d794a(0x4a5)}),_0x5a8d62=this[_0x4d794a(0x29f)]()['getCurrentTexture'](),_0x3ba29b=_0x5a8d62[_0x4d794a(0x3c3)]();this[_0x4d794a(0x2af)](_0x2c1788,_0x3ba29b),this[_0x4d794a(0x44a)](_0x2c1788,_0x3ba29b),this['encodeOverlayPass'](_0x2c1788,_0x3ba29b),_0x2c1788['copyTextureToBuffer']({'texture':_0x5a8d62},{'buffer':_0x4775e1,'bytesPerRow':_0x16bced,'rowsPerImage':this[_0x4d794a(0x304)]},[this['width'],this[_0x4d794a(0x304)]]),_0x3c69e2[_0x4d794a(0x21d)][_0x4d794a(0x1f0)]([_0x2c1788['finish']()]);let _0x428e01=await _0x3c69e2[_0x4d794a(0x2a3)]();if(_0x428e01)throw _0x4775e1[_0x4d794a(0x179)](),Error(_0x4d794a(0x437)+_0x428e01[_0x4d794a(0x448)]+_0x4d794a(0x216));await _0x4775e1[_0x4d794a(0x462)](GPUMapMode[_0x4d794a(0x28c)]);let _0x5b348d=new Uint8Array(_0x4775e1[_0x4d794a(0x396)]()),_0x490220=new Uint8Array(_0x3510cb*this[_0x4d794a(0x304)]),_0x5aee6f=this[_0x4d794a(0x35b)]()===_0x4d794a(0x300);for(let _0x411706=0x0;_0x411706<this[_0x4d794a(0x304)];_0x411706+=0x1){let _0x2edfef=_0x5b348d[_0x4d794a(0x34b)](_0x411706*_0x16bced,_0x411706*_0x16bced+_0x3510cb),_0x2509d7=_0x411706*_0x3510cb;if(!_0x5aee6f){_0x490220[_0x4d794a(0x476)](_0x2edfef,_0x2509d7);continue;}for(let _0x44eea3=0x0;_0x44eea3<this[_0x4d794a(0x25d)];_0x44eea3+=0x1){let _0x39a69b=_0x44eea3*0x4,_0x16a6e4=_0x2509d7+_0x39a69b;_0x490220[_0x16a6e4]=_0x2edfef[_0x39a69b+0x2],_0x490220[_0x16a6e4+0x1]=_0x2edfef[_0x39a69b+0x1],_0x490220[_0x16a6e4+0x2]=_0x2edfef[_0x39a69b],_0x490220[_0x16a6e4+0x3]=_0x2edfef[_0x39a69b+0x3];}}return _0x4775e1['unmap'](),_0x4775e1[_0x4d794a(0x179)](),this['submittedFrameCount']+=0x1,{'width':this['width'],'height':this[_0x4d794a(0x304)],'pixels':_0x490220};}['destroy'](){const _0x48c55e=_0x328247;this[_0x48c55e(0x1b1)]!==_0x48c55e(0x224)&&(++this[_0x48c55e(0x1c0)],this['releaseGpuResources'](),this['canvas']=null,this[_0x48c55e(0x36e)]=null,this[_0x48c55e(0x1a5)]=null,this['lifecycleState']=_0x48c55e(0x224));}['createGpuResources'](){const _0x2d9e01=_0x328247;let _0x17a486=this[_0x2d9e01(0x1f3)]();this[_0x2d9e01(0x2a1)]=_0x17a486[_0x2d9e01(0x2c5)]({'label':_0x2d9e01(0x1dd),'size':0x190,'usage':GPUBufferUsage[_0x2d9e01(0x3e6)]|GPUBufferUsage[_0x2d9e01(0x169)]}),this[_0x2d9e01(0x193)]=_0x17a486['createBuffer']({'label':_0x2d9e01(0x1b3),'size':0x60,'usage':GPUBufferUsage[_0x2d9e01(0x3e6)]|GPUBufferUsage[_0x2d9e01(0x169)]}),this[_0x2d9e01(0x3b2)]=_0x17a486[_0x2d9e01(0x2d1)]({'label':_0x2d9e01(0x1db),'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x2d9e01(0x16b)]|GPUShaderStage['FRAGMENT'],'buffer':{'type':_0x2d9e01(0x188)}}]}),this[_0x2d9e01(0x2d7)]=_0x17a486['createBindGroupLayout']({'label':_0x2d9e01(0x23e),'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x2d9e01(0x16b)]|GPUShaderStage[_0x2d9e01(0x183)],'buffer':{'type':_0x2d9e01(0x188)}},{'binding':0x1,'visibility':GPUShaderStage[_0x2d9e01(0x183)],'texture':{'sampleType':_0x2d9e01(0x1fd)}}]}),this[_0x2d9e01(0x219)]=_0x17a486[_0x2d9e01(0x2d1)]({'label':_0x2d9e01(0x3d3),'entries':[...Array[_0x2d9e01(0x366)]({'length':0x8},(_0x1e97cd,_0x53f938)=>({'binding':_0x53f938,'visibility':GPUShaderStage['FRAGMENT'],'texture':{'sampleType':_0x2d9e01(0x391),'viewDimension':'3d'}})),{'binding':0x8,'visibility':GPUShaderStage[_0x2d9e01(0x183)],'buffer':{'type':_0x2d9e01(0x213)}},{'binding':0x9,'visibility':GPUShaderStage['FRAGMENT'],'buffer':{'type':_0x2d9e01(0x188)}}]}),this[_0x2d9e01(0x4cf)]=_0x17a486[_0x2d9e01(0x2d1)]({'label':_0x2d9e01(0x278),'entries':[0x0,0x1,0x2,0x3][_0x2d9e01(0x352)](_0x43371f=>({'binding':_0x43371f,'visibility':GPUShaderStage[_0x2d9e01(0x183)],'buffer':{'type':_0x2d9e01(0x213)}}))}),this[_0x2d9e01(0x1af)]=_0x17a486[_0x2d9e01(0x2d1)]({'label':_0x2d9e01(0x248),'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x2d9e01(0x16b)]|GPUShaderStage['FRAGMENT'],'buffer':{'type':_0x2d9e01(0x188)}}]}),this[_0x2d9e01(0x4a4)]=new WebgpuSceneAttachments(_0x17a486),this[_0x2d9e01(0x359)]=new WebgpuTransferResources(_0x17a486),this[_0x2d9e01(0x400)]=new WebgpuSceneMeshResources(_0x17a486),this[_0x2d9e01(0x3c8)]=new WebgpuSliceResources(_0x17a486,this['getSliceBindGroupLayout']()),this[_0x2d9e01(0x298)]=new WebgpuSceneMeshResources(_0x17a486),this[_0x2d9e01(0x194)]();}[_0x328247(0x194)](){const _0x296396=_0x328247;let _0xf5cd00=this[_0x296396(0x1f3)](),_0x4fdf4a=this[_0x296396(0x35b)](),_0xbab3b2=this[_0x296396(0x47b)](),_0x4939b6=this[_0x296396(0x277)](),_0x162026=_0xf5cd00['createShaderModule']({'label':_0x296396(0x1fe),'code':sceneMesh_default}),_0x5702f0={'module':_0x162026,'entryPoint':_0x296396(0x482),'buffers':[{'arrayStride':0x1c,'attributes':[{'shaderLocation':0x0,'offset':0x0,'format':_0x296396(0x4b5)},{'shaderLocation':0x1,'offset':0xc,'format':_0x296396(0x222)}]}]},_0x42d55f={'module':_0x162026,'entryPoint':_0x296396(0x37c),'targets':[{'format':_0x4fdf4a,'blend':premultipliedBlend$1()}]},_0x414a83=(_0x25f068,_0x3ebb35)=>_0xf5cd00[_0x296396(0x3d5)]({'layout':_0xf5cd00[_0x296396(0x3a3)]({'bindGroupLayouts':[_0xbab3b2]}),'vertex':_0x5702f0,'fragment':_0x42d55f,'primitive':{'topology':_0x25f068},'depthStencil':_0x3ebb35?{'format':'depth32float','depthWriteEnabled':!0x0,'depthCompare':_0x296396(0x227)}:void 0x0});this[_0x296396(0x1cf)]=_0x414a83(_0x296396(0x458),!0x0),this['sceneLinePipeline']=_0x414a83(_0x296396(0x285),!0x0),this['overlayTrianglePipeline']=_0x414a83(_0x296396(0x458),!0x1),this[_0x296396(0x439)]=_0x414a83('line-list',!0x1);let _0x29460a=_0xf5cd00[_0x296396(0x37f)]({'label':_0x296396(0x2fe),'code':volumeRaymarch_default});this[_0x296396(0x1a1)]=_0xf5cd00['createRenderPipeline']({'layout':_0xf5cd00['createPipelineLayout']({'bindGroupLayouts':[_0x4939b6,this[_0x296396(0x243)](),this['getTransferBindGroupLayout']()]}),'vertex':{'module':_0x29460a,'entryPoint':_0x296396(0x482)},'fragment':{'module':_0x29460a,'entryPoint':_0x296396(0x37c),'targets':[{'format':_0x4fdf4a,'blend':premultipliedBlend$1()}]},'primitive':{'topology':_0x296396(0x458)}});let _0x5c95d7=_0xf5cd00[_0x296396(0x37f)]({'label':_0x296396(0x220),'code':volumeSlice_default}),_0x386dcb=_0x307f0d=>_0xf5cd00['createRenderPipeline']({'layout':_0xf5cd00[_0x296396(0x3a3)]({'bindGroupLayouts':[_0xbab3b2,this['getVolumeBindGroupLayout'](),this[_0x296396(0x204)](),this[_0x296396(0x238)]()]}),'vertex':{'module':_0x5c95d7,'entryPoint':_0x296396(0x482)},'fragment':{'module':_0x5c95d7,'entryPoint':_0x296396(0x37c),'targets':[{'format':_0x4fdf4a,'blend':premultipliedBlend$1()}]},'primitive':{'topology':_0x296396(0x458)},'depthStencil':_0x307f0d?{'format':'depth32float','depthWriteEnabled':!0x0,'depthCompare':_0x296396(0x227)}:void 0x0});this[_0x296396(0x34d)]=_0x386dcb(!0x0),this[_0x296396(0x23f)]=_0x386dcb(!0x1);}[_0x328247(0x356)](_0x3cf299){const _0x4e175b=_0x328247;this['atlas']?.[_0x4e175b(0x179)](),this[_0x4e175b(0x483)]=new WebgpuBrickAtlas(this[_0x4e175b(0x1f3)](),this[_0x4e175b(0x244)]['memoryTargetBytes']??DEFAULT_MEMORY_TARGET_BYTES,this[_0x4e175b(0x244)][_0x4e175b(0x4be)]??this[_0x4e175b(0x244)]['memoryTargetBytes']??DEFAULT_MEMORY_TARGET_BYTES),this[_0x4e175b(0x483)][_0x4e175b(0x20a)](_0x3cf299),this['writeVolumeParams'](),this['volumeBindGroup']=this[_0x4e175b(0x483)][_0x4e175b(0x307)](this['getVolumeBindGroupLayout'](),this[_0x4e175b(0x49e)]());}[_0x328247(0x42d)](_0x42f128,_0x6e3b9a){return new Promise((_0x2cd4c0,_0x225891)=>{const _0x33b12a=_0x3351;this[_0x33b12a(0x28a)][_0x33b12a(0x17b)]({'upload':_0x42f128,'generation':this[_0x33b12a(0x185)],'cacheOnSuccess':_0x6e3b9a,'resolve':_0x2cd4c0,'reject':_0x225891}),this[_0x33b12a(0x2b5)]();});}['scheduleUploadPump'](){const _0x496962=_0x328247;this[_0x496962(0x47c)]||=Promise[_0x496962(0x429)]()['then'](()=>this[_0x496962(0x1c6)]())[_0x496962(0x176)](()=>{const _0x2e2038=_0x496962;this[_0x2e2038(0x47c)]=null,this[_0x2e2038(0x28a)]['length']>0x0&&this[_0x2e2038(0x1b1)]===_0x2e2038(0x4cb)&&this[_0x2e2038(0x2b5)]();});}async[_0x328247(0x1c6)](){const _0x170e2a=_0x328247;for(;this[_0x170e2a(0x28a)][_0x170e2a(0x34f)]>0x0&&this[_0x170e2a(0x1b1)]==='ready'&&this[_0x170e2a(0x36e)];){let _0x42bf73=this[_0x170e2a(0x1f3)](),_0x2fd554=estimateBrickUploadBytes(this[_0x170e2a(0x36e)]),_0x36b413=Math[_0x170e2a(0x4ab)](0x4000000,Math[_0x170e2a(0x4b3)](_0x2fd554,Math[_0x170e2a(0x4a3)](_0x42bf73[_0x170e2a(0x240)][_0x170e2a(0x4a2)]/0x4))),_0x392bc4=[],_0x272e39=0x0;for(;this[_0x170e2a(0x28a)][_0x170e2a(0x34f)]>0x0&&_0x392bc4['length']<0x10;){let _0x5c7fac=this[_0x170e2a(0x28a)][0x0];if(_0x392bc4[_0x170e2a(0x34f)]>0x0&&_0x272e39+_0x2fd554>_0x36b413)break;if(this[_0x170e2a(0x28a)][_0x170e2a(0x369)](),_0x5c7fac[_0x170e2a(0x367)]!==this[_0x170e2a(0x185)]){_0x5c7fac[_0x170e2a(0x4a6)](new DOMException(_0x170e2a(0x463),_0x170e2a(0x22f)));continue;}_0x392bc4[_0x170e2a(0x17b)](_0x5c7fac),_0x272e39+=_0x2fd554;}if(_0x392bc4[_0x170e2a(0x34f)]!==0x0)try{let _0x40e4a6=[],_0x9e03f7=0x0;for(let _0xc289de of _0x392bc4){let _0x440ff3=this[_0x170e2a(0x46d)]()[_0x170e2a(0x4a0)](_0xc289de[_0x170e2a(0x16d)],this[_0x170e2a(0x197)]),_0x4db44a=Math['ceil'](_0x9e03f7/0x100)*0x100;_0x40e4a6['push']({'item':_0xc289de,'prepared':_0x440ff3,'bufferOffset':_0x4db44a}),_0x9e03f7=_0x4db44a+_0x440ff3[_0x170e2a(0x3b8)][_0x170e2a(0x43d)];}let _0x3feca7=this[_0x170e2a(0x465)](_0x9e03f7);await _0x3feca7[_0x170e2a(0x462)](GPUMapMode[_0x170e2a(0x1a7)]);let _0x1c8556=new Uint8Array(_0x3feca7[_0x170e2a(0x396)]());for(let _0x276d2c of _0x40e4a6){let _0x1d876e=_0x276d2c[_0x170e2a(0x354)][_0x170e2a(0x3b8)];_0x1c8556['set'](new Uint8Array(_0x1d876e[_0x170e2a(0x32a)],_0x1d876e[_0x170e2a(0x260)],_0x1d876e[_0x170e2a(0x43d)]),_0x276d2c[_0x170e2a(0x351)]);}_0x3feca7[_0x170e2a(0x2c1)]();let _0x2e7949=_0x42bf73['createCommandEncoder']({'label':'volume\x20brick\x20upload\x20batch\x20flush'});for(let _0x3eb36e of _0x40e4a6)this[_0x170e2a(0x46d)]()[_0x170e2a(0x1cb)](_0x2e7949,_0x3feca7,_0x3eb36e[_0x170e2a(0x351)],_0x3eb36e[_0x170e2a(0x354)]);_0x42bf73['queue'][_0x170e2a(0x1f0)]([_0x2e7949[_0x170e2a(0x484)]()]),await _0x42bf73['queue'][_0x170e2a(0x2a9)](),await new Promise(_0x1c16be=>setTimeout(_0x1c16be,0x0)),this['uploadedBrickCount']+=_0x392bc4[_0x170e2a(0x34f)],this[_0x170e2a(0x2ba)]+=0x1,this['maximumUploadBatchBytes']=Math[_0x170e2a(0x4b3)](this[_0x170e2a(0x2bc)],_0x272e39);for(let _0x42833e of _0x392bc4){if(_0x42833e[_0x170e2a(0x367)]!==this[_0x170e2a(0x185)]){_0x42833e[_0x170e2a(0x4a6)](new DOMException(_0x170e2a(0x463),_0x170e2a(0x22f)));continue;}_0x42833e[_0x170e2a(0x4a9)]&&this[_0x170e2a(0x384)](_0x42833e[_0x170e2a(0x16d)]),_0x42833e[_0x170e2a(0x429)]();}}catch(_0x57524e){for(let _0x3a08b0 of _0x392bc4)_0x3a08b0[_0x170e2a(0x4a6)](_0x57524e);}}}[_0x328247(0x465)](_0x30e946){const _0x2917b6=_0x328247;let _0x4cc0f3=Math[_0x2917b6(0x4b3)](0x100,Math[_0x2917b6(0x22e)](_0x30e946/0x100)*0x100);return this[_0x2917b6(0x44d)]&&this[_0x2917b6(0x3a4)]>=_0x4cc0f3?this[_0x2917b6(0x44d)]:(this['uploadStagingBuffer']?.['destroy'](),this[_0x2917b6(0x44d)]=this[_0x2917b6(0x1f3)]()[_0x2917b6(0x2c5)]({'label':_0x2917b6(0x491),'size':_0x4cc0f3,'usage':GPUBufferUsage['MAP_WRITE']|GPUBufferUsage[_0x2917b6(0x2d3)]}),this[_0x2917b6(0x3a4)]=_0x4cc0f3,this['uploadStagingBuffer']);}[_0x328247(0x384)](_0x9902fb){const _0x247467=_0x328247;for(this[_0x247467(0x1bb)][_0x247467(0x434)](_0x9902fb[_0x247467(0x23a)]),this['cachedBricks'][_0x247467(0x476)](_0x9902fb[_0x247467(0x23a)],new Float32Array(_0x9902fb[_0x247467(0x3b8)]));this[_0x247467(0x1bb)][_0x247467(0x21e)]>this[_0x247467(0x2f5)][_0x247467(0x31d)];){let _0x1fbada=this['cachedBricks']['keys']()[_0x247467(0x35e)]()['value'];if(_0x1fbada===void 0x0)break;this[_0x247467(0x1bb)][_0x247467(0x434)](_0x1fbada);}}[_0x328247(0x3e0)](_0x567108){const _0x3f9ed2=_0x328247;for(let _0x3df256 of this[_0x3f9ed2(0x28a)][_0x3f9ed2(0x291)](0x0))_0x3df256[_0x3f9ed2(0x4a6)](_0x567108);}['updateTransferResources'](){const _0x2c1815=_0x328247;let _0x417827=this[_0x2c1815(0x38b)]();_0x417827[_0x2c1815(0x41a)](this[_0x2c1815(0x48d)],this[_0x2c1815(0x28f)]),this[_0x2c1815(0x257)]=_0x417827['createBindGroup'](this[_0x2c1815(0x204)]());}['recreateSceneBindGroup'](){const _0x488584=_0x328247;!this[_0x488584(0x2a1)]||!this[_0x488584(0x4a4)]||!this[_0x488584(0x3b2)]||!this['sceneBindGroupLayout']||(this[_0x488584(0x206)]=this[_0x488584(0x1f3)]()[_0x488584(0x307)]({'label':_0x488584(0x330),'layout':this[_0x488584(0x3b2)],'entries':[{'binding':0x0,'resource':{'buffer':this[_0x488584(0x2a1)]}}]}),this[_0x488584(0x4bc)]=this[_0x488584(0x1f3)]()[_0x488584(0x307)]({'label':'volume\x20scene\x20bind\x20group','layout':this[_0x488584(0x2d7)],'entries':[{'binding':0x0,'resource':{'buffer':this[_0x488584(0x2a1)]}},{'binding':0x1,'resource':this[_0x488584(0x4a4)]['sceneDepthView']}]}));}[_0x328247(0x2f4)](){const _0xb7f248=_0x328247;let _0x4708cf=new Float32Array(0x64);_0x4708cf[_0xb7f248(0x476)](this[_0xb7f248(0x245)][_0xb7f248(0x1d8)],0x0),_0x4708cf[_0xb7f248(0x476)](this[_0xb7f248(0x245)][_0xb7f248(0x41c)],0x10),_0x4708cf[_0xb7f248(0x476)](this[_0xb7f248(0x4c9)],0x20),_0x4708cf['set'](this[_0xb7f248(0x2d8)],0x30),_0x4708cf[_0xb7f248(0x476)]([...this[_0xb7f248(0x245)][_0xb7f248(0x3ce)],0x1],0x40),_0x4708cf[_0xb7f248(0x476)]([this[_0xb7f248(0x25d)],this[_0xb7f248(0x304)],0x1/this[_0xb7f248(0x25d)],0x1/this['height']],0x44),_0x4708cf[_0xb7f248(0x476)]([...this['clipMinimum'],0x0],0x48),_0x4708cf[_0xb7f248(0x476)]([...this['clipMaximum'],0x0],0x4c),_0x4708cf[_0xb7f248(0x476)]([+(this[_0xb7f248(0x2d6)]===_0xb7f248(0x3a0)),this[_0xb7f248(0x321)],this[_0xb7f248(0x23b)],this['stepLength']],0x50),_0x4708cf[_0xb7f248(0x476)]([this[_0xb7f248(0x48d)][_0xb7f248(0x34f)],this[_0xb7f248(0x28f)][_0xb7f248(0x34f)],this[_0xb7f248(0x1ab)],+(this[_0xb7f248(0x205)]===_0xb7f248(0x394))],0x54);let _0x672301=this[_0xb7f248(0x427)];_0x672301&&(_0x4708cf[_0xb7f248(0x476)]([0x1,..._0x672301[_0xb7f248(0x214)]],0x58),_0x4708cf[_0xb7f248(0x476)]([_0x672301[_0xb7f248(0x36a)],_0x672301[_0xb7f248(0x495)],..._0x672301[_0xb7f248(0x4ca)]],0x5c),_0x4708cf[_0xb7f248(0x476)]([..._0x672301['latitudeRadians'],..._0x672301[_0xb7f248(0x3cc)]],0x60)),this['getDevice']()[_0xb7f248(0x21d)][_0xb7f248(0x41b)](this[_0xb7f248(0x2f2)](),0x0,_0x4708cf);}[_0x328247(0x192)](){const _0x423cd4=_0x328247;let _0x5792b4=this['metadata'],_0x3cb0bd=this['atlas'];if(!_0x5792b4||!_0x3cb0bd)return;let _0x3ee6e1=_0x3cb0bd[_0x423cd4(0x334)],_0x19f7fb=new Uint32Array(0x60/0x4),_0x2332fd=Math['ceil'](_0x5792b4[_0x423cd4(0x3c7)][_0x423cd4(0x1c1)]/_0x5792b4['brickWidth']),_0x4dfb9a=Math[_0x423cd4(0x22e)](_0x5792b4[_0x423cd4(0x2fa)]['count']/_0x5792b4['brickHeight']),_0x463b6b=Math[_0x423cd4(0x22e)](_0x5792b4['zAxis']['count']/_0x5792b4[_0x423cd4(0x3f4)]);_0x19f7fb[_0x423cd4(0x476)]([_0x5792b4[_0x423cd4(0x3c7)][_0x423cd4(0x1c1)],_0x5792b4['yAxis'][_0x423cd4(0x1c1)],_0x5792b4[_0x423cd4(0x1d5)][_0x423cd4(0x1c1)],0x0],0x0),_0x19f7fb['set']([_0x5792b4[_0x423cd4(0x499)],_0x5792b4[_0x423cd4(0x27a)],_0x5792b4['brickDepth'],0x1],0x4),_0x19f7fb[_0x423cd4(0x476)]([_0x2332fd,_0x4dfb9a,_0x463b6b,0x0],0x8),_0x19f7fb[_0x423cd4(0x476)]([_0x3ee6e1[_0x423cd4(0x2a7)],_0x3ee6e1['slotCountY'],_0x3ee6e1['slotCountZ'],_0x3ee6e1[_0x423cd4(0x34a)]],0xc),_0x19f7fb[_0x423cd4(0x476)]([(_0x5792b4[_0x423cd4(0x499)]+0x2)*_0x3ee6e1[_0x423cd4(0x2a7)],(_0x5792b4['brickHeight']+0x2)*_0x3ee6e1[_0x423cd4(0x32e)],(_0x5792b4[_0x423cd4(0x3f4)]+0x2)*_0x3ee6e1[_0x423cd4(0x2f1)],0x0],0x10),new Float32Array(_0x19f7fb[_0x423cd4(0x32a)])[_0x423cd4(0x476)]([_0x5792b4['noData']??0x0,_0x5792b4['noData']===void 0x0?0x0:0x1,0x0,0x0],0x14),this['getDevice']()['queue']['writeBuffer'](this[_0x423cd4(0x49e)](),0x0,_0x19f7fb);}[_0x328247(0x2af)](_0x2a5bf8,_0x3d145e){const _0x37519a=_0x328247;let _0x533c54=_0x2a5bf8[_0x37519a(0x489)]({'label':_0x37519a(0x31e),'colorAttachments':[{'view':_0x3d145e,'clearValue':{'r':0x0,'g':0x0,'b':0x0,'a':0x0},'loadOp':'clear','storeOp':'store'}],'depthStencilAttachment':{'view':this['getAttachments']()['sceneDepthView'],'depthClearValue':0x1,'depthLoadOp':'clear','depthStoreOp':'store'}});this[_0x37519a(0x2d2)](_0x533c54,'scene'),this[_0x37519a(0x297)](_0x533c54,_0x37519a(0x33a)),_0x533c54['end']();}[_0x328247(0x44a)](_0x558bce,_0x3dec31){const _0x6ec2a9=_0x328247;if(!this[_0x6ec2a9(0x44e)]||!this[_0x6ec2a9(0x257)]||!this[_0x6ec2a9(0x4bc)]||!this[_0x6ec2a9(0x1a1)])return;let _0x5a231f=_0x558bce['beginRenderPass']({'label':_0x6ec2a9(0x3c9),'colorAttachments':[{'view':_0x3dec31,'loadOp':_0x6ec2a9(0x3f1),'storeOp':_0x6ec2a9(0x42a)}]});_0x5a231f[_0x6ec2a9(0x4bd)](this[_0x6ec2a9(0x1a1)]),_0x5a231f[_0x6ec2a9(0x421)](0x0,this[_0x6ec2a9(0x4bc)]),_0x5a231f[_0x6ec2a9(0x421)](0x1,this[_0x6ec2a9(0x44e)]),_0x5a231f['setBindGroup'](0x2,this[_0x6ec2a9(0x257)]),_0x5a231f[_0x6ec2a9(0x2b3)](0x3),_0x5a231f[_0x6ec2a9(0x24b)]();}[_0x328247(0x339)](_0x2c521d,_0x16f185){const _0x5ba690=_0x328247;let _0x179e20=_0x2c521d[_0x5ba690(0x489)]({'label':_0x5ba690(0x1f5),'colorAttachments':[{'view':_0x16f185,'loadOp':'load','storeOp':'store'}]});this[_0x5ba690(0x2d2)](_0x179e20,_0x5ba690(0x305)),this[_0x5ba690(0x297)](_0x179e20,'always-visible'),_0x179e20['end']();}[_0x328247(0x2d2)](_0x14cc1e,_0x4d9fff){const _0x33ae61=_0x328247;let _0x4e44b5=this['geometryBindGroup'];if(!_0x4e44b5)return;let _0xd13fad=_0x4d9fff===_0x33ae61(0x33a)?this[_0x33ae61(0x1cf)]:this[_0x33ae61(0x30f)],_0x50f970=_0x4d9fff===_0x33ae61(0x33a)?this[_0x33ae61(0x28d)]:this[_0x33ae61(0x439)];_0xd13fad&&(_0x14cc1e['setPipeline'](_0xd13fad),_0x14cc1e['setBindGroup'](0x0,_0x4e44b5),this[_0x33ae61(0x400)]?.[_0x33ae61(0x2b3)](_0x14cc1e,_0x33ae61(0x458),_0x4d9fff),this[_0x33ae61(0x298)]?.[_0x33ae61(0x2b3)](_0x14cc1e,_0x33ae61(0x458),_0x4d9fff)),_0x50f970&&(_0x14cc1e[_0x33ae61(0x4bd)](_0x50f970),_0x14cc1e[_0x33ae61(0x421)](0x0,_0x4e44b5),this[_0x33ae61(0x400)]?.['draw'](_0x14cc1e,_0x33ae61(0x285),_0x4d9fff),this[_0x33ae61(0x298)]?.[_0x33ae61(0x2b3)](_0x14cc1e,_0x33ae61(0x285),_0x4d9fff));}[_0x328247(0x297)](_0x200a95,_0xf34bf2){const _0x3dc5a5=_0x328247;let _0x3795a0=_0xf34bf2===_0x3dc5a5(0x33a)?this[_0x3dc5a5(0x34d)]:this['overlaySlicePipeline'];!_0x3795a0||!this[_0x3dc5a5(0x206)]||!this[_0x3dc5a5(0x44e)]||!this[_0x3dc5a5(0x257)]||(_0x200a95[_0x3dc5a5(0x421)](0x0,this['geometryBindGroup']),_0x200a95[_0x3dc5a5(0x421)](0x1,this[_0x3dc5a5(0x44e)]),_0x200a95[_0x3dc5a5(0x421)](0x2,this[_0x3dc5a5(0x257)]),this[_0x3dc5a5(0x3c8)]?.[_0x3dc5a5(0x2b3)](_0x200a95,_0x3795a0,_0xf34bf2));}['watchDeviceLost'](_0x2fefec){const _0x259512=_0x328247;_0x2fefec[_0x259512(0x253)][_0x259512(0x347)](_0x5e2742=>{const _0xe3bd46=_0x259512;if(this['device']!==_0x2fefec||this[_0xe3bd46(0x1b1)]===_0xe3bd46(0x224))return;this[_0xe3bd46(0x1b1)]=_0xe3bd46(0x253),console[_0xe3bd46(0x1d7)]('WebGPU\x20volume\x20device\x20was\x20lost:\x20'+_0x5e2742[_0xe3bd46(0x448)]+_0xe3bd46(0x182));let _0x1f3228=this['canvas'];this[_0xe3bd46(0x2c4)](),_0x1f3228&&this[_0xe3bd46(0x47a)](_0x1f3228)['catch'](_0x26da3a=>{const _0x2bfa15=_0xe3bd46;console['error'](_0x2bfa15(0x306),_0x26da3a);});});}[_0x328247(0x2c4)](){const _0x8df06b=_0x328247;this[_0x8df06b(0x185)]+=0x1,this[_0x8df06b(0x3e0)](new DOMException(_0x8df06b(0x44c),_0x8df06b(0x22f))),this['atlas']?.[_0x8df06b(0x179)](),this[_0x8df06b(0x359)]?.['destroy'](),this['profileResources']?.['destroy'](),this['sliceResources']?.['destroy'](),this[_0x8df06b(0x298)]?.[_0x8df06b(0x179)](),this[_0x8df06b(0x4a4)]?.[_0x8df06b(0x179)](),this[_0x8df06b(0x2a1)]?.[_0x8df06b(0x179)](),this[_0x8df06b(0x193)]?.[_0x8df06b(0x179)](),this[_0x8df06b(0x44d)]?.['destroy']();try{this[_0x8df06b(0x355)]?.['unconfigure']();}catch{}this['device']?.['destroy'](),this[_0x8df06b(0x2eb)]=null,this[_0x8df06b(0x4af)]=null,this['context']=null,this[_0x8df06b(0x1f4)]=null,this['sceneParamsBuffer']=null,this['volumeParamsBuffer']=null,this['uploadStagingBuffer']=null,this[_0x8df06b(0x3a4)]=0x0,this[_0x8df06b(0x3b2)]=null,this[_0x8df06b(0x2d7)]=null,this['volumeBindGroupLayout']=null,this[_0x8df06b(0x4cf)]=null,this[_0x8df06b(0x1af)]=null,this[_0x8df06b(0x206)]=null,this[_0x8df06b(0x4bc)]=null,this[_0x8df06b(0x44e)]=null,this[_0x8df06b(0x257)]=null,this['volumePipeline']=null,this[_0x8df06b(0x1cf)]=null,this['sceneLinePipeline']=null,this['overlayTrianglePipeline']=null,this[_0x8df06b(0x439)]=null,this['sceneSlicePipeline']=null,this['overlaySlicePipeline']=null,this['attachments']=null,this['atlas']=null,this[_0x8df06b(0x359)]=null,this[_0x8df06b(0x400)]=null,this[_0x8df06b(0x3c8)]=null,this[_0x8df06b(0x298)]=null,this[_0x8df06b(0x1cd)]=!0x1,this[_0x8df06b(0x25d)]=0x0,this[_0x8df06b(0x304)]=0x0;}[_0x328247(0x1f3)](){const _0xad977d=_0x328247;if(!this['device'])throw Error(_0xad977d(0x1c9));return this[_0xad977d(0x4af)];}[_0x328247(0x29f)](){const _0x4e654e=_0x328247;if(!this['context'])throw Error(_0x4e654e(0x328));return this['context'];}[_0x328247(0x35b)](){const _0x279615=_0x328247;if(!this[_0x279615(0x1f4)])throw Error(_0x279615(0x1bf));return this[_0x279615(0x1f4)];}['getCanvas'](){const _0x2c8906=_0x328247;if(!this[_0x2c8906(0x3ea)])throw Error('WebGPU\x20volume\x20canvas\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20Canvas\x20尚未初始化。');return this[_0x2c8906(0x3ea)];}[_0x328247(0x3de)](){const _0x5388ce=_0x328247;if(!this[_0x5388ce(0x4a4)])throw Error(_0x5388ce(0x255));return this['attachments'];}[_0x328247(0x46d)](){const _0x350eee=_0x328247;if(!this[_0x350eee(0x483)])throw Error(_0x350eee(0x4b4));return this[_0x350eee(0x483)];}['getTransferResources'](){const _0x18fae4=_0x328247;if(!this['transferResources'])throw Error(_0x18fae4(0x486));return this[_0x18fae4(0x359)];}[_0x328247(0x2dc)](){const _0x3620e5=_0x328247;if(!this[_0x3620e5(0x400)])throw Error('WebGPU\x20profile\x20resources\x20are\x20unavailable.\x20WebGPU\x20剖面资源不可用。');return this[_0x3620e5(0x400)];}['getSliceResources'](){const _0x3e9819=_0x328247;if(!this['sliceResources'])throw Error('WebGPU\x20slice\x20resources\x20are\x20unavailable.\x20WebGPU\x20切面资源不可用。');return this[_0x3e9819(0x3c8)];}[_0x328247(0x440)](){const _0x37d363=_0x328247;if(!this[_0x37d363(0x298)])throw Error('WebGPU\x20axis\x20resources\x20are\x20unavailable.\x20WebGPU\x20轴线资源不可用。');return this[_0x37d363(0x298)];}[_0x328247(0x277)](){const _0x319e1c=_0x328247;if(!this[_0x319e1c(0x2d7)])throw Error(_0x319e1c(0x1a2));return this['sceneBindGroupLayout'];}[_0x328247(0x47b)](){const _0x4c172d=_0x328247;if(!this[_0x4c172d(0x3b2)])throw Error(_0x4c172d(0x37e));return this['geometryBindGroupLayout'];}[_0x328247(0x243)](){const _0xcd96de=_0x328247;if(!this[_0xcd96de(0x219)])throw Error(_0xcd96de(0x3ca));return this[_0xcd96de(0x219)];}['getTransferBindGroupLayout'](){const _0x20f29d=_0x328247;if(!this[_0x20f29d(0x4cf)])throw Error(_0x20f29d(0x22c));return this['transferBindGroupLayout'];}[_0x328247(0x238)](){const _0x58e7bb=_0x328247;if(!this[_0x58e7bb(0x1af)])throw Error('WebGPU\x20slice\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20切面绑定布局不可用。');return this[_0x58e7bb(0x1af)];}['getSceneParamsBuffer'](){if(!this['sceneParamsBuffer'])throw Error('WebGPU\x20scene\x20params\x20buffer\x20is\x20unavailable.\x20WebGPU\x20场景参数\x20Buffer\x20不可用。');return this['sceneParamsBuffer'];}[_0x328247(0x49e)](){const _0x4d8e0b=_0x328247;if(!this[_0x4d8e0b(0x193)])throw Error(_0x4d8e0b(0x493));return this[_0x4d8e0b(0x193)];}};const getAxis=(_0x50dc30,_0x3dae7f)=>_0x3dae7f==='x'?_0x50dc30[_0x328247(0x3c7)]:_0x3dae7f==='y'?_0x50dc30[_0x328247(0x2fa)]:_0x50dc30[_0x328247(0x1d5)],clampPosition=(_0x5deac7,_0x4e2e40,_0x34205d)=>{const _0x24ec7f=_0x328247;if(!Number[_0x24ec7f(0x410)](_0x34205d))throw Error('切面位置必须是有限数。');let _0x29b7e=getAxis(_0x5deac7,_0x4e2e40),_0x109988=Math[_0x24ec7f(0x4ab)](_0x29b7e[_0x24ec7f(0x4b1)],_0x29b7e[_0x24ec7f(0x24b)]),_0x1e8004=Math[_0x24ec7f(0x4b3)](_0x29b7e[_0x24ec7f(0x4b1)],_0x29b7e[_0x24ec7f(0x24b)]);return Math['min'](_0x1e8004,Math[_0x24ec7f(0x4b3)](_0x109988,_0x34205d));},clonePreview=_0xcca7a3=>_0xcca7a3?{..._0xcca7a3}:null,cloneLockedSlice=_0x125344=>({..._0x125344}),validateAxes=_0x53aa38=>{const _0x17cd9f=_0x328247;for(let _0x19e898 of[_0x53aa38[_0x17cd9f(0x3c7)],_0x53aa38['yAxis'],_0x53aa38['zAxis']]){if(!Number[_0x17cd9f(0x410)](_0x19e898[_0x17cd9f(0x4b1)])||!Number[_0x17cd9f(0x410)](_0x19e898[_0x17cd9f(0x24b)]))throw Error(_0x17cd9f(0x27f));if(!(Number[_0x17cd9f(0x474)](_0x19e898[_0x17cd9f(0x1c1)])&&_0x19e898[_0x17cd9f(0x1c1)]>0x0))throw Error(_0x17cd9f(0x37a));if(_0x19e898[_0x17cd9f(0x1c1)]>0x1&&_0x19e898['start']===_0x19e898[_0x17cd9f(0x24b)])throw Error(_0x17cd9f(0x17f));}},volumeAxisValueToNormalized=(_0x763d70,_0x4ce516)=>_0x763d70['start']===_0x763d70[_0x328247(0x24b)]?0x0:(_0x4ce516-_0x763d70['start'])/(_0x763d70[_0x328247(0x24b)]-_0x763d70['start']),normalizedToVolumeAxisValue=(_0x1393ea,_0x1a28be)=>_0x1393ea[_0x328247(0x4b1)]+_0x1a28be*(_0x1393ea['end']-_0x1393ea[_0x328247(0x4b1)]);var SliceState=class{[_0x328247(0x273)];[_0x328247(0x3d8)]=new Set();[_0x328247(0x1e7)];['maxLockedSlices'];[_0x328247(0x199)];[_0x328247(0x1df)]=0x1;[_0x328247(0x23c)]=null;['slices']=[];[_0x328247(0x40a)]='auto';[_0x328247(0x1ab)];constructor(_0x347f10,_0x40fde4={}){const _0x3a0978=_0x328247;if(validateAxes(_0x347f10),this['axes']={'xAxis':{..._0x347f10[_0x3a0978(0x3c7)]},'yAxis':{..._0x347f10[_0x3a0978(0x2fa)]},'zAxis':{..._0x347f10['zAxis']}},this[_0x3a0978(0x1ab)]=_0x40fde4[_0x3a0978(0x1ab)]??0.25,this['depthMode']=_0x40fde4[_0x3a0978(0x199)]??_0x3a0978(0x33a),this['maxLockedSlices']=_0x40fde4[_0x3a0978(0x174)]??0xc,this[_0x3a0978(0x1e7)]=_0x40fde4[_0x3a0978(0x1e7)],!(this[_0x3a0978(0x1ab)]>=0x0&&this[_0x3a0978(0x1ab)]<=0x1))throw Error(_0x3a0978(0x3e2));if(this[_0x3a0978(0x199)]!==_0x3a0978(0x33a)&&this[_0x3a0978(0x199)]!==_0x3a0978(0x305))throw Error(_0x3a0978(0x223));if(!(Number[_0x3a0978(0x474)](this[_0x3a0978(0x174)])&&this[_0x3a0978(0x174)]>0x0))throw Error('maxLockedSlices\x20必须是正整数。');}get['preview'](){return clonePreview(this['currentPreview']);}get[_0x328247(0x4cd)](){const _0x55d174=_0x328247;return this[_0x55d174(0x4a1)][_0x55d174(0x352)](cloneLockedSlice);}get[_0x328247(0x210)](){const _0x1cb220=_0x328247;return this[_0x1cb220(0x40a)];}get['snapshot'](){const _0x14c4e6=_0x328247;return{'preview':this[_0x14c4e6(0x387)],'lockedSlices':this[_0x14c4e6(0x4cd)],'toolMode':this[_0x14c4e6(0x40a)],'volumeDimFactor':this['volumeDimFactor']};}[_0x328247(0x3ab)](_0x56bac6){const _0x2b745b=_0x328247;return this[_0x2b745b(0x3d8)][_0x2b745b(0x18a)](_0x56bac6),_0x56bac6(this[_0x2b745b(0x376)]),()=>this[_0x2b745b(0x3d8)][_0x2b745b(0x434)](_0x56bac6);}get[_0x328247(0x2c3)](){const _0x5bdf14=_0x328247;return{'xAxis':{...this['axes']['xAxis']},'yAxis':{...this['axes'][_0x5bdf14(0x2fa)]},'zAxis':{...this[_0x5bdf14(0x273)]['zAxis']}};}['setAxes'](_0x2ec245){const _0x337796=_0x328247;validateAxes(_0x2ec245),this[_0x337796(0x273)]={'xAxis':{..._0x2ec245[_0x337796(0x3c7)]},'yAxis':{..._0x2ec245[_0x337796(0x2fa)]},'zAxis':{..._0x2ec245['zAxis']}},this[_0x337796(0x23c)]&&(this[_0x337796(0x23c)][_0x337796(0x2b1)]=clampPosition(this['axes'],this['currentPreview'][_0x337796(0x171)],this[_0x337796(0x23c)][_0x337796(0x2b1)])),this['slices']=this[_0x337796(0x4a1)]['map'](_0x11956c=>({..._0x11956c,'position':clampPosition(this['axes'],_0x11956c[_0x337796(0x171)],_0x11956c[_0x337796(0x2b1)])})),this[_0x337796(0x3c5)]();}[_0x328247(0x46c)](_0x1ece6a){const _0xa2b427=_0x328247;this[_0xa2b427(0x40a)]!==_0x1ece6a&&(this[_0xa2b427(0x40a)]=_0x1ece6a,(_0x1ece6a===null||_0x1ece6a!==_0xa2b427(0x449)&&this['currentPreview']?.['axis']!==_0x1ece6a)&&(this[_0xa2b427(0x23c)]=null),this[_0xa2b427(0x3c5)]());}[_0x328247(0x435)](_0x55f608,_0x5c6464){const _0x3f2d9e=_0x328247;if(this['mode']===null||this[_0x3f2d9e(0x40a)]!=='auto'&&this[_0x3f2d9e(0x40a)]!==_0x55f608)return;let _0x8efbe3=clampPosition(this[_0x3f2d9e(0x273)],_0x55f608,_0x5c6464);this['currentPreview']?.['axis']===_0x55f608&&this[_0x3f2d9e(0x23c)][_0x3f2d9e(0x2b1)]===_0x8efbe3||(this[_0x3f2d9e(0x23c)]={'axis':_0x55f608,'position':_0x8efbe3},this['notify']());}[_0x328247(0x318)](){const _0x32999f=_0x328247;this['currentPreview']&&(this['currentPreview']=null,this[_0x32999f(0x3c5)]());}[_0x328247(0x3b9)](_0x13aca2=this[_0x328247(0x199)]){const _0x1705bd=_0x328247;return this['currentPreview']?this[_0x1705bd(0x262)](this[_0x1705bd(0x23c)][_0x1705bd(0x171)],this['currentPreview']['position'],_0x13aca2):null;}[_0x328247(0x262)](_0x9bc31c,_0x48eefc,_0x45394d=this[_0x328247(0x199)]){const _0x18ab20=_0x328247;if(this[_0x18ab20(0x4a1)]['length']>=this['maxLockedSlices'])return this['onLimitReached']?.(this[_0x18ab20(0x174)]),null;let _0x2bffd2={'id':'volume-slice-'+this[_0x18ab20(0x1df)],'axis':_0x9bc31c,'position':clampPosition(this[_0x18ab20(0x273)],_0x9bc31c,_0x48eefc),'depthMode':_0x45394d,'visible':!0x0};return this[_0x18ab20(0x1df)]+=0x1,this[_0x18ab20(0x4a1)]=[...this[_0x18ab20(0x4a1)],_0x2bffd2],this['notify'](),cloneLockedSlice(_0x2bffd2);}[_0x328247(0x1b6)](_0xf245ab,_0x2e403e){const _0x331292=_0x328247;let _0x2534e4=this['slices'][_0x331292(0x428)](_0x5330cd=>_0x5330cd['id']===_0xf245ab);if(_0x2534e4<0x0)return;let _0xb83737=this[_0x331292(0x4a1)][_0x2534e4],_0x206e1c=clampPosition(this[_0x331292(0x273)],_0xb83737[_0x331292(0x171)],_0x2e403e);_0x206e1c!==_0xb83737[_0x331292(0x2b1)]&&(this['slices']=this[_0x331292(0x4a1)][_0x331292(0x352)](_0x1ee355=>_0x1ee355['id']===_0xf245ab?{..._0x1ee355,'position':_0x206e1c}:_0x1ee355),this['notify']());}[_0x328247(0x303)](_0x4d860f){const _0x12e795=_0x328247;let _0x4649de=this[_0x12e795(0x4a1)][_0x12e795(0x164)](_0x2e360d=>_0x2e360d['id']!==_0x4d860f);_0x4649de[_0x12e795(0x34f)]!==this['slices'][_0x12e795(0x34f)]&&(this['slices']=_0x4649de,this[_0x12e795(0x3c5)]());}[_0x328247(0x3d7)](){const _0x485ab6=_0x328247;this[_0x485ab6(0x4a1)]['length']!==0x0&&(this[_0x485ab6(0x4a1)]=[],this[_0x485ab6(0x3c5)]());}['notify'](){const _0xdba9f0=_0x328247;let _0x2b000a=this[_0xdba9f0(0x376)];for(let _0x204d47 of this[_0xdba9f0(0x3d8)])_0x204d47(_0x2b000a);}};const axisEndpoints=_0x565467=>_0x565467==='x'?[[0x0,0x0,0x0],[0x1,0x0,0x0]]:_0x565467==='y'?[[0x0,0x0,0x0],[0x0,0x1,0x0]]:[[0x0,0x0,0x0],[0x0,0x0,0x1]],projectAxis=(_0x49a1de,_0x10a2ac)=>{const _0xf029d0=_0x328247;let _0x4fc7f9=multiplyMatrices(_0x10a2ac['viewProjectionMatrix'],_0x10a2ac[_0xf029d0(0x4c9)]),[_0x28339a,_0x26bb81]=axisEndpoints(_0x49a1de),_0xcf57b5=projectPointToViewport(_0x4fc7f9,_0x28339a,_0x10a2ac[_0xf029d0(0x279)],_0x10a2ac[_0xf029d0(0x23d)]),_0x59d834=projectPointToViewport(_0x4fc7f9,_0x26bb81,_0x10a2ac[_0xf029d0(0x279)],_0x10a2ac['viewportHeight']);return!_0xcf57b5||!_0x59d834?null:{'axis':_0x49a1de,'startX':_0xcf57b5[0x0],'startY':_0xcf57b5[0x1],'endX':_0x59d834[0x0],'endY':_0x59d834[0x1]};},hitProjectedAxis=(_0x5caffa,_0x4979a5,_0x4dd4a6)=>{const _0xbe8dbc=_0x328247;let _0x1a695c=_0x5caffa['endX']-_0x5caffa[_0xbe8dbc(0x406)],_0x25859e=_0x5caffa[_0xbe8dbc(0x32f)]-_0x5caffa['startY'],_0x30b2e7=_0x1a695c*_0x1a695c+_0x25859e*_0x25859e,_0x4e0c8d=_0x30b2e7===0x0?0x0:((_0x4979a5-_0x5caffa[_0xbe8dbc(0x406)])*_0x1a695c+(_0x4dd4a6-_0x5caffa[_0xbe8dbc(0x175)])*_0x25859e)/_0x30b2e7,_0xc0891f=Math[_0xbe8dbc(0x4ab)](0x1,Math['max'](0x0,_0x4e0c8d)),_0x3d8b2f=_0x5caffa[_0xbe8dbc(0x406)]+_0xc0891f*_0x1a695c,_0x3d1883=_0x5caffa[_0xbe8dbc(0x175)]+_0xc0891f*_0x25859e;return{'axis':_0x5caffa['axis'],'distance':Math['hypot'](_0x4979a5-_0x3d8b2f,_0x4dd4a6-_0x3d1883),'normalizedPosition':_0xc0891f};},eventViewportPoint=(_0x81c82,_0x36f223,_0xb1eaeb)=>{const _0x25d12f=_0x328247;let _0x1a35eb=_0x36f223[_0x25d12f(0x16e)]();return[_0x1a35eb[_0x25d12f(0x25d)]===0x0?0x0:(_0x81c82[_0x25d12f(0x488)]-_0x1a35eb[_0x25d12f(0x39e)])*_0xb1eaeb[_0x25d12f(0x279)]/_0x1a35eb['width'],_0x1a35eb[_0x25d12f(0x304)]===0x0?0x0:(_0x81c82[_0x25d12f(0x316)]-_0x1a35eb['top'])*_0xb1eaeb[_0x25d12f(0x23d)]/_0x1a35eb['height']];},realAxisPosition=(_0x4c93a8,_0x2d4eb2,_0xbaec9f)=>{const _0x3b2f46=_0x328247;let _0x5483a4=_0x4c93a8['axisDefinitions'];return normalizedToVolumeAxisValue(_0x2d4eb2==='x'?_0x5483a4[_0x3b2f46(0x3c7)]:_0x2d4eb2==='y'?_0x5483a4['yAxis']:_0x5483a4[_0x3b2f46(0x1d5)],_0xbaec9f);};var SliceInteractionController=class{['element'];[_0x328247(0x1f8)];[_0x328247(0x2f3)];['hitTolerance'];[_0x328247(0x184)];[_0x328247(0x386)];['onInteractionEnd'];[_0x328247(0x443)]=null;[_0x328247(0x48c)]=null;[_0x328247(0x1d0)]=!0x1;constructor(_0xdbbb12,_0x5194d8,_0x5b7e93,_0x2c1941={}){const _0x16525d=_0x328247;this[_0x16525d(0x239)]=_0xdbbb12,this[_0x16525d(0x1f8)]=_0x5194d8,this[_0x16525d(0x2f3)]=_0x5b7e93,this[_0x16525d(0x16a)]=_0x2c1941[_0x16525d(0x3bf)]??0xa,this['axisHysteresis']=_0x2c1941[_0x16525d(0x228)]??0x4,this['onInteractionStart']=_0x2c1941[_0x16525d(0x386)],this[_0x16525d(0x1c8)]=_0x2c1941[_0x16525d(0x1c8)];}[_0x328247(0x47a)](){const _0x449374=_0x328247;this[_0x449374(0x1d0)]||(this[_0x449374(0x1d0)]=!0x0,this['element'][_0x449374(0x26c)](_0x449374(0x21b),this['handlePointerDown'],!0x0),this['element'][_0x449374(0x26c)](_0x449374(0x419),this['handlePointerMove'],!0x0),this[_0x449374(0x239)][_0x449374(0x26c)](_0x449374(0x2e7),this['handlePointerLeave'],!0x0),window[_0x449374(0x26c)](_0x449374(0x419),this[_0x449374(0x481)],!0x0),window['addEventListener'](_0x449374(0x241),this[_0x449374(0x2ca)],!0x0),window[_0x449374(0x26c)](_0x449374(0x201),this[_0x449374(0x2ca)],!0x0));}[_0x328247(0x2e6)](_0x41766d,_0x2106a4){const _0x4e2e57=_0x328247;let _0x346bd3=this[_0x4e2e57(0x1f8)][_0x4e2e57(0x4cd)][_0x4e2e57(0x302)](_0x49679e=>_0x49679e['id']===_0x41766d);_0x346bd3&&(this[_0x4e2e57(0x443)]={'kind':_0x4e2e57(0x3a2),'axis':_0x346bd3[_0x4e2e57(0x171)],'pointerId':_0x2106a4[_0x4e2e57(0x478)],'sliceId':_0x41766d,'startX':_0x2106a4[_0x4e2e57(0x488)],'startY':_0x2106a4[_0x4e2e57(0x316)],'moved':!0x1},this[_0x4e2e57(0x386)]?.(),_0x2106a4[_0x4e2e57(0x39b)](),_0x2106a4[_0x4e2e57(0x251)]());}[_0x328247(0x179)](){const _0x43cedd=_0x328247;this['initialized']&&(this[_0x43cedd(0x1d0)]=!0x1,this[_0x43cedd(0x239)][_0x43cedd(0x28b)](_0x43cedd(0x21b),this[_0x43cedd(0x26e)],!0x0),this[_0x43cedd(0x239)][_0x43cedd(0x28b)](_0x43cedd(0x419),this[_0x43cedd(0x4c2)],!0x0),this[_0x43cedd(0x239)][_0x43cedd(0x28b)](_0x43cedd(0x2e7),this[_0x43cedd(0x446)],!0x0),window['removeEventListener'](_0x43cedd(0x419),this['handleWindowPointerMove'],!0x0),window[_0x43cedd(0x28b)](_0x43cedd(0x241),this['handlePointerUp'],!0x0),window[_0x43cedd(0x28b)](_0x43cedd(0x201),this[_0x43cedd(0x2ca)],!0x0),this[_0x43cedd(0x443)]&&this['onInteractionEnd']?.(),this[_0x43cedd(0x443)]=null,this['previousAxis']=null,this['state']['clearPreview']());}[_0x328247(0x3bd)](_0x582b00,_0x3602ac){const _0x14b232=_0x328247;let _0x37c05d=this[_0x14b232(0x2f3)]();if(!_0x37c05d)return null;let [_0x325c94,_0x12064c]=eventViewportPoint(_0x582b00,this[_0x14b232(0x239)],_0x37c05d),_0x15bc7e=this[_0x14b232(0x1f8)][_0x14b232(0x210)];if(_0x15bc7e===null)return null;let _0x1a1c2d=(_0x3602ac?[_0x3602ac]:_0x15bc7e===_0x14b232(0x449)?['x','y','z']:[_0x15bc7e])['map'](_0x4f0e1e=>projectAxis(_0x4f0e1e,_0x37c05d))['filter'](_0x404797=>_0x404797!==null)[_0x14b232(0x352)](_0x54833c=>hitProjectedAxis(_0x54833c,_0x325c94,_0x12064c));if(_0x1a1c2d[_0x14b232(0x34f)]===0x0)return null;_0x1a1c2d[_0x14b232(0x3f0)]((_0x580dc1,_0x2a3162)=>_0x580dc1['distance']-_0x2a3162[_0x14b232(0x2aa)]);let _0x541324=_0x1a1c2d[0x0];if(!_0x3602ac&&this[_0x14b232(0x48c)]){let _0x11d53f=_0x1a1c2d['find'](_0x601845=>_0x601845[_0x14b232(0x171)]===this['previousAxis']);_0x11d53f&&_0x11d53f['distance']<=_0x541324['distance']+this[_0x14b232(0x184)]&&(_0x541324=_0x11d53f);}return!_0x3602ac&&_0x541324[_0x14b232(0x2aa)]>this[_0x14b232(0x16a)]?null:_0x541324;}[_0x328247(0x468)](_0x46b66c,_0x2b6096){const _0x1c13d6=_0x328247;let _0x5c4aa9=realAxisPosition(this[_0x1c13d6(0x1f8)],_0x46b66c[_0x1c13d6(0x171)],_0x46b66c[_0x1c13d6(0x2fb)]);_0x2b6096?this[_0x1c13d6(0x1f8)][_0x1c13d6(0x1b6)](_0x2b6096,_0x5c4aa9):this[_0x1c13d6(0x1f8)][_0x1c13d6(0x435)](_0x46b66c['axis'],_0x5c4aa9),this[_0x1c13d6(0x48c)]=_0x46b66c[_0x1c13d6(0x171)];}[_0x328247(0x26e)]=_0x21c0aa=>{const _0x2bec3a=_0x328247;if(_0x21c0aa[_0x2bec3a(0x22d)]!==0x0||this[_0x2bec3a(0x443)])return;let _0x129ea7=this[_0x2bec3a(0x3bd)](_0x21c0aa);_0x129ea7&&(this[_0x2bec3a(0x468)](_0x129ea7),this[_0x2bec3a(0x443)]={'kind':_0x2bec3a(0x387),'axis':_0x129ea7[_0x2bec3a(0x171)],'pointerId':_0x21c0aa[_0x2bec3a(0x478)],'startX':_0x21c0aa['clientX'],'startY':_0x21c0aa['clientY'],'moved':!0x1},this[_0x2bec3a(0x386)]?.(),this[_0x2bec3a(0x239)][_0x2bec3a(0x445)]?.(_0x21c0aa[_0x2bec3a(0x478)]),_0x21c0aa['preventDefault'](),_0x21c0aa['stopPropagation']());};[_0x328247(0x4c2)]=_0x4c48ac=>{const _0x3eccb6=_0x328247;if(this[_0x3eccb6(0x443)])return;let _0x5a9dc3=this['findAxisHit'](_0x4c48ac);if(!_0x5a9dc3){this[_0x3eccb6(0x48c)]=null,this[_0x3eccb6(0x1f8)][_0x3eccb6(0x318)]();return;}this[_0x3eccb6(0x468)](_0x5a9dc3);};['handleWindowPointerMove']=_0x40a49b=>{const _0x22d1bd=_0x328247;let _0x346a26=this['activePointer'];if(!_0x346a26||_0x346a26[_0x22d1bd(0x478)]!==_0x40a49b[_0x22d1bd(0x478)])return;let _0x1c6044=this['findAxisHit'](_0x40a49b,_0x346a26[_0x22d1bd(0x171)]);_0x1c6044&&(Math[_0x22d1bd(0x24d)](_0x40a49b[_0x22d1bd(0x488)]-_0x346a26[_0x22d1bd(0x406)],_0x40a49b[_0x22d1bd(0x316)]-_0x346a26[_0x22d1bd(0x175)])>0x4&&(_0x346a26['moved']=!0x0),this[_0x22d1bd(0x468)](_0x1c6044,_0x346a26[_0x22d1bd(0x217)]),_0x40a49b[_0x22d1bd(0x39b)](),_0x40a49b[_0x22d1bd(0x251)]());};[_0x328247(0x2ca)]=_0x7bf7fb=>{const _0x57253c=_0x328247;let _0x387069=this['activePointer'];!_0x387069||_0x387069['pointerId']!==_0x7bf7fb[_0x57253c(0x478)]||(_0x387069[_0x57253c(0x466)]==='preview'&&!_0x387069[_0x57253c(0x45f)]&&this[_0x57253c(0x1f8)][_0x57253c(0x3b9)](),this[_0x57253c(0x239)][_0x57253c(0x24c)]?.(_0x7bf7fb[_0x57253c(0x478)])&&this[_0x57253c(0x239)][_0x57253c(0x399)](_0x7bf7fb[_0x57253c(0x478)]),this[_0x57253c(0x443)]=null,this['onInteractionEnd']?.(),_0x7bf7fb['preventDefault'](),_0x7bf7fb[_0x57253c(0x251)]());};['handlePointerLeave']=()=>{const _0x202e52=_0x328247;this[_0x202e52(0x443)]||this['state'][_0x202e52(0x318)]();};};const axisLabel=_0x356acd=>_0x356acd[_0x328247(0x49f)](),defaultFormatPosition=(_0x49000f,_0x234392)=>axisLabel(_0x49000f)+'\x20'+Number(_0x234392[_0x328247(0x362)](0x4)),getAxisDefinition=(_0x39a1ed,_0x4cc1ec)=>{const _0x54f384=_0x328247;let _0x299248=_0x39a1ed['axisDefinitions'];return _0x4cc1ec==='x'?_0x299248[_0x54f384(0x3c7)]:_0x4cc1ec==='y'?_0x299248['yAxis']:_0x299248[_0x54f384(0x1d5)];},markerModelPoint=(_0x16819d,_0x4c0dd2)=>{const _0x4bd63a=_0x328247;let _0x3d3451=volumeAxisValueToNormalized(getAxisDefinition(_0x16819d,_0x4c0dd2['axis']),_0x4c0dd2[_0x4bd63a(0x2b1)]);return _0x4c0dd2[_0x4bd63a(0x171)]==='x'?[_0x3d3451,0x0,0x0]:_0x4c0dd2[_0x4bd63a(0x171)]==='y'?[0x0,_0x3d3451,0x0]:[0x0,0x0,_0x3d3451];},applyMarkerBaseStyle=_0x55fe28=>{const _0x5946b2=_0x328247;_0x55fe28[_0x5946b2(0x496)][_0x5946b2(0x2b1)]=_0x5946b2(0x3d0),_0x55fe28[_0x5946b2(0x496)]['zIndex']='1',_0x55fe28[_0x5946b2(0x496)][_0x5946b2(0x3cf)]=_0x5946b2(0x284),_0x55fe28[_0x5946b2(0x496)][_0x5946b2(0x2d4)]='center',_0x55fe28[_0x5946b2(0x496)][_0x5946b2(0x313)]=_0x5946b2(0x338),_0x55fe28['style'][_0x5946b2(0x344)]=_0x5946b2(0x2a8),_0x55fe28[_0x5946b2(0x496)][_0x5946b2(0x397)]=_0x5946b2(0x365),_0x55fe28[_0x5946b2(0x496)][_0x5946b2(0x295)]=_0x5946b2(0x338),_0x55fe28[_0x5946b2(0x496)][_0x5946b2(0x1be)]=_0x5946b2(0x45c),_0x55fe28[_0x5946b2(0x496)][_0x5946b2(0x31a)]='rgb(17\x2024\x2039\x20/\x2082%)',_0x55fe28[_0x5946b2(0x496)][_0x5946b2(0x1d2)]='12px/1.2\x20sans-serif',_0x55fe28['style'][_0x5946b2(0x370)]=_0x5946b2(0x22b),_0x55fe28['style'][_0x5946b2(0x4b0)]=_0x5946b2(0x35d),_0x55fe28[_0x5946b2(0x496)][_0x5946b2(0x265)]=_0x5946b2(0x266),_0x55fe28[_0x5946b2(0x496)][_0x5946b2(0x30a)]='none';},createDeleteButton=()=>{const _0x484f86=_0x328247;let _0x10de7d=document[_0x484f86(0x332)]('button');return _0x10de7d[_0x484f86(0x2cb)]=_0x484f86(0x22d),_0x10de7d['textContent']='×',_0x10de7d['setAttribute'](_0x484f86(0x3f6),_0x484f86(0x4ae)),_0x10de7d[_0x484f86(0x496)][_0x484f86(0x344)]='0\x202px',_0x10de7d[_0x484f86(0x496)][_0x484f86(0x397)]='0',_0x10de7d[_0x484f86(0x496)]['color']='inherit',_0x10de7d[_0x484f86(0x496)]['background']='transparent',_0x10de7d[_0x484f86(0x496)]['cursor']='pointer',_0x10de7d;};var SliceMarkerOverlay=class{[_0x328247(0x27b)];[_0x328247(0x1f8)];[_0x328247(0x2f3)];['interactionController'];[_0x328247(0x166)];['markers']=new Map();[_0x328247(0x389)];[_0x328247(0x236)];['previewMarker']=null;constructor(_0x25f8a2,_0xed39ce,_0xfe8f72,_0x545a7e={}){const _0x5c61cf=_0x328247;this['container']=_0x25f8a2,this[_0x5c61cf(0x1f8)]=_0xed39ce,this[_0x5c61cf(0x2f3)]=_0xfe8f72,this[_0x5c61cf(0x186)]=_0x545a7e[_0x5c61cf(0x186)],this[_0x5c61cf(0x166)]=_0x545a7e[_0x5c61cf(0x166)]??defaultFormatPosition,this[_0x5c61cf(0x389)]=_0x25f8a2['style']['position'],getComputedStyle(_0x25f8a2)[_0x5c61cf(0x2b1)]==='static'&&(_0x25f8a2['style'][_0x5c61cf(0x2b1)]='relative'),this['unsubscribe']=_0xed39ce[_0x5c61cf(0x3ab)](()=>this[_0x5c61cf(0x41a)]());}[_0x328247(0x41a)](){const _0x41c3cc=_0x328247;let _0xc05be2=this[_0x41c3cc(0x1f8)][_0x41c3cc(0x376)];this[_0x41c3cc(0x1e4)](_0xc05be2[_0x41c3cc(0x387)]),this[_0x41c3cc(0x38d)](_0xc05be2[_0x41c3cc(0x4cd)]);let _0x2160a1=this[_0x41c3cc(0x2f3)]();if(!_0x2160a1){this[_0x41c3cc(0x46e)]();return;}_0xc05be2['preview']&&this[_0x41c3cc(0x269)]&&this[_0x41c3cc(0x256)](this[_0x41c3cc(0x269)],_0xc05be2[_0x41c3cc(0x387)],_0x2160a1);for(let _0x14194d of _0xc05be2[_0x41c3cc(0x4cd)]){let _0x52785d=this[_0x41c3cc(0x301)]['get'](_0x14194d['id']);_0x52785d&&this[_0x41c3cc(0x256)](_0x52785d,_0x14194d,_0x2160a1);}}[_0x328247(0x179)](){const _0x2d090e=_0x328247;this['unsubscribe'](),this[_0x2d090e(0x269)]?.[_0x2d090e(0x3cd)](),this[_0x2d090e(0x269)]=null;for(let _0x16070b of this[_0x2d090e(0x301)]['values']())_0x16070b[_0x2d090e(0x3cd)]();this[_0x2d090e(0x301)][_0x2d090e(0x433)](),this['container'][_0x2d090e(0x496)]['position']=this[_0x2d090e(0x389)];}['syncPreview'](_0xbbfff6){const _0x365b05=_0x328247;if(!_0xbbfff6){this['previewMarker']?.['remove'](),this[_0x365b05(0x269)]=null;return;}this[_0x365b05(0x269)]||(this[_0x365b05(0x269)]=document[_0x365b05(0x332)]('div'),applyMarkerBaseStyle(this[_0x365b05(0x269)]),this[_0x365b05(0x269)][_0x365b05(0x496)][_0x365b05(0x242)]=_0x365b05(0x266),this[_0x365b05(0x269)][_0x365b05(0x496)][_0x365b05(0x321)]=_0x365b05(0x267),this[_0x365b05(0x27b)][_0x365b05(0x35c)](this[_0x365b05(0x269)])),this[_0x365b05(0x269)]['textContent']=this[_0x365b05(0x166)](_0xbbfff6[_0x365b05(0x171)],_0xbbfff6[_0x365b05(0x2b1)]);}[_0x328247(0x38d)](_0x52be00){const _0x16fc3f=_0x328247;let _0x26d7c1=new Set(_0x52be00[_0x16fc3f(0x352)](_0x3bac2a=>_0x3bac2a['id']));for(let [_0x573c4f,_0x3d48eb]of this[_0x16fc3f(0x301)])_0x26d7c1[_0x16fc3f(0x497)](_0x573c4f)||(_0x3d48eb['remove'](),this[_0x16fc3f(0x301)]['delete'](_0x573c4f));for(let _0x5ddd36 of _0x52be00){let _0x547e27=this[_0x16fc3f(0x301)][_0x16fc3f(0x177)](_0x5ddd36['id']);_0x547e27||(_0x547e27=this[_0x16fc3f(0x4bb)](_0x5ddd36['id']),this[_0x16fc3f(0x301)][_0x16fc3f(0x476)](_0x5ddd36['id'],_0x547e27),this[_0x16fc3f(0x27b)][_0x16fc3f(0x35c)](_0x547e27));let _0x36b59a=_0x547e27[_0x16fc3f(0x312)];_0x36b59a&&(_0x36b59a[_0x16fc3f(0x48e)]=this[_0x16fc3f(0x166)](_0x5ddd36[_0x16fc3f(0x171)],_0x5ddd36[_0x16fc3f(0x2b1)]));}}[_0x328247(0x4bb)](_0x445001){const _0x56a0ab=_0x328247;let _0x3804b8=document['createElement'](_0x56a0ab(0x20f));applyMarkerBaseStyle(_0x3804b8),_0x3804b8['style']['cursor']=_0x56a0ab(0x2ab),_0x3804b8[_0x56a0ab(0x35c)](document[_0x56a0ab(0x408)](''));let _0x551953=createDeleteButton();return _0x551953['addEventListener']('pointerdown',_0x165ad6=>_0x165ad6[_0x56a0ab(0x251)]()),_0x551953[_0x56a0ab(0x26c)](_0x56a0ab(0x471),_0x26398c=>{const _0x2ab58f=_0x56a0ab;_0x26398c[_0x2ab58f(0x251)](),this[_0x2ab58f(0x1f8)][_0x2ab58f(0x303)](_0x445001);}),_0x3804b8[_0x56a0ab(0x26c)](_0x56a0ab(0x21b),_0x2a8446=>this[_0x56a0ab(0x186)]?.['beginLockedSliceDrag'](_0x445001,_0x2a8446)),_0x3804b8[_0x56a0ab(0x35c)](_0x551953),_0x3804b8;}[_0x328247(0x256)](_0x4121b1,_0x1fada,_0x5934bc){const _0x742f2d=_0x328247;let _0x91fd59=projectPointToViewport(multiplyMatrices(_0x5934bc[_0x742f2d(0x3bc)],_0x5934bc[_0x742f2d(0x4c9)]),markerModelPoint(this['state'],_0x1fada),_0x5934bc[_0x742f2d(0x279)],_0x5934bc[_0x742f2d(0x23d)]);if(!_0x91fd59||_0x91fd59[0x2]<0x0||_0x91fd59[0x2]>0x1){_0x4121b1[_0x742f2d(0x496)]['display']=_0x742f2d(0x266);return;}_0x4121b1[_0x742f2d(0x496)]['display']=_0x742f2d(0x284),_0x4121b1[_0x742f2d(0x496)]['left']=_0x91fd59[0x0]+'px',_0x4121b1[_0x742f2d(0x496)][_0x742f2d(0x31f)]=_0x91fd59[0x1]+'px';}[_0x328247(0x46e)](){const _0x118e53=_0x328247;this[_0x118e53(0x269)]&&(this['previewMarker'][_0x118e53(0x496)][_0x118e53(0x3cf)]=_0x118e53(0x266));for(let _0x1185a5 of this['markers'][_0x118e53(0x3b8)]())_0x1185a5[_0x118e53(0x496)][_0x118e53(0x3cf)]='none';}};function _0x2b72(){const _0x1ddab5=['Volume\x20opacity\x20stop\x20values\x20must\x20be\x20finite\x20and\x20strictly\x20increasing.\x20体积透明度节点值必须有限且严格递增。','background','clearPageEntry','depthView','atlasCapacity','volume\x20scene\x20geometry\x20pass','top','Invalid\x20logical\x20volume\x20brick\x20index:\x20','opacity','sin','onSliceError','layout','maximumPitchDegrees','colorStops\x20不能为空','atlasViews','WebGPU\x20volume\x20context\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20context\x20尚未初始化。','路线剖面\x20id\x20不能为空。','buffer','far','skippedCells','bind','slotCountY','endY','volume\x20geometry\x20bind\x20group','origin','createElement','Volume\x20color\x20stops\x20must\x20be\x20sorted\x20by\x20value.\x20体积颜色色标必须按数值升序排列。','atlasLayout','isSafeInteger','requestControllers','\x20必须是正整数。','4px','encodeOverlayPass','scene','sceneDepthView','chunk','createLayout','opacityValuesBuffer','setSlices','minimumDistance','perspective','dispatchWorkgroups','valuesEqual','padding','createTexture','Latitude\x20/\x20纬度','then','hitRadius','setAxes','slotCount','subarray','countX','sceneSlicePipeline','signal','length','WebGPU\x20volume\x20atlas\x20is\x20not\x20configured.\x20WebGPU\x20体积图集尚未配置。','bufferOffset','map','renderFrame','prepared','context','configureSourceResources','one','Mars3D\x20volume\x20shader\x20marker\x20is\x20missing\x20or\x20duplicated:\x20','transferResources','\x20的\x20values\x20长度与\x20path、heights\x20不匹配。','getFormat','append','translate(-50%,\x20-100%)','next','watchDeviceLost','now','interactionRenderScale','toFixed','memoryTargetBytes','正交相机高度必须大于\x200。','1px\x20solid\x20rgb(255\x20255\x20255\x20/\x2065%)','from','generation','A\x20destroyed\x20Mars3D\x20volume\x20layer\x20cannot\x20be\x20used.\x20已销毁的\x20Mars3D\x20体积层不能继续使用。','shift','semiMajorAxisScaled','\x20requires\x20','volume\x20scene\x20frame','WebGPU\x20volume\x20atlas\x20resources\x20are\x20incomplete.\x20WebGPU\x20体积图集资源不完整。','metadata','volumeOptions','whiteSpace','setProfiles','RGB\x20颜色通道必须在\x200\x20~\x20255\x20之间','residentBySlotIndex','name','join','snapshot','.\x20创建\x20WebGPU\x20体积管线失败。','\x20with\x20one\x20sample\x20must\x20use\x20equal\x20endpoints.\x20','clearTimeout','切面轴采样数必须是正整数。','includes','fragmentMain','fovYRadians','WebGPU\x20geometry\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20几何绑定布局不可用。','createShaderModule','minimumPitch','bytesPerRow','createCanvas','requireScene','cacheBrickUpload','个色标范围的\x20min\x20必须小于\x20max','onInteractionStart','preview','createCommandEncoder','previousContainerPosition','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','getTransferResources','destroyResources','syncLockedMarkers','orbit','webgpu','matrix(','unfilterable-float','positionWC','4374352WbzMvP','step','projection','getMappedRange','border','updateSlice','releasePointerCapture','coordinate','preventDefault','\x0afn\x20intersectEllipsoid(origin:\x20vec3f,\x20direction:\x20vec3f,\x20semiMajor:\x20f32,\x20semiMinor:\x20f32)\x20->\x20vec2f\x20{\x0a\x20\x20\x20\x20let\x20inverseRadiiSquared\x20=\x20vec3f(\x0a\x20\x20\x20\x20\x20\x20\x20\x201.0\x20/\x20(semiMajor\x20*\x20semiMajor),\x0a\x20\x20\x20\x20\x20\x20\x20\x201.0\x20/\x20(semiMajor\x20*\x20semiMajor),\x0a\x20\x20\x20\x20\x20\x20\x20\x201.0\x20/\x20(semiMinor\x20*\x20semiMinor)\x0a\x20\x20\x20\x20);\x0a\x20\x20\x20\x20let\x20coefficientA\x20=\x20dot(direction\x20*\x20direction,\x20inverseRadiiSquared);\x0a\x20\x20\x20\x20let\x20coefficientB\x20=\x202.0\x20*\x20dot(origin\x20*\x20direction,\x20inverseRadiiSquared);\x0a\x20\x20\x20\x20let\x20coefficientC\x20=\x20dot(origin\x20*\x20origin,\x20inverseRadiiSquared)\x20-\x201.0;\x0a\x20\x20\x20\x20let\x20discriminant\x20=\x20coefficientB\x20*\x20coefficientB\x20-\x204.0\x20*\x20coefficientA\x20*\x20coefficientC;\x0a\x0a\x20\x20\x20\x20if\x20(discriminant\x20<\x200.0\x20||\x20coefficientA\x20<=\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec2f(1.0,\x20-1.0);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20root\x20=\x20sqrt(discriminant);\x0a\x20\x20\x20\x20let\x20inverseDenominator\x20=\x200.5\x20/\x20coefficientA;\x0a\x20\x20\x20\x20let\x20first\x20=\x20(-coefficientB\x20-\x20root)\x20*\x20inverseDenominator;\x0a\x20\x20\x20\x20let\x20second\x20=\x20(-coefficientB\x20+\x20root)\x20*\x20inverseDenominator;\x0a\x20\x20\x20\x20return\x20vec2f(min(first,\x20second),\x20max(first,\x20second));\x0a}\x0a\x0afn\x20intersectGeographicShell(origin:\x20vec3f,\x20direction:\x20vec3f)\x20->\x20RayInterval\x20{\x0a\x20\x20\x20\x20let\x20worldOrigin\x20=\x20transformPoint(scene.modelMatrix,\x20origin)\x20+\x20scene.geographic0.yzw;\x0a\x20\x20\x20\x20let\x20worldDirection\x20=\x20transformPoint(scene.modelMatrix,\x20origin\x20+\x20direction)\x20-\x20transformPoint(scene.modelMatrix,\x20origin);\x0a\x20\x20\x20\x20let\x20minimumHeight\x20=\x20min(scene.geographic2.z,\x20scene.geographic2.w);\x0a\x20\x20\x20\x20let\x20maximumHeight\x20=\x20max(scene.geographic2.z,\x20scene.geographic2.w);\x0a\x20\x20\x20\x20let\x20outer\x20=\x20intersectEllipsoid(worldOrigin,\x20worldDirection,\x20scene.geographic1.x\x20+\x20maximumHeight,\x20scene.geographic1.y\x20+\x20maximumHeight);\x0a\x0a\x20\x20\x20\x20if\x20(outer.y\x20<\x20max(0.0,\x20outer.x))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20RayInterval(1.0,\x20-1.0,\x20false);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20var\x20minimumDistance\x20=\x20max(0.0,\x20outer.x);\x0a\x20\x20\x20\x20var\x20maximumDistance\x20=\x20outer.y;\x0a\x20\x20\x20\x20let\x20inner\x20=\x20intersectEllipsoid(worldOrigin,\x20worldDirection,\x20scene.geographic1.x\x20+\x20minimumHeight,\x20scene.geographic1.y\x20+\x20minimumHeight);\x0a\x0a\x20\x20\x20\x20if\x20(inner.y\x20>=\x20max(0.0,\x20inner.x))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(inner.x\x20>\x20minimumDistance)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20maximumDistance\x20=\x20min(maximumDistance,\x20inner.x);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(inner.y\x20>\x20minimumDistance)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20minimumDistance\x20=\x20max(minimumDistance,\x20inner.y);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20RayInterval(minimumDistance,\x20maximumDistance,\x20maximumDistance\x20>=\x20minimumDistance);\x0a}\x0a\x0afn\x20getPageIndex','\x20values\x20but\x20received\x20','left','colorStopCount','maximum','countY','locked','createPipelineLayout','uploadStagingBufferSize','setTimeout','parseInt','\x20count','minZ','\x20的\x20path\x20必须包含至少两个\x20[x,\x20z]\x20点。','initializing','subscribe','applyCameraFrameCompensation','coreSampleCount','finishCameraInteraction','\x20must\x20be\x20a\x20positive\x20integer.\x20','minX','volume\x20brick\x20atlas\x20','geometryBindGroupLayout','prototype','sliceInteraction','wgs84','Volume\x20slice\x20ID\x20','Volume\x20opacity\x20must\x20be\x20within\x20[0,\x201].\x20体积透明度必须位于\x20[0,\x201]。','values','lockPreview','_showHook','readyResolve','viewProjectionMatrix','findAxisHit','indexOf','hitTolerancePixels','resize','countZ','getEffectiveQuality','createView','loadBrick','notify','cameraState','xAxis','sliceResources','volume\x20raymarch\x20pass','WebGPU\x20volume\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20体积绑定布局不可用。','路线剖面\x20','heightScaled','remove','cameraPosition','display','absolute','render','无法归一化长度为零的三维向量。','volume\x20atlas\x20bind\x20group\x20layout','volume\x20color\x20stop\x20colors','createRenderPipeline','requestFramesImmediately','clearLockedSlices','listeners','idle','volume\x20atlas\x20clear\x20bind\x20group','resetBrickRequests','WebGPU\x20volume\x20page\x20table\x20exceeds\x20the\x20configured\x20memory\x20limit.\x20WebGPU\x20体积页表超过显存限制。','some','getAttachments','clearCameraFrameCompensation','rejectPendingBrickUploads','captureFrame','volumeDimFactor\x20必须位于\x200\x20到\x201。','getPageTableBuffer','zoomSpeed','stepLength','UNIFORM','gpu','brickSortCount','opacityStopCount','canvas','_addedHook','Volume\x20brick\x20upload\x20was\x20superseded\x20by\x20a\x20new\x20source.\x20体积砖上传已被新数据源替代。','setVertexBuffer','getSliceResources','screenAnchors','sort','load','\x20必须是正有限数值。','atlasTextures','brickDepth','\x20is\x20duplicated.\x20体积切面\x20ID\x20重复。','aria-label','Module','requestAdapter','Alpha\x20颜色通道必须在0\x20~\x201之间','baseModelMatrix','depthTexture','Failed\x20to\x20create\x20WebGPU\x20volume\x20pipelines:\x20','xStart','heights','indices','profileResources','STORAGE','slicePlateColor','fovYDegrees','minimumPitchDegrees','setShow','startX','readyReject','createTextNode','vertexCount','mode','configureModel','renderer','one-minus-src-alpha','residentBrickCount','resources','isFinite','flushSliceState','The\x20current\x20WebGPU\x20volume\x20atlas\x20requires\x20halo:\x201.\x20当前\x20WebGPU\x20体积图集要求\x20halo\x20为\x201。','fn\x20getPageIndex','sourceYCount','Volume\x20slice\x20','setRouteProfiles','syncCamera','interactionElement','pointermove','update','writeBuffer','inverseViewProjection','不支持的\x20hex\x20颜色格式:\x20','透视相机视场角必须位于\x200\x20到\x20180\x20度之间。','pan','flushBrickSchedule','setBindGroup','all','100%','timeIndex','rgb(','.\x20体积逻辑砖块索引无效。','geographicTransform','findIndex','resolve','store','key','setProjectionType','enqueueBrickUpload','xCount','updateAutoQuality','depth32float','Volume\x20color\x20and\x20opacity\x20stops\x20cannot\x20be\x20empty.\x20体积颜色和透明度色标不能为空。','plateColor','clear','delete','updatePreview','setState','WebGPU\x20volume\x20frame\x20capture\x20failed:\x20','overlayContainer','overlayLinePipeline','autoQuality','catch','bindFrameAvailableCallback','byteLength','16609320NxDpUB','autoFrameCount','getAxisResources','rgba(','colorInputs','activePointer','autoFrameIntervalTotal','setPointerCapture','handlePointerLeave','isNaN','message','auto','encodeVolumePass','sourceYStart','WebGPU\x20volume\x20resources\x20were\x20released.\x20WebGPU\x20体积资源已释放。','uploadStagingBuffer','volumeBindGroup','3992919UdeAbc','cameraSignature','Geographic\x20volume\x20proxy\x20bounds\x20are\x20invalid.\x20地理体积代理范围无效。','createValues','getInteractionKind','Failed\x20to\x20create\x20a\x20WebGPU\x20canvas\x20context\x20for\x20the\x20volume\x20scene.\x20无法为体积场景创建\x20WebGPU\x20Canvas\x20上下文。','create','validation','_mountedHook','triangle-list','trim','preRender','uploadBrick','#fff','Volume\x20X\x20axis','Mars3D\x20volume\x20layer\x20is\x20not\x20attached\x20to\x20a\x20map.\x20Mars3D\x20体积层尚未关联地图。','moved','.\x20体积砖块数据长度不正确。','TEXTURE_BINDING','mapAsync','Volume\x20brick\x20upload\x20became\x20stale.\x20体积砖上传已过期。','WebGPU\x20volume\x20atlas\x20texture\x20is\x20unavailable.\x20WebGPU\x20体积图集纹理不可用。','getUploadStagingBuffer','kind','pendingKeys','applyHit','copyBufferToTexture','coordinateSystem','4171025XaAwwe','setToolMode','getAtlas','hideAllMarkers','exp','brickScheduleCount','click','getStepLength','sliceDepthMode','isInteger','skippedSampleCount','set','mixed','pointerId','pendingBrickCount','initialize','getGeometryBindGroupLayout','uploadPump','pointer','\x20\x20\x20\x20var\x20interval\x20=\x20intersectClipBox(nearModel,\x20direction);\x0a\x0a\x20\x20\x20\x20if\x20(scene.geographic0.x\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20shellInterval\x20=\x20intersectGeographicShell(nearModel,\x20direction);\x0a\x20\x20\x20\x20\x20\x20\x20\x20interval.minimum\x20=\x20max(interval.minimum,\x20shellInterval.minimum);\x0a\x20\x20\x20\x20\x20\x20\x20\x20interval.maximum\x20=\x20min(interval.maximum,\x20shellInterval.maximum);\x0a\x20\x20\x20\x20\x20\x20\x20\x20interval.valid\x20=\x20interval.valid\x20&&\x20shellInterval.valid\x20&&\x20interval.maximum\x20>=\x20interval.minimum;\x0a\x20\x20\x20\x20}','\x20with\x20multiple\x20samples\x20must\x20have\x20a\x20non-zero\x20step.\x20','498148WxokaR','handleWindowPointerMove','vertexMain','atlas','finish','scheduleCameraMoveEnd','WebGPU\x20transfer\x20resources\x20are\x20unavailable.\x20WebGPU\x20传递函数资源不可用。','\x20must\x20be\x20a\x20positive\x20integer.\x20体积分块\x20','clientX','beginRenderPass','positions','Volume\x20valueScale\x20must\x20be\x20finite.\x20体积\x20valueScale\x20必须是有限数值。','previousAxis','colorStops','textContent','bindSliceInteraction','BYTES_PER_ELEMENT','volume\x20brick\x20reusable\x20upload\x20staging','lastSubmittedFrameTimestamp','WebGPU\x20volume\x20params\x20buffer\x20is\x20unavailable.\x20WebGPU\x20体积参数\x20Buffer\x20不可用。','levelCount','semiMinorAxisScaled','style','has','abort','brickWidth','beginInteraction','recordFrameInterval','onError','volume\x20brick\x20page\x20table','getVolumeParamsBuffer','toUpperCase','prepareBrickUpload','slices','maxBufferSize','floor','attachments','volume\x20frame\x20capture','reject','verticalScale','matrices','cacheOnSuccess','replace','min','clipMaximum','getBindGroupLayout','删除切面','device','transform','start','setAspect','max','WebGPU\x20volume\x20source\x20must\x20be\x20configured\x20before\x20uploading\x20bricks.\x20上传砖块前必须配置\x20WebGPU\x20体积数据源。','float32x3','topology','Volume\x20brick\x20halo\x20must\x20be\x20a\x20positive\x20integer.\x20体积分块\x20halo\x20必须是正整数。','volume\x20atlas\x20clear\x20shader','cachedSlices','devicePixelRatio','createLockedMarker','sceneBindGroup','setPipeline','memoryHardLimitBytes','tan','pendingSliceSnapshot','actualFrameIntervalMilliseconds','handlePointerMove','managed','Returned\x20volume\x20chunk\x20timeIndex\x20does\x20not\x20match\x20the\x20request.\x20返回体积分块的时间索引与请求不一致。','1003795Qaerrn','eventDisposers','WebGPU\x20volume\x20atlas\x20layout\x20is\x20unavailable.\x20WebGPU\x20体积图集布局不可用。','STORAGE_BINDING','modelMatrix','longitudeRadians','ready','Volume\x20Z\x20axis','lockedSlices','show','transferBindGroupLayout','r32float','filter','touch','formatPosition','\x20的\x20heights\x20包含非有限高度。','volume\x20atlas\x20clear\x20pipeline','COPY_DST','hitTolerance','VERTEX','volumeMetadata','upload','getBoundingClientRect','\x20\x20\x20\x20var\x20interval\x20=\x20intersectClipBox(nearModel,\x20direction);','slotIndex','axis','residentByLogicalIndex','volume\x20slice\x20','maxLockedSlices','startY','finally','get','framesRemaining','destroy','verticalScale\x20must\x20be\x20a\x20positive\x20finite\x20value.\x20verticalScale\x20必须是大于\x200\x20的有限数。','push','rebuildProfiles','positionCartographic','orthographic','多采样点切面轴的起止值不能相等。','readyPromise','target','.\x20WebGPU\x20体积设备已丢失。','FRAGMENT','axisHysteresis','uploadGeneration','interactionController','noData','uniform','coreRange','add','forEach','Mars3D\x20volume\x20layer\x20is\x20not\x20ready;\x20await\x20readyPromise\x20first.\x20Mars3D\x20体积层尚未就绪,请先等待\x20readyPromise。','acquireSlot','requestDevice','uploadedBrickCount','profiles','volume-axes','writeVolumeParams','volumeParamsBuffer','createPipelines','WebGPU\x20volume\x20dimensions\x20must\x20be\x20positive\x20integers.\x20WebGPU\x20体积尺寸必须是正整数。','volume\x20atlas\x20bind\x20group','frameIndex','createComputePipeline','depthMode','createCameraSignature','occupied','recreateSceneBindGroup','createCurrentCompensationFrame','block','handlePreRender','submittedFrameCount','volumePipeline','WebGPU\x20scene\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20场景绑定布局不可用。','premultiplied','isInteracting','frameAvailableCallback','mars3d\x20volume\x20shell\x20raymarch\x20shader','WRITE','shape','memoryLimitBytes','相机宽高比必须大于\x200。','volumeDimFactor','renderDirty','WebGPU\x20volume\x20renderer\x20is\x20not\x20ready\x20for\x20frame\x20capture.\x20WebGPU\x20体积渲染器尚不能读取帧。','createGpuResources','sliceBindGroupLayout','\x20至少需要两个高度层。','lifecycleState','clipBox','volume\x20metadata\x20params','abs','Volume\x20Y\x20axis','updateLockedSlice','atlasIndex','configureSource','\x20端点必须是有限数值。','loadedKeys','cachedBricks','sliceState','\x20无效。','color','WebGPU\x20volume\x20format\x20is\x20not\x20initialized.\x20WebGPU\x20体积格式尚未初始化。','initializationGeneration','count','path','Volume\x20brick\x20','Scene\x20mesh\x20','frameRequest','processBrickUploads','split','onInteractionEnd','WebGPU\x20volume\x20device\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20device\x20尚未初始化。','maximumPitch','encodePreparedBrickUpload','lastUsedFrame','frameInFlight','clientWidth','sceneTrianglePipeline','initialized','rgb\x20颜色通道数量不正确:\x20','font','cameraFrameCompensation','volume-slice-preview','zAxis','WebGPU\x20volume\x20atlas\x20has\x20no\x20evictable\x20slot.\x20WebGPU\x20体积图集没有可驱逐的槽位。','error','viewProjection','parentElement','Volume\x20brick\x20coordinate\x20is\x20out\x20of\x20range.\x20体积分块坐标越界。','volume\x20geometry\x20bind\x20group\x20layout','getCanvas','volume\x20scene\x20params','deltaY','nextId','visible','Volume\x20source\x20must\x20provide\x20readChunk().\x20体积数据源必须提供\x20readChunk()。','Volume\x20opacity\x20stops\x20must\x20be\x20between\x20zero\x20and\x20one.\x20体积透明度色标必须位于零到一之间。','halo','syncPreview','clipMinimum','wheel','onLimitReached','volumeCamera','矩阵不可逆。','A\x20destroyed\x20volume\x20scene\x20cannot\x20capture\x20a\x20frame.\x20已销毁的体积场景不能读取帧。','setFrameAvailableCallback','4WigSfe','interactionStepScale','fov','destroyBuffers','submit','\x20必须是非负有限数值。','proxyModelMatrix','getDevice','format','volume\x20always\x20visible\x20pass','\x20position\x20must\x20be\x20normalized\x20to\x20zero\x20through\x20one.\x20体积切面位置必须归一化到零至一。','相机宽高比必须是大于\x200\x20的有限数。','state','near','minY','sourceGeneration','onSlicesChange','depth','volume\x20scene\x20mesh\x20shader','requestRender','zIndex','pointercancel','\x20必须是大于\x200\x20的有限数。','\x20must\x20contain\x20position\x20and\x20RGBA\x20values\x20for\x20every\x20vertex.\x20场景网格顶点必须包含位置和\x20RGBA。','getTransferBindGroupLayout','colorMode','geometryBindGroup','不支持的\x20rgb\x20颜色格式:\x20','getAtlasTexture','desiredKeys','configure','相机裁剪距离必须满足\x200\x20<=\x20near\x20<\x20far。','startsWith','external','directionWC','div','toolMode','smooth','handleFrameAvailable','read-only-storage','centerEcefScaled','source','.\x20WebGPU\x20体积帧读取失败。','sliceId','clearAtlasTexture','volumeBindGroupLayout','createProjectionMatrix','pointerdown','worldAnchors','queue','size','Unable\x20to\x20allocate\x20a\x20WebGPU\x20R32F\x20volume\x20atlas\x20within\x20device\x20limits.\x20无法在设备限制内分配\x20WebGPU\x20R32F\x20体积图集。','volume\x20slice\x20shader','defineProperty','float32x4','切面深度模式无效\x20/\x20Slice\x20depth\x20mode\x20is\x20invalid','destroyed','setTimeIndex','WebGPU\x20volume\x20memory\x20limits\x20must\x20be\x20positive.\x20WebGPU\x20体积显存限制必须大于零。','less','axisHysteresisPixels','透视相机参数无效。','requestBrickSchedule','nowrap','WebGPU\x20transfer\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20传递函数绑定布局不可用。','button','ceil','AbortError','timeCount','Returned\x20volume\x20chunk\x20dimensions\x20do\x20not\x20match\x20its\x20range.\x20返回体积分块尺寸与范围不一致。','round','pageTableValues','Volume\x20timeCount','entries','unsubscribe','dolly','getSliceBindGroupLayout','element','logicalIndex','densityScale','currentPreview','viewportHeight','volume\x20scene\x20bind\x20group\x20layout','overlaySlicePipeline','limits','pointerup','pointerEvents','getVolumeBindGroupLayout','options','camera','centerEcef','createSliceState','volume\x20slice\x20bind\x20group\x20layout','valueScale','aspect','end','hasPointerCapture','hypot','Count','setTransfer','shown','stopPropagation','readRange','lost','scheduleBricks','WebGPU\x20scene\x20attachments\x20are\x20unavailable.\x20WebGPU\x20场景附件不可用。','positionMarker','transferBindGroup','performance','getEffectiveRenderScale','cachedProfiles','normalizationMeters','slice','width','navigationMode','assertAlive','byteOffset','range','lockSlice','atan2','setSliceTool','userSelect','none','0.72','WebGPU\x20scene\x20depth\x20attachment\x20is\x20not\x20initialized.\x20WebGPU\x20场景深度附件尚未初始化。','previewMarker','createResource','18720OiVOfz','addEventListener','pageTableBuffer','handlePointerDown','_map','updateTransferResources','setCamera','logicalBrickCount','axes','pushErrorScope','pendingCompensationFrame','setSource','getSceneBindGroupLayout','volume\x20transfer\x20bind\x20group\x20layout','viewportWidth','brickHeight','container','clientHeight','quality','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','切面轴端点必须是有限数。','\x20plate\x20color\x20must\x20use\x20values\x20from\x20zero\x20through\x20one.\x20体积切面底板颜色必须位于零至一。','opacityBuffer','writePageEntry','bindGroup','flex','line-list','panSpeed','value','\x20axis\x20must\x20contain\x20two\x20different\x20finite\x20endpoints.\x20','cameraEndTimer','pendingBrickUploads','removeEventListener','READ','sceneLinePipeline','pixelRatioCap','opacityStops','capacity','splice','fovy','Volume\x20opacity\x20stops\x20must\x20be\x20sorted\x20by\x20value.\x20体积透明度色标必须按数值升序排列。','bindSliceState','borderRadius','budgetLimited','drawSlices','axisResources','readChunk','levelStart','bindControls','colorBuffer','beginCameraInteraction','volume\x20atlas\x20clear','getContext','uniformUpdateCount','sceneParamsBuffer','frustum','popErrorScope','Mars3D\x20map\x20canvas\x20must\x20have\x20a\x20parent\x20element.\x20Mars3D\x20地图\x20Canvas\x20必须存在父元素。','resourceRebuildCount','extent','slotCountX','3px\x206px','onSubmittedWorkDone','distance','grab','vertices','volume-bounds','skippedSamples','encodeScenePass','\x20is\x20invalid:\x20','position','upWC','draw','cos','scheduleUploadPump','displayedCompensationFrame','A\x20destroyed\x20WebGPU\x20volume\x20renderer\x20cannot\x20be\x20initialized\x20again.\x20已销毁的\x20WebGPU\x20体积渲染器不能再次初始化。','Volume\x20opacity\x20stops\x20cannot\x20be\x20empty.\x20体积透明度节点不能为空。','markerOverlay','uploadBatchCount','activeInteractions','maximumUploadBatchBytes','requireRenderer','pointerType','Failed\x20to\x20acquire\x20a\x20WebGPU\x20adapter\x20for\x20the\x20volume\x20scene.\x20无法为体积场景获取\x20WebGPU\x20adapter。','touchBricks','unmap','renderScale','axisDefinitions','releaseGpuResources','createBuffer','requestFrames','geographic-wgs84','.\x20最大锁定切面数量为\x20','toStringTag','handlePointerUp','type','mars3d\x20volume\x20shell\x20raymarch\x20pipeline','rotateSpeed','cachedAxes','contextmenu','descriptors','createBindGroupLayout','drawMeshes','COPY_SRC','alignItems','brickScheduleDirty','renderMode','sceneBindGroupLayout','inverseModelMatrix','composite','handleResize','endInteraction','getProfileResources','direction','\x20的\x20path\x20包含非有限坐标。','counts','805SKonMW','Volume\x20chunk\x20requires\x20','fill','powerPreference','Volume\x20revision\x20must\x20be\x20a\x20non-negative\x20integer.\x20体积\x20revision\x20必须是非负整数。','正交相机高度和宽高比必须大于\x200。','beginLockedSliceDrag','pointerleave','\x20must\x20contain\x20sixteen\x20finite\x20values.\x20','volume\x20opacity\x20stop\x20alphas','maxY','adapter','Geographic\x20volume\x20normalization\x20must\x20be\x20a\x20positive\x20finite\x20distance.\x20地理体积归一化尺度必须是正有限距离。','toPrecision','revision','anchorDistance','maximumDistance','slotCountZ','getSceneParamsBuffer','getFrame','writeParams','statistics','lastFrameTimeMilliseconds','cartesian','\x20轴必须包含两个不同的有限端点。','colorValuesBuffer','yAxis','normalizedPosition','volume\x20atlas\x20clear\x20pass','cameraMoving','volume\x20raymarch\x20shader','WebGPU\x20volume\x20page\x20table\x20is\x20unavailable.\x20WebGPU\x20体积页表不可用。','bgra8unorm','markers','find','removeSlice','height','always-visible','WebGPU\x20volume\x20device\x20restoration\x20failed.\x20WebGPU\x20体积设备恢复失败。','createBindGroup','createProjectionCamera','balanced','touchAction','MAP_READ','volume\x20color\x20stop\x20values','.\x20体积时间索引越界。','Volume\x20timeIndex\x20is\x20out\x20of\x20range:\x20','overlayTrianglePipeline','lastTimingFrameTimestamp','WebGPU\x20is\x20required\x20for\x20the\x20volume\x20scene\x20but\x20is\x20unavailable.\x20体积场景需要\x20WebGPU,但当前环境不可用。','firstChild','gap','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','rowsPerImage','clientY','\x20noData\x20must\x20be\x20finite\x20or\x20NaN.\x20','clearPreview'];_0x2b72=function(){return _0x1ddab5;};return _0x2b72();}const clamp=(_0x81ea46,_0x97231e)=>Math[_0x328247(0x4ab)](_0x97231e-0x1,Math[_0x328247(0x4b3)](0x0,_0x81ea46)),createPhysicalBrickValues=(_0x1b8f34,_0x1ea38e,_0x5a43f5,_0x5bac40)=>{const _0xc46742=_0x328247;validateVolumeChunk(_0x1b8f34,_0x5bac40,_0x5a43f5[_0xc46742(0x252)]);let _0x5cc140=_0x1ea38e[_0xc46742(0x25d)]+_0x1ea38e[_0xc46742(0x1e3)]*0x2,_0x768b10=_0x1ea38e[_0xc46742(0x304)]+_0x1ea38e[_0xc46742(0x1e3)]*0x2,_0xa67a41=_0x1ea38e[_0xc46742(0x1fd)]+_0x1ea38e['halo']*0x2,_0x17f8f7=new Float32Array(_0x5cc140*_0x768b10*_0xa67a41);for(let _0x205859=0x0;_0x205859<_0xa67a41;_0x205859+=0x1){let _0x34bab9=clamp(_0x5a43f5[_0xc46742(0x189)][_0xc46742(0x44b)]+_0x205859-_0x1ea38e[_0xc46742(0x1e3)],_0x1b8f34['zAxis'][_0xc46742(0x1c1)])-_0x5bac40[_0xc46742(0x261)][_0xc46742(0x44b)];for(let _0x378bb8=0x0;_0x378bb8<_0x768b10;_0x378bb8+=0x1){let _0x57a9ca=clamp(_0x5a43f5[_0xc46742(0x189)]['levelStart']+_0x378bb8-_0x1ea38e[_0xc46742(0x1e3)],_0x1b8f34[_0xc46742(0x2fa)]['count'])-_0x5bac40[_0xc46742(0x261)]['levelStart'];for(let _0x5802f6=0x0;_0x5802f6<_0x5cc140;_0x5802f6+=0x1){let _0x644eda=clamp(_0x5a43f5[_0xc46742(0x189)][_0xc46742(0x3fd)]+_0x5802f6-_0x1ea38e[_0xc46742(0x1e3)],_0x1b8f34[_0xc46742(0x3c7)][_0xc46742(0x1c1)])-_0x5bac40[_0xc46742(0x261)][_0xc46742(0x3fd)];_0x17f8f7[(_0x205859*_0x768b10+_0x378bb8)*_0x5cc140+_0x5802f6]=_0x5bac40[_0xc46742(0x3b8)][(_0x34bab9*_0x5bac40['height']+_0x57a9ca)*_0x5bac40[_0xc46742(0x25d)]+_0x644eda];}}}return _0x17f8f7;},normalizeColorStops=_0x4ac7a0=>{const _0x5590bd=_0x328247;if(_0x4ac7a0[_0x5590bd(0x34f)]===0x0)throw Error(_0x5590bd(0x326));return _0x4ac7a0[_0x5590bd(0x352)]((_0x553672,_0x49f885)=>{const _0x170d0d=_0x5590bd;if(Number['isNaN'](_0x553672[_0x170d0d(0x4ab)])||Number[_0x170d0d(0x447)](_0x553672['max']))throw TypeError('第'+(_0x49f885+0x1)+'个色标范围不能是NaN');if(_0x553672[_0x170d0d(0x4ab)]>=_0x553672['max'])throw Error('第'+(_0x49f885+0x1)+_0x170d0d(0x385));return{'min':_0x553672['min'],'max':_0x553672[_0x170d0d(0x4b3)],'color':parseRasterColor(_0x553672[_0x170d0d(0x1be)])};})['sort']((_0x2c9ee4,_0x5037cf)=>_0x2c9ee4[_0x5590bd(0x4ab)]-_0x5037cf['min']);},parseRasterColor=_0x2a6b6d=>{const _0x572d20=_0x328247;let _0x100e66=_0x2a6b6d[_0x572d20(0x459)]()['toLowerCase']();if(_0x100e66['startsWith']('#'))return parseHexColor(_0x100e66);if(_0x100e66[_0x572d20(0x20c)](_0x572d20(0x441)))return parseRgbColor(_0x100e66,!0x0);if(_0x100e66[_0x572d20(0x20c)](_0x572d20(0x425)))return parseRgbColor(_0x100e66,!0x1);throw Error('不支持的颜色格式:\x20'+_0x2a6b6d);},parseHexColor=_0x7327a6=>{const _0x1a3999=_0x328247;if(_0x7327a6['length']===0x4)return normalizeRgb(Number[_0x1a3999(0x3a6)](''+_0x7327a6[0x1]+_0x7327a6[0x1],0x10),Number[_0x1a3999(0x3a6)](''+_0x7327a6[0x2]+_0x7327a6[0x2],0x10),Number[_0x1a3999(0x3a6)](''+_0x7327a6[0x3]+_0x7327a6[0x3],0x10),0x1);if(_0x7327a6[_0x1a3999(0x34f)]===0x7)return normalizeRgb(Number['parseInt'](_0x7327a6[_0x1a3999(0x25c)](0x1,0x3),0x10),Number[_0x1a3999(0x3a6)](_0x7327a6[_0x1a3999(0x25c)](0x3,0x5),0x10),Number['parseInt'](_0x7327a6['slice'](0x5,0x7),0x10),0x1);throw Error(_0x1a3999(0x41d)+_0x7327a6);},parseRgbColor=(_0x4b601c,_0x39f9be)=>{const _0x1f52b2=_0x328247;let _0x1533b0=_0x4b601c['match'](/^rgba?\(([^)]+)\)$/);if(!_0x1533b0)throw Error(_0x1f52b2(0x207)+_0x4b601c);let _0x383833=_0x1533b0[0x1][_0x1f52b2(0x1c7)](',')['map'](_0x222958=>_0x222958[_0x1f52b2(0x459)]()),_0x7b99b4=_0x39f9be?0x4:0x3;if(_0x383833['length']!==_0x7b99b4)throw Error(_0x1f52b2(0x1d1)+_0x4b601c);return normalizeRgb(Number(_0x383833[0x0]),Number(_0x383833[0x1]),Number(_0x383833[0x2]),_0x39f9be?Number(_0x383833[0x3]):0x1);},normalizeRgb=(_0x2e35fc,_0x233ffc,_0x8a1936,_0x385ea2)=>{const _0x2e509f=_0x328247;if(!isValidRgbChannel(_0x2e35fc)||!isValidRgbChannel(_0x233ffc)||!isValidRgbChannel(_0x8a1936))throw Error(_0x2e509f(0x372));if(!Number['isFinite'](_0x385ea2)||_0x385ea2<0x0||_0x385ea2>0x1)throw Error(_0x2e509f(0x3f9));return[_0x2e35fc/0xff,_0x233ffc/0xff,_0x8a1936/0xff,_0x385ea2];},isValidRgbChannel=_0x4d2c14=>Number[_0x328247(0x410)](_0x4d2c14)&&_0x4d2c14>=0x0&&_0x4d2c14<=0xff,validateStops=_0x1f1394=>{const _0x10a457=_0x328247;if(_0x1f1394['length']===0x0)throw Error(_0x10a457(0x2b8));let _0x49cc9f=-0x1/0x0;for(let _0x68dd46 of _0x1f1394){if(!Number[_0x10a457(0x410)](_0x68dd46[_0x10a457(0x287)])||_0x68dd46[_0x10a457(0x287)]<=_0x49cc9f)throw Error(_0x10a457(0x319));if(!Number[_0x10a457(0x410)](_0x68dd46['opacity'])||_0x68dd46['opacity']<0x0||_0x68dd46['opacity']>0x1)throw Error(_0x10a457(0x3b7));_0x49cc9f=_0x68dd46['value'];}},findTransferInterval=(_0x11c466,_0x55cf82)=>{const _0x517405=_0x328247;if(_0x11c466<=_0x55cf82[0x0])return[0x0,0x0,0x0];for(let _0x1f2e47=0x1;_0x1f2e47<_0x55cf82[_0x517405(0x34f)];_0x1f2e47+=0x1)if(_0x11c466<=_0x55cf82[_0x1f2e47]){let _0x2cdb98=_0x55cf82[_0x1f2e47]-_0x55cf82[_0x1f2e47-0x1];return[_0x1f2e47-0x1,_0x1f2e47,_0x2cdb98===0x0?0x0:Math[_0x517405(0x4ab)](0x1,Math[_0x517405(0x4b3)](0x0,(_0x11c466-_0x55cf82[_0x1f2e47-0x1])/_0x2cdb98))];}let _0x35bf8e=_0x55cf82[_0x517405(0x34f)]-0x1;return[_0x35bf8e,_0x35bf8e,0x0];},prepareWebgpuVolumeTransfer=(_0x1a22b1,_0x5884b6)=>{const _0x369f1a=_0x328247;validateStops(_0x5884b6);let _0x3711cf=normalizeColorStops([..._0x1a22b1]);return{'colorStops':_0x3711cf['flatMap']((_0x451299,_0x468759)=>{const _0x16bd1f=_0x3351;let _0x56148d=_0x3711cf[Math[_0x16bd1f(0x4ab)](_0x468759+0x1,_0x3711cf[_0x16bd1f(0x34f)]-0x1)][_0x16bd1f(0x1be)];return[{'value':_0x451299[_0x16bd1f(0x4ab)],'color':_0x451299['color']},{'value':_0x451299[_0x16bd1f(0x4b3)],'color':_0x56148d}];}),'opacityStops':_0x5884b6[_0x369f1a(0x352)](_0x3b23f3=>({..._0x3b23f3}))};},sampleVolumeTransferColor=(_0x1537d6,_0x296900,_0x138c5a,_0x4f35da)=>{const _0x175997=_0x328247;if(!Number['isFinite'](_0x1537d6))return[0x0,0x0,0x0,0x0];let [_0x9622a2,_0x402523,_0x424a67]=findTransferInterval(_0x1537d6,_0x296900[_0x175997(0x352)](_0x29a142=>_0x29a142[_0x175997(0x287)])),_0x49ff01=_0x296900[_0x9622a2],_0x2e701c=_0x296900[_0x402523],_0x58c3fc=_0x4f35da===_0x175997(0x394)?0x0:_0x424a67;return[_0x49ff01[_0x175997(0x1be)][0x0]+(_0x2e701c[_0x175997(0x1be)][0x0]-_0x49ff01[_0x175997(0x1be)][0x0])*_0x58c3fc,_0x49ff01['color'][0x1]+(_0x2e701c[_0x175997(0x1be)][0x1]-_0x49ff01['color'][0x1])*_0x58c3fc,_0x49ff01[_0x175997(0x1be)][0x2]+(_0x2e701c['color'][0x2]-_0x49ff01[_0x175997(0x1be)][0x2])*_0x58c3fc,(_0x49ff01[_0x175997(0x1be)][0x3]+(_0x2e701c[_0x175997(0x1be)][0x3]-_0x49ff01[_0x175997(0x1be)][0x3])*_0x58c3fc)*_0x138c5a];},sampleVolumeTransferOpacity=(_0x18ef22,_0x528666,_0x470123)=>{const _0x674faf=_0x328247;if(!Number['isFinite'](_0x18ef22))return 0x0;let [_0x400ef4,_0x403016,_0x39035d]=findTransferInterval(_0x18ef22,_0x528666['map'](_0x470608=>_0x470608[_0x674faf(0x287)])),_0x2306cc=_0x470123===_0x674faf(0x394)?0x0:_0x39035d;return _0x528666[_0x400ef4][_0x674faf(0x321)]+(_0x528666[_0x403016]['opacity']-_0x528666[_0x400ef4][_0x674faf(0x321)])*_0x2306cc;},DEFAULT_CAMERA={'position':[1.4,1.2,2.1],'target':[0.5,0.5,0.5],'up':[0x0,0x1,0x0],'projection':{'type':'perspective','fovYDegrees':0x2d,'near':0.01,'far':0x64}},IDENTITY_MATRIX=[0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1],clamp01=_0x2c8a35=>Math[_0x328247(0x4ab)](0x1,Math[_0x328247(0x4b3)](0x0,_0x2c8a35)),qualityStepLength=_0x543519=>_0x543519==='performance'?0.012:_0x543519===_0x328247(0x27d)?0.0025:_0x543519===_0x328247(0x309)?0.005:0.006,qualityUploadCount=_0x4798df=>_0x4798df===_0x328247(0x258)?0x8:_0x4798df===_0x328247(0x27d)?0x2:0x4,nextAutoQuality=(_0x421d67,_0x3455f9)=>_0x3455f9>0x18?_0x421d67===_0x328247(0x27d)?_0x328247(0x309):_0x328247(0x258):_0x3455f9<0xe?_0x421d67===_0x328247(0x258)?_0x328247(0x309):'quality':_0x421d67,validatePositiveOption=(_0x866664,_0x275fc5)=>{const _0x149885=_0x328247;if(!Number['isFinite'](_0x866664)||_0x866664<=0x0)throw Error(_0x275fc5+'\x20must\x20be\x20a\x20positive\x20finite\x20number.\x20'+_0x275fc5+_0x149885(0x202));return _0x866664;},normalizeClipBox=(_0x2905b2,_0x5f5091)=>{const _0x528960=_0x328247;if(!_0x5f5091)return{'minimum':[0x0,0x0,0x0],'maximum':[0x1,0x1,0x1]};let _0x4a8da4=clamp01(volumeAxisValueToNormalized(_0x2905b2[_0x528960(0x36e)][_0x528960(0x3c7)],_0x5f5091[_0x528960(0x3b0)])),_0x3a300d=clamp01(volumeAxisValueToNormalized(_0x2905b2[_0x528960(0x36e)][_0x528960(0x3c7)],_0x5f5091['maxX'])),_0x3a2fa5=clamp01(volumeAxisValueToNormalized(_0x2905b2[_0x528960(0x36e)][_0x528960(0x2fa)],_0x5f5091[_0x528960(0x1fa)])),_0x53fbe4=clamp01(volumeAxisValueToNormalized(_0x2905b2['metadata'][_0x528960(0x2fa)],_0x5f5091[_0x528960(0x2ea)])),_0x54f726=clamp01(volumeAxisValueToNormalized(_0x2905b2[_0x528960(0x36e)][_0x528960(0x1d5)],_0x5f5091[_0x528960(0x3a8)])),_0x55867b=clamp01(volumeAxisValueToNormalized(_0x2905b2[_0x528960(0x36e)]['zAxis'],_0x5f5091['maxZ']));return{'minimum':[Math[_0x528960(0x4ab)](_0x4a8da4,_0x3a300d),Math[_0x528960(0x4ab)](_0x3a2fa5,_0x53fbe4),Math[_0x528960(0x4ab)](_0x54f726,_0x55867b)],'maximum':[Math[_0x528960(0x4b3)](_0x4a8da4,_0x3a300d),Math[_0x528960(0x4b3)](_0x3a2fa5,_0x53fbe4),Math[_0x528960(0x4b3)](_0x54f726,_0x55867b)]};},createAxesMesh=()=>({'id':_0x328247(0x191),'topology':_0x328247(0x285),'depthMode':_0x328247(0x305),'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 _0x2dec5d=_0x328247;let _0xc4ef3=[0.1,0.53,0.56,0.62],_0x44b6b8=[[0x0,0x0,0x0],[0x1,0x0,0x0],[0x0,0x1,0x0],[0x1,0x1,0x0],[0x0,0x0,0x1],[0x1,0x0,0x1],[0x0,0x1,0x1],[0x1,0x1,0x1]],_0x54f076=[[0x0,0x1],[0x0,0x2],[0x1,0x3],[0x2,0x3],[0x4,0x5],[0x4,0x6],[0x5,0x7],[0x6,0x7],[0x0,0x4],[0x1,0x5],[0x2,0x6],[0x3,0x7]],_0x199764=new Float32Array(_0x54f076[_0x2dec5d(0x34f)]*0x2*0x7),_0x398713=0x0;for(let _0x689464 of _0x54f076)for(let _0x27d682 of _0x689464)_0x199764['set']([..._0x44b6b8[_0x27d682],..._0xc4ef3],_0x398713),_0x398713+=0x7;return{'id':_0x2dec5d(0x2ad),'topology':_0x2dec5d(0x285),'depthMode':_0x2dec5d(0x33a),'vertices':_0x199764};},createProfileSceneMesh=(_0x5f482f,_0x3c7a35,_0x406081,_0x59ea12)=>{const _0xada6a1=_0x328247;let _0x3dd2fc=new Float32Array(_0x5f482f['indices']['length']*0x7);for(let _0x1e6e82=0x0;_0x1e6e82<_0x5f482f[_0xada6a1(0x3ff)]['length'];_0x1e6e82+=0x1){let _0x3fc9aa=_0x5f482f[_0xada6a1(0x3ff)][_0x1e6e82],_0x223b01=_0x3fc9aa*0x3,_0x3ee7de=sampleVolumeTransferOpacity(_0x5f482f[_0xada6a1(0x3b8)][_0x3fc9aa],_0x406081,_0x59ea12),_0x49e22a=sampleVolumeTransferColor(_0x5f482f['values'][_0x3fc9aa],_0x3c7a35,_0x5f482f[_0xada6a1(0x321)]*_0x3ee7de,_0x59ea12);_0x3dd2fc[_0xada6a1(0x476)]([_0x5f482f[_0xada6a1(0x48a)][_0x223b01],_0x5f482f[_0xada6a1(0x48a)][_0x223b01+0x1],_0x5f482f[_0xada6a1(0x48a)][_0x223b01+0x2],_0x49e22a[0x0]*_0x49e22a[0x3],_0x49e22a[0x1]*_0x49e22a[0x3],_0x49e22a[0x2]*_0x49e22a[0x3],_0x49e22a[0x3]],_0x1e6e82*0x7);}return{'id':_0x5f482f['id'],'topology':_0xada6a1(0x458),'depthMode':_0x5f482f[_0xada6a1(0x199)],'vertices':_0x3dd2fc};},descriptorDistance=(_0x260031,_0x53c229,_0x6eea3)=>{const _0x20dcb4=_0x328247;let _0x585e28=(_0x260031[_0x20dcb4(0x39a)]['x']+0.5)/_0x53c229[_0x20dcb4(0x34c)],_0x216b43=(_0x260031['coordinate']['y']+0.5)/_0x53c229[_0x20dcb4(0x3a1)],_0xa96f98=(_0x260031[_0x20dcb4(0x39a)]['z']+0.5)/_0x53c229[_0x20dcb4(0x3c1)];return Math['hypot'](_0x585e28-_0x6eea3[_0x20dcb4(0x2b1)][0x0],_0x216b43-_0x6eea3['position'][0x1],_0xa96f98-_0x6eea3[_0x20dcb4(0x2b1)][0x2]);},descriptorLogicalIndex=(_0x224213,_0x19ddaf)=>(_0x224213[_0x328247(0x39a)]['z']*_0x19ddaf[_0x328247(0x3a1)]+_0x224213['coordinate']['y'])*_0x19ddaf[_0x328247(0x34c)]+_0x224213[_0x328247(0x39a)]['x'],descriptorContainsSlice=(_0x25fe20,_0x479068,_0x30615e,_0x5bbadc)=>{const _0x14a938=_0x328247;let _0x3899be=_0x30615e==='x'?{'start':_0x25fe20[_0x14a938(0x189)][_0x14a938(0x3fd)],'count':_0x25fe20[_0x14a938(0x189)][_0x14a938(0x42e)],'size':_0x479068['metadata'][_0x14a938(0x3c7)][_0x14a938(0x1c1)]}:_0x30615e==='y'?{'start':_0x25fe20['coreRange']['levelStart'],'count':_0x25fe20['coreRange'][_0x14a938(0x494)],'size':_0x479068['metadata'][_0x14a938(0x2fa)]['count']}:{'start':_0x25fe20['coreRange'][_0x14a938(0x44b)],'count':_0x25fe20['coreRange'][_0x14a938(0x414)],'size':_0x479068[_0x14a938(0x36e)][_0x14a938(0x1d5)][_0x14a938(0x1c1)]};return _0x5bbadc>=_0x3899be['start']/_0x3899be[_0x14a938(0x21e)]&&_0x5bbadc<=(_0x3899be[_0x14a938(0x4b1)]+_0x3899be[_0x14a938(0x1c1)])/_0x3899be[_0x14a938(0x21e)];},descriptorContainsProfile=(_0x12b479,_0xeae108,_0x3feaff)=>{const _0x1f5a21=_0x328247;let _0x4290bd=_0x12b479[_0x1f5a21(0x189)][_0x1f5a21(0x3fd)]/_0xeae108[_0x1f5a21(0x36e)][_0x1f5a21(0x3c7)][_0x1f5a21(0x1c1)],_0x208fa1=(_0x12b479[_0x1f5a21(0x189)][_0x1f5a21(0x3fd)]+_0x12b479['coreRange'][_0x1f5a21(0x42e)])/_0xeae108['metadata'][_0x1f5a21(0x3c7)][_0x1f5a21(0x1c1)],_0x1998d2=_0x12b479[_0x1f5a21(0x189)][_0x1f5a21(0x29a)]/_0xeae108['metadata'][_0x1f5a21(0x2fa)][_0x1f5a21(0x1c1)],_0x525925=(_0x12b479[_0x1f5a21(0x189)][_0x1f5a21(0x29a)]+_0x12b479[_0x1f5a21(0x189)][_0x1f5a21(0x494)])/_0xeae108[_0x1f5a21(0x36e)][_0x1f5a21(0x2fa)]['count'],_0x2a198a=_0x12b479[_0x1f5a21(0x189)]['sourceYStart']/_0xeae108['metadata'][_0x1f5a21(0x1d5)][_0x1f5a21(0x1c1)],_0x5b7f6f=(_0x12b479[_0x1f5a21(0x189)][_0x1f5a21(0x44b)]+_0x12b479[_0x1f5a21(0x189)]['sourceYCount'])/_0xeae108['metadata'][_0x1f5a21(0x1d5)][_0x1f5a21(0x1c1)];return _0x3feaff[_0x1f5a21(0x3dd)](_0x522cab=>{const _0x5c0f90=_0x1f5a21;let _0x12d321=volumeAxisValueToNormalized(_0xeae108[_0x5c0f90(0x36e)][_0x5c0f90(0x2fa)],_0x522cab[_0x5c0f90(0x3fe)][0x0]),_0x329440=volumeAxisValueToNormalized(_0xeae108['metadata'][_0x5c0f90(0x2fa)],_0x522cab[_0x5c0f90(0x3fe)][_0x522cab[_0x5c0f90(0x3fe)][_0x5c0f90(0x34f)]-0x1]);if(Math['max'](_0x12d321,_0x329440)<_0x1998d2||Math[_0x5c0f90(0x4ab)](_0x12d321,_0x329440)>_0x525925)return!0x1;for(let _0x129947=0x0;_0x129947<_0x522cab['path'][_0x5c0f90(0x34f)];_0x129947+=0x2){let _0x4124f6=volumeAxisValueToNormalized(_0xeae108[_0x5c0f90(0x36e)][_0x5c0f90(0x3c7)],_0x522cab[_0x5c0f90(0x1c2)][_0x129947]),_0x5f312a=volumeAxisValueToNormalized(_0xeae108[_0x5c0f90(0x36e)][_0x5c0f90(0x1d5)],_0x522cab['path'][_0x129947+0x1]);if(_0x4124f6>=_0x4290bd&&_0x4124f6<=_0x208fa1&&_0x5f312a>=_0x2a198a&&_0x5f312a<=_0x5b7f6f)return!0x0;}return!0x1;});},descriptorDemandPriority=(_0x1b06c8,_0x415430,_0x3f9d97,_0x8eb562)=>{const _0x3da41c=_0x328247;let _0x5d686e=_0x3f9d97[_0x3da41c(0x387)];if(_0x5d686e){let _0x25c928=_0x5d686e[_0x3da41c(0x171)]==='x'?_0x415430[_0x3da41c(0x36e)][_0x3da41c(0x3c7)]:_0x5d686e[_0x3da41c(0x171)]==='y'?_0x415430[_0x3da41c(0x36e)]['yAxis']:_0x415430[_0x3da41c(0x36e)][_0x3da41c(0x1d5)];if(descriptorContainsSlice(_0x1b06c8,_0x415430,_0x5d686e[_0x3da41c(0x171)],volumeAxisValueToNormalized(_0x25c928,_0x5d686e[_0x3da41c(0x2b1)])))return 0x0;}for(let _0x170548 of _0x3f9d97[_0x3da41c(0x4cd)]){let _0x13aee1=_0x170548[_0x3da41c(0x171)]==='x'?_0x415430['metadata'][_0x3da41c(0x3c7)]:_0x170548[_0x3da41c(0x171)]==='y'?_0x415430[_0x3da41c(0x36e)][_0x3da41c(0x2fa)]:_0x415430[_0x3da41c(0x36e)]['zAxis'];if(_0x170548['visible']&&descriptorContainsSlice(_0x1b06c8,_0x415430,_0x170548[_0x3da41c(0x171)],volumeAxisValueToNormalized(_0x13aee1,_0x170548['position'])))return 0x1;}return descriptorContainsProfile(_0x1b06c8,_0x415430,_0x8eb562)?0x2:0x3;};var VolumeScene=class VolumeScene{['backend']=_0x328247(0x38f);['renderer'];['volumeCamera'];[_0x328247(0x3ea)];[_0x328247(0x2d6)];['interactionElement'];[_0x328247(0x4c6)]=[];['source'];[_0x328247(0x324)];[_0x328247(0x2d0)];[_0x328247(0x1bc)];['colorStops'];[_0x328247(0x442)];[_0x328247(0x28f)];['profiles']=[];[_0x328247(0x424)];[_0x328247(0x1fb)]=0x0;[_0x328247(0x1ba)]=new Set();[_0x328247(0x467)]=new Map();[_0x328247(0x209)]=new Set();['frameRequest']=0x0;[_0x328247(0x224)]=!0x1;[_0x328247(0x3fa)];[_0x328247(0x4a7)];['coordinateSystem'];[_0x328247(0x1b2)];[_0x328247(0x27d)];[_0x328247(0x43a)]=_0x328247(0x309);[_0x328247(0x43f)]=0x0;[_0x328247(0x444)]=0x0;['colorMode'];[_0x328247(0x47d)]=null;[_0x328247(0x25e)];[_0x328247(0x28e)];['renderScale'];['interactionRenderScale'];[_0x328247(0x1ed)];[_0x328247(0x2bb)]=new Set();['renderDirty']=!0x0;[_0x328247(0x2d5)]=!0x1;[_0x328247(0x470)]=0x0;[_0x328247(0x3e8)]=0x0;[_0x328247(0x4c0)]=null;[_0x328247(0x473)];[_0x328247(0x402)];[_0x328247(0x1fc)];['lastSubmittedFrameTimestamp']=0x0;['lastTimingFrameTimestamp']=0x0;[_0x328247(0x4c1)]=0x0;['requestControllers']=new Set();[_0x328247(0x3b4)]=null;[_0x328247(0x2b9)]=null;constructor(_0x2bee63,_0x4b6861){const _0x38d594=_0x328247;this[_0x38d594(0x40c)]=_0x4b6861,this[_0x38d594(0x3ea)]=_0x2bee63[_0x38d594(0x3ea)],this['interactionElement']=_0x2bee63[_0x38d594(0x418)]??_0x2bee63[_0x38d594(0x3ea)],this[_0x38d594(0x2d6)]=_0x2bee63[_0x38d594(0x2d6)]??_0x38d594(0x4c3),this[_0x38d594(0x215)]=_0x2bee63['source'],this['timeIndex']=_0x2bee63['timeIndex']??0x0,this[_0x38d594(0x324)]=this[_0x38d594(0x33d)](_0x2bee63),this[_0x38d594(0x2d0)]=createVolumeBrickDescriptors(this[_0x38d594(0x215)][_0x38d594(0x36e)],this['layout']),this[_0x38d594(0x1e8)]=new VolumeCamera({'state':_0x2bee63[_0x38d594(0x245)]??DEFAULT_CAMERA}),this['sliceState']=this[_0x38d594(0x247)](_0x2bee63);let _0x855e0f=prepareWebgpuVolumeTransfer(_0x2bee63['colorStops'],_0x2bee63['opacityStops']);if(this[_0x38d594(0x48d)]=_0x855e0f[_0x38d594(0x48d)],this[_0x38d594(0x442)]=_0x2bee63['colorStops'],this[_0x38d594(0x28f)]=_0x2bee63[_0x38d594(0x28f)],this['baseModelMatrix']=_0x2bee63[_0x38d594(0x4c9)]??IDENTITY_MATRIX,this[_0x38d594(0x4a7)]=validatePositiveOption(_0x2bee63['verticalScale']??0x1,'verticalScale'),this['coordinateSystem']=_0x2bee63[_0x38d594(0x46a)]??'cartesian',this[_0x38d594(0x46a)]==='geographic-wgs84'&&_0x2bee63[_0x38d594(0x4c9)])throw Error('Geographic\x20WGS84\x20volume\x20scenes\x20manage\x20their\x20own\x20model\x20transform.\x20WGS84\x20地理体积场景自行管理模型变换。');this['clipBox']=_0x2bee63[_0x38d594(0x1b2)]??null,this[_0x38d594(0x27d)]=_0x2bee63['quality']??_0x38d594(0x449),this[_0x38d594(0x25e)]=_0x2bee63[_0x38d594(0x25e)]??_0x38d594(0x38e),this['pixelRatioCap']=validatePositiveOption(_0x2bee63[_0x38d594(0x28e)]??0x2,_0x38d594(0x28e)),this[_0x38d594(0x2c2)]=validatePositiveOption(_0x2bee63['renderScale']??0x1,_0x38d594(0x2c2)),this['interactionRenderScale']=validatePositiveOption(_0x2bee63[_0x38d594(0x361)]??0.6,'interactionRenderScale'),this[_0x38d594(0x1ed)]=validatePositiveOption(_0x2bee63[_0x38d594(0x1ed)]??0x1,'interactionStepScale'),this['colorMode']=_0x2bee63['colorMode']??_0x38d594(0x211),this['sliceDepthMode']=_0x2bee63[_0x38d594(0x3b4)]?.['depthMode']??_0x38d594(0x33a),this[_0x38d594(0x402)]=_0x2bee63[_0x38d594(0x3b4)]?.['plateColor'],this[_0x38d594(0x1fc)]=_0x2bee63[_0x38d594(0x3b4)]?.[_0x38d594(0x1fc)],this[_0x38d594(0x40c)][_0x38d594(0x1eb)](()=>this['handleFrameAvailable']()),this[_0x38d594(0x40c)][_0x38d594(0x24f)](_0x855e0f['colorStops'],_0x855e0f[_0x38d594(0x28f)]);let _0x1051b6=_0x2bee63['showDebugGeometry']??this['coordinateSystem']===_0x38d594(0x2f7);this[_0x38d594(0x40c)]['setAxes'](_0x1051b6?[createBoundsMesh(),createAxesMesh()]:[]),this[_0x38d594(0x40c)][_0x38d594(0x41a)]({'renderMode':_0x2bee63['mode']??_0x38d594(0x2d9),'colorMode':this[_0x38d594(0x205)],'opacity':_0x2bee63['opacity']??0.3,'densityScale':_0x2bee63['densityScale']??0x1,'stepLength':this[_0x38d594(0x472)](),'volumeDimFactor':this[_0x38d594(0x1bc)][_0x38d594(0x1ab)]}),this[_0x38d594(0x1b8)](),this[_0x38d594(0x40b)](),this[_0x38d594(0x294)](),this['bindSliceInteraction'](_0x2bee63),this[_0x38d594(0x29b)]();}static async[_0x328247(0x455)](_0xcac43b){const _0x108c77=_0x328247;if(validateVolumeSource(_0xcac43b['source']),validateVolumeTimeIndex(_0xcac43b['source']['metadata'],_0xcac43b[_0x108c77(0x424)]??0x0),(_0xcac43b[_0x108c77(0x33c)]?.[_0x108c77(0x1e3)]??0x1)!==0x1)throw Error(_0x108c77(0x412));let _0xd39731=_0xcac43b[_0x108c77(0x33c)]?.[_0x108c77(0x363)]??0x20000000,_0x578110=new WebgpuVolumeSceneRenderer({'memoryTargetBytes':_0xd39731,'memoryHardLimitBytes':_0xcac43b[_0x108c77(0x33c)]?.[_0x108c77(0x1a9)]??_0xd39731});await _0x578110['initialize'](_0xcac43b[_0x108c77(0x3ea)]);let _0x467b1f=new VolumeScene(_0xcac43b,_0x578110);return _0x467b1f[_0x108c77(0x3c0)](),_0x467b1f['scheduleBricks'](),_0x467b1f[_0x108c77(0x2d6)]==='managed'&&_0x467b1f[_0x108c77(0x1ff)](),_0x467b1f;}get[_0x328247(0x245)](){const _0x42507a=_0x328247;return this[_0x42507a(0x1e8)][_0x42507a(0x1f8)];}get['lockedSlices'](){const _0xb7beed=_0x328247;return this[_0xb7beed(0x1bc)][_0xb7beed(0x4cd)];}get[_0x328247(0x2f5)](){const _0x1a03a4=_0x328247;let _0x100274=this[_0x1a03a4(0x2d6)]===_0x1a03a4(0x20d)||this['isInteracting']()||performance[_0x1a03a4(0x360)]()-this[_0x1a03a4(0x492)]<=0xfa?this[_0x1a03a4(0x4c1)]:0x0;return{...this[_0x1a03a4(0x40c)][_0x1a03a4(0x2f5)],'pendingBrickCount':this['pendingKeys']['size'],'brickScheduleCount':this[_0x1a03a4(0x470)],'brickSortCount':this[_0x1a03a4(0x3e8)],'actualFrameIntervalMilliseconds':_0x100274,'estimatedFps':_0x100274>0x0?0x3e8/_0x100274:0x0,'effectiveQuality':this['getEffectiveQuality'](),'effectiveRenderScale':this['getEffectiveRenderScale'](),'interactionKind':this[_0x1a03a4(0x453)]()};}['update'](_0x32c08c){const _0x1fb3ea=_0x328247;_0x32c08c[_0x1fb3ea(0x245)]&&this['setCamera'](_0x32c08c[_0x1fb3ea(0x245)]),_0x32c08c['modelMatrix']&&(this[_0x1fb3ea(0x3fa)]=[..._0x32c08c[_0x1fb3ea(0x4c9)]]),_0x32c08c[_0x1fb3ea(0x4a7)]!==void 0x0&&(this[_0x1fb3ea(0x4a7)]=validatePositiveOption(_0x32c08c[_0x1fb3ea(0x4a7)],_0x1fb3ea(0x4a7))),_0x32c08c[_0x1fb3ea(0x1b2)]!==void 0x0&&(this[_0x1fb3ea(0x1b2)]=_0x32c08c['clipBox']),_0x32c08c[_0x1fb3ea(0x27d)]&&(this[_0x1fb3ea(0x27d)]=_0x32c08c[_0x1fb3ea(0x27d)]),_0x32c08c[_0x1fb3ea(0x25e)]&&(this[_0x1fb3ea(0x25e)]=_0x32c08c[_0x1fb3ea(0x25e)]);let _0x141346=!0x1;if(_0x32c08c[_0x1fb3ea(0x28e)]!==void 0x0&&(this['pixelRatioCap']=validatePositiveOption(_0x32c08c[_0x1fb3ea(0x28e)],_0x1fb3ea(0x28e)),_0x141346=!0x0),_0x32c08c[_0x1fb3ea(0x2c2)]!==void 0x0&&(this[_0x1fb3ea(0x2c2)]=validatePositiveOption(_0x32c08c['renderScale'],_0x1fb3ea(0x2c2)),_0x141346=!0x0),_0x32c08c[_0x1fb3ea(0x361)]!==void 0x0&&(this[_0x1fb3ea(0x361)]=validatePositiveOption(_0x32c08c[_0x1fb3ea(0x361)],_0x1fb3ea(0x361)),_0x141346=this[_0x1fb3ea(0x1a4)]()),_0x32c08c[_0x1fb3ea(0x1ed)]!==void 0x0&&(this['interactionStepScale']=validatePositiveOption(_0x32c08c['interactionStepScale'],_0x1fb3ea(0x1ed))),_0x32c08c[_0x1fb3ea(0x205)]&&(this['colorMode']=_0x32c08c[_0x1fb3ea(0x205)]),_0x32c08c[_0x1fb3ea(0x48d)]||_0x32c08c[_0x1fb3ea(0x28f)]){let _0x37399a=prepareWebgpuVolumeTransfer(_0x32c08c[_0x1fb3ea(0x48d)]??this[_0x1fb3ea(0x442)],_0x32c08c[_0x1fb3ea(0x28f)]??this[_0x1fb3ea(0x28f)]);this[_0x1fb3ea(0x48d)]=_0x37399a[_0x1fb3ea(0x48d)],this[_0x1fb3ea(0x442)]=_0x32c08c[_0x1fb3ea(0x48d)]??this['colorInputs'],this[_0x1fb3ea(0x28f)]=_0x32c08c[_0x1fb3ea(0x28f)]??this[_0x1fb3ea(0x28f)],this[_0x1fb3ea(0x40c)][_0x1fb3ea(0x24f)](_0x37399a[_0x1fb3ea(0x48d)],_0x37399a[_0x1fb3ea(0x28f)]),this[_0x1fb3ea(0x17c)]();}_0x32c08c[_0x1fb3ea(0x205)]&&!_0x32c08c[_0x1fb3ea(0x48d)]&&!_0x32c08c['opacityStops']&&this[_0x1fb3ea(0x17c)](),this[_0x1fb3ea(0x40c)][_0x1fb3ea(0x41a)]({'renderMode':_0x32c08c['mode'],'colorMode':_0x32c08c[_0x1fb3ea(0x205)],'opacity':_0x32c08c[_0x1fb3ea(0x321)],'densityScale':_0x32c08c[_0x1fb3ea(0x23b)],'stepLength':this[_0x1fb3ea(0x472)]()}),this['configureModel'](),_0x141346&&this[_0x1fb3ea(0x3c0)](),this['requestRender']();}[_0x328247(0x271)](_0x3bf428){const _0x47d920=_0x328247;this[_0x47d920(0x1e8)][_0x47d920(0x436)](_0x3bf428),this[_0x47d920(0x22a)](),this[_0x47d920(0x1ff)]();}['setTimeIndex'](_0x3b9699){const _0x4ff59d=_0x328247;validateVolumeTimeIndex(this['source'][_0x4ff59d(0x36e)],_0x3b9699),_0x3b9699!==this[_0x4ff59d(0x424)]&&(this['timeIndex']=_0x3b9699,this[_0x4ff59d(0x3db)]());}['setSource'](_0x3dc971){const _0xb086f2=_0x328247;validateVolumeSource(_0x3dc971),this[_0xb086f2(0x215)]=_0x3dc971,this['timeIndex']=Math['min'](this[_0xb086f2(0x424)],_0x3dc971['metadata'][_0xb086f2(0x230)]-0x1),this[_0xb086f2(0x324)]=createVolumeBrickLayout(_0x3dc971[_0xb086f2(0x36e)],this['layout'][_0xb086f2(0x1a8)]),this[_0xb086f2(0x2d0)]=createVolumeBrickDescriptors(_0x3dc971[_0xb086f2(0x36e)],this[_0xb086f2(0x324)]),this[_0xb086f2(0x1bc)][_0xb086f2(0x349)](_0x3dc971[_0xb086f2(0x36e)]),this[_0xb086f2(0x1b8)](),this[_0xb086f2(0x40b)](),this[_0xb086f2(0x3db)](),this['rebuildProfiles'](),this['requestRender']();}[_0x328247(0x416)](_0x10ca9a){const _0x33d4f1=_0x328247;this[_0x33d4f1(0x190)]=_0x10ca9a,this[_0x33d4f1(0x17c)](),this['requestBrickSchedule'](),this[_0x33d4f1(0x1ff)]();}[_0x328247(0x264)](_0x524cea){const _0x13d462=_0x328247;this[_0x13d462(0x1bc)]['setToolMode'](_0x524cea);}['beginInteraction'](_0x2e2f60){const _0x270020=_0x328247;if(this['destroyed']||this[_0x270020(0x2bb)][_0x270020(0x497)](_0x2e2f60))return;let _0x28742a=!this[_0x270020(0x1a4)]();this['activeInteractions'][_0x270020(0x18a)](_0x2e2f60),_0x28742a&&(this[_0x270020(0x310)]=0x0,this[_0x270020(0x3c0)]());}['endInteraction'](_0x5aeff8){const _0x2be301=_0x328247;this[_0x2be301(0x224)]||!this[_0x2be301(0x2bb)]['delete'](_0x5aeff8)||this['isInteracting']()||(this['lastTimingFrameTimestamp']=0x0,this[_0x2be301(0x3c0)]());}[_0x328247(0x262)](_0x2b1d47,_0x43e64e){const _0x35021f=_0x328247;this[_0x35021f(0x1bc)]['updatePreview'](_0x2b1d47,_0x43e64e);let _0x53a0f1=this[_0x35021f(0x1bc)][_0x35021f(0x3b9)]();if(!_0x53a0f1)throw Error('The\x20maximum\x20locked\x20slice\x20count\x20has\x20been\x20reached.\x20已达到最大锁定切面数量。');return _0x53a0f1;}[_0x328247(0x398)](_0x1c817e,_0x369777){const _0x28cc52=_0x328247;this[_0x28cc52(0x1bc)][_0x28cc52(0x1b6)](_0x1c817e,_0x369777);}['removeSlice'](_0x335150){const _0x44f411=_0x328247;this[_0x44f411(0x1bc)][_0x44f411(0x303)](_0x335150);}['clearLockedSlices'](){const _0x13a905=_0x328247;this[_0x13a905(0x1bc)][_0x13a905(0x3d7)]();}[_0x328247(0x3c0)](){const _0x4f1958=_0x328247;let _0x53b01f=Math[_0x4f1958(0x4ab)](window[_0x4f1958(0x4ba)]||0x1,this[_0x4f1958(0x28e)])*this[_0x4f1958(0x259)](),_0x263ff9=Math[_0x4f1958(0x4b3)](0x1,Math[_0x4f1958(0x232)](this['canvas'][_0x4f1958(0x1ce)]*_0x53b01f||this[_0x4f1958(0x3ea)][_0x4f1958(0x25d)]||0x1)),_0x59ba37=Math['max'](0x1,Math[_0x4f1958(0x232)](this[_0x4f1958(0x3ea)][_0x4f1958(0x27c)]*_0x53b01f||this[_0x4f1958(0x3ea)][_0x4f1958(0x304)]||0x1));this[_0x4f1958(0x1e8)][_0x4f1958(0x4b2)](_0x263ff9/_0x59ba37),(this[_0x4f1958(0x3ea)][_0x4f1958(0x25d)]!==_0x263ff9||this[_0x4f1958(0x3ea)]['height']!==_0x59ba37)&&this['renderer'][_0x4f1958(0x3c0)](_0x263ff9,_0x59ba37),this[_0x4f1958(0x1ff)]();}[_0x328247(0x3d1)](){const _0x4f8728=_0x328247;if(this[_0x4f8728(0x224)])return;this[_0x4f8728(0x411)](),this[_0x4f8728(0x420)]();let _0x3ca8c8=this[_0x4f8728(0x1e8)][_0x4f8728(0x4a8)];if(this[_0x4f8728(0x40c)][_0x4f8728(0x271)]({'viewProjection':Array[_0x4f8728(0x366)](_0x3ca8c8['viewProjection']),'inverseViewProjection':Array[_0x4f8728(0x366)](_0x3ca8c8[_0x4f8728(0x41c)]),'cameraPosition':this[_0x4f8728(0x1e8)][_0x4f8728(0x1f8)][_0x4f8728(0x2b1)]}),this[_0x4f8728(0x40c)][_0x4f8728(0x41a)]({'stepLength':this[_0x4f8728(0x472)]()}),!this[_0x4f8728(0x40c)][_0x4f8728(0x3d1)]()){this['renderDirty']=!0x0;return;}this[_0x4f8728(0x1ac)]=!0x1,this['recordFrameInterval'](performance[_0x4f8728(0x360)]()),this['markerOverlay']?.['update']();}[_0x328247(0x3e1)](){const _0x2fe4bd=_0x328247;if(this[_0x2fe4bd(0x224)])return Promise[_0x2fe4bd(0x4a6)](Error(_0x2fe4bd(0x1ea)));this[_0x2fe4bd(0x411)](),this[_0x2fe4bd(0x420)]();let _0x250d6d=this[_0x2fe4bd(0x1e8)]['matrices'];return this[_0x2fe4bd(0x40c)]['setCamera']({'viewProjection':Array[_0x2fe4bd(0x366)](_0x250d6d[_0x2fe4bd(0x1d8)]),'inverseViewProjection':Array[_0x2fe4bd(0x366)](_0x250d6d['inverseViewProjection']),'cameraPosition':this[_0x2fe4bd(0x1e8)]['state'][_0x2fe4bd(0x2b1)]}),this[_0x2fe4bd(0x40c)][_0x2fe4bd(0x3e1)]();}[_0x328247(0x179)](){const _0x46fad9=_0x328247;if(!this[_0x46fad9(0x224)]){this[_0x46fad9(0x224)]=!0x0,this[_0x46fad9(0x1fb)]+=0x1;for(let _0x3e7d0c of this['requestControllers'])_0x3e7d0c[_0x46fad9(0x498)]();this[_0x46fad9(0x336)][_0x46fad9(0x433)](),cancelAnimationFrame(this['frameRequest']),this[_0x46fad9(0x40c)][_0x46fad9(0x1eb)](null),this[_0x46fad9(0x4c6)]['splice'](0x0)[_0x46fad9(0x18b)](_0x126adf=>_0x126adf()),this[_0x46fad9(0x40c)][_0x46fad9(0x179)](),this[_0x46fad9(0x3b4)]?.[_0x46fad9(0x179)](),this[_0x46fad9(0x2b9)]?.['destroy'](),this[_0x46fad9(0x1ba)][_0x46fad9(0x433)](),this[_0x46fad9(0x467)][_0x46fad9(0x433)](),this[_0x46fad9(0x209)][_0x46fad9(0x433)](),this[_0x46fad9(0x2bb)][_0x46fad9(0x433)](),this[_0x46fad9(0x4c0)]=null;}}['createLayout'](_0x5327a2){const _0x34472b=_0x328247;return createVolumeBrickLayout(_0x5327a2[_0x34472b(0x215)][_0x34472b(0x36e)],{'width':_0x5327a2[_0x34472b(0x33c)]?.[_0x34472b(0x25d)],'height':_0x5327a2[_0x34472b(0x33c)]?.[_0x34472b(0x304)],'depth':_0x5327a2[_0x34472b(0x33c)]?.[_0x34472b(0x1fd)],'halo':_0x5327a2[_0x34472b(0x33c)]?.['halo']});}[_0x328247(0x3c2)](){const _0x1c05d5=_0x328247;return this[_0x1c05d5(0x27d)]==='auto'?this[_0x1c05d5(0x43a)]:this[_0x1c05d5(0x27d)];}['getStepLength'](){const _0x1195e4=_0x328247;let _0x42b08f=qualityStepLength(this[_0x1195e4(0x3c2)]());return(this[_0x1195e4(0x46a)]===_0x1195e4(0x2c7)?_0x42b08f*0.05:_0x42b08f)*(this[_0x1195e4(0x1a4)]()?this[_0x1195e4(0x1ed)]:0x1);}[_0x328247(0x1a4)](){const _0x2713a0=_0x328247;return this[_0x2713a0(0x2bb)][_0x2713a0(0x21e)]>0x0;}['getInteractionKind'](){const _0x54148c=_0x328247;return this['activeInteractions']['size']===0x0?'idle':this['activeInteractions'][_0x54148c(0x21e)]>0x1?_0x54148c(0x477):this['activeInteractions'][_0x54148c(0x3b8)]()[_0x54148c(0x35e)]()[_0x54148c(0x287)]??_0x54148c(0x3d9);}['getEffectiveRenderScale'](){const _0x3d39ed=_0x328247;return this['renderScale']*(this[_0x3d39ed(0x1a4)]()?this[_0x3d39ed(0x361)]:0x1);}[_0x328247(0x49b)](_0x5c20de){const _0x22d444=_0x328247;if(this[_0x22d444(0x492)]=_0x5c20de,!(this[_0x22d444(0x2d6)]===_0x22d444(0x20d)||this[_0x22d444(0x1a4)]())){this[_0x22d444(0x310)]=0x0;return;}if(this[_0x22d444(0x310)]>0x0){let _0x53813b=_0x5c20de-this[_0x22d444(0x310)];_0x53813b>0x0&&_0x53813b<=0xfa&&(this['actualFrameIntervalMilliseconds']=this[_0x22d444(0x4c1)]===0x0?_0x53813b:this[_0x22d444(0x4c1)]*0.8+_0x53813b*0.2,this['updateAutoQuality'](_0x53813b));}this[_0x22d444(0x310)]=_0x5c20de;}[_0x328247(0x42f)](_0x4ab678){const _0x4850e0=_0x328247;if(this[_0x4850e0(0x27d)]!==_0x4850e0(0x449)||(this[_0x4850e0(0x43f)]+=0x1,this[_0x4850e0(0x444)]+=_0x4ab678,this[_0x4850e0(0x43f)]<0x1e))return;let _0x53c873=this[_0x4850e0(0x444)]/this[_0x4850e0(0x43f)];if(this[_0x4850e0(0x43f)]=0x0,this[_0x4850e0(0x444)]=0x0,this[_0x4850e0(0x1a4)]()&&_0x53c873<0xe)return;let _0x5ebfc2=nextAutoQuality(this['autoQuality'],_0x53c873);_0x5ebfc2!==this[_0x4850e0(0x43a)]&&(this[_0x4850e0(0x43a)]=_0x5ebfc2,this[_0x4850e0(0x22a)](),this[_0x4850e0(0x1ff)]());}[_0x328247(0x247)](_0x2dcc9d){const _0x26511c=_0x328247;return new SliceState(_0x2dcc9d[_0x26511c(0x215)][_0x26511c(0x36e)],{'volumeDimFactor':_0x2dcc9d[_0x26511c(0x3b4)]?.[_0x26511c(0x1ab)],'depthMode':_0x2dcc9d[_0x26511c(0x3b4)]?.[_0x26511c(0x199)],'maxLockedSlices':_0x2dcc9d[_0x26511c(0x3b4)]?.['maxLockedSlices'],'onLimitReached':_0x1759f8=>_0x2dcc9d[_0x26511c(0x3b4)]?.[_0x26511c(0x323)]?.(Error('Maximum\x20locked\x20slice\x20count\x20is\x20'+_0x1759f8+_0x26511c(0x2c8)+_0x1759f8+'。'))});}[_0x328247(0x294)](){const _0x18fb85=_0x328247;let _0x50849b=this[_0x18fb85(0x1bc)][_0x18fb85(0x3ab)](_0x47981b=>{const _0x11667b=_0x18fb85;this['pendingSliceSnapshot']=_0x47981b,this[_0x11667b(0x1ff)]();});this[_0x18fb85(0x4c6)][_0x18fb85(0x17b)](_0x50849b);}[_0x328247(0x411)](){const _0x296a25=_0x328247;let _0x3590ac=this[_0x296a25(0x4c0)];if(!_0x3590ac)return;this[_0x296a25(0x4c0)]=null;let _0x21cdb7=[];if(_0x3590ac[_0x296a25(0x387)]){let _0x5dbccd=_0x3590ac[_0x296a25(0x387)][_0x296a25(0x171)]==='x'?this[_0x296a25(0x215)][_0x296a25(0x36e)]['xAxis']:_0x3590ac[_0x296a25(0x387)][_0x296a25(0x171)]==='y'?this[_0x296a25(0x215)][_0x296a25(0x36e)]['yAxis']:this[_0x296a25(0x215)]['metadata'][_0x296a25(0x1d5)];_0x21cdb7[_0x296a25(0x17b)]({'id':_0x296a25(0x1d4),'axis':_0x3590ac['preview'][_0x296a25(0x171)],'position':clamp01(volumeAxisValueToNormalized(_0x5dbccd,_0x3590ac[_0x296a25(0x387)][_0x296a25(0x2b1)])),'depthMode':this['sliceDepthMode'],'visible':!0x0,'opacity':0.72,'plateColor':this['slicePlateColor']});}for(let _0x40e621 of _0x3590ac[_0x296a25(0x4cd)]){let _0x53c301=_0x40e621[_0x296a25(0x171)]==='x'?this[_0x296a25(0x215)][_0x296a25(0x36e)][_0x296a25(0x3c7)]:_0x40e621[_0x296a25(0x171)]==='y'?this[_0x296a25(0x215)][_0x296a25(0x36e)][_0x296a25(0x2fa)]:this['source']['metadata']['zAxis'];_0x21cdb7[_0x296a25(0x17b)]({..._0x40e621,'position':clamp01(volumeAxisValueToNormalized(_0x53c301,_0x40e621[_0x296a25(0x2b1)])),'opacity':0x1,'plateColor':this[_0x296a25(0x402)]});}this[_0x296a25(0x40c)][_0x296a25(0x33f)](_0x21cdb7),this[_0x296a25(0x40c)][_0x296a25(0x41a)]({'volumeDimFactor':_0x3590ac[_0x296a25(0x387)]||_0x3590ac[_0x296a25(0x4cd)]['some'](_0x34a627=>_0x34a627[_0x296a25(0x1e0)])?_0x3590ac[_0x296a25(0x1ab)]:0x1}),this[_0x296a25(0x1fc)]?.(_0x3590ac[_0x296a25(0x4cd)]),this[_0x296a25(0x2d5)]=!0x0;}[_0x328247(0x48f)](_0x4554f5){const _0x447064=_0x328247;let _0x1ffbd3=()=>({'viewProjectionMatrix':this['volumeCamera']['matrices'][_0x447064(0x1d8)],'modelMatrix':composeVolumeModelMatrix(this[_0x447064(0x3fa)],this['verticalScale']),'viewportWidth':Math[_0x447064(0x4b3)](0x1,this[_0x447064(0x3ea)][_0x447064(0x1ce)]),'viewportHeight':Math[_0x447064(0x4b3)](0x1,this[_0x447064(0x3ea)]['clientHeight'])});this['sliceInteraction']=new SliceInteractionController(this[_0x447064(0x418)],this[_0x447064(0x1bc)],_0x1ffbd3,{'hitTolerancePixels':_0x4554f5[_0x447064(0x3b4)]?.[_0x447064(0x348)],'onInteractionStart':()=>this[_0x447064(0x49a)](_0x447064(0x25c)),'onInteractionEnd':()=>this[_0x447064(0x2db)](_0x447064(0x25c))}),this[_0x447064(0x3b4)][_0x447064(0x47a)](),_0x4554f5[_0x447064(0x438)]&&(this[_0x447064(0x2b9)]=new SliceMarkerOverlay(_0x4554f5[_0x447064(0x438)],this[_0x447064(0x1bc)],_0x1ffbd3,{'interactionController':this[_0x447064(0x3b4)]}));}[_0x328247(0x29b)](){const _0x3f7f84=_0x328247;let _0x272b28=_0x1c4710=>{const _0x5b19cd=_0x3351;_0x1c4710['button']!==0x0&&_0x1c4710[_0x5b19cd(0x22d)]!==0x2||(this[_0x5b19cd(0x47d)]={'id':_0x1c4710[_0x5b19cd(0x478)],'x':_0x1c4710[_0x5b19cd(0x488)],'y':_0x1c4710[_0x5b19cd(0x316)],'pan':_0x1c4710['button']===0x2||_0x1c4710[_0x5b19cd(0x2be)]!=='mouse'&&this[_0x5b19cd(0x25e)]===_0x5b19cd(0x41f)},this[_0x5b19cd(0x49a)](_0x5b19cd(0x245)),this[_0x5b19cd(0x418)]['setPointerCapture']?.(_0x1c4710['pointerId']),_0x1c4710[_0x5b19cd(0x39b)]());},_0x3a2541=_0x3294ba=>{const _0x4904bd=_0x3351;if(!this[_0x4904bd(0x47d)]||this[_0x4904bd(0x47d)]['id']!==_0x3294ba[_0x4904bd(0x478)])return;let _0xa51a56=_0x3294ba[_0x4904bd(0x488)]-this[_0x4904bd(0x47d)]['x'],_0x2bc237=_0x3294ba[_0x4904bd(0x316)]-this[_0x4904bd(0x47d)]['y'];this[_0x4904bd(0x47d)]['x']=_0x3294ba['clientX'],this['pointer']['y']=_0x3294ba[_0x4904bd(0x316)],this[_0x4904bd(0x47d)][_0x4904bd(0x41f)]?this[_0x4904bd(0x1e8)][_0x4904bd(0x41f)](_0xa51a56,_0x2bc237,this[_0x4904bd(0x3ea)]['clientHeight']):this['volumeCamera']['orbit'](_0xa51a56,_0x2bc237),this[_0x4904bd(0x22a)](),this['requestRender']();},_0x4d7116=_0x594572=>{const _0x41b6bf=_0x3351;this[_0x41b6bf(0x47d)]?.['id']===_0x594572[_0x41b6bf(0x478)]&&(this[_0x41b6bf(0x47d)]=null,this[_0x41b6bf(0x2db)](_0x41b6bf(0x245)));},_0x50b476=_0x292770=>{const _0x4a782b=_0x3351;_0x292770[_0x4a782b(0x39b)](),this[_0x4a782b(0x1e8)][_0x4a782b(0x237)](_0x292770[_0x4a782b(0x1de)]),this[_0x4a782b(0x22a)](),this[_0x4a782b(0x1ff)]();},_0x163b6e=_0x5eeb6b=>_0x5eeb6b[_0x3f7f84(0x39b)]();this[_0x3f7f84(0x418)][_0x3f7f84(0x26c)](_0x3f7f84(0x21b),_0x272b28),this[_0x3f7f84(0x418)][_0x3f7f84(0x26c)](_0x3f7f84(0x419),_0x3a2541),this[_0x3f7f84(0x418)]['addEventListener'](_0x3f7f84(0x241),_0x4d7116),this[_0x3f7f84(0x418)]['addEventListener'](_0x3f7f84(0x201),_0x4d7116),this['interactionElement'][_0x3f7f84(0x26c)](_0x3f7f84(0x1e6),_0x50b476,{'passive':!0x1}),this[_0x3f7f84(0x418)][_0x3f7f84(0x26c)](_0x3f7f84(0x2cf),_0x163b6e),this[_0x3f7f84(0x4c6)]['push'](()=>this[_0x3f7f84(0x418)][_0x3f7f84(0x28b)]('pointerdown',_0x272b28),()=>this['interactionElement'][_0x3f7f84(0x28b)]('pointermove',_0x3a2541),()=>this[_0x3f7f84(0x418)][_0x3f7f84(0x28b)]('pointerup',_0x4d7116),()=>this[_0x3f7f84(0x418)][_0x3f7f84(0x28b)](_0x3f7f84(0x201),_0x4d7116),()=>this[_0x3f7f84(0x418)][_0x3f7f84(0x28b)](_0x3f7f84(0x1e6),_0x50b476),()=>this[_0x3f7f84(0x418)][_0x3f7f84(0x28b)]('contextmenu',_0x163b6e));}[_0x328247(0x1b8)](){const _0x1c02e8=_0x328247;this['renderer'][_0x1c02e8(0x276)]({'xAxis':this[_0x1c02e8(0x215)][_0x1c02e8(0x36e)][_0x1c02e8(0x3c7)],'yAxis':this[_0x1c02e8(0x215)][_0x1c02e8(0x36e)]['yAxis'],'zAxis':this[_0x1c02e8(0x215)][_0x1c02e8(0x36e)][_0x1c02e8(0x1d5)],'brickWidth':this[_0x1c02e8(0x324)][_0x1c02e8(0x1a8)][_0x1c02e8(0x25d)],'brickHeight':this[_0x1c02e8(0x324)][_0x1c02e8(0x1a8)][_0x1c02e8(0x304)],'brickDepth':this[_0x1c02e8(0x324)][_0x1c02e8(0x1a8)]['depth'],'halo':0x1,'noData':this[_0x1c02e8(0x215)][_0x1c02e8(0x36e)][_0x1c02e8(0x187)]});}['configureModel'](){const _0x4afce6=_0x328247;if(this['coordinateSystem']===_0x4afce6(0x2c7)){let _0x3e1822=createGeographicVolumeLayout(this[_0x4afce6(0x215)][_0x4afce6(0x36e)],this['verticalScale']);this[_0x4afce6(0x40c)]['update']({'modelMatrix':_0x3e1822['proxyModelMatrix'],'inverseModelMatrix':Array[_0x4afce6(0x366)](invertMatrix(_0x3e1822[_0x4afce6(0x1f2)])),'geographicTransform':_0x3e1822['transform'],'clipMinimum':[0x0,0x0,0x0],'clipMaximum':[0x1,0x1,0x1]}),this['requestRender']();return;}let _0x31e86e=composeVolumeModelMatrix(this[_0x4afce6(0x3fa)],this[_0x4afce6(0x4a7)]),_0x4fbb11=normalizeClipBox(this[_0x4afce6(0x215)],this['clipBox']);this[_0x4afce6(0x40c)]['update']({'modelMatrix':Array['from'](_0x31e86e),'inverseModelMatrix':Array[_0x4afce6(0x366)](invertMatrix(_0x31e86e)),'geographicTransform':null,'clipMinimum':_0x4fbb11['minimum'],'clipMaximum':_0x4fbb11[_0x4afce6(0x3a0)]}),this[_0x4afce6(0x1ff)]();}[_0x328247(0x17c)](){const _0x44a7a3=_0x328247;let _0x2226c1=this['profiles']['map'](_0x49e58e=>createProfileSceneMesh(buildVolumeRouteProfileMesh(_0x49e58e,this[_0x44a7a3(0x215)]['metadata']),this['colorStops'],this['opacityStops'],this[_0x44a7a3(0x205)]));this[_0x44a7a3(0x40c)][_0x44a7a3(0x371)](_0x2226c1),this[_0x44a7a3(0x1ff)]();}['resetBrickRequests'](){const _0x22fbbb=_0x328247;this[_0x22fbbb(0x1fb)]+=0x1;for(let _0x2a3d9c of this[_0x22fbbb(0x336)])_0x2a3d9c[_0x22fbbb(0x498)]();this[_0x22fbbb(0x336)]['clear'](),this[_0x22fbbb(0x1ba)][_0x22fbbb(0x433)](),this[_0x22fbbb(0x467)][_0x22fbbb(0x433)](),this[_0x22fbbb(0x209)][_0x22fbbb(0x433)](),this['configureSource'](),this[_0x22fbbb(0x254)]();}[_0x328247(0x22a)](){const _0x2c0f30=_0x328247;this[_0x2c0f30(0x2d5)]=!0x0,this[_0x2c0f30(0x1ff)]();}[_0x328247(0x420)](){const _0x529929=_0x328247;this[_0x529929(0x2d5)]&&(this[_0x529929(0x2d5)]=!0x1,this[_0x529929(0x254)]());}[_0x328247(0x254)](){const _0x14d92b=_0x328247;if(this[_0x14d92b(0x224)])return;this[_0x14d92b(0x2d5)]=!0x1,this[_0x14d92b(0x470)]+=0x1;let _0x276e12=this[_0x14d92b(0x40c)][_0x14d92b(0x2f5)][_0x14d92b(0x31d)];if(_0x276e12<=0x0)return;let _0x25182b=_0x276e12>=this[_0x14d92b(0x2d0)][_0x14d92b(0x34f)];if(_0x25182b&&this[_0x14d92b(0x209)][_0x14d92b(0x21e)]===this[_0x14d92b(0x2d0)]['length']&&this[_0x14d92b(0x1ba)][_0x14d92b(0x21e)]===this[_0x14d92b(0x2d0)]['length']&&this[_0x14d92b(0x467)]['size']===0x0)return;let _0x1c7a7d;_0x25182b?_0x1c7a7d=this[_0x14d92b(0x2d0)]:(this[_0x14d92b(0x3e8)]+=0x1,_0x1c7a7d=[...this[_0x14d92b(0x2d0)]][_0x14d92b(0x3f0)]((_0xabe2fd,_0x114f1f)=>descriptorDemandPriority(_0xabe2fd,this[_0x14d92b(0x215)],this[_0x14d92b(0x1bc)],this[_0x14d92b(0x190)])-descriptorDemandPriority(_0x114f1f,this[_0x14d92b(0x215)],this[_0x14d92b(0x1bc)],this[_0x14d92b(0x190)])||descriptorDistance(_0xabe2fd,this[_0x14d92b(0x324)],this['volumeCamera'][_0x14d92b(0x1f8)])-descriptorDistance(_0x114f1f,this[_0x14d92b(0x324)],this[_0x14d92b(0x1e8)][_0x14d92b(0x1f8)]))['slice'](0x0,_0x276e12));let _0x11ba65=new Set(_0x1c7a7d[_0x14d92b(0x352)](_0x3473c0=>_0x3473c0[_0x14d92b(0x42b)]));this[_0x14d92b(0x209)]=_0x11ba65,_0x25182b||this[_0x14d92b(0x40c)][_0x14d92b(0x2c0)](_0x1c7a7d['filter'](_0x24978d=>this[_0x14d92b(0x1ba)][_0x14d92b(0x497)](_0x24978d['key']))['map'](_0xc9f34=>descriptorLogicalIndex(_0xc9f34,this['layout'])));for(let _0x3c9ea9 of this[_0x14d92b(0x1ba)])_0x11ba65[_0x14d92b(0x497)](_0x3c9ea9)||this[_0x14d92b(0x1ba)][_0x14d92b(0x434)](_0x3c9ea9);let _0x3adf2f=Math['max'](0x0,qualityUploadCount(this[_0x14d92b(0x3c2)]())-this[_0x14d92b(0x467)][_0x14d92b(0x21e)]),_0x200cd9=_0x1c7a7d[_0x14d92b(0x164)](_0x5c24fe=>!this['loadedKeys'][_0x14d92b(0x497)](_0x5c24fe[_0x14d92b(0x42b)])&&!this[_0x14d92b(0x467)][_0x14d92b(0x497)](_0x5c24fe['key']))[_0x14d92b(0x25c)](0x0,_0x3adf2f);for(let _0x2962c3 of _0x200cd9)this[_0x14d92b(0x3c4)](_0x2962c3);}[_0x328247(0x3c4)](_0x5d6791){const _0x26b324=_0x328247;let _0x5da341=this[_0x26b324(0x1fb)],_0x5c9b25=this[_0x26b324(0x215)],_0x1af726=this[_0x26b324(0x424)],_0x294d70=new AbortController();this['requestControllers']['add'](_0x294d70),this[_0x26b324(0x467)]['set'](_0x5d6791[_0x26b324(0x42b)],_0x5da341),Promise[_0x26b324(0x429)](_0x5c9b25[_0x26b324(0x299)](_0x1af726,_0x5d6791[_0x26b324(0x252)],_0x294d70[_0x26b324(0x34e)]))['then'](async _0x1d3bda=>{const _0x3738ef=_0x26b324;if(this[_0x3738ef(0x224)]||_0x5da341!==this[_0x3738ef(0x1fb)]||_0x5c9b25!==this['source']||_0x1af726!==this['timeIndex']||!this['desiredKeys'][_0x3738ef(0x497)](_0x5d6791[_0x3738ef(0x42b)]))return;let _0xc0a39f=createPhysicalBrickValues(_0x5c9b25[_0x3738ef(0x36e)],this[_0x3738ef(0x324)][_0x3738ef(0x1a8)],_0x5d6791,_0x1d3bda),_0x49b87e=descriptorLogicalIndex(_0x5d6791,this['layout']);await this[_0x3738ef(0x40c)][_0x3738ef(0x45b)]({'logicalIndex':_0x49b87e,'values':_0xc0a39f}),!(this[_0x3738ef(0x224)]||_0x5da341!==this[_0x3738ef(0x1fb)]||_0x5c9b25!==this[_0x3738ef(0x215)]||_0x1af726!==this[_0x3738ef(0x424)]||!this[_0x3738ef(0x209)][_0x3738ef(0x497)](_0x5d6791['key']))&&(this[_0x3738ef(0x1ba)][_0x3738ef(0x18a)](_0x5d6791[_0x3738ef(0x42b)]),this['requestRender']());})[_0x26b324(0x43b)](_0x5d93c0=>{const _0x1a5fdf=_0x26b324;_0x5d93c0 instanceof DOMException&&_0x5d93c0[_0x1a5fdf(0x374)]==='AbortError'||console[_0x1a5fdf(0x1d7)](_0x5d93c0);})[_0x26b324(0x176)](()=>{const _0xcfa744=_0x26b324;this[_0xcfa744(0x336)][_0xcfa744(0x434)](_0x294d70),this[_0xcfa744(0x467)][_0xcfa744(0x177)](_0x5d6791[_0xcfa744(0x42b)])===_0x5da341&&this[_0xcfa744(0x467)][_0xcfa744(0x434)](_0x5d6791['key']),_0x5da341===this[_0xcfa744(0x1fb)]&&this[_0xcfa744(0x254)]();});}[_0x328247(0x212)](){const _0x3f0b8a=_0x328247;this[_0x3f0b8a(0x1ac)]&&this[_0x3f0b8a(0x1ff)]();}[_0x328247(0x1ff)](){const _0x2bdb5f=_0x328247;this[_0x2bdb5f(0x224)]||(this[_0x2bdb5f(0x1ac)]=!0x0,!(this[_0x2bdb5f(0x2d6)]!==_0x2bdb5f(0x4c3)||this[_0x2bdb5f(0x1c5)]!==0x0)&&(this[_0x2bdb5f(0x1c5)]=requestAnimationFrame(()=>{const _0x2573ce=_0x2bdb5f;this[_0x2573ce(0x1c5)]=0x0,!(this[_0x2573ce(0x224)]||!this[_0x2573ce(0x1ac)])&&this[_0x2573ce(0x3d1)]();})));}};const createVolumeScene=_0xb8a817=>VolumeScene[_0x328247(0x455)](_0xb8a817),insertOnce=(_0x14199d,_0x5a9f3c,_0x229025)=>{const _0x3bdee5=_0x328247;let _0x560fe3=_0x14199d[_0x3bdee5(0x3be)](_0x5a9f3c);if(_0x560fe3<0x0||_0x14199d[_0x3bdee5(0x3be)](_0x5a9f3c,_0x560fe3+_0x5a9f3c[_0x3bdee5(0x34f)])>=0x0)throw Error(_0x3bdee5(0x358)+_0x5a9f3c);return''+_0x14199d[_0x3bdee5(0x25c)](0x0,_0x560fe3)+_0x229025+_0x14199d[_0x3bdee5(0x25c)](_0x560fe3+_0x5a9f3c[_0x3bdee5(0x34f)]);},mars3dVolumeRaymarchSource=insertOnce(insertOnce(volumeRaymarch_default,_0x328247(0x413),_0x328247(0x39c)),_0x328247(0x16f),_0x328247(0x47e)),premultipliedBlend=()=>({'color':{'srcFactor':_0x328247(0x357),'dstFactor':_0x328247(0x40d),'operation':_0x328247(0x18a)},'alpha':{'srcFactor':_0x328247(0x357),'dstFactor':_0x328247(0x40d),'operation':_0x328247(0x18a)}}),rendererPrototype=WebgpuVolumeSceneRenderer[_0x328247(0x3b3)],mars3dCanvases=new WeakSet();let pipelineHookInstalled=!0x1;function _0x3351(_0x298850,_0x4291a3){const _0x2b7248=_0x2b72();return _0x3351=function(_0x335164,_0xc5b431){_0x335164=_0x335164-0x164;let _0x55b52f=_0x2b7248[_0x335164];return _0x55b52f;},_0x3351(_0x298850,_0x4291a3);}const installPipelineHook=()=>{const _0x301e74=_0x328247;if(pipelineHookInstalled)return;let _0x1431c8=rendererPrototype[_0x301e74(0x194)];rendererPrototype[_0x301e74(0x194)]=function(){const _0x1e3ca7=_0x301e74;if(_0x1431c8['call'](this),!this[_0x1e3ca7(0x3ea)]||!mars3dCanvases[_0x1e3ca7(0x497)](this['canvas']))return;let _0x542731=this[_0x1e3ca7(0x1f3)](),_0x4dd787=_0x542731[_0x1e3ca7(0x37f)]({'label':_0x1e3ca7(0x1a6),'code':mars3dVolumeRaymarchSource});this['volumePipeline']=_0x542731['createRenderPipeline']({'label':_0x1e3ca7(0x2cc),'layout':_0x542731[_0x1e3ca7(0x3a3)]({'bindGroupLayouts':[this['getSceneBindGroupLayout'](),this[_0x1e3ca7(0x243)](),this[_0x1e3ca7(0x204)]()]}),'vertex':{'module':_0x4dd787,'entryPoint':'vertexMain'},'fragment':{'module':_0x4dd787,'entryPoint':_0x1e3ca7(0x37c),'targets':[{'format':this[_0x1e3ca7(0x35b)](),'blend':premultipliedBlend()}]},'primitive':{'topology':_0x1e3ca7(0x458)}});},pipelineHookInstalled=!0x0;},createMars3dVolumeScene=async _0x599732=>{const _0x4e3b2d=_0x328247;installPipelineHook(),mars3dCanvases['add'](_0x599732[_0x4e3b2d(0x3ea)]);try{let _0xd13e70=await createVolumeScene(_0x599732),_0x375aca=_0xd13e70[_0x4e3b2d(0x179)][_0x4e3b2d(0x32d)](_0xd13e70);return _0xd13e70['destroy']=()=>{const _0x1acee7=_0x4e3b2d;mars3dCanvases['delete'](_0x599732[_0x1acee7(0x3ea)]),_0x375aca();},_0xd13e70;}catch(_0x53f093){throw mars3dCanvases[_0x4e3b2d(0x434)](_0x599732[_0x4e3b2d(0x3ea)]),_0x53f093;}},crossVector=(_0x1ef520,_0x523df8)=>[_0x1ef520[0x1]*_0x523df8[0x2]-_0x1ef520[0x2]*_0x523df8[0x1],_0x1ef520[0x2]*_0x523df8[0x0]-_0x1ef520[0x0]*_0x523df8[0x2],_0x1ef520[0x0]*_0x523df8[0x1]-_0x1ef520[0x1]*_0x523df8[0x0]],normalizeVector=_0x5eef01=>{let _0x591fd1=Math['hypot'](_0x5eef01[0x0],_0x5eef01[0x1],_0x5eef01[0x2]);return _0x591fd1>1e-10?[_0x5eef01[0x0]/_0x591fd1,_0x5eef01[0x1]/_0x591fd1,_0x5eef01[0x2]/_0x591fd1]:null;},dotVector=(_0x458af2,_0x4744c0)=>_0x458af2[0x0]*_0x4744c0[0x0]+_0x458af2[0x1]*_0x4744c0[0x1]+_0x458af2[0x2]*_0x4744c0[0x2],addScaledVector=(_0x386a06,_0x402b69,_0x473a9f)=>[_0x386a06[0x0]+_0x402b69[0x0]*_0x473a9f,_0x386a06[0x1]+_0x402b69[0x1]*_0x473a9f,_0x386a06[0x2]+_0x402b69[0x2]*_0x473a9f],createMars3dCompensationFrame=(_0x2dd391,_0x24b043,_0x15667c)=>{const _0x1c3460=_0x328247;let _0x3c8dee=normalizeVector(_0x2dd391[_0x1c3460(0x2dd)]),_0x41b164=_0x3c8dee?normalizeVector(crossVector(_0x3c8dee,_0x2dd391['up'])):null,_0x1faf35=_0x3c8dee&&_0x41b164?normalizeVector(crossVector(_0x41b164,_0x3c8dee)):null,_0x502864=Math[_0x1c3460(0x4bf)](_0x2dd391[_0x1c3460(0x37d)]/0x2),_0x4b06de=_0x24b043/_0x15667c;if(!_0x3c8dee||!_0x41b164||!_0x1faf35||!(_0x502864>0x0)||!(_0x4b06de>0x0)||!(_0x2dd391[_0x1c3460(0x2ef)]>0x0))return null;let _0x2c4650=addScaledVector(_0x2dd391[_0x1c3460(0x2b1)],_0x3c8dee,_0x2dd391[_0x1c3460(0x2ef)]),_0x58a869=[_0x2c4650,addScaledVector(_0x2c4650,_0x41b164,_0x2dd391[_0x1c3460(0x2ef)]*_0x502864*_0x4b06de*0.5),addScaledVector(_0x2c4650,_0x1faf35,_0x2dd391[_0x1c3460(0x2ef)]*_0x502864*0.5)],_0x416faa=projectMars3dCompensationAnchors(_0x2dd391,_0x58a869,_0x24b043,_0x15667c);return _0x416faa?{'worldAnchors':_0x58a869,'screenAnchors':_0x416faa}:null;},projectMars3dCompensationAnchors=(_0x5cb4ec,_0x369557,_0x230665,_0x4707e3)=>{const _0x300478=_0x328247;let _0x3c8d6d=normalizeVector(_0x5cb4ec['direction']),_0x376156=_0x3c8d6d?normalizeVector(crossVector(_0x3c8d6d,_0x5cb4ec['up'])):null,_0x4237bc=_0x3c8d6d&&_0x376156?normalizeVector(crossVector(_0x376156,_0x3c8d6d)):null,_0xd2d65a=Math[_0x300478(0x4bf)](_0x5cb4ec[_0x300478(0x37d)]/0x2),_0x22672e=_0x230665/_0x4707e3;if(!_0x3c8d6d||!_0x376156||!_0x4237bc||!(_0xd2d65a>0x0)||!(_0x22672e>0x0))return null;let _0x22a2c7=[];for(let _0x249ac3 of _0x369557){let _0x387426=[_0x249ac3[0x0]-_0x5cb4ec[_0x300478(0x2b1)][0x0],_0x249ac3[0x1]-_0x5cb4ec[_0x300478(0x2b1)][0x1],_0x249ac3[0x2]-_0x5cb4ec[_0x300478(0x2b1)][0x2]],_0x213ceb=dotVector(_0x387426,_0x3c8d6d);if(!(_0x213ceb>0.000001))return null;let _0x422962=dotVector(_0x387426,_0x376156)/(_0x213ceb*_0xd2d65a*_0x22672e),_0x1fc0f4=dotVector(_0x387426,_0x4237bc)/(_0x213ceb*_0xd2d65a);_0x22a2c7[_0x300478(0x17b)]({'x':(_0x422962*0.5+0.5)*_0x230665,'y':(0.5-_0x1fc0f4*0.5)*_0x4707e3});}return _0x22a2c7;},createMars3dCanvasCompensationTransform=(_0x214307,_0xa67c43)=>{const _0x441f3e=_0x328247;if(_0x214307[_0x441f3e(0x34f)]!==0x3||_0xa67c43['length']!==0x3)return null;let _0x590da5={'x':_0x214307[0x1]['x']-_0x214307[0x0]['x'],'y':_0x214307[0x1]['y']-_0x214307[0x0]['y']},_0xd9fe60={'x':_0x214307[0x2]['x']-_0x214307[0x0]['x'],'y':_0x214307[0x2]['y']-_0x214307[0x0]['y']},_0x42895d={'x':_0xa67c43[0x1]['x']-_0xa67c43[0x0]['x'],'y':_0xa67c43[0x1]['y']-_0xa67c43[0x0]['y']},_0x3967f4={'x':_0xa67c43[0x2]['x']-_0xa67c43[0x0]['x'],'y':_0xa67c43[0x2]['y']-_0xa67c43[0x0]['y']},_0x3fd4aa=_0x590da5['x']*_0xd9fe60['y']-_0xd9fe60['x']*_0x590da5['y'];if(Math[_0x441f3e(0x1b4)](_0x3fd4aa)<0.000001)return null;let _0x291631=(_0x42895d['x']*_0xd9fe60['y']-_0x3967f4['x']*_0x590da5['y'])/_0x3fd4aa,_0x1bcc7e=(-_0x42895d['x']*_0xd9fe60['x']+_0x3967f4['x']*_0x590da5['x'])/_0x3fd4aa,_0x31b170=(_0x42895d['y']*_0xd9fe60['y']-_0x3967f4['y']*_0x590da5['y'])/_0x3fd4aa,_0x34f16e=(-_0x42895d['y']*_0xd9fe60['x']+_0x3967f4['y']*_0x590da5['x'])/_0x3fd4aa,_0x1f62aa=[_0x291631,_0x31b170,_0x1bcc7e,_0x34f16e,_0xa67c43[0x0]['x']-_0x291631*_0x214307[0x0]['x']-_0x1bcc7e*_0x214307[0x0]['y'],_0xa67c43[0x0]['y']-_0x31b170*_0x214307[0x0]['x']-_0x34f16e*_0x214307[0x0]['y']];return _0x1f62aa['every'](Number[_0x441f3e(0x410)])?_0x441f3e(0x390)+_0x1f62aa[_0x441f3e(0x375)](',')+')':null;},getError=_0x4b24a2=>_0x4b24a2 instanceof Error?_0x4b24a2:Error(String(_0x4b24a2));var Mars3dVolumeRenderer=class{[_0x328247(0x180)];[_0x328247(0x352)];[_0x328247(0x3ea)];[_0x328247(0x49c)];['cameraFrameCompensation'];[_0x328247(0x33a)]=null;[_0x328247(0x215)];['layout'];[_0x328247(0x1c5)]=0x0;[_0x328247(0x289)]=0x0;[_0x328247(0x178)]=0x0;['shown'];[_0x328247(0x224)]=!0x1;[_0x328247(0x2fd)]=!0x1;['cameraSignature']='';[_0x328247(0x275)]=null;[_0x328247(0x2b6)]=null;constructor(_0x5b3cf0,_0x2fd71f){const _0x15f74c=_0x328247;this['map']=_0x5b3cf0,this[_0x15f74c(0x215)]=_0x2fd71f[_0x15f74c(0x215)],this[_0x15f74c(0x324)]=createGeographicVolumeLayout(_0x2fd71f[_0x15f74c(0x215)][_0x15f74c(0x36e)]),this[_0x15f74c(0x49c)]=_0x2fd71f[_0x15f74c(0x49c)],this[_0x15f74c(0x1d3)]=_0x2fd71f[_0x15f74c(0x1d3)]??!0x0,this[_0x15f74c(0x250)]=_0x2fd71f[_0x15f74c(0x4ce)]??!0x0,this[_0x15f74c(0x3ea)]=this[_0x15f74c(0x382)](_0x5b3cf0[_0x15f74c(0x33a)][_0x15f74c(0x3ea)]),this['readyPromise']=this[_0x15f74c(0x47a)](_0x2fd71f);}get[_0x328247(0x2f5)](){const _0x87d56f=_0x328247;return this['scene']?.[_0x87d56f(0x2f5)]??null;}get[_0x328247(0x4cd)](){const _0x41b704=_0x328247;return this['scene']?.[_0x41b704(0x4cd)]??[];}['setShow'](_0x2991b9){const _0x5cb244=_0x328247;this[_0x5cb244(0x25f)](),this[_0x5cb244(0x250)]=_0x2991b9,this['canvas'][_0x5cb244(0x496)][_0x5cb244(0x3cf)]=_0x2991b9?'block':'none',_0x2991b9&&this['requestFrames'](0x3);}[_0x328247(0x41a)](_0x23c3f9){const _0x160134=_0x328247;this['requireScene']()[_0x160134(0x41a)](_0x23c3f9),this['requestFrames'](0x3);}[_0x328247(0x225)](_0x28ceb0){const _0x52065c=_0x328247;this[_0x52065c(0x383)]()[_0x52065c(0x225)](_0x28ceb0),this['requestFrames'](0x3);}[_0x328247(0x416)](_0x4947d3){const _0x5c7e75=_0x328247;this[_0x5c7e75(0x383)]()[_0x5c7e75(0x416)](_0x4947d3),this[_0x5c7e75(0x2c6)](0x3);}[_0x328247(0x398)](_0x4208d3,_0x1edb69){const _0x3fd791=_0x328247;this['requireScene']()['updateSlice'](_0x4208d3,_0x1edb69),this[_0x3fd791(0x2c6)](0x3);}[_0x328247(0x303)](_0x242788){const _0x300b9d=_0x328247;this[_0x300b9d(0x383)]()[_0x300b9d(0x303)](_0x242788),this[_0x300b9d(0x2c6)](0x3);}[_0x328247(0x3d7)](){const _0x1ed806=_0x328247;this['requireScene']()[_0x1ed806(0x3d7)](),this[_0x1ed806(0x2c6)](0x3);}[_0x328247(0x262)](_0x3b8d0b,_0x2459fd){const _0x5476cb=_0x328247;let _0x408db1=this[_0x5476cb(0x383)]()['lockSlice'](_0x3b8d0b,_0x2459fd);return this[_0x5476cb(0x2c6)](0x3),_0x408db1;}[_0x328247(0x276)](_0x374aaf){const _0x3a2ba1=_0x328247;this[_0x3a2ba1(0x25f)](),this[_0x3a2ba1(0x215)]=_0x374aaf,this[_0x3a2ba1(0x324)]=createGeographicVolumeLayout(_0x374aaf[_0x3a2ba1(0x36e)]),this[_0x3a2ba1(0x3df)](),this[_0x3a2ba1(0x383)]()[_0x3a2ba1(0x276)](_0x374aaf),this['syncCamera'](),this['requestFrames'](0x3);}[_0x328247(0x179)](){const _0x164fe4=_0x328247;this['destroyed']||(this['destroyed']=!0x0,cancelAnimationFrame(this['frameRequest']),window[_0x164fe4(0x379)](this[_0x164fe4(0x289)]),this['frameRequest']=0x0,this[_0x164fe4(0x289)]=0x0,this['map'][_0x164fe4(0x33a)][_0x164fe4(0x45a)][_0x164fe4(0x28b)](this[_0x164fe4(0x19f)]),window[_0x164fe4(0x28b)](_0x164fe4(0x3c0),this[_0x164fe4(0x2da)]),this[_0x164fe4(0x33a)]?.[_0x164fe4(0x179)](),this['scene']=null,this[_0x164fe4(0x3ea)][_0x164fe4(0x3cd)]());}['finishCameraInteraction'](){const _0x55dfdb=_0x328247;this[_0x55dfdb(0x2fd)]&&(window[_0x55dfdb(0x379)](this[_0x55dfdb(0x289)]),this['cameraEndTimer']=0x0,this[_0x55dfdb(0x2fd)]=!0x1,this['scene']?.['endInteraction'](_0x55dfdb(0x245)),this['syncCamera'](),this[_0x55dfdb(0x2c6)](0x3));}['handlePreRender']=()=>{const _0x14bda9=_0x328247;let _0x39d295=this[_0x14bda9(0x19a)](this['map'][_0x14bda9(0x33a)][_0x14bda9(0x245)]);_0x39d295!==this[_0x14bda9(0x450)]&&(this[_0x14bda9(0x450)]=_0x39d295,this[_0x14bda9(0x29d)](),this[_0x14bda9(0x417)](),this[_0x14bda9(0x3ac)](),this[_0x14bda9(0x3d6)](0x1));};[_0x328247(0x2da)]=()=>{const _0x3d0e84=_0x328247;this[_0x3d0e84(0x3df)](),this[_0x3d0e84(0x33a)]?.['resize'](),this[_0x3d0e84(0x417)](),this[_0x3d0e84(0x2c6)](0x3);};async[_0x328247(0x47a)](_0xfdaaf){const _0x5dcf80=_0x328247;try{let _0x40c2b1=await createMars3dVolumeScene({..._0xfdaaf,'interactionStepScale':_0xfdaaf['interactionStepScale']??1.35,'canvas':this[_0x5dcf80(0x3ea)],'coordinateSystem':_0x5dcf80(0x2c7),'showDebugGeometry':!0x1,'renderMode':_0x5dcf80(0x20d)});if(this['destroyed']){_0x40c2b1[_0x5dcf80(0x179)]();return;}this[_0x5dcf80(0x33a)]=_0x40c2b1,this[_0x5dcf80(0x43c)](_0x40c2b1),this[_0x5dcf80(0x352)][_0x5dcf80(0x33a)]['preRender'][_0x5dcf80(0x26c)](this[_0x5dcf80(0x19f)]),window['addEventListener'](_0x5dcf80(0x3c0),this['handleResize']),this['syncCamera'](),this[_0x5dcf80(0x2c6)](0x3);}catch(_0xd41712){let _0xf45b86=getError(_0xd41712);throw this['canvas'][_0x5dcf80(0x3cd)](),this[_0x5dcf80(0x49c)]?.(_0xf45b86),_0xf45b86;}}[_0x328247(0x417)](){const _0x1dc933=_0x328247;let _0x318172=this['scene'];if(!_0x318172)return;let _0x3ecbc2=this[_0x1dc933(0x352)]['scene']['camera'],_0x4a1e4c=ecefToGeographicVolumeLocal([_0x3ecbc2[_0x1dc933(0x392)]['x'],_0x3ecbc2[_0x1dc933(0x392)]['y'],_0x3ecbc2['positionWC']['z']],this['layout']),_0xddc4f=[_0x3ecbc2[_0x1dc933(0x20e)]['x'],_0x3ecbc2[_0x1dc933(0x20e)]['y'],_0x3ecbc2[_0x1dc933(0x20e)]['z']],_0x4be201=[_0x3ecbc2[_0x1dc933(0x2b2)]['x'],_0x3ecbc2[_0x1dc933(0x2b2)]['y'],_0x3ecbc2[_0x1dc933(0x2b2)]['z']],_0x30af57=Math[_0x1dc933(0x4b3)](0.001,Math[_0x1dc933(0x1b4)](_0x3ecbc2[_0x1dc933(0x17d)][_0x1dc933(0x304)])/this[_0x1dc933(0x324)][_0x1dc933(0x25b)]),_0xd437e4=[_0x4a1e4c[0x0]+_0xddc4f[0x0]*_0x30af57,_0x4a1e4c[0x1]+_0xddc4f[0x1]*_0x30af57,_0x4a1e4c[0x2]+_0xddc4f[0x2]*_0x30af57],_0xd1ce15=_0x3ecbc2[_0x1dc933(0x2a2)][_0x1dc933(0x292)]??_0x3ecbc2[_0x1dc933(0x2a2)][_0x1dc933(0x1ee)]??Math['PI']/0x3,_0x550c2b=Math[_0x1dc933(0x4b3)](0.0001,_0x30af57/0x2710),_0x53d99d=Math[_0x1dc933(0x4b3)](0x64,_0x30af57*0x4);_0x318172[_0x1dc933(0x271)]({'position':_0x4a1e4c,'target':_0xd437e4,'up':_0x4be201,'projection':{'type':'perspective','fovYDegrees':_0xd1ce15*0xb4/Math['PI'],'near':_0x550c2b,'far':_0x53d99d}});}[_0x328247(0x43c)](_0x332f07){const _0x224dc1=_0x328247;let _0xbffe27=_0x332f07[_0x224dc1(0x40c)],_0x59a72f=_0xbffe27['frameAvailableCallback'];_0xbffe27[_0x224dc1(0x1a5)]=()=>{const _0x51086f=_0x224dc1;this[_0x51086f(0x275)]&&(this[_0x51086f(0x2b6)]=this[_0x51086f(0x275)],this['pendingCompensationFrame']=null,this[_0x51086f(0x3ac)]()),_0x59a72f?.();};}[_0x328247(0x308)](){const _0x5de3e7=_0x328247;let _0x4e3914=this[_0x5de3e7(0x352)]['scene']['camera'];return{'position':[_0x4e3914['positionWC']['x'],_0x4e3914[_0x5de3e7(0x392)]['y'],_0x4e3914[_0x5de3e7(0x392)]['z']],'direction':[_0x4e3914[_0x5de3e7(0x20e)]['x'],_0x4e3914['directionWC']['y'],_0x4e3914[_0x5de3e7(0x20e)]['z']],'up':[_0x4e3914[_0x5de3e7(0x2b2)]['x'],_0x4e3914[_0x5de3e7(0x2b2)]['y'],_0x4e3914[_0x5de3e7(0x2b2)]['z']],'fovYRadians':_0x4e3914['frustum'][_0x5de3e7(0x292)]??_0x4e3914[_0x5de3e7(0x2a2)][_0x5de3e7(0x1ee)]??Math['PI']/0x3,'anchorDistance':Math[_0x5de3e7(0x4b3)](0x3e8,Math[_0x5de3e7(0x1b4)](_0x4e3914[_0x5de3e7(0x17d)][_0x5de3e7(0x304)])*0x2)};}[_0x328247(0x19d)](){const _0x323374=_0x328247;return createMars3dCompensationFrame(this[_0x323374(0x308)](),this[_0x323374(0x3ea)]['clientWidth'],this[_0x323374(0x3ea)]['clientHeight']);}['applyCameraFrameCompensation'](){const _0x314826=_0x328247;if(!this[_0x314826(0x1d3)]||!this[_0x314826(0x2b6)]){this[_0x314826(0x3ea)]['style']['transform']=_0x314826(0x266);return;}let _0x3ba825=projectMars3dCompensationAnchors(this['createProjectionCamera'](),this[_0x314826(0x2b6)][_0x314826(0x21c)],this[_0x314826(0x3ea)]['clientWidth'],this[_0x314826(0x3ea)]['clientHeight']),_0x29952b=_0x3ba825?createMars3dCanvasCompensationTransform(this[_0x314826(0x2b6)][_0x314826(0x3ef)],_0x3ba825):null;this['canvas'][_0x314826(0x496)]['transform']=_0x29952b??_0x314826(0x266);}[_0x328247(0x3df)](){const _0x17320a=_0x328247;this[_0x17320a(0x275)]=null,this[_0x17320a(0x2b6)]=null,this['canvas']['style']['transform']=_0x17320a(0x266);}[_0x328247(0x2c6)](_0xee842c){const _0x12836b=_0x328247;!this['shown']||this[_0x12836b(0x224)]||(this[_0x12836b(0x178)]=Math[_0x12836b(0x4b3)](this['framesRemaining'],_0xee842c),this[_0x12836b(0x1c5)]||=requestAnimationFrame(this['renderFrame']));}[_0x328247(0x3d6)](_0x31c1ce){const _0x22f0a7=_0x328247;!this[_0x22f0a7(0x250)]||this['destroyed']||(this['framesRemaining']=Math['max'](this[_0x22f0a7(0x178)],_0x31c1ce),this[_0x22f0a7(0x1c5)]&&cancelAnimationFrame(this['frameRequest']),this[_0x22f0a7(0x1c5)]=0x0,this[_0x22f0a7(0x353)]());}[_0x328247(0x353)]=()=>{const _0x4757e0=_0x328247;this['frameRequest']=0x0;let _0x26e935=this[_0x4757e0(0x33a)];if(!(!_0x26e935||!this[_0x4757e0(0x250)]||this[_0x4757e0(0x224)]))try{_0x26e935[_0x4757e0(0x3c0)]();let _0x449d3d=_0x26e935[_0x4757e0(0x2f5)][_0x4757e0(0x1a0)];_0x26e935[_0x4757e0(0x3d1)](),_0x26e935[_0x4757e0(0x2f5)]['submittedFrameCount']>_0x449d3d&&(this[_0x4757e0(0x275)]=this[_0x4757e0(0x19d)](),this[_0x4757e0(0x178)]=Math[_0x4757e0(0x4b3)](0x0,this['framesRemaining']-0x1));let _0x3e469a=_0x26e935[_0x4757e0(0x2f5)];(_0x3e469a[_0x4757e0(0x479)]>0x0||_0x3e469a[_0x4757e0(0x18f)]<_0x3e469a[_0x4757e0(0x272)]||this[_0x4757e0(0x178)]>0x0)&&(this[_0x4757e0(0x1c5)]=requestAnimationFrame(this[_0x4757e0(0x353)]));}catch(_0x3dc2e2){this[_0x4757e0(0x49c)]?.(getError(_0x3dc2e2));}};[_0x328247(0x382)](_0x3912aa){const _0x585212=_0x328247;let _0x16d0ba=_0x3912aa[_0x585212(0x1d9)];if(!_0x16d0ba)throw Error(_0x585212(0x2a4));let _0x599b84=document[_0x585212(0x332)]('canvas');return _0x599b84[_0x585212(0x496)][_0x585212(0x2b1)]=_0x585212(0x3d0),_0x599b84[_0x585212(0x496)]['inset']='0',_0x599b84[_0x585212(0x496)]['width']=_0x585212(0x423),_0x599b84[_0x585212(0x496)][_0x585212(0x304)]=_0x585212(0x423),_0x599b84[_0x585212(0x496)][_0x585212(0x242)]=_0x585212(0x266),_0x599b84['style']['display']=this['shown']?_0x585212(0x19e):_0x585212(0x266),_0x599b84[_0x585212(0x496)][_0x585212(0x200)]='1',_0x16d0ba['append'](_0x599b84),_0x599b84;}[_0x328247(0x19a)](_0x28fb02){const _0x1a09fe=_0x328247;return[_0x28fb02[_0x1a09fe(0x392)]['x'],_0x28fb02[_0x1a09fe(0x392)]['y'],_0x28fb02['positionWC']['z'],_0x28fb02['directionWC']['x'],_0x28fb02['directionWC']['y'],_0x28fb02['directionWC']['z'],_0x28fb02[_0x1a09fe(0x2b2)]['x'],_0x28fb02['upWC']['y'],_0x28fb02['upWC']['z'],_0x28fb02['frustum'][_0x1a09fe(0x292)]??_0x28fb02[_0x1a09fe(0x2a2)]['fov']??0x0,_0x28fb02[_0x1a09fe(0x2a2)][_0x1a09fe(0x1f9)],_0x28fb02[_0x1a09fe(0x2a2)]['far']][_0x1a09fe(0x352)](_0xd8b578=>_0xd8b578[_0x1a09fe(0x2ed)](0xa))[_0x1a09fe(0x375)]('|');}[_0x328247(0x485)](){const _0x1080b5=_0x328247;window[_0x1080b5(0x379)](this[_0x1080b5(0x289)]),this[_0x1080b5(0x289)]=window[_0x1080b5(0x3a5)](this[_0x1080b5(0x3ae)][_0x1080b5(0x32d)](this),0xc8);}[_0x328247(0x29d)](){const _0x532d05=_0x328247;this[_0x532d05(0x2fd)]||(this['cameraMoving']=!0x0,this[_0x532d05(0x33a)]?.[_0x532d05(0x49a)]('camera')),this[_0x532d05(0x485)]();}['requireScene'](){const _0x271727=_0x328247;if(this[_0x271727(0x25f)](),!this['scene'])throw Error(_0x271727(0x18c));return this[_0x271727(0x33a)];}['assertAlive'](){const _0x4b2117=_0x328247;if(this[_0x4b2117(0x224)])throw Error(_0x4b2117(0x368));}};const layerConstructors=new WeakMap(),getVolumeLayerConstructor=_0xb62708=>{const _0x47909d=_0x328247;let _0x390a80=layerConstructors[_0x47909d(0x177)](_0xb62708);if(_0x390a80)return _0x390a80;let _0x261158=_0xb62708['layer']['BaseLayer'];class _0x4af9f1 extends _0x261158{[_0x47909d(0x36f)];[_0x47909d(0x40c)]=null;[_0x47909d(0x3bb)]=null;[_0x47909d(0x407)]=null;[_0x47909d(0x180)]=new Promise((resolve,reject)=>{const _0x2bd7b6=_0x47909d;this['readyResolve']=resolve,this[_0x2bd7b6(0x407)]=reject;});constructor(_0x9fdad3){super({..._0x9fdad3}),this['volumeOptions']={..._0x9fdad3};}get[_0x47909d(0x2f5)](){const _0x13b55b=_0x47909d;return this['renderer']?.[_0x13b55b(0x2f5)]??null;}get[_0x47909d(0x4cd)](){const _0x153f22=_0x47909d;return this['renderer']?.[_0x153f22(0x4cd)]??[];}[_0x47909d(0x41a)](_0x5dfd13){const _0x289607=_0x47909d;this[_0x289607(0x40c)]?.[_0x289607(0x41a)](_0x5dfd13);}[_0x47909d(0x276)](_0x5b6c42){const _0x12d671=_0x47909d;this[_0x12d671(0x36f)][_0x12d671(0x215)]=_0x5b6c42,this[_0x12d671(0x2bd)]()[_0x12d671(0x276)](_0x5b6c42);}[_0x47909d(0x225)](_0x1da601){const _0x59a122=_0x47909d;this['requireRenderer']()[_0x59a122(0x225)](_0x1da601);}[_0x47909d(0x416)](_0x15ae8d){const _0x430f69=_0x47909d;this[_0x430f69(0x2bd)]()[_0x430f69(0x416)](_0x15ae8d);}['lockSlice'](_0x4e1f07,_0x2f57af){const _0x42ba71=_0x47909d;return this[_0x42ba71(0x2bd)]()[_0x42ba71(0x262)](_0x4e1f07,_0x2f57af);}[_0x47909d(0x398)](_0x1391b0,_0x70da4){const _0x1047ef=_0x47909d;this[_0x1047ef(0x2bd)]()[_0x1047ef(0x398)](_0x1391b0,_0x70da4);}[_0x47909d(0x303)](_0x182f85){const _0x65f578=_0x47909d;this[_0x65f578(0x2bd)]()[_0x65f578(0x303)](_0x182f85);}[_0x47909d(0x3d7)](){const _0x410ab0=_0x47909d;this[_0x410ab0(0x2bd)]()[_0x410ab0(0x3d7)]();}[_0x47909d(0x457)](){}[_0x47909d(0x3eb)](){const _0x3ff51d=_0x47909d;if(!this[_0x3ff51d(0x26f)])throw Error(_0x3ff51d(0x45e));this[_0x3ff51d(0x40c)]?.['destroy'](),this[_0x3ff51d(0x40c)]=new Mars3dVolumeRenderer(this[_0x3ff51d(0x26f)],this[_0x3ff51d(0x36f)]),this['renderer'][_0x3ff51d(0x405)](this['show']),this['renderer']['readyPromise'][_0x3ff51d(0x347)](()=>this[_0x3ff51d(0x3bb)]?.())[_0x3ff51d(0x43b)](_0xbf12b9=>this[_0x3ff51d(0x407)]?.(_0xbf12b9));}[_0x47909d(0x3ba)](_0x490c1b){const _0x2c5be6=_0x47909d;this['renderer']?.[_0x2c5be6(0x405)](_0x490c1b);}['_removedHook'](){const _0x489642=_0x47909d;this['renderer']?.[_0x489642(0x179)](),this[_0x489642(0x40c)]=null;}[_0x47909d(0x2bd)](){const _0x14e63d=_0x47909d;if(!this[_0x14e63d(0x40c)])throw Error('Mars3D\x20volume\x20layer\x20is\x20not\x20added\x20to\x20a\x20map.\x20Mars3D\x20体积层尚未添加到地图。');return this[_0x14e63d(0x40c)];}}let _0x34b888=_0x4af9f1;return layerConstructors['set'](_0xb62708,_0x34b888),_0x34b888;},createMars3dVolumeLayer=(_0x5edbc0,_0x29853b)=>new(getVolumeLayerConstructor(_0x5edbc0))(_0x29853b);exports['createMars3dVolumeLayer']=createMars3dVolumeLayer;
|