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 _0x5d7726=_0x2fcb;(function(_0x34b13d,_0x3f9b5e){const _0x12306a=_0x2fcb,_0x57c822=_0x34b13d();while(!![]){try{const _0x54c93e=parseInt(_0x12306a(0x2e0))/0x1+parseInt(_0x12306a(0x1cb))/0x2*(parseInt(_0x12306a(0x298))/0x3)+-parseInt(_0x12306a(0x155))/0x4+-parseInt(_0x12306a(0x30d))/0x5*(-parseInt(_0x12306a(0x27e))/0x6)+-parseInt(_0x12306a(0xff))/0x7+parseInt(_0x12306a(0x1c5))/0x8*(parseInt(_0x12306a(0x355))/0x9)+-parseInt(_0x12306a(0x40d))/0xa;if(_0x54c93e===_0x3f9b5e)break;else _0x57c822['push'](_0x57c822['shift']());}catch(_0x4db99a){_0x57c822['push'](_0x57c822['shift']());}}}(_0x5873,0x3f84c),Object[_0x5d7726(0x17e)](exports,Symbol[_0x5d7726(0x10a)],{'value':_0x5d7726(0x316)}));const validatePositiveInteger=(_0x184ff9,_0x266a51)=>{const _0x2512ea=_0x5d7726;if(!Number[_0x2512ea(0x291)](_0x184ff9)||_0x184ff9<=0x0)throw Error(_0x266a51+_0x2512ea(0x1be)+_0x266a51+_0x2512ea(0x2b7));},validateAxis=(_0x4332a9,_0x44bb50)=>{const _0x260597=_0x5d7726;if(validatePositiveInteger(_0x4332a9[_0x260597(0x12c)],_0x44bb50+_0x260597(0x348)),!Number['isFinite'](_0x4332a9[_0x260597(0x141)])||!Number[_0x260597(0x373)](_0x4332a9[_0x260597(0x105)]))throw Error(_0x44bb50+_0x260597(0x2af)+_0x44bb50+_0x260597(0xfd));if(_0x4332a9[_0x260597(0x12c)]===0x1&&_0x4332a9[_0x260597(0x141)]!==_0x4332a9[_0x260597(0x105)])throw Error(_0x44bb50+_0x260597(0x327)+_0x44bb50+_0x260597(0x217));if(_0x4332a9[_0x260597(0x12c)]>0x1&&_0x4332a9['start']===_0x4332a9[_0x260597(0x105)])throw Error(_0x44bb50+'\x20with\x20multiple\x20samples\x20must\x20have\x20a\x20non-zero\x20step.\x20'+_0x44bb50+_0x260597(0x139));},validateNoData=(_0x597d3b,_0x34645b)=>{const _0x1b3bb9=_0x5d7726;if(_0x597d3b!==void 0x0&&!Number[_0x1b3bb9(0x373)](_0x597d3b)&&!Number[_0x1b3bb9(0x3b1)](_0x597d3b))throw Error(_0x34645b+_0x1b3bb9(0x131)+_0x34645b+_0x1b3bb9(0x407));},rangesEqual=(_0x1f3e57,_0x4b95a2)=>_0x1f3e57['xStart']===_0x4b95a2[_0x5d7726(0x37c)]&&_0x1f3e57[_0x5d7726(0x145)]===_0x4b95a2[_0x5d7726(0x145)]&&_0x1f3e57[_0x5d7726(0x123)]===_0x4b95a2[_0x5d7726(0x123)]&&_0x1f3e57[_0x5d7726(0x2a0)]===_0x4b95a2[_0x5d7726(0x2a0)]&&_0x1f3e57[_0x5d7726(0x1c8)]===_0x4b95a2['sourceYStart']&&_0x1f3e57[_0x5d7726(0x1e9)]===_0x4b95a2[_0x5d7726(0x1e9)],validateVolumeMetadata=_0x1bf0bc=>{const _0x7ee4b0=_0x5d7726;if(validateAxis(_0x1bf0bc[_0x7ee4b0(0xf1)],_0x7ee4b0(0x118)),validateAxis(_0x1bf0bc['yAxis'],_0x7ee4b0(0x306)),validateAxis(_0x1bf0bc['zAxis'],_0x7ee4b0(0x2ac)),validatePositiveInteger(_0x1bf0bc[_0x7ee4b0(0x2c6)],_0x7ee4b0(0x150)),validateNoData(_0x1bf0bc['noData'],_0x7ee4b0(0x115)),_0x1bf0bc['valueScale']!==void 0x0&&!Number[_0x7ee4b0(0x373)](_0x1bf0bc['valueScale']))throw Error('Volume\x20valueScale\x20must\x20be\x20finite.\x20体积\x20valueScale\x20必须是有限数值。');if(_0x1bf0bc['revision']!==void 0x0&&(!Number[_0x7ee4b0(0x291)](_0x1bf0bc['revision'])||_0x1bf0bc['revision']<0x0))throw Error('Volume\x20revision\x20must\x20be\x20a\x20non-negative\x20integer.\x20体积\x20revision\x20必须是非负整数。');},validateVolumeTimeIndex=(_0x2d7307,_0x244a91)=>{const _0x387d6b=_0x5d7726;if(!Number[_0x387d6b(0x291)](_0x244a91)||_0x244a91<0x0||_0x244a91>=_0x2d7307['timeCount'])throw Error('Volume\x20timeIndex\x20is\x20out\x20of\x20range:\x20'+_0x244a91+_0x387d6b(0x15d));},validateVolumeChunkRange=(_0x37a6e4,_0x1ce0b2)=>{const _0x443e00=_0x5d7726;let _0x4ec846=[[_0x1ce0b2[_0x443e00(0x37c)],'xStart'],[_0x1ce0b2['xCount'],_0x443e00(0x145)],[_0x1ce0b2[_0x443e00(0x123)],'levelStart'],[_0x1ce0b2['levelCount'],_0x443e00(0x2a0)],[_0x1ce0b2[_0x443e00(0x1c8)],_0x443e00(0x1c8)],[_0x1ce0b2[_0x443e00(0x1e9)],_0x443e00(0x1e9)]];for(let [_0x98b1f2,_0x378e8b]of _0x4ec846)if(!Number['isInteger'](_0x98b1f2)||_0x98b1f2<0x0||_0x378e8b['endsWith'](_0x443e00(0x170))&&_0x98b1f2===0x0)throw Error(_0x443e00(0x106)+_0x378e8b+_0x443e00(0x109)+_0x98b1f2+'.\x20体积分块\x20'+_0x378e8b+_0x443e00(0x35a));if(_0x1ce0b2[_0x443e00(0x37c)]+_0x1ce0b2[_0x443e00(0x145)]>_0x37a6e4['xAxis'][_0x443e00(0x12c)]||_0x1ce0b2[_0x443e00(0x123)]+_0x1ce0b2[_0x443e00(0x2a0)]>_0x37a6e4[_0x443e00(0x3b6)][_0x443e00(0x12c)]||_0x1ce0b2['sourceYStart']+_0x1ce0b2['sourceYCount']>_0x37a6e4[_0x443e00(0x404)]['count'])throw Error(_0x443e00(0xfa));},validateVolumeChunk=(_0x12ff7d,_0x92ba8c,_0x185183,_0x13c49d)=>{const _0x532377=_0x5d7726;if(validateVolumeTimeIndex(_0x12ff7d,_0x92ba8c[_0x532377(0x383)]),validateVolumeChunkRange(_0x12ff7d,_0x92ba8c[_0x532377(0x1d1)]),_0x13c49d!==void 0x0&&_0x92ba8c[_0x532377(0x383)]!==_0x13c49d)throw Error(_0x532377(0x290));if(_0x185183&&!rangesEqual(_0x92ba8c[_0x532377(0x1d1)],_0x185183))throw Error(_0x532377(0xf7));if(_0x92ba8c[_0x532377(0x293)]!==_0x92ba8c[_0x532377(0x1d1)][_0x532377(0x145)]||_0x92ba8c[_0x532377(0x38f)]!==_0x92ba8c['range'][_0x532377(0x2a0)]||_0x92ba8c[_0x532377(0x15e)]!==_0x92ba8c['range'][_0x532377(0x1e9)])throw Error(_0x532377(0x277));let _0x40fc09=_0x92ba8c['width']*_0x92ba8c[_0x532377(0x38f)]*_0x92ba8c[_0x532377(0x15e)];if(!Number['isSafeInteger'](_0x40fc09)||_0x92ba8c[_0x532377(0xf8)][_0x532377(0x1bc)]!==_0x40fc09)throw Error(_0x532377(0x3b8)+_0x40fc09+_0x532377(0x1a6)+_0x92ba8c['values']['length']+_0x532377(0x1dc));},validateVolumeSource=_0x10629f=>{const _0x5f4b8a=_0x5d7726;if(!_0x10629f||typeof _0x10629f['readChunk']!=_0x5f4b8a(0x30b))throw Error(_0x5f4b8a(0x2cb));validateVolumeMetadata(_0x10629f[_0x5f4b8a(0x25f)]);},validateBrickShape=_0x372547=>{const _0x2730d4=_0x5d7726;for(let [_0x332fa3,_0x3c2e36]of[[_0x372547[_0x2730d4(0x293)],'width'],[_0x372547[_0x2730d4(0x38f)],_0x2730d4(0x38f)],[_0x372547[_0x2730d4(0x15e)],_0x2730d4(0x15e)]])if(!Number[_0x2730d4(0x291)](_0x332fa3)||_0x332fa3<=0x0)throw Error('Volume\x20brick\x20'+_0x3c2e36+_0x2730d4(0x3cb)+_0x3c2e36+'\x20必须是正整数。');if(!Number[_0x2730d4(0x291)](_0x372547[_0x2730d4(0x2f4)])||_0x372547[_0x2730d4(0x2f4)]<0x1)throw Error(_0x2730d4(0x2cd));},resolveVolumeBrickShape=(_0x53051f={})=>{const _0x260d1a=_0x5d7726;let _0x5b82c8={'width':_0x53051f[_0x260d1a(0x293)]??0x100,'height':_0x53051f[_0x260d1a(0x38f)]??0x8,'depth':_0x53051f[_0x260d1a(0x15e)]??0x100,'halo':_0x53051f['halo']??0x1};return validateBrickShape(_0x5b82c8),_0x5b82c8;},createVolumeBrickLayout=(_0x12f644,_0x216a8e={})=>{const _0x34d449=_0x5d7726;validateVolumeMetadata(_0x12f644);let _0x3da436=resolveVolumeBrickShape(_0x216a8e),_0x4a6e48=Math[_0x34d449(0x1a9)](_0x12f644['xAxis'][_0x34d449(0x12c)]/_0x3da436['width']),_0xef307b=Math['ceil'](_0x12f644[_0x34d449(0x3b6)][_0x34d449(0x12c)]/_0x3da436['height']),_0x376f22=Math[_0x34d449(0x1a9)](_0x12f644['zAxis'][_0x34d449(0x12c)]/_0x3da436[_0x34d449(0x15e)]);return{'shape':_0x3da436,'countX':_0x4a6e48,'countY':_0xef307b,'countZ':_0x376f22,'brickCount':_0x4a6e48*_0xef307b*_0x376f22};},createVolumeBrickKey=_0x5c12ae=>_0x5c12ae['x']+':'+_0x5c12ae['y']+':'+_0x5c12ae['z'],createVolumeBrickDescriptor=(_0x21991f,_0x5d3240,_0x4fac14)=>{const _0x586269=_0x5d7726;if(!Number[_0x586269(0x291)](_0x4fac14['x'])||!Number[_0x586269(0x291)](_0x4fac14['y'])||!Number[_0x586269(0x291)](_0x4fac14['z'])||_0x4fac14['x']<0x0||_0x4fac14['x']>=_0x5d3240[_0x586269(0x1a4)]||_0x4fac14['y']<0x0||_0x4fac14['y']>=_0x5d3240[_0x586269(0x38a)]||_0x4fac14['z']<0x0||_0x4fac14['z']>=_0x5d3240[_0x586269(0x11e)])throw Error(_0x586269(0x2c5));let _0x2fc8cd=_0x4fac14['x']*_0x5d3240[_0x586269(0x2df)][_0x586269(0x293)],_0x5e6f50=_0x4fac14['y']*_0x5d3240[_0x586269(0x2df)][_0x586269(0x38f)],_0xe3aef2=_0x4fac14['z']*_0x5d3240[_0x586269(0x2df)][_0x586269(0x15e)],_0x5b9113=Math[_0x586269(0x2dd)](_0x5d3240[_0x586269(0x2df)][_0x586269(0x293)],_0x21991f['xAxis'][_0x586269(0x12c)]-_0x2fc8cd),_0x53db0=Math[_0x586269(0x2dd)](_0x5d3240[_0x586269(0x2df)][_0x586269(0x38f)],_0x21991f[_0x586269(0x3b6)][_0x586269(0x12c)]-_0x5e6f50),_0xa10722=Math[_0x586269(0x2dd)](_0x5d3240[_0x586269(0x2df)]['depth'],_0x21991f[_0x586269(0x404)][_0x586269(0x12c)]-_0xe3aef2),_0x50d243=_0x5d3240[_0x586269(0x2df)][_0x586269(0x2f4)],_0x33167b=Math['max'](0x0,_0x2fc8cd-_0x50d243),_0xf8f9b7=Math[_0x586269(0x2e5)](0x0,_0x5e6f50-_0x50d243),_0x4c3213=Math[_0x586269(0x2e5)](0x0,_0xe3aef2-_0x50d243),_0x395916=Math[_0x586269(0x2dd)](_0x21991f[_0x586269(0xf1)][_0x586269(0x12c)],_0x2fc8cd+_0x5b9113+_0x50d243),_0x208506=Math[_0x586269(0x2dd)](_0x21991f[_0x586269(0x3b6)][_0x586269(0x12c)],_0x5e6f50+_0x53db0+_0x50d243),_0x14ef70=Math[_0x586269(0x2dd)](_0x21991f['zAxis'][_0x586269(0x12c)],_0xe3aef2+_0xa10722+_0x50d243),_0x1809d5=_0x5d3240[_0x586269(0x2df)][_0x586269(0x293)]+_0x50d243*0x2,_0x1f4818=_0x5d3240[_0x586269(0x2df)][_0x586269(0x38f)]+_0x50d243*0x2,_0x42eea9=_0x5d3240[_0x586269(0x2df)][_0x586269(0x15e)]+_0x50d243*0x2;return{'key':createVolumeBrickKey(_0x4fac14),'coordinate':_0x4fac14,'coreRange':{'xStart':_0x2fc8cd,'xCount':_0x5b9113,'levelStart':_0x5e6f50,'levelCount':_0x53db0,'sourceYStart':_0xe3aef2,'sourceYCount':_0xa10722},'readRange':{'xStart':_0x33167b,'xCount':_0x395916-_0x33167b,'levelStart':_0xf8f9b7,'levelCount':_0x208506-_0xf8f9b7,'sourceYStart':_0x4c3213,'sourceYCount':_0x14ef70-_0x4c3213},'physicalWidth':_0x1809d5,'physicalHeight':_0x1f4818,'physicalDepth':_0x42eea9,'byteLength':_0x1809d5*_0x1f4818*_0x42eea9*Float32Array[_0x586269(0x176)]};},createVolumeBrickDescriptors=(_0x26de81,_0xd93345)=>{const _0x30d183=_0x5d7726;let _0x35a708=[];for(let _0x45c065=0x0;_0x45c065<_0xd93345['countZ'];_0x45c065+=0x1)for(let _0x53cbfb=0x0;_0x53cbfb<_0xd93345[_0x30d183(0x38a)];_0x53cbfb+=0x1)for(let _0x14ac5e=0x0;_0x14ac5e<_0xd93345[_0x30d183(0x1a4)];_0x14ac5e+=0x1)_0x35a708[_0x30d183(0x10e)](createVolumeBrickDescriptor(_0x26de81,_0xd93345,{'x':_0x14ac5e,'y':_0x53cbfb,'z':_0x45c065}));return _0x35a708;},EPSILON=1e-8,createMatrix=()=>new Float32Array(0x10),dotVector3=(_0x3ebad3,_0x2e23d1)=>_0x3ebad3[0x0]*_0x2e23d1[0x0]+_0x3ebad3[0x1]*_0x2e23d1[0x1]+_0x3ebad3[0x2]*_0x2e23d1[0x2],subtractVector3=(_0x39e98f,_0x541a18)=>[_0x39e98f[0x0]-_0x541a18[0x0],_0x39e98f[0x1]-_0x541a18[0x1],_0x39e98f[0x2]-_0x541a18[0x2]],crossVector3=(_0x50420d,_0x39f678)=>[_0x50420d[0x1]*_0x39f678[0x2]-_0x50420d[0x2]*_0x39f678[0x1],_0x50420d[0x2]*_0x39f678[0x0]-_0x50420d[0x0]*_0x39f678[0x2],_0x50420d[0x0]*_0x39f678[0x1]-_0x50420d[0x1]*_0x39f678[0x0]],normalizeVector3=_0x5b6ac6=>{const _0x1cc88b=_0x5d7726;let _0x440676=Math[_0x1cc88b(0x31a)](_0x5b6ac6[0x0],_0x5b6ac6[0x1],_0x5b6ac6[0x2]);if(_0x440676<=EPSILON)throw Error('无法归一化长度为零的三维向量。');return[_0x5b6ac6[0x0]/_0x440676,_0x5b6ac6[0x1]/_0x440676,_0x5b6ac6[0x2]/_0x440676];},createIdentityMatrix=()=>{let _0x3e5477=createMatrix();return _0x3e5477[0x0]=0x1,_0x3e5477[0x5]=0x1,_0x3e5477[0xa]=0x1,_0x3e5477[0xf]=0x1,_0x3e5477;},multiplyMatrices=(_0xf1a18,_0x5ad434)=>{let _0x40c6a1=createMatrix();for(let _0x500682=0x0;_0x500682<0x4;_0x500682+=0x1)for(let _0x39e50e=0x0;_0x39e50e<0x4;_0x39e50e+=0x1){let _0x5f5b11=0x0;for(let _0x5522e5=0x0;_0x5522e5<0x4;_0x5522e5+=0x1)_0x5f5b11+=_0xf1a18[_0x5522e5*0x4+_0x39e50e]*_0x5ad434[_0x500682*0x4+_0x5522e5];_0x40c6a1[_0x500682*0x4+_0x39e50e]=_0x5f5b11;}return _0x40c6a1;},invertMatrix=_0x242572=>{const _0x260840=_0x5d7726;let _0xcd5fb5=Array[_0x260840(0x3c0)]({'length':0x4},(_0x1b1c15,_0x215a04)=>{let _0x2fdc44=new Float64Array(0x8);for(let _0x369732=0x0;_0x369732<0x4;_0x369732+=0x1)_0x2fdc44[_0x369732]=_0x242572[_0x369732*0x4+_0x215a04];return _0x2fdc44[_0x215a04+0x4]=0x1,_0x2fdc44;});for(let _0x58d7c2=0x0;_0x58d7c2<0x4;_0x58d7c2+=0x1){let _0x59c983=_0x58d7c2;for(let _0x699fae=_0x58d7c2+0x1;_0x699fae<0x4;_0x699fae+=0x1)Math[_0x260840(0x206)](_0xcd5fb5[_0x699fae][_0x58d7c2])>Math[_0x260840(0x206)](_0xcd5fb5[_0x59c983][_0x58d7c2])&&(_0x59c983=_0x699fae);if(Math[_0x260840(0x206)](_0xcd5fb5[_0x59c983][_0x58d7c2])<=EPSILON)throw Error(_0x260840(0x3e1));_0x59c983!==_0x58d7c2&&([_0xcd5fb5[_0x58d7c2],_0xcd5fb5[_0x59c983]]=[_0xcd5fb5[_0x59c983],_0xcd5fb5[_0x58d7c2]]);let _0x349feb=_0xcd5fb5[_0x58d7c2][_0x58d7c2];for(let _0x33f9b3=0x0;_0x33f9b3<0x8;_0x33f9b3+=0x1)_0xcd5fb5[_0x58d7c2][_0x33f9b3]/=_0x349feb;for(let _0x235eab=0x0;_0x235eab<0x4;_0x235eab+=0x1){if(_0x235eab===_0x58d7c2)continue;let _0x199ae7=_0xcd5fb5[_0x235eab][_0x58d7c2];for(let _0x247146=0x0;_0x247146<0x8;_0x247146+=0x1)_0xcd5fb5[_0x235eab][_0x247146]-=_0x199ae7*_0xcd5fb5[_0x58d7c2][_0x247146];}}let _0x235f5=createMatrix();for(let _0x2722c2=0x0;_0x2722c2<0x4;_0x2722c2+=0x1)for(let _0x37a077=0x0;_0x37a077<0x4;_0x37a077+=0x1)_0x235f5[_0x37a077*0x4+_0x2722c2]=_0xcd5fb5[_0x2722c2][_0x37a077+0x4];return _0x235f5;},createLookAtMatrix=(_0x5d0713,_0x46bfd9,_0x1e2eac)=>{let _0x4781c9=normalizeVector3(subtractVector3(_0x5d0713,_0x46bfd9)),_0x3251e3=normalizeVector3(crossVector3(_0x1e2eac,_0x4781c9)),_0x3d09be=crossVector3(_0x4781c9,_0x3251e3),_0x2eb102=createIdentityMatrix();return _0x2eb102[0x0]=_0x3251e3[0x0],_0x2eb102[0x1]=_0x3d09be[0x0],_0x2eb102[0x2]=_0x4781c9[0x0],_0x2eb102[0x4]=_0x3251e3[0x1],_0x2eb102[0x5]=_0x3d09be[0x1],_0x2eb102[0x6]=_0x4781c9[0x1],_0x2eb102[0x8]=_0x3251e3[0x2],_0x2eb102[0x9]=_0x3d09be[0x2],_0x2eb102[0xa]=_0x4781c9[0x2],_0x2eb102[0xc]=-dotVector3(_0x3251e3,_0x5d0713),_0x2eb102[0xd]=-dotVector3(_0x3d09be,_0x5d0713),_0x2eb102[0xe]=-dotVector3(_0x4781c9,_0x5d0713),_0x2eb102;},createPerspectiveMatrix=(_0x463cad,_0x54e2e7,_0x53f9eb,_0x6246ea)=>{const _0x4b4a89=_0x5d7726;if(!(_0x463cad>0x0&&_0x463cad<Math['PI']))throw Error(_0x4b4a89(0x1ec));if(!(_0x54e2e7>0x0))throw Error(_0x4b4a89(0x1e6));if(!(_0x53f9eb>0x0&&_0x6246ea>_0x53f9eb))throw Error('相机裁剪距离必须满足\x200\x20<\x20near\x20<\x20far。');let _0x518b0a=0x1/Math[_0x4b4a89(0x3e7)](_0x463cad/0x2),_0x50c237=createMatrix();return _0x50c237[0x0]=_0x518b0a/_0x54e2e7,_0x50c237[0x5]=_0x518b0a,_0x50c237[0xa]=_0x6246ea/(_0x53f9eb-_0x6246ea),_0x50c237[0xb]=-0x1,_0x50c237[0xe]=_0x53f9eb*_0x6246ea/(_0x53f9eb-_0x6246ea),_0x50c237;},createOrthographicMatrix=(_0xf4e29a,_0x441a5d,_0x37d4bc,_0x5ee48f)=>{const _0x3b275a=_0x5d7726;if(!(_0xf4e29a>0x0&&_0x441a5d>0x0))throw Error(_0x3b275a(0x1e1));if(!(_0x37d4bc>=0x0&&_0x5ee48f>_0x37d4bc))throw Error(_0x3b275a(0x175));let _0x1e7513=_0xf4e29a*_0x441a5d,_0xaf547a=createIdentityMatrix();return _0xaf547a[0x0]=0x2/_0x1e7513,_0xaf547a[0x5]=0x2/_0xf4e29a,_0xaf547a[0xa]=0x1/(_0x37d4bc-_0x5ee48f),_0xaf547a[0xe]=_0x37d4bc/(_0x37d4bc-_0x5ee48f),_0xaf547a;},createScaleMatrix=(_0xbd0d29,_0x3ccaf1,_0x2e1a30)=>{let _0x225027=createIdentityMatrix();return _0x225027[0x0]=_0xbd0d29,_0x225027[0x5]=_0x3ccaf1,_0x225027[0xa]=_0x2e1a30,_0x225027;},composeVolumeModelMatrix=(_0x215183,_0x21164b)=>{const _0x3be10c=_0x5d7726;if(!(_0x21164b>0x0)||!Number[_0x3be10c(0x373)](_0x21164b))throw Error(_0x3be10c(0xf5));let _0x9981e6=createScaleMatrix(0x1,_0x21164b,0x1);return _0x215183?multiplyMatrices(_0x215183,_0x9981e6):_0x9981e6;},transformPoint=(_0x36d2fc,_0x515888,_0x4ad6ac=0x1)=>[_0x36d2fc[0x0]*_0x515888[0x0]+_0x36d2fc[0x4]*_0x515888[0x1]+_0x36d2fc[0x8]*_0x515888[0x2]+_0x36d2fc[0xc]*_0x4ad6ac,_0x36d2fc[0x1]*_0x515888[0x0]+_0x36d2fc[0x5]*_0x515888[0x1]+_0x36d2fc[0x9]*_0x515888[0x2]+_0x36d2fc[0xd]*_0x4ad6ac,_0x36d2fc[0x2]*_0x515888[0x0]+_0x36d2fc[0x6]*_0x515888[0x1]+_0x36d2fc[0xa]*_0x515888[0x2]+_0x36d2fc[0xe]*_0x4ad6ac,_0x36d2fc[0x3]*_0x515888[0x0]+_0x36d2fc[0x7]*_0x515888[0x1]+_0x36d2fc[0xb]*_0x515888[0x2]+_0x36d2fc[0xf]*_0x4ad6ac],projectPointToViewport=(_0x1911c2,_0x1fc2c4,_0x25050a,_0x155928)=>{let _0x2c6c32=transformPoint(_0x1911c2,_0x1fc2c4);if(_0x2c6c32[0x3]<=EPSILON)return null;let _0x35fdac=0x1/_0x2c6c32[0x3];return[(_0x2c6c32[0x0]*_0x35fdac*0.5+0.5)*_0x25050a,(0.5-_0x2c6c32[0x1]*_0x35fdac*0.5)*_0x155928,_0x2c6c32[0x2]*_0x35fdac];},DEFAULT_POSITION=[0x0,0x1,0x2],DEFAULT_TARGET=[0x0,0x0,0x0],DEFAULT_UP=[0x0,0x1,0x0],DEFAULT_PROJECTION={'type':_0x5d7726(0x3c8),'fovYDegrees':0x2d,'near':0.01,'far':0x2710},DEGREE_TO_RADIAN=Math['PI']/0xb4,cloneVector=_0x9b6c12=>[_0x9b6c12[0x0],_0x9b6c12[0x1],_0x9b6c12[0x2]],cloneProjection=_0x12d140=>(_0x12d140['type'],{..._0x12d140}),cloneState=_0x293d8f=>({'position':cloneVector(_0x293d8f[_0x5d7726(0x3c6)]),'target':cloneVector(_0x293d8f[_0x5d7726(0xef)]),'up':cloneVector(_0x293d8f['up']),'projection':cloneProjection(_0x293d8f[_0x5d7726(0x114)])}),subtractVector=(_0x38d57b,_0x38508b)=>[_0x38d57b[0x0]-_0x38508b[0x0],_0x38d57b[0x1]-_0x38508b[0x1],_0x38d57b[0x2]-_0x38508b[0x2]],addVector=(_0x2ab8a6,_0x447ab6)=>[_0x2ab8a6[0x0]+_0x447ab6[0x0],_0x2ab8a6[0x1]+_0x447ab6[0x1],_0x2ab8a6[0x2]+_0x447ab6[0x2]],scaleVector=(_0x72c564,_0x603267)=>[_0x72c564[0x0]*_0x603267,_0x72c564[0x1]*_0x603267,_0x72c564[0x2]*_0x603267],crossVector=(_0x2d5704,_0x29f46e)=>[_0x2d5704[0x1]*_0x29f46e[0x2]-_0x2d5704[0x2]*_0x29f46e[0x1],_0x2d5704[0x2]*_0x29f46e[0x0]-_0x2d5704[0x0]*_0x29f46e[0x2],_0x2d5704[0x0]*_0x29f46e[0x1]-_0x2d5704[0x1]*_0x29f46e[0x0]],normalizeVector=_0x1cbc65=>{let _0x43e262=Math['hypot'](_0x1cbc65[0x0],_0x1cbc65[0x1],_0x1cbc65[0x2]);return _0x43e262===0x0?[0x0,0x0,0x0]:scaleVector(_0x1cbc65,0x1/_0x43e262);},clamp$1=(_0x35a97f,_0x560b8c,_0x26c448)=>Math[_0x5d7726(0x2dd)](_0x26c448,Math[_0x5d7726(0x2e5)](_0x560b8c,_0x35a97f)),validateProjection=_0x5b7ac8=>{const _0x1066a7=_0x5d7726;if(!(_0x5b7ac8[_0x1066a7(0x16a)]>=0x0&&_0x5b7ac8[_0x1066a7(0x310)]>_0x5b7ac8[_0x1066a7(0x16a)]))throw Error(_0x1066a7(0x175));if(_0x5b7ac8[_0x1066a7(0x103)]===_0x1066a7(0x3c8)&&!(_0x5b7ac8[_0x1066a7(0x16a)]>0x0&&_0x5b7ac8[_0x1066a7(0x3a3)]>0x0&&_0x5b7ac8['fovYDegrees']<0xb4))throw Error(_0x1066a7(0x252));if(_0x5b7ac8[_0x1066a7(0x103)]===_0x1066a7(0x3d8)&&!(_0x5b7ac8[_0x1066a7(0x38f)]>0x0))throw Error(_0x1066a7(0x228));},resolveInitialState=_0x11fda2=>{const _0x51fafa=_0x5d7726;let _0x836adb={'position':_0x11fda2[_0x51fafa(0x39b)]?.[_0x51fafa(0x3c6)]?cloneVector(_0x11fda2[_0x51fafa(0x39b)][_0x51fafa(0x3c6)]):cloneVector(DEFAULT_POSITION),'target':_0x11fda2['state']?.[_0x51fafa(0xef)]?cloneVector(_0x11fda2[_0x51fafa(0x39b)][_0x51fafa(0xef)]):cloneVector(DEFAULT_TARGET),'up':_0x11fda2[_0x51fafa(0x39b)]?.['up']?cloneVector(_0x11fda2['state']['up']):cloneVector(DEFAULT_UP),'projection':_0x11fda2[_0x51fafa(0x39b)]?.[_0x51fafa(0x114)]?cloneProjection(_0x11fda2[_0x51fafa(0x39b)][_0x51fafa(0x114)]):cloneProjection(DEFAULT_PROJECTION)};return validateProjection(_0x836adb['projection']),_0x836adb;};var VolumeCamera=class{[_0x5d7726(0x360)];[_0x5d7726(0x419)];[_0x5d7726(0x275)];[_0x5d7726(0xea)];[_0x5d7726(0x2ed)];[_0x5d7726(0x28e)];[_0x5d7726(0x167)];['minimumPitch'];[_0x5d7726(0x116)];constructor(_0x3986e1={}){const _0xd3628=_0x5d7726;if(this[_0xd3628(0x360)]=resolveInitialState(_0x3986e1),this[_0xd3628(0x419)]=_0x3986e1[_0xd3628(0x419)]??0x1,this['rotateSpeed']=_0x3986e1['rotateSpeed']??0.005,this[_0xd3628(0xea)]=_0x3986e1[_0xd3628(0xea)]??0x1,this['zoomSpeed']=_0x3986e1['zoomSpeed']??0.0015,this[_0xd3628(0x28e)]=_0x3986e1[_0xd3628(0x28e)]??0.001,this['maximumDistance']=_0x3986e1['maximumDistance']??0x1/0x0,this['minimumPitch']=(_0x3986e1[_0xd3628(0x233)]??-0x59)*DEGREE_TO_RADIAN,this[_0xd3628(0x116)]=(_0x3986e1[_0xd3628(0x218)]??0x59)*DEGREE_TO_RADIAN,!(this[_0xd3628(0x419)]>0x0))throw Error('相机宽高比必须大于\x200。');}get[_0x5d7726(0x39b)](){return cloneState(this['cameraState']);}get[_0x5d7726(0x25c)](){const _0x23b189=_0x5d7726;let _0x341ea=createLookAtMatrix(this[_0x23b189(0x360)][_0x23b189(0x3c6)],this[_0x23b189(0x360)][_0x23b189(0xef)],this[_0x23b189(0x360)]['up']),_0x2127e5=this[_0x23b189(0x285)](),_0x4240b3=multiplyMatrices(_0x2127e5,_0x341ea);return{'view':_0x341ea,'projection':_0x2127e5,'viewProjection':_0x4240b3,'inverseViewProjection':invertMatrix(_0x4240b3)};}[_0x5d7726(0x198)](_0x52b4c0){const _0x4f557f=_0x5d7726;validateProjection(_0x52b4c0['projection']),this[_0x4f557f(0x360)]=cloneState(_0x52b4c0);}[_0x5d7726(0x33a)](_0xd78b6d){const _0x18aa43=_0x5d7726;if(!(_0xd78b6d>0x0)||!Number['isFinite'](_0xd78b6d))throw Error(_0x18aa43(0x408));this[_0x18aa43(0x419)]=_0xd78b6d;}['setProjectionType'](_0x505df2){const _0x910add=_0x5d7726;if(_0x505df2===this[_0x910add(0x360)][_0x910add(0x114)][_0x910add(0x103)])return;let _0x5d45ed=Math[_0x910add(0x31a)](...subtractVector(this[_0x910add(0x360)][_0x910add(0x3c6)],this[_0x910add(0x360)]['target']));if(_0x505df2===_0x910add(0x3d8)){let _0xb11ed1=this['cameraState'][_0x910add(0x114)],_0x52758d=_0xb11ed1[_0x910add(0x103)]==='perspective'?_0xb11ed1['fovYDegrees']*DEGREE_TO_RADIAN:0x2d*DEGREE_TO_RADIAN;this[_0x910add(0x360)]['projection']={'type':_0x505df2,'height':0x2*_0x5d45ed*Math['tan'](_0x52758d/0x2),'near':_0xb11ed1['near'],'far':_0xb11ed1[_0x910add(0x310)]};return;}let _0x4b9079=this[_0x910add(0x360)][_0x910add(0x114)],_0x4a8483=_0x4b9079['type']===_0x910add(0x3d8)?_0x4b9079[_0x910add(0x38f)]/(0x2*Math[_0x910add(0x3e7)](0x2d*DEGREE_TO_RADIAN/0x2)):_0x5d45ed,_0x44633c=normalizeVector(subtractVector(this['cameraState'][_0x910add(0x3c6)],this[_0x910add(0x360)][_0x910add(0xef)]));this[_0x910add(0x360)]['position']=addVector(this[_0x910add(0x360)][_0x910add(0xef)],scaleVector(_0x44633c,_0x4a8483)),this['cameraState'][_0x910add(0x114)]={'type':_0x505df2,'fovYDegrees':0x2d,'near':_0x4b9079[_0x910add(0x16a)],'far':_0x4b9079[_0x910add(0x310)]};}['orbit'](_0x19c58c,_0x172e61){const _0x11b758=_0x5d7726;let _0x4084bc=subtractVector(this[_0x11b758(0x360)][_0x11b758(0x3c6)],this['cameraState'][_0x11b758(0xef)]),_0x24b1e9=Math[_0x11b758(0x31a)](..._0x4084bc);if(_0x24b1e9===0x0)return;let _0x2178d0=Math[_0x11b758(0x3de)](_0x4084bc[0x0],_0x4084bc[0x2])-_0x19c58c*this[_0x11b758(0x275)],_0x46221b=clamp$1(Math[_0x11b758(0x38e)](_0x4084bc[0x1]/_0x24b1e9)+_0x172e61*this['rotateSpeed'],this[_0x11b758(0x12e)],this['maximumPitch']),_0x2e4a37=Math[_0x11b758(0x374)](_0x46221b)*_0x24b1e9;this['cameraState'][_0x11b758(0x3c6)]=addVector(this[_0x11b758(0x360)][_0x11b758(0xef)],[Math['sin'](_0x2178d0)*_0x2e4a37,Math[_0x11b758(0x112)](_0x46221b)*_0x24b1e9,Math[_0x11b758(0x374)](_0x2178d0)*_0x2e4a37]);}[_0x5d7726(0x251)](_0x270bc5,_0x5a1b43,_0x50c087){const _0x54cf24=_0x5d7726;if(!(_0x50c087>0x0))return;let _0x342e4a=normalizeVector(subtractVector(this[_0x54cf24(0x360)][_0x54cf24(0xef)],this[_0x54cf24(0x360)][_0x54cf24(0x3c6)])),_0x98479f=normalizeVector(crossVector(_0x342e4a,this['cameraState']['up'])),_0x3d6f7a=normalizeVector(crossVector(_0x98479f,_0x342e4a)),_0x5f4c01=Math[_0x54cf24(0x31a)](...subtractVector(this[_0x54cf24(0x360)][_0x54cf24(0x3c6)],this[_0x54cf24(0x360)][_0x54cf24(0xef)])),_0x21227b=(this['cameraState']['projection']['type']==='orthographic'?this['cameraState']['projection']['height']:0x2*_0x5f4c01*Math[_0x54cf24(0x3e7)](this[_0x54cf24(0x360)][_0x54cf24(0x114)][_0x54cf24(0x3a3)]*DEGREE_TO_RADIAN/0x2))/_0x50c087*this[_0x54cf24(0xea)],_0x12453c=addVector(scaleVector(_0x98479f,-_0x270bc5*_0x21227b),scaleVector(_0x3d6f7a,_0x5a1b43*_0x21227b));this[_0x54cf24(0x360)]['position']=addVector(this[_0x54cf24(0x360)]['position'],_0x12453c),this[_0x54cf24(0x360)][_0x54cf24(0xef)]=addVector(this[_0x54cf24(0x360)]['target'],_0x12453c);}[_0x5d7726(0x19f)](_0x51f50b){const _0x404e03=_0x5d7726;let _0x4e1a1c=Math['exp'](_0x51f50b*this[_0x404e03(0x2ed)]);if(this[_0x404e03(0x360)][_0x404e03(0x114)][_0x404e03(0x103)]==='orthographic'){this[_0x404e03(0x360)][_0x404e03(0x114)]={...this[_0x404e03(0x360)][_0x404e03(0x114)],'height':Math[_0x404e03(0x2e5)](this['minimumDistance'],this[_0x404e03(0x360)][_0x404e03(0x114)][_0x404e03(0x38f)]*_0x4e1a1c)};return;}let _0x17e7fe=subtractVector(this['cameraState']['position'],this[_0x404e03(0x360)]['target']),_0x3d8052=clamp$1(Math['hypot'](..._0x17e7fe)*_0x4e1a1c,this[_0x404e03(0x28e)],this[_0x404e03(0x167)]);this[_0x404e03(0x360)][_0x404e03(0x3c6)]=addVector(this[_0x404e03(0x360)][_0x404e03(0xef)],scaleVector(normalizeVector(_0x17e7fe),_0x3d8052));}[_0x5d7726(0x285)](){const _0x51bbea=_0x5d7726;let _0x4a365a=this[_0x51bbea(0x360)][_0x51bbea(0x114)];return _0x4a365a[_0x51bbea(0x103)]==='perspective'?createPerspectiveMatrix(_0x4a365a['fovYDegrees']*DEGREE_TO_RADIAN,this['aspect'],_0x4a365a['near'],_0x4a365a[_0x51bbea(0x310)]):createOrthographicMatrix(_0x4a365a[_0x51bbea(0x38f)],this[_0x51bbea(0x419)],_0x4a365a[_0x51bbea(0x16a)],_0x4a365a[_0x51bbea(0x310)]);}};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=_0x51d0cf=>_0x51d0cf*Math['PI']/0xb4,geodeticToEcef=(_0x24ac56,_0x20c787,_0x4899fb)=>{const _0x30c049=_0x5d7726;let _0x24ff25=Math['sin'](_0x20c787),_0x5be4ac=Math[_0x30c049(0x374)](_0x20c787),_0x4bfc97=Math['sin'](_0x24ac56),_0x415b59=Math[_0x30c049(0x374)](_0x24ac56),_0xf22f2b=WGS84_SEMI_MAJOR_AXIS_METERS/Math[_0x30c049(0x2d4)](0x1-WGS84_FIRST_ECCENTRICITY_SQUARED*_0x24ff25*_0x24ff25);return[(_0xf22f2b+_0x4899fb)*_0x5be4ac*_0x415b59,(_0xf22f2b+_0x4899fb)*_0x5be4ac*_0x4bfc97,(_0xf22f2b*(0x1-WGS84_FIRST_ECCENTRICITY_SQUARED)+_0x4899fb)*_0x24ff25];},validateAxisSpan=(_0x73b239,_0x19da85,_0xb52fc4)=>{const _0x4b42ae=_0x5d7726;if(!Number['isFinite'](_0x73b239)||!Number[_0x4b42ae(0x373)](_0x19da85)||_0x73b239===_0x19da85)throw Error(_0xb52fc4+_0x4b42ae(0x3e9)+_0xb52fc4+_0x4b42ae(0x203));},createGeographicVolumeLayout=(_0x59b9ce,_0x4f5f13=0x1)=>{const _0x20bfb7=_0x5d7726;let _0x2b2f61=degreesToRadians(_0x59b9ce['xAxis']['start']),_0x2b33d9=degreesToRadians(_0x59b9ce[_0x20bfb7(0xf1)][_0x20bfb7(0x105)]),_0x53d03c=degreesToRadians(_0x59b9ce['zAxis'][_0x20bfb7(0x141)]),_0x545cac=degreesToRadians(_0x59b9ce['zAxis']['end']);validateAxisSpan(_0x2b2f61,_0x2b33d9,_0x20bfb7(0x270)),validateAxisSpan(_0x53d03c,_0x545cac,_0x20bfb7(0x3fe));let _0x5bc1dd=_0x59b9ce[_0x20bfb7(0x3b6)][_0x20bfb7(0x141)],_0x41dea9=_0x59b9ce[_0x20bfb7(0x3b6)]['end'];if(validateAxisSpan(_0x5bc1dd,_0x41dea9,_0x20bfb7(0x1d6)),!(_0x4f5f13>0x0)||!Number[_0x20bfb7(0x373)](_0x4f5f13))throw Error('verticalScale\x20must\x20be\x20a\x20positive\x20finite\x20value.\x20verticalScale\x20必须是大于\x200\x20的有限数。');let _0x21c899=_0x5bc1dd+(_0x41dea9-_0x5bc1dd)*_0x4f5f13,_0x3c74d7=(_0x2b2f61+_0x2b33d9)/0x2,_0x2126f3=(_0x53d03c+_0x545cac)/0x2,_0x4fb56e=geodeticToEcef(_0x3c74d7,_0x2126f3,0x0),_0x1afccc=Math[_0x20bfb7(0x206)](_0x2b33d9-_0x2b2f61)*WGS84_SEMI_MAJOR_AXIS_METERS*Math[_0x20bfb7(0x2e5)](0.01,Math[_0x20bfb7(0x374)](_0x2126f3)),_0x31bed3=Math['abs'](_0x545cac-_0x53d03c)*WGS84_SEMI_MAJOR_AXIS_METERS,_0x171afd=Math['max'](_0x1afccc,_0x31bed3);if(!(_0x171afd>0x0)||!Number[_0x20bfb7(0x373)](_0x171afd))throw Error(_0x20bfb7(0x2ff));let _0x2e9bc1=[0x1/0x0,0x1/0x0,0x1/0x0],_0x49d4bd=[-0x1/0x0,-0x1/0x0,-0x1/0x0];for(let _0x1f3f09=0x0;_0x1f3f09<=0x8;_0x1f3f09+=0x1){let _0x6a3ebf=_0x53d03c+(_0x545cac-_0x53d03c)*_0x1f3f09/0x8;for(let _0x4153f3=0x0;_0x4153f3<=0x8;_0x4153f3+=0x1){let _0x2a9511=_0x2b2f61+(_0x2b33d9-_0x2b2f61)*_0x4153f3/0x8;for(let _0x4653a1 of[_0x5bc1dd,_0x21c899]){let _0x4c13c0=geodeticToEcef(_0x2a9511,_0x6a3ebf,_0x4653a1);for(let _0x29bf72=0x0;_0x29bf72<0x3;_0x29bf72+=0x1){let _0x568e99=(_0x4c13c0[_0x29bf72]-_0x4fb56e[_0x29bf72])/_0x171afd;_0x2e9bc1[_0x29bf72]=Math[_0x20bfb7(0x2dd)](_0x2e9bc1[_0x29bf72],_0x568e99),_0x49d4bd[_0x29bf72]=Math['max'](_0x49d4bd[_0x29bf72],_0x568e99);}}}}let _0x32545b=_0x49d4bd[_0x20bfb7(0x3ef)]((_0x3abe26,_0x13ad94)=>_0x3abe26-_0x2e9bc1[_0x13ad94]);if(_0x32545b[_0x20bfb7(0x1ee)](_0x33e06f=>!(_0x33e06f>0x0)||!Number[_0x20bfb7(0x373)](_0x33e06f)))throw Error('Geographic\x20volume\x20proxy\x20bounds\x20are\x20invalid.\x20地理体积代理范围无效。');return{'centerEcef':_0x4fb56e,'normalizationMeters':_0x171afd,'proxyModelMatrix':[_0x32545b[0x0],0x0,0x0,0x0,0x0,_0x32545b[0x1],0x0,0x0,0x0,0x0,_0x32545b[0x2],0x0,_0x2e9bc1[0x0],_0x2e9bc1[0x1],_0x2e9bc1[0x2],0x1],'transform':{'mode':_0x20bfb7(0x1a1),'centerEcefScaled':[_0x4fb56e[0x0]/_0x171afd,_0x4fb56e[0x1]/_0x171afd,_0x4fb56e[0x2]/_0x171afd],'semiMajorAxisScaled':WGS84_SEMI_MAJOR_AXIS_METERS/_0x171afd,'semiMinorAxisScaled':WGS84_SEMI_MINOR_AXIS_METERS/_0x171afd,'longitudeRadians':[_0x2b2f61,_0x2b33d9],'latitudeRadians':[_0x53d03c,_0x545cac],'heightScaled':[_0x5bc1dd/_0x171afd,_0x21c899/_0x171afd]}};},ecefToGeographicVolumeLocal=(_0x2a0064,_0x26c8e0)=>[(_0x2a0064[0x0]-_0x26c8e0[_0x5d7726(0x2d2)][0x0])/_0x26c8e0[_0x5d7726(0x3c1)],(_0x2a0064[0x1]-_0x26c8e0[_0x5d7726(0x2d2)][0x1])/_0x26c8e0[_0x5d7726(0x3c1)],(_0x2a0064[0x2]-_0x26c8e0[_0x5d7726(0x2d2)][0x2])/_0x26c8e0[_0x5d7726(0x3c1)]],isMissingValue=(_0x182918,_0x3d335a)=>Number[_0x5d7726(0x3b1)](_0x182918)||_0x3d335a!==void 0x0&&_0x182918===_0x3d335a,axisValueToNormalized=(_0x5637e0,_0x57e70e)=>_0x5637e0[_0x5d7726(0x141)]===_0x5637e0['end']?0x0:(_0x57e70e-_0x5637e0[_0x5d7726(0x141)])/(_0x5637e0['end']-_0x5637e0[_0x5d7726(0x141)]),validateProfile=_0x450420=>{const _0x4eaae9=_0x5d7726;if(!_0x450420['id'])throw Error(_0x4eaae9(0x104));if(_0x450420[_0x4eaae9(0x39e)]['length']<0x4||_0x450420[_0x4eaae9(0x39e)][_0x4eaae9(0x1bc)]%0x2!=0x0)throw Error(_0x4eaae9(0x409)+_0x450420['id']+_0x4eaae9(0x2f3));if(_0x450420[_0x4eaae9(0x3be)][_0x4eaae9(0x1bc)]<0x2)throw Error(_0x4eaae9(0x409)+_0x450420['id']+_0x4eaae9(0x142));let _0x481d48=_0x450420[_0x4eaae9(0x39e)][_0x4eaae9(0x1bc)]/0x2;if(_0x450420[_0x4eaae9(0xf8)]['length']!==_0x481d48*_0x450420[_0x4eaae9(0x3be)][_0x4eaae9(0x1bc)])throw Error('路线剖面\x20'+_0x450420['id']+_0x4eaae9(0x3ee));if(_0x450420[_0x4eaae9(0x36a)]!==void 0x0&&(!(_0x450420[_0x4eaae9(0x36a)]>=0x0&&_0x450420[_0x4eaae9(0x36a)]<=0x1)||!Number[_0x4eaae9(0x373)](_0x450420[_0x4eaae9(0x36a)])))throw Error(_0x4eaae9(0x409)+_0x450420['id']+_0x4eaae9(0x1e7));for(let _0x5286d5 of _0x450420[_0x4eaae9(0x39e)])if(!Number['isFinite'](_0x5286d5))throw Error('路线剖面\x20'+_0x450420['id']+_0x4eaae9(0xfc));for(let _0x373589 of _0x450420['heights'])if(!Number[_0x4eaae9(0x373)](_0x373589))throw Error('路线剖面\x20'+_0x450420['id']+_0x4eaae9(0x2cc));return _0x481d48;},createPositions=(_0x74f0df,_0x5a0ab5,_0x14fffb)=>{const _0x2961ff=_0x5d7726;let _0x83f05a=new Float32Array(_0x5a0ab5*_0x74f0df[_0x2961ff(0x3be)]['length']*0x3);for(let _0xad1ca0=0x0;_0xad1ca0<_0x74f0df[_0x2961ff(0x3be)][_0x2961ff(0x1bc)];_0xad1ca0+=0x1)for(let _0x330ac8=0x0;_0x330ac8<_0x5a0ab5;_0x330ac8+=0x1){let _0x449529=(_0xad1ca0*_0x5a0ab5+_0x330ac8)*0x3;_0x83f05a[_0x449529]=axisValueToNormalized(_0x14fffb[_0x2961ff(0xf1)],_0x74f0df['path'][_0x330ac8*0x2]),_0x83f05a[_0x449529+0x1]=axisValueToNormalized(_0x14fffb[_0x2961ff(0x3b6)],_0x74f0df[_0x2961ff(0x3be)][_0xad1ca0]),_0x83f05a[_0x449529+0x2]=axisValueToNormalized(_0x14fffb['zAxis'],_0x74f0df[_0x2961ff(0x39e)][_0x330ac8*0x2+0x1]);}return _0x83f05a;},createValues=_0x4d42c1=>{const _0x4c89f3=_0x5d7726;let _0x445a89=new Float32Array(_0x4d42c1[_0x4c89f3(0xf8)][_0x4c89f3(0x1bc)]);for(let _0x54d3cb=0x0;_0x54d3cb<_0x4d42c1[_0x4c89f3(0xf8)]['length'];_0x54d3cb+=0x1){let _0xf53a26=_0x4d42c1[_0x4c89f3(0xf8)][_0x54d3cb];_0x445a89[_0x54d3cb]=isMissingValue(_0xf53a26,_0x4d42c1[_0x4c89f3(0x245)])?NaN:_0xf53a26;}return _0x445a89;},createIndices=(_0xcff1a9,_0x17062a)=>{let _0x14136c=new Uint32Array((_0xcff1a9-0x1)*(_0x17062a-0x1)*0x6),_0x371c10=0x0;for(let _0x12d558=0x0;_0x12d558<_0x17062a-0x1;_0x12d558+=0x1)for(let _0x291ebd=0x0;_0x291ebd<_0xcff1a9-0x1;_0x291ebd+=0x1){let _0x577b5f=_0x12d558*_0xcff1a9+_0x291ebd,_0x517c37=_0x577b5f+0x1,_0x156298=_0x577b5f+_0xcff1a9,_0x2b9b04=_0x156298+0x1;_0x14136c[_0x371c10]=_0x577b5f,_0x14136c[_0x371c10+0x1]=_0x517c37,_0x14136c[_0x371c10+0x2]=_0x156298,_0x14136c[_0x371c10+0x3]=_0x156298,_0x14136c[_0x371c10+0x4]=_0x517c37,_0x14136c[_0x371c10+0x5]=_0x2b9b04,_0x371c10+=0x6;}return _0x14136c;},buildVolumeRouteProfileMesh=(_0x392331,_0x47a1ad)=>{const _0x5a50b2=_0x5d7726;let _0x100c50=validateProfile(_0x392331);return{'id':_0x392331['id'],'positions':createPositions(_0x392331,_0x100c50,_0x47a1ad),'values':createValues(_0x392331),'indices':createIndices(_0x100c50,_0x392331[_0x5a50b2(0x3be)][_0x5a50b2(0x1bc)]),'opacity':_0x392331[_0x5a50b2(0x36a)]??0x1,'depthMode':_0x392331[_0x5a50b2(0x3fa)]??_0x5a50b2(0x312),'revision':_0x392331[_0x5a50b2(0x1a3)]};};var volumeRaymarch_default='struct\x20SceneParams\x20{\x0a\x20\x20\x20\x20viewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseViewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20modelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseModelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20cameraPosition:\x20vec4f,\x0a\x20\x20\x20\x20viewport:\x20vec4f,\x0a\x20\x20\x20\x20clipMinimum:\x20vec4f,\x0a\x20\x20\x20\x20clipMaximum:\x20vec4f,\x0a\x20\x20\x20\x20render:\x20vec4f,\x0a\x20\x20\x20\x20transfer:\x20vec4f,\x0a\x20\x20\x20\x20geographic0:\x20vec4f,\x0a\x20\x20\x20\x20geographic1:\x20vec4f,\x0a\x20\x20\x20\x20geographic2:\x20vec4f,\x0a}\x0a\x0astruct\x20VolumeParams\x20{\x0a\x20\x20\x20\x20dimensions:\x20vec4u,\x0a\x20\x20\x20\x20brickInterior:\x20vec4u,\x0a\x20\x20\x20\x20brickCount:\x20vec4u,\x0a\x20\x20\x20\x20atlasSlots:\x20vec4u,\x0a\x20\x20\x20\x20atlasDimensions:\x20vec4u,\x0a\x20\x20\x20\x20valueMeta:\x20vec4f,\x0a}\x0a\x0astruct\x20PageTable\x20{\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',sceneMesh_default='struct\x20SceneParams\x20{\x0a\x20\x20\x20\x20viewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseViewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20modelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseModelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20cameraPosition:\x20vec4f,\x0a\x20\x20\x20\x20viewport:\x20vec4f,\x0a\x20\x20\x20\x20clipMinimum:\x20vec4f,\x0a\x20\x20\x20\x20clipMaximum:\x20vec4f,\x0a\x20\x20\x20\x20render:\x20vec4f,\x0a\x20\x20\x20\x20transfer:\x20vec4f,\x0a\x20\x20\x20\x20geographic0:\x20vec4f,\x0a\x20\x20\x20\x20geographic1:\x20vec4f,\x0a\x20\x20\x20\x20geographic2:\x20vec4f,\x0a}\x0a\x0astruct\x20VertexOutput\x20{\x0a\x20\x20\x20\x20@builtin(position)\x20position:\x20vec4f,\x0a\x20\x20\x20\x20@location(0)\x20color:\x20vec4f,\x0a}\x0a\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20scene:\x20SceneParams;\x0a\x0afn\x20transformScenePosition(position:\x20vec3f)\x20->\x20vec4f\x20{\x0a\x20\x20\x20\x20if\x20(scene.geographic0.x\x20<\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20scene.viewProjection\x20*\x20scene.modelMatrix\x20*\x20vec4f(position,\x201.0);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20longitude\x20=\x20mix(scene.geographic1.z,\x20scene.geographic1.w,\x20position.x);\x0a\x20\x20\x20\x20let\x20latitude\x20=\x20mix(scene.geographic2.x,\x20scene.geographic2.y,\x20position.z);\x0a\x20\x20\x20\x20let\x20height\x20=\x20mix(scene.geographic2.z,\x20scene.geographic2.w,\x20position.y);\x0a\x20\x20\x20\x20let\x20latitudeSin\x20=\x20sin(latitude);\x0a\x20\x20\x20\x20let\x20latitudeCos\x20=\x20cos(latitude);\x0a\x20\x20\x20\x20let\x20semiMajor\x20=\x20scene.geographic1.x;\x0a\x20\x20\x20\x20let\x20semiMinor\x20=\x20scene.geographic1.y;\x0a\x20\x20\x20\x20let\x20eccentricitySquared\x20=\x201.0\x20-\x20semiMinor\x20*\x20semiMinor\x20/\x20(semiMajor\x20*\x20semiMajor);\x0a\x20\x20\x20\x20let\x20primeVerticalRadius\x20=\x20semiMajor\x20/\x20sqrt(1.0\x20-\x20eccentricitySquared\x20*\x20latitudeSin\x20*\x20latitudeSin);\x0a\x20\x20\x20\x20let\x20ecef\x20=\x20vec3f(\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20+\x20height)\x20*\x20latitudeCos\x20*\x20cos(longitude),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20+\x20height)\x20*\x20latitudeCos\x20*\x20sin(longitude),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20*\x20(1.0\x20-\x20eccentricitySquared)\x20+\x20height)\x20*\x20latitudeSin\x0a\x20\x20\x20\x20);\x0a\x20\x20\x20\x20return\x20scene.viewProjection\x20*\x20vec4f(ecef\x20-\x20scene.geographic0.yzw,\x201.0);\x0a}\x0a\x0a@vertex\x0afn\x20vertexMain(@location(0)\x20position:\x20vec3f,\x20@location(1)\x20color:\x20vec4f)\x20->\x20VertexOutput\x20{\x0a\x20\x20\x20\x20return\x20VertexOutput(transformScenePosition(position),\x20color);\x0a}\x0a\x0a@fragment\x0afn\x20fragmentMain(input:\x20VertexOutput)\x20->\x20@location(0)\x20vec4f\x20{\x0a\x20\x20\x20\x20return\x20vec4f(input.color.rgb\x20*\x20input.color.a,\x20input.color.a);\x0a}\x0a',volumeSlice_default=_0x5d7726(0x3d2);const validateMetadata=_0x5e15e6=>{const _0x536d6e=_0x5d7726;if([_0x5e15e6[_0x536d6e(0xf1)][_0x536d6e(0x12c)],_0x5e15e6[_0x536d6e(0x3b6)][_0x536d6e(0x12c)],_0x5e15e6[_0x536d6e(0x404)][_0x536d6e(0x12c)],_0x5e15e6[_0x536d6e(0x403)],_0x5e15e6[_0x536d6e(0x1c2)],_0x5e15e6[_0x536d6e(0xf9)]][_0x536d6e(0x1ee)](_0x10ca50=>!Number[_0x536d6e(0x291)](_0x10ca50)||_0x10ca50<=0x0))throw Error(_0x536d6e(0x1a7));if(_0x5e15e6[_0x536d6e(0x2f4)]!==0x1)throw Error('WebGPU\x20volume\x20bricks\x20require\x20halo\x201.\x20WebGPU\x20体积砖块要求\x20halo\x20为\x201。');},getBrickCount=_0x3d8fd6=>[Math['ceil'](_0x3d8fd6[_0x5d7726(0xf1)][_0x5d7726(0x12c)]/_0x3d8fd6['brickWidth']),Math[_0x5d7726(0x1a9)](_0x3d8fd6[_0x5d7726(0x3b6)]['count']/_0x3d8fd6[_0x5d7726(0x1c2)]),Math[_0x5d7726(0x1a9)](_0x3d8fd6[_0x5d7726(0x404)][_0x5d7726(0x12c)]/_0x3d8fd6[_0x5d7726(0xf9)])],getLogicalBrickCoordinate=(_0x236f90,_0x2a3ca9)=>{const _0x57a1c9=_0x5d7726;let _0x221f0=_0x2a3ca9[0x0]*_0x2a3ca9[0x1],_0x2e53c3=Math['floor'](_0x236f90/_0x221f0),_0x16a002=_0x236f90-_0x2e53c3*_0x221f0,_0x3eb953=Math[_0x57a1c9(0x143)](_0x16a002/_0x2a3ca9[0x0]);return[_0x16a002-_0x3eb953*_0x2a3ca9[0x0],_0x3eb953,_0x2e53c3];},analyzeBrickOccupancy=(_0x2c4f56,_0x352da4,_0xaaa325)=>{const _0x4f4bc6=_0x5d7726;let _0xb47a94=_0x352da4['brickWidth']+0x2,_0x41f01f=_0x352da4['brickHeight']+0x2,_0x375dcc=getLogicalBrickCoordinate(_0x2c4f56['logicalIndex'],_0xaaa325),_0xe75cfa=Math['min'](_0x352da4[_0x4f4bc6(0x403)],_0x352da4[_0x4f4bc6(0xf1)][_0x4f4bc6(0x12c)]-_0x375dcc[0x0]*_0x352da4[_0x4f4bc6(0x403)]),_0x1f5965=Math[_0x4f4bc6(0x2dd)](_0x352da4['brickHeight'],_0x352da4['yAxis'][_0x4f4bc6(0x12c)]-_0x375dcc[0x1]*_0x352da4[_0x4f4bc6(0x1c2)]),_0x17f80c=Math[_0x4f4bc6(0x2dd)](_0x352da4[_0x4f4bc6(0xf9)],_0x352da4[_0x4f4bc6(0x404)][_0x4f4bc6(0x12c)]-_0x375dcc[0x2]*_0x352da4[_0x4f4bc6(0xf9)]);for(let _0x16e3a3=0x0;_0x16e3a3<_0x17f80c;_0x16e3a3+=0x1)for(let _0x4dc137=0x0;_0x4dc137<_0x1f5965;_0x4dc137+=0x1){let _0x348342=((_0x16e3a3+0x1)*_0x41f01f+_0x4dc137+0x1)*_0xb47a94+0x1;for(let _0x15e2d9=0x0;_0x15e2d9<_0xe75cfa;_0x15e2d9+=0x1){let _0x123003=_0x2c4f56[_0x4f4bc6(0xf8)][_0x348342+_0x15e2d9];if(_0x123003===_0x123003&&(_0x352da4[_0x4f4bc6(0x245)]===void 0x0||_0x123003!==_0x352da4[_0x4f4bc6(0x245)]))return{'occupied':!0x0,'coreSampleCount':_0xe75cfa*_0x1f5965*_0x17f80c};}}return{'occupied':!0x1,'coreSampleCount':_0xe75cfa*_0x1f5965*_0x17f80c};},findAtlasLayout=(_0x587c68,_0x16f6d3,_0x3afc19,_0x380b43,_0x186216)=>{const _0x115f64=_0x5d7726;if(_0x587c68<=0x0)return null;let _0x3ca924=Math['floor'](_0x186216/_0x16f6d3),_0x52839e=Math['floor'](_0x186216/_0x3afc19),_0x487d54=Math[_0x115f64(0x143)](_0x186216/_0x380b43),_0x3d0aac=null;for(let _0x185dd0=0x1;_0x185dd0<=_0x3ca924;_0x185dd0+=0x1)for(let _0x286c46=0x1;_0x286c46<=_0x52839e;_0x286c46+=0x1){let _0x266ad3=Math[_0x115f64(0x2dd)](_0x487d54,Math['floor'](_0x587c68/(_0x185dd0*_0x286c46))),_0x4a7b66=_0x185dd0*_0x286c46*_0x266ad3;_0x266ad3<=0x0||_0x4a7b66<=(_0x3d0aac?.[_0x115f64(0x18d)]??0x0)||(_0x3d0aac={'slotCountX':_0x185dd0,'slotCountY':_0x286c46,'slotCountZ':_0x266ad3,'slotCount':_0x4a7b66,'textureCount':0x1,'capacity':_0x4a7b66});}return _0x3d0aac;},getSlotCoordinate=(_0x3732b0,_0x231470)=>{const _0x26961b=_0x5d7726;let _0x28fc32=_0x231470['slotCountX']*_0x231470[_0x26961b(0x1b2)],_0x1301aa=Math[_0x26961b(0x143)](_0x3732b0/_0x28fc32),_0x543a2f=_0x3732b0-_0x1301aa*_0x28fc32,_0x20299e=Math[_0x26961b(0x143)](_0x543a2f/_0x231470[_0x26961b(0x210)]);return[_0x543a2f-_0x20299e*_0x231470[_0x26961b(0x210)],_0x20299e,_0x1301aa];},findLeastRecentlyUsed=(_0x2e372b,_0x57bbf6)=>{const _0x4278f8=_0x5d7726;let _0x3aaf19=null;for(let _0x2a3258 of _0x2e372b)_0x2a3258[_0x4278f8(0x1c4)]!==_0x57bbf6&&(!_0x3aaf19||_0x2a3258['lastUsedFrame']<_0x3aaf19[_0x4278f8(0x1c4)])&&(_0x3aaf19=_0x2a3258);return _0x3aaf19;},createPaddedTextureData=(_0x65cbc8,_0x1e4e75,_0x14abdc,_0x411c6c)=>{const _0x5151c2=_0x5d7726;let _0x584fbf=_0x1e4e75*Float32Array[_0x5151c2(0x176)],_0x9bb1a0=Math[_0x5151c2(0x1a9)](_0x584fbf/0x100)*0x100;if(_0x584fbf===_0x9bb1a0)return{'values':_0x65cbc8,'bytesPerRow':_0x9bb1a0};let _0x1fbd14=_0x9bb1a0/Float32Array[_0x5151c2(0x176)],_0x8a44f2=new Float32Array(_0x1fbd14*_0x14abdc*_0x411c6c);for(let _0x284772=0x0;_0x284772<_0x411c6c;_0x284772+=0x1)for(let _0x4fd207=0x0;_0x4fd207<_0x14abdc;_0x4fd207+=0x1){let _0x395e7b=(_0x284772*_0x14abdc+_0x4fd207)*_0x1e4e75,_0x110b41=(_0x284772*_0x14abdc+_0x4fd207)*_0x1fbd14;_0x8a44f2[_0x5151c2(0x1f8)](_0x65cbc8[_0x5151c2(0x21b)](_0x395e7b,_0x395e7b+_0x1e4e75),_0x110b41);}return{'values':_0x8a44f2,'bytesPerRow':_0x9bb1a0};};var WebgpuBrickAtlas=class{[_0x5d7726(0x23d)];[_0x5d7726(0x162)];[_0x5d7726(0x18a)];[_0x5d7726(0x25f)]=null;['layout']=null;[_0x5d7726(0x36b)]=[];['atlasViews']=[];[_0x5d7726(0x2f7)]=null;[_0x5d7726(0x1e4)]=new Uint32Array();[_0x5d7726(0x2f0)]=new Map();[_0x5d7726(0x39d)]=new Map();[_0x5d7726(0x121)]=0x0;constructor(_0x459a9d,_0x1e14f3=0x20000000,_0x30d0cc=_0x1e14f3){const _0x11bc9a=_0x5d7726;if(!Number[_0x11bc9a(0x373)](_0x1e14f3)||!Number[_0x11bc9a(0x373)](_0x30d0cc)||_0x1e14f3<=0x0||_0x30d0cc<=0x0)throw Error(_0x11bc9a(0x303));this[_0x11bc9a(0x23d)]=_0x459a9d,this[_0x11bc9a(0x162)]=Math['min'](_0x1e14f3,_0x30d0cc),this[_0x11bc9a(0x18a)]=_0x30d0cc;}get[_0x5d7726(0x1de)](){const _0x275817=_0x5d7726;if(!this['metadata'])throw Error(_0x275817(0x242));return this['metadata'];}get['atlasLayout'](){const _0x135d33=_0x5d7726;if(!this[_0x135d33(0x26b)])throw Error(_0x135d33(0x3bb));return this[_0x135d33(0x26b)];}get[_0x5d7726(0x199)](){const _0x4be45f=_0x5d7726;return this['residentByLogicalIndex'][_0x4be45f(0x261)];}get['statistics'](){const _0x55d321=_0x5d7726;if(!this[_0x55d321(0x25f)]||!this[_0x55d321(0x26b)])return{'logicalBrickCount':0x0,'atlasCapacity':0x0,'gpuBytes':0x0,'memoryLimitBytes':this[_0x55d321(0x18a)],'budgetLimited':!0x1,'skippedSamples':0x0,'skippedCells':0x0};let _0x57a3c0=getBrickCount(this[_0x55d321(0x25f)]),_0x587378=_0x57a3c0[0x0]*_0x57a3c0[0x1]*_0x57a3c0[0x2],_0x21f3f0=this['metadata'][_0x55d321(0x403)]+0x2,_0x2d31e7=this['metadata'][_0x55d321(0x1c2)]+0x2,_0x1d91df=this[_0x55d321(0x25f)][_0x55d321(0xf9)]+0x2,_0x49102e=_0x21f3f0*_0x2d31e7*_0x1d91df*this[_0x55d321(0x26b)][_0x55d321(0x138)]*Float32Array[_0x55d321(0x176)],_0x2a084f=_0x587378*0x4*Uint32Array[_0x55d321(0x176)],_0x224a8a=0x0,_0xb4c8a4=0x0;for(let _0x273132 of this[_0x55d321(0x2f0)][_0x55d321(0xf8)]())_0x273132[_0x55d321(0x186)]||(_0xb4c8a4+=0x1,_0x224a8a+=_0x273132[_0x55d321(0x309)]);return{'logicalBrickCount':_0x587378,'atlasCapacity':this['layout']['capacity'],'gpuBytes':_0x49102e+_0x2a084f,'memoryLimitBytes':this[_0x55d321(0x18a)],'budgetLimited':this['layout'][_0x55d321(0x138)]<_0x587378,'skippedSamples':_0x224a8a,'skippedCells':_0xb4c8a4};}['configure'](_0x258e0b){const _0x163b4a=_0x5d7726;validateMetadata(_0x258e0b);let _0x15b4c0=_0x258e0b[_0x163b4a(0x403)]+0x2,_0x3e250e=_0x258e0b[_0x163b4a(0x1c2)]+0x2,_0x367092=_0x258e0b['brickDepth']+0x2,_0x270a69=getBrickCount(_0x258e0b),_0x3aaa64=_0x270a69[0x0]*_0x270a69[0x1]*_0x270a69[0x2],_0x943138=_0x3aaa64*0x4*Uint32Array[_0x163b4a(0x176)],_0x137efd=Math[_0x163b4a(0x2dd)](this[_0x163b4a(0x162)],this[_0x163b4a(0x18a)])-_0x943138;if(_0x137efd<=0x0)throw Error(_0x163b4a(0x1d4));let _0x469064=_0x15b4c0*_0x3e250e*_0x367092*Float32Array[_0x163b4a(0x176)],_0x36f9df=Math[_0x163b4a(0x2dd)](_0x3aaa64,Math[_0x163b4a(0x143)](_0x137efd/_0x469064)),_0x44aa71=Math[_0x163b4a(0x2e5)](0x1,Math[_0x163b4a(0x143)](0x4000000/_0x469064)),_0x431a63=Math[_0x163b4a(0x2dd)](0x8,Math['max'](0x1,Math[_0x163b4a(0x1a9)](_0x36f9df/_0x44aa71))),_0x369da6=findAtlasLayout(Math[_0x163b4a(0x2e5)](0x1,Math[_0x163b4a(0x143)](_0x36f9df/_0x431a63)),_0x15b4c0,_0x3e250e,_0x367092,this[_0x163b4a(0x23d)][_0x163b4a(0x3b9)][_0x163b4a(0x1da)]);if(!_0x369da6)throw Error(_0x163b4a(0x244));let _0x176753={..._0x369da6,'textureCount':_0x431a63,'capacity':_0x369da6['slotCount']*_0x431a63},_0x57f3b5=_0x15b4c0*_0x176753[_0x163b4a(0x210)],_0x4ae614=_0x3e250e*_0x176753[_0x163b4a(0x1b2)],_0x357b40=_0x367092*_0x176753[_0x163b4a(0x181)],_0x2cc2e0=Array[_0x163b4a(0x3c0)]({'length':_0x431a63},(_0x8dc803,_0x13622c)=>this['device'][_0x163b4a(0x346)]({'label':_0x163b4a(0x3fc)+_0x13622c,'size':[_0x57f3b5,_0x4ae614,_0x357b40],'dimension':'3d','format':_0x163b4a(0x3a7),'usage':GPUTextureUsage[_0x163b4a(0x164)]|GPUTextureUsage['COPY_DST']|GPUTextureUsage['STORAGE_BINDING']})),_0x852369=this[_0x163b4a(0x23d)][_0x163b4a(0x387)]({'label':'volume\x20brick\x20page\x20table','size':Math[_0x163b4a(0x2e5)](0x10,_0x943138),'usage':GPUBufferUsage[_0x163b4a(0x231)]|GPUBufferUsage[_0x163b4a(0x1ef)]});this['destroyResources'](),this[_0x163b4a(0x25f)]={..._0x258e0b},this[_0x163b4a(0x26b)]=_0x176753,this['atlasTextures']=_0x2cc2e0,this[_0x163b4a(0x313)]=_0x2cc2e0['map'](_0x3edae6=>_0x3edae6[_0x163b4a(0x15f)]({'dimension':'3d'})),this['pageTableBuffer']=_0x852369,this[_0x163b4a(0x1e4)]=new Uint32Array(_0x3aaa64*0x4),this[_0x163b4a(0x23d)][_0x163b4a(0x3b3)]['writeBuffer'](_0x852369,0x0,this[_0x163b4a(0x1e4)]);for(let _0x78616f of _0x2cc2e0)this[_0x163b4a(0x286)](_0x78616f,_0x57f3b5,_0x4ae614,_0x357b40);this['generation']+=0x1;}[_0x5d7726(0x362)](_0x5c915a,_0xd6a255){const _0x3d2fad=_0x5d7726;let _0x2f236d=this[_0x3d2fad(0x1de)],_0x32d667=this[_0x3d2fad(0x209)],_0x3f4851=getBrickCount(_0x2f236d),_0x3b02d8=_0x3f4851[0x0]*_0x3f4851[0x1]*_0x3f4851[0x2];if(!Number[_0x3d2fad(0x291)](_0x5c915a[_0x3d2fad(0x351)])||_0x5c915a[_0x3d2fad(0x351)]<0x0||_0x5c915a[_0x3d2fad(0x351)]>=_0x3b02d8)throw Error('Invalid\x20logical\x20volume\x20brick\x20index:\x20'+_0x5c915a[_0x3d2fad(0x351)]+_0x3d2fad(0x14d));let _0x2e0860=_0x2f236d[_0x3d2fad(0x403)]+0x2,_0x39c7fe=_0x2f236d[_0x3d2fad(0x1c2)]+0x2,_0x933a27=_0x2f236d['brickDepth']+0x2,_0x29cbb3=_0x2e0860*_0x39c7fe*_0x933a27;if(_0x5c915a[_0x3d2fad(0xf8)]['length']!==_0x29cbb3)throw Error(_0x3d2fad(0x2bd)+_0x5c915a[_0x3d2fad(0x351)]+_0x3d2fad(0x15c)+_0x29cbb3+_0x3d2fad(0x1a6)+_0x5c915a[_0x3d2fad(0xf8)][_0x3d2fad(0x1bc)]+_0x3d2fad(0x177));let _0x467048=this[_0x3d2fad(0x2f0)][_0x3d2fad(0x248)](_0x5c915a[_0x3d2fad(0x351)])??this['acquireSlot'](_0x5c915a[_0x3d2fad(0x351)],_0xd6a255),_0x343b19=analyzeBrickOccupancy(_0x5c915a,_0x2f236d,_0x3f4851),_0x21f7f6=Math['floor'](_0x467048[_0x3d2fad(0x1cc)]/_0x32d667[_0x3d2fad(0x18d)]),_0x6719c3=getSlotCoordinate(_0x467048[_0x3d2fad(0x1cc)]%_0x32d667[_0x3d2fad(0x18d)],_0x32d667),_0x315b81=createPaddedTextureData(new Float32Array(_0x5c915a[_0x3d2fad(0xf8)]),_0x2e0860,_0x39c7fe,_0x933a27);return _0x467048[_0x3d2fad(0x1c4)]=_0xd6a255,_0x467048[_0x3d2fad(0x121)]=this['generation'],_0x467048[_0x3d2fad(0x186)]=_0x343b19[_0x3d2fad(0x186)],_0x467048[_0x3d2fad(0x309)]=_0x343b19['coreSampleCount'],this[_0x3d2fad(0x36f)](_0x467048),{'values':_0x315b81[_0x3d2fad(0xf8)],'bytesPerRow':_0x315b81[_0x3d2fad(0x2c8)],'rowsPerImage':_0x39c7fe,'origin':{'x':_0x6719c3[0x0]*_0x2e0860,'y':_0x6719c3[0x1]*_0x39c7fe,'z':_0x6719c3[0x2]*_0x933a27},'extent':[_0x2e0860,_0x39c7fe,_0x933a27],'atlasIndex':_0x21f7f6};}[_0x5d7726(0x266)](_0x2d4bc5,_0x199cf2,_0x24d398,_0x4cd773){const _0x4a0fc8=_0x5d7726;_0x2d4bc5[_0x4a0fc8(0x1e8)]({'buffer':_0x199cf2,'offset':_0x24d398,'bytesPerRow':_0x4cd773[_0x4a0fc8(0x2c8)],'rowsPerImage':_0x4cd773[_0x4a0fc8(0x25d)]},{'texture':this[_0x4a0fc8(0x132)](_0x4cd773[_0x4a0fc8(0x154)]),'origin':_0x4cd773[_0x4a0fc8(0x2d3)]},_0x4cd773[_0x4a0fc8(0x207)]);}['touch'](_0x1f2e93,_0x165536){const _0x2a3262=_0x5d7726;for(let _0x14f425 of _0x1f2e93){let _0x17db03=this[_0x2a3262(0x2f0)][_0x2a3262(0x248)](_0x14f425);_0x17db03&&(_0x17db03[_0x2a3262(0x1c4)]=_0x165536);}}[_0x5d7726(0x13c)](_0x2e404f,_0x1b2118){const _0x5ae3ca=_0x5d7726;if(this['atlasViews'][_0x5ae3ca(0x1bc)]===0x0||!this['pageTableBuffer'])throw Error(_0x5ae3ca(0x208));return this[_0x5ae3ca(0x23d)][_0x5ae3ca(0x13c)]({'label':_0x5ae3ca(0x35f),'layout':_0x2e404f,'entries':[...Array[_0x5ae3ca(0x3c0)]({'length':0x8},(_0x4e50ec,_0x1caf05)=>({'binding':_0x1caf05,'resource':this[_0x5ae3ca(0x313)][_0x1caf05]??this['atlasViews'][0x0]})),{'binding':0x8,'resource':{'buffer':this[_0x5ae3ca(0x2f7)]}},{'binding':0x9,'resource':{'buffer':_0x1b2118}}]});}['destroy'](){const _0x987b1d=_0x5d7726;this['destroyResources'](),this[_0x987b1d(0x25f)]=null,this['layout']=null,this[_0x987b1d(0x1e4)]=new Uint32Array();}[_0x5d7726(0x192)](_0x49bae2,_0x39a5f7){const _0x26b4ca=_0x5d7726;let _0x508eb9=this[_0x26b4ca(0x209)],_0x3fb064=this[_0x26b4ca(0x39d)][_0x26b4ca(0x261)];if(_0x3fb064>=_0x508eb9[_0x26b4ca(0x138)]){let _0x583086=findLeastRecentlyUsed(this['residentBySlotIndex'][_0x26b4ca(0xf8)](),_0x39a5f7);if(!_0x583086)throw Error('WebGPU\x20volume\x20atlas\x20has\x20no\x20evictable\x20slot.\x20WebGPU\x20体积图集没有可驱逐的槽位。');_0x3fb064=_0x583086[_0x26b4ca(0x1cc)],this['clearPageEntry'](_0x583086[_0x26b4ca(0x351)]),this[_0x26b4ca(0x2f0)][_0x26b4ca(0x370)](_0x583086[_0x26b4ca(0x351)]),this[_0x26b4ca(0x39d)][_0x26b4ca(0x370)](_0x3fb064);}let _0x227889={'logicalIndex':_0x49bae2,'slotIndex':_0x3fb064,'lastUsedFrame':_0x39a5f7,'generation':this['generation'],'occupied':!0x1,'skippedSampleCount':0x0};return this['residentByLogicalIndex'][_0x26b4ca(0x1f8)](_0x49bae2,_0x227889),this['residentBySlotIndex'][_0x26b4ca(0x1f8)](_0x3fb064,_0x227889),_0x227889;}[_0x5d7726(0x36f)](_0x14c734){const _0x4d1213=_0x5d7726;let _0xf71115=_0x14c734[_0x4d1213(0x351)]*0x4;this['pageTableValues'][_0xf71115]=_0x14c734[_0x4d1213(0x1cc)]%this[_0x4d1213(0x209)][_0x4d1213(0x18d)]+0x1,this[_0x4d1213(0x1e4)][_0xf71115+0x1]=_0x14c734[_0x4d1213(0x121)],this[_0x4d1213(0x1e4)][_0xf71115+0x2]=+!!_0x14c734[_0x4d1213(0x186)],this[_0x4d1213(0x1e4)][_0xf71115+0x3]=Math['floor'](_0x14c734[_0x4d1213(0x1cc)]/this[_0x4d1213(0x209)][_0x4d1213(0x18d)]),this[_0x4d1213(0x23d)]['queue']['writeBuffer'](this[_0x4d1213(0x160)](),_0xf71115*Uint32Array[_0x4d1213(0x176)],this['pageTableValues'],_0xf71115,0x4);}[_0x5d7726(0x23a)](_0x5cd442){const _0x442451=_0x5d7726;let _0x208c5b=_0x5cd442*0x4;this[_0x442451(0x1e4)][_0x442451(0x22b)](0x0,_0x208c5b,_0x208c5b+0x4),this[_0x442451(0x23d)][_0x442451(0x3b3)][_0x442451(0x2ef)](this[_0x442451(0x160)](),_0x208c5b*Uint32Array[_0x442451(0x176)],this[_0x442451(0x1e4)],_0x208c5b,0x4);}['getAtlasTexture'](_0x1b790f){const _0x57c587=_0x5d7726;let _0x36a5f3=this[_0x57c587(0x36b)][_0x1b790f];if(!_0x36a5f3)throw Error(_0x57c587(0x26e));return _0x36a5f3;}[_0x5d7726(0x286)](_0x5ef88c,_0xfe6b43,_0x15e36c,_0x2d0c57){const _0x5f1cdb=_0x5d7726;let _0x4d79e3=this[_0x5f1cdb(0x23d)][_0x5f1cdb(0x101)]({'label':_0x5f1cdb(0x2c9),'code':_0x5f1cdb(0x325)}),_0x22e20f=this[_0x5f1cdb(0x23d)][_0x5f1cdb(0x3e6)]({'label':_0x5f1cdb(0x343),'layout':_0x5f1cdb(0x28f),'compute':{'module':_0x4d79e3,'entryPoint':_0x5f1cdb(0x18f)}}),_0x4f09ff=this[_0x5f1cdb(0x23d)][_0x5f1cdb(0x13c)]({'label':'volume\x20atlas\x20clear\x20bind\x20group','layout':_0x22e20f[_0x5f1cdb(0x1f9)](0x0),'entries':[{'binding':0x0,'resource':_0x5ef88c[_0x5f1cdb(0x15f)]({'dimension':'3d'})}]}),_0x362042=this['device']['createCommandEncoder']({'label':_0x5f1cdb(0x39a)}),_0xe020c3=_0x362042[_0x5f1cdb(0x2bb)]({'label':_0x5f1cdb(0x2a7)});_0xe020c3[_0x5f1cdb(0x35e)](_0x22e20f),_0xe020c3['setBindGroup'](0x0,_0x4f09ff),_0xe020c3[_0x5f1cdb(0x230)](Math[_0x5f1cdb(0x1a9)](_0xfe6b43/0x4),Math['ceil'](_0x15e36c/0x4),Math[_0x5f1cdb(0x1a9)](_0x2d0c57/0x4)),_0xe020c3[_0x5f1cdb(0x105)](),this[_0x5f1cdb(0x23d)][_0x5f1cdb(0x3b3)][_0x5f1cdb(0x2e9)]([_0x362042[_0x5f1cdb(0x366)]()]);}['getPageTableBuffer'](){const _0x3f903a=_0x5d7726;if(!this[_0x3f903a(0x2f7)])throw Error(_0x3f903a(0x184));return this[_0x3f903a(0x2f7)];}[_0x5d7726(0x33c)](){const _0x2739fe=_0x5d7726;for(let _0x31be4a of this[_0x2739fe(0x36b)])_0x31be4a[_0x2739fe(0x416)]();this[_0x2739fe(0x2f7)]?.[_0x2739fe(0x416)](),this[_0x2739fe(0x36b)]=[],this[_0x2739fe(0x313)]=[],this[_0x2739fe(0x2f7)]=null,this[_0x2739fe(0x2f0)][_0x2739fe(0x1ad)](),this[_0x2739fe(0x39d)][_0x2739fe(0x1ad)]();}},WebgpuSceneAttachments=class{[_0x5d7726(0x23d)];[_0x5d7726(0x257)]=null;[_0x5d7726(0x40a)]=null;['width']=0x0;[_0x5d7726(0x38f)]=0x0;constructor(_0x8786da){const _0x4d93d9=_0x5d7726;this[_0x4d93d9(0x23d)]=_0x8786da;}get[_0x5d7726(0x24e)](){const _0x4f5b78=_0x5d7726;if(!this['depthView'])throw Error(_0x4f5b78(0x107));return this[_0x4f5b78(0x40a)];}[_0x5d7726(0xfe)](_0x4a17bd,_0x23bcc9){const _0xad8faf=_0x5d7726;if(this[_0xad8faf(0x293)]===_0x4a17bd&&this[_0xad8faf(0x38f)]===_0x23bcc9)return;let _0x15b8cc=this[_0xad8faf(0x23d)][_0xad8faf(0x346)]({'label':'volume\x20scene\x20depth','size':[_0x4a17bd,_0x23bcc9],'format':_0xad8faf(0x359),'usage':GPUTextureUsage['RENDER_ATTACHMENT']|GPUTextureUsage['TEXTURE_BINDING']}),_0x214e5e=this[_0xad8faf(0x257)];this[_0xad8faf(0x257)]=_0x15b8cc,this[_0xad8faf(0x40a)]=_0x15b8cc['createView'](),this['width']=_0x4a17bd,this[_0xad8faf(0x38f)]=_0x23bcc9,_0x214e5e?.[_0xad8faf(0x416)]();}[_0x5d7726(0x416)](){const _0x293495=_0x5d7726;this[_0x293495(0x257)]?.['destroy'](),this[_0x293495(0x257)]=null,this['depthView']=null,this[_0x293495(0x293)]=0x0,this[_0x293495(0x38f)]=0x0;}},WebgpuSceneMeshResources=class{[_0x5d7726(0x23d)];[_0x5d7726(0x347)]=[];constructor(_0x46d353){this['device']=_0x46d353;}get['count'](){const _0x58cfb2=_0x5d7726;return this[_0x58cfb2(0x347)]['length'];}[_0x5d7726(0x144)](_0x4ecfc9){const _0x14f9d7=_0x5d7726;let _0x4daa71=[];try{for(let _0x537fde of _0x4ecfc9)_0x4daa71[_0x14f9d7(0x10e)](this[_0x14f9d7(0x40c)](_0x537fde));}catch(_0x1366c4){for(let _0x5a7037 of _0x4daa71)_0x5a7037['buffer'][_0x14f9d7(0x416)]();throw _0x1366c4;}this[_0x14f9d7(0x33c)](),this[_0x14f9d7(0x347)]=_0x4daa71;}['draw'](_0x19de47,_0x1b0ab9,_0x4c83fc){const _0xdded40=_0x5d7726;for(let _0x8f3612 of this['resources'])_0x8f3612[_0xdded40(0x23f)]!==_0x1b0ab9||_0x8f3612[_0xdded40(0x3fa)]!==_0x4c83fc||(_0x19de47[_0xdded40(0x134)](0x0,_0x8f3612[_0xdded40(0x39c)]),_0x19de47[_0xdded40(0x406)](_0x8f3612[_0xdded40(0x287)]));}[_0x5d7726(0x416)](){const _0x471dd6=_0x5d7726;this[_0x471dd6(0x33c)]();}[_0x5d7726(0x40c)](_0x524b1d){const _0x2af6b2=_0x5d7726;if(_0x524b1d['vertices']['length']===0x0||_0x524b1d[_0x2af6b2(0x194)][_0x2af6b2(0x1bc)]%0x7!=0x0)throw Error(_0x2af6b2(0x3a0)+_0x524b1d['id']+'\x20must\x20contain\x20position\x20and\x20RGBA\x20values\x20for\x20every\x20vertex.\x20场景网格顶点必须包含位置和\x20RGBA。');let _0x3f4256=new Float32Array(_0x524b1d[_0x2af6b2(0x194)]),_0x44f7f5=this[_0x2af6b2(0x23d)][_0x2af6b2(0x387)]({'label':_0x2af6b2(0x102)+_0x524b1d['id'],'size':_0x3f4256[_0x2af6b2(0x20b)],'usage':GPUBufferUsage[_0x2af6b2(0x393)]|GPUBufferUsage['COPY_DST']});return this[_0x2af6b2(0x23d)][_0x2af6b2(0x3b3)][_0x2af6b2(0x2ef)](_0x44f7f5,0x0,_0x3f4256),{'id':_0x524b1d['id'],'topology':_0x524b1d[_0x2af6b2(0x23f)],'depthMode':_0x524b1d[_0x2af6b2(0x3fa)],'buffer':_0x44f7f5,'vertexCount':_0x524b1d[_0x2af6b2(0x194)][_0x2af6b2(0x1bc)]/0x7};}[_0x5d7726(0x33c)](){const _0x4ce3a2=_0x5d7726;for(let _0x4a47b8 of this[_0x4ce3a2(0x347)])_0x4a47b8[_0x4ce3a2(0x39c)][_0x4ce3a2(0x416)]();this[_0x4ce3a2(0x347)]=[];}},WebgpuSliceResources=class{[_0x5d7726(0x23d)];['layout'];[_0x5d7726(0x347)]=[];[_0x5d7726(0x166)]=0x0;['resourceRebuildCount']=0x0;constructor(_0x18acd3,_0x36194c){const _0x14e6e9=_0x5d7726;this[_0x14e6e9(0x23d)]=_0x18acd3,this[_0x14e6e9(0x26b)]=_0x36194c;}get[_0x5d7726(0x12c)](){const _0x4c5c30=_0x5d7726;return this[_0x4c5c30(0x347)][_0x4c5c30(0x1bc)];}get[_0x5d7726(0x3ec)](){const _0x560641=_0x5d7726;return{'uniformUpdateCount':this[_0x560641(0x166)],'resourceRebuildCount':this[_0x560641(0x3d4)]};}[_0x5d7726(0x144)](_0x478cf1){const _0x34c88f=_0x5d7726;let _0x5a437a=new Map(this[_0x34c88f(0x347)][_0x34c88f(0x3ef)](_0x1584c8=>[_0x1584c8['id'],_0x1584c8])),_0x1e3481=[],_0x206136=new Set();try{for(let _0x3d1144 of _0x478cf1){if(!_0x3d1144[_0x34c88f(0x260)])continue;if(_0x206136[_0x34c88f(0x2de)](_0x3d1144['id']))throw Error(_0x34c88f(0x3dd)+_0x3d1144['id']+_0x34c88f(0x119));_0x206136[_0x34c88f(0x2e7)](_0x3d1144['id']);let _0x4112f2=this['createValues'](_0x3d1144),_0x32e295=_0x5a437a[_0x34c88f(0x248)](_0x3d1144['id']);if(!_0x32e295){_0x1e3481['push'](this[_0x34c88f(0x40c)](_0x3d1144,_0x4112f2));continue;}_0x5a437a[_0x34c88f(0x370)](_0x3d1144['id']),_0x32e295[_0x34c88f(0x3fa)]=_0x3d1144['depthMode'],this['valuesEqual'](_0x32e295[_0x34c88f(0xf8)],_0x4112f2)||(this[_0x34c88f(0x23d)][_0x34c88f(0x3b3)][_0x34c88f(0x2ef)](_0x32e295[_0x34c88f(0x39c)],0x0,_0x4112f2),_0x32e295[_0x34c88f(0xf8)]=_0x4112f2,this[_0x34c88f(0x166)]+=0x1),_0x1e3481[_0x34c88f(0x10e)](_0x32e295);}}catch(_0x47afae){for(let _0xee8d4 of _0x1e3481)this[_0x34c88f(0x347)][_0x34c88f(0x128)](_0xee8d4)||_0xee8d4[_0x34c88f(0x39c)]['destroy']();throw _0x47afae;}for(let _0x4a56e0 of _0x5a437a['values']())_0x4a56e0[_0x34c88f(0x39c)][_0x34c88f(0x416)]();this['resources']=_0x1e3481;}['draw'](_0x3506c7,_0x19dd63,_0x453c61){const _0x111ebd=_0x5d7726;_0x3506c7['setPipeline'](_0x19dd63);for(let _0x562cf0 of this[_0x111ebd(0x347)])_0x562cf0['depthMode']===_0x453c61&&(_0x3506c7[_0x111ebd(0x3a5)](0x3,_0x562cf0[_0x111ebd(0x3e3)]),_0x3506c7[_0x111ebd(0x406)](0x1800));}['destroy'](){const _0x5bd44f=_0x5d7726;this[_0x5bd44f(0x33c)]();}[_0x5d7726(0x1c9)](_0x30e11b){const _0x7f8e66=_0x5d7726;if(!Number[_0x7f8e66(0x373)](_0x30e11b[_0x7f8e66(0x3c6)])||_0x30e11b['position']<0x0||_0x30e11b[_0x7f8e66(0x3c6)]>0x1)throw Error(_0x7f8e66(0x1c1)+_0x30e11b['id']+'\x20position\x20must\x20be\x20normalized\x20to\x20zero\x20through\x20one.\x20体积切面位置必须归一化到零至一。');let _0x278342=_0x30e11b['axis']==='x'?0x0:_0x30e11b[_0x7f8e66(0x24c)]==='y'?0x1:0x2,_0x28b331=_0x30e11b['plateColor']??[0x0,0x0,0x0,0x0];if(_0x28b331['some'](_0x179189=>!Number[_0x7f8e66(0x373)](_0x179189)||_0x179189<0x0||_0x179189>0x1))throw Error(_0x7f8e66(0x1c1)+_0x30e11b['id']+_0x7f8e66(0x235));return new Float32Array([_0x278342,_0x30e11b[_0x7f8e66(0x3c6)],_0x30e11b[_0x7f8e66(0x36a)]??0x1,0x0,..._0x28b331]);}['createResource'](_0x4cfc54,_0x560271){const _0x3612d5=_0x5d7726;let _0xf57cff=this[_0x3612d5(0x23d)][_0x3612d5(0x387)]({'label':_0x3612d5(0x305)+_0x4cfc54['id'],'size':0x20,'usage':GPUBufferUsage[_0x3612d5(0x1bb)]|GPUBufferUsage[_0x3612d5(0x1ef)]});this['device'][_0x3612d5(0x3b3)][_0x3612d5(0x2ef)](_0xf57cff,0x0,_0x560271);let _0x4b39af=this[_0x3612d5(0x23d)][_0x3612d5(0x13c)]({'layout':this[_0x3612d5(0x26b)],'entries':[{'binding':0x0,'resource':{'buffer':_0xf57cff}}]});return this[_0x3612d5(0x3d4)]+=0x1,{'id':_0x4cfc54['id'],'depthMode':_0x4cfc54[_0x3612d5(0x3fa)],'buffer':_0xf57cff,'bindGroup':_0x4b39af,'values':_0x560271};}[_0x5d7726(0x3d1)](_0x20549c,_0x38ee8){const _0x383683=_0x5d7726;for(let _0x510918=0x0;_0x510918<_0x20549c[_0x383683(0x1bc)];_0x510918+=0x1)if(_0x20549c[_0x510918]!==_0x38ee8[_0x510918])return!0x1;return!0x0;}['destroyResources'](){const _0x5d1ad0=_0x5d7726;for(let _0x302a3c of this[_0x5d1ad0(0x347)])_0x302a3c['buffer'][_0x5d1ad0(0x416)]();this[_0x5d1ad0(0x347)]=[];}};const createStorageBuffer=(_0x542d1b,_0x37978f,_0x41d2a2)=>{const _0x4ec713=_0x5d7726;let _0x5d3fcd=_0x542d1b['createBuffer']({'label':_0x41d2a2,'size':Math[_0x4ec713(0x2e5)](0x4,_0x37978f['byteLength']),'usage':GPUBufferUsage[_0x4ec713(0x231)]|GPUBufferUsage[_0x4ec713(0x1ef)]});return _0x37978f['byteLength']>0x0&&_0x542d1b[_0x4ec713(0x3b3)][_0x4ec713(0x2ef)](_0x5d3fcd,0x0,_0x37978f),_0x5d3fcd;},validateStops$1=(_0x468daf,_0x3703f0)=>{const _0x4f4b80=_0x5d7726;if(_0x468daf[_0x4f4b80(0x1bc)]===0x0||_0x3703f0[_0x4f4b80(0x1bc)]===0x0)throw Error(_0x4f4b80(0x221));for(let _0xc137ff=0x1;_0xc137ff<_0x468daf[_0x4f4b80(0x1bc)];_0xc137ff+=0x1)if(_0x468daf[_0xc137ff][_0x4f4b80(0x1c7)]<_0x468daf[_0xc137ff-0x1][_0x4f4b80(0x1c7)])throw Error(_0x4f4b80(0x292));for(let _0x49e140=0x0;_0x49e140<_0x3703f0[_0x4f4b80(0x1bc)];_0x49e140+=0x1){if(_0x3703f0[_0x49e140][_0x4f4b80(0x36a)]<0x0||_0x3703f0[_0x49e140][_0x4f4b80(0x36a)]>0x1)throw Error(_0x4f4b80(0x14b));if(_0x49e140>0x0&&_0x3703f0[_0x49e140][_0x4f4b80(0x1c7)]<_0x3703f0[_0x49e140-0x1][_0x4f4b80(0x1c7)])throw Error(_0x4f4b80(0x2d8));}};var WebgpuTransferResources=class{['device'];[_0x5d7726(0x11c)]=null;[_0x5d7726(0x1e3)]=null;[_0x5d7726(0x1fe)]=null;[_0x5d7726(0x16e)]=null;[_0x5d7726(0x3d7)]=0x0;[_0x5d7726(0x273)]=0x0;constructor(_0x1024de){const _0x4a59f2=_0x5d7726;this[_0x4a59f2(0x23d)]=_0x1024de;}get[_0x5d7726(0x295)](){const _0x29aa38=_0x5d7726;return[this[_0x29aa38(0x3d7)],this[_0x29aa38(0x273)]];}[_0x5d7726(0x19e)](_0x59fd09,_0x43b69c){const _0x623329=_0x5d7726;validateStops$1(_0x59fd09,_0x43b69c);let _0x150444=new Float32Array(_0x59fd09[_0x623329(0x1bc)]),_0x5d69c2=new Float32Array(_0x59fd09['length']*0x4),_0x2f1f44=new Float32Array(_0x43b69c[_0x623329(0x1bc)]),_0x253f66=new Float32Array(_0x43b69c['length']);for(let _0x25fbed=0x0;_0x25fbed<_0x59fd09[_0x623329(0x1bc)];_0x25fbed+=0x1)_0x150444[_0x25fbed]=_0x59fd09[_0x25fbed]['value'],_0x5d69c2[_0x623329(0x1f8)](_0x59fd09[_0x25fbed][_0x623329(0x3a2)],_0x25fbed*0x4);for(let _0x2d040b=0x0;_0x2d040b<_0x43b69c['length'];_0x2d040b+=0x1)_0x2f1f44[_0x2d040b]=_0x43b69c[_0x2d040b]['value'],_0x253f66[_0x2d040b]=_0x43b69c[_0x2d040b][_0x623329(0x36a)];let _0x293c6a=[createStorageBuffer(this['device'],_0x150444,_0x623329(0x28c)),createStorageBuffer(this[_0x623329(0x23d)],_0x5d69c2,_0x623329(0x220)),createStorageBuffer(this['device'],_0x2f1f44,_0x623329(0x3ab)),createStorageBuffer(this[_0x623329(0x23d)],_0x253f66,_0x623329(0x165))];this[_0x623329(0x385)](),this[_0x623329(0x11c)]=_0x293c6a[0x0],this[_0x623329(0x1e3)]=_0x293c6a[0x1],this[_0x623329(0x1fe)]=_0x293c6a[0x2],this[_0x623329(0x16e)]=_0x293c6a[0x3],this[_0x623329(0x3d7)]=_0x59fd09['length'],this['opacityStopCount']=_0x43b69c[_0x623329(0x1bc)];}[_0x5d7726(0x13c)](_0x301047){const _0x2b0eb2=_0x5d7726;if(!this[_0x2b0eb2(0x11c)]||!this[_0x2b0eb2(0x1e3)]||!this[_0x2b0eb2(0x1fe)]||!this['opacityBuffer'])throw Error(_0x2b0eb2(0x274));return this[_0x2b0eb2(0x23d)]['createBindGroup']({'label':_0x2b0eb2(0x3b2),'layout':_0x301047,'entries':[{'binding':0x0,'resource':{'buffer':this[_0x2b0eb2(0x11c)]}},{'binding':0x1,'resource':{'buffer':this[_0x2b0eb2(0x1e3)]}},{'binding':0x2,'resource':{'buffer':this[_0x2b0eb2(0x1fe)]}},{'binding':0x3,'resource':{'buffer':this[_0x2b0eb2(0x16e)]}}]});}[_0x5d7726(0x416)](){const _0x351a31=_0x5d7726;this[_0x351a31(0x385)](),this[_0x351a31(0x3d7)]=0x0,this[_0x351a31(0x273)]=0x0;}['destroyBuffers'](){const _0x315a19=_0x5d7726;this[_0x315a19(0x11c)]?.[_0x315a19(0x416)](),this[_0x315a19(0x1e3)]?.[_0x315a19(0x416)](),this[_0x315a19(0x1fe)]?.['destroy'](),this['opacityBuffer']?.[_0x315a19(0x416)](),this['colorValuesBuffer']=null,this['colorBuffer']=null,this['opacityValuesBuffer']=null,this[_0x315a19(0x16e)]=null;}};const DEFAULT_MEMORY_TARGET_BYTES=0x200*0x400*0x400,IDENTITY_MATRIX$1=[0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1],DEFAULT_COLOR_STOPS=[{'value':0x0,'color':[0x0,0x0,0x1,0x1]},{'value':0x1,'color':[0x1,0x0,0x0,0x1]}],DEFAULT_OPACITY_STOPS=[{'value':0x0,'opacity':0x0},{'value':0x1,'opacity':0x1}],premultipliedBlend=()=>({'color':{'srcFactor':_0x5d7726(0x3af),'dstFactor':'one-minus-src-alpha','operation':_0x5d7726(0x2e7)},'alpha':{'srcFactor':_0x5d7726(0x3af),'dstFactor':_0x5d7726(0x3d0),'operation':_0x5d7726(0x2e7)}}),validateMatrix=(_0x418d94,_0x39737a)=>{const _0x1eacb1=_0x5d7726;if(_0x418d94[_0x1eacb1(0x1bc)]!==0x10||_0x418d94[_0x1eacb1(0x1ee)](_0x34f026=>!Number[_0x1eacb1(0x373)](_0x34f026)))throw Error(_0x39737a+_0x1eacb1(0x253)+_0x39737a+_0x1eacb1(0x36c));},validateNonNegative=(_0x1a2efb,_0x1568e7)=>{const _0x124611=_0x5d7726;if(!Number['isFinite'](_0x1a2efb)||_0x1a2efb<0x0)throw Error(_0x1568e7+_0x124611(0x33e)+_0x1568e7+_0x124611(0x388));return _0x1a2efb;},validatePositive=(_0x29193f,_0x259c8b)=>{const _0x1f3d0f=_0x5d7726;if(!Number['isFinite'](_0x29193f)||_0x29193f<=0x0)throw Error(_0x259c8b+_0x1f3d0f(0x269)+_0x259c8b+_0x1f3d0f(0x2d0));return _0x29193f;},cloneMeshes=_0x27f5ff=>_0x27f5ff[_0x5d7726(0x3ef)](_0x5f376e=>({..._0x5f376e,'vertices':new Float32Array(_0x5f376e[_0x5d7726(0x194)])})),estimateBrickUploadBytes=_0x178aa0=>{const _0x517ccf=_0x5d7726;let _0x4f1030=_0x178aa0[_0x517ccf(0x403)]+_0x178aa0[_0x517ccf(0x2f4)]*0x2,_0x15e112=_0x178aa0[_0x517ccf(0x1c2)]+_0x178aa0[_0x517ccf(0x2f4)]*0x2,_0x590022=_0x178aa0[_0x517ccf(0xf9)]+_0x178aa0[_0x517ccf(0x2f4)]*0x2;return Math[_0x517ccf(0x1a9)](_0x4f1030*Float32Array[_0x517ccf(0x176)]/0x100)*0x100*_0x15e112*_0x590022+0x10;};var WebgpuVolumeSceneRenderer=class{[_0x5d7726(0x24b)];[_0x5d7726(0x28b)]='idle';[_0x5d7726(0x191)]=null;['adapter']=null;[_0x5d7726(0x23d)]=null;[_0x5d7726(0x17c)]=null;[_0x5d7726(0x3bf)]=null;[_0x5d7726(0x12f)]=null;[_0x5d7726(0x411)]=null;[_0x5d7726(0x3ae)]=null;[_0x5d7726(0x1a0)]=null;[_0x5d7726(0x37d)]=null;[_0x5d7726(0x200)]=null;[_0x5d7726(0x21e)]=null;['geometryBindGroup']=null;[_0x5d7726(0x1d7)]=null;[_0x5d7726(0x122)]=null;['transferBindGroup']=null;['volumePipeline']=null;[_0x5d7726(0x3d6)]=null;[_0x5d7726(0x2a8)]=null;[_0x5d7726(0x19d)]=null;['overlayLinePipeline']=null;[_0x5d7726(0x151)]=null;[_0x5d7726(0x3f5)]=null;[_0x5d7726(0x23e)]=null;['atlas']=null;['transferResources']=null;['profileResources']=null;[_0x5d7726(0x2db)]=null;['axisResources']=null;[_0x5d7726(0x25f)]=null;['camera']={'viewProjection':IDENTITY_MATRIX$1,'inverseViewProjection':IDENTITY_MATRIX$1,'cameraPosition':[0x0,0x0,0x2]};[_0x5d7726(0x1fb)]=IDENTITY_MATRIX$1;['inverseModelMatrix']=IDENTITY_MATRIX$1;[_0x5d7726(0x278)]=[0x0,0x0,0x0];[_0x5d7726(0x3cf)]=[0x1,0x1,0x1];[_0x5d7726(0x1d9)]=_0x5d7726(0x283);['opacity']=0.3;['densityScale']=0x1;[_0x5d7726(0x386)]=0.005;['volumeDimFactor']=0x1;['colorMode']=_0x5d7726(0x3c7);[_0x5d7726(0x11b)]=null;[_0x5d7726(0x35d)]=DEFAULT_COLOR_STOPS;[_0x5d7726(0x153)]=DEFAULT_OPACITY_STOPS;[_0x5d7726(0x227)]=0x0;[_0x5d7726(0x1b3)]=0x0;[_0x5d7726(0x293)]=0x0;[_0x5d7726(0x38f)]=0x0;[_0x5d7726(0x2b4)]=0x0;[_0x5d7726(0x197)]=0x0;[_0x5d7726(0x414)]=[];['cachedSlices']=[];[_0x5d7726(0x3bc)]=[];[_0x5d7726(0x2d5)]=new Map();[_0x5d7726(0x3e2)]=[];[_0x5d7726(0x2fb)]=null;[_0x5d7726(0x3c2)]=0x0;[_0x5d7726(0x1b7)]=null;['uploadStagingBufferSize']=0x0;[_0x5d7726(0x31e)]=0x0;['uploadBatchCount']=0x0;[_0x5d7726(0x28a)]=0x0;[_0x5d7726(0x3ea)]=!0x1;['frameAvailableCallback']=null;constructor(_0x1c41df={}){const _0x42322b=_0x5d7726;this[_0x42322b(0x24b)]={..._0x1c41df};}get[_0x5d7726(0x39b)](){const _0x39d2c2=_0x5d7726;return this[_0x39d2c2(0x28b)];}get[_0x5d7726(0x3ec)](){const _0x3629d9=_0x5d7726;let _0xeb4801=this[_0x3629d9(0x358)]?.[_0x3629d9(0x3ec)]??{'logicalBrickCount':0x0,'atlasCapacity':0x0,'gpuBytes':0x0,'memoryLimitBytes':this[_0x3629d9(0x24b)][_0x3629d9(0x18a)]??this[_0x3629d9(0x24b)]['memoryTargetBytes']??DEFAULT_MEMORY_TARGET_BYTES,'budgetLimited':!0x1,'skippedSamples':0x0,'skippedCells':0x0},_0x366cc1=this[_0x3629d9(0x2db)]?.[_0x3629d9(0x3ec)]??{'uniformUpdateCount':0x0,'resourceRebuildCount':0x0};return{'logicalBrickCount':_0xeb4801[_0x3629d9(0x2fa)],'residentBrickCount':this['atlas']?.[_0x3629d9(0x199)]??0x0,'pendingBrickCount':0x0,'atlasCapacity':_0xeb4801[_0x3629d9(0x2b0)],'gpuBytes':_0xeb4801[_0x3629d9(0x246)],'memoryLimitBytes':_0xeb4801[_0x3629d9(0x2fc)],'budgetLimited':_0xeb4801['budgetLimited'],'frameTimeMilliseconds':this[_0x3629d9(0x197)],'submittedFrameCount':this[_0x3629d9(0x1b3)],'uploadedBrickCount':this[_0x3629d9(0x31e)],'uploadBatchCount':this[_0x3629d9(0x352)],'maximumUploadBatchBytes':this[_0x3629d9(0x28a)],'sliceUniformUpdateCount':_0x366cc1[_0x3629d9(0x166)],'sliceResourceRebuildCount':_0x366cc1[_0x3629d9(0x3d4)],'skippedSamples':_0xeb4801['skippedSamples'],'skippedCells':_0xeb4801[_0x3629d9(0x3db)]};}[_0x5d7726(0x349)](_0x3c4fd3){const _0x54a18f=_0x5d7726;this[_0x54a18f(0x2ce)]=_0x3c4fd3;}async[_0x5d7726(0x3fb)](_0x231638){const _0x1b6051=_0x5d7726;if(this[_0x1b6051(0x28b)]===_0x1b6051(0x31d))throw Error(_0x1b6051(0x1ce));let _0x8e6232=++this[_0x1b6051(0x2b4)];this[_0x1b6051(0x108)](),this[_0x1b6051(0x191)]=_0x231638,this[_0x1b6051(0x28b)]='initializing';let _0x482ffa=navigator[_0x1b6051(0x1ab)];if(!_0x482ffa)throw this['lifecycleState']=_0x1b6051(0x20f),Error(_0x1b6051(0x3fd));let _0x141f31=await _0x482ffa[_0x1b6051(0x35b)]({'powerPreference':this[_0x1b6051(0x24b)][_0x1b6051(0x1aa)]??_0x1b6051(0x3ff)});if(_0x8e6232!==this[_0x1b6051(0x2b4)])return;if(!_0x141f31)throw this[_0x1b6051(0x28b)]=_0x1b6051(0x20f),Error(_0x1b6051(0x1eb));let _0x56a2e3=await _0x141f31[_0x1b6051(0x16d)]();if(_0x8e6232!==this[_0x1b6051(0x2b4)]){_0x56a2e3[_0x1b6051(0x416)]();return;}let _0x1c5d2e=_0x231638[_0x1b6051(0x363)]('webgpu');if(!_0x1c5d2e)throw _0x56a2e3['destroy'](),this[_0x1b6051(0x28b)]=_0x1b6051(0x20f),Error(_0x1b6051(0x1ae));let _0x2ff445=_0x482ffa[_0x1b6051(0x37a)]();_0x1c5d2e[_0x1b6051(0x24d)]({'device':_0x56a2e3,'format':_0x2ff445,'alphaMode':_0x1b6051(0x412),'usage':GPUTextureUsage[_0x1b6051(0x2da)]|GPUTextureUsage['COPY_SRC']}),this[_0x1b6051(0x315)]=_0x141f31,this[_0x1b6051(0x23d)]=_0x56a2e3,this[_0x1b6051(0x17c)]=_0x1c5d2e,this['format']=_0x2ff445,_0x56a2e3[_0x1b6051(0x3df)]('validation'),this[_0x1b6051(0x369)]();let _0x3752df=await _0x56a2e3['popErrorScope']();if(_0x3752df)throw this['releaseGpuResources'](),this[_0x1b6051(0x28b)]=_0x1b6051(0x20f),Error(_0x1b6051(0x229)+_0x3752df['message']+_0x1b6051(0x1b5));if(this[_0x1b6051(0x140)](_0x56a2e3),this[_0x1b6051(0x28b)]='ready',this[_0x1b6051(0x25f)]){this[_0x1b6051(0x2e4)](this[_0x1b6051(0x25f)]);let _0x19c0b8=Array[_0x1b6051(0x3c0)](this[_0x1b6051(0x2d5)][_0x1b6051(0x224)]());await Promise[_0x1b6051(0x1a2)](_0x19c0b8[_0x1b6051(0x3ef)](([_0x7ffbce,_0x40b4af])=>this['enqueueBrickUpload']({'logicalIndex':_0x7ffbce,'values':_0x40b4af},!0x1)));}this[_0x1b6051(0x3e0)](),this[_0x1b6051(0x226)]()[_0x1b6051(0x144)](this[_0x1b6051(0x414)]),this[_0x1b6051(0x1b9)]()['replace'](this['cachedSlices']),this[_0x1b6051(0x2ab)]()['replace'](this['cachedAxes']),this[_0x1b6051(0xfe)](_0x231638['width']||_0x231638['clientWidth']||0x1,_0x231638[_0x1b6051(0x38f)]||_0x231638[_0x1b6051(0x2c0)]||0x1);}['setSource'](_0x240984){const _0x3bd018=_0x5d7726;this['uploadGeneration']+=0x1,this[_0x3bd018(0x31f)](new DOMException(_0x3bd018(0x307),_0x3bd018(0x38d))),this[_0x3bd018(0x25f)]={..._0x240984},this[_0x3bd018(0x2d5)][_0x3bd018(0x1ad)](),this[_0x3bd018(0x31e)]=0x0,this[_0x3bd018(0x352)]=0x0,this['maximumUploadBatchBytes']=0x0,this[_0x3bd018(0x28b)]===_0x3bd018(0x1c0)&&this['configureSourceResources'](_0x240984);}[_0x5d7726(0x15a)](_0x22ff42){const _0x3809d8=_0x5d7726;return this[_0x3809d8(0x25e)](_0x22ff42,!0x0);}[_0x5d7726(0x20e)](_0x542021){const _0xeafb99=_0x5d7726;this[_0xeafb99(0x30e)]()[_0xeafb99(0x3d3)](_0x542021,this[_0xeafb99(0x227)]);for(let _0x5ee483 of _0x542021){let _0x37e427=this[_0xeafb99(0x2d5)][_0xeafb99(0x248)](_0x5ee483);_0x37e427&&(this[_0xeafb99(0x2d5)][_0xeafb99(0x370)](_0x5ee483),this[_0xeafb99(0x2d5)][_0xeafb99(0x1f8)](_0x5ee483,_0x37e427));}}[_0x5d7726(0x2d9)](_0x211dfc){const _0x1f4d39=_0x5d7726;validateMatrix(_0x211dfc[_0x1f4d39(0x10b)],_0x1f4d39(0x10b)),validateMatrix(_0x211dfc[_0x1f4d39(0x1b8)],_0x1f4d39(0x1b8)),this['camera']={'viewProjection':[..._0x211dfc[_0x1f4d39(0x10b)]],'inverseViewProjection':[..._0x211dfc[_0x1f4d39(0x1b8)]],'cameraPosition':[..._0x211dfc['cameraPosition']]};}['setProfiles'](_0x543de6){const _0x9dfac6=_0x5d7726;this[_0x9dfac6(0x414)]=cloneMeshes(_0x543de6),this[_0x9dfac6(0x226)]()[_0x9dfac6(0x144)](_0x543de6);}[_0x5d7726(0x377)](_0x302d39){const _0x522aed=_0x5d7726;this[_0x522aed(0x2f2)]=_0x302d39[_0x522aed(0x3ef)](_0x21ac0e=>({..._0x21ac0e})),this['getSliceResources']()[_0x522aed(0x144)](_0x302d39);}[_0x5d7726(0x29d)](_0x38bfd7){const _0x32f869=_0x5d7726;this[_0x32f869(0x3bc)]=cloneMeshes(_0x38bfd7),this[_0x32f869(0x2ab)]()[_0x32f869(0x144)](_0x38bfd7);}[_0x5d7726(0x2a3)](_0x9a1fdd,_0x3c2841,_0x14eefc){const _0x158cf3=_0x5d7726;this[_0x158cf3(0x35d)]=_0x9a1fdd[_0x158cf3(0x3ef)](_0x4f0abc=>({'value':_0x4f0abc['value'],'color':[..._0x4f0abc[_0x158cf3(0x3a2)]]})),this['opacityStops']=_0x3c2841[_0x158cf3(0x3ef)](_0x2223dd=>({..._0x2223dd})),_0x14eefc&&(this['colorMode']=_0x14eefc),this[_0x158cf3(0x28b)]===_0x158cf3(0x1c0)&&this['updateTransferResources']();}['update'](_0xed63eb){const _0x983840=_0x5d7726;_0xed63eb[_0x983840(0x1fb)]&&(validateMatrix(_0xed63eb[_0x983840(0x1fb)],_0x983840(0x1fb)),this[_0x983840(0x1fb)]=[..._0xed63eb[_0x983840(0x1fb)]]),_0xed63eb[_0x983840(0x174)]&&(validateMatrix(_0xed63eb[_0x983840(0x174)],'inverseModelMatrix'),this[_0x983840(0x174)]=[..._0xed63eb[_0x983840(0x174)]]),_0xed63eb[_0x983840(0x278)]&&(this[_0x983840(0x278)]=[..._0xed63eb['clipMinimum']]),_0xed63eb[_0x983840(0x3cf)]&&(this[_0x983840(0x3cf)]=[..._0xed63eb[_0x983840(0x3cf)]]),_0xed63eb[_0x983840(0x1d9)]&&(this[_0x983840(0x1d9)]=_0xed63eb[_0x983840(0x1d9)]),_0xed63eb['opacity']!==void 0x0&&(this[_0x983840(0x36a)]=validateNonNegative(_0xed63eb[_0x983840(0x36a)],_0x983840(0x36a))),_0xed63eb[_0x983840(0x201)]!==void 0x0&&(this[_0x983840(0x201)]=validateNonNegative(_0xed63eb[_0x983840(0x201)],'densityScale')),_0xed63eb[_0x983840(0x386)]!==void 0x0&&(this[_0x983840(0x386)]=validatePositive(_0xed63eb[_0x983840(0x386)],'stepLength')),_0xed63eb[_0x983840(0x22e)]!==void 0x0&&(this[_0x983840(0x22e)]=validateNonNegative(_0xed63eb[_0x983840(0x22e)],'volumeDimFactor')),_0xed63eb[_0x983840(0x13e)]&&(this[_0x983840(0x13e)]=_0xed63eb[_0x983840(0x13e)]),_0xed63eb[_0x983840(0x11b)]!==void 0x0&&(this[_0x983840(0x11b)]=_0xed63eb[_0x983840(0x11b)]?{..._0xed63eb[_0x983840(0x11b)]}:null);}[_0x5d7726(0xfe)](_0x167369,_0x5e4c4e){const _0x33e7d5=_0x5d7726;if(!Number[_0x33e7d5(0x291)](_0x167369)||!Number[_0x33e7d5(0x291)](_0x5e4c4e)||_0x167369<=0x0||_0x5e4c4e<=0x0)throw Error(_0x33e7d5(0x264));let _0x9e2327=this[_0x33e7d5(0x354)]();_0x9e2327[_0x33e7d5(0x293)]=_0x167369,_0x9e2327[_0x33e7d5(0x38f)]=_0x5e4c4e,this[_0x33e7d5(0x293)]=_0x167369,this['height']=_0x5e4c4e,this[_0x33e7d5(0x1cd)]()[_0x33e7d5(0xfe)](_0x167369,_0x5e4c4e),this[_0x33e7d5(0x3aa)]();}[_0x5d7726(0x27d)](){const _0x328a2e=_0x5d7726;if(this['lifecycleState']!=='ready'||!this[_0x328a2e(0x25f)]||this[_0x328a2e(0x293)]<=0x0||this[_0x328a2e(0x38f)]<=0x0||this[_0x328a2e(0x3ea)])return!0x1;let _0x34264d=performance[_0x328a2e(0x30a)]();this['frameIndex']+=0x1,this['writeParams']();let _0x4fe0fa=this[_0x328a2e(0x3a4)](),_0x567775=_0x4fe0fa[_0x328a2e(0x2f8)]({'label':_0x328a2e(0x33f)}),_0x1d76f7=this[_0x328a2e(0x363)]()[_0x328a2e(0x334)]()[_0x328a2e(0x15f)]();return this[_0x328a2e(0x22d)](_0x567775,_0x1d76f7),this[_0x328a2e(0x2a5)](_0x567775,_0x1d76f7),this[_0x328a2e(0x10c)](_0x567775,_0x1d76f7),_0x4fe0fa['queue'][_0x328a2e(0x2e9)]([_0x567775[_0x328a2e(0x366)]()]),this['frameInFlight']=!0x0,this[_0x328a2e(0x1b3)]+=0x1,this[_0x328a2e(0x197)]=Math[_0x328a2e(0x2e5)](0.000001,performance['now']()-_0x34264d),_0x4fe0fa[_0x328a2e(0x3b3)]['onSubmittedWorkDone']()[_0x328a2e(0x249)](()=>{const _0x388f5e=_0x328a2e;this[_0x388f5e(0x23d)]!==_0x4fe0fa||this[_0x388f5e(0x28b)]!==_0x388f5e(0x1c0)||(this[_0x388f5e(0x3ea)]=!0x1,this[_0x388f5e(0x2ce)]?.());})[_0x328a2e(0x3c3)](()=>{const _0x33ffb8=_0x328a2e;this[_0x33ffb8(0x23d)]===_0x4fe0fa&&(this[_0x33ffb8(0x3ea)]=!0x1);}),!0x0;}async[_0x5d7726(0xf0)](){const _0x1d99db=_0x5d7726;if(this[_0x1d99db(0x28b)]!==_0x1d99db(0x1c0)||!this[_0x1d99db(0x25f)]||this[_0x1d99db(0x293)]<=0x0||this['height']<=0x0)throw Error(_0x1d99db(0x1db));let _0x4b97be=this[_0x1d99db(0x3a4)](),_0xcfbdcc=this['width']*0x4,_0xf87a24=Math[_0x1d99db(0x1a9)](_0xcfbdcc/0x100)*0x100,_0x343e8a=_0x4b97be[_0x1d99db(0x387)]({'label':_0x1d99db(0x3c9),'size':_0xf87a24*this[_0x1d99db(0x38f)],'usage':GPUBufferUsage[_0x1d99db(0x1ef)]|GPUBufferUsage[_0x1d99db(0x17a)]});_0x4b97be[_0x1d99db(0x3df)](_0x1d99db(0x2f5)),this['frameIndex']+=0x1,this[_0x1d99db(0x268)]();let _0x33f71c=_0x4b97be[_0x1d99db(0x2f8)]({'label':_0x1d99db(0x1e0)}),_0x477eca=this['getContext']()[_0x1d99db(0x334)](),_0x2f9909=_0x477eca[_0x1d99db(0x15f)]();this[_0x1d99db(0x22d)](_0x33f71c,_0x2f9909),this[_0x1d99db(0x2a5)](_0x33f71c,_0x2f9909),this[_0x1d99db(0x10c)](_0x33f71c,_0x2f9909),_0x33f71c['copyTextureToBuffer']({'texture':_0x477eca},{'buffer':_0x343e8a,'bytesPerRow':_0xf87a24,'rowsPerImage':this[_0x1d99db(0x38f)]},[this[_0x1d99db(0x293)],this['height']]),_0x4b97be[_0x1d99db(0x3b3)][_0x1d99db(0x2e9)]([_0x33f71c[_0x1d99db(0x366)]()]);let _0xdab275=await _0x4b97be[_0x1d99db(0x2ad)]();if(_0xdab275)throw _0x343e8a[_0x1d99db(0x416)](),Error(_0x1d99db(0x156)+_0xdab275[_0x1d99db(0x12b)]+'.\x20WebGPU\x20体积帧读取失败。');await _0x343e8a[_0x1d99db(0x2c4)](GPUMapMode[_0x1d99db(0x1af)]);let _0x321f20=new Uint8Array(_0x343e8a['getMappedRange']()),_0x578dae=new Uint8Array(_0xcfbdcc*this[_0x1d99db(0x38f)]),_0x161e45=this[_0x1d99db(0x279)]()===_0x1d99db(0x22c);for(let _0x1e4e3a=0x0;_0x1e4e3a<this[_0x1d99db(0x38f)];_0x1e4e3a+=0x1){let _0x266532=_0x321f20[_0x1d99db(0x21b)](_0x1e4e3a*_0xf87a24,_0x1e4e3a*_0xf87a24+_0xcfbdcc),_0xa94fc6=_0x1e4e3a*_0xcfbdcc;if(!_0x161e45){_0x578dae[_0x1d99db(0x1f8)](_0x266532,_0xa94fc6);continue;}for(let _0x542ae6=0x0;_0x542ae6<this[_0x1d99db(0x293)];_0x542ae6+=0x1){let _0x4c23c6=_0x542ae6*0x4,_0x557257=_0xa94fc6+_0x4c23c6;_0x578dae[_0x557257]=_0x266532[_0x4c23c6+0x2],_0x578dae[_0x557257+0x1]=_0x266532[_0x4c23c6+0x1],_0x578dae[_0x557257+0x2]=_0x266532[_0x4c23c6],_0x578dae[_0x557257+0x3]=_0x266532[_0x4c23c6+0x3];}}return _0x343e8a['unmap'](),_0x343e8a['destroy'](),this[_0x1d99db(0x1b3)]+=0x1,{'width':this[_0x1d99db(0x293)],'height':this[_0x1d99db(0x38f)],'pixels':_0x578dae};}[_0x5d7726(0x416)](){const _0x166da9=_0x5d7726;this[_0x166da9(0x28b)]!==_0x166da9(0x31d)&&(++this[_0x166da9(0x2b4)],this[_0x166da9(0x108)](),this[_0x166da9(0x191)]=null,this[_0x166da9(0x25f)]=null,this[_0x166da9(0x2ce)]=null,this['lifecycleState']='destroyed');}[_0x5d7726(0x369)](){const _0x508df9=_0x5d7726;let _0x1f024a=this['getDevice']();this[_0x508df9(0x12f)]=_0x1f024a[_0x508df9(0x387)]({'label':_0x508df9(0x14c),'size':0x190,'usage':GPUBufferUsage[_0x508df9(0x1bb)]|GPUBufferUsage[_0x508df9(0x1ef)]}),this[_0x508df9(0x411)]=_0x1f024a['createBuffer']({'label':_0x508df9(0x2ee),'size':0x60,'usage':GPUBufferUsage['UNIFORM']|GPUBufferUsage['COPY_DST']}),this['geometryBindGroupLayout']=_0x1f024a[_0x508df9(0x296)]({'label':'volume\x20geometry\x20bind\x20group\x20layout','entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x508df9(0x393)]|GPUShaderStage[_0x508df9(0x378)],'buffer':{'type':'uniform'}}]}),this[_0x508df9(0x1a0)]=_0x1f024a[_0x508df9(0x296)]({'label':'volume\x20scene\x20bind\x20group\x20layout','entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x508df9(0x393)]|GPUShaderStage[_0x508df9(0x378)],'buffer':{'type':_0x508df9(0x3f6)}},{'binding':0x1,'visibility':GPUShaderStage[_0x508df9(0x378)],'texture':{'sampleType':_0x508df9(0x15e)}}]}),this[_0x508df9(0x37d)]=_0x1f024a['createBindGroupLayout']({'label':_0x508df9(0x23c),'entries':[...Array['from']({'length':0x8},(_0xa24ec9,_0x57f2fd)=>({'binding':_0x57f2fd,'visibility':GPUShaderStage[_0x508df9(0x378)],'texture':{'sampleType':'unfilterable-float','viewDimension':'3d'}})),{'binding':0x8,'visibility':GPUShaderStage[_0x508df9(0x378)],'buffer':{'type':_0x508df9(0x38c)}},{'binding':0x9,'visibility':GPUShaderStage[_0x508df9(0x378)],'buffer':{'type':_0x508df9(0x3f6)}}]}),this[_0x508df9(0x200)]=_0x1f024a[_0x508df9(0x296)]({'label':'volume\x20transfer\x20bind\x20group\x20layout','entries':[0x0,0x1,0x2,0x3][_0x508df9(0x3ef)](_0x5be496=>({'binding':_0x5be496,'visibility':GPUShaderStage[_0x508df9(0x378)],'buffer':{'type':_0x508df9(0x38c)}}))}),this[_0x508df9(0x21e)]=_0x1f024a['createBindGroupLayout']({'label':_0x508df9(0x1d5),'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x508df9(0x393)]|GPUShaderStage['FRAGMENT'],'buffer':{'type':'uniform'}}]}),this[_0x508df9(0x23e)]=new WebgpuSceneAttachments(_0x1f024a),this[_0x508df9(0x342)]=new WebgpuTransferResources(_0x1f024a),this[_0x508df9(0x113)]=new WebgpuSceneMeshResources(_0x1f024a),this[_0x508df9(0x2db)]=new WebgpuSliceResources(_0x1f024a,this['getSliceBindGroupLayout']()),this[_0x508df9(0x2d7)]=new WebgpuSceneMeshResources(_0x1f024a),this['createPipelines']();}['createPipelines'](){const _0xd5cb29=_0x5d7726;let _0x21198c=this[_0xd5cb29(0x3a4)](),_0x52bf86=this[_0xd5cb29(0x279)](),_0x1456dc=this[_0xd5cb29(0x40b)](),_0xfc2b79=this[_0xd5cb29(0x211)](),_0x5cf509=_0x21198c[_0xd5cb29(0x101)]({'label':_0xd5cb29(0x294),'code':sceneMesh_default}),_0x27745f={'module':_0x5cf509,'entryPoint':'vertexMain','buffers':[{'arrayStride':0x1c,'attributes':[{'shaderLocation':0x0,'offset':0x0,'format':_0xd5cb29(0x395)},{'shaderLocation':0x1,'offset':0xc,'format':_0xd5cb29(0x232)}]}]},_0x644072={'module':_0x5cf509,'entryPoint':_0xd5cb29(0x301),'targets':[{'format':_0x52bf86,'blend':premultipliedBlend()}]},_0x145ef5=(_0x3c7fc7,_0x3e5000)=>_0x21198c[_0xd5cb29(0x183)]({'layout':_0x21198c[_0xd5cb29(0xe9)]({'bindGroupLayouts':[_0x1456dc]}),'vertex':_0x27745f,'fragment':_0x644072,'primitive':{'topology':_0x3c7fc7},'depthStencil':_0x3e5000?{'format':_0xd5cb29(0x359),'depthWriteEnabled':!0x0,'depthCompare':_0xd5cb29(0x22a)}:void 0x0});this[_0xd5cb29(0x3d6)]=_0x145ef5('triangle-list',!0x0),this[_0xd5cb29(0x2a8)]=_0x145ef5(_0xd5cb29(0x389),!0x0),this['overlayTrianglePipeline']=_0x145ef5(_0xd5cb29(0x1f3),!0x1),this[_0xd5cb29(0x2e8)]=_0x145ef5('line-list',!0x1);let _0x1de317=_0x21198c[_0xd5cb29(0x101)]({'label':_0xd5cb29(0x100),'code':volumeRaymarch_default});this[_0xd5cb29(0x2c3)]=_0x21198c[_0xd5cb29(0x183)]({'layout':_0x21198c[_0xd5cb29(0xe9)]({'bindGroupLayouts':[_0xfc2b79,this[_0xd5cb29(0x187)](),this[_0xd5cb29(0x3c5)]()]}),'vertex':{'module':_0x1de317,'entryPoint':_0xd5cb29(0x400)},'fragment':{'module':_0x1de317,'entryPoint':'fragmentMain','targets':[{'format':_0x52bf86,'blend':premultipliedBlend()}]},'primitive':{'topology':_0xd5cb29(0x1f3)}});let _0x3a9a0c=_0x21198c[_0xd5cb29(0x101)]({'label':_0xd5cb29(0x16b),'code':volumeSlice_default}),_0x54ceeb=_0xc6045b=>_0x21198c[_0xd5cb29(0x183)]({'layout':_0x21198c[_0xd5cb29(0xe9)]({'bindGroupLayouts':[_0x1456dc,this['getVolumeBindGroupLayout'](),this[_0xd5cb29(0x3c5)](),this[_0xd5cb29(0x1a8)]()]}),'vertex':{'module':_0x3a9a0c,'entryPoint':_0xd5cb29(0x400)},'fragment':{'module':_0x3a9a0c,'entryPoint':_0xd5cb29(0x301),'targets':[{'format':_0x52bf86,'blend':premultipliedBlend()}]},'primitive':{'topology':'triangle-list'},'depthStencil':_0xc6045b?{'format':'depth32float','depthWriteEnabled':!0x0,'depthCompare':'less'}:void 0x0});this['sceneSlicePipeline']=_0x54ceeb(!0x0),this['overlaySlicePipeline']=_0x54ceeb(!0x1);}['configureSourceResources'](_0x434b8b){const _0x2af217=_0x5d7726;this['atlas']?.[_0x2af217(0x416)](),this[_0x2af217(0x358)]=new WebgpuBrickAtlas(this[_0x2af217(0x3a4)](),this[_0x2af217(0x24b)][_0x2af217(0x162)]??DEFAULT_MEMORY_TARGET_BYTES,this[_0x2af217(0x24b)][_0x2af217(0x18a)]??this['options'][_0x2af217(0x162)]??DEFAULT_MEMORY_TARGET_BYTES),this[_0x2af217(0x358)][_0x2af217(0x24d)](_0x434b8b),this['writeVolumeParams'](),this[_0x2af217(0x122)]=this[_0x2af217(0x358)][_0x2af217(0x13c)](this['getVolumeBindGroupLayout'](),this[_0x2af217(0x3b7)]());}[_0x5d7726(0x25e)](_0x164c8c,_0x5d22a6){return new Promise((_0x324dd0,_0x5d1044)=>{const _0x34b78b=_0x2fcb;this['pendingBrickUploads'][_0x34b78b(0x10e)]({'upload':_0x164c8c,'generation':this['uploadGeneration'],'cacheOnSuccess':_0x5d22a6,'resolve':_0x324dd0,'reject':_0x5d1044}),this[_0x34b78b(0x1f2)]();});}[_0x5d7726(0x1f2)](){const _0x549a24=_0x5d7726;this['uploadPump']||=Promise[_0x549a24(0x2c1)]()['then'](()=>this['processBrickUploads']())[_0x549a24(0x262)](()=>{const _0xfe0bfa=_0x549a24;this[_0xfe0bfa(0x2fb)]=null,this[_0xfe0bfa(0x3e2)]['length']>0x0&&this[_0xfe0bfa(0x28b)]===_0xfe0bfa(0x1c0)&&this[_0xfe0bfa(0x1f2)]();});}async['processBrickUploads'](){const _0x21fc8c=_0x5d7726;for(;this[_0x21fc8c(0x3e2)]['length']>0x0&&this[_0x21fc8c(0x28b)]==='ready'&&this[_0x21fc8c(0x25f)];){let _0x4c6b30=this[_0x21fc8c(0x3a4)](),_0x27dba8=estimateBrickUploadBytes(this[_0x21fc8c(0x25f)]),_0x485228=Math[_0x21fc8c(0x2dd)](0x4000000,Math[_0x21fc8c(0x2e5)](_0x27dba8,Math[_0x21fc8c(0x143)](_0x4c6b30[_0x21fc8c(0x3b9)][_0x21fc8c(0x32d)]/0x4))),_0x1e97df=[],_0x35a39c=0x0;for(;this[_0x21fc8c(0x3e2)]['length']>0x0&&_0x1e97df[_0x21fc8c(0x1bc)]<0x10;){let _0x2fce3d=this['pendingBrickUploads'][0x0];if(_0x1e97df[_0x21fc8c(0x1bc)]>0x0&&_0x35a39c+_0x27dba8>_0x485228)break;if(this['pendingBrickUploads'][_0x21fc8c(0x376)](),_0x2fce3d['generation']!==this[_0x21fc8c(0x3c2)]){_0x2fce3d['reject'](new DOMException(_0x21fc8c(0x344),_0x21fc8c(0x38d)));continue;}_0x1e97df['push'](_0x2fce3d),_0x35a39c+=_0x27dba8;}if(_0x1e97df['length']!==0x0)try{let _0x1d0e59=[],_0x321edf=0x0;for(let _0x379887 of _0x1e97df){let _0x3bd564=this[_0x21fc8c(0x30e)]()[_0x21fc8c(0x362)](_0x379887[_0x21fc8c(0x272)],this[_0x21fc8c(0x227)]),_0x3eae9f=Math[_0x21fc8c(0x1a9)](_0x321edf/0x100)*0x100;_0x1d0e59[_0x21fc8c(0x10e)]({'item':_0x379887,'prepared':_0x3bd564,'bufferOffset':_0x3eae9f}),_0x321edf=_0x3eae9f+_0x3bd564[_0x21fc8c(0xf8)][_0x21fc8c(0x20b)];}let _0x9f9240=this[_0x21fc8c(0x36d)](_0x321edf);await _0x9f9240[_0x21fc8c(0x2c4)](GPUMapMode[_0x21fc8c(0x215)]);let _0x36f344=new Uint8Array(_0x9f9240[_0x21fc8c(0x320)]());for(let _0x4c7e2a of _0x1d0e59){let _0x554e37=_0x4c7e2a['prepared'][_0x21fc8c(0xf8)];_0x36f344[_0x21fc8c(0x1f8)](new Uint8Array(_0x554e37[_0x21fc8c(0x39c)],_0x554e37['byteOffset'],_0x554e37[_0x21fc8c(0x20b)]),_0x4c7e2a[_0x21fc8c(0x20c)]);}_0x9f9240[_0x21fc8c(0x212)]();let _0x16cb1e=_0x4c6b30['createCommandEncoder']({'label':_0x21fc8c(0x390)});for(let _0x1a74c3 of _0x1d0e59)this[_0x21fc8c(0x30e)]()['encodePreparedBrickUpload'](_0x16cb1e,_0x9f9240,_0x1a74c3[_0x21fc8c(0x20c)],_0x1a74c3[_0x21fc8c(0x168)]);_0x4c6b30[_0x21fc8c(0x3b3)]['submit']([_0x16cb1e[_0x21fc8c(0x366)]()]),await _0x4c6b30[_0x21fc8c(0x3b3)][_0x21fc8c(0x205)](),await new Promise(_0x2cfb83=>setTimeout(_0x2cfb83,0x0)),this[_0x21fc8c(0x31e)]+=_0x1e97df[_0x21fc8c(0x1bc)],this[_0x21fc8c(0x352)]+=0x1,this[_0x21fc8c(0x28a)]=Math[_0x21fc8c(0x2e5)](this[_0x21fc8c(0x28a)],_0x35a39c);for(let _0x2cded9 of _0x1e97df){if(_0x2cded9[_0x21fc8c(0x121)]!==this[_0x21fc8c(0x3c2)]){_0x2cded9[_0x21fc8c(0x241)](new DOMException(_0x21fc8c(0x344),_0x21fc8c(0x38d)));continue;}_0x2cded9[_0x21fc8c(0x40e)]&&this['cacheBrickUpload'](_0x2cded9[_0x21fc8c(0x272)]),_0x2cded9[_0x21fc8c(0x2c1)]();}}catch(_0x492c36){for(let _0x54eb33 of _0x1e97df)_0x54eb33[_0x21fc8c(0x241)](_0x492c36);}}}[_0x5d7726(0x36d)](_0x2f2616){const _0x4a6885=_0x5d7726;let _0x330114=Math['max'](0x100,Math[_0x4a6885(0x1a9)](_0x2f2616/0x100)*0x100);return this[_0x4a6885(0x1b7)]&&this[_0x4a6885(0x202)]>=_0x330114?this[_0x4a6885(0x1b7)]:(this[_0x4a6885(0x1b7)]?.['destroy'](),this[_0x4a6885(0x1b7)]=this[_0x4a6885(0x3a4)]()[_0x4a6885(0x387)]({'label':_0x4a6885(0x401),'size':_0x330114,'usage':GPUBufferUsage[_0x4a6885(0x1ea)]|GPUBufferUsage[_0x4a6885(0x29f)]}),this[_0x4a6885(0x202)]=_0x330114,this[_0x4a6885(0x1b7)]);}['cacheBrickUpload'](_0x37b838){const _0x72ad8f=_0x5d7726;for(this['cachedBricks'][_0x72ad8f(0x370)](_0x37b838[_0x72ad8f(0x351)]),this[_0x72ad8f(0x2d5)][_0x72ad8f(0x1f8)](_0x37b838[_0x72ad8f(0x351)],new Float32Array(_0x37b838['values']));this[_0x72ad8f(0x2d5)][_0x72ad8f(0x261)]>this[_0x72ad8f(0x3ec)][_0x72ad8f(0x2b0)];){let _0x4351c4=this[_0x72ad8f(0x2d5)][_0x72ad8f(0x336)]()[_0x72ad8f(0x3f3)]()['value'];if(_0x4351c4===void 0x0)break;this['cachedBricks']['delete'](_0x4351c4);}}[_0x5d7726(0x31f)](_0x3f4093){const _0x1fd516=_0x5d7726;for(let _0x1f3e88 of this[_0x1fd516(0x3e2)]['splice'](0x0))_0x1f3e88['reject'](_0x3f4093);}['updateTransferResources'](){const _0x313b95=_0x5d7726;let _0x1aa0a3=this['getTransferResources']();_0x1aa0a3[_0x313b95(0x19e)](this['colorStops'],this[_0x313b95(0x153)]),this[_0x313b95(0xec)]=_0x1aa0a3[_0x313b95(0x13c)](this['getTransferBindGroupLayout']());}[_0x5d7726(0x3aa)](){const _0x18bf5e=_0x5d7726;!this['sceneParamsBuffer']||!this[_0x18bf5e(0x23e)]||!this[_0x18bf5e(0x3ae)]||!this[_0x18bf5e(0x1a0)]||(this[_0x18bf5e(0x337)]=this[_0x18bf5e(0x3a4)]()[_0x18bf5e(0x13c)]({'label':_0x18bf5e(0x1d2),'layout':this[_0x18bf5e(0x3ae)],'entries':[{'binding':0x0,'resource':{'buffer':this['sceneParamsBuffer']}}]}),this[_0x18bf5e(0x1d7)]=this[_0x18bf5e(0x3a4)]()[_0x18bf5e(0x13c)]({'label':'volume\x20scene\x20bind\x20group','layout':this[_0x18bf5e(0x1a0)],'entries':[{'binding':0x0,'resource':{'buffer':this[_0x18bf5e(0x12f)]}},{'binding':0x1,'resource':this['attachments'][_0x18bf5e(0x24e)]}]}));}[_0x5d7726(0x268)](){const _0x51131c=_0x5d7726;let _0x28e453=new Float32Array(0x64);_0x28e453[_0x51131c(0x1f8)](this[_0x51131c(0x331)]['viewProjection'],0x0),_0x28e453[_0x51131c(0x1f8)](this[_0x51131c(0x331)][_0x51131c(0x1b8)],0x10),_0x28e453[_0x51131c(0x1f8)](this[_0x51131c(0x1fb)],0x20),_0x28e453[_0x51131c(0x1f8)](this[_0x51131c(0x174)],0x30),_0x28e453[_0x51131c(0x1f8)]([...this[_0x51131c(0x331)][_0x51131c(0x19c)],0x1],0x40),_0x28e453[_0x51131c(0x1f8)]([this[_0x51131c(0x293)],this[_0x51131c(0x38f)],0x1/this['width'],0x1/this['height']],0x44),_0x28e453[_0x51131c(0x1f8)]([...this[_0x51131c(0x278)],0x0],0x48),_0x28e453[_0x51131c(0x1f8)]([...this[_0x51131c(0x3cf)],0x0],0x4c),_0x28e453['set']([+(this[_0x51131c(0x1d9)]===_0x51131c(0x222)),this[_0x51131c(0x36a)],this['densityScale'],this[_0x51131c(0x386)]],0x50),_0x28e453[_0x51131c(0x1f8)]([this[_0x51131c(0x35d)][_0x51131c(0x1bc)],this[_0x51131c(0x153)][_0x51131c(0x1bc)],this[_0x51131c(0x22e)],+(this[_0x51131c(0x13e)]==='step')],0x54);let _0x3c06c0=this[_0x51131c(0x11b)];_0x3c06c0&&(_0x28e453['set']([0x1,..._0x3c06c0[_0x51131c(0x136)]],0x58),_0x28e453[_0x51131c(0x1f8)]([_0x3c06c0[_0x51131c(0x2a6)],_0x3c06c0[_0x51131c(0x148)],..._0x3c06c0[_0x51131c(0x26c)]],0x5c),_0x28e453[_0x51131c(0x1f8)]([..._0x3c06c0[_0x51131c(0x214)],..._0x3c06c0[_0x51131c(0x117)]],0x60)),this[_0x51131c(0x3a4)]()[_0x51131c(0x3b3)]['writeBuffer'](this[_0x51131c(0x361)](),0x0,_0x28e453);}[_0x5d7726(0x1d8)](){const _0x9208bf=_0x5d7726;let _0x8c86a2=this['metadata'],_0x138dfa=this[_0x9208bf(0x358)];if(!_0x8c86a2||!_0x138dfa)return;let _0xa4a6e6=_0x138dfa[_0x9208bf(0x209)],_0x19d063=new Uint32Array(0x60/0x4),_0x4b7761=Math[_0x9208bf(0x1a9)](_0x8c86a2[_0x9208bf(0xf1)][_0x9208bf(0x12c)]/_0x8c86a2[_0x9208bf(0x403)]),_0x9f6e33=Math['ceil'](_0x8c86a2[_0x9208bf(0x3b6)]['count']/_0x8c86a2['brickHeight']),_0x1371af=Math[_0x9208bf(0x1a9)](_0x8c86a2[_0x9208bf(0x404)][_0x9208bf(0x12c)]/_0x8c86a2[_0x9208bf(0xf9)]);_0x19d063[_0x9208bf(0x1f8)]([_0x8c86a2[_0x9208bf(0xf1)]['count'],_0x8c86a2[_0x9208bf(0x3b6)][_0x9208bf(0x12c)],_0x8c86a2[_0x9208bf(0x404)][_0x9208bf(0x12c)],0x0],0x0),_0x19d063[_0x9208bf(0x1f8)]([_0x8c86a2[_0x9208bf(0x403)],_0x8c86a2[_0x9208bf(0x1c2)],_0x8c86a2[_0x9208bf(0xf9)],0x1],0x4),_0x19d063['set']([_0x4b7761,_0x9f6e33,_0x1371af,0x0],0x8),_0x19d063[_0x9208bf(0x1f8)]([_0xa4a6e6[_0x9208bf(0x210)],_0xa4a6e6[_0x9208bf(0x1b2)],_0xa4a6e6[_0x9208bf(0x181)],_0xa4a6e6['slotCount']],0xc),_0x19d063['set']([(_0x8c86a2['brickWidth']+0x2)*_0xa4a6e6['slotCountX'],(_0x8c86a2[_0x9208bf(0x1c2)]+0x2)*_0xa4a6e6[_0x9208bf(0x1b2)],(_0x8c86a2[_0x9208bf(0xf9)]+0x2)*_0xa4a6e6[_0x9208bf(0x181)],0x0],0x10),new Float32Array(_0x19d063['buffer'])[_0x9208bf(0x1f8)]([_0x8c86a2['noData']??0x0,_0x8c86a2[_0x9208bf(0x245)]===void 0x0?0x0:0x1,0x0,0x0],0x14),this[_0x9208bf(0x3a4)]()['queue']['writeBuffer'](this[_0x9208bf(0x3b7)](),0x0,_0x19d063);}['encodeScenePass'](_0x128362,_0x1f5fbc){const _0x1e8c0d=_0x5d7726;let _0x9d94a6=_0x128362['beginRenderPass']({'label':_0x1e8c0d(0x308),'colorAttachments':[{'view':_0x1f5fbc,'clearValue':{'r':0x0,'g':0x0,'b':0x0,'a':0x0},'loadOp':'clear','storeOp':_0x1e8c0d(0x16c)}],'depthStencilAttachment':{'view':this['getAttachments']()[_0x1e8c0d(0x24e)],'depthClearValue':0x1,'depthLoadOp':_0x1e8c0d(0x1ad),'depthStoreOp':_0x1e8c0d(0x16c)}});this['drawMeshes'](_0x9d94a6,_0x1e8c0d(0x312)),this[_0x1e8c0d(0x39f)](_0x9d94a6,_0x1e8c0d(0x312)),_0x9d94a6['end']();}[_0x5d7726(0x2a5)](_0x272baf,_0x17d4a7){const _0x55e546=_0x5d7726;if(!this['volumeBindGroup']||!this['transferBindGroup']||!this['sceneBindGroup']||!this[_0x55e546(0x2c3)])return;let _0x513c6e=_0x272baf['beginRenderPass']({'label':'volume\x20raymarch\x20pass','colorAttachments':[{'view':_0x17d4a7,'loadOp':_0x55e546(0x255),'storeOp':_0x55e546(0x16c)}]});_0x513c6e[_0x55e546(0x35e)](this[_0x55e546(0x2c3)]),_0x513c6e[_0x55e546(0x3a5)](0x0,this[_0x55e546(0x1d7)]),_0x513c6e['setBindGroup'](0x1,this[_0x55e546(0x122)]),_0x513c6e['setBindGroup'](0x2,this['transferBindGroup']),_0x513c6e[_0x55e546(0x406)](0x3),_0x513c6e[_0x55e546(0x105)]();}[_0x5d7726(0x10c)](_0x4290c1,_0x444ac4){const _0x5c71a8=_0x5d7726;let _0x2ff56e=_0x4290c1[_0x5c71a8(0x3f7)]({'label':_0x5c71a8(0x30c),'colorAttachments':[{'view':_0x444ac4,'loadOp':_0x5c71a8(0x255),'storeOp':'store'}]});this[_0x5c71a8(0x163)](_0x2ff56e,_0x5c71a8(0x365)),this[_0x5c71a8(0x39f)](_0x2ff56e,'always-visible'),_0x2ff56e[_0x5c71a8(0x105)]();}[_0x5d7726(0x163)](_0x593520,_0x53fdfc){const _0x4d8114=_0x5d7726;let _0x505924=this[_0x4d8114(0x337)];if(!_0x505924)return;let _0x3c5c10=_0x53fdfc===_0x4d8114(0x312)?this[_0x4d8114(0x3d6)]:this['overlayTrianglePipeline'],_0x249c76=_0x53fdfc==='scene'?this[_0x4d8114(0x2a8)]:this['overlayLinePipeline'];_0x3c5c10&&(_0x593520[_0x4d8114(0x35e)](_0x3c5c10),_0x593520['setBindGroup'](0x0,_0x505924),this[_0x4d8114(0x113)]?.[_0x4d8114(0x406)](_0x593520,_0x4d8114(0x1f3),_0x53fdfc),this['axisResources']?.[_0x4d8114(0x406)](_0x593520,_0x4d8114(0x1f3),_0x53fdfc)),_0x249c76&&(_0x593520[_0x4d8114(0x35e)](_0x249c76),_0x593520[_0x4d8114(0x3a5)](0x0,_0x505924),this[_0x4d8114(0x113)]?.[_0x4d8114(0x406)](_0x593520,_0x4d8114(0x389),_0x53fdfc),this[_0x4d8114(0x2d7)]?.[_0x4d8114(0x406)](_0x593520,_0x4d8114(0x389),_0x53fdfc));}[_0x5d7726(0x39f)](_0x475f9c,_0x1b0557){const _0x47611e=_0x5d7726;let _0x2c1157=_0x1b0557===_0x47611e(0x312)?this['sceneSlicePipeline']:this[_0x47611e(0x3f5)];!_0x2c1157||!this['geometryBindGroup']||!this[_0x47611e(0x122)]||!this[_0x47611e(0xec)]||(_0x475f9c[_0x47611e(0x3a5)](0x0,this[_0x47611e(0x337)]),_0x475f9c[_0x47611e(0x3a5)](0x1,this[_0x47611e(0x122)]),_0x475f9c['setBindGroup'](0x2,this[_0x47611e(0xec)]),this[_0x47611e(0x2db)]?.['draw'](_0x475f9c,_0x2c1157,_0x1b0557));}[_0x5d7726(0x140)](_0x57b765){const _0x148aeb=_0x5d7726;_0x57b765[_0x148aeb(0x356)][_0x148aeb(0x249)](_0x1fc8be=>{const _0x3078b3=_0x148aeb;if(this[_0x3078b3(0x23d)]!==_0x57b765||this['lifecycleState']===_0x3078b3(0x31d))return;this['lifecycleState']=_0x3078b3(0x356),console[_0x3078b3(0x157)]('WebGPU\x20volume\x20device\x20was\x20lost:\x20'+_0x1fc8be[_0x3078b3(0x12b)]+_0x3078b3(0x3a8));let _0xe8306a=this[_0x3078b3(0x191)];this[_0x3078b3(0x108)](),_0xe8306a&&this[_0x3078b3(0x3fb)](_0xe8306a)[_0x3078b3(0x3c3)](_0x3a5465=>{const _0x2c4333=_0x3078b3;console[_0x2c4333(0x157)](_0x2c4333(0x33d),_0x3a5465);});});}[_0x5d7726(0x108)](){const _0x593a86=_0x5d7726;this[_0x593a86(0x3c2)]+=0x1,this['rejectPendingBrickUploads'](new DOMException(_0x593a86(0x3a1),_0x593a86(0x38d))),this[_0x593a86(0x358)]?.['destroy'](),this[_0x593a86(0x342)]?.[_0x593a86(0x416)](),this[_0x593a86(0x113)]?.[_0x593a86(0x416)](),this[_0x593a86(0x2db)]?.[_0x593a86(0x416)](),this[_0x593a86(0x2d7)]?.[_0x593a86(0x416)](),this[_0x593a86(0x23e)]?.[_0x593a86(0x416)](),this[_0x593a86(0x12f)]?.[_0x593a86(0x416)](),this['volumeParamsBuffer']?.[_0x593a86(0x416)](),this[_0x593a86(0x1b7)]?.[_0x593a86(0x416)]();try{this['context']?.[_0x593a86(0x323)]();}catch{}this[_0x593a86(0x23d)]?.[_0x593a86(0x416)](),this[_0x593a86(0x315)]=null,this['device']=null,this[_0x593a86(0x17c)]=null,this[_0x593a86(0x3bf)]=null,this[_0x593a86(0x12f)]=null,this[_0x593a86(0x411)]=null,this[_0x593a86(0x1b7)]=null,this[_0x593a86(0x202)]=0x0,this[_0x593a86(0x3ae)]=null,this['sceneBindGroupLayout']=null,this['volumeBindGroupLayout']=null,this[_0x593a86(0x200)]=null,this[_0x593a86(0x21e)]=null,this['geometryBindGroup']=null,this[_0x593a86(0x1d7)]=null,this[_0x593a86(0x122)]=null,this[_0x593a86(0xec)]=null,this[_0x593a86(0x2c3)]=null,this[_0x593a86(0x3d6)]=null,this[_0x593a86(0x2a8)]=null,this[_0x593a86(0x19d)]=null,this[_0x593a86(0x2e8)]=null,this['sceneSlicePipeline']=null,this['overlaySlicePipeline']=null,this[_0x593a86(0x23e)]=null,this[_0x593a86(0x358)]=null,this[_0x593a86(0x342)]=null,this[_0x593a86(0x113)]=null,this[_0x593a86(0x2db)]=null,this[_0x593a86(0x2d7)]=null,this[_0x593a86(0x3ea)]=!0x1,this['width']=0x0,this[_0x593a86(0x38f)]=0x0;}[_0x5d7726(0x3a4)](){const _0x23db9c=_0x5d7726;if(!this[_0x23db9c(0x23d)])throw Error(_0x23db9c(0x1d0));return this['device'];}[_0x5d7726(0x363)](){const _0x4f34ac=_0x5d7726;if(!this[_0x4f34ac(0x17c)])throw Error(_0x4f34ac(0x21a));return this['context'];}[_0x5d7726(0x279)](){const _0x545c41=_0x5d7726;if(!this[_0x545c41(0x3bf)])throw Error(_0x545c41(0x27c));return this[_0x545c41(0x3bf)];}[_0x5d7726(0x354)](){const _0x152e41=_0x5d7726;if(!this['canvas'])throw Error(_0x152e41(0x147));return this[_0x152e41(0x191)];}[_0x5d7726(0x1cd)](){const _0x3559d3=_0x5d7726;if(!this[_0x3559d3(0x23e)])throw Error('WebGPU\x20scene\x20attachments\x20are\x20unavailable.\x20WebGPU\x20场景附件不可用。');return this[_0x3559d3(0x23e)];}[_0x5d7726(0x30e)](){const _0x4fb151=_0x5d7726;if(!this[_0x4fb151(0x358)])throw Error(_0x4fb151(0x2b1));return this[_0x4fb151(0x358)];}[_0x5d7726(0x124)](){const _0x127f07=_0x5d7726;if(!this[_0x127f07(0x342)])throw Error(_0x127f07(0x1b1));return this['transferResources'];}[_0x5d7726(0x226)](){const _0x54e30d=_0x5d7726;if(!this[_0x54e30d(0x113)])throw Error('WebGPU\x20profile\x20resources\x20are\x20unavailable.\x20WebGPU\x20剖面资源不可用。');return this[_0x54e30d(0x113)];}['getSliceResources'](){const _0x19ebf1=_0x5d7726;if(!this[_0x19ebf1(0x2db)])throw Error('WebGPU\x20slice\x20resources\x20are\x20unavailable.\x20WebGPU\x20切面资源不可用。');return this['sliceResources'];}[_0x5d7726(0x2ab)](){const _0x47646e=_0x5d7726;if(!this[_0x47646e(0x2d7)])throw Error(_0x47646e(0x381));return this[_0x47646e(0x2d7)];}[_0x5d7726(0x211)](){const _0x36f1b0=_0x5d7726;if(!this[_0x36f1b0(0x1a0)])throw Error('WebGPU\x20scene\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20场景绑定布局不可用。');return this[_0x36f1b0(0x1a0)];}[_0x5d7726(0x40b)](){const _0x4f0a44=_0x5d7726;if(!this[_0x4f0a44(0x3ae)])throw Error('WebGPU\x20geometry\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20几何绑定布局不可用。');return this[_0x4f0a44(0x3ae)];}[_0x5d7726(0x187)](){const _0x5d1080=_0x5d7726;if(!this['volumeBindGroupLayout'])throw Error('WebGPU\x20volume\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20体积绑定布局不可用。');return this[_0x5d1080(0x37d)];}['getTransferBindGroupLayout'](){const _0x3d5590=_0x5d7726;if(!this[_0x3d5590(0x200)])throw Error(_0x3d5590(0x324));return this['transferBindGroupLayout'];}[_0x5d7726(0x1a8)](){const _0x2be38e=_0x5d7726;if(!this[_0x2be38e(0x21e)])throw Error(_0x2be38e(0x265));return this[_0x2be38e(0x21e)];}[_0x5d7726(0x361)](){const _0x5578cb=_0x5d7726;if(!this[_0x5578cb(0x12f)])throw Error(_0x5578cb(0x2f9));return this[_0x5578cb(0x12f)];}[_0x5d7726(0x3b7)](){const _0xbccacd=_0x5d7726;if(!this[_0xbccacd(0x411)])throw Error('WebGPU\x20volume\x20params\x20buffer\x20is\x20unavailable.\x20WebGPU\x20体积参数\x20Buffer\x20不可用。');return this[_0xbccacd(0x411)];}};const getAxis=(_0x340de3,_0x8368ab)=>_0x8368ab==='x'?_0x340de3[_0x5d7726(0xf1)]:_0x8368ab==='y'?_0x340de3[_0x5d7726(0x3b6)]:_0x340de3[_0x5d7726(0x404)],clampPosition=(_0x38e7f5,_0x1e259d,_0x5874af)=>{const _0x5be176=_0x5d7726;if(!Number[_0x5be176(0x373)](_0x5874af))throw Error(_0x5be176(0x302));let _0x390e01=getAxis(_0x38e7f5,_0x1e259d),_0x1fa38c=Math['min'](_0x390e01[_0x5be176(0x141)],_0x390e01[_0x5be176(0x105)]),_0x2ac390=Math[_0x5be176(0x2e5)](_0x390e01['start'],_0x390e01[_0x5be176(0x105)]);return Math['min'](_0x2ac390,Math[_0x5be176(0x2e5)](_0x1fa38c,_0x5874af));},clonePreview=_0x37897a=>_0x37897a?{..._0x37897a}:null,cloneLockedSlice=_0x203b2a=>({..._0x203b2a}),validateAxes=_0x3763ae=>{const _0x75c7c0=_0x5d7726;for(let _0x2e6c6f of[_0x3763ae[_0x75c7c0(0xf1)],_0x3763ae[_0x75c7c0(0x3b6)],_0x3763ae[_0x75c7c0(0x404)]]){if(!Number[_0x75c7c0(0x373)](_0x2e6c6f[_0x75c7c0(0x141)])||!Number[_0x75c7c0(0x373)](_0x2e6c6f[_0x75c7c0(0x105)]))throw Error('切面轴端点必须是有限数。');if(!(Number[_0x75c7c0(0x291)](_0x2e6c6f[_0x75c7c0(0x12c)])&&_0x2e6c6f[_0x75c7c0(0x12c)]>0x0))throw Error('切面轴采样数必须是正整数。');if(_0x2e6c6f['count']>0x1&&_0x2e6c6f[_0x75c7c0(0x141)]===_0x2e6c6f['end'])throw Error(_0x75c7c0(0x2b5));}},volumeAxisValueToNormalized=(_0xbb58cc,_0x5e53b1)=>_0xbb58cc[_0x5d7726(0x141)]===_0xbb58cc[_0x5d7726(0x105)]?0x0:(_0x5e53b1-_0xbb58cc['start'])/(_0xbb58cc['end']-_0xbb58cc[_0x5d7726(0x141)]),normalizedToVolumeAxisValue=(_0x31f386,_0x170053)=>_0x31f386[_0x5d7726(0x141)]+_0x170053*(_0x31f386[_0x5d7726(0x105)]-_0x31f386[_0x5d7726(0x141)]);function _0x2fcb(_0x11cf1a,_0x33da8e){const _0x5873c0=_0x5873();return _0x2fcb=function(_0x2fcb0f,_0x5f449c){_0x2fcb0f=_0x2fcb0f-0xe8;let _0x4a3896=_0x5873c0[_0x2fcb0f];return _0x4a3896;},_0x2fcb(_0x11cf1a,_0x33da8e);}var SliceState=class{[_0x5d7726(0x3f4)];[_0x5d7726(0x3bd)]=new Set();['onLimitReached'];[_0x5d7726(0x1e2)];[_0x5d7726(0x3fa)];[_0x5d7726(0x190)]=0x1;[_0x5d7726(0x10d)]=null;['slices']=[];[_0x5d7726(0x415)]=_0x5d7726(0x28f);[_0x5d7726(0x22e)];constructor(_0xb20467,_0x4141c9={}){const _0x46e891=_0x5d7726;if(validateAxes(_0xb20467),this[_0x46e891(0x3f4)]={'xAxis':{..._0xb20467[_0x46e891(0xf1)]},'yAxis':{..._0xb20467['yAxis']},'zAxis':{..._0xb20467['zAxis']}},this['volumeDimFactor']=_0x4141c9[_0x46e891(0x22e)]??0.25,this[_0x46e891(0x3fa)]=_0x4141c9['depthMode']??_0x46e891(0x312),this['maxLockedSlices']=_0x4141c9['maxLockedSlices']??0xc,this[_0x46e891(0x17b)]=_0x4141c9[_0x46e891(0x17b)],!(this['volumeDimFactor']>=0x0&&this[_0x46e891(0x22e)]<=0x1))throw Error(_0x46e891(0x2b6));if(this[_0x46e891(0x3fa)]!==_0x46e891(0x312)&&this[_0x46e891(0x3fa)]!=='always-visible')throw Error('切面深度模式无效\x20/\x20Slice\x20depth\x20mode\x20is\x20invalid');if(!(Number[_0x46e891(0x291)](this[_0x46e891(0x1e2)])&&this[_0x46e891(0x1e2)]>0x0))throw Error(_0x46e891(0x3ca));}get['preview'](){const _0x2afc5e=_0x5d7726;return clonePreview(this[_0x2afc5e(0x10d)]);}get[_0x5d7726(0x2c2)](){const _0x185e2b=_0x5d7726;return this[_0x185e2b(0x32e)][_0x185e2b(0x3ef)](cloneLockedSlice);}get[_0x5d7726(0x2a9)](){const _0x4c8d4d=_0x5d7726;return this[_0x4c8d4d(0x415)];}get['snapshot'](){const _0x16de25=_0x5d7726;return{'preview':this['preview'],'lockedSlices':this[_0x16de25(0x2c2)],'toolMode':this[_0x16de25(0x415)],'volumeDimFactor':this[_0x16de25(0x22e)]};}['subscribe'](_0x516c56){const _0x2280ef=_0x5d7726;return this[_0x2280ef(0x3bd)][_0x2280ef(0x2e7)](_0x516c56),_0x516c56(this[_0x2280ef(0x2a4)]),()=>this[_0x2280ef(0x3bd)][_0x2280ef(0x370)](_0x516c56);}get['axisDefinitions'](){const _0x32062f=_0x5d7726;return{'xAxis':{...this[_0x32062f(0x3f4)][_0x32062f(0xf1)]},'yAxis':{...this[_0x32062f(0x3f4)][_0x32062f(0x3b6)]},'zAxis':{...this[_0x32062f(0x3f4)][_0x32062f(0x404)]}};}[_0x5d7726(0x29d)](_0x283f0e){const _0x2a0040=_0x5d7726;validateAxes(_0x283f0e),this[_0x2a0040(0x3f4)]={'xAxis':{..._0x283f0e[_0x2a0040(0xf1)]},'yAxis':{..._0x283f0e[_0x2a0040(0x3b6)]},'zAxis':{..._0x283f0e['zAxis']}},this[_0x2a0040(0x10d)]&&(this[_0x2a0040(0x10d)][_0x2a0040(0x3c6)]=clampPosition(this[_0x2a0040(0x3f4)],this[_0x2a0040(0x10d)][_0x2a0040(0x24c)],this['currentPreview'][_0x2a0040(0x3c6)])),this[_0x2a0040(0x32e)]=this[_0x2a0040(0x32e)][_0x2a0040(0x3ef)](_0x36d6bd=>({..._0x36d6bd,'position':clampPosition(this[_0x2a0040(0x3f4)],_0x36d6bd['axis'],_0x36d6bd[_0x2a0040(0x3c6)])})),this[_0x2a0040(0x392)]();}[_0x5d7726(0x38b)](_0x529587){const _0x565a41=_0x5d7726;this[_0x565a41(0x415)]!==_0x529587&&(this[_0x565a41(0x415)]=_0x529587,(_0x529587===null||_0x529587!==_0x565a41(0x28f)&&this['currentPreview']?.['axis']!==_0x529587)&&(this[_0x565a41(0x10d)]=null),this['notify']());}[_0x5d7726(0x234)](_0x57baad,_0x83eda5){const _0x1349f6=_0x5d7726;if(this[_0x1349f6(0x415)]===null||this[_0x1349f6(0x415)]!==_0x1349f6(0x28f)&&this['mode']!==_0x57baad)return;let _0x3424a3=clampPosition(this[_0x1349f6(0x3f4)],_0x57baad,_0x83eda5);this[_0x1349f6(0x10d)]?.[_0x1349f6(0x24c)]===_0x57baad&&this[_0x1349f6(0x10d)]['position']===_0x3424a3||(this[_0x1349f6(0x10d)]={'axis':_0x57baad,'position':_0x3424a3},this[_0x1349f6(0x392)]());}[_0x5d7726(0x34f)](){const _0x5642a4=_0x5d7726;this[_0x5642a4(0x10d)]&&(this[_0x5642a4(0x10d)]=null,this['notify']());}['lockPreview'](_0x4e2351=this[_0x5d7726(0x3fa)]){const _0x12d746=_0x5d7726;return this[_0x12d746(0x10d)]?this[_0x12d746(0x289)](this[_0x12d746(0x10d)][_0x12d746(0x24c)],this[_0x12d746(0x10d)][_0x12d746(0x3c6)],_0x4e2351):null;}[_0x5d7726(0x289)](_0x1547b8,_0x30eb51,_0x46f3e8=this['depthMode']){const _0x22dfa3=_0x5d7726;if(this[_0x22dfa3(0x32e)][_0x22dfa3(0x1bc)]>=this[_0x22dfa3(0x1e2)])return this[_0x22dfa3(0x17b)]?.(this['maxLockedSlices']),null;let _0x211fb5={'id':_0x22dfa3(0x2b8)+this['nextId'],'axis':_0x1547b8,'position':clampPosition(this[_0x22dfa3(0x3f4)],_0x1547b8,_0x30eb51),'depthMode':_0x46f3e8,'visible':!0x0};return this['nextId']+=0x1,this[_0x22dfa3(0x32e)]=[...this['slices'],_0x211fb5],this['notify'](),cloneLockedSlice(_0x211fb5);}['updateLockedSlice'](_0x30350e,_0x12d169){const _0xa83b3c=_0x5d7726;let _0x631772=this['slices'][_0xa83b3c(0x3d9)](_0x293921=>_0x293921['id']===_0x30350e);if(_0x631772<0x0)return;let _0x4585ab=this[_0xa83b3c(0x32e)][_0x631772],_0x312f12=clampPosition(this[_0xa83b3c(0x3f4)],_0x4585ab[_0xa83b3c(0x24c)],_0x12d169);_0x312f12!==_0x4585ab[_0xa83b3c(0x3c6)]&&(this[_0xa83b3c(0x32e)]=this[_0xa83b3c(0x32e)]['map'](_0x190f0e=>_0x190f0e['id']===_0x30350e?{..._0x190f0e,'position':_0x312f12}:_0x190f0e),this['notify']());}[_0x5d7726(0x2e6)](_0x43c652){const _0xcae115=_0x5d7726;let _0x2c3b5f=this[_0xcae115(0x32e)][_0xcae115(0x28d)](_0x5eb9c6=>_0x5eb9c6['id']!==_0x43c652);_0x2c3b5f[_0xcae115(0x1bc)]!==this[_0xcae115(0x32e)][_0xcae115(0x1bc)]&&(this[_0xcae115(0x32e)]=_0x2c3b5f,this[_0xcae115(0x392)]());}[_0x5d7726(0x330)](){const _0x352ae1=_0x5d7726;this['slices']['length']!==0x0&&(this['slices']=[],this[_0x352ae1(0x392)]());}[_0x5d7726(0x392)](){const _0xfd031b=_0x5d7726;let _0x590f9f=this[_0xfd031b(0x2a4)];for(let _0x34f569 of this['listeners'])_0x34f569(_0x590f9f);}};const axisEndpoints=_0x300ebd=>_0x300ebd==='x'?[[0x0,0x0,0x0],[0x1,0x0,0x0]]:_0x300ebd==='y'?[[0x0,0x0,0x0],[0x0,0x1,0x0]]:[[0x0,0x0,0x0],[0x0,0x0,0x1]],projectAxis=(_0x516505,_0x505446)=>{const _0x3a64ce=_0x5d7726;let _0x35ade1=multiplyMatrices(_0x505446[_0x3a64ce(0x17f)],_0x505446[_0x3a64ce(0x1fb)]),[_0x13969c,_0x1a7b6b]=axisEndpoints(_0x516505),_0x3df284=projectPointToViewport(_0x35ade1,_0x13969c,_0x505446[_0x3a64ce(0x25b)],_0x505446['viewportHeight']),_0x412ebd=projectPointToViewport(_0x35ade1,_0x1a7b6b,_0x505446[_0x3a64ce(0x25b)],_0x505446[_0x3a64ce(0x3ad)]);return!_0x3df284||!_0x412ebd?null:{'axis':_0x516505,'startX':_0x3df284[0x0],'startY':_0x3df284[0x1],'endX':_0x412ebd[0x0],'endY':_0x412ebd[0x1]};},hitProjectedAxis=(_0x41cc72,_0x53e651,_0x1194d3)=>{const _0x38be97=_0x5d7726;let _0x2a64c3=_0x41cc72[_0x38be97(0xf6)]-_0x41cc72[_0x38be97(0x340)],_0x5a53ee=_0x41cc72[_0x38be97(0x239)]-_0x41cc72[_0x38be97(0x1fa)],_0xa14a6f=_0x2a64c3*_0x2a64c3+_0x5a53ee*_0x5a53ee,_0x496276=_0xa14a6f===0x0?0x0:((_0x53e651-_0x41cc72[_0x38be97(0x340)])*_0x2a64c3+(_0x1194d3-_0x41cc72['startY'])*_0x5a53ee)/_0xa14a6f,_0x239ede=Math['min'](0x1,Math[_0x38be97(0x2e5)](0x0,_0x496276)),_0x35d90f=_0x41cc72[_0x38be97(0x340)]+_0x239ede*_0x2a64c3,_0x2169c4=_0x41cc72[_0x38be97(0x1fa)]+_0x239ede*_0x5a53ee;return{'axis':_0x41cc72['axis'],'distance':Math[_0x38be97(0x31a)](_0x53e651-_0x35d90f,_0x1194d3-_0x2169c4),'normalizedPosition':_0x239ede};},eventViewportPoint=(_0x4bd115,_0x51e4df,_0x23f101)=>{const _0x462df5=_0x5d7726;let _0x5a1521=_0x51e4df[_0x462df5(0x19a)]();return[_0x5a1521[_0x462df5(0x293)]===0x0?0x0:(_0x4bd115[_0x462df5(0x297)]-_0x5a1521[_0x462df5(0x32c)])*_0x23f101[_0x462df5(0x25b)]/_0x5a1521[_0x462df5(0x293)],_0x5a1521[_0x462df5(0x38f)]===0x0?0x0:(_0x4bd115[_0x462df5(0x32f)]-_0x5a1521[_0x462df5(0x2bf)])*_0x23f101[_0x462df5(0x3ad)]/_0x5a1521['height']];},realAxisPosition=(_0x31eb08,_0x27976e,_0x1cf21f)=>{const _0x110408=_0x5d7726;let _0x7f673d=_0x31eb08[_0x110408(0x37b)];return normalizedToVolumeAxisValue(_0x27976e==='x'?_0x7f673d[_0x110408(0xf1)]:_0x27976e==='y'?_0x7f673d[_0x110408(0x3b6)]:_0x7f673d[_0x110408(0x404)],_0x1cf21f);};var SliceInteractionController=class{['element'];[_0x5d7726(0x39b)];[_0x5d7726(0x11d)];[_0x5d7726(0x29e)];[_0x5d7726(0x2aa)];['onInteractionStart'];[_0x5d7726(0x2bc)];[_0x5d7726(0x2ae)]=null;[_0x5d7726(0x2a1)]=null;[_0x5d7726(0x110)]=!0x1;constructor(_0x24c43c,_0x4f3335,_0x51b1d0,_0x55bb88={}){const _0x2041ab=_0x5d7726;this[_0x2041ab(0x1fd)]=_0x24c43c,this['state']=_0x4f3335,this[_0x2041ab(0x11d)]=_0x51b1d0,this[_0x2041ab(0x29e)]=_0x55bb88[_0x2041ab(0x1fc)]??0xa,this[_0x2041ab(0x2aa)]=_0x55bb88[_0x2041ab(0x12a)]??0x4,this['onInteractionStart']=_0x55bb88[_0x2041ab(0x399)],this[_0x2041ab(0x2bc)]=_0x55bb88[_0x2041ab(0x2bc)];}[_0x5d7726(0x3fb)](){const _0x243713=_0x5d7726;this['initialized']||(this[_0x243713(0x110)]=!0x0,this[_0x243713(0x1fd)]['addEventListener'](_0x243713(0x2b2),this['handlePointerDown'],!0x0),this[_0x243713(0x1fd)]['addEventListener'](_0x243713(0x394),this[_0x243713(0xeb)],!0x0),this[_0x243713(0x1fd)][_0x243713(0x193)](_0x243713(0x379),this[_0x243713(0x24f)],!0x0),window[_0x243713(0x193)]('pointermove',this[_0x243713(0x2fd)],!0x0),window[_0x243713(0x193)](_0x243713(0x367),this[_0x243713(0x1f1)],!0x0),window[_0x243713(0x193)](_0x243713(0x213),this[_0x243713(0x1f1)],!0x0));}['beginLockedSliceDrag'](_0x585176,_0x25706b){const _0x26fa3=_0x5d7726;let _0x30ee46=this[_0x26fa3(0x39b)][_0x26fa3(0x2c2)][_0x26fa3(0x314)](_0x25e0e8=>_0x25e0e8['id']===_0x585176);_0x30ee46&&(this['activePointer']={'kind':_0x26fa3(0x2ca),'axis':_0x30ee46[_0x26fa3(0x24c)],'pointerId':_0x25706b['pointerId'],'sliceId':_0x585176,'startX':_0x25706b[_0x26fa3(0x297)],'startY':_0x25706b[_0x26fa3(0x32f)],'moved':!0x1},this[_0x26fa3(0x399)]?.(),_0x25706b[_0x26fa3(0x1b4)](),_0x25706b[_0x26fa3(0x1dd)]());}[_0x5d7726(0x416)](){const _0x39fbdf=_0x5d7726;this['initialized']&&(this[_0x39fbdf(0x110)]=!0x1,this[_0x39fbdf(0x1fd)][_0x39fbdf(0x3cc)]('pointerdown',this['handlePointerDown'],!0x0),this[_0x39fbdf(0x1fd)]['removeEventListener'](_0x39fbdf(0x394),this[_0x39fbdf(0xeb)],!0x0),this[_0x39fbdf(0x1fd)][_0x39fbdf(0x3cc)]('pointerleave',this[_0x39fbdf(0x24f)],!0x0),window[_0x39fbdf(0x3cc)](_0x39fbdf(0x394),this[_0x39fbdf(0x2fd)],!0x0),window[_0x39fbdf(0x3cc)](_0x39fbdf(0x367),this['handlePointerUp'],!0x0),window[_0x39fbdf(0x3cc)](_0x39fbdf(0x213),this['handlePointerUp'],!0x0),this[_0x39fbdf(0x2ae)]&&this[_0x39fbdf(0x2bc)]?.(),this[_0x39fbdf(0x2ae)]=null,this[_0x39fbdf(0x2a1)]=null,this[_0x39fbdf(0x39b)][_0x39fbdf(0x34f)]());}[_0x5d7726(0x31c)](_0x4cfa30,_0x216897){const _0x2621f4=_0x5d7726;let _0x4d807b=this[_0x2621f4(0x11d)]();if(!_0x4d807b)return null;let [_0x5aacba,_0x39284a]=eventViewportPoint(_0x4cfa30,this[_0x2621f4(0x1fd)],_0x4d807b),_0x5b43e8=this[_0x2621f4(0x39b)]['toolMode'];if(_0x5b43e8===null)return null;let _0x54d5e5=(_0x216897?[_0x216897]:_0x5b43e8==='auto'?['x','y','z']:[_0x5b43e8])[_0x2621f4(0x3ef)](_0x5ed530=>projectAxis(_0x5ed530,_0x4d807b))[_0x2621f4(0x28d)](_0x86a4c3=>_0x86a4c3!==null)[_0x2621f4(0x3ef)](_0x326fb6=>hitProjectedAxis(_0x326fb6,_0x5aacba,_0x39284a));if(_0x54d5e5[_0x2621f4(0x1bc)]===0x0)return null;_0x54d5e5['sort']((_0x46b5dd,_0x34ceb0)=>_0x46b5dd[_0x2621f4(0x180)]-_0x34ceb0[_0x2621f4(0x180)]);let _0x3999a5=_0x54d5e5[0x0];if(!_0x216897&&this[_0x2621f4(0x2a1)]){let _0x425d34=_0x54d5e5[_0x2621f4(0x314)](_0x4846e9=>_0x4846e9['axis']===this[_0x2621f4(0x2a1)]);_0x425d34&&_0x425d34[_0x2621f4(0x180)]<=_0x3999a5[_0x2621f4(0x180)]+this['axisHysteresis']&&(_0x3999a5=_0x425d34);}return!_0x216897&&_0x3999a5['distance']>this[_0x2621f4(0x29e)]?null:_0x3999a5;}['applyHit'](_0xbccf3e,_0x2ad3a6){const _0xed070f=_0x5d7726;let _0x4f4f18=realAxisPosition(this['state'],_0xbccf3e[_0xed070f(0x24c)],_0xbccf3e[_0xed070f(0x225)]);_0x2ad3a6?this[_0xed070f(0x39b)]['updateLockedSlice'](_0x2ad3a6,_0x4f4f18):this[_0xed070f(0x39b)][_0xed070f(0x234)](_0xbccf3e[_0xed070f(0x24c)],_0x4f4f18),this[_0xed070f(0x2a1)]=_0xbccf3e['axis'];}[_0x5d7726(0x3b0)]=_0x4879ff=>{const _0x5d3013=_0x5d7726;if(_0x4879ff['button']!==0x0||this[_0x5d3013(0x2ae)])return;let _0x3d750b=this[_0x5d3013(0x31c)](_0x4879ff);_0x3d750b&&(this[_0x5d3013(0x18e)](_0x3d750b),this['activePointer']={'kind':_0x5d3013(0x37f),'axis':_0x3d750b['axis'],'pointerId':_0x4879ff[_0x5d3013(0xf4)],'startX':_0x4879ff['clientX'],'startY':_0x4879ff['clientY'],'moved':!0x1},this[_0x5d3013(0x399)]?.(),this[_0x5d3013(0x1fd)][_0x5d3013(0x1ac)]?.(_0x4879ff[_0x5d3013(0xf4)]),_0x4879ff['preventDefault'](),_0x4879ff[_0x5d3013(0x1dd)]());};[_0x5d7726(0xeb)]=_0x32a040=>{const _0x563cc4=_0x5d7726;if(this[_0x563cc4(0x2ae)])return;let _0x537676=this[_0x563cc4(0x31c)](_0x32a040);if(!_0x537676){this['previousAxis']=null,this[_0x563cc4(0x39b)][_0x563cc4(0x34f)]();return;}this[_0x563cc4(0x18e)](_0x537676);};[_0x5d7726(0x2fd)]=_0x70031f=>{const _0x242c00=_0x5d7726;let _0x29ef72=this[_0x242c00(0x2ae)];if(!_0x29ef72||_0x29ef72[_0x242c00(0xf4)]!==_0x70031f[_0x242c00(0xf4)])return;let _0x468c9b=this[_0x242c00(0x31c)](_0x70031f,_0x29ef72[_0x242c00(0x24c)]);_0x468c9b&&(Math['hypot'](_0x70031f['clientX']-_0x29ef72[_0x242c00(0x340)],_0x70031f[_0x242c00(0x32f)]-_0x29ef72[_0x242c00(0x1fa)])>0x4&&(_0x29ef72['moved']=!0x0),this['applyHit'](_0x468c9b,_0x29ef72['sliceId']),_0x70031f[_0x242c00(0x1b4)](),_0x70031f[_0x242c00(0x1dd)]());};[_0x5d7726(0x1f1)]=_0x31538e=>{const _0x13fb7f=_0x5d7726;let _0x51e510=this[_0x13fb7f(0x2ae)];!_0x51e510||_0x51e510[_0x13fb7f(0xf4)]!==_0x31538e[_0x13fb7f(0xf4)]||(_0x51e510[_0x13fb7f(0x120)]===_0x13fb7f(0x37f)&&!_0x51e510[_0x13fb7f(0x3ce)]&&this[_0x13fb7f(0x39b)]['lockPreview'](),this[_0x13fb7f(0x1fd)][_0x13fb7f(0x281)]?.(_0x31538e[_0x13fb7f(0xf4)])&&this[_0x13fb7f(0x1fd)][_0x13fb7f(0x1f7)](_0x31538e[_0x13fb7f(0xf4)]),this[_0x13fb7f(0x2ae)]=null,this[_0x13fb7f(0x2bc)]?.(),_0x31538e[_0x13fb7f(0x1b4)](),_0x31538e[_0x13fb7f(0x1dd)]());};[_0x5d7726(0x24f)]=()=>{const _0x107452=_0x5d7726;this[_0x107452(0x2ae)]||this[_0x107452(0x39b)][_0x107452(0x34f)]();};};function _0x5873(){const _0x55d829=['RENDER_ATTACHMENT','sliceResources','brickScheduleDirty','min','has','shape','374903uxRzQZ','sliceState','coordinate',',\x20size=','configureSourceResources','max','removeSlice','add','overlayLinePipeline','submit','autoFrameCount','sort','transform','zoomSpeed','volume\x20metadata\x20params','writeBuffer','residentByLogicalIndex','forEach','cachedSlices','\x20的\x20path\x20必须包含至少两个\x20[x,\x20z]\x20点。','halo','validation','display','pageTableBuffer','createCommandEncoder','WebGPU\x20scene\x20params\x20buffer\x20is\x20unavailable.\x20WebGPU\x20场景参数\x20Buffer\x20不可用。','logicalBrickCount','uploadPump','memoryLimitBytes','handleWindowPointerMove','RGB\x20颜色通道必须在\x200\x20~\x20255\x20之间','Geographic\x20volume\x20normalization\x20must\x20be\x20a\x20positive\x20finite\x20distance.\x20地理体积归一化尺度必须是正有限距离。','A\x20destroyed\x20volume\x20scene\x20cannot\x20capture\x20a\x20frame.\x20已销毁的体积场景不能读取帧。','fragmentMain','切面位置必须是有限数。','WebGPU\x20volume\x20memory\x20limits\x20must\x20be\x20positive.\x20WebGPU\x20体积显存限制必须大于零。','updateSlice','volume\x20slice\x20','Volume\x20Y\x20axis','Volume\x20brick\x20upload\x20was\x20superseded\x20by\x20a\x20new\x20source.\x20体积砖上传已被新数据源替代。','volume\x20scene\x20geometry\x20pass','skippedSampleCount','now','function','volume\x20always\x20visible\x20pass','454605FMScgR','getAtlas','previousContainerPosition','far','mouse','scene','atlasViews','find','adapter','Module','3px\x206px','不支持的\x20hex\x20颜色格式:\x20','rgb\x20颜色通道数量不正确:\x20','hypot','lockPreview','findAxisHit','destroyed','uploadedBrickCount','rejectPendingBrickUploads','getMappedRange','contextmenu','cartesian','unconfigure','WebGPU\x20transfer\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20传递函数绑定布局不可用。','\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','flushBrickSchedule','\x20with\x20one\x20sample\x20must\x20use\x20equal\x20endpoints.\x20','handleFrameAvailable','colorInputs','createTextNode','subscribe','left','maxBufferSize','slices','clientY','clearLockedSlices','camera','cursor','performance','getCurrentTexture','loadBrick','keys','geometryBindGroup','VolumeCamera','setSource','setAspect','startsWith','destroyResources','WebGPU\x20volume\x20device\x20restoration\x20failed.\x20WebGPU\x20体积设备恢复失败。','\x20must\x20be\x20a\x20non-negative\x20finite\x20value.\x20','volume\x20scene\x20frame','startX','createSliceState','transferResources','volume\x20atlas\x20clear\x20pipeline','Volume\x20brick\x20upload\x20became\x20stale.\x20体积砖上传已过期。','source','createTexture','resources','\x20count','setFrameAvailableCallback','updateLockedSlice','frameRequest','desiredKeys','volumeCamera','alignItems','clearPreview','step','logicalIndex','uploadBatchCount','#fff','getCanvas','2889lDUbka','lost','createLayout','atlas','depth32float','\x20无效。','requestAdapter','renderer','colorStops','setPipeline','volume\x20atlas\x20bind\x20group','cameraState','getSceneParamsBuffer','prepareBrickUpload','getContext','style','always-visible','finish','pointerup','个色标范围的\x20min\x20必须小于\x20max','createGpuResources','opacity','atlasTextures','\x20必须包含十六个有限数值。','getUploadStagingBuffer','interactionElement','writePageEntry','delete','mixed','createVolumeScene','isFinite','cos','rgba(','shift','setSlices','FRAGMENT','pointerleave','getPreferredCanvasFormat','axisDefinitions','xStart','volumeBindGroupLayout','4px','preview','trim','WebGPU\x20axis\x20resources\x20are\x20unavailable.\x20WebGPU\x20轴线资源不可用。','setAttribute','timeIndex','lastTimingFrameTimestamp','destroyBuffers','stepLength','createBuffer','\x20必须是非负有限数值。','line-list','countY','setToolMode','read-only-storage','AbortError','asin','height','volume\x20brick\x20upload\x20batch\x20flush','volume-bounds','notify','VERTEX','pointermove','float32x3','markerOverlay','font','autoFrameIntervalTotal','onInteractionStart','volume\x20atlas\x20clear','state','buffer','residentBySlotIndex','path','drawSlices','Scene\x20mesh\x20','WebGPU\x20volume\x20resources\x20were\x20released.\x20WebGPU\x20体积资源已释放。','color','fovYDegrees','getDevice','setBindGroup','plateColor','r32float','.\x20WebGPU\x20体积设备已丢失。','verticalScale','recreateSceneBindGroup','volume\x20opacity\x20stop\x20values','Maximum\x20locked\x20slice\x20count\x20is\x20','viewportHeight','geometryBindGroupLayout','one','handlePointerDown','isNaN','volume\x20transfer\x20bind\x20group','queue','firstChild','pendingKeys','yAxis','getVolumeParamsBuffer','Volume\x20chunk\x20requires\x20','limits','coordinateSystem','WebGPU\x20volume\x20atlas\x20layout\x20is\x20unavailable.\x20WebGPU\x20体积图集布局不可用。','cachedAxes','listeners','heights','format','from','normalizationMeters','uploadGeneration','catch','syncLockedMarkers','getTransferBindGroupLayout','position','smooth','perspective','volume\x20frame\x20readback','maxLockedSlices\x20必须是正整数。','\x20must\x20be\x20a\x20positive\x20integer.\x20体积分块\x20','removeEventListener','navigationMode','moved','clipMaximum','one-minus-src-alpha','valuesEqual','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','touch','resourceRebuildCount','getStepLength','sceneTrianglePipeline','colorStopCount','orthographic','findIndex','key','skippedCells','Volume\x20opacity\x20must\x20be\x20within\x20[0,\x201].\x20体积透明度必须位于\x20[0,\x201]。','Volume\x20slice\x20ID\x20','atan2','pushErrorScope','updateTransferResources','矩阵不可逆。','pendingBrickUploads','bindGroup','删除切面','round','createComputePipeline','tan','minimum','\x20axis\x20must\x20contain\x20two\x20different\x20finite\x20endpoints.\x20','frameInFlight','readRange','statistics','bindControls','\x20的\x20values\x20长度与\x20path、heights\x20不匹配。','map','lastSubmittedFrameTimestamp','0\x202px','isInteracting','next','axes','overlaySlicePipeline','uniform','beginRenderPass','markers','readChunk','depthMode','initialize','volume\x20brick\x20atlas\x20','WebGPU\x20is\x20required\x20for\x20the\x20volume\x20scene\x20but\x20is\x20unavailable.\x20体积场景需要\x20WebGPU,但当前环境不可用。','Latitude\x20/\x20纬度','high-performance','vertexMain','volume\x20brick\x20reusable\x20upload\x20staging','create','brickWidth','zAxis','scheduleBricks','draw','\x20noData\x20必须是有限数值或\x20NaN。','相机宽高比必须是大于\x200\x20的有限数。','路线剖面\x20','depthView','getGeometryBindGroupLayout','createResource','3399520fbiCke','cacheOnSuccess','descriptors','backend','volumeParamsBuffer','premultiplied','pointerType','cachedProfiles','mode','destroy','flatMap','click','aspect','个色标范围不能是NaN','createPipelineLayout','panSpeed','handlePointerMove','transferBindGroup','resetBrickRequests','setSliceTool','target','captureFrame','xAxis','recordFrameInterval','Volume\x20timeIndex\x20is\x20out\x20of\x20range:\x20','pointerId','verticalScale\x20必须是大于\x200\x20的有限数。','endX','Returned\x20volume\x20chunk\x20range\x20does\x20not\x20match\x20the\x20request.\x20返回体积分块范围与请求不一致。','values','brickDepth','Volume\x20chunk\x20range\x20exceeds\x20source\x20dimensions.\x20体积分块范围超出源数据尺寸。','center','\x20的\x20path\x20包含非有限坐标。','\x20端点必须是有限数值。','resize','2289462TQZYpY','volume\x20raymarch\x20shader','createShaderModule','volume\x20scene\x20mesh\x20','type','路线剖面\x20id\x20不能为空。','end','Volume\x20chunk\x20','WebGPU\x20scene\x20depth\x20attachment\x20is\x20not\x20initialized.\x20WebGPU\x20场景深度附件尚未初始化。','releaseGpuResources','\x20is\x20invalid:\x20','toStringTag','viewProjection','encodeOverlayPass','currentPreview','push','absolute','initialized','sliceDepthMode','sin','profileResources','projection','Volume','maximumPitch','heightScaled','Volume\x20X\x20axis','\x20is\x20duplicated.\x20体积切面\x20ID\x20重复。','createGeographicVolumeLayout','geographicTransform','colorValuesBuffer','getFrame','countZ','showDebugGeometry','kind','generation','volumeBindGroup','levelStart','getTransferResources','clipBox','div','sliceInteraction','includes','actualFrameIntervalMilliseconds','axisHysteresisPixels','message','count','Volume\x20requires\x20','minimumPitch','sceneParamsBuffer','Volume\x20chunk\x20request\x20was\x20aborted.\x20体积块请求已取消。','\x20noData\x20must\x20be\x20finite\x20or\x20NaN.\x20','getAtlasTexture','splice','setVertexBuffer','bindSliceInteraction','centerEcefScaled','createLockedMarker','capacity','\x20包含多个采样点时步长不能为零。','syncPreview','textContent','createBindGroup','beginInteraction','colorMode','slicePlateColor','watchDeviceLost','start','\x20至少需要两个高度层。','floor','replace','xCount','configureModel','WebGPU\x20volume\x20canvas\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20Canvas\x20尚未初始化。','semiMinorAxisScaled','1px\x20solid\x20rgb(255\x20255\x20255\x20/\x2065%)','chunk','Volume\x20opacity\x20stops\x20must\x20be\x20between\x20zero\x20and\x20one.\x20体积透明度色标必须位于零到一之间。','volume\x20scene\x20params','.\x20体积逻辑砖块索引无效。','requestRender','geographic-wgs84','Volume\x20timeCount','sceneSlicePipeline','border','opacityStops','atlasIndex','1337536AeJRfH','WebGPU\x20volume\x20frame\x20capture\x20failed:\x20','error','toFixed','pixelRatioCap','uploadBrick','autoQuality','\x20requires\x20','.\x20体积时间索引越界。','depth','createView','getPageTableBuffer','managed','memoryTargetBytes','drawMeshes','TEXTURE_BINDING','volume\x20opacity\x20stop\x20alphas','uniformUpdateCount','maximumDistance','prepared','Geographic\x20WGS84\x20volume\x20scenes\x20manage\x20their\x20own\x20model\x20transform.\x20WGS84\x20地理体积场景自行管理模型变换。','near','volume\x20slice\x20shader','store','requestDevice','opacityBuffer','formatPosition','Count','orbit','ecefToGeographicVolumeLocal','interactionStepScale','inverseModelMatrix','相机裁剪距离必须满足\x200\x20<=\x20near\x20<\x20far。','BYTES_PER_ELEMENT','.\x20体积砖块数据长度不正确。','interactionRenderScale','gap','MAP_READ','onLimitReached','context','minY','defineProperty','viewProjectionMatrix','distance','slotCountZ','signal','createRenderPipeline','WebGPU\x20volume\x20page\x20table\x20is\x20unavailable.\x20WebGPU\x20体积页表不可用。','baseModelMatrix','occupied','getVolumeBindGroupLayout','eventDisposers','renderDirty','memoryHardLimitBytes','onSliceError','minZ','slotCount','applyHit','main','nextId','canvas','acquireSlot','addEventListener','vertices','positions','flushSliceState','lastFrameTimeMilliseconds','setState','residentBrickCount','getBoundingClientRect','bindSliceState','cameraPosition','overlayTrianglePipeline','update','dolly','sceneBindGroupLayout','wgs84','all','revision','countX','slice','\x20values\x20but\x20received\x20','WebGPU\x20volume\x20dimensions\x20must\x20be\x20positive\x20integers.\x20WebGPU\x20体积尺寸必须是正整数。','getSliceBindGroupLayout','ceil','powerPreference','gpu','setPointerCapture','clear','Failed\x20to\x20create\x20a\x20WebGPU\x20canvas\x20context\x20for\x20the\x20volume\x20scene.\x20无法为体积场景创建\x20WebGPU\x20Canvas\x20上下文。','READ','background','WebGPU\x20transfer\x20resources\x20are\x20unavailable.\x20WebGPU\x20传递函数资源不可用。','slotCountY','submittedFrameCount','preventDefault','.\x20创建\x20WebGPU\x20体积管线失败。','indices','uploadStagingBuffer','inverseViewProjection','getSliceResources','aria-label','UNIFORM','length','static','\x20must\x20be\x20a\x20positive\x20integer.\x20','none','ready','Volume\x20slice\x20','brickHeight','parseInt','lastUsedFrame','10216KAxopy','loadedKeys','value','sourceYStart','createValues','endInteraction','4608fITLBz','slotIndex','getAttachments','A\x20destroyed\x20WebGPU\x20volume\x20renderer\x20cannot\x20be\x20initialized\x20again.\x20已销毁的\x20WebGPU\x20体积渲染器不能再次初始化。','brickSortCount','WebGPU\x20volume\x20device\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20device\x20尚未初始化。','range','volume\x20geometry\x20bind\x20group','createElement','WebGPU\x20volume\x20page\x20table\x20exceeds\x20the\x20configured\x20memory\x20limit.\x20WebGPU\x20体积页表超过显存限制。','volume\x20slice\x20bind\x20group\x20layout','Height\x20/\x20高度','sceneBindGroup','writeVolumeParams','renderMode','maxTextureDimension3D','WebGPU\x20volume\x20renderer\x20is\x20not\x20ready\x20for\x20frame\x20capture.\x20WebGPU\x20体积渲染器尚不能读取帧。','.\x20体积分块数值数量与尺寸不一致。','stopPropagation','volumeMetadata','pointerEvents','volume\x20frame\x20capture','正交相机高度和宽高比必须大于\x200。','maxLockedSlices','colorBuffer','pageTableValues','quality','相机宽高比必须大于\x200。','\x20的\x20opacity\x20必须位于\x200\x20到\x201。','copyBufferToTexture','sourceYCount','MAP_WRITE','Failed\x20to\x20acquire\x20a\x20WebGPU\x20adapter\x20for\x20the\x20volume\x20scene.\x20无法为体积场景获取\x20WebGPU\x20adapter。','透视相机视场角必须位于\x200\x20到\x20180\x20度之间。','interactionController','some','COPY_DST','remove','handlePointerUp','scheduleUploadPump','triangle-list','updateAutoQuality','getInteractionKind','onSlicesChange','releasePointerCapture','set','getBindGroupLayout','startY','modelMatrix','hitTolerancePixels','element','opacityValuesBuffer','toUpperCase','transferBindGroupLayout','densityScale','uploadStagingBufferSize','\x20轴必须包含两个不同的有限端点。','\x20must\x20be\x20a\x20positive\x20finite\x20number.\x20','onSubmittedWorkDone','abs','extent','WebGPU\x20volume\x20atlas\x20resources\x20are\x20incomplete.\x20WebGPU\x20体积图集资源不完整。','atlasLayout','sourceY','byteLength','bufferOffset','rebuildProfiles','touchBricks','idle','slotCountX','getSceneBindGroupLayout','unmap','pointercancel','latitudeRadians','WRITE','overlayContainer','\x20只有一个采样点时端点必须相等。','maximumPitchDegrees','sourceGeneration','WebGPU\x20volume\x20context\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20context\x20尚未初始化。','subarray','transparent','balanced','sliceBindGroupLayout','brickScheduleCount','volume\x20color\x20stop\x20colors','Volume\x20color\x20and\x20opacity\x20stops\x20cannot\x20be\x20empty.\x20体积颜色和透明度色标不能为空。','maximum','inherit','entries','normalizedPosition','getProfileResources','frameIndex','正交相机高度必须大于\x200。','Failed\x20to\x20create\x20WebGPU\x20volume\x20pipelines:\x20','less','fill','bgra8unorm','encodeScenePass','volumeDimFactor','configureSource','dispatchWorkgroups','STORAGE','float32x4','minimumPitchDegrees','updatePreview','\x20plate\x20color\x20must\x20use\x20values\x20from\x20zero\x20through\x20one.\x20体积切面底板颜色必须位于零至一。','volume-axes','The\x20maximum\x20locked\x20slice\x20count\x20has\x20been\x20reached.\x20已达到最大锁定切面数量。','userSelect','endY','clearPageEntry','button','volume\x20atlas\x20bind\x20group\x20layout','device','attachments','topology','\x20range\x20is\x20invalid:\x20start=','reject','WebGPU\x20volume\x20atlas\x20is\x20not\x20configured.\x20WebGPU\x20体积图集尚未配置。','abort','Unable\x20to\x20allocate\x20a\x20WebGPU\x20R32F\x20volume\x20atlas\x20within\x20device\x20limits.\x20无法在设备限制内分配\x20WebGPU\x20R32F\x20体积图集。','noData','gpuBytes','\x20范围无效。','get','then','clientWidth','options','axis','configure','sceneDepthView','handlePointerLeave','flex','pan','透视相机参数无效。','\x20must\x20contain\x20sixteen\x20finite\x20values.\x20','getEffectiveQuality','load','hideAllMarkers','depthTexture','normalizedToVolumeAxisValue','level','previewMarker','viewportWidth','matrices','rowsPerImage','enqueueBrickUpload','metadata','visible','size','finally','requestBrickSchedule','WebGPU\x20volume\x20scene\x20dimensions\x20must\x20be\x20positive\x20integers.\x20WebGPU\x20体积场景尺寸必须是正整数。','WebGPU\x20slice\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20切面绑定布局不可用。','encodePreparedBrickUpload','external','writeParams','\x20must\x20be\x20a\x20positive\x20finite\x20value.\x20','grab','layout','longitudeRadians','requestControllers','WebGPU\x20volume\x20atlas\x20texture\x20is\x20unavailable.\x20WebGPU\x20体积图集纹理不可用。','volumeAxisValueToNormalized','Longitude\x20/\x20经度','minX','upload','opacityStopCount','WebGPU\x20volume\x20transfer\x20resources\x20are\x20incomplete.\x20WebGPU\x20体积传递函数资源不完整。','rotateSpeed','pendingSliceSnapshot','Returned\x20volume\x20chunk\x20dimensions\x20do\x20not\x20match\x20its\x20range.\x20返回体积分块尺寸与范围不一致。','clipMinimum','getFormat','name','container','WebGPU\x20volume\x20format\x20is\x20not\x20initialized.\x20WebGPU\x20体积格式尚未初始化。','render','12jzYaNL','append','maxZ','hasPointerCapture','profiles','composite','setProfiles','createProjectionMatrix','clearAtlasTexture','vertexCount',',\x20count=','lockSlice','maximumUploadBatchBytes','lifecycleState','volume\x20color\x20stop\x20values','filter','minimumDistance','auto','Returned\x20volume\x20chunk\x20timeIndex\x20does\x20not\x20match\x20the\x20request.\x20返回体积分块的时间索引与请求不一致。','isInteger','Volume\x20color\x20stops\x20must\x20be\x20sorted\x20by\x20value.\x20体积颜色色标必须按数值升序排列。','width','volume\x20scene\x20mesh\x20shader','counts','createBindGroupLayout','clientX','384XVmirs','activeInteractions','renderScale','0.72','beginLockedSliceDrag','setAxes','hitTolerance','COPY_SRC','levelCount','previousAxis','pointer','setTransfer','snapshot','encodeVolumePass','semiMajorAxisScaled','volume\x20atlas\x20clear\x20pass','sceneLinePipeline','toolMode','axisHysteresis','getAxisResources','Volume\x20Z\x20axis','popErrorScope','activePointer','\x20endpoints\x20must\x20be\x20finite.\x20','atlasCapacity','WebGPU\x20volume\x20source\x20must\x20be\x20configured\x20before\x20uploading\x20bricks.\x20上传砖块前必须配置\x20WebGPU\x20体积数据源。','pointerdown','unsubscribe','initializationGeneration','多采样点切面轴的起止值不能相等。','volumeDimFactor\x20必须位于\x200\x20到\x201。','\x20必须是正整数。','volume-slice-','positionMarker','wheel','beginComputePass','onInteractionEnd','Volume\x20brick\x20','coreRange','top','clientHeight','resolve','lockedSlices','volumePipeline','mapAsync','Volume\x20brick\x20coordinate\x20is\x20out\x20of\x20range.\x20体积分块坐标越界。','timeCount','touchAction','bytesPerRow','volume\x20atlas\x20clear\x20shader','locked','Volume\x20source\x20must\x20provide\x20readChunk().\x20体积数据源必须提供\x20readChunk()。','\x20的\x20heights\x20包含非有限高度。','Volume\x20brick\x20halo\x20must\x20be\x20a\x20positive\x20integer.\x20体积分块\x20halo\x20必须是正整数。','frameAvailableCallback','webgpu','\x20必须是正有限数值。','zIndex','centerEcef','origin','sqrt','cachedBricks','不支持的颜色格式:\x20','axisResources','Volume\x20opacity\x20stops\x20must\x20be\x20sorted\x20by\x20value.\x20体积透明度色标必须按数值升序排列。','setCamera'];_0x5873=function(){return _0x55d829;};return _0x5873();}const axisLabel=_0xd7b822=>_0xd7b822[_0x5d7726(0x1ff)](),defaultFormatPosition=(_0x898058,_0x2563e7)=>axisLabel(_0x898058)+'\x20'+Number(_0x2563e7[_0x5d7726(0x158)](0x4)),getAxisDefinition=(_0x2520bf,_0x3d97eb)=>{const _0x3b80cb=_0x5d7726;let _0x1683d6=_0x2520bf['axisDefinitions'];return _0x3d97eb==='x'?_0x1683d6[_0x3b80cb(0xf1)]:_0x3d97eb==='y'?_0x1683d6['yAxis']:_0x1683d6[_0x3b80cb(0x404)];},markerModelPoint=(_0x17f6c0,_0x223cf7)=>{const _0x21b4c7=_0x5d7726;let _0x2391f8=volumeAxisValueToNormalized(getAxisDefinition(_0x17f6c0,_0x223cf7[_0x21b4c7(0x24c)]),_0x223cf7['position']);return _0x223cf7[_0x21b4c7(0x24c)]==='x'?[_0x2391f8,0x0,0x0]:_0x223cf7[_0x21b4c7(0x24c)]==='y'?[0x0,_0x2391f8,0x0]:[0x0,0x0,_0x2391f8];},applyMarkerBaseStyle=_0x4d7478=>{const _0x453f14=_0x5d7726;_0x4d7478[_0x453f14(0x364)]['position']=_0x453f14(0x10f),_0x4d7478[_0x453f14(0x364)][_0x453f14(0x2d1)]='1',_0x4d7478[_0x453f14(0x364)][_0x453f14(0x2f6)]=_0x453f14(0x250),_0x4d7478[_0x453f14(0x364)][_0x453f14(0x34e)]=_0x453f14(0xfb),_0x4d7478[_0x453f14(0x364)][_0x453f14(0x179)]=_0x453f14(0x37e),_0x4d7478['style']['padding']=_0x453f14(0x317),_0x4d7478[_0x453f14(0x364)][_0x453f14(0x152)]=_0x453f14(0x149),_0x4d7478[_0x453f14(0x364)]['borderRadius']='4px',_0x4d7478[_0x453f14(0x364)][_0x453f14(0x3a2)]=_0x453f14(0x353),_0x4d7478['style'][_0x453f14(0x1b0)]='rgb(17\x2024\x2039\x20/\x2082%)',_0x4d7478[_0x453f14(0x364)][_0x453f14(0x397)]='12px/1.2\x20sans-serif',_0x4d7478['style']['whiteSpace']='nowrap',_0x4d7478[_0x453f14(0x364)][_0x453f14(0x2ec)]='translate(-50%,\x20-100%)',_0x4d7478[_0x453f14(0x364)][_0x453f14(0x238)]='none',_0x4d7478['style'][_0x453f14(0x2c7)]=_0x453f14(0x1bf);},createDeleteButton=()=>{const _0x555b13=_0x5d7726;let _0x280ca8=document[_0x555b13(0x1d3)](_0x555b13(0x23b));return _0x280ca8[_0x555b13(0x103)]=_0x555b13(0x23b),_0x280ca8[_0x555b13(0x13b)]='×',_0x280ca8[_0x555b13(0x382)](_0x555b13(0x1ba),_0x555b13(0x3e4)),_0x280ca8[_0x555b13(0x364)]['padding']=_0x555b13(0x3f1),_0x280ca8['style'][_0x555b13(0x152)]='0',_0x280ca8[_0x555b13(0x364)][_0x555b13(0x3a2)]=_0x555b13(0x223),_0x280ca8[_0x555b13(0x364)][_0x555b13(0x1b0)]=_0x555b13(0x21c),_0x280ca8[_0x555b13(0x364)][_0x555b13(0x332)]=_0x555b13(0x2a2),_0x280ca8;};var SliceMarkerOverlay=class{[_0x5d7726(0x27b)];[_0x5d7726(0x39b)];[_0x5d7726(0x11d)];['interactionController'];['formatPosition'];['markers']=new Map();['previousContainerPosition'];['unsubscribe'];['previewMarker']=null;constructor(_0x28fcc4,_0x20c63f,_0x3453f4,_0x2bfb02={}){const _0x249515=_0x5d7726;this[_0x249515(0x27b)]=_0x28fcc4,this['state']=_0x20c63f,this[_0x249515(0x11d)]=_0x3453f4,this[_0x249515(0x1ed)]=_0x2bfb02[_0x249515(0x1ed)],this[_0x249515(0x16f)]=_0x2bfb02[_0x249515(0x16f)]??defaultFormatPosition,this[_0x249515(0x30f)]=_0x28fcc4[_0x249515(0x364)][_0x249515(0x3c6)],getComputedStyle(_0x28fcc4)['position']===_0x249515(0x1bd)&&(_0x28fcc4[_0x249515(0x364)][_0x249515(0x3c6)]='relative'),this[_0x249515(0x2b3)]=_0x20c63f[_0x249515(0x32b)](()=>this[_0x249515(0x19e)]());}[_0x5d7726(0x19e)](){const _0x1a8558=_0x5d7726;let _0x4bc13f=this[_0x1a8558(0x39b)][_0x1a8558(0x2a4)];this[_0x1a8558(0x13a)](_0x4bc13f['preview']),this[_0x1a8558(0x3c4)](_0x4bc13f[_0x1a8558(0x2c2)]);let _0x435a90=this[_0x1a8558(0x11d)]();if(!_0x435a90){this[_0x1a8558(0x256)]();return;}_0x4bc13f['preview']&&this[_0x1a8558(0x25a)]&&this[_0x1a8558(0x2b9)](this['previewMarker'],_0x4bc13f[_0x1a8558(0x37f)],_0x435a90);for(let _0x21e24f of _0x4bc13f[_0x1a8558(0x2c2)]){let _0x529ead=this[_0x1a8558(0x3f8)][_0x1a8558(0x248)](_0x21e24f['id']);_0x529ead&&this[_0x1a8558(0x2b9)](_0x529ead,_0x21e24f,_0x435a90);}}[_0x5d7726(0x416)](){const _0x45c126=_0x5d7726;this[_0x45c126(0x2b3)](),this[_0x45c126(0x25a)]?.[_0x45c126(0x1f0)](),this['previewMarker']=null;for(let _0x1f1fc6 of this['markers'][_0x45c126(0xf8)]())_0x1f1fc6[_0x45c126(0x1f0)]();this[_0x45c126(0x3f8)]['clear'](),this[_0x45c126(0x27b)][_0x45c126(0x364)]['position']=this[_0x45c126(0x30f)];}[_0x5d7726(0x13a)](_0x220be0){const _0x7440a6=_0x5d7726;if(!_0x220be0){this['previewMarker']?.[_0x7440a6(0x1f0)](),this[_0x7440a6(0x25a)]=null;return;}this[_0x7440a6(0x25a)]||(this[_0x7440a6(0x25a)]=document[_0x7440a6(0x1d3)](_0x7440a6(0x126)),applyMarkerBaseStyle(this[_0x7440a6(0x25a)]),this['previewMarker'][_0x7440a6(0x364)][_0x7440a6(0x1df)]='none',this[_0x7440a6(0x25a)][_0x7440a6(0x364)][_0x7440a6(0x36a)]=_0x7440a6(0x29b),this['container'][_0x7440a6(0x27f)](this[_0x7440a6(0x25a)])),this[_0x7440a6(0x25a)][_0x7440a6(0x13b)]=this[_0x7440a6(0x16f)](_0x220be0[_0x7440a6(0x24c)],_0x220be0[_0x7440a6(0x3c6)]);}[_0x5d7726(0x3c4)](_0x50e851){const _0x18dc1a=_0x5d7726;let _0x100c10=new Set(_0x50e851[_0x18dc1a(0x3ef)](_0x30ed25=>_0x30ed25['id']));for(let [_0xc202a2,_0x445a26]of this['markers'])_0x100c10['has'](_0xc202a2)||(_0x445a26[_0x18dc1a(0x1f0)](),this[_0x18dc1a(0x3f8)][_0x18dc1a(0x370)](_0xc202a2));for(let _0x297ae7 of _0x50e851){let _0x4a1b0e=this[_0x18dc1a(0x3f8)][_0x18dc1a(0x248)](_0x297ae7['id']);_0x4a1b0e||(_0x4a1b0e=this['createLockedMarker'](_0x297ae7['id']),this[_0x18dc1a(0x3f8)][_0x18dc1a(0x1f8)](_0x297ae7['id'],_0x4a1b0e),this['container']['append'](_0x4a1b0e));let _0x3cdbd2=_0x4a1b0e[_0x18dc1a(0x3b4)];_0x3cdbd2&&(_0x3cdbd2['textContent']=this['formatPosition'](_0x297ae7[_0x18dc1a(0x24c)],_0x297ae7[_0x18dc1a(0x3c6)]));}}[_0x5d7726(0x137)](_0x2871cc){const _0x3b71e9=_0x5d7726;let _0x29e098=document[_0x3b71e9(0x1d3)](_0x3b71e9(0x126));applyMarkerBaseStyle(_0x29e098),_0x29e098['style'][_0x3b71e9(0x332)]=_0x3b71e9(0x26a),_0x29e098['append'](document[_0x3b71e9(0x32a)](''));let _0x2690c2=createDeleteButton();return _0x2690c2[_0x3b71e9(0x193)]('pointerdown',_0x4a022a=>_0x4a022a['stopPropagation']()),_0x2690c2[_0x3b71e9(0x193)](_0x3b71e9(0x418),_0x262be8=>{const _0x333f07=_0x3b71e9;_0x262be8[_0x333f07(0x1dd)](),this['state'][_0x333f07(0x2e6)](_0x2871cc);}),_0x29e098[_0x3b71e9(0x193)](_0x3b71e9(0x2b2),_0xae8c30=>this[_0x3b71e9(0x1ed)]?.[_0x3b71e9(0x29c)](_0x2871cc,_0xae8c30)),_0x29e098[_0x3b71e9(0x27f)](_0x2690c2),_0x29e098;}[_0x5d7726(0x2b9)](_0x2e1fd9,_0x1dfbf9,_0x16ba37){const _0x12c2f9=_0x5d7726;let _0x2c462d=projectPointToViewport(multiplyMatrices(_0x16ba37[_0x12c2f9(0x17f)],_0x16ba37[_0x12c2f9(0x1fb)]),markerModelPoint(this['state'],_0x1dfbf9),_0x16ba37[_0x12c2f9(0x25b)],_0x16ba37[_0x12c2f9(0x3ad)]);if(!_0x2c462d||_0x2c462d[0x2]<0x0||_0x2c462d[0x2]>0x1){_0x2e1fd9[_0x12c2f9(0x364)][_0x12c2f9(0x2f6)]=_0x12c2f9(0x1bf);return;}_0x2e1fd9['style'][_0x12c2f9(0x2f6)]=_0x12c2f9(0x250),_0x2e1fd9[_0x12c2f9(0x364)][_0x12c2f9(0x32c)]=_0x2c462d[0x0]+'px',_0x2e1fd9[_0x12c2f9(0x364)][_0x12c2f9(0x2bf)]=_0x2c462d[0x1]+'px';}[_0x5d7726(0x256)](){const _0x54148b=_0x5d7726;this[_0x54148b(0x25a)]&&(this[_0x54148b(0x25a)][_0x54148b(0x364)][_0x54148b(0x2f6)]=_0x54148b(0x1bf));for(let _0x2a27ed of this['markers'][_0x54148b(0xf8)]())_0x2a27ed['style'][_0x54148b(0x2f6)]='none';}};const clamp=(_0x3a9cf2,_0x5372b8)=>Math[_0x5d7726(0x2dd)](_0x5372b8-0x1,Math['max'](0x0,_0x3a9cf2)),createPhysicalBrickValues=(_0x2eccc4,_0x5408e3,_0x1f2ba1,_0x511277)=>{const _0x13b938=_0x5d7726;validateVolumeChunk(_0x2eccc4,_0x511277,_0x1f2ba1['readRange']);let _0x5785da=_0x5408e3[_0x13b938(0x293)]+_0x5408e3[_0x13b938(0x2f4)]*0x2,_0x3401f4=_0x5408e3[_0x13b938(0x38f)]+_0x5408e3[_0x13b938(0x2f4)]*0x2,_0x150064=_0x5408e3[_0x13b938(0x15e)]+_0x5408e3[_0x13b938(0x2f4)]*0x2,_0x58ed20=new Float32Array(_0x5785da*_0x3401f4*_0x150064);for(let _0x274c64=0x0;_0x274c64<_0x150064;_0x274c64+=0x1){let _0x50e5f0=clamp(_0x1f2ba1['coreRange'][_0x13b938(0x1c8)]+_0x274c64-_0x5408e3['halo'],_0x2eccc4[_0x13b938(0x404)][_0x13b938(0x12c)])-_0x511277[_0x13b938(0x1d1)][_0x13b938(0x1c8)];for(let _0x316ab0=0x0;_0x316ab0<_0x3401f4;_0x316ab0+=0x1){let _0x2e9279=clamp(_0x1f2ba1[_0x13b938(0x2be)][_0x13b938(0x123)]+_0x316ab0-_0x5408e3[_0x13b938(0x2f4)],_0x2eccc4['yAxis'][_0x13b938(0x12c)])-_0x511277[_0x13b938(0x1d1)][_0x13b938(0x123)];for(let _0x58237c=0x0;_0x58237c<_0x5785da;_0x58237c+=0x1){let _0x3a5166=clamp(_0x1f2ba1['coreRange'][_0x13b938(0x37c)]+_0x58237c-_0x5408e3[_0x13b938(0x2f4)],_0x2eccc4[_0x13b938(0xf1)][_0x13b938(0x12c)])-_0x511277['range'][_0x13b938(0x37c)];_0x58ed20[(_0x274c64*_0x3401f4+_0x316ab0)*_0x5785da+_0x58237c]=_0x511277[_0x13b938(0xf8)][(_0x50e5f0*_0x511277[_0x13b938(0x38f)]+_0x2e9279)*_0x511277[_0x13b938(0x293)]+_0x3a5166];}}}return _0x58ed20;},normalizeColorStops=_0x1a816e=>{const _0x2c71b5=_0x5d7726;if(_0x1a816e[_0x2c71b5(0x1bc)]===0x0)throw Error('colorStops\x20不能为空');return _0x1a816e[_0x2c71b5(0x3ef)]((_0x9a5205,_0x3b85ee)=>{const _0xc11cc=_0x2c71b5;if(Number[_0xc11cc(0x3b1)](_0x9a5205[_0xc11cc(0x2dd)])||Number[_0xc11cc(0x3b1)](_0x9a5205[_0xc11cc(0x2e5)]))throw TypeError('第'+(_0x3b85ee+0x1)+_0xc11cc(0xe8));if(_0x9a5205[_0xc11cc(0x2dd)]>=_0x9a5205[_0xc11cc(0x2e5)])throw Error('第'+(_0x3b85ee+0x1)+_0xc11cc(0x368));return{'min':_0x9a5205['min'],'max':_0x9a5205['max'],'color':parseRasterColor(_0x9a5205[_0xc11cc(0x3a2)])};})[_0x2c71b5(0x2eb)]((_0x1f394b,_0x31308a)=>_0x1f394b[_0x2c71b5(0x2dd)]-_0x31308a[_0x2c71b5(0x2dd)]);},parseRasterColor=_0x218c34=>{const _0x4a45d9=_0x5d7726;let _0x568ccf=_0x218c34[_0x4a45d9(0x380)]()['toLowerCase']();if(_0x568ccf[_0x4a45d9(0x33b)]('#'))return parseHexColor(_0x568ccf);if(_0x568ccf[_0x4a45d9(0x33b)](_0x4a45d9(0x375)))return parseRgbColor(_0x568ccf,!0x0);if(_0x568ccf[_0x4a45d9(0x33b)]('rgb('))return parseRgbColor(_0x568ccf,!0x1);throw Error(_0x4a45d9(0x2d6)+_0x218c34);},parseHexColor=_0x1b99c1=>{const _0x49c90b=_0x5d7726;if(_0x1b99c1['length']===0x4)return normalizeRgb(Number[_0x49c90b(0x1c3)](''+_0x1b99c1[0x1]+_0x1b99c1[0x1],0x10),Number['parseInt'](''+_0x1b99c1[0x2]+_0x1b99c1[0x2],0x10),Number[_0x49c90b(0x1c3)](''+_0x1b99c1[0x3]+_0x1b99c1[0x3],0x10),0x1);if(_0x1b99c1[_0x49c90b(0x1bc)]===0x7)return normalizeRgb(Number[_0x49c90b(0x1c3)](_0x1b99c1['slice'](0x1,0x3),0x10),Number['parseInt'](_0x1b99c1[_0x49c90b(0x1a5)](0x3,0x5),0x10),Number['parseInt'](_0x1b99c1[_0x49c90b(0x1a5)](0x5,0x7),0x10),0x1);throw Error(_0x49c90b(0x318)+_0x1b99c1);},parseRgbColor=(_0xfc9885,_0x478ea8)=>{const _0x3ca2a7=_0x5d7726;let _0x100a8b=_0xfc9885['match'](/^rgba?\(([^)]+)\)$/);if(!_0x100a8b)throw Error('不支持的\x20rgb\x20颜色格式:\x20'+_0xfc9885);let _0x2a799b=_0x100a8b[0x1]['split'](',')['map'](_0x466293=>_0x466293['trim']()),_0x4a4a77=_0x478ea8?0x4:0x3;if(_0x2a799b[_0x3ca2a7(0x1bc)]!==_0x4a4a77)throw Error(_0x3ca2a7(0x319)+_0xfc9885);return normalizeRgb(Number(_0x2a799b[0x0]),Number(_0x2a799b[0x1]),Number(_0x2a799b[0x2]),_0x478ea8?Number(_0x2a799b[0x3]):0x1);},normalizeRgb=(_0x48fb4f,_0x488208,_0x4b823d,_0x1c982c)=>{const _0x4d2286=_0x5d7726;if(!isValidRgbChannel(_0x48fb4f)||!isValidRgbChannel(_0x488208)||!isValidRgbChannel(_0x4b823d))throw Error(_0x4d2286(0x2fe));if(!Number[_0x4d2286(0x373)](_0x1c982c)||_0x1c982c<0x0||_0x1c982c>0x1)throw Error('Alpha\x20颜色通道必须在0\x20~\x201之间');return[_0x48fb4f/0xff,_0x488208/0xff,_0x4b823d/0xff,_0x1c982c];},isValidRgbChannel=_0x4a97bc=>Number[_0x5d7726(0x373)](_0x4a97bc)&&_0x4a97bc>=0x0&&_0x4a97bc<=0xff,validateStops=_0x1e28f3=>{const _0x5b2735=_0x5d7726;if(_0x1e28f3[_0x5b2735(0x1bc)]===0x0)throw Error('Volume\x20opacity\x20stops\x20cannot\x20be\x20empty.\x20体积透明度节点不能为空。');let _0x32bf2c=-0x1/0x0;for(let _0x1f961b of _0x1e28f3){if(!Number[_0x5b2735(0x373)](_0x1f961b[_0x5b2735(0x1c7)])||_0x1f961b[_0x5b2735(0x1c7)]<=_0x32bf2c)throw Error('Volume\x20opacity\x20stop\x20values\x20must\x20be\x20finite\x20and\x20strictly\x20increasing.\x20体积透明度节点值必须有限且严格递增。');if(!Number[_0x5b2735(0x373)](_0x1f961b[_0x5b2735(0x36a)])||_0x1f961b[_0x5b2735(0x36a)]<0x0||_0x1f961b[_0x5b2735(0x36a)]>0x1)throw Error(_0x5b2735(0x3dc));_0x32bf2c=_0x1f961b[_0x5b2735(0x1c7)];}},findTransferInterval=(_0x4ad39d,_0x263962)=>{const _0x3b4171=_0x5d7726;if(_0x4ad39d<=_0x263962[0x0])return[0x0,0x0,0x0];for(let _0x201469=0x1;_0x201469<_0x263962[_0x3b4171(0x1bc)];_0x201469+=0x1)if(_0x4ad39d<=_0x263962[_0x201469]){let _0x260b83=_0x263962[_0x201469]-_0x263962[_0x201469-0x1];return[_0x201469-0x1,_0x201469,_0x260b83===0x0?0x0:Math[_0x3b4171(0x2dd)](0x1,Math[_0x3b4171(0x2e5)](0x0,(_0x4ad39d-_0x263962[_0x201469-0x1])/_0x260b83))];}let _0x3aca43=_0x263962[_0x3b4171(0x1bc)]-0x1;return[_0x3aca43,_0x3aca43,0x0];},prepareWebgpuVolumeTransfer=(_0x10f343,_0x4ec7be)=>{const _0x241730=_0x5d7726;validateStops(_0x4ec7be);let _0x5d5cc8=normalizeColorStops([..._0x10f343]);return{'colorStops':_0x5d5cc8[_0x241730(0x417)]((_0x565412,_0x4c451d)=>{const _0x82c74=_0x241730;let _0x54761c=_0x5d5cc8[Math[_0x82c74(0x2dd)](_0x4c451d+0x1,_0x5d5cc8[_0x82c74(0x1bc)]-0x1)][_0x82c74(0x3a2)];return[{'value':_0x565412[_0x82c74(0x2dd)],'color':_0x565412[_0x82c74(0x3a2)]},{'value':_0x565412[_0x82c74(0x2e5)],'color':_0x54761c}];}),'opacityStops':_0x4ec7be[_0x241730(0x3ef)](_0x269f05=>({..._0x269f05}))};},sampleVolumeTransferColor=(_0x475ae2,_0x431741,_0x2a02bc,_0x477aed)=>{const _0x4dc029=_0x5d7726;if(!Number['isFinite'](_0x475ae2))return[0x0,0x0,0x0,0x0];let [_0x2fcd03,_0x402da9,_0x574b48]=findTransferInterval(_0x475ae2,_0x431741[_0x4dc029(0x3ef)](_0x298057=>_0x298057[_0x4dc029(0x1c7)])),_0x1d52c1=_0x431741[_0x2fcd03],_0x2e77be=_0x431741[_0x402da9],_0x20bf6b=_0x477aed===_0x4dc029(0x350)?0x0:_0x574b48;return[_0x1d52c1['color'][0x0]+(_0x2e77be[_0x4dc029(0x3a2)][0x0]-_0x1d52c1[_0x4dc029(0x3a2)][0x0])*_0x20bf6b,_0x1d52c1[_0x4dc029(0x3a2)][0x1]+(_0x2e77be[_0x4dc029(0x3a2)][0x1]-_0x1d52c1[_0x4dc029(0x3a2)][0x1])*_0x20bf6b,_0x1d52c1[_0x4dc029(0x3a2)][0x2]+(_0x2e77be['color'][0x2]-_0x1d52c1['color'][0x2])*_0x20bf6b,(_0x1d52c1['color'][0x3]+(_0x2e77be[_0x4dc029(0x3a2)][0x3]-_0x1d52c1[_0x4dc029(0x3a2)][0x3])*_0x20bf6b)*_0x2a02bc];},sampleVolumeTransferOpacity=(_0x1afdc8,_0x51a021,_0x53c5e3)=>{const _0x58de5c=_0x5d7726;if(!Number[_0x58de5c(0x373)](_0x1afdc8))return 0x0;let [_0x411672,_0x22ec32,_0x319cdd]=findTransferInterval(_0x1afdc8,_0x51a021[_0x58de5c(0x3ef)](_0x5c3d50=>_0x5c3d50[_0x58de5c(0x1c7)])),_0x33442e=_0x53c5e3==='step'?0x0:_0x319cdd;return _0x51a021[_0x411672][_0x58de5c(0x36a)]+(_0x51a021[_0x22ec32][_0x58de5c(0x36a)]-_0x51a021[_0x411672][_0x58de5c(0x36a)])*_0x33442e;},DEFAULT_CAMERA={'position':[1.4,1.2,2.1],'target':[0.5,0.5,0.5],'up':[0x0,0x1,0x0],'projection':{'type':_0x5d7726(0x3c8),'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=_0x11f8bb=>Math[_0x5d7726(0x2dd)](0x1,Math[_0x5d7726(0x2e5)](0x0,_0x11f8bb)),qualityStepLength=_0x27439d=>_0x27439d==='performance'?0.012:_0x27439d===_0x5d7726(0x1e5)?0.0025:_0x27439d===_0x5d7726(0x21d)?0.005:0.006,qualityUploadCount=_0x8668c6=>_0x8668c6===_0x5d7726(0x333)?0x8:_0x8668c6==='quality'?0x2:0x4,nextAutoQuality=(_0x4396dd,_0x36991f)=>_0x36991f>0x18?_0x4396dd===_0x5d7726(0x1e5)?_0x5d7726(0x21d):_0x5d7726(0x333):_0x36991f<0xe?_0x4396dd===_0x5d7726(0x333)?_0x5d7726(0x21d):_0x5d7726(0x1e5):_0x4396dd,validatePositiveOption=(_0x118bf9,_0x3563f1)=>{const _0x4b6bb9=_0x5d7726;if(!Number['isFinite'](_0x118bf9)||_0x118bf9<=0x0)throw Error(_0x3563f1+_0x4b6bb9(0x204)+_0x3563f1+'\x20必须是大于\x200\x20的有限数。');return _0x118bf9;},normalizeClipBox=(_0xa2ccd1,_0x3b8065)=>{const _0x334fab=_0x5d7726;if(!_0x3b8065)return{'minimum':[0x0,0x0,0x0],'maximum':[0x1,0x1,0x1]};let _0x4d4a6e=clamp01(volumeAxisValueToNormalized(_0xa2ccd1['metadata'][_0x334fab(0xf1)],_0x3b8065[_0x334fab(0x271)])),_0xdaa20a=clamp01(volumeAxisValueToNormalized(_0xa2ccd1[_0x334fab(0x25f)][_0x334fab(0xf1)],_0x3b8065['maxX'])),_0x9094f4=clamp01(volumeAxisValueToNormalized(_0xa2ccd1[_0x334fab(0x25f)][_0x334fab(0x3b6)],_0x3b8065[_0x334fab(0x17d)])),_0x281513=clamp01(volumeAxisValueToNormalized(_0xa2ccd1['metadata'][_0x334fab(0x3b6)],_0x3b8065['maxY'])),_0xecbae=clamp01(volumeAxisValueToNormalized(_0xa2ccd1[_0x334fab(0x25f)][_0x334fab(0x404)],_0x3b8065[_0x334fab(0x18c)])),_0x476dd4=clamp01(volumeAxisValueToNormalized(_0xa2ccd1[_0x334fab(0x25f)]['zAxis'],_0x3b8065[_0x334fab(0x280)]));return{'minimum':[Math[_0x334fab(0x2dd)](_0x4d4a6e,_0xdaa20a),Math[_0x334fab(0x2dd)](_0x9094f4,_0x281513),Math[_0x334fab(0x2dd)](_0xecbae,_0x476dd4)],'maximum':[Math[_0x334fab(0x2e5)](_0x4d4a6e,_0xdaa20a),Math['max'](_0x9094f4,_0x281513),Math[_0x334fab(0x2e5)](_0xecbae,_0x476dd4)]};},createAxesMesh=()=>({'id':_0x5d7726(0x236),'topology':_0x5d7726(0x389),'depthMode':_0x5d7726(0x365),'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 _0x3876da=_0x5d7726;let _0x5a9f44=[0.1,0.53,0.56,0.62],_0x392305=[[0x0,0x0,0x0],[0x1,0x0,0x0],[0x0,0x1,0x0],[0x1,0x1,0x0],[0x0,0x0,0x1],[0x1,0x0,0x1],[0x0,0x1,0x1],[0x1,0x1,0x1]],_0x34a037=[[0x0,0x1],[0x0,0x2],[0x1,0x3],[0x2,0x3],[0x4,0x5],[0x4,0x6],[0x5,0x7],[0x6,0x7],[0x0,0x4],[0x1,0x5],[0x2,0x6],[0x3,0x7]],_0x33aa0c=new Float32Array(_0x34a037[_0x3876da(0x1bc)]*0x2*0x7),_0xc3e22e=0x0;for(let _0x29427a of _0x34a037)for(let _0x1db8ce of _0x29427a)_0x33aa0c[_0x3876da(0x1f8)]([..._0x392305[_0x1db8ce],..._0x5a9f44],_0xc3e22e),_0xc3e22e+=0x7;return{'id':_0x3876da(0x391),'topology':_0x3876da(0x389),'depthMode':'scene','vertices':_0x33aa0c};},createProfileSceneMesh=(_0x1b8769,_0xcf1ce1,_0x4ce32d,_0x2f89ca)=>{const _0x1310ef=_0x5d7726;let _0x3b2ad8=new Float32Array(_0x1b8769[_0x1310ef(0x1b6)][_0x1310ef(0x1bc)]*0x7);for(let _0x367da1=0x0;_0x367da1<_0x1b8769['indices'][_0x1310ef(0x1bc)];_0x367da1+=0x1){let _0x51e87e=_0x1b8769[_0x1310ef(0x1b6)][_0x367da1],_0x16ba42=_0x51e87e*0x3,_0x3f5d8e=sampleVolumeTransferOpacity(_0x1b8769['values'][_0x51e87e],_0x4ce32d,_0x2f89ca),_0x2cf686=sampleVolumeTransferColor(_0x1b8769['values'][_0x51e87e],_0xcf1ce1,_0x1b8769['opacity']*_0x3f5d8e,_0x2f89ca);_0x3b2ad8[_0x1310ef(0x1f8)]([_0x1b8769[_0x1310ef(0x195)][_0x16ba42],_0x1b8769[_0x1310ef(0x195)][_0x16ba42+0x1],_0x1b8769[_0x1310ef(0x195)][_0x16ba42+0x2],_0x2cf686[0x0]*_0x2cf686[0x3],_0x2cf686[0x1]*_0x2cf686[0x3],_0x2cf686[0x2]*_0x2cf686[0x3],_0x2cf686[0x3]],_0x367da1*0x7);}return{'id':_0x1b8769['id'],'topology':'triangle-list','depthMode':_0x1b8769[_0x1310ef(0x3fa)],'vertices':_0x3b2ad8};},descriptorDistance=(_0x2ae834,_0x133e0d,_0x4f9058)=>{const _0x336f0b=_0x5d7726;let _0x3326af=(_0x2ae834[_0x336f0b(0x2e2)]['x']+0.5)/_0x133e0d[_0x336f0b(0x1a4)],_0x2b9cf9=(_0x2ae834[_0x336f0b(0x2e2)]['y']+0.5)/_0x133e0d['countY'],_0x136363=(_0x2ae834['coordinate']['z']+0.5)/_0x133e0d[_0x336f0b(0x11e)];return Math[_0x336f0b(0x31a)](_0x3326af-_0x4f9058[_0x336f0b(0x3c6)][0x0],_0x2b9cf9-_0x4f9058[_0x336f0b(0x3c6)][0x1],_0x136363-_0x4f9058[_0x336f0b(0x3c6)][0x2]);},descriptorLogicalIndex=(_0x5ecf5d,_0x521bc6)=>(_0x5ecf5d['coordinate']['z']*_0x521bc6[_0x5d7726(0x38a)]+_0x5ecf5d[_0x5d7726(0x2e2)]['y'])*_0x521bc6[_0x5d7726(0x1a4)]+_0x5ecf5d[_0x5d7726(0x2e2)]['x'],descriptorContainsSlice=(_0x2cbe6a,_0x5e150a,_0x22b318,_0x83492e)=>{const _0x296fa2=_0x5d7726;let _0x1a0c08=_0x22b318==='x'?{'start':_0x2cbe6a[_0x296fa2(0x2be)][_0x296fa2(0x37c)],'count':_0x2cbe6a[_0x296fa2(0x2be)][_0x296fa2(0x145)],'size':_0x5e150a[_0x296fa2(0x25f)][_0x296fa2(0xf1)][_0x296fa2(0x12c)]}:_0x22b318==='y'?{'start':_0x2cbe6a[_0x296fa2(0x2be)]['levelStart'],'count':_0x2cbe6a[_0x296fa2(0x2be)]['levelCount'],'size':_0x5e150a[_0x296fa2(0x25f)][_0x296fa2(0x3b6)][_0x296fa2(0x12c)]}:{'start':_0x2cbe6a['coreRange'][_0x296fa2(0x1c8)],'count':_0x2cbe6a['coreRange'][_0x296fa2(0x1e9)],'size':_0x5e150a[_0x296fa2(0x25f)]['zAxis'][_0x296fa2(0x12c)]};return _0x83492e>=_0x1a0c08['start']/_0x1a0c08[_0x296fa2(0x261)]&&_0x83492e<=(_0x1a0c08[_0x296fa2(0x141)]+_0x1a0c08[_0x296fa2(0x12c)])/_0x1a0c08[_0x296fa2(0x261)];},descriptorContainsProfile=(_0x5de3e5,_0xc6b7ff,_0x252943)=>{const _0x26824a=_0x5d7726;let _0xf29dbb=_0x5de3e5[_0x26824a(0x2be)][_0x26824a(0x37c)]/_0xc6b7ff[_0x26824a(0x25f)]['xAxis'][_0x26824a(0x12c)],_0xa2a6a0=(_0x5de3e5[_0x26824a(0x2be)][_0x26824a(0x37c)]+_0x5de3e5[_0x26824a(0x2be)][_0x26824a(0x145)])/_0xc6b7ff[_0x26824a(0x25f)]['xAxis'][_0x26824a(0x12c)],_0x2206a5=_0x5de3e5[_0x26824a(0x2be)]['levelStart']/_0xc6b7ff[_0x26824a(0x25f)]['yAxis'][_0x26824a(0x12c)],_0x4389f2=(_0x5de3e5[_0x26824a(0x2be)][_0x26824a(0x123)]+_0x5de3e5[_0x26824a(0x2be)][_0x26824a(0x2a0)])/_0xc6b7ff[_0x26824a(0x25f)][_0x26824a(0x3b6)][_0x26824a(0x12c)],_0x5878ff=_0x5de3e5[_0x26824a(0x2be)]['sourceYStart']/_0xc6b7ff[_0x26824a(0x25f)][_0x26824a(0x404)]['count'],_0xc15c17=(_0x5de3e5[_0x26824a(0x2be)][_0x26824a(0x1c8)]+_0x5de3e5['coreRange'][_0x26824a(0x1e9)])/_0xc6b7ff[_0x26824a(0x25f)]['zAxis'][_0x26824a(0x12c)];return _0x252943['some'](_0x577bf0=>{const _0x5785b0=_0x26824a;let _0x199498=volumeAxisValueToNormalized(_0xc6b7ff[_0x5785b0(0x25f)]['yAxis'],_0x577bf0[_0x5785b0(0x3be)][0x0]),_0x106685=volumeAxisValueToNormalized(_0xc6b7ff[_0x5785b0(0x25f)][_0x5785b0(0x3b6)],_0x577bf0[_0x5785b0(0x3be)][_0x577bf0[_0x5785b0(0x3be)][_0x5785b0(0x1bc)]-0x1]);if(Math['max'](_0x199498,_0x106685)<_0x2206a5||Math[_0x5785b0(0x2dd)](_0x199498,_0x106685)>_0x4389f2)return!0x1;for(let _0x3a5877=0x0;_0x3a5877<_0x577bf0[_0x5785b0(0x39e)][_0x5785b0(0x1bc)];_0x3a5877+=0x2){let _0x11dc4d=volumeAxisValueToNormalized(_0xc6b7ff[_0x5785b0(0x25f)][_0x5785b0(0xf1)],_0x577bf0[_0x5785b0(0x39e)][_0x3a5877]),_0x30ff80=volumeAxisValueToNormalized(_0xc6b7ff[_0x5785b0(0x25f)]['zAxis'],_0x577bf0[_0x5785b0(0x39e)][_0x3a5877+0x1]);if(_0x11dc4d>=_0xf29dbb&&_0x11dc4d<=_0xa2a6a0&&_0x30ff80>=_0x5878ff&&_0x30ff80<=_0xc15c17)return!0x0;}return!0x1;});},descriptorDemandPriority=(_0x362427,_0x25a941,_0x1893be,_0x2fe07d)=>{const _0x324e3b=_0x5d7726;let _0x3adffe=_0x1893be['preview'];if(_0x3adffe){let _0x34c3b5=_0x3adffe[_0x324e3b(0x24c)]==='x'?_0x25a941[_0x324e3b(0x25f)][_0x324e3b(0xf1)]:_0x3adffe[_0x324e3b(0x24c)]==='y'?_0x25a941[_0x324e3b(0x25f)]['yAxis']:_0x25a941[_0x324e3b(0x25f)][_0x324e3b(0x404)];if(descriptorContainsSlice(_0x362427,_0x25a941,_0x3adffe['axis'],volumeAxisValueToNormalized(_0x34c3b5,_0x3adffe[_0x324e3b(0x3c6)])))return 0x0;}for(let _0x35ee21 of _0x1893be['lockedSlices']){let _0x2dbdd5=_0x35ee21[_0x324e3b(0x24c)]==='x'?_0x25a941['metadata']['xAxis']:_0x35ee21['axis']==='y'?_0x25a941['metadata']['yAxis']:_0x25a941[_0x324e3b(0x25f)][_0x324e3b(0x404)];if(_0x35ee21['visible']&&descriptorContainsSlice(_0x362427,_0x25a941,_0x35ee21['axis'],volumeAxisValueToNormalized(_0x2dbdd5,_0x35ee21[_0x324e3b(0x3c6)])))return 0x1;}return descriptorContainsProfile(_0x362427,_0x25a941,_0x2fe07d)?0x2:0x3;};var VolumeScene=class VolumeScene{[_0x5d7726(0x410)]=_0x5d7726(0x2cf);['renderer'];[_0x5d7726(0x34d)];[_0x5d7726(0x191)];[_0x5d7726(0x1d9)];['interactionElement'];[_0x5d7726(0x188)]=[];[_0x5d7726(0x345)];[_0x5d7726(0x26b)];['descriptors'];[_0x5d7726(0x2e1)];[_0x5d7726(0x35d)];[_0x5d7726(0x329)];[_0x5d7726(0x153)];['profiles']=[];[_0x5d7726(0x383)];[_0x5d7726(0x219)]=0x0;['loadedKeys']=new Set();['pendingKeys']=new Map();[_0x5d7726(0x34c)]=new Set();[_0x5d7726(0x34b)]=0x0;[_0x5d7726(0x31d)]=!0x1;['baseModelMatrix'];['verticalScale'];[_0x5d7726(0x3ba)];['clipBox'];['quality'];[_0x5d7726(0x15b)]=_0x5d7726(0x21d);[_0x5d7726(0x2ea)]=0x0;[_0x5d7726(0x398)]=0x0;[_0x5d7726(0x13e)];[_0x5d7726(0x2a2)]=null;['navigationMode'];['pixelRatioCap'];[_0x5d7726(0x29a)];[_0x5d7726(0x178)];[_0x5d7726(0x173)];[_0x5d7726(0x299)]=new Set();[_0x5d7726(0x189)]=!0x0;['brickScheduleDirty']=!0x1;['brickScheduleCount']=0x0;[_0x5d7726(0x1cf)]=0x0;[_0x5d7726(0x276)]=null;[_0x5d7726(0x111)];['slicePlateColor'];[_0x5d7726(0x1f6)];['lastSubmittedFrameTimestamp']=0x0;[_0x5d7726(0x384)]=0x0;['actualFrameIntervalMilliseconds']=0x0;[_0x5d7726(0x26d)]=new Set();[_0x5d7726(0x127)]=null;[_0x5d7726(0x396)]=null;constructor(_0x267dd0,_0x19e194){const _0x520dae=_0x5d7726;this['renderer']=_0x19e194,this[_0x520dae(0x191)]=_0x267dd0['canvas'],this['interactionElement']=_0x267dd0[_0x520dae(0x36e)]??_0x267dd0[_0x520dae(0x191)],this[_0x520dae(0x1d9)]=_0x267dd0[_0x520dae(0x1d9)]??_0x520dae(0x161),this['source']=_0x267dd0[_0x520dae(0x345)],this[_0x520dae(0x383)]=_0x267dd0['timeIndex']??0x0,this[_0x520dae(0x26b)]=this[_0x520dae(0x357)](_0x267dd0),this[_0x520dae(0x40f)]=createVolumeBrickDescriptors(this['source'][_0x520dae(0x25f)],this[_0x520dae(0x26b)]),this['volumeCamera']=new VolumeCamera({'state':_0x267dd0[_0x520dae(0x331)]??DEFAULT_CAMERA}),this[_0x520dae(0x2e1)]=this['createSliceState'](_0x267dd0);let _0x3d603c=prepareWebgpuVolumeTransfer(_0x267dd0['colorStops'],_0x267dd0[_0x520dae(0x153)]);if(this[_0x520dae(0x35d)]=_0x3d603c[_0x520dae(0x35d)],this[_0x520dae(0x329)]=_0x267dd0[_0x520dae(0x35d)],this['opacityStops']=_0x267dd0[_0x520dae(0x153)],this[_0x520dae(0x185)]=_0x267dd0[_0x520dae(0x1fb)]??IDENTITY_MATRIX,this['verticalScale']=validatePositiveOption(_0x267dd0[_0x520dae(0x3a9)]??0x1,_0x520dae(0x3a9)),this[_0x520dae(0x3ba)]=_0x267dd0[_0x520dae(0x3ba)]??_0x520dae(0x322),this[_0x520dae(0x3ba)]===_0x520dae(0x14f)&&_0x267dd0[_0x520dae(0x1fb)])throw Error(_0x520dae(0x169));this['clipBox']=_0x267dd0[_0x520dae(0x125)]??null,this[_0x520dae(0x1e5)]=_0x267dd0[_0x520dae(0x1e5)]??'auto',this[_0x520dae(0x3cd)]=_0x267dd0[_0x520dae(0x3cd)]??_0x520dae(0x171),this['pixelRatioCap']=validatePositiveOption(_0x267dd0[_0x520dae(0x159)]??0x2,_0x520dae(0x159)),this[_0x520dae(0x29a)]=validatePositiveOption(_0x267dd0[_0x520dae(0x29a)]??0x1,_0x520dae(0x29a)),this[_0x520dae(0x178)]=validatePositiveOption(_0x267dd0[_0x520dae(0x178)]??0.6,_0x520dae(0x178)),this['interactionStepScale']=validatePositiveOption(_0x267dd0[_0x520dae(0x173)]??0x1,'interactionStepScale'),this['colorMode']=_0x267dd0['colorMode']??_0x520dae(0x3c7),this[_0x520dae(0x111)]=_0x267dd0['sliceInteraction']?.['depthMode']??_0x520dae(0x312),this['slicePlateColor']=_0x267dd0[_0x520dae(0x127)]?.[_0x520dae(0x3a6)],this[_0x520dae(0x1f6)]=_0x267dd0[_0x520dae(0x127)]?.[_0x520dae(0x1f6)],this[_0x520dae(0x35c)][_0x520dae(0x349)](()=>this[_0x520dae(0x328)]()),this[_0x520dae(0x35c)][_0x520dae(0x2a3)](_0x3d603c[_0x520dae(0x35d)],_0x3d603c['opacityStops']);let _0x59b931=_0x267dd0[_0x520dae(0x11f)]??this[_0x520dae(0x3ba)]===_0x520dae(0x322);this[_0x520dae(0x35c)][_0x520dae(0x29d)](_0x59b931?[createBoundsMesh(),createAxesMesh()]:[]),this['renderer']['update']({'renderMode':_0x267dd0[_0x520dae(0x415)]??_0x520dae(0x283),'colorMode':this[_0x520dae(0x13e)],'opacity':_0x267dd0[_0x520dae(0x36a)]??0.3,'densityScale':_0x267dd0[_0x520dae(0x201)]??0x1,'stepLength':this['getStepLength'](),'volumeDimFactor':this[_0x520dae(0x2e1)][_0x520dae(0x22e)]}),this['configureSource'](),this[_0x520dae(0x146)](),this[_0x520dae(0x19b)](),this[_0x520dae(0x135)](_0x267dd0),this[_0x520dae(0x3ed)]();}static async[_0x5d7726(0x402)](_0x1166eb){const _0x4f2c18=_0x5d7726;if(validateVolumeSource(_0x1166eb[_0x4f2c18(0x345)]),validateVolumeTimeIndex(_0x1166eb['source'][_0x4f2c18(0x25f)],_0x1166eb['timeIndex']??0x0),(_0x1166eb[_0x4f2c18(0x14a)]?.[_0x4f2c18(0x2f4)]??0x1)!==0x1)throw Error('The\x20current\x20WebGPU\x20volume\x20atlas\x20requires\x20halo:\x201.\x20当前\x20WebGPU\x20体积图集要求\x20halo\x20为\x201。');let _0x5f473a=_0x1166eb[_0x4f2c18(0x14a)]?.[_0x4f2c18(0x162)]??0x20000000,_0x59b1b6=new WebgpuVolumeSceneRenderer({'memoryTargetBytes':_0x5f473a,'memoryHardLimitBytes':_0x1166eb[_0x4f2c18(0x14a)]?.[_0x4f2c18(0x2fc)]??_0x5f473a});await _0x59b1b6[_0x4f2c18(0x3fb)](_0x1166eb[_0x4f2c18(0x191)]);let _0x41ad25=new VolumeScene(_0x1166eb,_0x59b1b6);return _0x41ad25[_0x4f2c18(0xfe)](),_0x41ad25['scheduleBricks'](),_0x41ad25['renderMode']===_0x4f2c18(0x161)&&_0x41ad25[_0x4f2c18(0x14e)](),_0x41ad25;}get[_0x5d7726(0x331)](){const _0x33e6d9=_0x5d7726;return this[_0x33e6d9(0x34d)]['state'];}get[_0x5d7726(0x2c2)](){const _0x4b162b=_0x5d7726;return this[_0x4b162b(0x2e1)][_0x4b162b(0x2c2)];}get['statistics'](){const _0x29d775=_0x5d7726;let _0x5b5d0c=this[_0x29d775(0x1d9)]===_0x29d775(0x267)||this[_0x29d775(0x3f2)]()||performance[_0x29d775(0x30a)]()-this['lastSubmittedFrameTimestamp']<=0xfa?this['actualFrameIntervalMilliseconds']:0x0;return{...this[_0x29d775(0x35c)][_0x29d775(0x3ec)],'pendingBrickCount':this[_0x29d775(0x3b5)][_0x29d775(0x261)],'brickScheduleCount':this[_0x29d775(0x21f)],'brickSortCount':this[_0x29d775(0x1cf)],'actualFrameIntervalMilliseconds':_0x5b5d0c,'estimatedFps':_0x5b5d0c>0x0?0x3e8/_0x5b5d0c:0x0,'effectiveQuality':this['getEffectiveQuality'](),'effectiveRenderScale':this['getEffectiveRenderScale'](),'interactionKind':this[_0x29d775(0x1f5)]()};}[_0x5d7726(0x19e)](_0x44a8e8){const _0x51519f=_0x5d7726;_0x44a8e8[_0x51519f(0x331)]&&this[_0x51519f(0x2d9)](_0x44a8e8['camera']),_0x44a8e8[_0x51519f(0x1fb)]&&(this[_0x51519f(0x185)]=[..._0x44a8e8['modelMatrix']]),_0x44a8e8[_0x51519f(0x3a9)]!==void 0x0&&(this[_0x51519f(0x3a9)]=validatePositiveOption(_0x44a8e8[_0x51519f(0x3a9)],'verticalScale')),_0x44a8e8[_0x51519f(0x125)]!==void 0x0&&(this[_0x51519f(0x125)]=_0x44a8e8[_0x51519f(0x125)]),_0x44a8e8[_0x51519f(0x1e5)]&&(this['quality']=_0x44a8e8[_0x51519f(0x1e5)]),_0x44a8e8[_0x51519f(0x3cd)]&&(this[_0x51519f(0x3cd)]=_0x44a8e8[_0x51519f(0x3cd)]);let _0x8cb9cf=!0x1;if(_0x44a8e8[_0x51519f(0x159)]!==void 0x0&&(this[_0x51519f(0x159)]=validatePositiveOption(_0x44a8e8[_0x51519f(0x159)],'pixelRatioCap'),_0x8cb9cf=!0x0),_0x44a8e8[_0x51519f(0x29a)]!==void 0x0&&(this[_0x51519f(0x29a)]=validatePositiveOption(_0x44a8e8[_0x51519f(0x29a)],_0x51519f(0x29a)),_0x8cb9cf=!0x0),_0x44a8e8[_0x51519f(0x178)]!==void 0x0&&(this[_0x51519f(0x178)]=validatePositiveOption(_0x44a8e8['interactionRenderScale'],_0x51519f(0x178)),_0x8cb9cf=this[_0x51519f(0x3f2)]()),_0x44a8e8[_0x51519f(0x173)]!==void 0x0&&(this[_0x51519f(0x173)]=validatePositiveOption(_0x44a8e8[_0x51519f(0x173)],_0x51519f(0x173))),_0x44a8e8[_0x51519f(0x13e)]&&(this['colorMode']=_0x44a8e8['colorMode']),_0x44a8e8[_0x51519f(0x35d)]||_0x44a8e8[_0x51519f(0x153)]){let _0x451e99=prepareWebgpuVolumeTransfer(_0x44a8e8[_0x51519f(0x35d)]??this[_0x51519f(0x329)],_0x44a8e8['opacityStops']??this['opacityStops']);this[_0x51519f(0x35d)]=_0x451e99[_0x51519f(0x35d)],this['colorInputs']=_0x44a8e8[_0x51519f(0x35d)]??this[_0x51519f(0x329)],this['opacityStops']=_0x44a8e8[_0x51519f(0x153)]??this['opacityStops'],this[_0x51519f(0x35c)][_0x51519f(0x2a3)](_0x451e99[_0x51519f(0x35d)],_0x451e99['opacityStops']),this[_0x51519f(0x20d)]();}_0x44a8e8[_0x51519f(0x13e)]&&!_0x44a8e8[_0x51519f(0x35d)]&&!_0x44a8e8['opacityStops']&&this['rebuildProfiles'](),this[_0x51519f(0x35c)][_0x51519f(0x19e)]({'renderMode':_0x44a8e8[_0x51519f(0x415)],'colorMode':_0x44a8e8['colorMode'],'opacity':_0x44a8e8[_0x51519f(0x36a)],'densityScale':_0x44a8e8['densityScale'],'stepLength':this[_0x51519f(0x3d5)]()}),this[_0x51519f(0x146)](),_0x8cb9cf&&this[_0x51519f(0xfe)](),this['requestRender']();}[_0x5d7726(0x2d9)](_0x206543){const _0x13a457=_0x5d7726;this[_0x13a457(0x34d)][_0x13a457(0x198)](_0x206543),this[_0x13a457(0x263)](),this[_0x13a457(0x14e)]();}['setTimeIndex'](_0x17019c){const _0x2feda3=_0x5d7726;validateVolumeTimeIndex(this[_0x2feda3(0x345)][_0x2feda3(0x25f)],_0x17019c),_0x17019c!==this[_0x2feda3(0x383)]&&(this[_0x2feda3(0x383)]=_0x17019c,this[_0x2feda3(0xed)]());}[_0x5d7726(0x339)](_0x1c39f2){const _0x3f9ab4=_0x5d7726;validateVolumeSource(_0x1c39f2),this['source']=_0x1c39f2,this[_0x3f9ab4(0x383)]=Math[_0x3f9ab4(0x2dd)](this[_0x3f9ab4(0x383)],_0x1c39f2['metadata'][_0x3f9ab4(0x2c6)]-0x1),this[_0x3f9ab4(0x26b)]=createVolumeBrickLayout(_0x1c39f2[_0x3f9ab4(0x25f)],this[_0x3f9ab4(0x26b)][_0x3f9ab4(0x2df)]),this['descriptors']=createVolumeBrickDescriptors(_0x1c39f2[_0x3f9ab4(0x25f)],this[_0x3f9ab4(0x26b)]),this[_0x3f9ab4(0x2e1)][_0x3f9ab4(0x29d)](_0x1c39f2[_0x3f9ab4(0x25f)]),this['configureSource'](),this[_0x3f9ab4(0x146)](),this['resetBrickRequests'](),this[_0x3f9ab4(0x20d)](),this[_0x3f9ab4(0x14e)]();}['setRouteProfiles'](_0x512897){const _0xca4dc3=_0x5d7726;this[_0xca4dc3(0x282)]=_0x512897,this[_0xca4dc3(0x20d)](),this[_0xca4dc3(0x263)](),this['requestRender']();}[_0x5d7726(0xee)](_0x24722b){const _0x169273=_0x5d7726;this[_0x169273(0x2e1)][_0x169273(0x38b)](_0x24722b);}['beginInteraction'](_0x5b6d57){const _0x3a9746=_0x5d7726;if(this[_0x3a9746(0x31d)]||this[_0x3a9746(0x299)][_0x3a9746(0x2de)](_0x5b6d57))return;let _0x4a9f11=!this[_0x3a9746(0x3f2)]();this[_0x3a9746(0x299)]['add'](_0x5b6d57),_0x4a9f11&&(this['lastTimingFrameTimestamp']=0x0,this['resize']());}[_0x5d7726(0x1ca)](_0x59a156){const _0x3a32b1=_0x5d7726;this[_0x3a32b1(0x31d)]||!this[_0x3a32b1(0x299)][_0x3a32b1(0x370)](_0x59a156)||this[_0x3a32b1(0x3f2)]()||(this[_0x3a32b1(0x384)]=0x0,this[_0x3a32b1(0xfe)]());}['lockSlice'](_0xa4d44e,_0x2d060e){const _0x6028d7=_0x5d7726;this[_0x6028d7(0x2e1)]['updatePreview'](_0xa4d44e,_0x2d060e);let _0x1682e6=this[_0x6028d7(0x2e1)][_0x6028d7(0x31b)]();if(!_0x1682e6)throw Error(_0x6028d7(0x237));return _0x1682e6;}[_0x5d7726(0x304)](_0x300b41,_0x50377a){const _0x35e9b1=_0x5d7726;this[_0x35e9b1(0x2e1)][_0x35e9b1(0x34a)](_0x300b41,_0x50377a);}[_0x5d7726(0x2e6)](_0x15ee36){const _0x8d5f=_0x5d7726;this[_0x8d5f(0x2e1)]['removeSlice'](_0x15ee36);}[_0x5d7726(0x330)](){const _0x12ea3a=_0x5d7726;this[_0x12ea3a(0x2e1)][_0x12ea3a(0x330)]();}[_0x5d7726(0xfe)](){const _0x1c8bad=_0x5d7726;let _0x3e0868=Math[_0x1c8bad(0x2dd)](window['devicePixelRatio']||0x1,this['pixelRatioCap'])*this['getEffectiveRenderScale'](),_0x358d65=Math[_0x1c8bad(0x2e5)](0x1,Math[_0x1c8bad(0x3e5)](this[_0x1c8bad(0x191)][_0x1c8bad(0x24a)]*_0x3e0868||this[_0x1c8bad(0x191)]['width']||0x1)),_0x3431b9=Math['max'](0x1,Math['round'](this[_0x1c8bad(0x191)]['clientHeight']*_0x3e0868||this[_0x1c8bad(0x191)][_0x1c8bad(0x38f)]||0x1));this['volumeCamera']['setAspect'](_0x358d65/_0x3431b9),(this[_0x1c8bad(0x191)]['width']!==_0x358d65||this[_0x1c8bad(0x191)][_0x1c8bad(0x38f)]!==_0x3431b9)&&this['renderer'][_0x1c8bad(0xfe)](_0x358d65,_0x3431b9),this['requestRender']();}['render'](){const _0xdfed9f=_0x5d7726;if(this[_0xdfed9f(0x31d)])return;this[_0xdfed9f(0x196)](),this[_0xdfed9f(0x326)]();let _0x1247f1=this[_0xdfed9f(0x34d)]['matrices'];if(this[_0xdfed9f(0x35c)][_0xdfed9f(0x2d9)]({'viewProjection':Array[_0xdfed9f(0x3c0)](_0x1247f1[_0xdfed9f(0x10b)]),'inverseViewProjection':Array[_0xdfed9f(0x3c0)](_0x1247f1[_0xdfed9f(0x1b8)]),'cameraPosition':this[_0xdfed9f(0x34d)]['state'][_0xdfed9f(0x3c6)]}),this['renderer'][_0xdfed9f(0x19e)]({'stepLength':this[_0xdfed9f(0x3d5)]()}),!this[_0xdfed9f(0x35c)][_0xdfed9f(0x27d)]()){this[_0xdfed9f(0x189)]=!0x0;return;}this[_0xdfed9f(0x189)]=!0x1,this[_0xdfed9f(0xf2)](performance[_0xdfed9f(0x30a)]()),this['markerOverlay']?.[_0xdfed9f(0x19e)]();}[_0x5d7726(0xf0)](){const _0x339934=_0x5d7726;if(this[_0x339934(0x31d)])return Promise['reject'](Error(_0x339934(0x300)));this[_0x339934(0x196)](),this[_0x339934(0x326)]();let _0xd7f91b=this['volumeCamera']['matrices'];return this[_0x339934(0x35c)][_0x339934(0x2d9)]({'viewProjection':Array[_0x339934(0x3c0)](_0xd7f91b['viewProjection']),'inverseViewProjection':Array[_0x339934(0x3c0)](_0xd7f91b['inverseViewProjection']),'cameraPosition':this[_0x339934(0x34d)][_0x339934(0x39b)][_0x339934(0x3c6)]}),this[_0x339934(0x35c)][_0x339934(0xf0)]();}[_0x5d7726(0x416)](){const _0xe5fef0=_0x5d7726;if(!this[_0xe5fef0(0x31d)]){this[_0xe5fef0(0x31d)]=!0x0,this['sourceGeneration']+=0x1;for(let _0x27a3a7 of this[_0xe5fef0(0x26d)])_0x27a3a7[_0xe5fef0(0x243)]();this['requestControllers'][_0xe5fef0(0x1ad)](),cancelAnimationFrame(this[_0xe5fef0(0x34b)]),this[_0xe5fef0(0x35c)][_0xe5fef0(0x349)](null),this[_0xe5fef0(0x188)][_0xe5fef0(0x133)](0x0)[_0xe5fef0(0x2f1)](_0x7ada53=>_0x7ada53()),this[_0xe5fef0(0x35c)][_0xe5fef0(0x416)](),this[_0xe5fef0(0x127)]?.[_0xe5fef0(0x416)](),this[_0xe5fef0(0x396)]?.[_0xe5fef0(0x416)](),this[_0xe5fef0(0x1c6)][_0xe5fef0(0x1ad)](),this[_0xe5fef0(0x3b5)][_0xe5fef0(0x1ad)](),this[_0xe5fef0(0x34c)][_0xe5fef0(0x1ad)](),this[_0xe5fef0(0x299)][_0xe5fef0(0x1ad)](),this[_0xe5fef0(0x276)]=null;}}[_0x5d7726(0x357)](_0x5220e9){const _0x2c8c93=_0x5d7726;return createVolumeBrickLayout(_0x5220e9[_0x2c8c93(0x345)][_0x2c8c93(0x25f)],{'width':_0x5220e9[_0x2c8c93(0x14a)]?.[_0x2c8c93(0x293)],'height':_0x5220e9[_0x2c8c93(0x14a)]?.['height'],'depth':_0x5220e9[_0x2c8c93(0x14a)]?.[_0x2c8c93(0x15e)],'halo':_0x5220e9[_0x2c8c93(0x14a)]?.[_0x2c8c93(0x2f4)]});}[_0x5d7726(0x254)](){const _0x236e88=_0x5d7726;return this['quality']==='auto'?this['autoQuality']:this[_0x236e88(0x1e5)];}[_0x5d7726(0x3d5)](){const _0x5f234b=_0x5d7726;let _0x9fe382=qualityStepLength(this[_0x5f234b(0x254)]());return(this[_0x5f234b(0x3ba)]===_0x5f234b(0x14f)?_0x9fe382*0.05:_0x9fe382)*(this[_0x5f234b(0x3f2)]()?this['interactionStepScale']:0x1);}['isInteracting'](){const _0x2f0b3c=_0x5d7726;return this[_0x2f0b3c(0x299)][_0x2f0b3c(0x261)]>0x0;}[_0x5d7726(0x1f5)](){const _0x11543e=_0x5d7726;return this[_0x11543e(0x299)][_0x11543e(0x261)]===0x0?_0x11543e(0x20f):this[_0x11543e(0x299)][_0x11543e(0x261)]>0x1?_0x11543e(0x371):this['activeInteractions'][_0x11543e(0xf8)]()[_0x11543e(0x3f3)]()[_0x11543e(0x1c7)]??'idle';}['getEffectiveRenderScale'](){const _0xf34a62=_0x5d7726;return this['renderScale']*(this[_0xf34a62(0x3f2)]()?this[_0xf34a62(0x178)]:0x1);}[_0x5d7726(0xf2)](_0x5f338e){const _0x1b0653=_0x5d7726;if(this[_0x1b0653(0x3f0)]=_0x5f338e,!(this[_0x1b0653(0x1d9)]===_0x1b0653(0x267)||this[_0x1b0653(0x3f2)]())){this[_0x1b0653(0x384)]=0x0;return;}if(this[_0x1b0653(0x384)]>0x0){let _0x3c994d=_0x5f338e-this[_0x1b0653(0x384)];_0x3c994d>0x0&&_0x3c994d<=0xfa&&(this[_0x1b0653(0x129)]=this['actualFrameIntervalMilliseconds']===0x0?_0x3c994d:this[_0x1b0653(0x129)]*0.8+_0x3c994d*0.2,this['updateAutoQuality'](_0x3c994d));}this[_0x1b0653(0x384)]=_0x5f338e;}[_0x5d7726(0x1f4)](_0x58fba4){const _0x5621a6=_0x5d7726;if(this[_0x5621a6(0x1e5)]!==_0x5621a6(0x28f)||(this['autoFrameCount']+=0x1,this['autoFrameIntervalTotal']+=_0x58fba4,this[_0x5621a6(0x2ea)]<0x1e))return;let _0x4f0585=this[_0x5621a6(0x398)]/this[_0x5621a6(0x2ea)];if(this[_0x5621a6(0x2ea)]=0x0,this[_0x5621a6(0x398)]=0x0,this[_0x5621a6(0x3f2)]()&&_0x4f0585<0xe)return;let _0x5bf36b=nextAutoQuality(this[_0x5621a6(0x15b)],_0x4f0585);_0x5bf36b!==this[_0x5621a6(0x15b)]&&(this[_0x5621a6(0x15b)]=_0x5bf36b,this[_0x5621a6(0x263)](),this[_0x5621a6(0x14e)]());}[_0x5d7726(0x341)](_0x422727){const _0x5c758f=_0x5d7726;return new SliceState(_0x422727['source'][_0x5c758f(0x25f)],{'volumeDimFactor':_0x422727[_0x5c758f(0x127)]?.['volumeDimFactor'],'depthMode':_0x422727[_0x5c758f(0x127)]?.[_0x5c758f(0x3fa)],'maxLockedSlices':_0x422727[_0x5c758f(0x127)]?.['maxLockedSlices'],'onLimitReached':_0x570876=>_0x422727[_0x5c758f(0x127)]?.[_0x5c758f(0x18b)]?.(Error(_0x5c758f(0x3ac)+_0x570876+'.\x20最大锁定切面数量为\x20'+_0x570876+'。'))});}[_0x5d7726(0x19b)](){const _0x485f63=_0x5d7726;let _0x3fbcc5=this[_0x485f63(0x2e1)][_0x485f63(0x32b)](_0x32659d=>{this['pendingSliceSnapshot']=_0x32659d,this['requestRender']();});this[_0x485f63(0x188)][_0x485f63(0x10e)](_0x3fbcc5);}[_0x5d7726(0x196)](){const _0x39ca0f=_0x5d7726;let _0x579c4f=this['pendingSliceSnapshot'];if(!_0x579c4f)return;this['pendingSliceSnapshot']=null;let _0x4a1c6e=[];if(_0x579c4f[_0x39ca0f(0x37f)]){let _0x4286f6=_0x579c4f[_0x39ca0f(0x37f)]['axis']==='x'?this[_0x39ca0f(0x345)][_0x39ca0f(0x25f)]['xAxis']:_0x579c4f[_0x39ca0f(0x37f)][_0x39ca0f(0x24c)]==='y'?this[_0x39ca0f(0x345)][_0x39ca0f(0x25f)][_0x39ca0f(0x3b6)]:this[_0x39ca0f(0x345)][_0x39ca0f(0x25f)][_0x39ca0f(0x404)];_0x4a1c6e[_0x39ca0f(0x10e)]({'id':'volume-slice-preview','axis':_0x579c4f[_0x39ca0f(0x37f)][_0x39ca0f(0x24c)],'position':clamp01(volumeAxisValueToNormalized(_0x4286f6,_0x579c4f['preview']['position'])),'depthMode':this['sliceDepthMode'],'visible':!0x0,'opacity':0.72,'plateColor':this['slicePlateColor']});}for(let _0xffc190 of _0x579c4f[_0x39ca0f(0x2c2)]){let _0x2bb374=_0xffc190[_0x39ca0f(0x24c)]==='x'?this['source'][_0x39ca0f(0x25f)][_0x39ca0f(0xf1)]:_0xffc190[_0x39ca0f(0x24c)]==='y'?this[_0x39ca0f(0x345)][_0x39ca0f(0x25f)][_0x39ca0f(0x3b6)]:this['source'][_0x39ca0f(0x25f)][_0x39ca0f(0x404)];_0x4a1c6e['push']({..._0xffc190,'position':clamp01(volumeAxisValueToNormalized(_0x2bb374,_0xffc190['position'])),'opacity':0x1,'plateColor':this[_0x39ca0f(0x13f)]});}this[_0x39ca0f(0x35c)][_0x39ca0f(0x377)](_0x4a1c6e),this[_0x39ca0f(0x35c)]['update']({'volumeDimFactor':_0x579c4f[_0x39ca0f(0x37f)]||_0x579c4f[_0x39ca0f(0x2c2)][_0x39ca0f(0x1ee)](_0x41d1fe=>_0x41d1fe['visible'])?_0x579c4f[_0x39ca0f(0x22e)]:0x1}),this[_0x39ca0f(0x1f6)]?.(_0x579c4f[_0x39ca0f(0x2c2)]),this[_0x39ca0f(0x2dc)]=!0x0;}['bindSliceInteraction'](_0x1575e7){const _0x15efb7=_0x5d7726;let _0x584a01=()=>({'viewProjectionMatrix':this['volumeCamera'][_0x15efb7(0x25c)]['viewProjection'],'modelMatrix':composeVolumeModelMatrix(this['baseModelMatrix'],this[_0x15efb7(0x3a9)]),'viewportWidth':Math[_0x15efb7(0x2e5)](0x1,this['canvas'][_0x15efb7(0x24a)]),'viewportHeight':Math['max'](0x1,this[_0x15efb7(0x191)]['clientHeight'])});this['sliceInteraction']=new SliceInteractionController(this['interactionElement'],this[_0x15efb7(0x2e1)],_0x584a01,{'hitTolerancePixels':_0x1575e7[_0x15efb7(0x127)]?.['hitRadius'],'onInteractionStart':()=>this['beginInteraction'](_0x15efb7(0x1a5)),'onInteractionEnd':()=>this[_0x15efb7(0x1ca)](_0x15efb7(0x1a5))}),this[_0x15efb7(0x127)][_0x15efb7(0x3fb)](),_0x1575e7[_0x15efb7(0x216)]&&(this[_0x15efb7(0x396)]=new SliceMarkerOverlay(_0x1575e7[_0x15efb7(0x216)],this[_0x15efb7(0x2e1)],_0x584a01,{'interactionController':this['sliceInteraction']}));}['bindControls'](){const _0x34e976=_0x5d7726;let _0x4f3f7d=_0x4dce26=>{const _0x289a06=_0x2fcb;_0x4dce26[_0x289a06(0x23b)]!==0x0&&_0x4dce26[_0x289a06(0x23b)]!==0x2||(this[_0x289a06(0x2a2)]={'id':_0x4dce26[_0x289a06(0xf4)],'x':_0x4dce26[_0x289a06(0x297)],'y':_0x4dce26['clientY'],'pan':_0x4dce26[_0x289a06(0x23b)]===0x2||_0x4dce26[_0x289a06(0x413)]!==_0x289a06(0x311)&&this[_0x289a06(0x3cd)]===_0x289a06(0x251)},this[_0x289a06(0x13d)](_0x289a06(0x331)),this[_0x289a06(0x36e)][_0x289a06(0x1ac)]?.(_0x4dce26[_0x289a06(0xf4)]),_0x4dce26['preventDefault']());},_0x1ce32b=_0x22c10d=>{const _0x4060b7=_0x2fcb;if(!this['pointer']||this['pointer']['id']!==_0x22c10d['pointerId'])return;let _0x465a38=_0x22c10d['clientX']-this[_0x4060b7(0x2a2)]['x'],_0x28f3f4=_0x22c10d[_0x4060b7(0x32f)]-this[_0x4060b7(0x2a2)]['y'];this['pointer']['x']=_0x22c10d['clientX'],this[_0x4060b7(0x2a2)]['y']=_0x22c10d[_0x4060b7(0x32f)],this[_0x4060b7(0x2a2)][_0x4060b7(0x251)]?this[_0x4060b7(0x34d)]['pan'](_0x465a38,_0x28f3f4,this[_0x4060b7(0x191)][_0x4060b7(0x2c0)]):this[_0x4060b7(0x34d)][_0x4060b7(0x171)](_0x465a38,_0x28f3f4),this[_0x4060b7(0x263)](),this[_0x4060b7(0x14e)]();},_0x545412=_0x42a36d=>{const _0x2ad575=_0x2fcb;this[_0x2ad575(0x2a2)]?.['id']===_0x42a36d[_0x2ad575(0xf4)]&&(this[_0x2ad575(0x2a2)]=null,this[_0x2ad575(0x1ca)](_0x2ad575(0x331)));},_0x17ed3b=_0x42a6af=>{const _0x147587=_0x2fcb;_0x42a6af['preventDefault'](),this[_0x147587(0x34d)][_0x147587(0x19f)](_0x42a6af['deltaY']),this[_0x147587(0x263)](),this[_0x147587(0x14e)]();},_0x48c8f6=_0x45b989=>_0x45b989['preventDefault']();this[_0x34e976(0x36e)][_0x34e976(0x193)]('pointerdown',_0x4f3f7d),this[_0x34e976(0x36e)]['addEventListener'](_0x34e976(0x394),_0x1ce32b),this[_0x34e976(0x36e)]['addEventListener'](_0x34e976(0x367),_0x545412),this[_0x34e976(0x36e)][_0x34e976(0x193)](_0x34e976(0x213),_0x545412),this['interactionElement'][_0x34e976(0x193)](_0x34e976(0x2ba),_0x17ed3b,{'passive':!0x1}),this['interactionElement'][_0x34e976(0x193)](_0x34e976(0x321),_0x48c8f6),this['eventDisposers'][_0x34e976(0x10e)](()=>this[_0x34e976(0x36e)]['removeEventListener']('pointerdown',_0x4f3f7d),()=>this[_0x34e976(0x36e)][_0x34e976(0x3cc)](_0x34e976(0x394),_0x1ce32b),()=>this[_0x34e976(0x36e)]['removeEventListener'](_0x34e976(0x367),_0x545412),()=>this[_0x34e976(0x36e)][_0x34e976(0x3cc)]('pointercancel',_0x545412),()=>this[_0x34e976(0x36e)][_0x34e976(0x3cc)](_0x34e976(0x2ba),_0x17ed3b),()=>this[_0x34e976(0x36e)][_0x34e976(0x3cc)](_0x34e976(0x321),_0x48c8f6));}[_0x5d7726(0x22f)](){const _0x380671=_0x5d7726;this[_0x380671(0x35c)][_0x380671(0x339)]({'xAxis':this['source'][_0x380671(0x25f)][_0x380671(0xf1)],'yAxis':this['source'][_0x380671(0x25f)][_0x380671(0x3b6)],'zAxis':this[_0x380671(0x345)][_0x380671(0x25f)][_0x380671(0x404)],'brickWidth':this['layout'][_0x380671(0x2df)][_0x380671(0x293)],'brickHeight':this[_0x380671(0x26b)]['shape'][_0x380671(0x38f)],'brickDepth':this[_0x380671(0x26b)][_0x380671(0x2df)]['depth'],'halo':0x1,'noData':this[_0x380671(0x345)][_0x380671(0x25f)][_0x380671(0x245)]});}[_0x5d7726(0x146)](){const _0x296a64=_0x5d7726;if(this[_0x296a64(0x3ba)]===_0x296a64(0x14f)){let _0x33e1da=createGeographicVolumeLayout(this[_0x296a64(0x345)][_0x296a64(0x25f)],this[_0x296a64(0x3a9)]);this[_0x296a64(0x35c)][_0x296a64(0x19e)]({'modelMatrix':_0x33e1da['proxyModelMatrix'],'inverseModelMatrix':Array[_0x296a64(0x3c0)](invertMatrix(_0x33e1da['proxyModelMatrix'])),'geographicTransform':_0x33e1da['transform'],'clipMinimum':[0x0,0x0,0x0],'clipMaximum':[0x1,0x1,0x1]}),this[_0x296a64(0x14e)]();return;}let _0x4d6730=composeVolumeModelMatrix(this[_0x296a64(0x185)],this[_0x296a64(0x3a9)]),_0x262aba=normalizeClipBox(this[_0x296a64(0x345)],this['clipBox']);this[_0x296a64(0x35c)][_0x296a64(0x19e)]({'modelMatrix':Array[_0x296a64(0x3c0)](_0x4d6730),'inverseModelMatrix':Array[_0x296a64(0x3c0)](invertMatrix(_0x4d6730)),'geographicTransform':null,'clipMinimum':_0x262aba[_0x296a64(0x3e8)],'clipMaximum':_0x262aba[_0x296a64(0x222)]}),this[_0x296a64(0x14e)]();}[_0x5d7726(0x20d)](){const _0x2b65c5=_0x5d7726;let _0x228b7e=this[_0x2b65c5(0x282)][_0x2b65c5(0x3ef)](_0x4b1b1a=>createProfileSceneMesh(buildVolumeRouteProfileMesh(_0x4b1b1a,this[_0x2b65c5(0x345)][_0x2b65c5(0x25f)]),this[_0x2b65c5(0x35d)],this['opacityStops'],this[_0x2b65c5(0x13e)]));this[_0x2b65c5(0x35c)][_0x2b65c5(0x284)](_0x228b7e),this[_0x2b65c5(0x14e)]();}[_0x5d7726(0xed)](){const _0x40960b=_0x5d7726;this[_0x40960b(0x219)]+=0x1;for(let _0x2556b8 of this[_0x40960b(0x26d)])_0x2556b8[_0x40960b(0x243)]();this[_0x40960b(0x26d)][_0x40960b(0x1ad)](),this[_0x40960b(0x1c6)][_0x40960b(0x1ad)](),this[_0x40960b(0x3b5)][_0x40960b(0x1ad)](),this[_0x40960b(0x34c)][_0x40960b(0x1ad)](),this[_0x40960b(0x22f)](),this[_0x40960b(0x405)]();}['requestBrickSchedule'](){const _0x2d56d6=_0x5d7726;this[_0x2d56d6(0x2dc)]=!0x0,this[_0x2d56d6(0x14e)]();}[_0x5d7726(0x326)](){const _0x47ee1a=_0x5d7726;this[_0x47ee1a(0x2dc)]&&(this[_0x47ee1a(0x2dc)]=!0x1,this[_0x47ee1a(0x405)]());}[_0x5d7726(0x405)](){const _0x150d31=_0x5d7726;if(this[_0x150d31(0x31d)])return;this['brickScheduleDirty']=!0x1,this[_0x150d31(0x21f)]+=0x1;let _0x59fa0e=this[_0x150d31(0x35c)][_0x150d31(0x3ec)][_0x150d31(0x2b0)];if(_0x59fa0e<=0x0)return;let _0x4fe1a4=_0x59fa0e>=this[_0x150d31(0x40f)][_0x150d31(0x1bc)];if(_0x4fe1a4&&this[_0x150d31(0x34c)]['size']===this['descriptors'][_0x150d31(0x1bc)]&&this[_0x150d31(0x1c6)][_0x150d31(0x261)]===this[_0x150d31(0x40f)]['length']&&this[_0x150d31(0x3b5)]['size']===0x0)return;let _0x444e50;_0x4fe1a4?_0x444e50=this[_0x150d31(0x40f)]:(this[_0x150d31(0x1cf)]+=0x1,_0x444e50=[...this[_0x150d31(0x40f)]][_0x150d31(0x2eb)]((_0x46cc3c,_0x874981)=>descriptorDemandPriority(_0x46cc3c,this[_0x150d31(0x345)],this[_0x150d31(0x2e1)],this[_0x150d31(0x282)])-descriptorDemandPriority(_0x874981,this['source'],this[_0x150d31(0x2e1)],this[_0x150d31(0x282)])||descriptorDistance(_0x46cc3c,this[_0x150d31(0x26b)],this[_0x150d31(0x34d)][_0x150d31(0x39b)])-descriptorDistance(_0x874981,this['layout'],this[_0x150d31(0x34d)]['state']))[_0x150d31(0x1a5)](0x0,_0x59fa0e));let _0x2e8e3e=new Set(_0x444e50[_0x150d31(0x3ef)](_0x2c7ec9=>_0x2c7ec9['key']));this[_0x150d31(0x34c)]=_0x2e8e3e,_0x4fe1a4||this[_0x150d31(0x35c)]['touchBricks'](_0x444e50[_0x150d31(0x28d)](_0x4aa771=>this[_0x150d31(0x1c6)][_0x150d31(0x2de)](_0x4aa771[_0x150d31(0x3da)]))['map'](_0xfeed4d=>descriptorLogicalIndex(_0xfeed4d,this['layout'])));for(let _0x42a361 of this[_0x150d31(0x1c6)])_0x2e8e3e[_0x150d31(0x2de)](_0x42a361)||this[_0x150d31(0x1c6)]['delete'](_0x42a361);let _0x44c79a=Math[_0x150d31(0x2e5)](0x0,qualityUploadCount(this[_0x150d31(0x254)]())-this[_0x150d31(0x3b5)][_0x150d31(0x261)]),_0xa949df=_0x444e50[_0x150d31(0x28d)](_0x1bf453=>!this['loadedKeys'][_0x150d31(0x2de)](_0x1bf453[_0x150d31(0x3da)])&&!this[_0x150d31(0x3b5)][_0x150d31(0x2de)](_0x1bf453[_0x150d31(0x3da)]))[_0x150d31(0x1a5)](0x0,_0x44c79a);for(let _0x3dbf5a of _0xa949df)this['loadBrick'](_0x3dbf5a);}[_0x5d7726(0x335)](_0x52e8dd){const _0x4ac233=_0x5d7726;let _0x56ae1f=this['sourceGeneration'],_0x4f5796=this[_0x4ac233(0x345)],_0x598463=this['timeIndex'],_0x12b4b4=new AbortController();this[_0x4ac233(0x26d)][_0x4ac233(0x2e7)](_0x12b4b4),this[_0x4ac233(0x3b5)][_0x4ac233(0x1f8)](_0x52e8dd[_0x4ac233(0x3da)],_0x56ae1f),Promise[_0x4ac233(0x2c1)](_0x4f5796[_0x4ac233(0x3f9)](_0x598463,_0x52e8dd[_0x4ac233(0x3eb)],_0x12b4b4[_0x4ac233(0x182)]))[_0x4ac233(0x249)](async _0x1bf90b=>{const _0x4ed7c7=_0x4ac233;if(this[_0x4ed7c7(0x31d)]||_0x56ae1f!==this['sourceGeneration']||_0x4f5796!==this['source']||_0x598463!==this[_0x4ed7c7(0x383)]||!this[_0x4ed7c7(0x34c)]['has'](_0x52e8dd[_0x4ed7c7(0x3da)]))return;let _0x45adad=createPhysicalBrickValues(_0x4f5796[_0x4ed7c7(0x25f)],this[_0x4ed7c7(0x26b)][_0x4ed7c7(0x2df)],_0x52e8dd,_0x1bf90b),_0x1f9f18=descriptorLogicalIndex(_0x52e8dd,this[_0x4ed7c7(0x26b)]);await this[_0x4ed7c7(0x35c)]['uploadBrick']({'logicalIndex':_0x1f9f18,'values':_0x45adad}),!(this[_0x4ed7c7(0x31d)]||_0x56ae1f!==this[_0x4ed7c7(0x219)]||_0x4f5796!==this[_0x4ed7c7(0x345)]||_0x598463!==this[_0x4ed7c7(0x383)]||!this[_0x4ed7c7(0x34c)][_0x4ed7c7(0x2de)](_0x52e8dd['key']))&&(this['loadedKeys']['add'](_0x52e8dd[_0x4ed7c7(0x3da)]),this[_0x4ed7c7(0x14e)]());})[_0x4ac233(0x3c3)](_0x20ab04=>{const _0x3d02da=_0x4ac233;_0x20ab04 instanceof DOMException&&_0x20ab04[_0x3d02da(0x27a)]===_0x3d02da(0x38d)||console[_0x3d02da(0x157)](_0x20ab04);})[_0x4ac233(0x262)](()=>{const _0x13de4c=_0x4ac233;this[_0x13de4c(0x26d)][_0x13de4c(0x370)](_0x12b4b4),this[_0x13de4c(0x3b5)][_0x13de4c(0x248)](_0x52e8dd[_0x13de4c(0x3da)])===_0x56ae1f&&this[_0x13de4c(0x3b5)][_0x13de4c(0x370)](_0x52e8dd[_0x13de4c(0x3da)]),_0x56ae1f===this['sourceGeneration']&&this[_0x13de4c(0x405)]();});}[_0x5d7726(0x328)](){const _0xdc0d4a=_0x5d7726;this['renderDirty']&&this[_0xdc0d4a(0x14e)]();}[_0x5d7726(0x14e)](){const _0x3d2cab=_0x5d7726;this['destroyed']||(this['renderDirty']=!0x0,!(this[_0x3d2cab(0x1d9)]!==_0x3d2cab(0x161)||this[_0x3d2cab(0x34b)]!==0x0)&&(this[_0x3d2cab(0x34b)]=requestAnimationFrame(()=>{const _0x14974a=_0x3d2cab;this[_0x14974a(0x34b)]=0x0,!(this[_0x14974a(0x31d)]||!this[_0x14974a(0x189)])&&this['render']();})));}};const createVolumeScene=_0x19a593=>VolumeScene[_0x5d7726(0x402)](_0x19a593),validateIndexRange=(_0x416dee,_0x4d1c07,_0x5564af,_0x534461)=>{const _0x4879ae=_0x5d7726;if(!Number[_0x4879ae(0x291)](_0x416dee)||!Number[_0x4879ae(0x291)](_0x4d1c07)||_0x416dee<0x0||_0x4d1c07<=0x0||_0x416dee+_0x4d1c07>_0x5564af)throw Error(_0x534461+_0x4879ae(0x240)+_0x416dee+_0x4879ae(0x288)+_0x4d1c07+_0x4879ae(0x2e3)+_0x5564af+'.\x20'+_0x534461+_0x4879ae(0x247));},validateRange=(_0x55ed8f,_0xd01663)=>{const _0x1b6d26=_0x5d7726;validateIndexRange(_0xd01663['xStart'],_0xd01663[_0x1b6d26(0x145)],_0x55ed8f[_0x1b6d26(0xf1)][_0x1b6d26(0x12c)],'X'),validateIndexRange(_0xd01663[_0x1b6d26(0x123)],_0xd01663[_0x1b6d26(0x2a0)],_0x55ed8f['yAxis'][_0x1b6d26(0x12c)],_0x1b6d26(0x259)),validateIndexRange(_0xd01663[_0x1b6d26(0x1c8)],_0xd01663[_0x1b6d26(0x1e9)],_0x55ed8f['zAxis'][_0x1b6d26(0x12c)],_0x1b6d26(0x20a));},validateData=_0x203a15=>{const _0x334ce4=_0x5d7726;validateVolumeMetadata(_0x203a15);let _0x10d581=_0x203a15[_0x334ce4(0xf1)][_0x334ce4(0x12c)]*_0x203a15['yAxis'][_0x334ce4(0x12c)]*_0x203a15['zAxis']['count']*_0x203a15[_0x334ce4(0x2c6)];if(_0x203a15['values']['length']!==_0x10d581)throw Error(_0x334ce4(0x12d)+_0x10d581+_0x334ce4(0x1a6)+_0x203a15[_0x334ce4(0xf8)][_0x334ce4(0x1bc)]+'.\x20体积数据长度与维度不匹配。');},createInMemoryVolumeSource=_0x2b4c62=>{validateData(_0x2b4c62);let {values:_0x595f4c,..._0x1d3b10}=_0x2b4c62;return{'metadata':_0x1d3b10,'readChunk'(_0x2666fa,_0x1fca8a,_0x30a5f3){const _0x469681=_0x2fcb;if(_0x30a5f3?.['aborted'])throw new DOMException(_0x469681(0x130),_0x469681(0x38d));if(!Number[_0x469681(0x291)](_0x2666fa)||_0x2666fa<0x0||_0x2666fa>=_0x2b4c62[_0x469681(0x2c6)])throw Error(_0x469681(0xf3)+_0x2666fa+'.\x20体积\x20timeIndex\x20越界。');validateRange(_0x2b4c62,_0x1fca8a);let _0x2ee465=new Float32Array(_0x1fca8a[_0x469681(0x145)]*_0x1fca8a[_0x469681(0x2a0)]*_0x1fca8a[_0x469681(0x1e9)]),_0x1620fe=_0x2b4c62[_0x469681(0xf1)][_0x469681(0x12c)],_0x5d5961=_0x2b4c62[_0x469681(0x3b6)][_0x469681(0x12c)],_0x4da0f1=_0x2b4c62[_0x469681(0x404)][_0x469681(0x12c)],_0x3c791d=_0x2666fa*_0x1620fe*_0x5d5961*_0x4da0f1;for(let _0x8bea5=0x0;_0x8bea5<_0x1fca8a[_0x469681(0x1e9)];_0x8bea5+=0x1)for(let _0x4a7301=0x0;_0x4a7301<_0x1fca8a[_0x469681(0x2a0)];_0x4a7301+=0x1){let _0x1cfb64=_0x3c791d+(((_0x1fca8a[_0x469681(0x1c8)]+_0x8bea5)*_0x5d5961+_0x1fca8a[_0x469681(0x123)]+_0x4a7301)*_0x1620fe+_0x1fca8a[_0x469681(0x37c)]),_0x4a5a8b=(_0x8bea5*_0x1fca8a[_0x469681(0x2a0)]+_0x4a7301)*_0x1fca8a[_0x469681(0x145)];_0x2ee465[_0x469681(0x1f8)](_0x595f4c[_0x469681(0x21b)](_0x1cfb64,_0x1cfb64+_0x1fca8a[_0x469681(0x145)]),_0x4a5a8b);}return{'timeIndex':_0x2666fa,'range':{..._0x1fca8a},'width':_0x1fca8a[_0x469681(0x145)],'height':_0x1fca8a[_0x469681(0x2a0)],'depth':_0x1fca8a[_0x469681(0x1e9)],'values':_0x2ee465};}};};exports[_0x5d7726(0x338)]=VolumeCamera,exports[_0x5d7726(0x11a)]=createGeographicVolumeLayout,exports['createInMemoryVolumeSource']=createInMemoryVolumeSource,exports[_0x5d7726(0x372)]=createVolumeScene,exports[_0x5d7726(0x172)]=ecefToGeographicVolumeLocal,exports[_0x5d7726(0x258)]=normalizedToVolumeAxisValue,exports[_0x5d7726(0x26f)]=volumeAxisValueToNormalized;
|
|
1
|
+
const _0x40c362=_0xc352;(function(_0x37e538,_0x52bdda){const _0xfa2295=_0xc352,_0x11823e=_0x37e538();while(!![]){try{const _0x2fa071=-parseInt(_0xfa2295(0x364))/0x1*(-parseInt(_0xfa2295(0x2c3))/0x2)+-parseInt(_0xfa2295(0x1db))/0x3+parseInt(_0xfa2295(0x229))/0x4*(-parseInt(_0xfa2295(0x351))/0x5)+parseInt(_0xfa2295(0x1ac))/0x6+-parseInt(_0xfa2295(0x1ed))/0x7*(-parseInt(_0xfa2295(0x330))/0x8)+-parseInt(_0xfa2295(0x42d))/0x9*(parseInt(_0xfa2295(0x3f6))/0xa)+-parseInt(_0xfa2295(0x247))/0xb*(-parseInt(_0xfa2295(0x2f8))/0xc);if(_0x2fa071===_0x52bdda)break;else _0x11823e['push'](_0x11823e['shift']());}catch(_0x381682){_0x11823e['push'](_0x11823e['shift']());}}}(_0x5350,0x70698),Object[_0x40c362(0x140)](exports,Symbol[_0x40c362(0x23e)],{'value':_0x40c362(0x258)}));const validatePositiveInteger=(_0x4a2bfb,_0x3bdd25)=>{const _0x5b9023=_0x40c362;if(!Number[_0x5b9023(0x135)](_0x4a2bfb)||_0x4a2bfb<=0x0)throw Error(_0x3bdd25+'\x20must\x20be\x20a\x20positive\x20integer.\x20'+_0x3bdd25+_0x5b9023(0x376));},validateAxis=(_0x491ff2,_0x107a3a)=>{const _0x328306=_0x40c362;if(validatePositiveInteger(_0x491ff2['count'],_0x107a3a+_0x328306(0x2fa)),!Number[_0x328306(0x298)](_0x491ff2['start'])||!Number[_0x328306(0x298)](_0x491ff2['end']))throw Error(_0x107a3a+'\x20endpoints\x20must\x20be\x20finite.\x20'+_0x107a3a+_0x328306(0x308));if(_0x491ff2[_0x328306(0x269)]===0x1&&_0x491ff2[_0x328306(0x2ca)]!==_0x491ff2['end'])throw Error(_0x107a3a+_0x328306(0x3e4)+_0x107a3a+_0x328306(0x15a));if(_0x491ff2[_0x328306(0x269)]>0x1&&_0x491ff2['start']===_0x491ff2['end'])throw Error(_0x107a3a+'\x20with\x20multiple\x20samples\x20must\x20have\x20a\x20non-zero\x20step.\x20'+_0x107a3a+_0x328306(0x146));},validateNoData=(_0x2db68b,_0x50fba7)=>{const _0x2fbc9f=_0x40c362;if(_0x2db68b!==void 0x0&&!Number['isFinite'](_0x2db68b)&&!Number[_0x2fbc9f(0x3a6)](_0x2db68b))throw Error(_0x50fba7+'\x20noData\x20must\x20be\x20finite\x20or\x20NaN.\x20'+_0x50fba7+'\x20noData\x20必须是有限数值或\x20NaN。');},rangesEqual=(_0x52137d,_0x5e5da0)=>_0x52137d[_0x40c362(0x223)]===_0x5e5da0[_0x40c362(0x223)]&&_0x52137d[_0x40c362(0x27e)]===_0x5e5da0[_0x40c362(0x27e)]&&_0x52137d[_0x40c362(0x111)]===_0x5e5da0[_0x40c362(0x111)]&&_0x52137d['levelCount']===_0x5e5da0['levelCount']&&_0x52137d[_0x40c362(0x380)]===_0x5e5da0['sourceYStart']&&_0x52137d[_0x40c362(0x255)]===_0x5e5da0[_0x40c362(0x255)],validateVolumeMetadata=_0x55d178=>{const _0x4601da=_0x40c362;if(validateAxis(_0x55d178[_0x4601da(0x40d)],'Volume\x20X\x20axis'),validateAxis(_0x55d178['yAxis'],_0x4601da(0x41d)),validateAxis(_0x55d178[_0x4601da(0x2e5)],_0x4601da(0x287)),validatePositiveInteger(_0x55d178['timeCount'],_0x4601da(0x2ed)),validateNoData(_0x55d178[_0x4601da(0x1b5)],_0x4601da(0x205)),_0x55d178[_0x4601da(0x11e)]!==void 0x0&&!Number[_0x4601da(0x298)](_0x55d178[_0x4601da(0x11e)]))throw Error('Volume\x20valueScale\x20must\x20be\x20finite.\x20体积\x20valueScale\x20必须是有限数值。');if(_0x55d178['revision']!==void 0x0&&(!Number[_0x4601da(0x135)](_0x55d178['revision'])||_0x55d178[_0x4601da(0x329)]<0x0))throw Error('Volume\x20revision\x20must\x20be\x20a\x20non-negative\x20integer.\x20体积\x20revision\x20必须是非负整数。');},validateVolumeTimeIndex=(_0x59b471,_0x477536)=>{const _0xc31419=_0x40c362;if(!Number['isInteger'](_0x477536)||_0x477536<0x0||_0x477536>=_0x59b471[_0xc31419(0x3e1)])throw Error(_0xc31419(0x2f9)+_0x477536+_0xc31419(0x3a2));},validateVolumeChunkRange=(_0x4720e,_0x568acf)=>{const _0x4e7ba0=_0x40c362;let _0x4e2800=[[_0x568acf[_0x4e7ba0(0x223)],_0x4e7ba0(0x223)],[_0x568acf[_0x4e7ba0(0x27e)],_0x4e7ba0(0x27e)],[_0x568acf[_0x4e7ba0(0x111)],_0x4e7ba0(0x111)],[_0x568acf[_0x4e7ba0(0x321)],_0x4e7ba0(0x321)],[_0x568acf[_0x4e7ba0(0x380)],'sourceYStart'],[_0x568acf['sourceYCount'],_0x4e7ba0(0x255)]];for(let [_0x1cf716,_0x5bee12]of _0x4e2800)if(!Number[_0x4e7ba0(0x135)](_0x1cf716)||_0x1cf716<0x0||_0x5bee12['endsWith'](_0x4e7ba0(0x27d))&&_0x1cf716===0x0)throw Error(_0x4e7ba0(0x398)+_0x5bee12+'\x20is\x20invalid:\x20'+_0x1cf716+_0x4e7ba0(0x1b1)+_0x5bee12+_0x4e7ba0(0x419));if(_0x568acf[_0x4e7ba0(0x223)]+_0x568acf[_0x4e7ba0(0x27e)]>_0x4720e[_0x4e7ba0(0x40d)][_0x4e7ba0(0x269)]||_0x568acf[_0x4e7ba0(0x111)]+_0x568acf[_0x4e7ba0(0x321)]>_0x4720e['yAxis'][_0x4e7ba0(0x269)]||_0x568acf[_0x4e7ba0(0x380)]+_0x568acf['sourceYCount']>_0x4720e[_0x4e7ba0(0x2e5)]['count'])throw Error(_0x4e7ba0(0x18e));},validateVolumeChunk=(_0x29a2fd,_0x527477,_0x1f61b4,_0x16041d)=>{const _0x37570c=_0x40c362;if(validateVolumeTimeIndex(_0x29a2fd,_0x527477[_0x37570c(0x391)]),validateVolumeChunkRange(_0x29a2fd,_0x527477['range']),_0x16041d!==void 0x0&&_0x527477[_0x37570c(0x391)]!==_0x16041d)throw Error(_0x37570c(0x252));if(_0x1f61b4&&!rangesEqual(_0x527477[_0x37570c(0x268)],_0x1f61b4))throw Error(_0x37570c(0x16b));if(_0x527477[_0x37570c(0x3a7)]!==_0x527477[_0x37570c(0x268)][_0x37570c(0x27e)]||_0x527477[_0x37570c(0x2b1)]!==_0x527477[_0x37570c(0x268)][_0x37570c(0x321)]||_0x527477[_0x37570c(0x424)]!==_0x527477['range'][_0x37570c(0x255)])throw Error(_0x37570c(0x3b8));let _0x1539c5=_0x527477['width']*_0x527477[_0x37570c(0x2b1)]*_0x527477[_0x37570c(0x424)];if(!Number[_0x37570c(0x16d)](_0x1539c5)||_0x527477[_0x37570c(0x3bf)][_0x37570c(0x3e0)]!==_0x1539c5)throw Error('Volume\x20chunk\x20requires\x20'+_0x1539c5+'\x20values\x20but\x20received\x20'+_0x527477[_0x37570c(0x3bf)][_0x37570c(0x3e0)]+'.\x20体积分块数值数量与尺寸不一致。');},validateVolumeSource=_0x19adf2=>{const _0x4efb78=_0x40c362;if(!_0x19adf2||typeof _0x19adf2['readChunk']!='function')throw Error(_0x4efb78(0x3ab));validateVolumeMetadata(_0x19adf2[_0x4efb78(0x42a)]);},validateBrickShape=_0x5a6a0b=>{const _0x50452f=_0x40c362;for(let [_0x37d822,_0x24c393]of[[_0x5a6a0b['width'],_0x50452f(0x3a7)],[_0x5a6a0b[_0x50452f(0x2b1)],'height'],[_0x5a6a0b[_0x50452f(0x424)],_0x50452f(0x424)]])if(!Number['isInteger'](_0x37d822)||_0x37d822<=0x0)throw Error('Volume\x20brick\x20'+_0x24c393+_0x50452f(0x33d)+_0x24c393+_0x50452f(0x376));if(!Number[_0x50452f(0x135)](_0x5a6a0b['halo'])||_0x5a6a0b['halo']<0x1)throw Error('Volume\x20brick\x20halo\x20must\x20be\x20a\x20positive\x20integer.\x20体积分块\x20halo\x20必须是正整数。');},resolveVolumeBrickShape=(_0x24aaa0={})=>{const _0x51fcb2=_0x40c362;let _0x407713={'width':_0x24aaa0['width']??0x100,'height':_0x24aaa0['height']??0x8,'depth':_0x24aaa0[_0x51fcb2(0x424)]??0x100,'halo':_0x24aaa0[_0x51fcb2(0x1cc)]??0x1};return validateBrickShape(_0x407713),_0x407713;},createVolumeBrickLayout=(_0x398d79,_0x5c8eac={})=>{const _0x59ab=_0x40c362;validateVolumeMetadata(_0x398d79);let _0x2cffb6=resolveVolumeBrickShape(_0x5c8eac),_0x359f9e=Math['ceil'](_0x398d79[_0x59ab(0x40d)][_0x59ab(0x269)]/_0x2cffb6[_0x59ab(0x3a7)]),_0x98df43=Math[_0x59ab(0x20a)](_0x398d79[_0x59ab(0x368)][_0x59ab(0x269)]/_0x2cffb6['height']),_0x31041b=Math['ceil'](_0x398d79[_0x59ab(0x2e5)][_0x59ab(0x269)]/_0x2cffb6['depth']);return{'shape':_0x2cffb6,'countX':_0x359f9e,'countY':_0x98df43,'countZ':_0x31041b,'brickCount':_0x359f9e*_0x98df43*_0x31041b};},createVolumeBrickKey=_0x160556=>_0x160556['x']+':'+_0x160556['y']+':'+_0x160556['z'],createVolumeBrickDescriptor=(_0x394f82,_0x30c57b,_0xe5eba9)=>{const _0x352654=_0x40c362;if(!Number[_0x352654(0x135)](_0xe5eba9['x'])||!Number[_0x352654(0x135)](_0xe5eba9['y'])||!Number[_0x352654(0x135)](_0xe5eba9['z'])||_0xe5eba9['x']<0x0||_0xe5eba9['x']>=_0x30c57b[_0x352654(0x242)]||_0xe5eba9['y']<0x0||_0xe5eba9['y']>=_0x30c57b[_0x352654(0x348)]||_0xe5eba9['z']<0x0||_0xe5eba9['z']>=_0x30c57b['countZ'])throw Error(_0x352654(0x13a));let _0x33f1ff=_0xe5eba9['x']*_0x30c57b['shape']['width'],_0x1f6bfe=_0xe5eba9['y']*_0x30c57b['shape'][_0x352654(0x2b1)],_0x2f0470=_0xe5eba9['z']*_0x30c57b['shape'][_0x352654(0x424)],_0x53ecd6=Math[_0x352654(0x1de)](_0x30c57b[_0x352654(0x30c)][_0x352654(0x3a7)],_0x394f82[_0x352654(0x40d)][_0x352654(0x269)]-_0x33f1ff),_0x21eae9=Math[_0x352654(0x1de)](_0x30c57b['shape'][_0x352654(0x2b1)],_0x394f82[_0x352654(0x368)][_0x352654(0x269)]-_0x1f6bfe),_0x2da1f6=Math[_0x352654(0x1de)](_0x30c57b[_0x352654(0x30c)][_0x352654(0x424)],_0x394f82['zAxis'][_0x352654(0x269)]-_0x2f0470),_0x23fc76=_0x30c57b[_0x352654(0x30c)]['halo'],_0x4e32de=Math['max'](0x0,_0x33f1ff-_0x23fc76),_0x16c092=Math['max'](0x0,_0x1f6bfe-_0x23fc76),_0x5edd19=Math['max'](0x0,_0x2f0470-_0x23fc76),_0x2d31cd=Math['min'](_0x394f82[_0x352654(0x40d)][_0x352654(0x269)],_0x33f1ff+_0x53ecd6+_0x23fc76),_0xa2795c=Math[_0x352654(0x1de)](_0x394f82[_0x352654(0x368)]['count'],_0x1f6bfe+_0x21eae9+_0x23fc76),_0x3d3bc6=Math['min'](_0x394f82['zAxis']['count'],_0x2f0470+_0x2da1f6+_0x23fc76),_0x23e23e=_0x30c57b['shape']['width']+_0x23fc76*0x2,_0x1da50d=_0x30c57b['shape'][_0x352654(0x2b1)]+_0x23fc76*0x2,_0x2a8f89=_0x30c57b['shape'][_0x352654(0x424)]+_0x23fc76*0x2;return{'key':createVolumeBrickKey(_0xe5eba9),'coordinate':_0xe5eba9,'coreRange':{'xStart':_0x33f1ff,'xCount':_0x53ecd6,'levelStart':_0x1f6bfe,'levelCount':_0x21eae9,'sourceYStart':_0x2f0470,'sourceYCount':_0x2da1f6},'readRange':{'xStart':_0x4e32de,'xCount':_0x2d31cd-_0x4e32de,'levelStart':_0x16c092,'levelCount':_0xa2795c-_0x16c092,'sourceYStart':_0x5edd19,'sourceYCount':_0x3d3bc6-_0x5edd19},'physicalWidth':_0x23e23e,'physicalHeight':_0x1da50d,'physicalDepth':_0x2a8f89,'byteLength':_0x23e23e*_0x1da50d*_0x2a8f89*Float32Array[_0x352654(0x173)]};},createVolumeBrickDescriptors=(_0xac8974,_0x2ae73d)=>{const _0x4539c9=_0x40c362;let _0x387ab0=[];for(let _0x58afb6=0x0;_0x58afb6<_0x2ae73d[_0x4539c9(0x409)];_0x58afb6+=0x1)for(let _0x801efd=0x0;_0x801efd<_0x2ae73d['countY'];_0x801efd+=0x1)for(let _0x547ce4=0x0;_0x547ce4<_0x2ae73d['countX'];_0x547ce4+=0x1)_0x387ab0[_0x4539c9(0x31e)](createVolumeBrickDescriptor(_0xac8974,_0x2ae73d,{'x':_0x547ce4,'y':_0x801efd,'z':_0x58afb6}));return _0x387ab0;},EPSILON=1e-8,createMatrix=()=>new Float32Array(0x10),dotVector3=(_0x42a349,_0x14e95f)=>_0x42a349[0x0]*_0x14e95f[0x0]+_0x42a349[0x1]*_0x14e95f[0x1]+_0x42a349[0x2]*_0x14e95f[0x2],subtractVector3=(_0x130a43,_0x64c46d)=>[_0x130a43[0x0]-_0x64c46d[0x0],_0x130a43[0x1]-_0x64c46d[0x1],_0x130a43[0x2]-_0x64c46d[0x2]],crossVector3=(_0x2a75a0,_0x5c5cf6)=>[_0x2a75a0[0x1]*_0x5c5cf6[0x2]-_0x2a75a0[0x2]*_0x5c5cf6[0x1],_0x2a75a0[0x2]*_0x5c5cf6[0x0]-_0x2a75a0[0x0]*_0x5c5cf6[0x2],_0x2a75a0[0x0]*_0x5c5cf6[0x1]-_0x2a75a0[0x1]*_0x5c5cf6[0x0]],normalizeVector3=_0x3e39e5=>{const _0x4f442e=_0x40c362;let _0x5f38bf=Math[_0x4f442e(0x2e1)](_0x3e39e5[0x0],_0x3e39e5[0x1],_0x3e39e5[0x2]);if(_0x5f38bf<=EPSILON)throw Error(_0x4f442e(0x29e));return[_0x3e39e5[0x0]/_0x5f38bf,_0x3e39e5[0x1]/_0x5f38bf,_0x3e39e5[0x2]/_0x5f38bf];},createIdentityMatrix=()=>{let _0x8efa1=createMatrix();return _0x8efa1[0x0]=0x1,_0x8efa1[0x5]=0x1,_0x8efa1[0xa]=0x1,_0x8efa1[0xf]=0x1,_0x8efa1;},multiplyMatrices=(_0x5da249,_0x3c20d7)=>{let _0x3740e8=createMatrix();for(let _0x58912c=0x0;_0x58912c<0x4;_0x58912c+=0x1)for(let _0x3ab071=0x0;_0x3ab071<0x4;_0x3ab071+=0x1){let _0x14d718=0x0;for(let _0xc06548=0x0;_0xc06548<0x4;_0xc06548+=0x1)_0x14d718+=_0x5da249[_0xc06548*0x4+_0x3ab071]*_0x3c20d7[_0x58912c*0x4+_0xc06548];_0x3740e8[_0x58912c*0x4+_0x3ab071]=_0x14d718;}return _0x3740e8;},invertMatrix=_0x4e94f3=>{const _0x417db1=_0x40c362;let _0x2d3853=Array[_0x417db1(0x31f)]({'length':0x4},(_0x357441,_0x53ec7c)=>{let _0x52f65d=new Float64Array(0x8);for(let _0x256559=0x0;_0x256559<0x4;_0x256559+=0x1)_0x52f65d[_0x256559]=_0x4e94f3[_0x256559*0x4+_0x53ec7c];return _0x52f65d[_0x53ec7c+0x4]=0x1,_0x52f65d;});for(let _0x202f9a=0x0;_0x202f9a<0x4;_0x202f9a+=0x1){let _0x23280e=_0x202f9a;for(let _0x37da44=_0x202f9a+0x1;_0x37da44<0x4;_0x37da44+=0x1)Math['abs'](_0x2d3853[_0x37da44][_0x202f9a])>Math[_0x417db1(0x429)](_0x2d3853[_0x23280e][_0x202f9a])&&(_0x23280e=_0x37da44);if(Math[_0x417db1(0x429)](_0x2d3853[_0x23280e][_0x202f9a])<=EPSILON)throw Error(_0x417db1(0x134));_0x23280e!==_0x202f9a&&([_0x2d3853[_0x202f9a],_0x2d3853[_0x23280e]]=[_0x2d3853[_0x23280e],_0x2d3853[_0x202f9a]]);let _0x171d3f=_0x2d3853[_0x202f9a][_0x202f9a];for(let _0xd3bdab=0x0;_0xd3bdab<0x8;_0xd3bdab+=0x1)_0x2d3853[_0x202f9a][_0xd3bdab]/=_0x171d3f;for(let _0x3fbf27=0x0;_0x3fbf27<0x4;_0x3fbf27+=0x1){if(_0x3fbf27===_0x202f9a)continue;let _0x5a4061=_0x2d3853[_0x3fbf27][_0x202f9a];for(let _0x588e5c=0x0;_0x588e5c<0x8;_0x588e5c+=0x1)_0x2d3853[_0x3fbf27][_0x588e5c]-=_0x5a4061*_0x2d3853[_0x202f9a][_0x588e5c];}}let _0x9d80db=createMatrix();for(let _0x23e87d=0x0;_0x23e87d<0x4;_0x23e87d+=0x1)for(let _0x2524ad=0x0;_0x2524ad<0x4;_0x2524ad+=0x1)_0x9d80db[_0x2524ad*0x4+_0x23e87d]=_0x2d3853[_0x23e87d][_0x2524ad+0x4];return _0x9d80db;},createLookAtMatrix=(_0x5742a2,_0x384805,_0x395771)=>{let _0x55de9d=normalizeVector3(subtractVector3(_0x5742a2,_0x384805)),_0x412fae=normalizeVector3(crossVector3(_0x395771,_0x55de9d)),_0x152e3c=crossVector3(_0x55de9d,_0x412fae),_0x3930ce=createIdentityMatrix();return _0x3930ce[0x0]=_0x412fae[0x0],_0x3930ce[0x1]=_0x152e3c[0x0],_0x3930ce[0x2]=_0x55de9d[0x0],_0x3930ce[0x4]=_0x412fae[0x1],_0x3930ce[0x5]=_0x152e3c[0x1],_0x3930ce[0x6]=_0x55de9d[0x1],_0x3930ce[0x8]=_0x412fae[0x2],_0x3930ce[0x9]=_0x152e3c[0x2],_0x3930ce[0xa]=_0x55de9d[0x2],_0x3930ce[0xc]=-dotVector3(_0x412fae,_0x5742a2),_0x3930ce[0xd]=-dotVector3(_0x152e3c,_0x5742a2),_0x3930ce[0xe]=-dotVector3(_0x55de9d,_0x5742a2),_0x3930ce;},createPerspectiveMatrix=(_0x5d1fe5,_0x445af2,_0x3fcdbc,_0x55c328)=>{const _0x540527=_0x40c362;if(!(_0x5d1fe5>0x0&&_0x5d1fe5<Math['PI']))throw Error('透视相机视场角必须位于\x200\x20到\x20180\x20度之间。');if(!(_0x445af2>0x0))throw Error(_0x540527(0x11d));if(!(_0x3fcdbc>0x0&&_0x55c328>_0x3fcdbc))throw Error('相机裁剪距离必须满足\x200\x20<\x20near\x20<\x20far。');let _0x2bd8d6=0x1/Math['tan'](_0x5d1fe5/0x2),_0x3c25d3=createMatrix();return _0x3c25d3[0x0]=_0x2bd8d6/_0x445af2,_0x3c25d3[0x5]=_0x2bd8d6,_0x3c25d3[0xa]=_0x55c328/(_0x3fcdbc-_0x55c328),_0x3c25d3[0xb]=-0x1,_0x3c25d3[0xe]=_0x3fcdbc*_0x55c328/(_0x3fcdbc-_0x55c328),_0x3c25d3;},createOrthographicMatrix=(_0x2a8507,_0x300bfb,_0x223436,_0x5b721b)=>{const _0x1f9b4b=_0x40c362;if(!(_0x2a8507>0x0&&_0x300bfb>0x0))throw Error(_0x1f9b4b(0x317));if(!(_0x223436>=0x0&&_0x5b721b>_0x223436))throw Error(_0x1f9b4b(0x25d));let _0x5442e2=_0x2a8507*_0x300bfb,_0x10c680=createIdentityMatrix();return _0x10c680[0x0]=0x2/_0x5442e2,_0x10c680[0x5]=0x2/_0x2a8507,_0x10c680[0xa]=0x1/(_0x223436-_0x5b721b),_0x10c680[0xe]=_0x223436/(_0x223436-_0x5b721b),_0x10c680;},createScaleMatrix=(_0x2c2347,_0x142c5f,_0x4c4766)=>{let _0x2e5ec9=createIdentityMatrix();return _0x2e5ec9[0x0]=_0x2c2347,_0x2e5ec9[0x5]=_0x142c5f,_0x2e5ec9[0xa]=_0x4c4766,_0x2e5ec9;},composeVolumeModelMatrix=(_0x439728,_0x518d7f)=>{const _0x2b5f8c=_0x40c362;if(!(_0x518d7f>0x0)||!Number[_0x2b5f8c(0x298)](_0x518d7f))throw Error('verticalScale\x20必须是大于\x200\x20的有限数。');let _0x3c9151=createScaleMatrix(0x1,_0x518d7f,0x1);return _0x439728?multiplyMatrices(_0x439728,_0x3c9151):_0x3c9151;},transformPoint=(_0x569fae,_0xd5059b,_0x488c47=0x1)=>[_0x569fae[0x0]*_0xd5059b[0x0]+_0x569fae[0x4]*_0xd5059b[0x1]+_0x569fae[0x8]*_0xd5059b[0x2]+_0x569fae[0xc]*_0x488c47,_0x569fae[0x1]*_0xd5059b[0x0]+_0x569fae[0x5]*_0xd5059b[0x1]+_0x569fae[0x9]*_0xd5059b[0x2]+_0x569fae[0xd]*_0x488c47,_0x569fae[0x2]*_0xd5059b[0x0]+_0x569fae[0x6]*_0xd5059b[0x1]+_0x569fae[0xa]*_0xd5059b[0x2]+_0x569fae[0xe]*_0x488c47,_0x569fae[0x3]*_0xd5059b[0x0]+_0x569fae[0x7]*_0xd5059b[0x1]+_0x569fae[0xb]*_0xd5059b[0x2]+_0x569fae[0xf]*_0x488c47],projectPointToViewport=(_0x29031f,_0x4f8a62,_0x47bf17,_0x9ae82f)=>{let _0x1bb7f7=transformPoint(_0x29031f,_0x4f8a62);if(_0x1bb7f7[0x3]<=EPSILON)return null;let _0x4cc290=0x1/_0x1bb7f7[0x3];return[(_0x1bb7f7[0x0]*_0x4cc290*0.5+0.5)*_0x47bf17,(0.5-_0x1bb7f7[0x1]*_0x4cc290*0.5)*_0x9ae82f,_0x1bb7f7[0x2]*_0x4cc290];},DEFAULT_POSITION=[0x0,0x1,0x2],DEFAULT_TARGET=[0x0,0x0,0x0],DEFAULT_UP=[0x0,0x1,0x0],DEFAULT_PROJECTION={'type':_0x40c362(0x381),'fovYDegrees':0x2d,'near':0.01,'far':0x2710},DEGREE_TO_RADIAN=Math['PI']/0xb4,cloneVector=_0x359ae8=>[_0x359ae8[0x0],_0x359ae8[0x1],_0x359ae8[0x2]],cloneProjection=_0x181792=>(_0x181792[_0x40c362(0x1cf)],{..._0x181792}),cloneState=_0x3036e5=>({'position':cloneVector(_0x3036e5[_0x40c362(0x36f)]),'target':cloneVector(_0x3036e5[_0x40c362(0x278)]),'up':cloneVector(_0x3036e5['up']),'projection':cloneProjection(_0x3036e5[_0x40c362(0x121)])}),subtractVector=(_0x25e0c4,_0x8389b3)=>[_0x25e0c4[0x0]-_0x8389b3[0x0],_0x25e0c4[0x1]-_0x8389b3[0x1],_0x25e0c4[0x2]-_0x8389b3[0x2]],addVector=(_0x278a0c,_0x56790d)=>[_0x278a0c[0x0]+_0x56790d[0x0],_0x278a0c[0x1]+_0x56790d[0x1],_0x278a0c[0x2]+_0x56790d[0x2]],scaleVector=(_0xee5acf,_0x5c2787)=>[_0xee5acf[0x0]*_0x5c2787,_0xee5acf[0x1]*_0x5c2787,_0xee5acf[0x2]*_0x5c2787],crossVector=(_0x16d963,_0x4d0299)=>[_0x16d963[0x1]*_0x4d0299[0x2]-_0x16d963[0x2]*_0x4d0299[0x1],_0x16d963[0x2]*_0x4d0299[0x0]-_0x16d963[0x0]*_0x4d0299[0x2],_0x16d963[0x0]*_0x4d0299[0x1]-_0x16d963[0x1]*_0x4d0299[0x0]],normalizeVector=_0x5426db=>{let _0x4abd63=Math['hypot'](_0x5426db[0x0],_0x5426db[0x1],_0x5426db[0x2]);return _0x4abd63===0x0?[0x0,0x0,0x0]:scaleVector(_0x5426db,0x1/_0x4abd63);},clamp$1=(_0x74168f,_0x4e2373,_0x20cb57)=>Math[_0x40c362(0x1de)](_0x20cb57,Math[_0x40c362(0x370)](_0x4e2373,_0x74168f)),validateProjection=_0x2b9e7e=>{const _0x151548=_0x40c362;if(!(_0x2b9e7e[_0x151548(0x1d3)]>=0x0&&_0x2b9e7e[_0x151548(0x2f0)]>_0x2b9e7e[_0x151548(0x1d3)]))throw Error(_0x151548(0x25d));if(_0x2b9e7e[_0x151548(0x1cf)]===_0x151548(0x381)&&!(_0x2b9e7e['near']>0x0&&_0x2b9e7e[_0x151548(0x218)]>0x0&&_0x2b9e7e['fovYDegrees']<0xb4))throw Error('透视相机参数无效。');if(_0x2b9e7e[_0x151548(0x1cf)]==='orthographic'&&!(_0x2b9e7e[_0x151548(0x2b1)]>0x0))throw Error(_0x151548(0x1c8));},resolveInitialState=_0x372d4d=>{const _0x49ce6b=_0x40c362;let _0x169e7d={'position':_0x372d4d['state']?.[_0x49ce6b(0x36f)]?cloneVector(_0x372d4d[_0x49ce6b(0x3d9)][_0x49ce6b(0x36f)]):cloneVector(DEFAULT_POSITION),'target':_0x372d4d[_0x49ce6b(0x3d9)]?.[_0x49ce6b(0x278)]?cloneVector(_0x372d4d['state'][_0x49ce6b(0x278)]):cloneVector(DEFAULT_TARGET),'up':_0x372d4d[_0x49ce6b(0x3d9)]?.['up']?cloneVector(_0x372d4d[_0x49ce6b(0x3d9)]['up']):cloneVector(DEFAULT_UP),'projection':_0x372d4d['state']?.[_0x49ce6b(0x121)]?cloneProjection(_0x372d4d['state'][_0x49ce6b(0x121)]):cloneProjection(DEFAULT_PROJECTION)};return validateProjection(_0x169e7d[_0x49ce6b(0x121)]),_0x169e7d;};var VolumeCamera=class{[_0x40c362(0x156)];[_0x40c362(0x1ee)];[_0x40c362(0x3b2)];[_0x40c362(0x28a)];[_0x40c362(0x37a)];[_0x40c362(0x36d)];['maximumDistance'];[_0x40c362(0x312)];[_0x40c362(0x1ea)];constructor(_0x43e147={}){const _0xaab89b=_0x40c362;if(this['cameraState']=resolveInitialState(_0x43e147),this['aspect']=_0x43e147[_0xaab89b(0x1ee)]??0x1,this[_0xaab89b(0x3b2)]=_0x43e147[_0xaab89b(0x3b2)]??0.005,this[_0xaab89b(0x28a)]=_0x43e147[_0xaab89b(0x28a)]??0x1,this[_0xaab89b(0x37a)]=_0x43e147[_0xaab89b(0x37a)]??0.0015,this[_0xaab89b(0x36d)]=_0x43e147[_0xaab89b(0x36d)]??0.001,this[_0xaab89b(0x1b6)]=_0x43e147[_0xaab89b(0x1b6)]??0x1/0x0,this[_0xaab89b(0x312)]=(_0x43e147[_0xaab89b(0x1e1)]??-0x59)*DEGREE_TO_RADIAN,this[_0xaab89b(0x1ea)]=(_0x43e147[_0xaab89b(0x1b2)]??0x59)*DEGREE_TO_RADIAN,!(this['aspect']>0x0))throw Error('相机宽高比必须大于\x200。');}get[_0x40c362(0x3d9)](){const _0x29ff25=_0x40c362;return cloneState(this[_0x29ff25(0x156)]);}get[_0x40c362(0x164)](){const _0x54fbc2=_0x40c362;let _0x2aac41=createLookAtMatrix(this[_0x54fbc2(0x156)][_0x54fbc2(0x36f)],this['cameraState'][_0x54fbc2(0x278)],this[_0x54fbc2(0x156)]['up']),_0x20c538=this[_0x54fbc2(0x2b5)](),_0x36f54f=multiplyMatrices(_0x20c538,_0x2aac41);return{'view':_0x2aac41,'projection':_0x20c538,'viewProjection':_0x36f54f,'inverseViewProjection':invertMatrix(_0x36f54f)};}[_0x40c362(0x36e)](_0x5f11f5){const _0x6f83b6=_0x40c362;validateProjection(_0x5f11f5[_0x6f83b6(0x121)]),this[_0x6f83b6(0x156)]=cloneState(_0x5f11f5);}[_0x40c362(0x2da)](_0x584bf7){const _0x5766fa=_0x40c362;if(!(_0x584bf7>0x0)||!Number[_0x5766fa(0x298)](_0x584bf7))throw Error(_0x5766fa(0x15f));this[_0x5766fa(0x1ee)]=_0x584bf7;}[_0x40c362(0x240)](_0x4d6053){const _0x36d233=_0x40c362;if(_0x4d6053===this[_0x36d233(0x156)][_0x36d233(0x121)][_0x36d233(0x1cf)])return;let _0x829bfe=Math[_0x36d233(0x2e1)](...subtractVector(this['cameraState']['position'],this[_0x36d233(0x156)][_0x36d233(0x278)]));if(_0x4d6053==='orthographic'){let _0x1207e3=this[_0x36d233(0x156)][_0x36d233(0x121)],_0x3f3f33=_0x1207e3['type']===_0x36d233(0x381)?_0x1207e3['fovYDegrees']*DEGREE_TO_RADIAN:0x2d*DEGREE_TO_RADIAN;this[_0x36d233(0x156)][_0x36d233(0x121)]={'type':_0x4d6053,'height':0x2*_0x829bfe*Math[_0x36d233(0x354)](_0x3f3f33/0x2),'near':_0x1207e3[_0x36d233(0x1d3)],'far':_0x1207e3[_0x36d233(0x2f0)]};return;}let _0x7e53a8=this[_0x36d233(0x156)]['projection'],_0x52af91=_0x7e53a8[_0x36d233(0x1cf)]===_0x36d233(0x2f7)?_0x7e53a8[_0x36d233(0x2b1)]/(0x2*Math[_0x36d233(0x354)](0x2d*DEGREE_TO_RADIAN/0x2)):_0x829bfe,_0x2494eb=normalizeVector(subtractVector(this[_0x36d233(0x156)][_0x36d233(0x36f)],this[_0x36d233(0x156)][_0x36d233(0x278)]));this[_0x36d233(0x156)][_0x36d233(0x36f)]=addVector(this[_0x36d233(0x156)][_0x36d233(0x278)],scaleVector(_0x2494eb,_0x52af91)),this[_0x36d233(0x156)][_0x36d233(0x121)]={'type':_0x4d6053,'fovYDegrees':0x2d,'near':_0x7e53a8[_0x36d233(0x1d3)],'far':_0x7e53a8[_0x36d233(0x2f0)]};}[_0x40c362(0x2df)](_0x64c9fd,_0x216b64){const _0x4d1027=_0x40c362;let _0x4c268d=subtractVector(this[_0x4d1027(0x156)][_0x4d1027(0x36f)],this[_0x4d1027(0x156)][_0x4d1027(0x278)]),_0xdc5eb7=Math[_0x4d1027(0x2e1)](..._0x4c268d);if(_0xdc5eb7===0x0)return;let _0x136d6e=Math[_0x4d1027(0x3dd)](_0x4c268d[0x0],_0x4c268d[0x2])-_0x64c9fd*this[_0x4d1027(0x3b2)],_0x5f51ca=clamp$1(Math[_0x4d1027(0x3ec)](_0x4c268d[0x1]/_0xdc5eb7)+_0x216b64*this[_0x4d1027(0x3b2)],this[_0x4d1027(0x312)],this['maximumPitch']),_0x5a4db4=Math[_0x4d1027(0x26b)](_0x5f51ca)*_0xdc5eb7;this[_0x4d1027(0x156)][_0x4d1027(0x36f)]=addVector(this['cameraState']['target'],[Math[_0x4d1027(0x250)](_0x136d6e)*_0x5a4db4,Math[_0x4d1027(0x250)](_0x5f51ca)*_0xdc5eb7,Math[_0x4d1027(0x26b)](_0x136d6e)*_0x5a4db4]);}[_0x40c362(0x113)](_0x128539,_0xa2f790,_0x5168a4){const _0x55a7be=_0x40c362;if(!(_0x5168a4>0x0))return;let _0x54eb10=normalizeVector(subtractVector(this[_0x55a7be(0x156)]['target'],this[_0x55a7be(0x156)]['position'])),_0x46b4e5=normalizeVector(crossVector(_0x54eb10,this[_0x55a7be(0x156)]['up'])),_0x511cde=normalizeVector(crossVector(_0x46b4e5,_0x54eb10)),_0x3ea5fa=Math[_0x55a7be(0x2e1)](...subtractVector(this['cameraState'][_0x55a7be(0x36f)],this[_0x55a7be(0x156)][_0x55a7be(0x278)])),_0x5eb381=(this['cameraState'][_0x55a7be(0x121)][_0x55a7be(0x1cf)]===_0x55a7be(0x2f7)?this[_0x55a7be(0x156)]['projection'][_0x55a7be(0x2b1)]:0x2*_0x3ea5fa*Math[_0x55a7be(0x354)](this[_0x55a7be(0x156)][_0x55a7be(0x121)][_0x55a7be(0x218)]*DEGREE_TO_RADIAN/0x2))/_0x5168a4*this[_0x55a7be(0x28a)],_0x59b933=addVector(scaleVector(_0x46b4e5,-_0x128539*_0x5eb381),scaleVector(_0x511cde,_0xa2f790*_0x5eb381));this[_0x55a7be(0x156)][_0x55a7be(0x36f)]=addVector(this[_0x55a7be(0x156)]['position'],_0x59b933),this[_0x55a7be(0x156)][_0x55a7be(0x278)]=addVector(this[_0x55a7be(0x156)][_0x55a7be(0x278)],_0x59b933);}[_0x40c362(0x41a)](_0x59a394){const _0x21392a=_0x40c362;let _0x58ca16=Math[_0x21392a(0x2c0)](_0x59a394*this['zoomSpeed']);if(this[_0x21392a(0x156)][_0x21392a(0x121)]['type']===_0x21392a(0x2f7)){this[_0x21392a(0x156)][_0x21392a(0x121)]={...this[_0x21392a(0x156)][_0x21392a(0x121)],'height':Math[_0x21392a(0x370)](this[_0x21392a(0x36d)],this['cameraState'][_0x21392a(0x121)][_0x21392a(0x2b1)]*_0x58ca16)};return;}let _0x3f686d=subtractVector(this[_0x21392a(0x156)][_0x21392a(0x36f)],this[_0x21392a(0x156)][_0x21392a(0x278)]),_0x5be8d9=clamp$1(Math['hypot'](..._0x3f686d)*_0x58ca16,this[_0x21392a(0x36d)],this[_0x21392a(0x1b6)]);this[_0x21392a(0x156)][_0x21392a(0x36f)]=addVector(this[_0x21392a(0x156)][_0x21392a(0x278)],scaleVector(normalizeVector(_0x3f686d),_0x5be8d9));}[_0x40c362(0x2b5)](){const _0x18d322=_0x40c362;let _0x4ef2f5=this['cameraState'][_0x18d322(0x121)];return _0x4ef2f5[_0x18d322(0x1cf)]===_0x18d322(0x381)?createPerspectiveMatrix(_0x4ef2f5[_0x18d322(0x218)]*DEGREE_TO_RADIAN,this['aspect'],_0x4ef2f5[_0x18d322(0x1d3)],_0x4ef2f5[_0x18d322(0x2f0)]):createOrthographicMatrix(_0x4ef2f5[_0x18d322(0x2b1)],this['aspect'],_0x4ef2f5[_0x18d322(0x1d3)],_0x4ef2f5[_0x18d322(0x2f0)]);}};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=_0x481539=>_0x481539*Math['PI']/0xb4,geodeticToEcef=(_0xa5b9a5,_0x1dd2d7,_0x2af4b6)=>{const _0x433b8f=_0x40c362;let _0x57f49b=Math[_0x433b8f(0x250)](_0x1dd2d7),_0x56b987=Math[_0x433b8f(0x26b)](_0x1dd2d7),_0x2a8578=Math[_0x433b8f(0x250)](_0xa5b9a5),_0x37f5c9=Math[_0x433b8f(0x26b)](_0xa5b9a5),_0x14c44b=WGS84_SEMI_MAJOR_AXIS_METERS/Math[_0x433b8f(0x31a)](0x1-WGS84_FIRST_ECCENTRICITY_SQUARED*_0x57f49b*_0x57f49b);return[(_0x14c44b+_0x2af4b6)*_0x56b987*_0x37f5c9,(_0x14c44b+_0x2af4b6)*_0x56b987*_0x2a8578,(_0x14c44b*(0x1-WGS84_FIRST_ECCENTRICITY_SQUARED)+_0x2af4b6)*_0x57f49b];},validateAxisSpan=(_0x128328,_0x3e14c2,_0x5013d6)=>{const _0xfbb5fe=_0x40c362;if(!Number[_0xfbb5fe(0x298)](_0x128328)||!Number[_0xfbb5fe(0x298)](_0x3e14c2)||_0x128328===_0x3e14c2)throw Error(_0x5013d6+_0xfbb5fe(0x35b)+_0x5013d6+_0xfbb5fe(0x3d7));},createGeographicVolumeLayout=(_0x22d2d8,_0x342152=0x1)=>{const _0x561c91=_0x40c362;let _0x2698a9=degreesToRadians(_0x22d2d8['xAxis'][_0x561c91(0x2ca)]),_0x8035c7=degreesToRadians(_0x22d2d8[_0x561c91(0x40d)][_0x561c91(0x1fa)]),_0x164cdc=degreesToRadians(_0x22d2d8[_0x561c91(0x2e5)][_0x561c91(0x2ca)]),_0x37faa3=degreesToRadians(_0x22d2d8[_0x561c91(0x2e5)][_0x561c91(0x1fa)]);validateAxisSpan(_0x2698a9,_0x8035c7,'Longitude\x20/\x20经度'),validateAxisSpan(_0x164cdc,_0x37faa3,_0x561c91(0x411));let _0x39c1b5=_0x22d2d8['yAxis']['start'],_0x48958f=_0x22d2d8[_0x561c91(0x368)][_0x561c91(0x1fa)];if(validateAxisSpan(_0x39c1b5,_0x48958f,_0x561c91(0x3bc)),!(_0x342152>0x0)||!Number[_0x561c91(0x298)](_0x342152))throw Error(_0x561c91(0x342));let _0x2f1ab3=_0x39c1b5+(_0x48958f-_0x39c1b5)*_0x342152,_0x1e18f4=(_0x2698a9+_0x8035c7)/0x2,_0x596d36=(_0x164cdc+_0x37faa3)/0x2,_0x236c5f=geodeticToEcef(_0x1e18f4,_0x596d36,0x0),_0x4e3c7e=Math[_0x561c91(0x429)](_0x8035c7-_0x2698a9)*WGS84_SEMI_MAJOR_AXIS_METERS*Math[_0x561c91(0x370)](0.01,Math['cos'](_0x596d36)),_0x224714=Math['abs'](_0x37faa3-_0x164cdc)*WGS84_SEMI_MAJOR_AXIS_METERS,_0x360804=Math[_0x561c91(0x370)](_0x4e3c7e,_0x224714);if(!(_0x360804>0x0)||!Number[_0x561c91(0x298)](_0x360804))throw Error('Geographic\x20volume\x20normalization\x20must\x20be\x20a\x20positive\x20finite\x20distance.\x20地理体积归一化尺度必须是正有限距离。');let _0x28f4c2=[0x1/0x0,0x1/0x0,0x1/0x0],_0x37b8fc=[-0x1/0x0,-0x1/0x0,-0x1/0x0];for(let _0x1973aa=0x0;_0x1973aa<=0x8;_0x1973aa+=0x1){let _0x407aa6=_0x164cdc+(_0x37faa3-_0x164cdc)*_0x1973aa/0x8;for(let _0x2123d1=0x0;_0x2123d1<=0x8;_0x2123d1+=0x1){let _0x56fc56=_0x2698a9+(_0x8035c7-_0x2698a9)*_0x2123d1/0x8;for(let _0x256d4c of[_0x39c1b5,_0x2f1ab3]){let _0x3f9a70=geodeticToEcef(_0x56fc56,_0x407aa6,_0x256d4c);for(let _0x31f4b2=0x0;_0x31f4b2<0x3;_0x31f4b2+=0x1){let _0x3e05d6=(_0x3f9a70[_0x31f4b2]-_0x236c5f[_0x31f4b2])/_0x360804;_0x28f4c2[_0x31f4b2]=Math[_0x561c91(0x1de)](_0x28f4c2[_0x31f4b2],_0x3e05d6),_0x37b8fc[_0x31f4b2]=Math[_0x561c91(0x370)](_0x37b8fc[_0x31f4b2],_0x3e05d6);}}}}let _0x1423b=_0x37b8fc[_0x561c91(0x358)]((_0x17da53,_0x1b1560)=>_0x17da53-_0x28f4c2[_0x1b1560]);if(_0x1423b[_0x561c91(0x34e)](_0x33f7b1=>!(_0x33f7b1>0x0)||!Number[_0x561c91(0x298)](_0x33f7b1)))throw Error(_0x561c91(0x31c));return{'centerEcef':_0x236c5f,'normalizationMeters':_0x360804,'proxyModelMatrix':[_0x1423b[0x0],0x0,0x0,0x0,0x0,_0x1423b[0x1],0x0,0x0,0x0,0x0,_0x1423b[0x2],0x0,_0x28f4c2[0x0],_0x28f4c2[0x1],_0x28f4c2[0x2],0x1],'transform':{'mode':_0x561c91(0x168),'centerEcefScaled':[_0x236c5f[0x0]/_0x360804,_0x236c5f[0x1]/_0x360804,_0x236c5f[0x2]/_0x360804],'semiMajorAxisScaled':WGS84_SEMI_MAJOR_AXIS_METERS/_0x360804,'semiMinorAxisScaled':WGS84_SEMI_MINOR_AXIS_METERS/_0x360804,'longitudeRadians':[_0x2698a9,_0x8035c7],'latitudeRadians':[_0x164cdc,_0x37faa3],'heightScaled':[_0x39c1b5/_0x360804,_0x2f1ab3/_0x360804]}};},ecefToGeographicVolumeLocal=(_0x288aad,_0x3d7a69)=>[(_0x288aad[0x0]-_0x3d7a69[_0x40c362(0x3b5)][0x0])/_0x3d7a69[_0x40c362(0x227)],(_0x288aad[0x1]-_0x3d7a69[_0x40c362(0x3b5)][0x1])/_0x3d7a69[_0x40c362(0x227)],(_0x288aad[0x2]-_0x3d7a69['centerEcef'][0x2])/_0x3d7a69['normalizationMeters']],isMissingValue=(_0x54a74e,_0xb44256)=>Number[_0x40c362(0x3a6)](_0x54a74e)||_0xb44256!==void 0x0&&_0x54a74e===_0xb44256,axisValueToNormalized=(_0x1a5e4a,_0x3e5f32)=>_0x1a5e4a[_0x40c362(0x2ca)]===_0x1a5e4a[_0x40c362(0x1fa)]?0x0:(_0x3e5f32-_0x1a5e4a['start'])/(_0x1a5e4a['end']-_0x1a5e4a[_0x40c362(0x2ca)]),validateProfile=_0x3483cf=>{const _0x549157=_0x40c362;if(!_0x3483cf['id'])throw Error('路线剖面\x20id\x20不能为空。');if(_0x3483cf['path'][_0x549157(0x3e0)]<0x4||_0x3483cf[_0x549157(0x235)][_0x549157(0x3e0)]%0x2!=0x0)throw Error(_0x549157(0x2e0)+_0x3483cf['id']+'\x20的\x20path\x20必须包含至少两个\x20[x,\x20z]\x20点。');if(_0x3483cf[_0x549157(0x256)][_0x549157(0x3e0)]<0x2)throw Error(_0x549157(0x2e0)+_0x3483cf['id']+_0x549157(0x18d));let _0x2fa321=_0x3483cf[_0x549157(0x235)][_0x549157(0x3e0)]/0x2;if(_0x3483cf['values'][_0x549157(0x3e0)]!==_0x2fa321*_0x3483cf[_0x549157(0x256)][_0x549157(0x3e0)])throw Error('路线剖面\x20'+_0x3483cf['id']+_0x549157(0x386));if(_0x3483cf[_0x549157(0x347)]!==void 0x0&&(!(_0x3483cf[_0x549157(0x347)]>=0x0&&_0x3483cf[_0x549157(0x347)]<=0x1)||!Number['isFinite'](_0x3483cf['opacity'])))throw Error('路线剖面\x20'+_0x3483cf['id']+_0x549157(0x2ad));for(let _0x1d8320 of _0x3483cf[_0x549157(0x235)])if(!Number[_0x549157(0x298)](_0x1d8320))throw Error(_0x549157(0x2e0)+_0x3483cf['id']+_0x549157(0x1bf));for(let _0x30e74e of _0x3483cf[_0x549157(0x256)])if(!Number[_0x549157(0x298)](_0x30e74e))throw Error(_0x549157(0x2e0)+_0x3483cf['id']+_0x549157(0x34a));return _0x2fa321;},createPositions=(_0x15d1d7,_0x45e0,_0x41f683)=>{const _0x1162c3=_0x40c362;let _0x22efc4=new Float32Array(_0x45e0*_0x15d1d7[_0x1162c3(0x256)][_0x1162c3(0x3e0)]*0x3);for(let _0x3775fb=0x0;_0x3775fb<_0x15d1d7['heights'][_0x1162c3(0x3e0)];_0x3775fb+=0x1)for(let _0x3bfb8f=0x0;_0x3bfb8f<_0x45e0;_0x3bfb8f+=0x1){let _0x40163c=(_0x3775fb*_0x45e0+_0x3bfb8f)*0x3;_0x22efc4[_0x40163c]=axisValueToNormalized(_0x41f683[_0x1162c3(0x40d)],_0x15d1d7[_0x1162c3(0x235)][_0x3bfb8f*0x2]),_0x22efc4[_0x40163c+0x1]=axisValueToNormalized(_0x41f683[_0x1162c3(0x368)],_0x15d1d7[_0x1162c3(0x256)][_0x3775fb]),_0x22efc4[_0x40163c+0x2]=axisValueToNormalized(_0x41f683[_0x1162c3(0x2e5)],_0x15d1d7[_0x1162c3(0x235)][_0x3bfb8f*0x2+0x1]);}return _0x22efc4;},createValues=_0x1f3db1=>{const _0x15d849=_0x40c362;let _0x448931=new Float32Array(_0x1f3db1[_0x15d849(0x3bf)]['length']);for(let _0x5cf327=0x0;_0x5cf327<_0x1f3db1[_0x15d849(0x3bf)]['length'];_0x5cf327+=0x1){let _0x2c6a7d=_0x1f3db1['values'][_0x5cf327];_0x448931[_0x5cf327]=isMissingValue(_0x2c6a7d,_0x1f3db1[_0x15d849(0x1b5)])?NaN:_0x2c6a7d;}return _0x448931;},createIndices=(_0x5a96f0,_0x412daf)=>{let _0x5c2369=new Uint32Array((_0x5a96f0-0x1)*(_0x412daf-0x1)*0x6),_0x50e439=0x0;for(let _0x22c5a4=0x0;_0x22c5a4<_0x412daf-0x1;_0x22c5a4+=0x1)for(let _0x4b9b69=0x0;_0x4b9b69<_0x5a96f0-0x1;_0x4b9b69+=0x1){let _0x17d614=_0x22c5a4*_0x5a96f0+_0x4b9b69,_0x42a39a=_0x17d614+0x1,_0x2b08f0=_0x17d614+_0x5a96f0,_0x399969=_0x2b08f0+0x1;_0x5c2369[_0x50e439]=_0x17d614,_0x5c2369[_0x50e439+0x1]=_0x42a39a,_0x5c2369[_0x50e439+0x2]=_0x2b08f0,_0x5c2369[_0x50e439+0x3]=_0x2b08f0,_0x5c2369[_0x50e439+0x4]=_0x42a39a,_0x5c2369[_0x50e439+0x5]=_0x399969,_0x50e439+=0x6;}return _0x5c2369;},buildVolumeRouteProfileMesh=(_0x447c6c,_0xd6da6d)=>{const _0x1fabaf=_0x40c362;let _0x1f9034=validateProfile(_0x447c6c);return{'id':_0x447c6c['id'],'positions':createPositions(_0x447c6c,_0x1f9034,_0xd6da6d),'values':createValues(_0x447c6c),'indices':createIndices(_0x1f9034,_0x447c6c[_0x1fabaf(0x256)][_0x1fabaf(0x3e0)]),'opacity':_0x447c6c[_0x1fabaf(0x347)]??0x1,'depthMode':_0x447c6c[_0x1fabaf(0x373)]??_0x1fabaf(0x39c),'revision':_0x447c6c['revision']};};function _0x5350(){const _0x3933ce=['yAxis','个色标范围不能是NaN','logicalBrickCount','pointerType','volume\x20scene\x20mesh\x20shader','minimumDistance','setState','position','max','cachedBricks','triangle-list','depthMode','profileResources','one','\x20必须是正整数。','sliceState','getInteractionKind','interactionElement','zoomSpeed','brickSortCount','axes','.\x20体积\x20timeIndex\x20越界。','mixed','Unable\x20to\x20allocate\x20a\x20WebGPU\x20R32F\x20volume\x20atlas\x20within\x20device\x20limits.\x20无法在设备限制内分配\x20WebGPU\x20R32F\x20体积图集。','sourceYStart','perspective','volume\x20metadata\x20params','parseInt','scheduleUploadPump','hitRadius','\x20的\x20values\x20长度与\x20path、heights\x20不匹配。','valuesEqual','deltaY','options','counts','copyTextureToBuffer','semiMajorAxisScaled','不支持的\x20rgb\x20颜色格式:\x20','inverseViewProjection','createCommandEncoder','step','timeIndex','Volume\x20opacity\x20stops\x20cannot\x20be\x20empty.\x20体积透明度节点不能为空。','pageTableBuffer','flex','topology','createLockedMarker','descriptors','Volume\x20chunk\x20','atlasLayout','float32x4','touchAction','scene','adapter','distance','onSliceError','brickDepth','\x20must\x20contain\x20sixteen\x20finite\x20values.\x20','.\x20体积时间索引越界。','viewProjection','getSceneBindGroupLayout','currentPreview','isNaN','width','WebGPU\x20volume\x20device\x20was\x20lost:\x20','listeners','sliceResources','Volume\x20source\x20must\x20provide\x20readChunk().\x20体积数据源必须提供\x20readChunk()。','render','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','geometryBindGroupLayout','axisHysteresis','uploadBatchCount','WebGPU\x20volume\x20memory\x20limits\x20must\x20be\x20positive.\x20WebGPU\x20体积显存限制必须大于零。','rotateSpeed','sceneBindGroupLayout','fragmentMain','centerEcef','WebGPU\x20transfer\x20resources\x20are\x20unavailable.\x20WebGPU\x20传递函数资源不可用。','maximumUploadBatchBytes','Returned\x20volume\x20chunk\x20dimensions\x20do\x20not\x20match\x20its\x20range.\x20返回体积分块尺寸与范围不一致。','line-list','setFrameAvailableCallback','skippedSamples','Height\x20/\x20高度','touchBricks','style','values','startsWith','maxX','addEventListener','handleWindowPointerMove','transparent','MAP_WRITE','opacityBuffer','volumeDimFactor\x20必须位于\x200\x20到\x201。','ecefToGeographicVolumeLocal','createBuffer','WebGPU\x20scene\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20场景绑定布局不可用。','idle','resize','stopPropagation','upload','layout','memoryTargetBytes','interactionController','dispatchWorkgroups','WebGPU\x20slice\x20resources\x20are\x20unavailable.\x20WebGPU\x20切面资源不可用。','slotCountY','WebGPU\x20volume\x20bricks\x20require\x20halo\x201.\x20WebGPU\x20体积砖块要求\x20halo\x20为\x201。','overlayTrianglePipeline','\x20轴必须包含两个不同的有限端点。','.\x20体积砖块数据长度不正确。','state','rgb\x20颜色通道数量不正确:\x20','getAttachments','set','atan2','colorValuesBuffer','locked','length','timeCount','camera','Volume\x20color\x20and\x20opacity\x20stops\x20cannot\x20be\x20empty.\x20体积颜色和透明度色标不能为空。','\x20with\x20one\x20sample\x20must\x20use\x20equal\x20endpoints.\x20','getCanvas','setBindGroup','now','loadBrick','key','clientY','contextmenu','asin','createResource','MAP_READ','hideAllMarkers','minY','buffer','autoFrameCount','transferBindGroup','notify','slotCount','560lleAHA','draw','volume\x20color\x20stop\x20colors','sort','catch','configureSource','updateTransferResources','firstChild','WebGPU\x20slice\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20切面绑定布局不可用。','clipMaximum','A\x20destroyed\x20volume\x20scene\x20cannot\x20capture\x20a\x20frame.\x20已销毁的体积场景不能读取帧。','geographicTransform','toUpperCase','Failed\x20to\x20acquire\x20a\x20WebGPU\x20adapter\x20for\x20the\x20volume\x20scene.\x20无法为体积场景获取\x20WebGPU\x20adapter。','initialize','atlasViews','syncLockedMarkers','coreSampleCount','startY','countZ','byteLength','The\x20maximum\x20locked\x20slice\x20count\x20has\x20been\x20reached.\x20已达到最大锁定切面数量。','find','xAxis','flushSliceState','createGeographicVolumeLayout','element','Latitude\x20/\x20纬度','moved','The\x20current\x20WebGPU\x20volume\x20atlas\x20requires\x20halo:\x201.\x20当前\x20WebGPU\x20体积图集要求\x20halo\x20为\x201。','capacity','setSliceTool','residentByLogicalIndex','update','volume-slice-','\x20无效。','dolly','composite','个色标范围的\x20min\x20必须小于\x20max','Volume\x20Y\x20axis','autoQuality','sliceDepthMode','chunk','sceneSlicePipeline','delete','WebGPU\x20transfer\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20传递函数绑定布局不可用。','depth','all','createTextNode','Volume\x20brick\x20upload\x20became\x20stale.\x20体积砖上传已过期。','geographic-wgs84','abs','metadata','getTransferBindGroupLayout','toFixed','127251JvnOYl','logicalIndex','clipMinimum','axisResources','volume-bounds','requestBrickSchedule','uploadStagingBuffer','opacityStopCount','levelStart','format','pan','depthView','WebGPU\x20volume\x20transfer\x20resources\x20are\x20incomplete.\x20WebGPU\x20体积传递函数资源不完整。','level','createGpuResources','overlayLinePipeline','WebGPU\x20volume\x20atlas\x20is\x20not\x20configured.\x20WebGPU\x20体积图集尚未配置。','destroyBuffers','canvas','cartesian','相机宽高比必须大于\x200。','valueScale','origin','submit','projection','\x20requires\x20','encodeOverlayPass','handleFrameAvailable','WebGPU\x20volume\x20atlas\x20texture\x20is\x20unavailable.\x20WebGPU\x20体积图集纹理不可用。','uniform','border','volume\x20atlas\x20clear\x20pipeline','interactionStepScale','startX','div','relative','brickScheduleCount','rgba(','top','vertexMain','Volume\x20opacity\x20must\x20be\x20within\x20[0,\x201].\x20体积透明度必须位于\x20[0,\x201]。','getBoundingClientRect','cursor','矩阵不可逆。','isInteger','acquireSlot','viewportHeight','lastUsedFrame','scheduleBricks','Volume\x20brick\x20coordinate\x20is\x20out\x20of\x20range.\x20体积分块坐标越界。','interactionRenderScale','getMappedRange','WebGPU\x20axis\x20resources\x20are\x20unavailable.\x20WebGPU\x20轴线资源不可用。','pointerup','value','defineProperty','slotCountZ','onInteractionEnd','setSource','toolMode','initializing','\x20包含多个采样点时步长不能为零。','Volume\x20brick\x20upload\x20was\x20superseded\x20by\x20a\x20new\x20source.\x20体积砖上传已被新数据源替代。','residentBySlotIndex','verticalScale','coordinate','round','clipBox','destroy','atlasIndex','Volume\x20opacity\x20stops\x20must\x20be\x20between\x20zero\x20and\x20one.\x20体积透明度色标必须位于零到一之间。','A\x20destroyed\x20WebGPU\x20volume\x20renderer\x20cannot\x20be\x20initialized\x20again.\x20已销毁的\x20WebGPU\x20体积渲染器不能再次初始化。','maxZ',',\x20count=','brickHeight','WebGPU\x20volume\x20renderer\x20is\x20not\x20ready\x20for\x20frame\x20capture.\x20WebGPU\x20体积渲染器尚不能读取帧。','\x20must\x20be\x20a\x20positive\x20finite\x20number.\x20','cameraState','limits','replace','lifecycleState','\x20只有一个采样点时端点必须相等。','prepareBrickUpload','flatMap','rgb(','lockedSlices','相机宽高比必须是大于\x200\x20的有限数。','syncPreview','slices','createLayout','beginRenderPass','matrices','includes','preview','container','wgs84','WebGPU\x20volume\x20atlas\x20has\x20no\x20evictable\x20slot.\x20WebGPU\x20体积图集没有可驱逐的槽位。','clear','Returned\x20volume\x20chunk\x20range\x20does\x20not\x20match\x20the\x20request.\x20返回体积分块范围与请求不一致。','finally','isSafeInteger','pointercancel','uniformUpdateCount','bindSliceState','createPipelineLayout','showDebugGeometry','BYTES_PER_ELEMENT','getSceneParamsBuffer','opacityStops','mapAsync','actualFrameIntervalMilliseconds','bufferOffset','VERTEX','getFormat','markerOverlay','pendingBrickUploads','previousAxis','always-visible','renderDirty','remove','configureSourceResources','handlePointerLeave','createPipelines','maxLockedSlices','geometryBindGroup','setSlices','read-only-storage','sceneBindGroup','resolve','proxyModelMatrix','findIndex','maximum','\x20至少需要两个高度层。','Volume\x20chunk\x20range\x20exceeds\x20source\x20dimensions.\x20体积分块范围超出源数据尺寸。','memoryHardLimitBytes','createInMemoryVolumeSource','sceneTrianglePipeline','writeBuffer','touch','store','generation','12px/1.2\x20sans-serif','loadedKeys','heightScaled','cachedAxes','setVertexBuffer','depthTexture','volume\x20brick\x20upload\x20batch\x20flush','activePointer','不支持的颜色格式:\x20','pushErrorScope','AbortError','isInteracting','encodePreparedBrickUpload','frameIndex','endInteraction','getVolumeBindGroupLayout','hitTolerance','volume\x20scene\x20depth','WebGPU\x20scene\x20attachments\x20are\x20unavailable.\x20WebGPU\x20场景附件不可用。','setPipeline','size','volume\x20frame\x20capture','2527200mjObge','WebGPU\x20volume\x20device\x20restoration\x20failed.\x20WebGPU\x20体积设备恢复失败。','onSubmittedWorkDone','extent','aria-label','.\x20体积分块\x20','maximumPitchDegrees','\x20plate\x20color\x20must\x20use\x20values\x20from\x20zero\x20through\x20one.\x20体积切面底板颜色必须位于零至一。','button','noData','maximumDistance','vertexCount','findAxisHit','resetBrickRequests','volume\x20transfer\x20bind\x20group\x20layout','baseModelMatrix','多采样点切面轴的起止值不能相等。','setRouteProfiles','statistics','\x20的\x20path\x20包含非有限坐标。','less','createView','eventDisposers','activeInteractions','colorBuffer','getUploadStagingBuffer','userSelect','captureFrame','正交相机高度必须大于\x200。','borderRadius','\x20必须是非负有限数值。','readRange','halo','splice','validation','type','volumePipeline','colorStops\x20不能为空','volume\x20atlas\x20bind\x20group\x20layout','near','frameAvailableCallback','brickWidth','unfilterable-float','sliceId','coordinateSystem','device','createValues','1899672IdltzD','plateColor','smooth','min','copyBufferToTexture','WebGPU\x20volume\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20体积绑定布局不可用。','minimumPitchDegrees','managed','encodeScenePass','get','handlePointerDown','positionMarker','bindSliceInteraction','nextId','writeParams','maximumPitch','Volume\x20color\x20stops\x20must\x20be\x20sorted\x20by\x20value.\x20体积颜色色标必须按数值升序排列。','volume\x20slice\x20bind\x20group\x20layout','1407SqWSNv','aspect','viewportWidth','createShaderModule','subscribe','\x20范围无效。','slicePlateColor','volume\x20atlas\x20clear','devicePixelRatio','Maximum\x20locked\x20slice\x20count\x20is\x20','slice','opacityValuesBuffer','attachments','end','hasPointerCapture','nowrap','preventDefault','.\x20WebGPU\x20体积设备已丢失。','minimum','onInteractionStart','add','WebGPU\x20volume\x20atlas\x20resources\x20are\x20incomplete.\x20WebGPU\x20体积图集资源不完整。','densityScale','indices','Volume','whiteSpace','enqueueBrickUpload','fill','\x20必须包含十六个有限数值。','ceil','error','balanced','beginInteraction','updateSlice','inherit','WebGPU\x20volume\x20resources\x20were\x20released.\x20WebGPU\x20体积资源已释放。','axisHysteresisPixels','volumeMetadata','recreateSceneBindGroup','maxLockedSlices\x20必须是正整数。','colorStops','uploadPump','lastFrameTimeMilliseconds','fovYDegrees','volumeParamsBuffer','mode','slotIndex','\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','RENDER_ATTACHMENT','color','drawMeshes','endY','uploadStagingBufferSize','WebGPU\x20volume\x20context\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20context\x20尚未初始化。','xStart','depth32float','sceneDepthView','maxTextureDimension3D','normalizationMeters','volume\x20atlas\x20clear\x20shader','12CSnEkE','getSliceResources','reject','lastSubmittedFrameTimestamp','floor','setTransfer','bytesPerRow','setTimeIndex','getVolumeParamsBuffer','previewMarker','\x20values\x20but\x20received\x20','WebGPU\x20profile\x20resources\x20are\x20unavailable.\x20WebGPU\x20剖面资源不可用。','path','volume\x20atlas\x20clear\x20bind\x20group','writePageEntry','slotCountX','pageTableValues','create','volume\x20geometry\x20bind\x20group','sceneLinePipeline','volumeDimFactor','toStringTag','coreRange','setProjectionType','切面轴端点必须是有限数。','countX','previousContainerPosition','cameraPosition','getFrame','UNIFORM','11CllcXm','WebGPU\x20volume\x20frame\x20capture\x20failed:\x20','requestAdapter','volumeCamera','releaseGpuResources','transferBindGroupLayout','volume\x20geometry\x20bind\x20group\x20layout','getStepLength','volume\x20scene\x20geometry\x20pass','sin','.\x20体积数据长度与维度不匹配。','Returned\x20volume\x20chunk\x20timeIndex\x20does\x20not\x20match\x20the\x20request.\x20返回体积分块的时间索引与请求不一致。','unmap','WebGPU\x20volume\x20format\x20is\x20not\x20initialized.\x20WebGPU\x20体积格式尚未初始化。','sourceYCount','heights','clientX','Module','atlas','beginLockedSliceDrag','finish','volume\x20frame\x20readback','相机裁剪距离必须满足\x200\x20<=\x20near\x20<\x20far。','Volume\x20requires\x20','handlePointerUp','createRenderPipeline','cachedProfiles','TEXTURE_BINDING','subarray','onLimitReached','\x20position\x20must\x20be\x20normalized\x20to\x20zero\x20through\x20one.\x20体积切面位置必须归一化到零至一。','WebGPU\x20is\x20required\x20for\x20the\x20volume\x20scene\x20but\x20is\x20unavailable.\x20体积场景需要\x20WebGPU,但当前环境不可用。','不支持的\x20hex\x20颜色格式:\x20','range','count','volume\x20transfer\x20bind\x20group','cos','transform','longitudeRadians','pointermove','overlayContainer','getDevice','pointerId','translate(-50%,\x20-100%)','match','requestControllers','destroyed','destroyResources','getGeometryBindGroupLayout','target','recordFrameInterval','renderScale','renderMode','r32float','Count','xCount','context','pendingKeys','clientHeight','pixelRatioCap','sliceInteraction','4px','WebGPU\x20scene\x20params\x20buffer\x20is\x20unavailable.\x20WebGPU\x20场景参数\x20Buffer\x20不可用。','unsubscribe','Volume\x20Z\x20axis','configureModel','keys','panSpeed','modelMatrix','lastTimingFrameTimestamp','display','unconfigure','WebGPU\x20volume\x20scene\x20dimensions\x20must\x20be\x20positive\x20integers.\x20WebGPU\x20体积场景尺寸必须是正整数。','volume\x20atlas\x20clear\x20pass','textContent','handlePointerMove','occupied','next','bindGroup','getContext','budgetLimited','isFinite','frameInFlight','initializationGeneration','clearAtlasTexture','Volume\x20opacity\x20stop\x20values\x20must\x20be\x20finite\x20and\x20strictly\x20increasing.\x20体积透明度节点值必须有限且严格递增。','colorStopCount','无法归一化长度为零的三维向量。','volumeAxisValueToNormalized','performance','memoryLimitBytes','getAtlas','overlaySlicePipeline','3px\x206px','readChunk','getPageTableBuffer','Volume\x20slice\x20','pointerdown','uploadGeneration','createVolumeScene','abort','FRAGMENT','\x20的\x20opacity\x20必须位于\x200\x20到\x201。','centerEcefScaled','append','WebGPU\x20volume\x20canvas\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20Canvas\x20尚未初始化。','height','volume\x20raymarch\x20pass','\x20必须是正有限数值。','writeVolumeParams','createProjectionMatrix','padding','getAxisResources','snapshot','residentBrickCount','encodeVolumePass','navigationMode','Volume\x20brick\x20','shift','onSlicesChange','volume\x20always\x20visible\x20pass','exp','brickScheduleDirty','desiredKeys','25010FIykxm','has','cacheBrickUpload','watchDeviceLost','quality','WebGPU\x20scene\x20depth\x20attachment\x20is\x20not\x20initialized.\x20WebGPU\x20场景深度附件尚未初始化。','webgpu','start','load','1px\x20solid\x20rgb(255\x20255\x20255\x20/\x2065%)','STORAGE_BINDING','minZ','removeEventListener','axisDefinitions','then','STORAGE','colorMode','maxBufferSize','transferResources','volume\x20scene\x20frame','updateAutoQuality','getSliceBindGroupLayout','createBindGroupLayout','setAspect','createTexture','volumeBindGroupLayout','configure','removeSlice','orbit','路线剖面\x20','hypot','backend','COPY_SRC','flushBrickSchedule','zAxis','setCamera','toLowerCase','profiles','getEffectiveQuality','static','切面轴采样数必须是正整数。','getEffectiveRenderScale','Volume\x20timeCount','requestRender','high-performance','far','submittedFrameCount','volume\x20slice\x20shader','visible','wheel','cachedSlices','pointerleave','orthographic','16231284glrJUa','Volume\x20timeIndex\x20is\x20out\x20of\x20range:\x20','\x20count','normalizedToVolumeAxisValue','clearPreview','rebuildProfiles','atlasCapacity','rowsPerImage','forEach','external','volumeBindGroup','autoFrameIntervalTotal','Alpha\x20颜色通道必须在0\x20~\x201之间','sourceGeneration','mouse','updateLockedSlice','\x20端点必须是有限数值。','drawSlices','0\x202px','resourceRebuildCount','shape','axis','ready','prepared','clientWidth','sliceBindGroupLayout','minimumPitch','vertices','sceneParamsBuffer','createBindGroup','none','正交相机高度和宽高比必须大于\x200。','resources','colorInputs','sqrt','bgra8unorm','Geographic\x20volume\x20proxy\x20bounds\x20are\x20invalid.\x20地理体积代理范围无效。','renderer','push','from','cacheOnSuccess','levelCount','processBrickUploads','clearLockedSlices','READ','pointerEvents','\x20must\x20be\x20a\x20non-negative\x20finite\x20value.\x20','COPY_DST','createElement','revision','latitudeRadians','background','one-minus-src-alpha','lockSlice','source','positions','28088oYoyRe','initialized','name','left','atlasTextures','Scene\x20mesh\x20','pendingSliceSnapshot','endX','bindControls','updatePreview','float32x3','viewProjectionMatrix','setAxes','\x20must\x20be\x20a\x20positive\x20integer.\x20体积分块\x20','filter','getTransferResources','\x20range\x20is\x20invalid:\x20start=','inverseModelMatrix','verticalScale\x20must\x20be\x20a\x20positive\x20finite\x20value.\x20verticalScale\x20必须是大于\x200\x20的有限数。','markers','auto','WRITE','lockPreview','opacity','countY','requestDevice','\x20的\x20heights\x20包含非有限高度。','zIndex','createComputePipeline','frameRequest','some','删除切面','beginComputePass','1094325UcjqXi','Volume\x20slice\x20ID\x20','absolute','tan','setToolMode','formatPosition','stepLength','map','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','pointer','\x20axis\x20must\x20contain\x20two\x20different\x20finite\x20endpoints.\x20','getAtlasTexture','uploadedBrickCount','signal','rejectPendingBrickUploads','getProfileResources','applyHit','clearPageEntry','trim','5OqiDrk','createSliceState','font','queue'];_0x5350=function(){return _0x3933ce;};return _0x5350();}var volumeRaymarch_default=_0x40c362(0x3ad),sceneMesh_default=_0x40c362(0x359),volumeSlice_default='struct\x20SceneParams\x20{\x0a\x20\x20\x20\x20viewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseViewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20modelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseModelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20cameraPosition:\x20vec4f,\x0a\x20\x20\x20\x20viewport:\x20vec4f,\x0a\x20\x20\x20\x20clipMinimum:\x20vec4f,\x0a\x20\x20\x20\x20clipMaximum:\x20vec4f,\x0a\x20\x20\x20\x20render:\x20vec4f,\x0a\x20\x20\x20\x20transfer:\x20vec4f,\x0a\x20\x20\x20\x20geographic0:\x20vec4f,\x0a\x20\x20\x20\x20geographic1:\x20vec4f,\x0a\x20\x20\x20\x20geographic2:\x20vec4f,\x0a}\x0a\x0astruct\x20VolumeParams\x20{\x0a\x20\x20\x20\x20dimensions:\x20vec4u,\x0a\x20\x20\x20\x20brickInterior:\x20vec4u,\x0a\x20\x20\x20\x20brickCount:\x20vec4u,\x0a\x20\x20\x20\x20atlasSlots:\x20vec4u,\x0a\x20\x20\x20\x20atlasDimensions:\x20vec4u,\x0a\x20\x20\x20\x20valueMeta:\x20vec4f,\x0a}\x0a\x0astruct\x20PageTable\x20{\x20values:\x20array<vec4u>\x20}\x0astruct\x20FloatValues\x20{\x20values:\x20array<f32>\x20}\x0astruct\x20Colors\x20{\x20values:\x20array<vec4f>\x20}\x0astruct\x20SliceParams\x20{\x0a\x20\x20\x20\x20data:\x20vec4f,\x0a\x20\x20\x20\x20plateColor:\x20vec4f,\x0a}\x0astruct\x20VolumeSample\x20{\x20value:\x20f32,\x20valid:\x20bool\x20}\x0a\x0astruct\x20SliceVertexOutput\x20{\x0a\x20\x20\x20\x20@builtin(position)\x20position:\x20vec4f,\x0a\x20\x20\x20\x20@location(0)\x20modelPosition:\x20vec3f,\x0a}\x0a\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20scene:\x20SceneParams;\x0a@group(1)\x20@binding(0)\x20var\x20volumeAtlas0:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(1)\x20var\x20volumeAtlas1:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(2)\x20var\x20volumeAtlas2:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(3)\x20var\x20volumeAtlas3:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(4)\x20var\x20volumeAtlas4:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(5)\x20var\x20volumeAtlas5:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(6)\x20var\x20volumeAtlas6:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(7)\x20var\x20volumeAtlas7:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(8)\x20var<storage,\x20read>\x20pageTable:\x20PageTable;\x0a@group(1)\x20@binding(9)\x20var<uniform>\x20volume:\x20VolumeParams;\x0a@group(2)\x20@binding(0)\x20var<storage,\x20read>\x20colorStopValues:\x20FloatValues;\x0a@group(2)\x20@binding(1)\x20var<storage,\x20read>\x20colorStopColors:\x20Colors;\x0a@group(2)\x20@binding(2)\x20var<storage,\x20read>\x20opacityStopValues:\x20FloatValues;\x0a@group(2)\x20@binding(3)\x20var<storage,\x20read>\x20opacityStopAlphas:\x20FloatValues;\x0a@group(3)\x20@binding(0)\x20var<uniform>\x20slice:\x20SliceParams;\x0a\x0afn\x20invalidVolumeSample()\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20return\x20VolumeSample(0.0,\x20false);\x0a}\x0a\x0afn\x20validVolumeSample(value:\x20f32)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20return\x20VolumeSample(value,\x20true);\x0a}\x0a\x0afn\x20getPageIndex(brick:\x20vec3u)\x20->\x20u32\x20{\x0a\x20\x20\x20\x20return\x20brick.x\x20+\x20brick.y\x20*\x20volume.brickCount.x\x20+\x20brick.z\x20*\x20volume.brickCount.x\x20*\x20volume.brickCount.y;\x0a}\x0a\x0afn\x20getSlotCoordinate(slotIndex:\x20u32)\x20->\x20vec3u\x20{\x0a\x20\x20\x20\x20let\x20layerSize\x20=\x20volume.atlasSlots.x\x20*\x20volume.atlasSlots.y;\x0a\x20\x20\x20\x20let\x20z\x20=\x20slotIndex\x20/\x20layerSize;\x0a\x20\x20\x20\x20let\x20remainder\x20=\x20slotIndex\x20-\x20z\x20*\x20layerSize;\x0a\x20\x20\x20\x20let\x20y\x20=\x20remainder\x20/\x20volume.atlasSlots.x;\x0a\x20\x20\x20\x20return\x20vec3u(remainder\x20-\x20y\x20*\x20volume.atlasSlots.x,\x20y,\x20z);\x0a}\x0a\x0afn\x20loadAtlasValue(atlasIndex:\x20u32,\x20coordinate:\x20vec3i)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x200u)\x20{\x20return\x20textureLoad(volumeAtlas0,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x201u)\x20{\x20return\x20textureLoad(volumeAtlas1,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x202u)\x20{\x20return\x20textureLoad(volumeAtlas2,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x203u)\x20{\x20return\x20textureLoad(volumeAtlas3,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x204u)\x20{\x20return\x20textureLoad(volumeAtlas4,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x205u)\x20{\x20return\x20textureLoad(volumeAtlas5,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x206u)\x20{\x20return\x20textureLoad(volumeAtlas6,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20return\x20textureLoad(volumeAtlas7,\x20coordinate,\x200).r;\x0a}\x0a\x0afn\x20loadAtlasVoxel(voxel:\x20vec3i,\x20owningBrick:\x20vec3u)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20let\x20page\x20=\x20pageTable.values[getPageIndex(owningBrick)];\x0a\x0a\x20\x20\x20\x20if\x20(page.x\x20==\x200u\x20||\x20page.z\x20==\x200u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20physicalBrick\x20=\x20volume.brickInterior.xyz\x20+\x20vec3u(2u);\x0a\x20\x20\x20\x20let\x20slot\x20=\x20getSlotCoordinate(page.x\x20-\x201u);\x0a\x20\x20\x20\x20let\x20local\x20=\x20voxel\x20-\x20vec3i(owningBrick\x20*\x20volume.brickInterior.xyz)\x20+\x20vec3i(1);\x0a\x20\x20\x20\x20let\x20value\x20=\x20loadAtlasValue(page.w,\x20vec3i(slot\x20*\x20physicalBrick)\x20+\x20local);\x0a\x0a\x20\x20\x20\x20if\x20(value\x20!=\x20value\x20||\x20(volume.valueMeta.y\x20>\x200.5\x20&&\x20value\x20==\x20volume.valueMeta.x))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20validVolumeSample(value);\x0a}\x0a\x0afn\x20sampleVolume(modelPosition:\x20vec3f)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20let\x20normalized\x20=\x20clamp(modelPosition,\x20vec3f(0.0),\x20vec3f(1.0));\x0a\x20\x20\x20\x20let\x20voxel\x20=\x20normalized\x20*\x20vec3f(volume.dimensions.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20baseVoxel\x20=\x20vec3i(floor(voxel));\x0a\x20\x20\x20\x20let\x20nextVoxel\x20=\x20min(baseVoxel\x20+\x20vec3i(1),\x20vec3i(volume.dimensions.xyz\x20-\x20vec3u(1u)));\x0a\x20\x20\x20\x20let\x20fraction\x20=\x20voxel\x20-\x20vec3f(baseVoxel);\x0a\x20\x20\x20\x20let\x20owningBrick\x20=\x20min(vec3u(baseVoxel)\x20/\x20volume.brickInterior.xyz,\x20volume.brickCount.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20c000\x20=\x20loadAtlasVoxel(baseVoxel,\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c100\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20baseVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c010\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20nextVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c110\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20nextVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c001\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20baseVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c101\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20baseVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c011\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20nextVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c111\x20=\x20loadAtlasVoxel(nextVoxel,\x20owningBrick);\x0a\x0a\x20\x20\x20\x20if\x20(!c000.valid\x20||\x20!c100.valid\x20||\x20!c010.valid\x20||\x20!c110.valid\x20||\x20!c001.valid\x20||\x20!c101.valid\x20||\x20!c011.valid\x20||\x20!c111.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20bottom\x20=\x20mix(mix(c000.value,\x20c100.value,\x20fraction.x),\x20mix(c010.value,\x20c110.value,\x20fraction.x),\x20fraction.y);\x0a\x20\x20\x20\x20let\x20top\x20=\x20mix(mix(c001.value,\x20c101.value,\x20fraction.x),\x20mix(c011.value,\x20c111.value,\x20fraction.x),\x20fraction.y);\x0a\x20\x20\x20\x20return\x20validVolumeSample(mix(bottom,\x20top,\x20fraction.z));\x0a}\x0a\x0afn\x20sampleColor(value:\x20f32)\x20->\x20vec4f\x20{\x0a\x20\x20\x20\x20let\x20count\x20=\x20u32(scene.transfer.x);\x0a\x0a\x20\x20\x20\x20if\x20(count\x20==\x201u\x20||\x20value\x20<=\x20colorStopValues.values[0u])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20colorStopColors.values[0u];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20+\x201u\x20<\x20count;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20start\x20=\x20colorStopValues.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20end\x20=\x20colorStopValues.values[index\x20+\x201u];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20<\x20end)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(scene.transfer.w\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20colorStopColors.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20mix(colorStopColors.values[index],\x20colorStopColors.values[index\x20+\x201u],\x20clamp((value\x20-\x20start)\x20/\x20max(end\x20-\x20start,\x200.000001),\x200.0,\x201.0));\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20colorStopColors.values[count\x20-\x201u];\x0a}\x0a\x0afn\x20sampleOpacity(value:\x20f32)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20let\x20count\x20=\x20u32(scene.transfer.y);\x0a\x0a\x20\x20\x20\x20if\x20(count\x20==\x201u\x20||\x20value\x20<=\x20opacityStopValues.values[0u])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20opacityStopAlphas.values[0u];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20+\x201u\x20<\x20count;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20start\x20=\x20opacityStopValues.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20end\x20=\x20opacityStopValues.values[index\x20+\x201u];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20<\x20end)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(scene.transfer.w\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20opacityStopAlphas.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20mix(opacityStopAlphas.values[index],\x20opacityStopAlphas.values[index\x20+\x201u],\x20clamp((value\x20-\x20start)\x20/\x20max(end\x20-\x20start,\x200.000001),\x200.0,\x201.0));\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20opacityStopAlphas.values[count\x20-\x201u];\x0a}\x0a\x0afn\x20getPlanePosition(axis:\x20u32,\x20planePosition:\x20f32,\x20corner:\x20vec2f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20if\x20(axis\x20==\x200u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec3f(planePosition,\x20corner.x,\x20corner.y);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(axis\x20==\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec3f(corner.x,\x20planePosition,\x20corner.y);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20vec3f(corner.x,\x20corner.y,\x20planePosition);\x0a}\x0a\x0afn\x20getCorner(vertexIndex:\x20u32)\x20->\x20vec2f\x20{\x0a\x20\x20\x20\x20let\x20corners\x20=\x20array<vec2f,\x206>(\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec2f(0.0,\x200.0),\x20vec2f(1.0,\x200.0),\x20vec2f(0.0,\x201.0),\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec2f(0.0,\x201.0),\x20vec2f(1.0,\x200.0),\x20vec2f(1.0,\x201.0)\x0a\x20\x20\x20\x20);\x0a\x20\x20\x20\x20return\x20corners[vertexIndex];\x0a}\x0a\x0afn\x20getTessellatedCorner(vertexIndex:\x20u32)\x20->\x20vec2f\x20{\x0a\x20\x20\x20\x20let\x20gridSize\x20=\x2032u;\x0a\x20\x20\x20\x20let\x20cellIndex\x20=\x20vertexIndex\x20/\x206u;\x0a\x20\x20\x20\x20let\x20cellX\x20=\x20cellIndex\x20%\x20gridSize;\x0a\x20\x20\x20\x20let\x20cellY\x20=\x20cellIndex\x20/\x20gridSize;\x0a\x20\x20\x20\x20return\x20(vec2f(f32(cellX),\x20f32(cellY))\x20+\x20getCorner(vertexIndex\x20%\x206u))\x20/\x20f32(gridSize);\x0a}\x0a\x0afn\x20volumeToWorld(position:\x20vec3f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20if\x20(scene.geographic0.x\x20<\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20transformed\x20=\x20scene.modelMatrix\x20*\x20vec4f(position,\x201.0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20transformed.xyz\x20/\x20transformed.w;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20longitude\x20=\x20mix(scene.geographic1.z,\x20scene.geographic1.w,\x20position.x);\x0a\x20\x20\x20\x20let\x20latitude\x20=\x20mix(scene.geographic2.x,\x20scene.geographic2.y,\x20position.z);\x0a\x20\x20\x20\x20let\x20height\x20=\x20mix(scene.geographic2.z,\x20scene.geographic2.w,\x20position.y);\x0a\x20\x20\x20\x20let\x20latitudeSin\x20=\x20sin(latitude);\x0a\x20\x20\x20\x20let\x20latitudeCos\x20=\x20cos(latitude);\x0a\x20\x20\x20\x20let\x20semiMajor\x20=\x20scene.geographic1.x;\x0a\x20\x20\x20\x20let\x20semiMinor\x20=\x20scene.geographic1.y;\x0a\x20\x20\x20\x20let\x20eccentricitySquared\x20=\x201.0\x20-\x20semiMinor\x20*\x20semiMinor\x20/\x20(semiMajor\x20*\x20semiMajor);\x0a\x20\x20\x20\x20let\x20primeVerticalRadius\x20=\x20semiMajor\x20/\x20sqrt(1.0\x20-\x20eccentricitySquared\x20*\x20latitudeSin\x20*\x20latitudeSin);\x0a\x20\x20\x20\x20let\x20ecef\x20=\x20vec3f(\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20+\x20height)\x20*\x20latitudeCos\x20*\x20cos(longitude),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20+\x20height)\x20*\x20latitudeCos\x20*\x20sin(longitude),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20*\x20(1.0\x20-\x20eccentricitySquared)\x20+\x20height)\x20*\x20latitudeSin\x0a\x20\x20\x20\x20);\x0a\x20\x20\x20\x20return\x20ecef\x20-\x20scene.geographic0.yzw;\x0a}\x0a\x0a@vertex\x0afn\x20vertexMain(@builtin(vertex_index)\x20vertexIndex:\x20u32)\x20->\x20SliceVertexOutput\x20{\x0a\x20\x20\x20\x20let\x20modelPosition\x20=\x20getPlanePosition(u32(slice.data.x),\x20slice.data.y,\x20getTessellatedCorner(vertexIndex));\x0a\x20\x20\x20\x20let\x20clipPosition\x20=\x20scene.viewProjection\x20*\x20vec4f(volumeToWorld(modelPosition),\x201.0);\x0a\x20\x20\x20\x20return\x20SliceVertexOutput(clipPosition,\x20modelPosition);\x0a}\x0a\x0a@fragment\x0afn\x20fragmentMain(input:\x20SliceVertexOutput)\x20->\x20@location(0)\x20vec4f\x20{\x0a\x20\x20\x20\x20let\x20sample\x20=\x20sampleVolume(input.modelPosition);\x0a\x20\x20\x20\x20let\x20plateAlpha\x20=\x20slice.plateColor.a;\x0a\x20\x20\x20\x20let\x20platePremultiplied\x20=\x20slice.plateColor.rgb\x20*\x20plateAlpha;\x0a\x0a\x20\x20\x20\x20if\x20(!sample.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(plateAlpha\x20<=\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20discard;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec4f(platePremultiplied,\x20plateAlpha);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20color\x20=\x20sampleColor(sample.value);\x0a\x20\x20\x20\x20let\x20alpha\x20=\x20color.a\x20*\x20sampleOpacity(sample.value)\x20*\x20slice.data.z;\x0a\x20\x20\x20\x20//\x20彩色数据覆盖白色透明底板,二者在同一\x20fragment\x20中合成以避免重合面的深度冲突。\x0a\x20\x20\x20\x20//\x20Colored\x20data\x20is\x20composited\x20over\x20the\x20translucent\x20white\x20plate\x20in\x20one\x20fragment\x20to\x20avoid\x20coplanar\x20depth\x20conflicts.\x0a\x20\x20\x20\x20let\x20outputAlpha\x20=\x20alpha\x20+\x20plateAlpha\x20*\x20(1.0\x20-\x20alpha);\x0a\x20\x20\x20\x20let\x20outputColor\x20=\x20color.rgb\x20*\x20alpha\x20+\x20platePremultiplied\x20*\x20(1.0\x20-\x20alpha);\x0a\x20\x20\x20\x20return\x20vec4f(outputColor,\x20outputAlpha);\x0a}\x0a';const validateMetadata=_0x1355ef=>{const _0xc03fcf=_0x40c362;if([_0x1355ef[_0xc03fcf(0x40d)][_0xc03fcf(0x269)],_0x1355ef[_0xc03fcf(0x368)][_0xc03fcf(0x269)],_0x1355ef[_0xc03fcf(0x2e5)]['count'],_0x1355ef[_0xc03fcf(0x1d5)],_0x1355ef[_0xc03fcf(0x153)],_0x1355ef[_0xc03fcf(0x3a0)]][_0xc03fcf(0x34e)](_0x431e98=>!Number[_0xc03fcf(0x135)](_0x431e98)||_0x431e98<=0x0))throw Error('WebGPU\x20volume\x20dimensions\x20must\x20be\x20positive\x20integers.\x20WebGPU\x20体积尺寸必须是正整数。');if(_0x1355ef[_0xc03fcf(0x1cc)]!==0x1)throw Error(_0xc03fcf(0x3d5));},getBrickCount=_0x198eb5=>[Math[_0x40c362(0x20a)](_0x198eb5[_0x40c362(0x40d)][_0x40c362(0x269)]/_0x198eb5[_0x40c362(0x1d5)]),Math[_0x40c362(0x20a)](_0x198eb5[_0x40c362(0x368)][_0x40c362(0x269)]/_0x198eb5[_0x40c362(0x153)]),Math[_0x40c362(0x20a)](_0x198eb5[_0x40c362(0x2e5)][_0x40c362(0x269)]/_0x198eb5[_0x40c362(0x3a0)])],getLogicalBrickCoordinate=(_0x2b8cb1,_0x1a1282)=>{const _0x20ad24=_0x40c362;let _0x4c81e2=_0x1a1282[0x0]*_0x1a1282[0x1],_0xda2506=Math[_0x20ad24(0x22d)](_0x2b8cb1/_0x4c81e2),_0xb96b95=_0x2b8cb1-_0xda2506*_0x4c81e2,_0x448db6=Math[_0x20ad24(0x22d)](_0xb96b95/_0x1a1282[0x0]);return[_0xb96b95-_0x448db6*_0x1a1282[0x0],_0x448db6,_0xda2506];},analyzeBrickOccupancy=(_0xdaae0c,_0x5a3478,_0x4b99a7)=>{const _0x5eeb73=_0x40c362;let _0x36d760=_0x5a3478[_0x5eeb73(0x1d5)]+0x2,_0x19d872=_0x5a3478[_0x5eeb73(0x153)]+0x2,_0x546d40=getLogicalBrickCoordinate(_0xdaae0c[_0x5eeb73(0x42e)],_0x4b99a7),_0x3ebf61=Math[_0x5eeb73(0x1de)](_0x5a3478['brickWidth'],_0x5a3478[_0x5eeb73(0x40d)][_0x5eeb73(0x269)]-_0x546d40[0x0]*_0x5a3478['brickWidth']),_0x77b5db=Math['min'](_0x5a3478[_0x5eeb73(0x153)],_0x5a3478[_0x5eeb73(0x368)][_0x5eeb73(0x269)]-_0x546d40[0x1]*_0x5a3478[_0x5eeb73(0x153)]),_0x179c6c=Math[_0x5eeb73(0x1de)](_0x5a3478[_0x5eeb73(0x3a0)],_0x5a3478[_0x5eeb73(0x2e5)][_0x5eeb73(0x269)]-_0x546d40[0x2]*_0x5a3478[_0x5eeb73(0x3a0)]);for(let _0x41b5b3=0x0;_0x41b5b3<_0x179c6c;_0x41b5b3+=0x1)for(let _0x1420eb=0x0;_0x1420eb<_0x77b5db;_0x1420eb+=0x1){let _0x5ece2e=((_0x41b5b3+0x1)*_0x19d872+_0x1420eb+0x1)*_0x36d760+0x1;for(let _0x9229c9=0x0;_0x9229c9<_0x3ebf61;_0x9229c9+=0x1){let _0x560561=_0xdaae0c[_0x5eeb73(0x3bf)][_0x5ece2e+_0x9229c9];if(_0x560561===_0x560561&&(_0x5a3478[_0x5eeb73(0x1b5)]===void 0x0||_0x560561!==_0x5a3478[_0x5eeb73(0x1b5)]))return{'occupied':!0x0,'coreSampleCount':_0x3ebf61*_0x77b5db*_0x179c6c};}}return{'occupied':!0x1,'coreSampleCount':_0x3ebf61*_0x77b5db*_0x179c6c};},findAtlasLayout=(_0x3ae20b,_0xdd3165,_0xa46d07,_0xb033b5,_0x216702)=>{const _0x2e993a=_0x40c362;if(_0x3ae20b<=0x0)return null;let _0x2a4273=Math[_0x2e993a(0x22d)](_0x216702/_0xdd3165),_0x53b361=Math[_0x2e993a(0x22d)](_0x216702/_0xa46d07),_0x4817e4=Math[_0x2e993a(0x22d)](_0x216702/_0xb033b5),_0x186105=null;for(let _0x3c36d9=0x1;_0x3c36d9<=_0x2a4273;_0x3c36d9+=0x1)for(let _0xbbe75d=0x1;_0xbbe75d<=_0x53b361;_0xbbe75d+=0x1){let _0x552103=Math[_0x2e993a(0x1de)](_0x4817e4,Math[_0x2e993a(0x22d)](_0x3ae20b/(_0x3c36d9*_0xbbe75d))),_0x58c924=_0x3c36d9*_0xbbe75d*_0x552103;_0x552103<=0x0||_0x58c924<=(_0x186105?.[_0x2e993a(0x3f5)]??0x0)||(_0x186105={'slotCountX':_0x3c36d9,'slotCountY':_0xbbe75d,'slotCountZ':_0x552103,'slotCount':_0x58c924,'textureCount':0x1,'capacity':_0x58c924});}return _0x186105;},getSlotCoordinate=(_0x15407b,_0x38bd44)=>{const _0x372226=_0x40c362;let _0x631f8d=_0x38bd44[_0x372226(0x238)]*_0x38bd44[_0x372226(0x3d4)],_0xcfb7cd=Math[_0x372226(0x22d)](_0x15407b/_0x631f8d),_0x43cb30=_0x15407b-_0xcfb7cd*_0x631f8d,_0x41f7de=Math['floor'](_0x43cb30/_0x38bd44[_0x372226(0x238)]);return[_0x43cb30-_0x41f7de*_0x38bd44[_0x372226(0x238)],_0x41f7de,_0xcfb7cd];},findLeastRecentlyUsed=(_0x2ba6ff,_0xb3250b)=>{const _0x7f5be4=_0x40c362;let _0x13e01d=null;for(let _0x10711d of _0x2ba6ff)_0x10711d[_0x7f5be4(0x138)]!==_0xb3250b&&(!_0x13e01d||_0x10711d[_0x7f5be4(0x138)]<_0x13e01d[_0x7f5be4(0x138)])&&(_0x13e01d=_0x10711d);return _0x13e01d;},createPaddedTextureData=(_0x1948a6,_0x21b536,_0x5f3aa3,_0x51b33a)=>{const _0x170d2a=_0x40c362;let _0x1308c7=_0x21b536*Float32Array[_0x170d2a(0x173)],_0xcd586a=Math[_0x170d2a(0x20a)](_0x1308c7/0x100)*0x100;if(_0x1308c7===_0xcd586a)return{'values':_0x1948a6,'bytesPerRow':_0xcd586a};let _0x445261=_0xcd586a/Float32Array['BYTES_PER_ELEMENT'],_0x159b56=new Float32Array(_0x445261*_0x5f3aa3*_0x51b33a);for(let _0x4b4520=0x0;_0x4b4520<_0x51b33a;_0x4b4520+=0x1)for(let _0x43a903=0x0;_0x43a903<_0x5f3aa3;_0x43a903+=0x1){let _0x10d488=(_0x4b4520*_0x5f3aa3+_0x43a903)*_0x21b536,_0x5c7a2f=(_0x4b4520*_0x5f3aa3+_0x43a903)*_0x445261;_0x159b56['set'](_0x1948a6[_0x170d2a(0x263)](_0x10d488,_0x10d488+_0x21b536),_0x5c7a2f);}return{'values':_0x159b56,'bytesPerRow':_0xcd586a};};var WebgpuBrickAtlas=class{[_0x40c362(0x1d9)];[_0x40c362(0x3d0)];[_0x40c362(0x18f)];['metadata']=null;[_0x40c362(0x3cf)]=null;[_0x40c362(0x334)]=[];[_0x40c362(0x405)]=[];[_0x40c362(0x393)]=null;[_0x40c362(0x239)]=new Uint32Array();[_0x40c362(0x416)]=new Map();[_0x40c362(0x148)]=new Map();[_0x40c362(0x195)]=0x0;constructor(_0x5941fa,_0x375e74=0x20000000,_0x185425=_0x375e74){const _0x4feb46=_0x40c362;if(!Number['isFinite'](_0x375e74)||!Number[_0x4feb46(0x298)](_0x185425)||_0x375e74<=0x0||_0x185425<=0x0)throw Error(_0x4feb46(0x3b1));this['device']=_0x5941fa,this[_0x4feb46(0x3d0)]=Math[_0x4feb46(0x1de)](_0x375e74,_0x185425),this['memoryHardLimitBytes']=_0x185425;}get[_0x40c362(0x212)](){const _0x9b5347=_0x40c362;if(!this[_0x9b5347(0x42a)])throw Error(_0x9b5347(0x119));return this[_0x9b5347(0x42a)];}get[_0x40c362(0x399)](){const _0x4320aa=_0x40c362;if(!this['layout'])throw Error('WebGPU\x20volume\x20atlas\x20layout\x20is\x20unavailable.\x20WebGPU\x20体积图集布局不可用。');return this[_0x4320aa(0x3cf)];}get[_0x40c362(0x2b9)](){const _0x44bcf0=_0x40c362;return this[_0x44bcf0(0x416)][_0x44bcf0(0x1aa)];}get[_0x40c362(0x1be)](){const _0x25a83c=_0x40c362;if(!this['metadata']||!this[_0x25a83c(0x3cf)])return{'logicalBrickCount':0x0,'atlasCapacity':0x0,'gpuBytes':0x0,'memoryLimitBytes':this[_0x25a83c(0x18f)],'budgetLimited':!0x1,'skippedSamples':0x0,'skippedCells':0x0};let _0xda14f=getBrickCount(this[_0x25a83c(0x42a)]),_0x3e689a=_0xda14f[0x0]*_0xda14f[0x1]*_0xda14f[0x2],_0x21aecc=this[_0x25a83c(0x42a)]['brickWidth']+0x2,_0x7beceb=this[_0x25a83c(0x42a)][_0x25a83c(0x153)]+0x2,_0x3d730c=this[_0x25a83c(0x42a)][_0x25a83c(0x3a0)]+0x2,_0x1c9308=_0x21aecc*_0x7beceb*_0x3d730c*this[_0x25a83c(0x3cf)][_0x25a83c(0x414)]*Float32Array[_0x25a83c(0x173)],_0x4fd43f=_0x3e689a*0x4*Uint32Array['BYTES_PER_ELEMENT'],_0xd52df=0x0,_0x70ca1e=0x0;for(let _0x76188a of this[_0x25a83c(0x416)][_0x25a83c(0x3bf)]())_0x76188a['occupied']||(_0x70ca1e+=0x1,_0xd52df+=_0x76188a['skippedSampleCount']);return{'logicalBrickCount':_0x3e689a,'atlasCapacity':this[_0x25a83c(0x3cf)]['capacity'],'gpuBytes':_0x1c9308+_0x4fd43f,'memoryLimitBytes':this[_0x25a83c(0x18f)],'budgetLimited':this[_0x25a83c(0x3cf)][_0x25a83c(0x414)]<_0x3e689a,'skippedSamples':_0xd52df,'skippedCells':_0x70ca1e};}[_0x40c362(0x2dd)](_0x23e658){const _0x552699=_0x40c362;validateMetadata(_0x23e658);let _0x20f601=_0x23e658[_0x552699(0x1d5)]+0x2,_0x41f5f3=_0x23e658[_0x552699(0x153)]+0x2,_0xbf8eda=_0x23e658[_0x552699(0x3a0)]+0x2,_0x4405b6=getBrickCount(_0x23e658),_0x15707d=_0x4405b6[0x0]*_0x4405b6[0x1]*_0x4405b6[0x2],_0x105866=_0x15707d*0x4*Uint32Array['BYTES_PER_ELEMENT'],_0xd964cc=Math['min'](this[_0x552699(0x3d0)],this[_0x552699(0x18f)])-_0x105866;if(_0xd964cc<=0x0)throw Error('WebGPU\x20volume\x20page\x20table\x20exceeds\x20the\x20configured\x20memory\x20limit.\x20WebGPU\x20体积页表超过显存限制。');let _0x41725f=_0x20f601*_0x41f5f3*_0xbf8eda*Float32Array[_0x552699(0x173)],_0xa438cf=Math[_0x552699(0x1de)](_0x15707d,Math[_0x552699(0x22d)](_0xd964cc/_0x41725f)),_0x45aeba=Math[_0x552699(0x370)](0x1,Math[_0x552699(0x22d)](0x4000000/_0x41725f)),_0x61185c=Math[_0x552699(0x1de)](0x8,Math[_0x552699(0x370)](0x1,Math[_0x552699(0x20a)](_0xa438cf/_0x45aeba))),_0x141270=findAtlasLayout(Math[_0x552699(0x370)](0x1,Math[_0x552699(0x22d)](_0xa438cf/_0x61185c)),_0x20f601,_0x41f5f3,_0xbf8eda,this[_0x552699(0x1d9)][_0x552699(0x157)][_0x552699(0x226)]);if(!_0x141270)throw Error(_0x552699(0x37f));let _0x2ff25c={..._0x141270,'textureCount':_0x61185c,'capacity':_0x141270[_0x552699(0x3f5)]*_0x61185c},_0x2165ec=_0x20f601*_0x2ff25c[_0x552699(0x238)],_0x570043=_0x41f5f3*_0x2ff25c[_0x552699(0x3d4)],_0x55289e=_0xbf8eda*_0x2ff25c[_0x552699(0x141)],_0x40f91c=Array['from']({'length':_0x61185c},(_0x248e52,_0xc5db3d)=>this[_0x552699(0x1d9)][_0x552699(0x2db)]({'label':'volume\x20brick\x20atlas\x20'+_0xc5db3d,'size':[_0x2165ec,_0x570043,_0x55289e],'dimension':'3d','format':_0x552699(0x27c),'usage':GPUTextureUsage['TEXTURE_BINDING']|GPUTextureUsage[_0x552699(0x327)]|GPUTextureUsage[_0x552699(0x2cd)]})),_0x4bed88=this[_0x552699(0x1d9)][_0x552699(0x3c9)]({'label':'volume\x20brick\x20page\x20table','size':Math[_0x552699(0x370)](0x10,_0x105866),'usage':GPUBufferUsage[_0x552699(0x2d2)]|GPUBufferUsage['COPY_DST']});this[_0x552699(0x276)](),this[_0x552699(0x42a)]={..._0x23e658},this[_0x552699(0x3cf)]=_0x2ff25c,this[_0x552699(0x334)]=_0x40f91c,this[_0x552699(0x405)]=_0x40f91c[_0x552699(0x358)](_0x598463=>_0x598463[_0x552699(0x1c1)]({'dimension':'3d'})),this[_0x552699(0x393)]=_0x4bed88,this[_0x552699(0x239)]=new Uint32Array(_0x15707d*0x4),this[_0x552699(0x1d9)][_0x552699(0x367)][_0x552699(0x192)](_0x4bed88,0x0,this[_0x552699(0x239)]);for(let _0x4caa27 of _0x40f91c)this[_0x552699(0x29b)](_0x4caa27,_0x2165ec,_0x570043,_0x55289e);this[_0x552699(0x195)]+=0x1;}[_0x40c362(0x15b)](_0x156cc5,_0x54cbfb){const _0x20a2bc=_0x40c362;let _0x100f91=this['volumeMetadata'],_0x5a7db1=this[_0x20a2bc(0x399)],_0x174b89=getBrickCount(_0x100f91),_0x443baf=_0x174b89[0x0]*_0x174b89[0x1]*_0x174b89[0x2];if(!Number[_0x20a2bc(0x135)](_0x156cc5[_0x20a2bc(0x42e)])||_0x156cc5[_0x20a2bc(0x42e)]<0x0||_0x156cc5[_0x20a2bc(0x42e)]>=_0x443baf)throw Error('Invalid\x20logical\x20volume\x20brick\x20index:\x20'+_0x156cc5['logicalIndex']+'.\x20体积逻辑砖块索引无效。');let _0x510002=_0x100f91[_0x20a2bc(0x1d5)]+0x2,_0x648f7f=_0x100f91[_0x20a2bc(0x153)]+0x2,_0x371634=_0x100f91[_0x20a2bc(0x3a0)]+0x2,_0x29a77c=_0x510002*_0x648f7f*_0x371634;if(_0x156cc5[_0x20a2bc(0x3bf)][_0x20a2bc(0x3e0)]!==_0x29a77c)throw Error(_0x20a2bc(0x2bc)+_0x156cc5['logicalIndex']+_0x20a2bc(0x122)+_0x29a77c+'\x20values\x20but\x20received\x20'+_0x156cc5[_0x20a2bc(0x3bf)][_0x20a2bc(0x3e0)]+_0x20a2bc(0x3d8));let _0x18f02d=this['residentByLogicalIndex']['get'](_0x156cc5[_0x20a2bc(0x42e)])??this[_0x20a2bc(0x136)](_0x156cc5[_0x20a2bc(0x42e)],_0x54cbfb),_0x1fc3d0=analyzeBrickOccupancy(_0x156cc5,_0x100f91,_0x174b89),_0x1918c5=Math[_0x20a2bc(0x22d)](_0x18f02d[_0x20a2bc(0x21b)]/_0x5a7db1[_0x20a2bc(0x3f5)]),_0x538952=getSlotCoordinate(_0x18f02d['slotIndex']%_0x5a7db1['slotCount'],_0x5a7db1),_0x4861e6=createPaddedTextureData(new Float32Array(_0x156cc5[_0x20a2bc(0x3bf)]),_0x510002,_0x648f7f,_0x371634);return _0x18f02d['lastUsedFrame']=_0x54cbfb,_0x18f02d[_0x20a2bc(0x195)]=this[_0x20a2bc(0x195)],_0x18f02d[_0x20a2bc(0x293)]=_0x1fc3d0['occupied'],_0x18f02d['skippedSampleCount']=_0x1fc3d0[_0x20a2bc(0x407)],this[_0x20a2bc(0x237)](_0x18f02d),{'values':_0x4861e6['values'],'bytesPerRow':_0x4861e6[_0x20a2bc(0x22f)],'rowsPerImage':_0x648f7f,'origin':{'x':_0x538952[0x0]*_0x510002,'y':_0x538952[0x1]*_0x648f7f,'z':_0x538952[0x2]*_0x371634},'extent':[_0x510002,_0x648f7f,_0x371634],'atlasIndex':_0x1918c5};}[_0x40c362(0x1a2)](_0x4151d2,_0x3e78b4,_0xe052bb,_0x439cbc){const _0x54348c=_0x40c362;_0x4151d2[_0x54348c(0x1df)]({'buffer':_0x3e78b4,'offset':_0xe052bb,'bytesPerRow':_0x439cbc['bytesPerRow'],'rowsPerImage':_0x439cbc[_0x54348c(0x2ff)]},{'texture':this[_0x54348c(0x35c)](_0x439cbc[_0x54348c(0x14e)]),'origin':_0x439cbc[_0x54348c(0x11f)]},_0x439cbc[_0x54348c(0x1af)]);}['touch'](_0x249bb6,_0x5c3cdc){const _0xf591e0=_0x40c362;for(let _0x515899 of _0x249bb6){let _0x3816b9=this[_0xf591e0(0x416)]['get'](_0x515899);_0x3816b9&&(_0x3816b9[_0xf591e0(0x138)]=_0x5c3cdc);}}[_0x40c362(0x315)](_0x5c28af,_0x593d63){const _0xde2da9=_0x40c362;if(this[_0xde2da9(0x405)][_0xde2da9(0x3e0)]===0x0||!this[_0xde2da9(0x393)])throw Error(_0xde2da9(0x202));return this[_0xde2da9(0x1d9)][_0xde2da9(0x315)]({'label':'volume\x20atlas\x20bind\x20group','layout':_0x5c28af,'entries':[...Array[_0xde2da9(0x31f)]({'length':0x8},(_0x3b34b4,_0x1ca708)=>({'binding':_0x1ca708,'resource':this[_0xde2da9(0x405)][_0x1ca708]??this[_0xde2da9(0x405)][0x0]})),{'binding':0x8,'resource':{'buffer':this[_0xde2da9(0x393)]}},{'binding':0x9,'resource':{'buffer':_0x593d63}}]});}[_0x40c362(0x14d)](){const _0x367a12=_0x40c362;this[_0x367a12(0x276)](),this[_0x367a12(0x42a)]=null,this[_0x367a12(0x3cf)]=null,this[_0x367a12(0x239)]=new Uint32Array();}[_0x40c362(0x136)](_0x156137,_0x35c198){const _0x11db34=_0x40c362;let _0x24e218=this[_0x11db34(0x399)],_0x41b88d=this[_0x11db34(0x148)][_0x11db34(0x1aa)];if(_0x41b88d>=_0x24e218['capacity']){let _0x255842=findLeastRecentlyUsed(this['residentBySlotIndex'][_0x11db34(0x3bf)](),_0x35c198);if(!_0x255842)throw Error(_0x11db34(0x169));_0x41b88d=_0x255842['slotIndex'],this[_0x11db34(0x362)](_0x255842['logicalIndex']),this[_0x11db34(0x416)][_0x11db34(0x422)](_0x255842[_0x11db34(0x42e)]),this['residentBySlotIndex'][_0x11db34(0x422)](_0x41b88d);}let _0xbd9223={'logicalIndex':_0x156137,'slotIndex':_0x41b88d,'lastUsedFrame':_0x35c198,'generation':this[_0x11db34(0x195)],'occupied':!0x1,'skippedSampleCount':0x0};return this[_0x11db34(0x416)][_0x11db34(0x3dc)](_0x156137,_0xbd9223),this['residentBySlotIndex'][_0x11db34(0x3dc)](_0x41b88d,_0xbd9223),_0xbd9223;}[_0x40c362(0x237)](_0x51fbb8){const _0x3f4119=_0x40c362;let _0x1cb1d4=_0x51fbb8[_0x3f4119(0x42e)]*0x4;this['pageTableValues'][_0x1cb1d4]=_0x51fbb8[_0x3f4119(0x21b)]%this[_0x3f4119(0x399)][_0x3f4119(0x3f5)]+0x1,this[_0x3f4119(0x239)][_0x1cb1d4+0x1]=_0x51fbb8[_0x3f4119(0x195)],this[_0x3f4119(0x239)][_0x1cb1d4+0x2]=+!!_0x51fbb8[_0x3f4119(0x293)],this[_0x3f4119(0x239)][_0x1cb1d4+0x3]=Math[_0x3f4119(0x22d)](_0x51fbb8[_0x3f4119(0x21b)]/this[_0x3f4119(0x399)]['slotCount']),this['device'][_0x3f4119(0x367)][_0x3f4119(0x192)](this[_0x3f4119(0x2a6)](),_0x1cb1d4*Uint32Array[_0x3f4119(0x173)],this[_0x3f4119(0x239)],_0x1cb1d4,0x4);}['clearPageEntry'](_0x38d957){const _0x3e5da0=_0x40c362;let _0x509de8=_0x38d957*0x4;this[_0x3e5da0(0x239)][_0x3e5da0(0x208)](0x0,_0x509de8,_0x509de8+0x4),this[_0x3e5da0(0x1d9)][_0x3e5da0(0x367)]['writeBuffer'](this['getPageTableBuffer'](),_0x509de8*Uint32Array[_0x3e5da0(0x173)],this[_0x3e5da0(0x239)],_0x509de8,0x4);}['getAtlasTexture'](_0x30ed39){const _0x57715b=_0x40c362;let _0x3dae45=this[_0x57715b(0x334)][_0x30ed39];if(!_0x3dae45)throw Error(_0x57715b(0x125));return _0x3dae45;}[_0x40c362(0x29b)](_0x3597dd,_0x57447e,_0x43136f,_0x18339c){const _0x251012=_0x40c362;let _0x48ae8a=this[_0x251012(0x1d9)][_0x251012(0x1f0)]({'label':_0x251012(0x228),'code':_0x251012(0x21c)}),_0x18daf1=this[_0x251012(0x1d9)][_0x251012(0x34c)]({'label':_0x251012(0x128),'layout':_0x251012(0x344),'compute':{'module':_0x48ae8a,'entryPoint':'main'}}),_0x3846ec=this['device'][_0x251012(0x315)]({'label':_0x251012(0x236),'layout':_0x18daf1['getBindGroupLayout'](0x0),'entries':[{'binding':0x0,'resource':_0x3597dd[_0x251012(0x1c1)]({'dimension':'3d'})}]}),_0x2b4960=this['device'][_0x251012(0x38f)]({'label':_0x251012(0x1f4)}),_0x3cd95f=_0x2b4960[_0x251012(0x350)]({'label':_0x251012(0x290)});_0x3cd95f[_0x251012(0x1a9)](_0x18daf1),_0x3cd95f['setBindGroup'](0x0,_0x3846ec),_0x3cd95f[_0x251012(0x3d2)](Math[_0x251012(0x20a)](_0x57447e/0x4),Math['ceil'](_0x43136f/0x4),Math['ceil'](_0x18339c/0x4)),_0x3cd95f[_0x251012(0x1fa)](),this[_0x251012(0x1d9)][_0x251012(0x367)][_0x251012(0x120)]([_0x2b4960[_0x251012(0x25b)]()]);}['getPageTableBuffer'](){const _0x2c88c8=_0x40c362;if(!this[_0x2c88c8(0x393)])throw Error('WebGPU\x20volume\x20page\x20table\x20is\x20unavailable.\x20WebGPU\x20体积页表不可用。');return this['pageTableBuffer'];}[_0x40c362(0x276)](){const _0x538093=_0x40c362;for(let _0xd871b of this[_0x538093(0x334)])_0xd871b[_0x538093(0x14d)]();this[_0x538093(0x393)]?.[_0x538093(0x14d)](),this[_0x538093(0x334)]=[],this[_0x538093(0x405)]=[],this[_0x538093(0x393)]=null,this['residentByLogicalIndex'][_0x538093(0x16a)](),this['residentBySlotIndex']['clear']();}},WebgpuSceneAttachments=class{['device'];['depthTexture']=null;[_0x40c362(0x114)]=null;['width']=0x0;['height']=0x0;constructor(_0x217f86){this['device']=_0x217f86;}get['sceneDepthView'](){const _0x25d38c=_0x40c362;if(!this[_0x25d38c(0x114)])throw Error(_0x25d38c(0x2c8));return this[_0x25d38c(0x114)];}[_0x40c362(0x3cc)](_0x30d265,_0x5e7353){const _0xf7b4bd=_0x40c362;if(this[_0xf7b4bd(0x3a7)]===_0x30d265&&this['height']===_0x5e7353)return;let _0xf30936=this['device'][_0xf7b4bd(0x2db)]({'label':_0xf7b4bd(0x1a7),'size':[_0x30d265,_0x5e7353],'format':_0xf7b4bd(0x224),'usage':GPUTextureUsage['RENDER_ATTACHMENT']|GPUTextureUsage[_0xf7b4bd(0x262)]}),_0x442a2f=this[_0xf7b4bd(0x19b)];this[_0xf7b4bd(0x19b)]=_0xf30936,this[_0xf7b4bd(0x114)]=_0xf30936[_0xf7b4bd(0x1c1)](),this['width']=_0x30d265,this[_0xf7b4bd(0x2b1)]=_0x5e7353,_0x442a2f?.[_0xf7b4bd(0x14d)]();}[_0x40c362(0x14d)](){const _0x278fcc=_0x40c362;this['depthTexture']?.[_0x278fcc(0x14d)](),this[_0x278fcc(0x19b)]=null,this[_0x278fcc(0x114)]=null,this[_0x278fcc(0x3a7)]=0x0,this[_0x278fcc(0x2b1)]=0x0;}},WebgpuSceneMeshResources=class{[_0x40c362(0x1d9)];[_0x40c362(0x318)]=[];constructor(_0x39a37f){const _0x2f82f1=_0x40c362;this[_0x2f82f1(0x1d9)]=_0x39a37f;}get[_0x40c362(0x269)](){const _0x28c716=_0x40c362;return this[_0x28c716(0x318)][_0x28c716(0x3e0)];}[_0x40c362(0x158)](_0x2c7053){const _0x482ff6=_0x40c362;let _0x299e65=[];try{for(let _0x428892 of _0x2c7053)_0x299e65[_0x482ff6(0x31e)](this['createResource'](_0x428892));}catch(_0x2377f9){for(let _0x2dda9d of _0x299e65)_0x2dda9d[_0x482ff6(0x3f1)][_0x482ff6(0x14d)]();throw _0x2377f9;}this[_0x482ff6(0x276)](),this['resources']=_0x299e65;}[_0x40c362(0x3f7)](_0x312779,_0x513bbe,_0x22ff04){const _0x5621f6=_0x40c362;for(let _0x3562e4 of this[_0x5621f6(0x318)])_0x3562e4['topology']!==_0x513bbe||_0x3562e4[_0x5621f6(0x373)]!==_0x22ff04||(_0x312779[_0x5621f6(0x19a)](0x0,_0x3562e4[_0x5621f6(0x3f1)]),_0x312779[_0x5621f6(0x3f7)](_0x3562e4[_0x5621f6(0x1b7)]));}[_0x40c362(0x14d)](){this['destroyResources']();}[_0x40c362(0x3ed)](_0x3f11b1){const _0xb76bf7=_0x40c362;if(_0x3f11b1['vertices'][_0xb76bf7(0x3e0)]===0x0||_0x3f11b1[_0xb76bf7(0x313)][_0xb76bf7(0x3e0)]%0x7!=0x0)throw Error(_0xb76bf7(0x335)+_0x3f11b1['id']+'\x20must\x20contain\x20position\x20and\x20RGBA\x20values\x20for\x20every\x20vertex.\x20场景网格顶点必须包含位置和\x20RGBA。');let _0x2ac14d=new Float32Array(_0x3f11b1[_0xb76bf7(0x313)]),_0x191343=this[_0xb76bf7(0x1d9)]['createBuffer']({'label':'volume\x20scene\x20mesh\x20'+_0x3f11b1['id'],'size':_0x2ac14d['byteLength'],'usage':GPUBufferUsage[_0xb76bf7(0x179)]|GPUBufferUsage[_0xb76bf7(0x327)]});return this[_0xb76bf7(0x1d9)][_0xb76bf7(0x367)][_0xb76bf7(0x192)](_0x191343,0x0,_0x2ac14d),{'id':_0x3f11b1['id'],'topology':_0x3f11b1[_0xb76bf7(0x395)],'depthMode':_0x3f11b1['depthMode'],'buffer':_0x191343,'vertexCount':_0x3f11b1[_0xb76bf7(0x313)][_0xb76bf7(0x3e0)]/0x7};}[_0x40c362(0x276)](){const _0x3678b0=_0x40c362;for(let _0x544907 of this[_0x3678b0(0x318)])_0x544907[_0x3678b0(0x3f1)][_0x3678b0(0x14d)]();this[_0x3678b0(0x318)]=[];}},WebgpuSliceResources=class{[_0x40c362(0x1d9)];[_0x40c362(0x3cf)];['resources']=[];[_0x40c362(0x16f)]=0x0;[_0x40c362(0x30b)]=0x0;constructor(_0xa00eaf,_0x45ca0a){const _0x579597=_0x40c362;this[_0x579597(0x1d9)]=_0xa00eaf,this[_0x579597(0x3cf)]=_0x45ca0a;}get[_0x40c362(0x269)](){const _0x567889=_0x40c362;return this[_0x567889(0x318)][_0x567889(0x3e0)];}get['statistics'](){return{'uniformUpdateCount':this['uniformUpdateCount'],'resourceRebuildCount':this['resourceRebuildCount']};}[_0x40c362(0x158)](_0x13ffc7){const _0x4e9f6e=_0x40c362;let _0x1c5483=new Map(this[_0x4e9f6e(0x318)][_0x4e9f6e(0x358)](_0x13a916=>[_0x13a916['id'],_0x13a916])),_0x40fd17=[],_0x424049=new Set();try{for(let _0x1acd34 of _0x13ffc7){if(!_0x1acd34['visible'])continue;if(_0x424049[_0x4e9f6e(0x2c4)](_0x1acd34['id']))throw Error(_0x4e9f6e(0x352)+_0x1acd34['id']+'\x20is\x20duplicated.\x20体积切面\x20ID\x20重复。');_0x424049['add'](_0x1acd34['id']);let _0x556963=this[_0x4e9f6e(0x1da)](_0x1acd34),_0x43307d=_0x1c5483[_0x4e9f6e(0x1e4)](_0x1acd34['id']);if(!_0x43307d){_0x40fd17[_0x4e9f6e(0x31e)](this[_0x4e9f6e(0x3ed)](_0x1acd34,_0x556963));continue;}_0x1c5483['delete'](_0x1acd34['id']),_0x43307d[_0x4e9f6e(0x373)]=_0x1acd34[_0x4e9f6e(0x373)],this[_0x4e9f6e(0x387)](_0x43307d['values'],_0x556963)||(this[_0x4e9f6e(0x1d9)][_0x4e9f6e(0x367)][_0x4e9f6e(0x192)](_0x43307d['buffer'],0x0,_0x556963),_0x43307d[_0x4e9f6e(0x3bf)]=_0x556963,this[_0x4e9f6e(0x16f)]+=0x1),_0x40fd17[_0x4e9f6e(0x31e)](_0x43307d);}}catch(_0x30b4cc){for(let _0x56b2f8 of _0x40fd17)this[_0x4e9f6e(0x318)][_0x4e9f6e(0x165)](_0x56b2f8)||_0x56b2f8[_0x4e9f6e(0x3f1)][_0x4e9f6e(0x14d)]();throw _0x30b4cc;}for(let _0x399c35 of _0x1c5483['values']())_0x399c35[_0x4e9f6e(0x3f1)][_0x4e9f6e(0x14d)]();this[_0x4e9f6e(0x318)]=_0x40fd17;}[_0x40c362(0x3f7)](_0x14fd05,_0xae9ee5,_0x5d47e1){const _0xaf58ba=_0x40c362;_0x14fd05[_0xaf58ba(0x1a9)](_0xae9ee5);for(let _0x4257c3 of this[_0xaf58ba(0x318)])_0x4257c3[_0xaf58ba(0x373)]===_0x5d47e1&&(_0x14fd05['setBindGroup'](0x3,_0x4257c3[_0xaf58ba(0x295)]),_0x14fd05[_0xaf58ba(0x3f7)](0x1800));}['destroy'](){this['destroyResources']();}['createValues'](_0x2518b8){const _0x3e0c83=_0x40c362;if(!Number[_0x3e0c83(0x298)](_0x2518b8[_0x3e0c83(0x36f)])||_0x2518b8[_0x3e0c83(0x36f)]<0x0||_0x2518b8[_0x3e0c83(0x36f)]>0x1)throw Error(_0x3e0c83(0x2a7)+_0x2518b8['id']+_0x3e0c83(0x265));let _0x9df2ef=_0x2518b8[_0x3e0c83(0x30d)]==='x'?0x0:_0x2518b8[_0x3e0c83(0x30d)]==='y'?0x1:0x2,_0x5453b9=_0x2518b8[_0x3e0c83(0x1dc)]??[0x0,0x0,0x0,0x0];if(_0x5453b9[_0x3e0c83(0x34e)](_0x4b62d4=>!Number[_0x3e0c83(0x298)](_0x4b62d4)||_0x4b62d4<0x0||_0x4b62d4>0x1))throw Error('Volume\x20slice\x20'+_0x2518b8['id']+_0x3e0c83(0x1b3));return new Float32Array([_0x9df2ef,_0x2518b8[_0x3e0c83(0x36f)],_0x2518b8[_0x3e0c83(0x347)]??0x1,0x0,..._0x5453b9]);}[_0x40c362(0x3ed)](_0x5a826b,_0x256036){const _0x37f5e6=_0x40c362;let _0x50054c=this[_0x37f5e6(0x1d9)]['createBuffer']({'label':'volume\x20slice\x20'+_0x5a826b['id'],'size':0x20,'usage':GPUBufferUsage[_0x37f5e6(0x246)]|GPUBufferUsage['COPY_DST']});this['device']['queue'][_0x37f5e6(0x192)](_0x50054c,0x0,_0x256036);let _0x38dcce=this[_0x37f5e6(0x1d9)]['createBindGroup']({'layout':this[_0x37f5e6(0x3cf)],'entries':[{'binding':0x0,'resource':{'buffer':_0x50054c}}]});return this['resourceRebuildCount']+=0x1,{'id':_0x5a826b['id'],'depthMode':_0x5a826b[_0x37f5e6(0x373)],'buffer':_0x50054c,'bindGroup':_0x38dcce,'values':_0x256036};}[_0x40c362(0x387)](_0x134f05,_0x725040){const _0x2b1117=_0x40c362;for(let _0x195d2d=0x0;_0x195d2d<_0x134f05[_0x2b1117(0x3e0)];_0x195d2d+=0x1)if(_0x134f05[_0x195d2d]!==_0x725040[_0x195d2d])return!0x1;return!0x0;}[_0x40c362(0x276)](){const _0x4d49e5=_0x40c362;for(let _0x7dfc08 of this[_0x4d49e5(0x318)])_0x7dfc08['buffer'][_0x4d49e5(0x14d)]();this[_0x4d49e5(0x318)]=[];}};const createStorageBuffer=(_0x51a6f1,_0xa45855,_0x5ea114)=>{const _0xe5d076=_0x40c362;let _0x5c05de=_0x51a6f1['createBuffer']({'label':_0x5ea114,'size':Math[_0xe5d076(0x370)](0x4,_0xa45855[_0xe5d076(0x40a)]),'usage':GPUBufferUsage[_0xe5d076(0x2d2)]|GPUBufferUsage['COPY_DST']});return _0xa45855[_0xe5d076(0x40a)]>0x0&&_0x51a6f1['queue'][_0xe5d076(0x192)](_0x5c05de,0x0,_0xa45855),_0x5c05de;},validateStops$1=(_0x415403,_0x351b3c)=>{const _0x2a0949=_0x40c362;if(_0x415403[_0x2a0949(0x3e0)]===0x0||_0x351b3c[_0x2a0949(0x3e0)]===0x0)throw Error(_0x2a0949(0x3e3));for(let _0x1c9adf=0x1;_0x1c9adf<_0x415403[_0x2a0949(0x3e0)];_0x1c9adf+=0x1)if(_0x415403[_0x1c9adf][_0x2a0949(0x13f)]<_0x415403[_0x1c9adf-0x1][_0x2a0949(0x13f)])throw Error(_0x2a0949(0x1eb));for(let _0x294706=0x0;_0x294706<_0x351b3c[_0x2a0949(0x3e0)];_0x294706+=0x1){if(_0x351b3c[_0x294706]['opacity']<0x0||_0x351b3c[_0x294706][_0x2a0949(0x347)]>0x1)throw Error(_0x2a0949(0x14f));if(_0x294706>0x0&&_0x351b3c[_0x294706][_0x2a0949(0x13f)]<_0x351b3c[_0x294706-0x1][_0x2a0949(0x13f)])throw Error('Volume\x20opacity\x20stops\x20must\x20be\x20sorted\x20by\x20value.\x20体积透明度色标必须按数值升序排列。');}};var WebgpuTransferResources=class{[_0x40c362(0x1d9)];[_0x40c362(0x3de)]=null;[_0x40c362(0x1c4)]=null;[_0x40c362(0x1f8)]=null;[_0x40c362(0x3c6)]=null;[_0x40c362(0x29d)]=0x0;[_0x40c362(0x110)]=0x0;constructor(_0x1f5af8){this['device']=_0x1f5af8;}get[_0x40c362(0x38a)](){const _0x3d42ae=_0x40c362;return[this[_0x3d42ae(0x29d)],this[_0x3d42ae(0x110)]];}['update'](_0x2d687c,_0x2ac0d3){const _0x2bbce8=_0x40c362;validateStops$1(_0x2d687c,_0x2ac0d3);let _0x14f167=new Float32Array(_0x2d687c['length']),_0x5008bd=new Float32Array(_0x2d687c[_0x2bbce8(0x3e0)]*0x4),_0x9c1ea4=new Float32Array(_0x2ac0d3['length']),_0x1ff2df=new Float32Array(_0x2ac0d3[_0x2bbce8(0x3e0)]);for(let _0x18e44a=0x0;_0x18e44a<_0x2d687c[_0x2bbce8(0x3e0)];_0x18e44a+=0x1)_0x14f167[_0x18e44a]=_0x2d687c[_0x18e44a]['value'],_0x5008bd[_0x2bbce8(0x3dc)](_0x2d687c[_0x18e44a][_0x2bbce8(0x21e)],_0x18e44a*0x4);for(let _0x1333ae=0x0;_0x1333ae<_0x2ac0d3[_0x2bbce8(0x3e0)];_0x1333ae+=0x1)_0x9c1ea4[_0x1333ae]=_0x2ac0d3[_0x1333ae]['value'],_0x1ff2df[_0x1333ae]=_0x2ac0d3[_0x1333ae]['opacity'];let _0x3ab984=[createStorageBuffer(this['device'],_0x14f167,'volume\x20color\x20stop\x20values'),createStorageBuffer(this['device'],_0x5008bd,_0x2bbce8(0x3f8)),createStorageBuffer(this[_0x2bbce8(0x1d9)],_0x9c1ea4,'volume\x20opacity\x20stop\x20values'),createStorageBuffer(this[_0x2bbce8(0x1d9)],_0x1ff2df,'volume\x20opacity\x20stop\x20alphas')];this[_0x2bbce8(0x11a)](),this['colorValuesBuffer']=_0x3ab984[0x0],this[_0x2bbce8(0x1c4)]=_0x3ab984[0x1],this[_0x2bbce8(0x1f8)]=_0x3ab984[0x2],this['opacityBuffer']=_0x3ab984[0x3],this['colorStopCount']=_0x2d687c[_0x2bbce8(0x3e0)],this[_0x2bbce8(0x110)]=_0x2ac0d3[_0x2bbce8(0x3e0)];}[_0x40c362(0x315)](_0x289430){const _0x2b3bb9=_0x40c362;if(!this[_0x2b3bb9(0x3de)]||!this[_0x2b3bb9(0x1c4)]||!this['opacityValuesBuffer']||!this[_0x2b3bb9(0x3c6)])throw Error(_0x2b3bb9(0x115));return this[_0x2b3bb9(0x1d9)][_0x2b3bb9(0x315)]({'label':_0x2b3bb9(0x26a),'layout':_0x289430,'entries':[{'binding':0x0,'resource':{'buffer':this[_0x2b3bb9(0x3de)]}},{'binding':0x1,'resource':{'buffer':this['colorBuffer']}},{'binding':0x2,'resource':{'buffer':this[_0x2b3bb9(0x1f8)]}},{'binding':0x3,'resource':{'buffer':this['opacityBuffer']}}]});}[_0x40c362(0x14d)](){const _0x28750b=_0x40c362;this[_0x28750b(0x11a)](),this[_0x28750b(0x29d)]=0x0,this[_0x28750b(0x110)]=0x0;}[_0x40c362(0x11a)](){const _0x2ffbf4=_0x40c362;this[_0x2ffbf4(0x3de)]?.[_0x2ffbf4(0x14d)](),this[_0x2ffbf4(0x1c4)]?.[_0x2ffbf4(0x14d)](),this[_0x2ffbf4(0x1f8)]?.['destroy'](),this[_0x2ffbf4(0x3c6)]?.[_0x2ffbf4(0x14d)](),this[_0x2ffbf4(0x3de)]=null,this[_0x2ffbf4(0x1c4)]=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=()=>({'color':{'srcFactor':_0x40c362(0x375),'dstFactor':_0x40c362(0x32c),'operation':_0x40c362(0x201)},'alpha':{'srcFactor':_0x40c362(0x375),'dstFactor':'one-minus-src-alpha','operation':'add'}}),validateMatrix=(_0x4d5f51,_0xf2d112)=>{const _0x560db8=_0x40c362;if(_0x4d5f51['length']!==0x10||_0x4d5f51[_0x560db8(0x34e)](_0x1ee9bb=>!Number[_0x560db8(0x298)](_0x1ee9bb)))throw Error(_0xf2d112+_0x560db8(0x3a1)+_0xf2d112+_0x560db8(0x209));},validateNonNegative=(_0x55e659,_0x273c99)=>{const _0x546958=_0x40c362;if(!Number['isFinite'](_0x55e659)||_0x55e659<0x0)throw Error(_0x273c99+_0x546958(0x326)+_0x273c99+_0x546958(0x1ca));return _0x55e659;},validatePositive=(_0x16b213,_0xb06413)=>{const _0x25cd10=_0x40c362;if(!Number[_0x25cd10(0x298)](_0x16b213)||_0x16b213<=0x0)throw Error(_0xb06413+'\x20must\x20be\x20a\x20positive\x20finite\x20value.\x20'+_0xb06413+_0x25cd10(0x2b3));return _0x16b213;},cloneMeshes=_0x38031e=>_0x38031e['map'](_0x4380bb=>({..._0x4380bb,'vertices':new Float32Array(_0x4380bb[_0x40c362(0x313)])})),estimateBrickUploadBytes=_0x57007f=>{const _0x13a50a=_0x40c362;let _0x4257a9=_0x57007f[_0x13a50a(0x1d5)]+_0x57007f[_0x13a50a(0x1cc)]*0x2,_0x1ce960=_0x57007f[_0x13a50a(0x153)]+_0x57007f[_0x13a50a(0x1cc)]*0x2,_0x5dd266=_0x57007f[_0x13a50a(0x3a0)]+_0x57007f['halo']*0x2;return Math[_0x13a50a(0x20a)](_0x4257a9*Float32Array[_0x13a50a(0x173)]/0x100)*0x100*_0x1ce960*_0x5dd266+0x10;};var WebgpuVolumeSceneRenderer=class{[_0x40c362(0x389)];[_0x40c362(0x159)]=_0x40c362(0x3cb);[_0x40c362(0x11b)]=null;[_0x40c362(0x39d)]=null;[_0x40c362(0x1d9)]=null;[_0x40c362(0x27f)]=null;[_0x40c362(0x112)]=null;[_0x40c362(0x314)]=null;[_0x40c362(0x219)]=null;[_0x40c362(0x3ae)]=null;[_0x40c362(0x3b3)]=null;[_0x40c362(0x2dc)]=null;['transferBindGroupLayout']=null;[_0x40c362(0x311)]=null;['geometryBindGroup']=null;[_0x40c362(0x188)]=null;[_0x40c362(0x302)]=null;[_0x40c362(0x3f3)]=null;[_0x40c362(0x1d0)]=null;[_0x40c362(0x191)]=null;['sceneLinePipeline']=null;[_0x40c362(0x3d6)]=null;[_0x40c362(0x118)]=null;[_0x40c362(0x421)]=null;[_0x40c362(0x2a3)]=null;[_0x40c362(0x1f9)]=null;[_0x40c362(0x259)]=null;[_0x40c362(0x2d5)]=null;[_0x40c362(0x374)]=null;[_0x40c362(0x3aa)]=null;[_0x40c362(0x10c)]=null;[_0x40c362(0x42a)]=null;['camera']={'viewProjection':IDENTITY_MATRIX$1,'inverseViewProjection':IDENTITY_MATRIX$1,'cameraPosition':[0x0,0x0,0x2]};[_0x40c362(0x28b)]=IDENTITY_MATRIX$1;[_0x40c362(0x341)]=IDENTITY_MATRIX$1;[_0x40c362(0x42f)]=[0x0,0x0,0x0];[_0x40c362(0x3ff)]=[0x1,0x1,0x1];[_0x40c362(0x27b)]='composite';[_0x40c362(0x347)]=0.3;[_0x40c362(0x203)]=0x1;[_0x40c362(0x357)]=0.005;['volumeDimFactor']=0x1;[_0x40c362(0x2d3)]='smooth';[_0x40c362(0x401)]=null;[_0x40c362(0x215)]=DEFAULT_COLOR_STOPS;[_0x40c362(0x175)]=DEFAULT_OPACITY_STOPS;[_0x40c362(0x1a3)]=0x0;['submittedFrameCount']=0x0;[_0x40c362(0x3a7)]=0x0;[_0x40c362(0x2b1)]=0x0;['initializationGeneration']=0x0;['lastFrameTimeMilliseconds']=0x0;[_0x40c362(0x261)]=[];['cachedSlices']=[];[_0x40c362(0x199)]=[];[_0x40c362(0x371)]=new Map();[_0x40c362(0x17c)]=[];[_0x40c362(0x216)]=null;[_0x40c362(0x2a9)]=0x0;[_0x40c362(0x10f)]=null;[_0x40c362(0x221)]=0x0;[_0x40c362(0x35d)]=0x0;[_0x40c362(0x3b0)]=0x0;[_0x40c362(0x3b7)]=0x0;[_0x40c362(0x299)]=!0x1;[_0x40c362(0x1d4)]=null;constructor(_0x4b2ad4={}){const _0x575393=_0x40c362;this[_0x575393(0x389)]={..._0x4b2ad4};}get['state'](){const _0x351c79=_0x40c362;return this[_0x351c79(0x159)];}get[_0x40c362(0x1be)](){const _0x322aa2=_0x40c362;let _0xdaefea=this[_0x322aa2(0x259)]?.[_0x322aa2(0x1be)]??{'logicalBrickCount':0x0,'atlasCapacity':0x0,'gpuBytes':0x0,'memoryLimitBytes':this[_0x322aa2(0x389)][_0x322aa2(0x18f)]??this[_0x322aa2(0x389)][_0x322aa2(0x3d0)]??DEFAULT_MEMORY_TARGET_BYTES,'budgetLimited':!0x1,'skippedSamples':0x0,'skippedCells':0x0},_0x8d51f5=this[_0x322aa2(0x3aa)]?.['statistics']??{'uniformUpdateCount':0x0,'resourceRebuildCount':0x0};return{'logicalBrickCount':_0xdaefea[_0x322aa2(0x36a)],'residentBrickCount':this[_0x322aa2(0x259)]?.[_0x322aa2(0x2b9)]??0x0,'pendingBrickCount':0x0,'atlasCapacity':_0xdaefea[_0x322aa2(0x2fe)],'gpuBytes':_0xdaefea['gpuBytes'],'memoryLimitBytes':_0xdaefea[_0x322aa2(0x2a1)],'budgetLimited':_0xdaefea[_0x322aa2(0x297)],'frameTimeMilliseconds':this[_0x322aa2(0x217)],'submittedFrameCount':this['submittedFrameCount'],'uploadedBrickCount':this[_0x322aa2(0x35d)],'uploadBatchCount':this['uploadBatchCount'],'maximumUploadBatchBytes':this[_0x322aa2(0x3b7)],'sliceUniformUpdateCount':_0x8d51f5['uniformUpdateCount'],'sliceResourceRebuildCount':_0x8d51f5[_0x322aa2(0x30b)],'skippedSamples':_0xdaefea[_0x322aa2(0x3bb)],'skippedCells':_0xdaefea['skippedCells']};}['setFrameAvailableCallback'](_0xf1b5ac){const _0x2776c6=_0x40c362;this[_0x2776c6(0x1d4)]=_0xf1b5ac;}async[_0x40c362(0x404)](_0x5ec0a3){const _0x337861=_0x40c362;if(this['lifecycleState']===_0x337861(0x275))throw Error(_0x337861(0x150));let _0x477f0a=++this[_0x337861(0x29a)];this[_0x337861(0x24b)](),this[_0x337861(0x11b)]=_0x5ec0a3,this[_0x337861(0x159)]=_0x337861(0x145);let _0x56da1b=navigator['gpu'];if(!_0x56da1b)throw this['lifecycleState']='idle',Error(_0x337861(0x266));let _0x46d9b0=await _0x56da1b[_0x337861(0x249)]({'powerPreference':this[_0x337861(0x389)]['powerPreference']??_0x337861(0x2ef)});if(_0x477f0a!==this[_0x337861(0x29a)])return;if(!_0x46d9b0)throw this[_0x337861(0x159)]='idle',Error(_0x337861(0x403));let _0x46270d=await _0x46d9b0[_0x337861(0x349)]();if(_0x477f0a!==this[_0x337861(0x29a)]){_0x46270d[_0x337861(0x14d)]();return;}let _0x4d58e7=_0x5ec0a3[_0x337861(0x296)](_0x337861(0x2c9));if(!_0x4d58e7)throw _0x46270d['destroy'](),this[_0x337861(0x159)]='idle',Error('Failed\x20to\x20create\x20a\x20WebGPU\x20canvas\x20context\x20for\x20the\x20volume\x20scene.\x20无法为体积场景创建\x20WebGPU\x20Canvas\x20上下文。');let _0x4be836=_0x56da1b['getPreferredCanvasFormat']();_0x4d58e7[_0x337861(0x2dd)]({'device':_0x46270d,'format':_0x4be836,'alphaMode':'premultiplied','usage':GPUTextureUsage[_0x337861(0x21d)]|GPUTextureUsage[_0x337861(0x2e3)]}),this[_0x337861(0x39d)]=_0x46d9b0,this['device']=_0x46270d,this[_0x337861(0x27f)]=_0x4d58e7,this[_0x337861(0x112)]=_0x4be836,_0x46270d[_0x337861(0x19f)](_0x337861(0x1ce)),this[_0x337861(0x117)]();let _0x4149d2=await _0x46270d['popErrorScope']();if(_0x4149d2)throw this[_0x337861(0x24b)](),this['lifecycleState']=_0x337861(0x3cb),Error('Failed\x20to\x20create\x20WebGPU\x20volume\x20pipelines:\x20'+_0x4149d2['message']+'.\x20创建\x20WebGPU\x20体积管线失败。');if(this[_0x337861(0x2c6)](_0x46270d),this[_0x337861(0x159)]=_0x337861(0x30e),this[_0x337861(0x42a)]){this[_0x337861(0x181)](this[_0x337861(0x42a)]);let _0x4a0c4d=Array[_0x337861(0x31f)](this['cachedBricks']['entries']());await Promise[_0x337861(0x425)](_0x4a0c4d[_0x337861(0x358)](([_0x25cd2c,_0x3f12c1])=>this[_0x337861(0x207)]({'logicalIndex':_0x25cd2c,'values':_0x3f12c1},!0x1)));}this[_0x337861(0x3fc)](),this['getProfileResources']()[_0x337861(0x158)](this[_0x337861(0x261)]),this[_0x337861(0x22a)]()[_0x337861(0x158)](this['cachedSlices']),this['getAxisResources']()[_0x337861(0x158)](this[_0x337861(0x199)]),this[_0x337861(0x3cc)](_0x5ec0a3[_0x337861(0x3a7)]||_0x5ec0a3[_0x337861(0x310)]||0x1,_0x5ec0a3[_0x337861(0x2b1)]||_0x5ec0a3[_0x337861(0x281)]||0x1);}[_0x40c362(0x143)](_0x5cf055){const _0x16ab01=_0x40c362;this['uploadGeneration']+=0x1,this[_0x16ab01(0x35f)](new DOMException(_0x16ab01(0x147),_0x16ab01(0x1a0))),this['metadata']={..._0x5cf055},this[_0x16ab01(0x371)][_0x16ab01(0x16a)](),this['uploadedBrickCount']=0x0,this[_0x16ab01(0x3b0)]=0x0,this[_0x16ab01(0x3b7)]=0x0,this[_0x16ab01(0x159)]===_0x16ab01(0x30e)&&this[_0x16ab01(0x181)](_0x5cf055);}['uploadBrick'](_0x4f15b2){const _0x25c265=_0x40c362;return this[_0x25c265(0x207)](_0x4f15b2,!0x0);}[_0x40c362(0x3bd)](_0x51350a){const _0x5af2b8=_0x40c362;this['getAtlas']()[_0x5af2b8(0x193)](_0x51350a,this[_0x5af2b8(0x1a3)]);for(let _0x4b24ba of _0x51350a){let _0xd1cb92=this[_0x5af2b8(0x371)][_0x5af2b8(0x1e4)](_0x4b24ba);_0xd1cb92&&(this[_0x5af2b8(0x371)][_0x5af2b8(0x422)](_0x4b24ba),this['cachedBricks'][_0x5af2b8(0x3dc)](_0x4b24ba,_0xd1cb92));}}[_0x40c362(0x2e6)](_0x3299b2){const _0x578587=_0x40c362;validateMatrix(_0x3299b2[_0x578587(0x3a3)],_0x578587(0x3a3)),validateMatrix(_0x3299b2['inverseViewProjection'],'inverseViewProjection'),this['camera']={'viewProjection':[..._0x3299b2[_0x578587(0x3a3)]],'inverseViewProjection':[..._0x3299b2[_0x578587(0x38e)]],'cameraPosition':[..._0x3299b2[_0x578587(0x244)]]};}['setProfiles'](_0x1bfc4c){const _0x118348=_0x40c362;this[_0x118348(0x261)]=cloneMeshes(_0x1bfc4c),this[_0x118348(0x360)]()[_0x118348(0x158)](_0x1bfc4c);}[_0x40c362(0x186)](_0x54d5bf){const _0x175846=_0x40c362;this[_0x175846(0x2f5)]=_0x54d5bf[_0x175846(0x358)](_0x29230e=>({..._0x29230e})),this[_0x175846(0x22a)]()[_0x175846(0x158)](_0x54d5bf);}[_0x40c362(0x33c)](_0x46251f){const _0x5c658b=_0x40c362;this['cachedAxes']=cloneMeshes(_0x46251f),this[_0x5c658b(0x2b7)]()['replace'](_0x46251f);}[_0x40c362(0x22e)](_0x26e04a,_0xd867a1,_0x10be81){const _0x8d2a28=_0x40c362;this[_0x8d2a28(0x215)]=_0x26e04a[_0x8d2a28(0x358)](_0xd12eb=>({'value':_0xd12eb[_0x8d2a28(0x13f)],'color':[..._0xd12eb['color']]})),this[_0x8d2a28(0x175)]=_0xd867a1[_0x8d2a28(0x358)](_0x1e5f2b=>({..._0x1e5f2b})),_0x10be81&&(this['colorMode']=_0x10be81),this['lifecycleState']===_0x8d2a28(0x30e)&&this[_0x8d2a28(0x3fc)]();}[_0x40c362(0x417)](_0xcfe288){const _0xe89451=_0x40c362;_0xcfe288['modelMatrix']&&(validateMatrix(_0xcfe288[_0xe89451(0x28b)],_0xe89451(0x28b)),this[_0xe89451(0x28b)]=[..._0xcfe288[_0xe89451(0x28b)]]),_0xcfe288['inverseModelMatrix']&&(validateMatrix(_0xcfe288[_0xe89451(0x341)],_0xe89451(0x341)),this[_0xe89451(0x341)]=[..._0xcfe288[_0xe89451(0x341)]]),_0xcfe288[_0xe89451(0x42f)]&&(this['clipMinimum']=[..._0xcfe288[_0xe89451(0x42f)]]),_0xcfe288[_0xe89451(0x3ff)]&&(this['clipMaximum']=[..._0xcfe288[_0xe89451(0x3ff)]]),_0xcfe288[_0xe89451(0x27b)]&&(this[_0xe89451(0x27b)]=_0xcfe288['renderMode']),_0xcfe288[_0xe89451(0x347)]!==void 0x0&&(this[_0xe89451(0x347)]=validateNonNegative(_0xcfe288[_0xe89451(0x347)],_0xe89451(0x347))),_0xcfe288['densityScale']!==void 0x0&&(this['densityScale']=validateNonNegative(_0xcfe288[_0xe89451(0x203)],_0xe89451(0x203))),_0xcfe288[_0xe89451(0x357)]!==void 0x0&&(this[_0xe89451(0x357)]=validatePositive(_0xcfe288[_0xe89451(0x357)],_0xe89451(0x357))),_0xcfe288[_0xe89451(0x23d)]!==void 0x0&&(this['volumeDimFactor']=validateNonNegative(_0xcfe288[_0xe89451(0x23d)],'volumeDimFactor')),_0xcfe288[_0xe89451(0x2d3)]&&(this['colorMode']=_0xcfe288['colorMode']),_0xcfe288['geographicTransform']!==void 0x0&&(this[_0xe89451(0x401)]=_0xcfe288[_0xe89451(0x401)]?{..._0xcfe288['geographicTransform']}:null);}[_0x40c362(0x3cc)](_0x813f85,_0x3f6a0b){const _0x58356c=_0x40c362;if(!Number[_0x58356c(0x135)](_0x813f85)||!Number[_0x58356c(0x135)](_0x3f6a0b)||_0x813f85<=0x0||_0x3f6a0b<=0x0)throw Error(_0x58356c(0x28f));let _0x2d3b39=this[_0x58356c(0x3e5)]();_0x2d3b39[_0x58356c(0x3a7)]=_0x813f85,_0x2d3b39[_0x58356c(0x2b1)]=_0x3f6a0b,this['width']=_0x813f85,this[_0x58356c(0x2b1)]=_0x3f6a0b,this[_0x58356c(0x3db)]()['resize'](_0x813f85,_0x3f6a0b),this[_0x58356c(0x213)]();}[_0x40c362(0x3ac)](){const _0x46ea8c=_0x40c362;if(this[_0x46ea8c(0x159)]!=='ready'||!this['metadata']||this[_0x46ea8c(0x3a7)]<=0x0||this['height']<=0x0||this['frameInFlight'])return!0x1;let _0x3d73af=performance[_0x46ea8c(0x3e7)]();this[_0x46ea8c(0x1a3)]+=0x1,this[_0x46ea8c(0x1e9)]();let _0xbef3b3=this[_0x46ea8c(0x270)](),_0x4c0460=_0xbef3b3[_0x46ea8c(0x38f)]({'label':_0x46ea8c(0x2d6)}),_0x44733b=this[_0x46ea8c(0x296)]()['getCurrentTexture']()['createView']();return this[_0x46ea8c(0x1e3)](_0x4c0460,_0x44733b),this['encodeVolumePass'](_0x4c0460,_0x44733b),this[_0x46ea8c(0x123)](_0x4c0460,_0x44733b),_0xbef3b3['queue'][_0x46ea8c(0x120)]([_0x4c0460[_0x46ea8c(0x25b)]()]),this[_0x46ea8c(0x299)]=!0x0,this[_0x46ea8c(0x2f1)]+=0x1,this[_0x46ea8c(0x217)]=Math[_0x46ea8c(0x370)](0.000001,performance['now']()-_0x3d73af),_0xbef3b3['queue'][_0x46ea8c(0x1ae)]()['then'](()=>{const _0x464dbf=_0x46ea8c;this[_0x464dbf(0x1d9)]!==_0xbef3b3||this[_0x464dbf(0x159)]!=='ready'||(this[_0x464dbf(0x299)]=!0x1,this[_0x464dbf(0x1d4)]?.());})[_0x46ea8c(0x3fa)](()=>{const _0x276a9b=_0x46ea8c;this[_0x276a9b(0x1d9)]===_0xbef3b3&&(this[_0x276a9b(0x299)]=!0x1);}),!0x0;}async[_0x40c362(0x1c7)](){const _0x5deff9=_0x40c362;if(this[_0x5deff9(0x159)]!=='ready'||!this['metadata']||this[_0x5deff9(0x3a7)]<=0x0||this[_0x5deff9(0x2b1)]<=0x0)throw Error(_0x5deff9(0x154));let _0x6d5373=this[_0x5deff9(0x270)](),_0x5ed8f9=this[_0x5deff9(0x3a7)]*0x4,_0x45b517=Math[_0x5deff9(0x20a)](_0x5ed8f9/0x100)*0x100,_0x302fb7=_0x6d5373[_0x5deff9(0x3c9)]({'label':_0x5deff9(0x25c),'size':_0x45b517*this['height'],'usage':GPUBufferUsage['COPY_DST']|GPUBufferUsage[_0x5deff9(0x3ee)]});_0x6d5373[_0x5deff9(0x19f)](_0x5deff9(0x1ce)),this[_0x5deff9(0x1a3)]+=0x1,this['writeParams']();let _0x4ec03c=_0x6d5373[_0x5deff9(0x38f)]({'label':_0x5deff9(0x1ab)}),_0x4b2b4e=this[_0x5deff9(0x296)]()['getCurrentTexture'](),_0xdf6443=_0x4b2b4e[_0x5deff9(0x1c1)]();this['encodeScenePass'](_0x4ec03c,_0xdf6443),this['encodeVolumePass'](_0x4ec03c,_0xdf6443),this['encodeOverlayPass'](_0x4ec03c,_0xdf6443),_0x4ec03c[_0x5deff9(0x38b)]({'texture':_0x4b2b4e},{'buffer':_0x302fb7,'bytesPerRow':_0x45b517,'rowsPerImage':this[_0x5deff9(0x2b1)]},[this['width'],this[_0x5deff9(0x2b1)]]),_0x6d5373[_0x5deff9(0x367)][_0x5deff9(0x120)]([_0x4ec03c[_0x5deff9(0x25b)]()]);let _0x5e9a95=await _0x6d5373['popErrorScope']();if(_0x5e9a95)throw _0x302fb7[_0x5deff9(0x14d)](),Error(_0x5deff9(0x248)+_0x5e9a95['message']+'.\x20WebGPU\x20体积帧读取失败。');await _0x302fb7[_0x5deff9(0x176)](GPUMapMode[_0x5deff9(0x324)]);let _0x35b298=new Uint8Array(_0x302fb7[_0x5deff9(0x13c)]()),_0x2be7b3=new Uint8Array(_0x5ed8f9*this['height']),_0x5a6b91=this['getFormat']()===_0x5deff9(0x31b);for(let _0x4ecfa4=0x0;_0x4ecfa4<this[_0x5deff9(0x2b1)];_0x4ecfa4+=0x1){let _0x52a43b=_0x35b298[_0x5deff9(0x263)](_0x4ecfa4*_0x45b517,_0x4ecfa4*_0x45b517+_0x5ed8f9),_0x4cc360=_0x4ecfa4*_0x5ed8f9;if(!_0x5a6b91){_0x2be7b3[_0x5deff9(0x3dc)](_0x52a43b,_0x4cc360);continue;}for(let _0x16d513=0x0;_0x16d513<this[_0x5deff9(0x3a7)];_0x16d513+=0x1){let _0x10f1a8=_0x16d513*0x4,_0x1d695a=_0x4cc360+_0x10f1a8;_0x2be7b3[_0x1d695a]=_0x52a43b[_0x10f1a8+0x2],_0x2be7b3[_0x1d695a+0x1]=_0x52a43b[_0x10f1a8+0x1],_0x2be7b3[_0x1d695a+0x2]=_0x52a43b[_0x10f1a8],_0x2be7b3[_0x1d695a+0x3]=_0x52a43b[_0x10f1a8+0x3];}}return _0x302fb7[_0x5deff9(0x253)](),_0x302fb7[_0x5deff9(0x14d)](),this[_0x5deff9(0x2f1)]+=0x1,{'width':this[_0x5deff9(0x3a7)],'height':this['height'],'pixels':_0x2be7b3};}[_0x40c362(0x14d)](){const _0x5bf6ea=_0x40c362;this[_0x5bf6ea(0x159)]!==_0x5bf6ea(0x275)&&(++this[_0x5bf6ea(0x29a)],this[_0x5bf6ea(0x24b)](),this['canvas']=null,this[_0x5bf6ea(0x42a)]=null,this[_0x5bf6ea(0x1d4)]=null,this[_0x5bf6ea(0x159)]=_0x5bf6ea(0x275));}[_0x40c362(0x117)](){const _0x13d450=_0x40c362;let _0x48e196=this[_0x13d450(0x270)]();this['sceneParamsBuffer']=_0x48e196[_0x13d450(0x3c9)]({'label':'volume\x20scene\x20params','size':0x190,'usage':GPUBufferUsage[_0x13d450(0x246)]|GPUBufferUsage[_0x13d450(0x327)]}),this['volumeParamsBuffer']=_0x48e196[_0x13d450(0x3c9)]({'label':_0x13d450(0x382),'size':0x60,'usage':GPUBufferUsage[_0x13d450(0x246)]|GPUBufferUsage[_0x13d450(0x327)]}),this['geometryBindGroupLayout']=_0x48e196[_0x13d450(0x2d9)]({'label':_0x13d450(0x24d),'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x13d450(0x179)]|GPUShaderStage[_0x13d450(0x2ac)],'buffer':{'type':'uniform'}}]}),this[_0x13d450(0x3b3)]=_0x48e196['createBindGroupLayout']({'label':'volume\x20scene\x20bind\x20group\x20layout','entries':[{'binding':0x0,'visibility':GPUShaderStage['VERTEX']|GPUShaderStage[_0x13d450(0x2ac)],'buffer':{'type':_0x13d450(0x126)}},{'binding':0x1,'visibility':GPUShaderStage[_0x13d450(0x2ac)],'texture':{'sampleType':_0x13d450(0x424)}}]}),this['volumeBindGroupLayout']=_0x48e196[_0x13d450(0x2d9)]({'label':_0x13d450(0x1d2),'entries':[...Array[_0x13d450(0x31f)]({'length':0x8},(_0x22526d,_0xf6b23a)=>({'binding':_0xf6b23a,'visibility':GPUShaderStage['FRAGMENT'],'texture':{'sampleType':_0x13d450(0x1d6),'viewDimension':'3d'}})),{'binding':0x8,'visibility':GPUShaderStage[_0x13d450(0x2ac)],'buffer':{'type':_0x13d450(0x187)}},{'binding':0x9,'visibility':GPUShaderStage[_0x13d450(0x2ac)],'buffer':{'type':_0x13d450(0x126)}}]}),this[_0x13d450(0x24c)]=_0x48e196[_0x13d450(0x2d9)]({'label':_0x13d450(0x1ba),'entries':[0x0,0x1,0x2,0x3][_0x13d450(0x358)](_0x46f34d=>({'binding':_0x46f34d,'visibility':GPUShaderStage[_0x13d450(0x2ac)],'buffer':{'type':_0x13d450(0x187)}}))}),this[_0x13d450(0x311)]=_0x48e196['createBindGroupLayout']({'label':_0x13d450(0x1ec),'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x13d450(0x179)]|GPUShaderStage[_0x13d450(0x2ac)],'buffer':{'type':_0x13d450(0x126)}}]}),this[_0x13d450(0x1f9)]=new WebgpuSceneAttachments(_0x48e196),this[_0x13d450(0x2d5)]=new WebgpuTransferResources(_0x48e196),this[_0x13d450(0x374)]=new WebgpuSceneMeshResources(_0x48e196),this['sliceResources']=new WebgpuSliceResources(_0x48e196,this[_0x13d450(0x2d8)]()),this['axisResources']=new WebgpuSceneMeshResources(_0x48e196),this['createPipelines']();}[_0x40c362(0x183)](){const _0x255fa9=_0x40c362;let _0xa416dc=this[_0x255fa9(0x270)](),_0x5d0b2e=this['getFormat'](),_0xc4814a=this[_0x255fa9(0x277)](),_0x6b5bf3=this[_0x255fa9(0x3a4)](),_0x4e553a=_0xa416dc['createShaderModule']({'label':_0x255fa9(0x36c),'code':sceneMesh_default}),_0x2109b5={'module':_0x4e553a,'entryPoint':_0x255fa9(0x130),'buffers':[{'arrayStride':0x1c,'attributes':[{'shaderLocation':0x0,'offset':0x0,'format':_0x255fa9(0x33a)},{'shaderLocation':0x1,'offset':0xc,'format':_0x255fa9(0x39a)}]}]},_0x1e3d77={'module':_0x4e553a,'entryPoint':_0x255fa9(0x3b4),'targets':[{'format':_0x5d0b2e,'blend':premultipliedBlend()}]},_0x545835=(_0x15f734,_0x4339a1)=>_0xa416dc['createRenderPipeline']({'layout':_0xa416dc[_0x255fa9(0x171)]({'bindGroupLayouts':[_0xc4814a]}),'vertex':_0x2109b5,'fragment':_0x1e3d77,'primitive':{'topology':_0x15f734},'depthStencil':_0x4339a1?{'format':_0x255fa9(0x224),'depthWriteEnabled':!0x0,'depthCompare':_0x255fa9(0x1c0)}:void 0x0});this[_0x255fa9(0x191)]=_0x545835('triangle-list',!0x0),this['sceneLinePipeline']=_0x545835(_0x255fa9(0x3b9),!0x0),this[_0x255fa9(0x3d6)]=_0x545835(_0x255fa9(0x372),!0x1),this[_0x255fa9(0x118)]=_0x545835(_0x255fa9(0x3b9),!0x1);let _0x44ccbb=_0xa416dc[_0x255fa9(0x1f0)]({'label':'volume\x20raymarch\x20shader','code':volumeRaymarch_default});this['volumePipeline']=_0xa416dc[_0x255fa9(0x260)]({'layout':_0xa416dc[_0x255fa9(0x171)]({'bindGroupLayouts':[_0x6b5bf3,this[_0x255fa9(0x1a5)](),this[_0x255fa9(0x42b)]()]}),'vertex':{'module':_0x44ccbb,'entryPoint':_0x255fa9(0x130)},'fragment':{'module':_0x44ccbb,'entryPoint':'fragmentMain','targets':[{'format':_0x5d0b2e,'blend':premultipliedBlend()}]},'primitive':{'topology':_0x255fa9(0x372)}});let _0x28648d=_0xa416dc[_0x255fa9(0x1f0)]({'label':_0x255fa9(0x2f2),'code':volumeSlice_default}),_0xb7bea5=_0x3e1c7a=>_0xa416dc['createRenderPipeline']({'layout':_0xa416dc[_0x255fa9(0x171)]({'bindGroupLayouts':[_0xc4814a,this['getVolumeBindGroupLayout'](),this[_0x255fa9(0x42b)](),this[_0x255fa9(0x2d8)]()]}),'vertex':{'module':_0x28648d,'entryPoint':_0x255fa9(0x130)},'fragment':{'module':_0x28648d,'entryPoint':_0x255fa9(0x3b4),'targets':[{'format':_0x5d0b2e,'blend':premultipliedBlend()}]},'primitive':{'topology':_0x255fa9(0x372)},'depthStencil':_0x3e1c7a?{'format':_0x255fa9(0x224),'depthWriteEnabled':!0x0,'depthCompare':'less'}:void 0x0});this['sceneSlicePipeline']=_0xb7bea5(!0x0),this[_0x255fa9(0x2a3)]=_0xb7bea5(!0x1);}[_0x40c362(0x181)](_0x23edf4){const _0x10b906=_0x40c362;this[_0x10b906(0x259)]?.['destroy'](),this[_0x10b906(0x259)]=new WebgpuBrickAtlas(this[_0x10b906(0x270)](),this['options'][_0x10b906(0x3d0)]??DEFAULT_MEMORY_TARGET_BYTES,this[_0x10b906(0x389)]['memoryHardLimitBytes']??this[_0x10b906(0x389)][_0x10b906(0x3d0)]??DEFAULT_MEMORY_TARGET_BYTES),this[_0x10b906(0x259)][_0x10b906(0x2dd)](_0x23edf4),this[_0x10b906(0x2b4)](),this['volumeBindGroup']=this[_0x10b906(0x259)][_0x10b906(0x315)](this[_0x10b906(0x1a5)](),this[_0x10b906(0x231)]());}[_0x40c362(0x207)](_0x5c39c3,_0xd15519){return new Promise((_0x1deddc,_0x11dffd)=>{const _0x3f929e=_0xc352;this['pendingBrickUploads'][_0x3f929e(0x31e)]({'upload':_0x5c39c3,'generation':this['uploadGeneration'],'cacheOnSuccess':_0xd15519,'resolve':_0x1deddc,'reject':_0x11dffd}),this[_0x3f929e(0x384)]();});}['scheduleUploadPump'](){const _0x331fcd=_0x40c362;this[_0x331fcd(0x216)]||=Promise[_0x331fcd(0x189)]()[_0x331fcd(0x2d1)](()=>this[_0x331fcd(0x322)]())[_0x331fcd(0x16c)](()=>{const _0x5e8cfa=_0x331fcd;this['uploadPump']=null,this['pendingBrickUploads'][_0x5e8cfa(0x3e0)]>0x0&&this[_0x5e8cfa(0x159)]===_0x5e8cfa(0x30e)&&this['scheduleUploadPump']();});}async[_0x40c362(0x322)](){const _0x24dfc1=_0x40c362;for(;this[_0x24dfc1(0x17c)]['length']>0x0&&this[_0x24dfc1(0x159)]===_0x24dfc1(0x30e)&&this['metadata'];){let _0xb30b9b=this['getDevice'](),_0x47f41f=estimateBrickUploadBytes(this[_0x24dfc1(0x42a)]),_0x1bb14c=Math[_0x24dfc1(0x1de)](0x4000000,Math[_0x24dfc1(0x370)](_0x47f41f,Math[_0x24dfc1(0x22d)](_0xb30b9b[_0x24dfc1(0x157)][_0x24dfc1(0x2d4)]/0x4))),_0x194194=[],_0x282e48=0x0;for(;this[_0x24dfc1(0x17c)][_0x24dfc1(0x3e0)]>0x0&&_0x194194['length']<0x10;){let _0x36e76d=this[_0x24dfc1(0x17c)][0x0];if(_0x194194[_0x24dfc1(0x3e0)]>0x0&&_0x282e48+_0x47f41f>_0x1bb14c)break;if(this[_0x24dfc1(0x17c)][_0x24dfc1(0x2bd)](),_0x36e76d[_0x24dfc1(0x195)]!==this[_0x24dfc1(0x2a9)]){_0x36e76d[_0x24dfc1(0x22b)](new DOMException('Volume\x20brick\x20upload\x20became\x20stale.\x20体积砖上传已过期。','AbortError'));continue;}_0x194194[_0x24dfc1(0x31e)](_0x36e76d),_0x282e48+=_0x47f41f;}if(_0x194194[_0x24dfc1(0x3e0)]!==0x0)try{let _0x195ab7=[],_0x54d6b0=0x0;for(let _0x4cdeb7 of _0x194194){let _0x2d8400=this[_0x24dfc1(0x2a2)]()[_0x24dfc1(0x15b)](_0x4cdeb7['upload'],this['frameIndex']),_0x5e623b=Math[_0x24dfc1(0x20a)](_0x54d6b0/0x100)*0x100;_0x195ab7[_0x24dfc1(0x31e)]({'item':_0x4cdeb7,'prepared':_0x2d8400,'bufferOffset':_0x5e623b}),_0x54d6b0=_0x5e623b+_0x2d8400[_0x24dfc1(0x3bf)][_0x24dfc1(0x40a)];}let _0x213575=this[_0x24dfc1(0x1c5)](_0x54d6b0);await _0x213575[_0x24dfc1(0x176)](GPUMapMode[_0x24dfc1(0x345)]);let _0x528c61=new Uint8Array(_0x213575[_0x24dfc1(0x13c)]());for(let _0x4a9845 of _0x195ab7){let _0x44c5c2=_0x4a9845[_0x24dfc1(0x30f)][_0x24dfc1(0x3bf)];_0x528c61['set'](new Uint8Array(_0x44c5c2[_0x24dfc1(0x3f1)],_0x44c5c2['byteOffset'],_0x44c5c2[_0x24dfc1(0x40a)]),_0x4a9845[_0x24dfc1(0x178)]);}_0x213575['unmap']();let _0x348887=_0xb30b9b['createCommandEncoder']({'label':_0x24dfc1(0x19c)});for(let _0x45e9ed of _0x195ab7)this[_0x24dfc1(0x2a2)]()[_0x24dfc1(0x1a2)](_0x348887,_0x213575,_0x45e9ed[_0x24dfc1(0x178)],_0x45e9ed[_0x24dfc1(0x30f)]);_0xb30b9b['queue'][_0x24dfc1(0x120)]([_0x348887[_0x24dfc1(0x25b)]()]),await _0xb30b9b[_0x24dfc1(0x367)][_0x24dfc1(0x1ae)](),await new Promise(_0xf6ac21=>setTimeout(_0xf6ac21,0x0)),this['uploadedBrickCount']+=_0x194194['length'],this[_0x24dfc1(0x3b0)]+=0x1,this['maximumUploadBatchBytes']=Math[_0x24dfc1(0x370)](this[_0x24dfc1(0x3b7)],_0x282e48);for(let _0x41e0d3 of _0x194194){if(_0x41e0d3[_0x24dfc1(0x195)]!==this[_0x24dfc1(0x2a9)]){_0x41e0d3[_0x24dfc1(0x22b)](new DOMException(_0x24dfc1(0x427),'AbortError'));continue;}_0x41e0d3[_0x24dfc1(0x320)]&&this['cacheBrickUpload'](_0x41e0d3[_0x24dfc1(0x3ce)]),_0x41e0d3[_0x24dfc1(0x189)]();}}catch(_0x4ec026){for(let _0xc3076 of _0x194194)_0xc3076[_0x24dfc1(0x22b)](_0x4ec026);}}}[_0x40c362(0x1c5)](_0x460f17){const _0x2e750d=_0x40c362;let _0x4bb84b=Math[_0x2e750d(0x370)](0x100,Math[_0x2e750d(0x20a)](_0x460f17/0x100)*0x100);return this[_0x2e750d(0x10f)]&&this[_0x2e750d(0x221)]>=_0x4bb84b?this[_0x2e750d(0x10f)]:(this[_0x2e750d(0x10f)]?.[_0x2e750d(0x14d)](),this[_0x2e750d(0x10f)]=this[_0x2e750d(0x270)]()[_0x2e750d(0x3c9)]({'label':'volume\x20brick\x20reusable\x20upload\x20staging','size':_0x4bb84b,'usage':GPUBufferUsage[_0x2e750d(0x3c5)]|GPUBufferUsage[_0x2e750d(0x2e3)]}),this[_0x2e750d(0x221)]=_0x4bb84b,this[_0x2e750d(0x10f)]);}[_0x40c362(0x2c5)](_0x2cd61a){const _0x3368bd=_0x40c362;for(this[_0x3368bd(0x371)][_0x3368bd(0x422)](_0x2cd61a[_0x3368bd(0x42e)]),this[_0x3368bd(0x371)][_0x3368bd(0x3dc)](_0x2cd61a['logicalIndex'],new Float32Array(_0x2cd61a['values']));this['cachedBricks']['size']>this[_0x3368bd(0x1be)]['atlasCapacity'];){let _0x26b23b=this[_0x3368bd(0x371)][_0x3368bd(0x289)]()[_0x3368bd(0x294)]()[_0x3368bd(0x13f)];if(_0x26b23b===void 0x0)break;this[_0x3368bd(0x371)][_0x3368bd(0x422)](_0x26b23b);}}[_0x40c362(0x35f)](_0x42c5cd){const _0x342abf=_0x40c362;for(let _0x94b43b of this[_0x342abf(0x17c)]['splice'](0x0))_0x94b43b[_0x342abf(0x22b)](_0x42c5cd);}['updateTransferResources'](){const _0x40a5f3=_0x40c362;let _0xb8d6b2=this[_0x40a5f3(0x33f)]();_0xb8d6b2['update'](this[_0x40a5f3(0x215)],this[_0x40a5f3(0x175)]),this['transferBindGroup']=_0xb8d6b2[_0x40a5f3(0x315)](this[_0x40a5f3(0x42b)]());}[_0x40c362(0x213)](){const _0x1261f9=_0x40c362;!this[_0x1261f9(0x314)]||!this['attachments']||!this[_0x1261f9(0x3ae)]||!this[_0x1261f9(0x3b3)]||(this['geometryBindGroup']=this[_0x1261f9(0x270)]()['createBindGroup']({'label':_0x1261f9(0x23b),'layout':this[_0x1261f9(0x3ae)],'entries':[{'binding':0x0,'resource':{'buffer':this['sceneParamsBuffer']}}]}),this[_0x1261f9(0x188)]=this[_0x1261f9(0x270)]()[_0x1261f9(0x315)]({'label':'volume\x20scene\x20bind\x20group','layout':this[_0x1261f9(0x3b3)],'entries':[{'binding':0x0,'resource':{'buffer':this[_0x1261f9(0x314)]}},{'binding':0x1,'resource':this[_0x1261f9(0x1f9)][_0x1261f9(0x225)]}]}));}[_0x40c362(0x1e9)](){const _0x56b886=_0x40c362;let _0x8f0be=new Float32Array(0x64);_0x8f0be[_0x56b886(0x3dc)](this[_0x56b886(0x3e2)][_0x56b886(0x3a3)],0x0),_0x8f0be[_0x56b886(0x3dc)](this[_0x56b886(0x3e2)][_0x56b886(0x38e)],0x10),_0x8f0be['set'](this[_0x56b886(0x28b)],0x20),_0x8f0be['set'](this[_0x56b886(0x341)],0x30),_0x8f0be[_0x56b886(0x3dc)]([...this['camera'][_0x56b886(0x244)],0x1],0x40),_0x8f0be['set']([this[_0x56b886(0x3a7)],this['height'],0x1/this[_0x56b886(0x3a7)],0x1/this[_0x56b886(0x2b1)]],0x44),_0x8f0be[_0x56b886(0x3dc)]([...this['clipMinimum'],0x0],0x48),_0x8f0be[_0x56b886(0x3dc)]([...this[_0x56b886(0x3ff)],0x0],0x4c),_0x8f0be['set']([+(this[_0x56b886(0x27b)]===_0x56b886(0x18c)),this[_0x56b886(0x347)],this[_0x56b886(0x203)],this[_0x56b886(0x357)]],0x50),_0x8f0be['set']([this[_0x56b886(0x215)][_0x56b886(0x3e0)],this[_0x56b886(0x175)][_0x56b886(0x3e0)],this[_0x56b886(0x23d)],+(this[_0x56b886(0x2d3)]==='step')],0x54);let _0x1a450c=this['geographicTransform'];_0x1a450c&&(_0x8f0be['set']([0x1,..._0x1a450c[_0x56b886(0x2ae)]],0x58),_0x8f0be[_0x56b886(0x3dc)]([_0x1a450c[_0x56b886(0x38c)],_0x1a450c['semiMinorAxisScaled'],..._0x1a450c[_0x56b886(0x26d)]],0x5c),_0x8f0be[_0x56b886(0x3dc)]([..._0x1a450c[_0x56b886(0x32a)],..._0x1a450c[_0x56b886(0x198)]],0x60)),this[_0x56b886(0x270)]()[_0x56b886(0x367)][_0x56b886(0x192)](this['getSceneParamsBuffer'](),0x0,_0x8f0be);}['writeVolumeParams'](){const _0x92cd94=_0x40c362;let _0x30692d=this[_0x92cd94(0x42a)],_0x4a4253=this['atlas'];if(!_0x30692d||!_0x4a4253)return;let _0x25087=_0x4a4253['atlasLayout'],_0x2c9ac3=new Uint32Array(0x60/0x4),_0x2efc7a=Math[_0x92cd94(0x20a)](_0x30692d[_0x92cd94(0x40d)][_0x92cd94(0x269)]/_0x30692d[_0x92cd94(0x1d5)]),_0x584b90=Math[_0x92cd94(0x20a)](_0x30692d[_0x92cd94(0x368)][_0x92cd94(0x269)]/_0x30692d['brickHeight']),_0x3dd9a8=Math['ceil'](_0x30692d['zAxis']['count']/_0x30692d[_0x92cd94(0x3a0)]);_0x2c9ac3['set']([_0x30692d[_0x92cd94(0x40d)][_0x92cd94(0x269)],_0x30692d[_0x92cd94(0x368)][_0x92cd94(0x269)],_0x30692d[_0x92cd94(0x2e5)][_0x92cd94(0x269)],0x0],0x0),_0x2c9ac3[_0x92cd94(0x3dc)]([_0x30692d[_0x92cd94(0x1d5)],_0x30692d[_0x92cd94(0x153)],_0x30692d[_0x92cd94(0x3a0)],0x1],0x4),_0x2c9ac3[_0x92cd94(0x3dc)]([_0x2efc7a,_0x584b90,_0x3dd9a8,0x0],0x8),_0x2c9ac3[_0x92cd94(0x3dc)]([_0x25087['slotCountX'],_0x25087[_0x92cd94(0x3d4)],_0x25087['slotCountZ'],_0x25087[_0x92cd94(0x3f5)]],0xc),_0x2c9ac3[_0x92cd94(0x3dc)]([(_0x30692d[_0x92cd94(0x1d5)]+0x2)*_0x25087[_0x92cd94(0x238)],(_0x30692d['brickHeight']+0x2)*_0x25087[_0x92cd94(0x3d4)],(_0x30692d[_0x92cd94(0x3a0)]+0x2)*_0x25087[_0x92cd94(0x141)],0x0],0x10),new Float32Array(_0x2c9ac3[_0x92cd94(0x3f1)])[_0x92cd94(0x3dc)]([_0x30692d['noData']??0x0,_0x30692d[_0x92cd94(0x1b5)]===void 0x0?0x0:0x1,0x0,0x0],0x14),this[_0x92cd94(0x270)]()['queue'][_0x92cd94(0x192)](this[_0x92cd94(0x231)](),0x0,_0x2c9ac3);}['encodeScenePass'](_0x5ccd75,_0x18b05b){const _0x498108=_0x40c362;let _0x2a9e76=_0x5ccd75[_0x498108(0x163)]({'label':_0x498108(0x24f),'colorAttachments':[{'view':_0x18b05b,'clearValue':{'r':0x0,'g':0x0,'b':0x0,'a':0x0},'loadOp':_0x498108(0x16a),'storeOp':_0x498108(0x194)}],'depthStencilAttachment':{'view':this[_0x498108(0x3db)]()[_0x498108(0x225)],'depthClearValue':0x1,'depthLoadOp':_0x498108(0x16a),'depthStoreOp':_0x498108(0x194)}});this[_0x498108(0x21f)](_0x2a9e76,_0x498108(0x39c)),this[_0x498108(0x309)](_0x2a9e76,'scene'),_0x2a9e76[_0x498108(0x1fa)]();}[_0x40c362(0x2ba)](_0x44c0bf,_0x33ba05){const _0x544f63=_0x40c362;if(!this['volumeBindGroup']||!this[_0x544f63(0x3f3)]||!this['sceneBindGroup']||!this['volumePipeline'])return;let _0x5635e6=_0x44c0bf[_0x544f63(0x163)]({'label':_0x544f63(0x2b2),'colorAttachments':[{'view':_0x33ba05,'loadOp':_0x544f63(0x2cb),'storeOp':_0x544f63(0x194)}]});_0x5635e6['setPipeline'](this[_0x544f63(0x1d0)]),_0x5635e6[_0x544f63(0x3e6)](0x0,this[_0x544f63(0x188)]),_0x5635e6[_0x544f63(0x3e6)](0x1,this['volumeBindGroup']),_0x5635e6[_0x544f63(0x3e6)](0x2,this['transferBindGroup']),_0x5635e6[_0x544f63(0x3f7)](0x3),_0x5635e6[_0x544f63(0x1fa)]();}[_0x40c362(0x123)](_0x412cbb,_0x34f4eb){const _0x4309d5=_0x40c362;let _0x16f01b=_0x412cbb[_0x4309d5(0x163)]({'label':_0x4309d5(0x2bf),'colorAttachments':[{'view':_0x34f4eb,'loadOp':_0x4309d5(0x2cb),'storeOp':_0x4309d5(0x194)}]});this[_0x4309d5(0x21f)](_0x16f01b,_0x4309d5(0x17e)),this[_0x4309d5(0x309)](_0x16f01b,_0x4309d5(0x17e)),_0x16f01b[_0x4309d5(0x1fa)]();}['drawMeshes'](_0x5ae7be,_0x110433){const _0x1299f0=_0x40c362;let _0x46e5c5=this[_0x1299f0(0x185)];if(!_0x46e5c5)return;let _0x3d7a18=_0x110433===_0x1299f0(0x39c)?this[_0x1299f0(0x191)]:this[_0x1299f0(0x3d6)],_0x7c1971=_0x110433===_0x1299f0(0x39c)?this['sceneLinePipeline']:this[_0x1299f0(0x118)];_0x3d7a18&&(_0x5ae7be[_0x1299f0(0x1a9)](_0x3d7a18),_0x5ae7be[_0x1299f0(0x3e6)](0x0,_0x46e5c5),this[_0x1299f0(0x374)]?.[_0x1299f0(0x3f7)](_0x5ae7be,_0x1299f0(0x372),_0x110433),this[_0x1299f0(0x10c)]?.[_0x1299f0(0x3f7)](_0x5ae7be,_0x1299f0(0x372),_0x110433)),_0x7c1971&&(_0x5ae7be['setPipeline'](_0x7c1971),_0x5ae7be[_0x1299f0(0x3e6)](0x0,_0x46e5c5),this[_0x1299f0(0x374)]?.[_0x1299f0(0x3f7)](_0x5ae7be,_0x1299f0(0x3b9),_0x110433),this[_0x1299f0(0x10c)]?.[_0x1299f0(0x3f7)](_0x5ae7be,_0x1299f0(0x3b9),_0x110433));}[_0x40c362(0x309)](_0x4ea1d7,_0x41f4d1){const _0x22c0cd=_0x40c362;let _0x5805fa=_0x41f4d1===_0x22c0cd(0x39c)?this[_0x22c0cd(0x421)]:this[_0x22c0cd(0x2a3)];!_0x5805fa||!this[_0x22c0cd(0x185)]||!this['volumeBindGroup']||!this[_0x22c0cd(0x3f3)]||(_0x4ea1d7[_0x22c0cd(0x3e6)](0x0,this['geometryBindGroup']),_0x4ea1d7[_0x22c0cd(0x3e6)](0x1,this[_0x22c0cd(0x302)]),_0x4ea1d7['setBindGroup'](0x2,this[_0x22c0cd(0x3f3)]),this['sliceResources']?.[_0x22c0cd(0x3f7)](_0x4ea1d7,_0x5805fa,_0x41f4d1));}[_0x40c362(0x2c6)](_0x2d9675){const _0x21eeef=_0x40c362;_0x2d9675['lost'][_0x21eeef(0x2d1)](_0x5ea064=>{const _0x3fc7e9=_0x21eeef;if(this['device']!==_0x2d9675||this[_0x3fc7e9(0x159)]===_0x3fc7e9(0x275))return;this[_0x3fc7e9(0x159)]='lost',console[_0x3fc7e9(0x20b)](_0x3fc7e9(0x3a8)+_0x5ea064['message']+_0x3fc7e9(0x1fe));let _0x4e4b46=this[_0x3fc7e9(0x11b)];this[_0x3fc7e9(0x24b)](),_0x4e4b46&&this[_0x3fc7e9(0x404)](_0x4e4b46)['catch'](_0x4594e1=>{const _0x46caf8=_0x3fc7e9;console['error'](_0x46caf8(0x1ad),_0x4594e1);});});}['releaseGpuResources'](){const _0x579ff3=_0x40c362;this[_0x579ff3(0x2a9)]+=0x1,this[_0x579ff3(0x35f)](new DOMException(_0x579ff3(0x210),'AbortError')),this[_0x579ff3(0x259)]?.[_0x579ff3(0x14d)](),this[_0x579ff3(0x2d5)]?.[_0x579ff3(0x14d)](),this['profileResources']?.['destroy'](),this[_0x579ff3(0x3aa)]?.['destroy'](),this[_0x579ff3(0x10c)]?.[_0x579ff3(0x14d)](),this['attachments']?.['destroy'](),this[_0x579ff3(0x314)]?.[_0x579ff3(0x14d)](),this['volumeParamsBuffer']?.['destroy'](),this[_0x579ff3(0x10f)]?.['destroy']();try{this['context']?.[_0x579ff3(0x28e)]();}catch{}this['device']?.[_0x579ff3(0x14d)](),this['adapter']=null,this[_0x579ff3(0x1d9)]=null,this[_0x579ff3(0x27f)]=null,this[_0x579ff3(0x112)]=null,this['sceneParamsBuffer']=null,this[_0x579ff3(0x219)]=null,this[_0x579ff3(0x10f)]=null,this[_0x579ff3(0x221)]=0x0,this['geometryBindGroupLayout']=null,this['sceneBindGroupLayout']=null,this[_0x579ff3(0x2dc)]=null,this['transferBindGroupLayout']=null,this[_0x579ff3(0x311)]=null,this[_0x579ff3(0x185)]=null,this[_0x579ff3(0x188)]=null,this[_0x579ff3(0x302)]=null,this[_0x579ff3(0x3f3)]=null,this['volumePipeline']=null,this[_0x579ff3(0x191)]=null,this[_0x579ff3(0x23c)]=null,this['overlayTrianglePipeline']=null,this[_0x579ff3(0x118)]=null,this[_0x579ff3(0x421)]=null,this[_0x579ff3(0x2a3)]=null,this[_0x579ff3(0x1f9)]=null,this[_0x579ff3(0x259)]=null,this[_0x579ff3(0x2d5)]=null,this['profileResources']=null,this[_0x579ff3(0x3aa)]=null,this[_0x579ff3(0x10c)]=null,this[_0x579ff3(0x299)]=!0x1,this['width']=0x0,this[_0x579ff3(0x2b1)]=0x0;}[_0x40c362(0x270)](){const _0xc2fbbe=_0x40c362;if(!this[_0xc2fbbe(0x1d9)])throw Error('WebGPU\x20volume\x20device\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20device\x20尚未初始化。');return this[_0xc2fbbe(0x1d9)];}[_0x40c362(0x296)](){const _0x1dd7a6=_0x40c362;if(!this['context'])throw Error(_0x1dd7a6(0x222));return this['context'];}[_0x40c362(0x17a)](){const _0x344ce5=_0x40c362;if(!this[_0x344ce5(0x112)])throw Error(_0x344ce5(0x254));return this[_0x344ce5(0x112)];}['getCanvas'](){const _0x289adc=_0x40c362;if(!this[_0x289adc(0x11b)])throw Error(_0x289adc(0x2b0));return this[_0x289adc(0x11b)];}[_0x40c362(0x3db)](){const _0x4cbbad=_0x40c362;if(!this[_0x4cbbad(0x1f9)])throw Error(_0x4cbbad(0x1a8));return this[_0x4cbbad(0x1f9)];}['getAtlas'](){const _0x130b10=_0x40c362;if(!this[_0x130b10(0x259)])throw Error('WebGPU\x20volume\x20source\x20must\x20be\x20configured\x20before\x20uploading\x20bricks.\x20上传砖块前必须配置\x20WebGPU\x20体积数据源。');return this[_0x130b10(0x259)];}['getTransferResources'](){const _0x571541=_0x40c362;if(!this['transferResources'])throw Error(_0x571541(0x3b6));return this[_0x571541(0x2d5)];}[_0x40c362(0x360)](){const _0x53b169=_0x40c362;if(!this[_0x53b169(0x374)])throw Error(_0x53b169(0x234));return this['profileResources'];}[_0x40c362(0x22a)](){const _0x51c0f6=_0x40c362;if(!this[_0x51c0f6(0x3aa)])throw Error(_0x51c0f6(0x3d3));return this['sliceResources'];}[_0x40c362(0x2b7)](){const _0x206ea6=_0x40c362;if(!this['axisResources'])throw Error(_0x206ea6(0x13d));return this[_0x206ea6(0x10c)];}[_0x40c362(0x3a4)](){const _0x24b89=_0x40c362;if(!this['sceneBindGroupLayout'])throw Error(_0x24b89(0x3ca));return this[_0x24b89(0x3b3)];}[_0x40c362(0x277)](){const _0x5c4f61=_0x40c362;if(!this[_0x5c4f61(0x3ae)])throw Error('WebGPU\x20geometry\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20几何绑定布局不可用。');return this['geometryBindGroupLayout'];}[_0x40c362(0x1a5)](){const _0x42a5a3=_0x40c362;if(!this['volumeBindGroupLayout'])throw Error(_0x42a5a3(0x1e0));return this[_0x42a5a3(0x2dc)];}[_0x40c362(0x42b)](){const _0x184443=_0x40c362;if(!this[_0x184443(0x24c)])throw Error(_0x184443(0x423));return this[_0x184443(0x24c)];}['getSliceBindGroupLayout'](){const _0x1572c5=_0x40c362;if(!this['sliceBindGroupLayout'])throw Error(_0x1572c5(0x3fe));return this[_0x1572c5(0x311)];}[_0x40c362(0x174)](){const _0x3d7c73=_0x40c362;if(!this[_0x3d7c73(0x314)])throw Error(_0x3d7c73(0x285));return this[_0x3d7c73(0x314)];}[_0x40c362(0x231)](){const _0x25b0fd=_0x40c362;if(!this[_0x25b0fd(0x219)])throw Error('WebGPU\x20volume\x20params\x20buffer\x20is\x20unavailable.\x20WebGPU\x20体积参数\x20Buffer\x20不可用。');return this['volumeParamsBuffer'];}};function _0xc352(_0x41be53,_0x5a7a9e){const _0x535006=_0x5350();return _0xc352=function(_0xc352c,_0x2eed3d){_0xc352c=_0xc352c-0x10c;let _0x1cf2ed=_0x535006[_0xc352c];return _0x1cf2ed;},_0xc352(_0x41be53,_0x5a7a9e);}const getAxis=(_0x5b8adf,_0x371a69)=>_0x371a69==='x'?_0x5b8adf['xAxis']:_0x371a69==='y'?_0x5b8adf[_0x40c362(0x368)]:_0x5b8adf[_0x40c362(0x2e5)],clampPosition=(_0x13ee6f,_0x56cb00,_0x1abf59)=>{const _0x49d304=_0x40c362;if(!Number[_0x49d304(0x298)](_0x1abf59))throw Error('切面位置必须是有限数。');let _0x527322=getAxis(_0x13ee6f,_0x56cb00),_0x2763e0=Math[_0x49d304(0x1de)](_0x527322[_0x49d304(0x2ca)],_0x527322[_0x49d304(0x1fa)]),_0x4cf0f3=Math['max'](_0x527322[_0x49d304(0x2ca)],_0x527322[_0x49d304(0x1fa)]);return Math['min'](_0x4cf0f3,Math['max'](_0x2763e0,_0x1abf59));},clonePreview=_0x2405d5=>_0x2405d5?{..._0x2405d5}:null,cloneLockedSlice=_0x53ffa8=>({..._0x53ffa8}),validateAxes=_0x3aa56b=>{const _0x134bb1=_0x40c362;for(let _0x277efd of[_0x3aa56b[_0x134bb1(0x40d)],_0x3aa56b['yAxis'],_0x3aa56b[_0x134bb1(0x2e5)]]){if(!Number[_0x134bb1(0x298)](_0x277efd[_0x134bb1(0x2ca)])||!Number['isFinite'](_0x277efd[_0x134bb1(0x1fa)]))throw Error(_0x134bb1(0x241));if(!(Number[_0x134bb1(0x135)](_0x277efd[_0x134bb1(0x269)])&&_0x277efd[_0x134bb1(0x269)]>0x0))throw Error(_0x134bb1(0x2eb));if(_0x277efd['count']>0x1&&_0x277efd[_0x134bb1(0x2ca)]===_0x277efd[_0x134bb1(0x1fa)])throw Error(_0x134bb1(0x1bc));}},volumeAxisValueToNormalized=(_0x2deb75,_0x5c7b46)=>_0x2deb75['start']===_0x2deb75['end']?0x0:(_0x5c7b46-_0x2deb75['start'])/(_0x2deb75[_0x40c362(0x1fa)]-_0x2deb75[_0x40c362(0x2ca)]),normalizedToVolumeAxisValue=(_0x5e62a2,_0x2e6d12)=>_0x5e62a2[_0x40c362(0x2ca)]+_0x2e6d12*(_0x5e62a2['end']-_0x5e62a2[_0x40c362(0x2ca)]);var SliceState=class{[_0x40c362(0x37c)];[_0x40c362(0x3a9)]=new Set();[_0x40c362(0x264)];['maxLockedSlices'];[_0x40c362(0x373)];[_0x40c362(0x1e8)]=0x1;[_0x40c362(0x3a5)]=null;[_0x40c362(0x161)]=[];[_0x40c362(0x21a)]=_0x40c362(0x344);['volumeDimFactor'];constructor(_0x3a1e45,_0x235bc5={}){const _0x3dad00=_0x40c362;if(validateAxes(_0x3a1e45),this['axes']={'xAxis':{..._0x3a1e45[_0x3dad00(0x40d)]},'yAxis':{..._0x3a1e45[_0x3dad00(0x368)]},'zAxis':{..._0x3a1e45[_0x3dad00(0x2e5)]}},this[_0x3dad00(0x23d)]=_0x235bc5[_0x3dad00(0x23d)]??0.25,this[_0x3dad00(0x373)]=_0x235bc5[_0x3dad00(0x373)]??_0x3dad00(0x39c),this[_0x3dad00(0x184)]=_0x235bc5[_0x3dad00(0x184)]??0xc,this[_0x3dad00(0x264)]=_0x235bc5[_0x3dad00(0x264)],!(this[_0x3dad00(0x23d)]>=0x0&&this[_0x3dad00(0x23d)]<=0x1))throw Error(_0x3dad00(0x3c7));if(this['depthMode']!==_0x3dad00(0x39c)&&this['depthMode']!=='always-visible')throw Error('切面深度模式无效\x20/\x20Slice\x20depth\x20mode\x20is\x20invalid');if(!(Number[_0x3dad00(0x135)](this[_0x3dad00(0x184)])&&this[_0x3dad00(0x184)]>0x0))throw Error(_0x3dad00(0x214));}get['preview'](){const _0x21a613=_0x40c362;return clonePreview(this[_0x21a613(0x3a5)]);}get['lockedSlices'](){const _0x40d2b7=_0x40c362;return this[_0x40d2b7(0x161)][_0x40d2b7(0x358)](cloneLockedSlice);}get[_0x40c362(0x144)](){const _0x37a14d=_0x40c362;return this[_0x37a14d(0x21a)];}get[_0x40c362(0x2b8)](){const _0x3b89cb=_0x40c362;return{'preview':this[_0x3b89cb(0x166)],'lockedSlices':this['lockedSlices'],'toolMode':this[_0x3b89cb(0x21a)],'volumeDimFactor':this[_0x3b89cb(0x23d)]};}[_0x40c362(0x1f1)](_0x2d3cd9){const _0x23a551=_0x40c362;return this['listeners'][_0x23a551(0x201)](_0x2d3cd9),_0x2d3cd9(this['snapshot']),()=>this[_0x23a551(0x3a9)]['delete'](_0x2d3cd9);}get[_0x40c362(0x2d0)](){const _0x32e79e=_0x40c362;return{'xAxis':{...this[_0x32e79e(0x37c)][_0x32e79e(0x40d)]},'yAxis':{...this[_0x32e79e(0x37c)]['yAxis']},'zAxis':{...this['axes']['zAxis']}};}['setAxes'](_0x21a512){const _0x19089e=_0x40c362;validateAxes(_0x21a512),this[_0x19089e(0x37c)]={'xAxis':{..._0x21a512[_0x19089e(0x40d)]},'yAxis':{..._0x21a512[_0x19089e(0x368)]},'zAxis':{..._0x21a512[_0x19089e(0x2e5)]}},this[_0x19089e(0x3a5)]&&(this['currentPreview'][_0x19089e(0x36f)]=clampPosition(this['axes'],this['currentPreview'][_0x19089e(0x30d)],this[_0x19089e(0x3a5)]['position'])),this[_0x19089e(0x161)]=this['slices']['map'](_0x51ee19=>({..._0x51ee19,'position':clampPosition(this[_0x19089e(0x37c)],_0x51ee19[_0x19089e(0x30d)],_0x51ee19['position'])})),this[_0x19089e(0x3f4)]();}[_0x40c362(0x355)](_0x5aa2eb){const _0x2818ff=_0x40c362;this[_0x2818ff(0x21a)]!==_0x5aa2eb&&(this[_0x2818ff(0x21a)]=_0x5aa2eb,(_0x5aa2eb===null||_0x5aa2eb!=='auto'&&this[_0x2818ff(0x3a5)]?.['axis']!==_0x5aa2eb)&&(this[_0x2818ff(0x3a5)]=null),this[_0x2818ff(0x3f4)]());}['updatePreview'](_0x514e5c,_0x3eb1a9){const _0x42f577=_0x40c362;if(this[_0x42f577(0x21a)]===null||this[_0x42f577(0x21a)]!=='auto'&&this[_0x42f577(0x21a)]!==_0x514e5c)return;let _0x42ac79=clampPosition(this[_0x42f577(0x37c)],_0x514e5c,_0x3eb1a9);this['currentPreview']?.[_0x42f577(0x30d)]===_0x514e5c&&this['currentPreview']['position']===_0x42ac79||(this[_0x42f577(0x3a5)]={'axis':_0x514e5c,'position':_0x42ac79},this['notify']());}[_0x40c362(0x2fc)](){const _0x6d86de=_0x40c362;this[_0x6d86de(0x3a5)]&&(this[_0x6d86de(0x3a5)]=null,this[_0x6d86de(0x3f4)]());}[_0x40c362(0x346)](_0x53dd32=this[_0x40c362(0x373)]){const _0x3c2cf8=_0x40c362;return this[_0x3c2cf8(0x3a5)]?this[_0x3c2cf8(0x32d)](this[_0x3c2cf8(0x3a5)]['axis'],this[_0x3c2cf8(0x3a5)][_0x3c2cf8(0x36f)],_0x53dd32):null;}[_0x40c362(0x32d)](_0x39e365,_0x4d7b0c,_0x4b0f3a=this[_0x40c362(0x373)]){const _0x59b5c7=_0x40c362;if(this[_0x59b5c7(0x161)]['length']>=this['maxLockedSlices'])return this['onLimitReached']?.(this['maxLockedSlices']),null;let _0x338416={'id':_0x59b5c7(0x418)+this[_0x59b5c7(0x1e8)],'axis':_0x39e365,'position':clampPosition(this[_0x59b5c7(0x37c)],_0x39e365,_0x4d7b0c),'depthMode':_0x4b0f3a,'visible':!0x0};return this[_0x59b5c7(0x1e8)]+=0x1,this[_0x59b5c7(0x161)]=[...this['slices'],_0x338416],this[_0x59b5c7(0x3f4)](),cloneLockedSlice(_0x338416);}[_0x40c362(0x307)](_0x4ef9b7,_0xdba7ed){const _0x17869c=_0x40c362;let _0x50ca3e=this['slices'][_0x17869c(0x18b)](_0x57e443=>_0x57e443['id']===_0x4ef9b7);if(_0x50ca3e<0x0)return;let _0x1a6cab=this['slices'][_0x50ca3e],_0x5b6e04=clampPosition(this[_0x17869c(0x37c)],_0x1a6cab[_0x17869c(0x30d)],_0xdba7ed);_0x5b6e04!==_0x1a6cab[_0x17869c(0x36f)]&&(this[_0x17869c(0x161)]=this['slices'][_0x17869c(0x358)](_0x1856c0=>_0x1856c0['id']===_0x4ef9b7?{..._0x1856c0,'position':_0x5b6e04}:_0x1856c0),this[_0x17869c(0x3f4)]());}[_0x40c362(0x2de)](_0x1a01cb){const _0x2d070b=_0x40c362;let _0x1a4921=this[_0x2d070b(0x161)][_0x2d070b(0x33e)](_0x52d299=>_0x52d299['id']!==_0x1a01cb);_0x1a4921['length']!==this[_0x2d070b(0x161)][_0x2d070b(0x3e0)]&&(this['slices']=_0x1a4921,this[_0x2d070b(0x3f4)]());}[_0x40c362(0x323)](){const _0x1fef74=_0x40c362;this[_0x1fef74(0x161)][_0x1fef74(0x3e0)]!==0x0&&(this[_0x1fef74(0x161)]=[],this[_0x1fef74(0x3f4)]());}[_0x40c362(0x3f4)](){const _0x10441c=_0x40c362;let _0x5d74f2=this[_0x10441c(0x2b8)];for(let _0x1a75e0 of this['listeners'])_0x1a75e0(_0x5d74f2);}};const axisEndpoints=_0x10c62f=>_0x10c62f==='x'?[[0x0,0x0,0x0],[0x1,0x0,0x0]]:_0x10c62f==='y'?[[0x0,0x0,0x0],[0x0,0x1,0x0]]:[[0x0,0x0,0x0],[0x0,0x0,0x1]],projectAxis=(_0x5f251e,_0x56d52a)=>{const _0x5b58e7=_0x40c362;let _0x5ed486=multiplyMatrices(_0x56d52a['viewProjectionMatrix'],_0x56d52a[_0x5b58e7(0x28b)]),[_0x3c2292,_0x4e2e8d]=axisEndpoints(_0x5f251e),_0x5eb9df=projectPointToViewport(_0x5ed486,_0x3c2292,_0x56d52a[_0x5b58e7(0x1ef)],_0x56d52a[_0x5b58e7(0x137)]),_0x17ca99=projectPointToViewport(_0x5ed486,_0x4e2e8d,_0x56d52a[_0x5b58e7(0x1ef)],_0x56d52a[_0x5b58e7(0x137)]);return!_0x5eb9df||!_0x17ca99?null:{'axis':_0x5f251e,'startX':_0x5eb9df[0x0],'startY':_0x5eb9df[0x1],'endX':_0x17ca99[0x0],'endY':_0x17ca99[0x1]};},hitProjectedAxis=(_0x5bdc50,_0x23272b,_0x2f169a)=>{const _0x1e7267=_0x40c362;let _0x3265ca=_0x5bdc50[_0x1e7267(0x337)]-_0x5bdc50['startX'],_0x3325c4=_0x5bdc50[_0x1e7267(0x220)]-_0x5bdc50[_0x1e7267(0x408)],_0xbd277f=_0x3265ca*_0x3265ca+_0x3325c4*_0x3325c4,_0xe16b7b=_0xbd277f===0x0?0x0:((_0x23272b-_0x5bdc50[_0x1e7267(0x12a)])*_0x3265ca+(_0x2f169a-_0x5bdc50[_0x1e7267(0x408)])*_0x3325c4)/_0xbd277f,_0x22c517=Math['min'](0x1,Math[_0x1e7267(0x370)](0x0,_0xe16b7b)),_0x47aa5b=_0x5bdc50[_0x1e7267(0x12a)]+_0x22c517*_0x3265ca,_0x50eabe=_0x5bdc50[_0x1e7267(0x408)]+_0x22c517*_0x3325c4;return{'axis':_0x5bdc50[_0x1e7267(0x30d)],'distance':Math[_0x1e7267(0x2e1)](_0x23272b-_0x47aa5b,_0x2f169a-_0x50eabe),'normalizedPosition':_0x22c517};},eventViewportPoint=(_0x4c09ce,_0x3fa344,_0x2f9aec)=>{const _0x54655a=_0x40c362;let _0x48ec04=_0x3fa344[_0x54655a(0x132)]();return[_0x48ec04[_0x54655a(0x3a7)]===0x0?0x0:(_0x4c09ce[_0x54655a(0x257)]-_0x48ec04[_0x54655a(0x333)])*_0x2f9aec['viewportWidth']/_0x48ec04[_0x54655a(0x3a7)],_0x48ec04[_0x54655a(0x2b1)]===0x0?0x0:(_0x4c09ce[_0x54655a(0x3ea)]-_0x48ec04[_0x54655a(0x12f)])*_0x2f9aec[_0x54655a(0x137)]/_0x48ec04[_0x54655a(0x2b1)]];},realAxisPosition=(_0x229c96,_0x58819d,_0x5045c2)=>{const _0x1d1ded=_0x40c362;let _0x45985f=_0x229c96['axisDefinitions'];return normalizedToVolumeAxisValue(_0x58819d==='x'?_0x45985f[_0x1d1ded(0x40d)]:_0x58819d==='y'?_0x45985f['yAxis']:_0x45985f[_0x1d1ded(0x2e5)],_0x5045c2);};var SliceInteractionController=class{[_0x40c362(0x410)];['state'];[_0x40c362(0x245)];[_0x40c362(0x1a6)];[_0x40c362(0x3af)];[_0x40c362(0x200)];[_0x40c362(0x142)];[_0x40c362(0x19d)]=null;['previousAxis']=null;[_0x40c362(0x331)]=!0x1;constructor(_0xa062e9,_0x2c1362,_0x1a5d3c,_0x49e1b6={}){const _0x7bd7d=_0x40c362;this[_0x7bd7d(0x410)]=_0xa062e9,this[_0x7bd7d(0x3d9)]=_0x2c1362,this[_0x7bd7d(0x245)]=_0x1a5d3c,this[_0x7bd7d(0x1a6)]=_0x49e1b6['hitTolerancePixels']??0xa,this['axisHysteresis']=_0x49e1b6[_0x7bd7d(0x211)]??0x4,this[_0x7bd7d(0x200)]=_0x49e1b6[_0x7bd7d(0x200)],this[_0x7bd7d(0x142)]=_0x49e1b6[_0x7bd7d(0x142)];}[_0x40c362(0x404)](){const _0x1ca3e6=_0x40c362;this[_0x1ca3e6(0x331)]||(this[_0x1ca3e6(0x331)]=!0x0,this[_0x1ca3e6(0x410)][_0x1ca3e6(0x3c2)](_0x1ca3e6(0x2a8),this[_0x1ca3e6(0x1e5)],!0x0),this[_0x1ca3e6(0x410)][_0x1ca3e6(0x3c2)](_0x1ca3e6(0x26e),this[_0x1ca3e6(0x292)],!0x0),this[_0x1ca3e6(0x410)]['addEventListener']('pointerleave',this['handlePointerLeave'],!0x0),window[_0x1ca3e6(0x3c2)](_0x1ca3e6(0x26e),this[_0x1ca3e6(0x3c3)],!0x0),window[_0x1ca3e6(0x3c2)](_0x1ca3e6(0x13e),this[_0x1ca3e6(0x25f)],!0x0),window[_0x1ca3e6(0x3c2)](_0x1ca3e6(0x16e),this[_0x1ca3e6(0x25f)],!0x0));}[_0x40c362(0x25a)](_0x2957bc,_0x5f1e90){const _0x2c5ace=_0x40c362;let _0x22f92c=this[_0x2c5ace(0x3d9)][_0x2c5ace(0x15e)]['find'](_0x12c7de=>_0x12c7de['id']===_0x2957bc);_0x22f92c&&(this[_0x2c5ace(0x19d)]={'kind':_0x2c5ace(0x3df),'axis':_0x22f92c[_0x2c5ace(0x30d)],'pointerId':_0x5f1e90[_0x2c5ace(0x271)],'sliceId':_0x2957bc,'startX':_0x5f1e90[_0x2c5ace(0x257)],'startY':_0x5f1e90[_0x2c5ace(0x3ea)],'moved':!0x1},this[_0x2c5ace(0x200)]?.(),_0x5f1e90['preventDefault'](),_0x5f1e90[_0x2c5ace(0x3cd)]());}[_0x40c362(0x14d)](){const _0x492ea8=_0x40c362;this[_0x492ea8(0x331)]&&(this[_0x492ea8(0x331)]=!0x1,this[_0x492ea8(0x410)][_0x492ea8(0x2cf)](_0x492ea8(0x2a8),this[_0x492ea8(0x1e5)],!0x0),this[_0x492ea8(0x410)][_0x492ea8(0x2cf)]('pointermove',this[_0x492ea8(0x292)],!0x0),this[_0x492ea8(0x410)]['removeEventListener'](_0x492ea8(0x2f6),this['handlePointerLeave'],!0x0),window[_0x492ea8(0x2cf)](_0x492ea8(0x26e),this[_0x492ea8(0x3c3)],!0x0),window[_0x492ea8(0x2cf)](_0x492ea8(0x13e),this[_0x492ea8(0x25f)],!0x0),window['removeEventListener'](_0x492ea8(0x16e),this[_0x492ea8(0x25f)],!0x0),this[_0x492ea8(0x19d)]&&this[_0x492ea8(0x142)]?.(),this['activePointer']=null,this[_0x492ea8(0x17d)]=null,this[_0x492ea8(0x3d9)][_0x492ea8(0x2fc)]());}[_0x40c362(0x1b8)](_0xaa2843,_0xa16ea6){const _0x5b3d1a=_0x40c362;let _0x3cc815=this['getFrame']();if(!_0x3cc815)return null;let [_0x1d10ad,_0x503882]=eventViewportPoint(_0xaa2843,this['element'],_0x3cc815),_0x507213=this[_0x5b3d1a(0x3d9)][_0x5b3d1a(0x144)];if(_0x507213===null)return null;let _0x1cc03c=(_0xa16ea6?[_0xa16ea6]:_0x507213===_0x5b3d1a(0x344)?['x','y','z']:[_0x507213])[_0x5b3d1a(0x358)](_0x2fc797=>projectAxis(_0x2fc797,_0x3cc815))['filter'](_0x61add8=>_0x61add8!==null)[_0x5b3d1a(0x358)](_0x1cc056=>hitProjectedAxis(_0x1cc056,_0x1d10ad,_0x503882));if(_0x1cc03c[_0x5b3d1a(0x3e0)]===0x0)return null;_0x1cc03c['sort']((_0x3ddcad,_0xd4ec8e)=>_0x3ddcad['distance']-_0xd4ec8e['distance']);let _0x2b4c5b=_0x1cc03c[0x0];if(!_0xa16ea6&&this[_0x5b3d1a(0x17d)]){let _0x184ce4=_0x1cc03c[_0x5b3d1a(0x40c)](_0x42cc0f=>_0x42cc0f[_0x5b3d1a(0x30d)]===this[_0x5b3d1a(0x17d)]);_0x184ce4&&_0x184ce4[_0x5b3d1a(0x39e)]<=_0x2b4c5b['distance']+this['axisHysteresis']&&(_0x2b4c5b=_0x184ce4);}return!_0xa16ea6&&_0x2b4c5b[_0x5b3d1a(0x39e)]>this['hitTolerance']?null:_0x2b4c5b;}[_0x40c362(0x361)](_0x1add33,_0x436831){const _0xfb469a=_0x40c362;let _0x1be520=realAxisPosition(this[_0xfb469a(0x3d9)],_0x1add33[_0xfb469a(0x30d)],_0x1add33['normalizedPosition']);_0x436831?this[_0xfb469a(0x3d9)]['updateLockedSlice'](_0x436831,_0x1be520):this[_0xfb469a(0x3d9)]['updatePreview'](_0x1add33[_0xfb469a(0x30d)],_0x1be520),this[_0xfb469a(0x17d)]=_0x1add33[_0xfb469a(0x30d)];}[_0x40c362(0x1e5)]=_0x4974b4=>{const _0x5ef4be=_0x40c362;if(_0x4974b4[_0x5ef4be(0x1b4)]!==0x0||this[_0x5ef4be(0x19d)])return;let _0x4fd0ce=this['findAxisHit'](_0x4974b4);_0x4fd0ce&&(this[_0x5ef4be(0x361)](_0x4fd0ce),this['activePointer']={'kind':'preview','axis':_0x4fd0ce['axis'],'pointerId':_0x4974b4['pointerId'],'startX':_0x4974b4['clientX'],'startY':_0x4974b4[_0x5ef4be(0x3ea)],'moved':!0x1},this[_0x5ef4be(0x200)]?.(),this[_0x5ef4be(0x410)]['setPointerCapture']?.(_0x4974b4[_0x5ef4be(0x271)]),_0x4974b4[_0x5ef4be(0x1fd)](),_0x4974b4[_0x5ef4be(0x3cd)]());};[_0x40c362(0x292)]=_0x596d42=>{const _0x3682c3=_0x40c362;if(this[_0x3682c3(0x19d)])return;let _0xe772c6=this[_0x3682c3(0x1b8)](_0x596d42);if(!_0xe772c6){this[_0x3682c3(0x17d)]=null,this[_0x3682c3(0x3d9)][_0x3682c3(0x2fc)]();return;}this[_0x3682c3(0x361)](_0xe772c6);};['handleWindowPointerMove']=_0x32fbd1=>{const _0x4743bc=_0x40c362;let _0xedc83b=this[_0x4743bc(0x19d)];if(!_0xedc83b||_0xedc83b[_0x4743bc(0x271)]!==_0x32fbd1[_0x4743bc(0x271)])return;let _0x53ec1e=this[_0x4743bc(0x1b8)](_0x32fbd1,_0xedc83b['axis']);_0x53ec1e&&(Math['hypot'](_0x32fbd1[_0x4743bc(0x257)]-_0xedc83b['startX'],_0x32fbd1[_0x4743bc(0x3ea)]-_0xedc83b[_0x4743bc(0x408)])>0x4&&(_0xedc83b[_0x4743bc(0x412)]=!0x0),this[_0x4743bc(0x361)](_0x53ec1e,_0xedc83b[_0x4743bc(0x1d7)]),_0x32fbd1[_0x4743bc(0x1fd)](),_0x32fbd1[_0x4743bc(0x3cd)]());};[_0x40c362(0x25f)]=_0x351eab=>{const _0xd44b08=_0x40c362;let _0x442291=this[_0xd44b08(0x19d)];!_0x442291||_0x442291[_0xd44b08(0x271)]!==_0x351eab[_0xd44b08(0x271)]||(_0x442291['kind']===_0xd44b08(0x166)&&!_0x442291['moved']&&this['state'][_0xd44b08(0x346)](),this[_0xd44b08(0x410)][_0xd44b08(0x1fb)]?.(_0x351eab['pointerId'])&&this[_0xd44b08(0x410)]['releasePointerCapture'](_0x351eab[_0xd44b08(0x271)]),this[_0xd44b08(0x19d)]=null,this[_0xd44b08(0x142)]?.(),_0x351eab[_0xd44b08(0x1fd)](),_0x351eab[_0xd44b08(0x3cd)]());};[_0x40c362(0x182)]=()=>{const _0x4e112b=_0x40c362;this[_0x4e112b(0x19d)]||this[_0x4e112b(0x3d9)][_0x4e112b(0x2fc)]();};};const axisLabel=_0xd2fc1d=>_0xd2fc1d[_0x40c362(0x402)](),defaultFormatPosition=(_0x40bf4e,_0x361bae)=>axisLabel(_0x40bf4e)+'\x20'+Number(_0x361bae[_0x40c362(0x42c)](0x4)),getAxisDefinition=(_0x2b5c8f,_0x461a10)=>{const _0x59d307=_0x40c362;let _0x339ec6=_0x2b5c8f['axisDefinitions'];return _0x461a10==='x'?_0x339ec6['xAxis']:_0x461a10==='y'?_0x339ec6[_0x59d307(0x368)]:_0x339ec6[_0x59d307(0x2e5)];},markerModelPoint=(_0x4735e9,_0x298d66)=>{const _0x1f693f=_0x40c362;let _0x2ffc17=volumeAxisValueToNormalized(getAxisDefinition(_0x4735e9,_0x298d66[_0x1f693f(0x30d)]),_0x298d66[_0x1f693f(0x36f)]);return _0x298d66[_0x1f693f(0x30d)]==='x'?[_0x2ffc17,0x0,0x0]:_0x298d66['axis']==='y'?[0x0,_0x2ffc17,0x0]:[0x0,0x0,_0x2ffc17];},applyMarkerBaseStyle=_0x40e95d=>{const _0x3c3a4b=_0x40c362;_0x40e95d[_0x3c3a4b(0x3be)][_0x3c3a4b(0x36f)]=_0x3c3a4b(0x353),_0x40e95d[_0x3c3a4b(0x3be)][_0x3c3a4b(0x34b)]='1',_0x40e95d[_0x3c3a4b(0x3be)]['display']=_0x3c3a4b(0x394),_0x40e95d[_0x3c3a4b(0x3be)]['alignItems']='center',_0x40e95d[_0x3c3a4b(0x3be)]['gap']=_0x3c3a4b(0x284),_0x40e95d[_0x3c3a4b(0x3be)][_0x3c3a4b(0x2b6)]=_0x3c3a4b(0x2a4),_0x40e95d[_0x3c3a4b(0x3be)][_0x3c3a4b(0x127)]=_0x3c3a4b(0x2cc),_0x40e95d['style'][_0x3c3a4b(0x1c9)]=_0x3c3a4b(0x284),_0x40e95d[_0x3c3a4b(0x3be)]['color']='#fff',_0x40e95d[_0x3c3a4b(0x3be)][_0x3c3a4b(0x32b)]='rgb(17\x2024\x2039\x20/\x2082%)',_0x40e95d[_0x3c3a4b(0x3be)][_0x3c3a4b(0x366)]=_0x3c3a4b(0x196),_0x40e95d[_0x3c3a4b(0x3be)][_0x3c3a4b(0x206)]=_0x3c3a4b(0x1fc),_0x40e95d['style'][_0x3c3a4b(0x26c)]=_0x3c3a4b(0x272),_0x40e95d[_0x3c3a4b(0x3be)][_0x3c3a4b(0x1c6)]=_0x3c3a4b(0x316),_0x40e95d[_0x3c3a4b(0x3be)][_0x3c3a4b(0x39b)]=_0x3c3a4b(0x316);},createDeleteButton=()=>{const _0x1ef755=_0x40c362;let _0x422c77=document[_0x1ef755(0x328)](_0x1ef755(0x1b4));return _0x422c77['type']=_0x1ef755(0x1b4),_0x422c77[_0x1ef755(0x291)]='×',_0x422c77['setAttribute'](_0x1ef755(0x1b0),_0x1ef755(0x34f)),_0x422c77[_0x1ef755(0x3be)][_0x1ef755(0x2b6)]=_0x1ef755(0x30a),_0x422c77[_0x1ef755(0x3be)][_0x1ef755(0x127)]='0',_0x422c77[_0x1ef755(0x3be)]['color']=_0x1ef755(0x20f),_0x422c77[_0x1ef755(0x3be)]['background']=_0x1ef755(0x3c4),_0x422c77[_0x1ef755(0x3be)][_0x1ef755(0x133)]='pointer',_0x422c77;};var SliceMarkerOverlay=class{[_0x40c362(0x167)];[_0x40c362(0x3d9)];['getFrame'];[_0x40c362(0x3d1)];[_0x40c362(0x356)];['markers']=new Map();[_0x40c362(0x243)];['unsubscribe'];[_0x40c362(0x232)]=null;constructor(_0x597d01,_0x45b53a,_0x24a09a,_0x24ffb5={}){const _0x25c67e=_0x40c362;this[_0x25c67e(0x167)]=_0x597d01,this[_0x25c67e(0x3d9)]=_0x45b53a,this['getFrame']=_0x24a09a,this[_0x25c67e(0x3d1)]=_0x24ffb5[_0x25c67e(0x3d1)],this['formatPosition']=_0x24ffb5[_0x25c67e(0x356)]??defaultFormatPosition,this[_0x25c67e(0x243)]=_0x597d01['style'][_0x25c67e(0x36f)],getComputedStyle(_0x597d01)[_0x25c67e(0x36f)]===_0x25c67e(0x2ea)&&(_0x597d01[_0x25c67e(0x3be)][_0x25c67e(0x36f)]=_0x25c67e(0x12c)),this[_0x25c67e(0x286)]=_0x45b53a[_0x25c67e(0x1f1)](()=>this[_0x25c67e(0x417)]());}[_0x40c362(0x417)](){const _0x11abb3=_0x40c362;let _0x4d358f=this[_0x11abb3(0x3d9)]['snapshot'];this['syncPreview'](_0x4d358f[_0x11abb3(0x166)]),this['syncLockedMarkers'](_0x4d358f[_0x11abb3(0x15e)]);let _0x465dc2=this[_0x11abb3(0x245)]();if(!_0x465dc2){this[_0x11abb3(0x3ef)]();return;}_0x4d358f[_0x11abb3(0x166)]&&this[_0x11abb3(0x232)]&&this['positionMarker'](this[_0x11abb3(0x232)],_0x4d358f['preview'],_0x465dc2);for(let _0x4a57e7 of _0x4d358f['lockedSlices']){let _0x2a4070=this['markers'][_0x11abb3(0x1e4)](_0x4a57e7['id']);_0x2a4070&&this[_0x11abb3(0x1e6)](_0x2a4070,_0x4a57e7,_0x465dc2);}}[_0x40c362(0x14d)](){const _0x3a780d=_0x40c362;this['unsubscribe'](),this[_0x3a780d(0x232)]?.[_0x3a780d(0x180)](),this[_0x3a780d(0x232)]=null;for(let _0x4e3957 of this[_0x3a780d(0x343)][_0x3a780d(0x3bf)]())_0x4e3957[_0x3a780d(0x180)]();this[_0x3a780d(0x343)][_0x3a780d(0x16a)](),this[_0x3a780d(0x167)][_0x3a780d(0x3be)][_0x3a780d(0x36f)]=this[_0x3a780d(0x243)];}[_0x40c362(0x160)](_0x3a16af){const _0x1266a1=_0x40c362;if(!_0x3a16af){this[_0x1266a1(0x232)]?.[_0x1266a1(0x180)](),this[_0x1266a1(0x232)]=null;return;}this[_0x1266a1(0x232)]||(this[_0x1266a1(0x232)]=document[_0x1266a1(0x328)](_0x1266a1(0x12b)),applyMarkerBaseStyle(this['previewMarker']),this[_0x1266a1(0x232)][_0x1266a1(0x3be)][_0x1266a1(0x325)]=_0x1266a1(0x316),this[_0x1266a1(0x232)][_0x1266a1(0x3be)][_0x1266a1(0x347)]='0.72',this[_0x1266a1(0x167)][_0x1266a1(0x2af)](this[_0x1266a1(0x232)])),this[_0x1266a1(0x232)]['textContent']=this[_0x1266a1(0x356)](_0x3a16af['axis'],_0x3a16af['position']);}[_0x40c362(0x406)](_0x3b895e){const _0x4b1f04=_0x40c362;let _0x507d7b=new Set(_0x3b895e[_0x4b1f04(0x358)](_0x2c4b9a=>_0x2c4b9a['id']));for(let [_0x3305a3,_0x232833]of this['markers'])_0x507d7b['has'](_0x3305a3)||(_0x232833[_0x4b1f04(0x180)](),this[_0x4b1f04(0x343)][_0x4b1f04(0x422)](_0x3305a3));for(let _0x3b91b9 of _0x3b895e){let _0x22887d=this['markers'][_0x4b1f04(0x1e4)](_0x3b91b9['id']);_0x22887d||(_0x22887d=this[_0x4b1f04(0x396)](_0x3b91b9['id']),this[_0x4b1f04(0x343)][_0x4b1f04(0x3dc)](_0x3b91b9['id'],_0x22887d),this[_0x4b1f04(0x167)][_0x4b1f04(0x2af)](_0x22887d));let _0x454e5b=_0x22887d[_0x4b1f04(0x3fd)];_0x454e5b&&(_0x454e5b[_0x4b1f04(0x291)]=this[_0x4b1f04(0x356)](_0x3b91b9[_0x4b1f04(0x30d)],_0x3b91b9[_0x4b1f04(0x36f)]));}}[_0x40c362(0x396)](_0x21c589){const _0x4ec827=_0x40c362;let _0x321a70=document[_0x4ec827(0x328)](_0x4ec827(0x12b));applyMarkerBaseStyle(_0x321a70),_0x321a70[_0x4ec827(0x3be)][_0x4ec827(0x133)]='grab',_0x321a70[_0x4ec827(0x2af)](document[_0x4ec827(0x426)](''));let _0x1fc407=createDeleteButton();return _0x1fc407[_0x4ec827(0x3c2)](_0x4ec827(0x2a8),_0x577037=>_0x577037[_0x4ec827(0x3cd)]()),_0x1fc407[_0x4ec827(0x3c2)]('click',_0x57f655=>{const _0x251e77=_0x4ec827;_0x57f655[_0x251e77(0x3cd)](),this['state']['removeSlice'](_0x21c589);}),_0x321a70[_0x4ec827(0x3c2)](_0x4ec827(0x2a8),_0x1bb990=>this[_0x4ec827(0x3d1)]?.['beginLockedSliceDrag'](_0x21c589,_0x1bb990)),_0x321a70[_0x4ec827(0x2af)](_0x1fc407),_0x321a70;}[_0x40c362(0x1e6)](_0x32edab,_0x279bee,_0x3d5ec9){const _0x11c97b=_0x40c362;let _0x585e2f=projectPointToViewport(multiplyMatrices(_0x3d5ec9[_0x11c97b(0x33b)],_0x3d5ec9[_0x11c97b(0x28b)]),markerModelPoint(this[_0x11c97b(0x3d9)],_0x279bee),_0x3d5ec9['viewportWidth'],_0x3d5ec9[_0x11c97b(0x137)]);if(!_0x585e2f||_0x585e2f[0x2]<0x0||_0x585e2f[0x2]>0x1){_0x32edab[_0x11c97b(0x3be)][_0x11c97b(0x28d)]=_0x11c97b(0x316);return;}_0x32edab[_0x11c97b(0x3be)][_0x11c97b(0x28d)]=_0x11c97b(0x394),_0x32edab[_0x11c97b(0x3be)]['left']=_0x585e2f[0x0]+'px',_0x32edab[_0x11c97b(0x3be)][_0x11c97b(0x12f)]=_0x585e2f[0x1]+'px';}[_0x40c362(0x3ef)](){const _0x27ff60=_0x40c362;this['previewMarker']&&(this['previewMarker'][_0x27ff60(0x3be)]['display']=_0x27ff60(0x316));for(let _0x4115dd of this[_0x27ff60(0x343)][_0x27ff60(0x3bf)]())_0x4115dd[_0x27ff60(0x3be)][_0x27ff60(0x28d)]=_0x27ff60(0x316);}};const clamp=(_0x2ab4db,_0x4d19d9)=>Math[_0x40c362(0x1de)](_0x4d19d9-0x1,Math[_0x40c362(0x370)](0x0,_0x2ab4db)),createPhysicalBrickValues=(_0x1a09f3,_0x19782e,_0x4c0ff9,_0x21b182)=>{const _0x2966a3=_0x40c362;validateVolumeChunk(_0x1a09f3,_0x21b182,_0x4c0ff9[_0x2966a3(0x1cb)]);let _0x3b9cba=_0x19782e[_0x2966a3(0x3a7)]+_0x19782e[_0x2966a3(0x1cc)]*0x2,_0x10be19=_0x19782e['height']+_0x19782e[_0x2966a3(0x1cc)]*0x2,_0x4112b4=_0x19782e[_0x2966a3(0x424)]+_0x19782e['halo']*0x2,_0x4aecef=new Float32Array(_0x3b9cba*_0x10be19*_0x4112b4);for(let _0x545b0b=0x0;_0x545b0b<_0x4112b4;_0x545b0b+=0x1){let _0x597ffa=clamp(_0x4c0ff9[_0x2966a3(0x23f)][_0x2966a3(0x380)]+_0x545b0b-_0x19782e[_0x2966a3(0x1cc)],_0x1a09f3[_0x2966a3(0x2e5)][_0x2966a3(0x269)])-_0x21b182['range'][_0x2966a3(0x380)];for(let _0x523022=0x0;_0x523022<_0x10be19;_0x523022+=0x1){let _0x2c35e0=clamp(_0x4c0ff9[_0x2966a3(0x23f)][_0x2966a3(0x111)]+_0x523022-_0x19782e[_0x2966a3(0x1cc)],_0x1a09f3[_0x2966a3(0x368)][_0x2966a3(0x269)])-_0x21b182['range']['levelStart'];for(let _0x34a7eb=0x0;_0x34a7eb<_0x3b9cba;_0x34a7eb+=0x1){let _0x41a57d=clamp(_0x4c0ff9[_0x2966a3(0x23f)][_0x2966a3(0x223)]+_0x34a7eb-_0x19782e[_0x2966a3(0x1cc)],_0x1a09f3[_0x2966a3(0x40d)][_0x2966a3(0x269)])-_0x21b182[_0x2966a3(0x268)][_0x2966a3(0x223)];_0x4aecef[(_0x545b0b*_0x10be19+_0x523022)*_0x3b9cba+_0x34a7eb]=_0x21b182[_0x2966a3(0x3bf)][(_0x597ffa*_0x21b182[_0x2966a3(0x2b1)]+_0x2c35e0)*_0x21b182[_0x2966a3(0x3a7)]+_0x41a57d];}}}return _0x4aecef;},normalizeColorStops=_0x501aae=>{const _0x117266=_0x40c362;if(_0x501aae[_0x117266(0x3e0)]===0x0)throw Error(_0x117266(0x1d1));return _0x501aae[_0x117266(0x358)]((_0x5a4613,_0x13b382)=>{const _0x5cb1ee=_0x117266;if(Number[_0x5cb1ee(0x3a6)](_0x5a4613[_0x5cb1ee(0x1de)])||Number[_0x5cb1ee(0x3a6)](_0x5a4613[_0x5cb1ee(0x370)]))throw TypeError('第'+(_0x13b382+0x1)+_0x5cb1ee(0x369));if(_0x5a4613[_0x5cb1ee(0x1de)]>=_0x5a4613[_0x5cb1ee(0x370)])throw Error('第'+(_0x13b382+0x1)+_0x5cb1ee(0x41c));return{'min':_0x5a4613[_0x5cb1ee(0x1de)],'max':_0x5a4613[_0x5cb1ee(0x370)],'color':parseRasterColor(_0x5a4613[_0x5cb1ee(0x21e)])};})[_0x117266(0x3f9)]((_0x3d50d3,_0x6fe452)=>_0x3d50d3[_0x117266(0x1de)]-_0x6fe452['min']);},parseRasterColor=_0x360f61=>{const _0x21e5d7=_0x40c362;let _0x7f2490=_0x360f61[_0x21e5d7(0x363)]()[_0x21e5d7(0x2e7)]();if(_0x7f2490[_0x21e5d7(0x3c0)]('#'))return parseHexColor(_0x7f2490);if(_0x7f2490[_0x21e5d7(0x3c0)](_0x21e5d7(0x12e)))return parseRgbColor(_0x7f2490,!0x0);if(_0x7f2490[_0x21e5d7(0x3c0)](_0x21e5d7(0x15d)))return parseRgbColor(_0x7f2490,!0x1);throw Error(_0x21e5d7(0x19e)+_0x360f61);},parseHexColor=_0x2fc9ea=>{const _0x5b5cc4=_0x40c362;if(_0x2fc9ea['length']===0x4)return normalizeRgb(Number[_0x5b5cc4(0x383)](''+_0x2fc9ea[0x1]+_0x2fc9ea[0x1],0x10),Number[_0x5b5cc4(0x383)](''+_0x2fc9ea[0x2]+_0x2fc9ea[0x2],0x10),Number[_0x5b5cc4(0x383)](''+_0x2fc9ea[0x3]+_0x2fc9ea[0x3],0x10),0x1);if(_0x2fc9ea['length']===0x7)return normalizeRgb(Number[_0x5b5cc4(0x383)](_0x2fc9ea[_0x5b5cc4(0x1f7)](0x1,0x3),0x10),Number[_0x5b5cc4(0x383)](_0x2fc9ea[_0x5b5cc4(0x1f7)](0x3,0x5),0x10),Number['parseInt'](_0x2fc9ea[_0x5b5cc4(0x1f7)](0x5,0x7),0x10),0x1);throw Error(_0x5b5cc4(0x267)+_0x2fc9ea);},parseRgbColor=(_0x199897,_0x461618)=>{const _0x3065e4=_0x40c362;let _0xf30e0b=_0x199897[_0x3065e4(0x273)](/^rgba?\(([^)]+)\)$/);if(!_0xf30e0b)throw Error(_0x3065e4(0x38d)+_0x199897);let _0x2f9182=_0xf30e0b[0x1]['split'](',')[_0x3065e4(0x358)](_0x21dbf0=>_0x21dbf0[_0x3065e4(0x363)]()),_0x521c7d=_0x461618?0x4:0x3;if(_0x2f9182['length']!==_0x521c7d)throw Error(_0x3065e4(0x3da)+_0x199897);return normalizeRgb(Number(_0x2f9182[0x0]),Number(_0x2f9182[0x1]),Number(_0x2f9182[0x2]),_0x461618?Number(_0x2f9182[0x3]):0x1);},normalizeRgb=(_0x3441eb,_0x58f242,_0x1399b4,_0x2fef2e)=>{const _0x34673c=_0x40c362;if(!isValidRgbChannel(_0x3441eb)||!isValidRgbChannel(_0x58f242)||!isValidRgbChannel(_0x1399b4))throw Error('RGB\x20颜色通道必须在\x200\x20~\x20255\x20之间');if(!Number[_0x34673c(0x298)](_0x2fef2e)||_0x2fef2e<0x0||_0x2fef2e>0x1)throw Error(_0x34673c(0x304));return[_0x3441eb/0xff,_0x58f242/0xff,_0x1399b4/0xff,_0x2fef2e];},isValidRgbChannel=_0x2fc82e=>Number['isFinite'](_0x2fc82e)&&_0x2fc82e>=0x0&&_0x2fc82e<=0xff,validateStops=_0x29cbee=>{const _0xd844e6=_0x40c362;if(_0x29cbee[_0xd844e6(0x3e0)]===0x0)throw Error(_0xd844e6(0x392));let _0x2cde5e=-0x1/0x0;for(let _0xef854b of _0x29cbee){if(!Number['isFinite'](_0xef854b[_0xd844e6(0x13f)])||_0xef854b[_0xd844e6(0x13f)]<=_0x2cde5e)throw Error(_0xd844e6(0x29c));if(!Number[_0xd844e6(0x298)](_0xef854b['opacity'])||_0xef854b['opacity']<0x0||_0xef854b[_0xd844e6(0x347)]>0x1)throw Error(_0xd844e6(0x131));_0x2cde5e=_0xef854b['value'];}},findTransferInterval=(_0x35a5f9,_0x3760d9)=>{const _0x43f395=_0x40c362;if(_0x35a5f9<=_0x3760d9[0x0])return[0x0,0x0,0x0];for(let _0x26078d=0x1;_0x26078d<_0x3760d9[_0x43f395(0x3e0)];_0x26078d+=0x1)if(_0x35a5f9<=_0x3760d9[_0x26078d]){let _0x2508c1=_0x3760d9[_0x26078d]-_0x3760d9[_0x26078d-0x1];return[_0x26078d-0x1,_0x26078d,_0x2508c1===0x0?0x0:Math[_0x43f395(0x1de)](0x1,Math[_0x43f395(0x370)](0x0,(_0x35a5f9-_0x3760d9[_0x26078d-0x1])/_0x2508c1))];}let _0x162ac7=_0x3760d9['length']-0x1;return[_0x162ac7,_0x162ac7,0x0];},prepareWebgpuVolumeTransfer=(_0x135972,_0x24f432)=>{const _0x2dd434=_0x40c362;validateStops(_0x24f432);let _0x5a467f=normalizeColorStops([..._0x135972]);return{'colorStops':_0x5a467f[_0x2dd434(0x15c)]((_0x190eca,_0x51ff86)=>{const _0x3b7260=_0x2dd434;let _0x40032b=_0x5a467f[Math[_0x3b7260(0x1de)](_0x51ff86+0x1,_0x5a467f[_0x3b7260(0x3e0)]-0x1)][_0x3b7260(0x21e)];return[{'value':_0x190eca[_0x3b7260(0x1de)],'color':_0x190eca[_0x3b7260(0x21e)]},{'value':_0x190eca[_0x3b7260(0x370)],'color':_0x40032b}];}),'opacityStops':_0x24f432[_0x2dd434(0x358)](_0x49edf4=>({..._0x49edf4}))};},sampleVolumeTransferColor=(_0x5aa887,_0x153e67,_0x1a220c,_0x4d427c)=>{const _0x3ef56f=_0x40c362;if(!Number['isFinite'](_0x5aa887))return[0x0,0x0,0x0,0x0];let [_0x152edf,_0x3af124,_0x43ecd1]=findTransferInterval(_0x5aa887,_0x153e67[_0x3ef56f(0x358)](_0x356e64=>_0x356e64['value'])),_0x1cbf87=_0x153e67[_0x152edf],_0x34ae29=_0x153e67[_0x3af124],_0x1e26a9=_0x4d427c==='step'?0x0:_0x43ecd1;return[_0x1cbf87['color'][0x0]+(_0x34ae29['color'][0x0]-_0x1cbf87[_0x3ef56f(0x21e)][0x0])*_0x1e26a9,_0x1cbf87[_0x3ef56f(0x21e)][0x1]+(_0x34ae29['color'][0x1]-_0x1cbf87['color'][0x1])*_0x1e26a9,_0x1cbf87[_0x3ef56f(0x21e)][0x2]+(_0x34ae29[_0x3ef56f(0x21e)][0x2]-_0x1cbf87[_0x3ef56f(0x21e)][0x2])*_0x1e26a9,(_0x1cbf87['color'][0x3]+(_0x34ae29[_0x3ef56f(0x21e)][0x3]-_0x1cbf87[_0x3ef56f(0x21e)][0x3])*_0x1e26a9)*_0x1a220c];},sampleVolumeTransferOpacity=(_0x3e301e,_0x608b5a,_0x4af671)=>{const _0x531909=_0x40c362;if(!Number[_0x531909(0x298)](_0x3e301e))return 0x0;let [_0x4d663f,_0x427ac9,_0x2928df]=findTransferInterval(_0x3e301e,_0x608b5a['map'](_0x3d130b=>_0x3d130b[_0x531909(0x13f)])),_0x170f72=_0x4af671===_0x531909(0x390)?0x0:_0x2928df;return _0x608b5a[_0x4d663f]['opacity']+(_0x608b5a[_0x427ac9]['opacity']-_0x608b5a[_0x4d663f][_0x531909(0x347)])*_0x170f72;},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=_0x151e72=>Math[_0x40c362(0x1de)](0x1,Math[_0x40c362(0x370)](0x0,_0x151e72)),qualityStepLength=_0x14c0ee=>_0x14c0ee==='performance'?0.012:_0x14c0ee===_0x40c362(0x2c7)?0.0025:_0x14c0ee==='balanced'?0.005:0.006,qualityUploadCount=_0x2fb8c4=>_0x2fb8c4===_0x40c362(0x2a0)?0x8:_0x2fb8c4===_0x40c362(0x2c7)?0x2:0x4,nextAutoQuality=(_0x1ec102,_0x28263e)=>_0x28263e>0x18?_0x1ec102===_0x40c362(0x2c7)?_0x40c362(0x20c):_0x40c362(0x2a0):_0x28263e<0xe?_0x1ec102===_0x40c362(0x2a0)?_0x40c362(0x20c):_0x40c362(0x2c7):_0x1ec102,validatePositiveOption=(_0x4528dd,_0x49012e)=>{const _0xc483fd=_0x40c362;if(!Number[_0xc483fd(0x298)](_0x4528dd)||_0x4528dd<=0x0)throw Error(_0x49012e+_0xc483fd(0x155)+_0x49012e+'\x20必须是大于\x200\x20的有限数。');return _0x4528dd;},normalizeClipBox=(_0x45045f,_0x35924f)=>{const _0x262d78=_0x40c362;if(!_0x35924f)return{'minimum':[0x0,0x0,0x0],'maximum':[0x1,0x1,0x1]};let _0x3b3108=clamp01(volumeAxisValueToNormalized(_0x45045f[_0x262d78(0x42a)][_0x262d78(0x40d)],_0x35924f['minX'])),_0x4b9484=clamp01(volumeAxisValueToNormalized(_0x45045f[_0x262d78(0x42a)]['xAxis'],_0x35924f[_0x262d78(0x3c1)])),_0x138ef3=clamp01(volumeAxisValueToNormalized(_0x45045f[_0x262d78(0x42a)]['yAxis'],_0x35924f[_0x262d78(0x3f0)])),_0x3af979=clamp01(volumeAxisValueToNormalized(_0x45045f['metadata'][_0x262d78(0x368)],_0x35924f['maxY'])),_0x46dfd9=clamp01(volumeAxisValueToNormalized(_0x45045f['metadata'][_0x262d78(0x2e5)],_0x35924f[_0x262d78(0x2ce)])),_0x1b5965=clamp01(volumeAxisValueToNormalized(_0x45045f[_0x262d78(0x42a)][_0x262d78(0x2e5)],_0x35924f[_0x262d78(0x151)]));return{'minimum':[Math[_0x262d78(0x1de)](_0x3b3108,_0x4b9484),Math[_0x262d78(0x1de)](_0x138ef3,_0x3af979),Math[_0x262d78(0x1de)](_0x46dfd9,_0x1b5965)],'maximum':[Math[_0x262d78(0x370)](_0x3b3108,_0x4b9484),Math[_0x262d78(0x370)](_0x138ef3,_0x3af979),Math[_0x262d78(0x370)](_0x46dfd9,_0x1b5965)]};},createAxesMesh=()=>({'id':'volume-axes','topology':_0x40c362(0x3b9),'depthMode':_0x40c362(0x17e),'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 _0x4cf262=_0x40c362;let _0x4a6d34=[0.1,0.53,0.56,0.62],_0x87e402=[[0x0,0x0,0x0],[0x1,0x0,0x0],[0x0,0x1,0x0],[0x1,0x1,0x0],[0x0,0x0,0x1],[0x1,0x0,0x1],[0x0,0x1,0x1],[0x1,0x1,0x1]],_0x3d51ab=[[0x0,0x1],[0x0,0x2],[0x1,0x3],[0x2,0x3],[0x4,0x5],[0x4,0x6],[0x5,0x7],[0x6,0x7],[0x0,0x4],[0x1,0x5],[0x2,0x6],[0x3,0x7]],_0x25a951=new Float32Array(_0x3d51ab[_0x4cf262(0x3e0)]*0x2*0x7),_0x563d81=0x0;for(let _0x3e39bc of _0x3d51ab)for(let _0x5258f1 of _0x3e39bc)_0x25a951[_0x4cf262(0x3dc)]([..._0x87e402[_0x5258f1],..._0x4a6d34],_0x563d81),_0x563d81+=0x7;return{'id':_0x4cf262(0x10d),'topology':_0x4cf262(0x3b9),'depthMode':_0x4cf262(0x39c),'vertices':_0x25a951};},createProfileSceneMesh=(_0x1323e6,_0x91d7c3,_0xfb327,_0x2482f9)=>{const _0x43692d=_0x40c362;let _0x5366ee=new Float32Array(_0x1323e6[_0x43692d(0x204)][_0x43692d(0x3e0)]*0x7);for(let _0x105897=0x0;_0x105897<_0x1323e6[_0x43692d(0x204)][_0x43692d(0x3e0)];_0x105897+=0x1){let _0x4f3592=_0x1323e6[_0x43692d(0x204)][_0x105897],_0x151de4=_0x4f3592*0x3,_0x44198b=sampleVolumeTransferOpacity(_0x1323e6[_0x43692d(0x3bf)][_0x4f3592],_0xfb327,_0x2482f9),_0x7a9073=sampleVolumeTransferColor(_0x1323e6[_0x43692d(0x3bf)][_0x4f3592],_0x91d7c3,_0x1323e6[_0x43692d(0x347)]*_0x44198b,_0x2482f9);_0x5366ee[_0x43692d(0x3dc)]([_0x1323e6[_0x43692d(0x32f)][_0x151de4],_0x1323e6[_0x43692d(0x32f)][_0x151de4+0x1],_0x1323e6[_0x43692d(0x32f)][_0x151de4+0x2],_0x7a9073[0x0]*_0x7a9073[0x3],_0x7a9073[0x1]*_0x7a9073[0x3],_0x7a9073[0x2]*_0x7a9073[0x3],_0x7a9073[0x3]],_0x105897*0x7);}return{'id':_0x1323e6['id'],'topology':_0x43692d(0x372),'depthMode':_0x1323e6[_0x43692d(0x373)],'vertices':_0x5366ee};},descriptorDistance=(_0x56c3c7,_0x3ad60b,_0x452d9f)=>{const _0x7b5238=_0x40c362;let _0x8bb57e=(_0x56c3c7[_0x7b5238(0x14a)]['x']+0.5)/_0x3ad60b[_0x7b5238(0x242)],_0x7b46eb=(_0x56c3c7[_0x7b5238(0x14a)]['y']+0.5)/_0x3ad60b[_0x7b5238(0x348)],_0x3be66d=(_0x56c3c7[_0x7b5238(0x14a)]['z']+0.5)/_0x3ad60b[_0x7b5238(0x409)];return Math['hypot'](_0x8bb57e-_0x452d9f[_0x7b5238(0x36f)][0x0],_0x7b46eb-_0x452d9f[_0x7b5238(0x36f)][0x1],_0x3be66d-_0x452d9f['position'][0x2]);},descriptorLogicalIndex=(_0x596b26,_0xdd0225)=>(_0x596b26['coordinate']['z']*_0xdd0225['countY']+_0x596b26['coordinate']['y'])*_0xdd0225[_0x40c362(0x242)]+_0x596b26[_0x40c362(0x14a)]['x'],descriptorContainsSlice=(_0x17976c,_0x2aa535,_0x35f3cc,_0x4ea08a)=>{const _0x4bd0e1=_0x40c362;let _0x1c32f8=_0x35f3cc==='x'?{'start':_0x17976c[_0x4bd0e1(0x23f)]['xStart'],'count':_0x17976c[_0x4bd0e1(0x23f)][_0x4bd0e1(0x27e)],'size':_0x2aa535['metadata']['xAxis']['count']}:_0x35f3cc==='y'?{'start':_0x17976c['coreRange']['levelStart'],'count':_0x17976c[_0x4bd0e1(0x23f)]['levelCount'],'size':_0x2aa535['metadata'][_0x4bd0e1(0x368)]['count']}:{'start':_0x17976c['coreRange'][_0x4bd0e1(0x380)],'count':_0x17976c['coreRange'][_0x4bd0e1(0x255)],'size':_0x2aa535['metadata'][_0x4bd0e1(0x2e5)]['count']};return _0x4ea08a>=_0x1c32f8[_0x4bd0e1(0x2ca)]/_0x1c32f8[_0x4bd0e1(0x1aa)]&&_0x4ea08a<=(_0x1c32f8[_0x4bd0e1(0x2ca)]+_0x1c32f8['count'])/_0x1c32f8[_0x4bd0e1(0x1aa)];},descriptorContainsProfile=(_0x1f7bef,_0x312809,_0x4ebc4e)=>{const _0x2ec87f=_0x40c362;let _0x207ef6=_0x1f7bef[_0x2ec87f(0x23f)][_0x2ec87f(0x223)]/_0x312809['metadata'][_0x2ec87f(0x40d)]['count'],_0x3ad71e=(_0x1f7bef['coreRange'][_0x2ec87f(0x223)]+_0x1f7bef[_0x2ec87f(0x23f)][_0x2ec87f(0x27e)])/_0x312809['metadata']['xAxis'][_0x2ec87f(0x269)],_0x45f7b0=_0x1f7bef[_0x2ec87f(0x23f)]['levelStart']/_0x312809[_0x2ec87f(0x42a)]['yAxis'][_0x2ec87f(0x269)],_0xf475b7=(_0x1f7bef['coreRange'][_0x2ec87f(0x111)]+_0x1f7bef[_0x2ec87f(0x23f)]['levelCount'])/_0x312809[_0x2ec87f(0x42a)][_0x2ec87f(0x368)][_0x2ec87f(0x269)],_0x435bbb=_0x1f7bef[_0x2ec87f(0x23f)][_0x2ec87f(0x380)]/_0x312809['metadata'][_0x2ec87f(0x2e5)]['count'],_0x175eb5=(_0x1f7bef[_0x2ec87f(0x23f)]['sourceYStart']+_0x1f7bef['coreRange']['sourceYCount'])/_0x312809[_0x2ec87f(0x42a)][_0x2ec87f(0x2e5)][_0x2ec87f(0x269)];return _0x4ebc4e['some'](_0x2dacd5=>{const _0x4080d0=_0x2ec87f;let _0x26efe3=volumeAxisValueToNormalized(_0x312809['metadata'][_0x4080d0(0x368)],_0x2dacd5['heights'][0x0]),_0x5a97ef=volumeAxisValueToNormalized(_0x312809[_0x4080d0(0x42a)][_0x4080d0(0x368)],_0x2dacd5[_0x4080d0(0x256)][_0x2dacd5[_0x4080d0(0x256)]['length']-0x1]);if(Math['max'](_0x26efe3,_0x5a97ef)<_0x45f7b0||Math['min'](_0x26efe3,_0x5a97ef)>_0xf475b7)return!0x1;for(let _0x57212d=0x0;_0x57212d<_0x2dacd5[_0x4080d0(0x235)]['length'];_0x57212d+=0x2){let _0x207dc9=volumeAxisValueToNormalized(_0x312809[_0x4080d0(0x42a)][_0x4080d0(0x40d)],_0x2dacd5['path'][_0x57212d]),_0x366ac6=volumeAxisValueToNormalized(_0x312809[_0x4080d0(0x42a)][_0x4080d0(0x2e5)],_0x2dacd5[_0x4080d0(0x235)][_0x57212d+0x1]);if(_0x207dc9>=_0x207ef6&&_0x207dc9<=_0x3ad71e&&_0x366ac6>=_0x435bbb&&_0x366ac6<=_0x175eb5)return!0x0;}return!0x1;});},descriptorDemandPriority=(_0x3a0cac,_0x3135c7,_0x4556b8,_0x4d2de4)=>{const _0x171eb0=_0x40c362;let _0x36785e=_0x4556b8[_0x171eb0(0x166)];if(_0x36785e){let _0x5039e3=_0x36785e['axis']==='x'?_0x3135c7['metadata'][_0x171eb0(0x40d)]:_0x36785e['axis']==='y'?_0x3135c7[_0x171eb0(0x42a)][_0x171eb0(0x368)]:_0x3135c7[_0x171eb0(0x42a)]['zAxis'];if(descriptorContainsSlice(_0x3a0cac,_0x3135c7,_0x36785e[_0x171eb0(0x30d)],volumeAxisValueToNormalized(_0x5039e3,_0x36785e[_0x171eb0(0x36f)])))return 0x0;}for(let _0x214f95 of _0x4556b8[_0x171eb0(0x15e)]){let _0x1a7ef4=_0x214f95[_0x171eb0(0x30d)]==='x'?_0x3135c7[_0x171eb0(0x42a)]['xAxis']:_0x214f95[_0x171eb0(0x30d)]==='y'?_0x3135c7['metadata'][_0x171eb0(0x368)]:_0x3135c7['metadata'][_0x171eb0(0x2e5)];if(_0x214f95[_0x171eb0(0x2f3)]&&descriptorContainsSlice(_0x3a0cac,_0x3135c7,_0x214f95['axis'],volumeAxisValueToNormalized(_0x1a7ef4,_0x214f95['position'])))return 0x1;}return descriptorContainsProfile(_0x3a0cac,_0x3135c7,_0x4d2de4)?0x2:0x3;};var VolumeScene=class VolumeScene{[_0x40c362(0x2e2)]=_0x40c362(0x2c9);['renderer'];['volumeCamera'];[_0x40c362(0x11b)];[_0x40c362(0x27b)];[_0x40c362(0x379)];['eventDisposers']=[];[_0x40c362(0x32e)];[_0x40c362(0x3cf)];[_0x40c362(0x397)];['sliceState'];[_0x40c362(0x215)];[_0x40c362(0x319)];[_0x40c362(0x175)];[_0x40c362(0x2e8)]=[];[_0x40c362(0x391)];['sourceGeneration']=0x0;[_0x40c362(0x197)]=new Set();[_0x40c362(0x280)]=new Map();[_0x40c362(0x2c2)]=new Set();[_0x40c362(0x34d)]=0x0;[_0x40c362(0x275)]=!0x1;['baseModelMatrix'];[_0x40c362(0x149)];[_0x40c362(0x1d8)];['clipBox'];[_0x40c362(0x2c7)];[_0x40c362(0x41e)]=_0x40c362(0x20c);[_0x40c362(0x3f2)]=0x0;['autoFrameIntervalTotal']=0x0;['colorMode'];['pointer']=null;[_0x40c362(0x2bb)];[_0x40c362(0x282)];[_0x40c362(0x27a)];[_0x40c362(0x13b)];[_0x40c362(0x129)];['activeInteractions']=new Set();['renderDirty']=!0x0;[_0x40c362(0x2c1)]=!0x1;[_0x40c362(0x12d)]=0x0;['brickSortCount']=0x0;['pendingSliceSnapshot']=null;[_0x40c362(0x41f)];[_0x40c362(0x1f3)];[_0x40c362(0x2be)];[_0x40c362(0x22c)]=0x0;[_0x40c362(0x28c)]=0x0;[_0x40c362(0x177)]=0x0;[_0x40c362(0x274)]=new Set();[_0x40c362(0x283)]=null;[_0x40c362(0x17b)]=null;constructor(_0x574501,_0x460733){const _0x283b31=_0x40c362;this['renderer']=_0x460733,this[_0x283b31(0x11b)]=_0x574501[_0x283b31(0x11b)],this[_0x283b31(0x379)]=_0x574501[_0x283b31(0x379)]??_0x574501[_0x283b31(0x11b)],this[_0x283b31(0x27b)]=_0x574501['renderMode']??_0x283b31(0x1e2),this[_0x283b31(0x32e)]=_0x574501[_0x283b31(0x32e)],this[_0x283b31(0x391)]=_0x574501[_0x283b31(0x391)]??0x0,this[_0x283b31(0x3cf)]=this[_0x283b31(0x162)](_0x574501),this[_0x283b31(0x397)]=createVolumeBrickDescriptors(this[_0x283b31(0x32e)][_0x283b31(0x42a)],this[_0x283b31(0x3cf)]),this[_0x283b31(0x24a)]=new VolumeCamera({'state':_0x574501[_0x283b31(0x3e2)]??DEFAULT_CAMERA}),this[_0x283b31(0x377)]=this[_0x283b31(0x365)](_0x574501);let _0x332eb8=prepareWebgpuVolumeTransfer(_0x574501[_0x283b31(0x215)],_0x574501['opacityStops']);if(this[_0x283b31(0x215)]=_0x332eb8[_0x283b31(0x215)],this[_0x283b31(0x319)]=_0x574501[_0x283b31(0x215)],this[_0x283b31(0x175)]=_0x574501['opacityStops'],this[_0x283b31(0x1bb)]=_0x574501[_0x283b31(0x28b)]??IDENTITY_MATRIX,this['verticalScale']=validatePositiveOption(_0x574501[_0x283b31(0x149)]??0x1,_0x283b31(0x149)),this['coordinateSystem']=_0x574501['coordinateSystem']??_0x283b31(0x11c),this[_0x283b31(0x1d8)]===_0x283b31(0x428)&&_0x574501[_0x283b31(0x28b)])throw Error('Geographic\x20WGS84\x20volume\x20scenes\x20manage\x20their\x20own\x20model\x20transform.\x20WGS84\x20地理体积场景自行管理模型变换。');this['clipBox']=_0x574501[_0x283b31(0x14c)]??null,this[_0x283b31(0x2c7)]=_0x574501['quality']??'auto',this[_0x283b31(0x2bb)]=_0x574501['navigationMode']??_0x283b31(0x2df),this[_0x283b31(0x282)]=validatePositiveOption(_0x574501[_0x283b31(0x282)]??0x2,_0x283b31(0x282)),this[_0x283b31(0x27a)]=validatePositiveOption(_0x574501[_0x283b31(0x27a)]??0x1,_0x283b31(0x27a)),this[_0x283b31(0x13b)]=validatePositiveOption(_0x574501[_0x283b31(0x13b)]??0.6,_0x283b31(0x13b)),this[_0x283b31(0x129)]=validatePositiveOption(_0x574501[_0x283b31(0x129)]??0x1,'interactionStepScale'),this[_0x283b31(0x2d3)]=_0x574501['colorMode']??_0x283b31(0x1dd),this[_0x283b31(0x41f)]=_0x574501[_0x283b31(0x283)]?.[_0x283b31(0x373)]??_0x283b31(0x39c),this[_0x283b31(0x1f3)]=_0x574501['sliceInteraction']?.[_0x283b31(0x1dc)],this['onSlicesChange']=_0x574501[_0x283b31(0x283)]?.[_0x283b31(0x2be)],this['renderer'][_0x283b31(0x3ba)](()=>this[_0x283b31(0x124)]()),this[_0x283b31(0x31d)][_0x283b31(0x22e)](_0x332eb8[_0x283b31(0x215)],_0x332eb8[_0x283b31(0x175)]);let _0x4838a4=_0x574501[_0x283b31(0x172)]??this['coordinateSystem']==='cartesian';this[_0x283b31(0x31d)]['setAxes'](_0x4838a4?[createBoundsMesh(),createAxesMesh()]:[]),this['renderer'][_0x283b31(0x417)]({'renderMode':_0x574501[_0x283b31(0x21a)]??_0x283b31(0x41b),'colorMode':this[_0x283b31(0x2d3)],'opacity':_0x574501[_0x283b31(0x347)]??0.3,'densityScale':_0x574501['densityScale']??0x1,'stepLength':this['getStepLength'](),'volumeDimFactor':this['sliceState'][_0x283b31(0x23d)]}),this[_0x283b31(0x3fb)](),this[_0x283b31(0x288)](),this[_0x283b31(0x170)](),this[_0x283b31(0x1e7)](_0x574501),this[_0x283b31(0x338)]();}static async[_0x40c362(0x23a)](_0xcf71c0){const _0xd4b3b0=_0x40c362;if(validateVolumeSource(_0xcf71c0['source']),validateVolumeTimeIndex(_0xcf71c0[_0xd4b3b0(0x32e)][_0xd4b3b0(0x42a)],_0xcf71c0['timeIndex']??0x0),(_0xcf71c0[_0xd4b3b0(0x420)]?.['halo']??0x1)!==0x1)throw Error(_0xd4b3b0(0x413));let _0x39aaeb=_0xcf71c0[_0xd4b3b0(0x420)]?.[_0xd4b3b0(0x3d0)]??0x20000000,_0x45818c=new WebgpuVolumeSceneRenderer({'memoryTargetBytes':_0x39aaeb,'memoryHardLimitBytes':_0xcf71c0[_0xd4b3b0(0x420)]?.[_0xd4b3b0(0x2a1)]??_0x39aaeb});await _0x45818c['initialize'](_0xcf71c0[_0xd4b3b0(0x11b)]);let _0x383e63=new VolumeScene(_0xcf71c0,_0x45818c);return _0x383e63['resize'](),_0x383e63[_0xd4b3b0(0x139)](),_0x383e63[_0xd4b3b0(0x27b)]==='managed'&&_0x383e63[_0xd4b3b0(0x2ee)](),_0x383e63;}get[_0x40c362(0x3e2)](){const _0x4ebc78=_0x40c362;return this[_0x4ebc78(0x24a)][_0x4ebc78(0x3d9)];}get[_0x40c362(0x15e)](){const _0x489789=_0x40c362;return this['sliceState'][_0x489789(0x15e)];}get['statistics'](){const _0x42acd4=_0x40c362;let _0x546c39=this[_0x42acd4(0x27b)]===_0x42acd4(0x301)||this[_0x42acd4(0x1a1)]()||performance[_0x42acd4(0x3e7)]()-this['lastSubmittedFrameTimestamp']<=0xfa?this['actualFrameIntervalMilliseconds']:0x0;return{...this[_0x42acd4(0x31d)][_0x42acd4(0x1be)],'pendingBrickCount':this[_0x42acd4(0x280)][_0x42acd4(0x1aa)],'brickScheduleCount':this[_0x42acd4(0x12d)],'brickSortCount':this[_0x42acd4(0x37b)],'actualFrameIntervalMilliseconds':_0x546c39,'estimatedFps':_0x546c39>0x0?0x3e8/_0x546c39:0x0,'effectiveQuality':this[_0x42acd4(0x2e9)](),'effectiveRenderScale':this[_0x42acd4(0x2ec)](),'interactionKind':this[_0x42acd4(0x378)]()};}[_0x40c362(0x417)](_0x4beb1f){const _0x1be243=_0x40c362;_0x4beb1f[_0x1be243(0x3e2)]&&this['setCamera'](_0x4beb1f[_0x1be243(0x3e2)]),_0x4beb1f[_0x1be243(0x28b)]&&(this[_0x1be243(0x1bb)]=[..._0x4beb1f[_0x1be243(0x28b)]]),_0x4beb1f[_0x1be243(0x149)]!==void 0x0&&(this[_0x1be243(0x149)]=validatePositiveOption(_0x4beb1f[_0x1be243(0x149)],_0x1be243(0x149))),_0x4beb1f[_0x1be243(0x14c)]!==void 0x0&&(this[_0x1be243(0x14c)]=_0x4beb1f[_0x1be243(0x14c)]),_0x4beb1f[_0x1be243(0x2c7)]&&(this[_0x1be243(0x2c7)]=_0x4beb1f[_0x1be243(0x2c7)]),_0x4beb1f[_0x1be243(0x2bb)]&&(this[_0x1be243(0x2bb)]=_0x4beb1f['navigationMode']);let _0x16121a=!0x1;if(_0x4beb1f[_0x1be243(0x282)]!==void 0x0&&(this['pixelRatioCap']=validatePositiveOption(_0x4beb1f['pixelRatioCap'],_0x1be243(0x282)),_0x16121a=!0x0),_0x4beb1f[_0x1be243(0x27a)]!==void 0x0&&(this[_0x1be243(0x27a)]=validatePositiveOption(_0x4beb1f[_0x1be243(0x27a)],_0x1be243(0x27a)),_0x16121a=!0x0),_0x4beb1f['interactionRenderScale']!==void 0x0&&(this[_0x1be243(0x13b)]=validatePositiveOption(_0x4beb1f[_0x1be243(0x13b)],_0x1be243(0x13b)),_0x16121a=this['isInteracting']()),_0x4beb1f[_0x1be243(0x129)]!==void 0x0&&(this[_0x1be243(0x129)]=validatePositiveOption(_0x4beb1f[_0x1be243(0x129)],'interactionStepScale')),_0x4beb1f[_0x1be243(0x2d3)]&&(this[_0x1be243(0x2d3)]=_0x4beb1f['colorMode']),_0x4beb1f['colorStops']||_0x4beb1f['opacityStops']){let _0x4d0ef1=prepareWebgpuVolumeTransfer(_0x4beb1f[_0x1be243(0x215)]??this['colorInputs'],_0x4beb1f[_0x1be243(0x175)]??this[_0x1be243(0x175)]);this[_0x1be243(0x215)]=_0x4d0ef1[_0x1be243(0x215)],this[_0x1be243(0x319)]=_0x4beb1f[_0x1be243(0x215)]??this[_0x1be243(0x319)],this[_0x1be243(0x175)]=_0x4beb1f[_0x1be243(0x175)]??this[_0x1be243(0x175)],this['renderer'][_0x1be243(0x22e)](_0x4d0ef1[_0x1be243(0x215)],_0x4d0ef1[_0x1be243(0x175)]),this[_0x1be243(0x2fd)]();}_0x4beb1f[_0x1be243(0x2d3)]&&!_0x4beb1f[_0x1be243(0x215)]&&!_0x4beb1f[_0x1be243(0x175)]&&this[_0x1be243(0x2fd)](),this[_0x1be243(0x31d)][_0x1be243(0x417)]({'renderMode':_0x4beb1f[_0x1be243(0x21a)],'colorMode':_0x4beb1f[_0x1be243(0x2d3)],'opacity':_0x4beb1f[_0x1be243(0x347)],'densityScale':_0x4beb1f[_0x1be243(0x203)],'stepLength':this[_0x1be243(0x24e)]()}),this[_0x1be243(0x288)](),_0x16121a&&this[_0x1be243(0x3cc)](),this[_0x1be243(0x2ee)]();}[_0x40c362(0x2e6)](_0x4d0c1){const _0x45c139=_0x40c362;this[_0x45c139(0x24a)][_0x45c139(0x36e)](_0x4d0c1),this[_0x45c139(0x10e)](),this[_0x45c139(0x2ee)]();}[_0x40c362(0x230)](_0x54de0a){const _0x43a876=_0x40c362;validateVolumeTimeIndex(this['source'][_0x43a876(0x42a)],_0x54de0a),_0x54de0a!==this[_0x43a876(0x391)]&&(this[_0x43a876(0x391)]=_0x54de0a,this[_0x43a876(0x1b9)]());}[_0x40c362(0x143)](_0x4d7b8c){const _0x21920f=_0x40c362;validateVolumeSource(_0x4d7b8c),this[_0x21920f(0x32e)]=_0x4d7b8c,this[_0x21920f(0x391)]=Math[_0x21920f(0x1de)](this[_0x21920f(0x391)],_0x4d7b8c[_0x21920f(0x42a)]['timeCount']-0x1),this['layout']=createVolumeBrickLayout(_0x4d7b8c[_0x21920f(0x42a)],this[_0x21920f(0x3cf)][_0x21920f(0x30c)]),this[_0x21920f(0x397)]=createVolumeBrickDescriptors(_0x4d7b8c[_0x21920f(0x42a)],this[_0x21920f(0x3cf)]),this[_0x21920f(0x377)][_0x21920f(0x33c)](_0x4d7b8c[_0x21920f(0x42a)]),this[_0x21920f(0x3fb)](),this[_0x21920f(0x288)](),this[_0x21920f(0x1b9)](),this['rebuildProfiles'](),this[_0x21920f(0x2ee)]();}[_0x40c362(0x1bd)](_0xbc7a4b){const _0x5a6fb3=_0x40c362;this[_0x5a6fb3(0x2e8)]=_0xbc7a4b,this[_0x5a6fb3(0x2fd)](),this[_0x5a6fb3(0x10e)](),this[_0x5a6fb3(0x2ee)]();}[_0x40c362(0x415)](_0x1c53b3){const _0x2265b9=_0x40c362;this['sliceState'][_0x2265b9(0x355)](_0x1c53b3);}[_0x40c362(0x20d)](_0x1eea42){const _0x273efe=_0x40c362;if(this[_0x273efe(0x275)]||this[_0x273efe(0x1c3)][_0x273efe(0x2c4)](_0x1eea42))return;let _0x315d8=!this[_0x273efe(0x1a1)]();this['activeInteractions'][_0x273efe(0x201)](_0x1eea42),_0x315d8&&(this['lastTimingFrameTimestamp']=0x0,this[_0x273efe(0x3cc)]());}['endInteraction'](_0x4958a1){const _0x4a3d52=_0x40c362;this[_0x4a3d52(0x275)]||!this[_0x4a3d52(0x1c3)][_0x4a3d52(0x422)](_0x4958a1)||this[_0x4a3d52(0x1a1)]()||(this['lastTimingFrameTimestamp']=0x0,this[_0x4a3d52(0x3cc)]());}[_0x40c362(0x32d)](_0x3675a1,_0x1d3d62){const _0x3f06e2=_0x40c362;this[_0x3f06e2(0x377)][_0x3f06e2(0x339)](_0x3675a1,_0x1d3d62);let _0x7f770f=this['sliceState'][_0x3f06e2(0x346)]();if(!_0x7f770f)throw Error(_0x3f06e2(0x40b));return _0x7f770f;}[_0x40c362(0x20e)](_0x229906,_0x1c6695){const _0xbaa4d1=_0x40c362;this[_0xbaa4d1(0x377)][_0xbaa4d1(0x307)](_0x229906,_0x1c6695);}[_0x40c362(0x2de)](_0x9deaf0){const _0xec0680=_0x40c362;this[_0xec0680(0x377)][_0xec0680(0x2de)](_0x9deaf0);}[_0x40c362(0x323)](){const _0x576c23=_0x40c362;this[_0x576c23(0x377)]['clearLockedSlices']();}['resize'](){const _0x16d797=_0x40c362;let _0x389ba2=Math[_0x16d797(0x1de)](window[_0x16d797(0x1f5)]||0x1,this[_0x16d797(0x282)])*this[_0x16d797(0x2ec)](),_0x330753=Math[_0x16d797(0x370)](0x1,Math['round'](this[_0x16d797(0x11b)][_0x16d797(0x310)]*_0x389ba2||this[_0x16d797(0x11b)][_0x16d797(0x3a7)]||0x1)),_0x51ae90=Math[_0x16d797(0x370)](0x1,Math[_0x16d797(0x14b)](this['canvas'][_0x16d797(0x281)]*_0x389ba2||this[_0x16d797(0x11b)][_0x16d797(0x2b1)]||0x1));this[_0x16d797(0x24a)]['setAspect'](_0x330753/_0x51ae90),(this['canvas']['width']!==_0x330753||this[_0x16d797(0x11b)]['height']!==_0x51ae90)&&this['renderer'][_0x16d797(0x3cc)](_0x330753,_0x51ae90),this[_0x16d797(0x2ee)]();}[_0x40c362(0x3ac)](){const _0x311be3=_0x40c362;if(this[_0x311be3(0x275)])return;this[_0x311be3(0x40e)](),this[_0x311be3(0x2e4)]();let _0x2ace03=this[_0x311be3(0x24a)][_0x311be3(0x164)];if(this[_0x311be3(0x31d)][_0x311be3(0x2e6)]({'viewProjection':Array[_0x311be3(0x31f)](_0x2ace03[_0x311be3(0x3a3)]),'inverseViewProjection':Array['from'](_0x2ace03[_0x311be3(0x38e)]),'cameraPosition':this[_0x311be3(0x24a)][_0x311be3(0x3d9)][_0x311be3(0x36f)]}),this['renderer'][_0x311be3(0x417)]({'stepLength':this[_0x311be3(0x24e)]()}),!this[_0x311be3(0x31d)][_0x311be3(0x3ac)]()){this['renderDirty']=!0x0;return;}this[_0x311be3(0x17f)]=!0x1,this[_0x311be3(0x279)](performance[_0x311be3(0x3e7)]()),this[_0x311be3(0x17b)]?.[_0x311be3(0x417)]();}[_0x40c362(0x1c7)](){const _0xc97999=_0x40c362;if(this[_0xc97999(0x275)])return Promise[_0xc97999(0x22b)](Error(_0xc97999(0x400)));this[_0xc97999(0x40e)](),this['flushBrickSchedule']();let _0x3ea477=this[_0xc97999(0x24a)]['matrices'];return this[_0xc97999(0x31d)]['setCamera']({'viewProjection':Array[_0xc97999(0x31f)](_0x3ea477[_0xc97999(0x3a3)]),'inverseViewProjection':Array[_0xc97999(0x31f)](_0x3ea477[_0xc97999(0x38e)]),'cameraPosition':this[_0xc97999(0x24a)]['state'][_0xc97999(0x36f)]}),this[_0xc97999(0x31d)][_0xc97999(0x1c7)]();}[_0x40c362(0x14d)](){const _0x292603=_0x40c362;if(!this['destroyed']){this[_0x292603(0x275)]=!0x0,this['sourceGeneration']+=0x1;for(let _0x2533da of this['requestControllers'])_0x2533da['abort']();this[_0x292603(0x274)][_0x292603(0x16a)](),cancelAnimationFrame(this[_0x292603(0x34d)]),this[_0x292603(0x31d)][_0x292603(0x3ba)](null),this[_0x292603(0x1c2)][_0x292603(0x1cd)](0x0)[_0x292603(0x300)](_0x2ef652=>_0x2ef652()),this[_0x292603(0x31d)][_0x292603(0x14d)](),this['sliceInteraction']?.[_0x292603(0x14d)](),this[_0x292603(0x17b)]?.[_0x292603(0x14d)](),this[_0x292603(0x197)][_0x292603(0x16a)](),this[_0x292603(0x280)]['clear'](),this[_0x292603(0x2c2)][_0x292603(0x16a)](),this[_0x292603(0x1c3)]['clear'](),this[_0x292603(0x336)]=null;}}[_0x40c362(0x162)](_0x5a2848){const _0x3e6204=_0x40c362;return createVolumeBrickLayout(_0x5a2848[_0x3e6204(0x32e)][_0x3e6204(0x42a)],{'width':_0x5a2848[_0x3e6204(0x420)]?.['width'],'height':_0x5a2848[_0x3e6204(0x420)]?.[_0x3e6204(0x2b1)],'depth':_0x5a2848['chunk']?.[_0x3e6204(0x424)],'halo':_0x5a2848[_0x3e6204(0x420)]?.['halo']});}[_0x40c362(0x2e9)](){const _0x2ebcde=_0x40c362;return this['quality']===_0x2ebcde(0x344)?this['autoQuality']:this[_0x2ebcde(0x2c7)];}[_0x40c362(0x24e)](){const _0x569e6a=_0x40c362;let _0x1783da=qualityStepLength(this['getEffectiveQuality']());return(this['coordinateSystem']===_0x569e6a(0x428)?_0x1783da*0.05:_0x1783da)*(this[_0x569e6a(0x1a1)]()?this[_0x569e6a(0x129)]:0x1);}['isInteracting'](){const _0x48a607=_0x40c362;return this[_0x48a607(0x1c3)]['size']>0x0;}[_0x40c362(0x378)](){const _0x4d6057=_0x40c362;return this[_0x4d6057(0x1c3)][_0x4d6057(0x1aa)]===0x0?'idle':this[_0x4d6057(0x1c3)][_0x4d6057(0x1aa)]>0x1?_0x4d6057(0x37e):this[_0x4d6057(0x1c3)][_0x4d6057(0x3bf)]()[_0x4d6057(0x294)]()['value']??'idle';}[_0x40c362(0x2ec)](){const _0x599fce=_0x40c362;return this[_0x599fce(0x27a)]*(this[_0x599fce(0x1a1)]()?this[_0x599fce(0x13b)]:0x1);}[_0x40c362(0x279)](_0x25d303){const _0x5e3205=_0x40c362;if(this[_0x5e3205(0x22c)]=_0x25d303,!(this[_0x5e3205(0x27b)]===_0x5e3205(0x301)||this['isInteracting']())){this[_0x5e3205(0x28c)]=0x0;return;}if(this[_0x5e3205(0x28c)]>0x0){let _0x49a4df=_0x25d303-this[_0x5e3205(0x28c)];_0x49a4df>0x0&&_0x49a4df<=0xfa&&(this[_0x5e3205(0x177)]=this[_0x5e3205(0x177)]===0x0?_0x49a4df:this[_0x5e3205(0x177)]*0.8+_0x49a4df*0.2,this[_0x5e3205(0x2d7)](_0x49a4df));}this[_0x5e3205(0x28c)]=_0x25d303;}['updateAutoQuality'](_0xe25d68){const _0x1d6820=_0x40c362;if(this[_0x1d6820(0x2c7)]!==_0x1d6820(0x344)||(this['autoFrameCount']+=0x1,this[_0x1d6820(0x303)]+=_0xe25d68,this['autoFrameCount']<0x1e))return;let _0xce6ac9=this['autoFrameIntervalTotal']/this[_0x1d6820(0x3f2)];if(this[_0x1d6820(0x3f2)]=0x0,this[_0x1d6820(0x303)]=0x0,this[_0x1d6820(0x1a1)]()&&_0xce6ac9<0xe)return;let _0x2ab68b=nextAutoQuality(this['autoQuality'],_0xce6ac9);_0x2ab68b!==this['autoQuality']&&(this[_0x1d6820(0x41e)]=_0x2ab68b,this['requestBrickSchedule'](),this[_0x1d6820(0x2ee)]());}[_0x40c362(0x365)](_0xbe3212){const _0xf95778=_0x40c362;return new SliceState(_0xbe3212[_0xf95778(0x32e)][_0xf95778(0x42a)],{'volumeDimFactor':_0xbe3212[_0xf95778(0x283)]?.['volumeDimFactor'],'depthMode':_0xbe3212[_0xf95778(0x283)]?.[_0xf95778(0x373)],'maxLockedSlices':_0xbe3212['sliceInteraction']?.[_0xf95778(0x184)],'onLimitReached':_0x4caa67=>_0xbe3212[_0xf95778(0x283)]?.[_0xf95778(0x39f)]?.(Error(_0xf95778(0x1f6)+_0x4caa67+'.\x20最大锁定切面数量为\x20'+_0x4caa67+'。'))});}[_0x40c362(0x170)](){const _0x3c599a=_0x40c362;let _0x1c2de3=this['sliceState'][_0x3c599a(0x1f1)](_0x46e509=>{const _0x4e8661=_0x3c599a;this[_0x4e8661(0x336)]=_0x46e509,this[_0x4e8661(0x2ee)]();});this['eventDisposers'][_0x3c599a(0x31e)](_0x1c2de3);}['flushSliceState'](){const _0x28d494=_0x40c362;let _0x5751b2=this['pendingSliceSnapshot'];if(!_0x5751b2)return;this['pendingSliceSnapshot']=null;let _0x3f138d=[];if(_0x5751b2[_0x28d494(0x166)]){let _0x50a358=_0x5751b2[_0x28d494(0x166)][_0x28d494(0x30d)]==='x'?this[_0x28d494(0x32e)][_0x28d494(0x42a)][_0x28d494(0x40d)]:_0x5751b2['preview'][_0x28d494(0x30d)]==='y'?this[_0x28d494(0x32e)][_0x28d494(0x42a)][_0x28d494(0x368)]:this[_0x28d494(0x32e)][_0x28d494(0x42a)][_0x28d494(0x2e5)];_0x3f138d['push']({'id':'volume-slice-preview','axis':_0x5751b2[_0x28d494(0x166)]['axis'],'position':clamp01(volumeAxisValueToNormalized(_0x50a358,_0x5751b2[_0x28d494(0x166)]['position'])),'depthMode':this[_0x28d494(0x41f)],'visible':!0x0,'opacity':0.72,'plateColor':this[_0x28d494(0x1f3)]});}for(let _0xdc6564 of _0x5751b2[_0x28d494(0x15e)]){let _0xa00fce=_0xdc6564[_0x28d494(0x30d)]==='x'?this[_0x28d494(0x32e)][_0x28d494(0x42a)]['xAxis']:_0xdc6564['axis']==='y'?this[_0x28d494(0x32e)][_0x28d494(0x42a)][_0x28d494(0x368)]:this['source'][_0x28d494(0x42a)][_0x28d494(0x2e5)];_0x3f138d['push']({..._0xdc6564,'position':clamp01(volumeAxisValueToNormalized(_0xa00fce,_0xdc6564[_0x28d494(0x36f)])),'opacity':0x1,'plateColor':this[_0x28d494(0x1f3)]});}this['renderer'][_0x28d494(0x186)](_0x3f138d),this[_0x28d494(0x31d)][_0x28d494(0x417)]({'volumeDimFactor':_0x5751b2['preview']||_0x5751b2['lockedSlices']['some'](_0x415a5f=>_0x415a5f[_0x28d494(0x2f3)])?_0x5751b2[_0x28d494(0x23d)]:0x1}),this[_0x28d494(0x2be)]?.(_0x5751b2[_0x28d494(0x15e)]),this['brickScheduleDirty']=!0x0;}[_0x40c362(0x1e7)](_0x15fdb0){const _0x1d924a=_0x40c362;let _0x793b07=()=>({'viewProjectionMatrix':this[_0x1d924a(0x24a)][_0x1d924a(0x164)][_0x1d924a(0x3a3)],'modelMatrix':composeVolumeModelMatrix(this[_0x1d924a(0x1bb)],this['verticalScale']),'viewportWidth':Math['max'](0x1,this[_0x1d924a(0x11b)][_0x1d924a(0x310)]),'viewportHeight':Math[_0x1d924a(0x370)](0x1,this[_0x1d924a(0x11b)][_0x1d924a(0x281)])});this[_0x1d924a(0x283)]=new SliceInteractionController(this[_0x1d924a(0x379)],this[_0x1d924a(0x377)],_0x793b07,{'hitTolerancePixels':_0x15fdb0[_0x1d924a(0x283)]?.[_0x1d924a(0x385)],'onInteractionStart':()=>this[_0x1d924a(0x20d)](_0x1d924a(0x1f7)),'onInteractionEnd':()=>this[_0x1d924a(0x1a4)](_0x1d924a(0x1f7))}),this[_0x1d924a(0x283)][_0x1d924a(0x404)](),_0x15fdb0[_0x1d924a(0x26f)]&&(this[_0x1d924a(0x17b)]=new SliceMarkerOverlay(_0x15fdb0['overlayContainer'],this['sliceState'],_0x793b07,{'interactionController':this[_0x1d924a(0x283)]}));}['bindControls'](){const _0x53464d=_0x40c362;let _0x496b67=_0xfd1444=>{const _0x3b379d=_0xc352;_0xfd1444['button']!==0x0&&_0xfd1444[_0x3b379d(0x1b4)]!==0x2||(this[_0x3b379d(0x35a)]={'id':_0xfd1444[_0x3b379d(0x271)],'x':_0xfd1444['clientX'],'y':_0xfd1444[_0x3b379d(0x3ea)],'pan':_0xfd1444['button']===0x2||_0xfd1444[_0x3b379d(0x36b)]!==_0x3b379d(0x306)&&this[_0x3b379d(0x2bb)]==='pan'},this[_0x3b379d(0x20d)](_0x3b379d(0x3e2)),this[_0x3b379d(0x379)]['setPointerCapture']?.(_0xfd1444[_0x3b379d(0x271)]),_0xfd1444[_0x3b379d(0x1fd)]());},_0x350c06=_0xe17205=>{const _0x281a62=_0xc352;if(!this['pointer']||this['pointer']['id']!==_0xe17205[_0x281a62(0x271)])return;let _0x4bbbc2=_0xe17205[_0x281a62(0x257)]-this['pointer']['x'],_0x17fba5=_0xe17205[_0x281a62(0x3ea)]-this[_0x281a62(0x35a)]['y'];this[_0x281a62(0x35a)]['x']=_0xe17205['clientX'],this[_0x281a62(0x35a)]['y']=_0xe17205[_0x281a62(0x3ea)],this[_0x281a62(0x35a)][_0x281a62(0x113)]?this['volumeCamera'][_0x281a62(0x113)](_0x4bbbc2,_0x17fba5,this['canvas'][_0x281a62(0x281)]):this['volumeCamera']['orbit'](_0x4bbbc2,_0x17fba5),this[_0x281a62(0x10e)](),this[_0x281a62(0x2ee)]();},_0x1d1a46=_0x49d80d=>{const _0x9baf94=_0xc352;this['pointer']?.['id']===_0x49d80d['pointerId']&&(this[_0x9baf94(0x35a)]=null,this[_0x9baf94(0x1a4)]('camera'));},_0x43ee06=_0x550d1d=>{const _0x1972a4=_0xc352;_0x550d1d[_0x1972a4(0x1fd)](),this[_0x1972a4(0x24a)]['dolly'](_0x550d1d[_0x1972a4(0x388)]),this[_0x1972a4(0x10e)](),this[_0x1972a4(0x2ee)]();},_0x267be9=_0x148aa5=>_0x148aa5[_0x53464d(0x1fd)]();this[_0x53464d(0x379)]['addEventListener'](_0x53464d(0x2a8),_0x496b67),this[_0x53464d(0x379)]['addEventListener'](_0x53464d(0x26e),_0x350c06),this[_0x53464d(0x379)][_0x53464d(0x3c2)](_0x53464d(0x13e),_0x1d1a46),this['interactionElement']['addEventListener'](_0x53464d(0x16e),_0x1d1a46),this[_0x53464d(0x379)][_0x53464d(0x3c2)](_0x53464d(0x2f4),_0x43ee06,{'passive':!0x1}),this['interactionElement'][_0x53464d(0x3c2)]('contextmenu',_0x267be9),this[_0x53464d(0x1c2)][_0x53464d(0x31e)](()=>this[_0x53464d(0x379)][_0x53464d(0x2cf)](_0x53464d(0x2a8),_0x496b67),()=>this[_0x53464d(0x379)][_0x53464d(0x2cf)]('pointermove',_0x350c06),()=>this['interactionElement'][_0x53464d(0x2cf)](_0x53464d(0x13e),_0x1d1a46),()=>this['interactionElement']['removeEventListener'](_0x53464d(0x16e),_0x1d1a46),()=>this[_0x53464d(0x379)][_0x53464d(0x2cf)](_0x53464d(0x2f4),_0x43ee06),()=>this[_0x53464d(0x379)][_0x53464d(0x2cf)](_0x53464d(0x3eb),_0x267be9));}[_0x40c362(0x3fb)](){const _0x60a2ef=_0x40c362;this[_0x60a2ef(0x31d)][_0x60a2ef(0x143)]({'xAxis':this[_0x60a2ef(0x32e)]['metadata'][_0x60a2ef(0x40d)],'yAxis':this[_0x60a2ef(0x32e)]['metadata'][_0x60a2ef(0x368)],'zAxis':this[_0x60a2ef(0x32e)][_0x60a2ef(0x42a)]['zAxis'],'brickWidth':this[_0x60a2ef(0x3cf)][_0x60a2ef(0x30c)][_0x60a2ef(0x3a7)],'brickHeight':this[_0x60a2ef(0x3cf)][_0x60a2ef(0x30c)][_0x60a2ef(0x2b1)],'brickDepth':this[_0x60a2ef(0x3cf)][_0x60a2ef(0x30c)][_0x60a2ef(0x424)],'halo':0x1,'noData':this[_0x60a2ef(0x32e)][_0x60a2ef(0x42a)][_0x60a2ef(0x1b5)]});}['configureModel'](){const _0x256134=_0x40c362;if(this[_0x256134(0x1d8)]===_0x256134(0x428)){let _0x41f9c4=createGeographicVolumeLayout(this[_0x256134(0x32e)][_0x256134(0x42a)],this[_0x256134(0x149)]);this[_0x256134(0x31d)][_0x256134(0x417)]({'modelMatrix':_0x41f9c4[_0x256134(0x18a)],'inverseModelMatrix':Array[_0x256134(0x31f)](invertMatrix(_0x41f9c4[_0x256134(0x18a)])),'geographicTransform':_0x41f9c4[_0x256134(0x26c)],'clipMinimum':[0x0,0x0,0x0],'clipMaximum':[0x1,0x1,0x1]}),this[_0x256134(0x2ee)]();return;}let _0x1fb09a=composeVolumeModelMatrix(this[_0x256134(0x1bb)],this[_0x256134(0x149)]),_0x44441c=normalizeClipBox(this[_0x256134(0x32e)],this[_0x256134(0x14c)]);this[_0x256134(0x31d)][_0x256134(0x417)]({'modelMatrix':Array[_0x256134(0x31f)](_0x1fb09a),'inverseModelMatrix':Array['from'](invertMatrix(_0x1fb09a)),'geographicTransform':null,'clipMinimum':_0x44441c[_0x256134(0x1ff)],'clipMaximum':_0x44441c[_0x256134(0x18c)]}),this['requestRender']();}[_0x40c362(0x2fd)](){const _0x138d56=_0x40c362;let _0x3b9886=this[_0x138d56(0x2e8)][_0x138d56(0x358)](_0x4ce98b=>createProfileSceneMesh(buildVolumeRouteProfileMesh(_0x4ce98b,this[_0x138d56(0x32e)][_0x138d56(0x42a)]),this[_0x138d56(0x215)],this['opacityStops'],this['colorMode']));this[_0x138d56(0x31d)]['setProfiles'](_0x3b9886),this[_0x138d56(0x2ee)]();}[_0x40c362(0x1b9)](){const _0x3b7ad8=_0x40c362;this[_0x3b7ad8(0x305)]+=0x1;for(let _0x12070a of this[_0x3b7ad8(0x274)])_0x12070a[_0x3b7ad8(0x2ab)]();this[_0x3b7ad8(0x274)]['clear'](),this['loadedKeys'][_0x3b7ad8(0x16a)](),this[_0x3b7ad8(0x280)][_0x3b7ad8(0x16a)](),this[_0x3b7ad8(0x2c2)][_0x3b7ad8(0x16a)](),this[_0x3b7ad8(0x3fb)](),this['scheduleBricks']();}['requestBrickSchedule'](){const _0x29e94a=_0x40c362;this['brickScheduleDirty']=!0x0,this[_0x29e94a(0x2ee)]();}[_0x40c362(0x2e4)](){const _0x49c803=_0x40c362;this['brickScheduleDirty']&&(this[_0x49c803(0x2c1)]=!0x1,this['scheduleBricks']());}[_0x40c362(0x139)](){const _0xeb0dc2=_0x40c362;if(this[_0xeb0dc2(0x275)])return;this[_0xeb0dc2(0x2c1)]=!0x1,this[_0xeb0dc2(0x12d)]+=0x1;let _0x52c9aa=this[_0xeb0dc2(0x31d)]['statistics'][_0xeb0dc2(0x2fe)];if(_0x52c9aa<=0x0)return;let _0x2d5cda=_0x52c9aa>=this[_0xeb0dc2(0x397)]['length'];if(_0x2d5cda&&this[_0xeb0dc2(0x2c2)][_0xeb0dc2(0x1aa)]===this[_0xeb0dc2(0x397)][_0xeb0dc2(0x3e0)]&&this[_0xeb0dc2(0x197)][_0xeb0dc2(0x1aa)]===this[_0xeb0dc2(0x397)]['length']&&this[_0xeb0dc2(0x280)][_0xeb0dc2(0x1aa)]===0x0)return;let _0x1a07a5;_0x2d5cda?_0x1a07a5=this['descriptors']:(this[_0xeb0dc2(0x37b)]+=0x1,_0x1a07a5=[...this[_0xeb0dc2(0x397)]][_0xeb0dc2(0x3f9)]((_0x39e7d8,_0x2799bc)=>descriptorDemandPriority(_0x39e7d8,this['source'],this[_0xeb0dc2(0x377)],this['profiles'])-descriptorDemandPriority(_0x2799bc,this[_0xeb0dc2(0x32e)],this[_0xeb0dc2(0x377)],this[_0xeb0dc2(0x2e8)])||descriptorDistance(_0x39e7d8,this[_0xeb0dc2(0x3cf)],this[_0xeb0dc2(0x24a)][_0xeb0dc2(0x3d9)])-descriptorDistance(_0x2799bc,this[_0xeb0dc2(0x3cf)],this[_0xeb0dc2(0x24a)][_0xeb0dc2(0x3d9)]))['slice'](0x0,_0x52c9aa));let _0x32f714=new Set(_0x1a07a5[_0xeb0dc2(0x358)](_0x23fb90=>_0x23fb90['key']));this[_0xeb0dc2(0x2c2)]=_0x32f714,_0x2d5cda||this['renderer'][_0xeb0dc2(0x3bd)](_0x1a07a5[_0xeb0dc2(0x33e)](_0x548daa=>this['loadedKeys'][_0xeb0dc2(0x2c4)](_0x548daa[_0xeb0dc2(0x3e9)]))[_0xeb0dc2(0x358)](_0xd436a8=>descriptorLogicalIndex(_0xd436a8,this[_0xeb0dc2(0x3cf)])));for(let _0x3e3132 of this['loadedKeys'])_0x32f714[_0xeb0dc2(0x2c4)](_0x3e3132)||this[_0xeb0dc2(0x197)][_0xeb0dc2(0x422)](_0x3e3132);let _0x5136f7=Math[_0xeb0dc2(0x370)](0x0,qualityUploadCount(this['getEffectiveQuality']())-this[_0xeb0dc2(0x280)][_0xeb0dc2(0x1aa)]),_0x2b7730=_0x1a07a5[_0xeb0dc2(0x33e)](_0x53d43e=>!this['loadedKeys'][_0xeb0dc2(0x2c4)](_0x53d43e['key'])&&!this[_0xeb0dc2(0x280)][_0xeb0dc2(0x2c4)](_0x53d43e['key']))[_0xeb0dc2(0x1f7)](0x0,_0x5136f7);for(let _0x6e7ea3 of _0x2b7730)this[_0xeb0dc2(0x3e8)](_0x6e7ea3);}['loadBrick'](_0x201275){const _0x16876c=_0x40c362;let _0x2a1c5a=this[_0x16876c(0x305)],_0x366c81=this['source'],_0x5cb15e=this['timeIndex'],_0xc8e6ee=new AbortController();this[_0x16876c(0x274)][_0x16876c(0x201)](_0xc8e6ee),this[_0x16876c(0x280)][_0x16876c(0x3dc)](_0x201275['key'],_0x2a1c5a),Promise[_0x16876c(0x189)](_0x366c81[_0x16876c(0x2a5)](_0x5cb15e,_0x201275[_0x16876c(0x1cb)],_0xc8e6ee[_0x16876c(0x35e)]))[_0x16876c(0x2d1)](async _0xa43011=>{const _0x233e7=_0x16876c;if(this[_0x233e7(0x275)]||_0x2a1c5a!==this['sourceGeneration']||_0x366c81!==this['source']||_0x5cb15e!==this['timeIndex']||!this['desiredKeys'][_0x233e7(0x2c4)](_0x201275[_0x233e7(0x3e9)]))return;let _0x2dd943=createPhysicalBrickValues(_0x366c81[_0x233e7(0x42a)],this[_0x233e7(0x3cf)]['shape'],_0x201275,_0xa43011),_0x377fcc=descriptorLogicalIndex(_0x201275,this[_0x233e7(0x3cf)]);await this[_0x233e7(0x31d)]['uploadBrick']({'logicalIndex':_0x377fcc,'values':_0x2dd943}),!(this[_0x233e7(0x275)]||_0x2a1c5a!==this['sourceGeneration']||_0x366c81!==this['source']||_0x5cb15e!==this[_0x233e7(0x391)]||!this['desiredKeys']['has'](_0x201275[_0x233e7(0x3e9)]))&&(this[_0x233e7(0x197)][_0x233e7(0x201)](_0x201275['key']),this[_0x233e7(0x2ee)]());})[_0x16876c(0x3fa)](_0x514f6a=>{const _0xa620af=_0x16876c;_0x514f6a instanceof DOMException&&_0x514f6a[_0xa620af(0x332)]==='AbortError'||console[_0xa620af(0x20b)](_0x514f6a);})[_0x16876c(0x16c)](()=>{const _0x32088b=_0x16876c;this[_0x32088b(0x274)][_0x32088b(0x422)](_0xc8e6ee),this[_0x32088b(0x280)]['get'](_0x201275['key'])===_0x2a1c5a&&this['pendingKeys'][_0x32088b(0x422)](_0x201275[_0x32088b(0x3e9)]),_0x2a1c5a===this['sourceGeneration']&&this[_0x32088b(0x139)]();});}['handleFrameAvailable'](){const _0x11f622=_0x40c362;this[_0x11f622(0x17f)]&&this[_0x11f622(0x2ee)]();}['requestRender'](){const _0x6a8569=_0x40c362;this['destroyed']||(this[_0x6a8569(0x17f)]=!0x0,!(this[_0x6a8569(0x27b)]!=='managed'||this[_0x6a8569(0x34d)]!==0x0)&&(this[_0x6a8569(0x34d)]=requestAnimationFrame(()=>{const _0x426b1b=_0x6a8569;this[_0x426b1b(0x34d)]=0x0,!(this['destroyed']||!this['renderDirty'])&&this['render']();})));}};const createVolumeScene=_0x2dbfd9=>VolumeScene[_0x40c362(0x23a)](_0x2dbfd9),validateIndexRange=(_0x2e8953,_0x449fd2,_0x141003,_0x29273f)=>{const _0x269b9d=_0x40c362;if(!Number['isInteger'](_0x2e8953)||!Number[_0x269b9d(0x135)](_0x449fd2)||_0x2e8953<0x0||_0x449fd2<=0x0||_0x2e8953+_0x449fd2>_0x141003)throw Error(_0x29273f+_0x269b9d(0x340)+_0x2e8953+_0x269b9d(0x152)+_0x449fd2+',\x20size='+_0x141003+'.\x20'+_0x29273f+_0x269b9d(0x1f2));},validateRange=(_0x57f78b,_0xda859f)=>{const _0x664281=_0x40c362;validateIndexRange(_0xda859f['xStart'],_0xda859f['xCount'],_0x57f78b[_0x664281(0x40d)][_0x664281(0x269)],'X'),validateIndexRange(_0xda859f['levelStart'],_0xda859f[_0x664281(0x321)],_0x57f78b['yAxis'][_0x664281(0x269)],_0x664281(0x116)),validateIndexRange(_0xda859f[_0x664281(0x380)],_0xda859f['sourceYCount'],_0x57f78b[_0x664281(0x2e5)][_0x664281(0x269)],'sourceY');},validateData=_0x282836=>{const _0xd1603f=_0x40c362;validateVolumeMetadata(_0x282836);let _0x102e6e=_0x282836[_0xd1603f(0x40d)][_0xd1603f(0x269)]*_0x282836['yAxis']['count']*_0x282836[_0xd1603f(0x2e5)][_0xd1603f(0x269)]*_0x282836[_0xd1603f(0x3e1)];if(_0x282836[_0xd1603f(0x3bf)][_0xd1603f(0x3e0)]!==_0x102e6e)throw Error(_0xd1603f(0x25e)+_0x102e6e+_0xd1603f(0x233)+_0x282836['values']['length']+_0xd1603f(0x251));},createInMemoryVolumeSource=_0x5b826e=>{validateData(_0x5b826e);let {values:_0x206cf8,..._0xb64b3b}=_0x5b826e;return{'metadata':_0xb64b3b,'readChunk'(_0x50b975,_0x3809f1,_0x1b1272){const _0x285481=_0xc352;if(_0x1b1272?.['aborted'])throw new DOMException('Volume\x20chunk\x20request\x20was\x20aborted.\x20体积块请求已取消。','AbortError');if(!Number['isInteger'](_0x50b975)||_0x50b975<0x0||_0x50b975>=_0x5b826e[_0x285481(0x3e1)])throw Error(_0x285481(0x2f9)+_0x50b975+_0x285481(0x37d));validateRange(_0x5b826e,_0x3809f1);let _0x2888ff=new Float32Array(_0x3809f1['xCount']*_0x3809f1['levelCount']*_0x3809f1[_0x285481(0x255)]),_0x4fd71e=_0x5b826e[_0x285481(0x40d)][_0x285481(0x269)],_0x1b6f20=_0x5b826e[_0x285481(0x368)]['count'],_0x2fd0ce=_0x5b826e[_0x285481(0x2e5)][_0x285481(0x269)],_0x30f09=_0x50b975*_0x4fd71e*_0x1b6f20*_0x2fd0ce;for(let _0x533df9=0x0;_0x533df9<_0x3809f1[_0x285481(0x255)];_0x533df9+=0x1)for(let _0x220eb9=0x0;_0x220eb9<_0x3809f1[_0x285481(0x321)];_0x220eb9+=0x1){let _0x28f450=_0x30f09+(((_0x3809f1[_0x285481(0x380)]+_0x533df9)*_0x1b6f20+_0x3809f1[_0x285481(0x111)]+_0x220eb9)*_0x4fd71e+_0x3809f1[_0x285481(0x223)]),_0x48289d=(_0x533df9*_0x3809f1['levelCount']+_0x220eb9)*_0x3809f1[_0x285481(0x27e)];_0x2888ff[_0x285481(0x3dc)](_0x206cf8[_0x285481(0x263)](_0x28f450,_0x28f450+_0x3809f1[_0x285481(0x27e)]),_0x48289d);}return{'timeIndex':_0x50b975,'range':{..._0x3809f1},'width':_0x3809f1[_0x285481(0x27e)],'height':_0x3809f1[_0x285481(0x321)],'depth':_0x3809f1['sourceYCount'],'values':_0x2888ff};}};};exports['VolumeCamera']=VolumeCamera,exports[_0x40c362(0x40f)]=createGeographicVolumeLayout,exports[_0x40c362(0x190)]=createInMemoryVolumeSource,exports[_0x40c362(0x2aa)]=createVolumeScene,exports[_0x40c362(0x3c8)]=ecefToGeographicVolumeLocal,exports[_0x40c362(0x2fb)]=normalizedToVolumeAxisValue,exports[_0x40c362(0x29f)]=volumeAxisValueToNormalized;
|