m4-w-fast 1.2.0 → 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.
Files changed (172) hide show
  1. package/dist/index.cjs +1 -1
  2. package/dist/index.js +1 -1
  3. package/dist/index.mjs +1 -1
  4. package/dist/intersect.worker.js +2 -2
  5. package/dist/isoBands.worker.js +1 -1
  6. package/dist/m4-w-fast.umd.js +1 -1
  7. package/dist/raster-leaflet/index.cjs +2 -2
  8. package/dist/raster-leaflet/index.js +1 -1
  9. package/dist/raster-leaflet/index.mjs +2 -2
  10. package/dist/raster-leaflet/m4-w-raster-leaflet.umd.js +2 -2
  11. package/dist/raster-mars3d/cesiumRasterPlaneRenderer.js +1 -1
  12. package/dist/raster-mars3d/cesiumRasterTextureAdapter.js +1 -1
  13. package/dist/raster-mars3d/index.cjs +2 -2
  14. package/dist/raster-mars3d/index.js +1 -1
  15. package/dist/raster-mars3d/index.mjs +2 -2
  16. package/dist/raster-mars3d/m4-w-raster-mars3d.umd.js +2 -2
  17. package/dist/raster-mars3d/mars3dRasterImageryProvider.js +1 -1
  18. package/dist/raster-mars3d/mars3dRasterPlaneLayer.js +1 -1
  19. package/dist/raster-mars3d/rasterPlaneGeometry.js +1 -1
  20. package/dist/raster-mars3d/rasterPlaneGridChunks.js +1 -1
  21. package/dist/raster-mars3d/rasterPlaneMaterial.js +1 -1
  22. package/dist/raster-overlay/color.js +1 -1
  23. package/dist/raster-overlay/core.js +1 -1
  24. package/dist/raster-overlay/index.cjs +2 -2
  25. package/dist/raster-overlay/index.js +1 -1
  26. package/dist/raster-overlay/index.mjs +2 -2
  27. package/dist/raster-overlay/leaflet-renderers/createRenderer.js +1 -1
  28. package/dist/raster-overlay/leafletLayer.js +1 -1
  29. package/dist/raster-overlay/m4-w-raster-overlay.umd.js +2 -2
  30. package/dist/raster-overlay/query.js +1 -1
  31. package/dist/raster-overlay/rendering/createRasterRenderer.js +1 -1
  32. package/dist/raster-overlay/rendering/index.js +1 -1
  33. package/dist/raster-overlay/rendering/rasterRenderState.js +1 -1
  34. package/dist/raster-overlay/rendering/webgl2RasterRenderer.js +1 -1
  35. package/dist/raster-overlay/rendering/webgpuRasterRenderer.js +1 -1
  36. package/dist/raster-rendering/index.cjs +2 -2
  37. package/dist/raster-rendering/index.js +1 -1
  38. package/dist/raster-rendering/index.mjs +2 -2
  39. package/dist/raster-rendering/m4-w-raster-rendering.umd.js +2 -2
  40. package/dist/raster-rendering/webgpuRasterTileRenderer.js +1 -1
  41. package/dist/readFile.js +1 -1
  42. package/dist/rendering/index.js +1 -1
  43. package/dist/rendering/webgl2/baseWebgl2Renderer.js +1 -1
  44. package/dist/rendering/webgl2/index.js +1 -1
  45. package/dist/rendering/webgl2/webgl2CoverageResources.js +1 -1
  46. package/dist/rendering/webgl2/webgl2VisualizationResources.js +1 -1
  47. package/dist/rendering/webgpu/baseWebgpuRenderer.js +1 -1
  48. package/dist/rendering/webgpu/index.js +1 -1
  49. package/dist/rendering/webgpu/visualizationParams.js +1 -1
  50. package/dist/rendering/webgpu/visualizationResources.js +1 -1
  51. package/dist/rendering/webgpu/webgpuCoverageResources.js +1 -1
  52. package/dist/road-overlay/coordinateTransform.js +1 -1
  53. package/dist/road-overlay/index.cjs +2 -2
  54. package/dist/road-overlay/index.js +1 -1
  55. package/dist/road-overlay/index.mjs +2 -2
  56. package/dist/road-overlay/leaflet-renderers/createRenderer.js +1 -1
  57. package/dist/road-overlay/leafletLayer.js +1 -1
  58. package/dist/road-overlay/m4-w-road-overlay.umd.js +2 -2
  59. package/dist/road-overlay/options.js +1 -1
  60. package/dist/road-overlay/rendering/index.js +1 -1
  61. package/dist/road-overlay/rendering/roadRenderState.js +1 -1
  62. package/dist/road-overlay/rendering/webgl2RoadRenderer.js +1 -1
  63. package/dist/road-overlay/rendering/webgpuRoadRenderer.js +1 -1
  64. package/dist/road-overlay/roadData.js +1 -1
  65. package/dist/road-overlay/roadGeometry.js +1 -1
  66. package/dist/road-overlay/roadMesh.js +1 -1
  67. package/dist/shared/coordinate-shader/webgl2/index.js +1 -1
  68. package/dist/shared/coordinate-shader/webgpu/index.js +1 -1
  69. package/dist/shared/map/index.js +1 -1
  70. package/dist/shared/map/leaflet.js +1 -1
  71. package/dist/shared/polygon/contains.js +1 -1
  72. package/dist/shared/polygon/index.js +1 -1
  73. package/dist/shared/polygon/polygonMesh.js +1 -1
  74. package/dist/shared/shader/assemble.js +1 -1
  75. package/dist/shared/visualization/index.js +1 -1
  76. package/dist/shared/visualization/shader/webgl2/index.js +1 -1
  77. package/dist/shared/visualization/shader/webgpu/index.js +1 -1
  78. package/dist/shared/visualization/utils.js +1 -1
  79. package/dist/volume-data/index.cjs +1 -0
  80. package/dist/volume-data/index.d.ts +5 -0
  81. package/dist/volume-data/index.js +1 -0
  82. package/dist/volume-data/index.mjs +1 -0
  83. package/dist/volume-data/input.d.ts +2 -0
  84. package/dist/volume-data/input.js +1 -0
  85. package/dist/volume-data/loadVolumeSource.d.ts +2 -0
  86. package/dist/volume-data/loadVolumeSource.js +1 -0
  87. package/dist/volume-data/m4-w-volume-data.umd.js +1 -0
  88. package/dist/volume-data/parserRegistry.d.ts +5 -0
  89. package/dist/volume-data/parserRegistry.js +1 -0
  90. package/dist/volume-data/radarGridVolumeMetadata.d.ts +2 -0
  91. package/dist/volume-data/radarGridVolumeMetadata.js +1 -0
  92. package/dist/volume-data/radarGridVolumeParser.d.ts +2 -0
  93. package/dist/volume-data/radarGridVolumeParser.js +1 -0
  94. package/dist/volume-data/radarGridVolumeSource.d.ts +3 -0
  95. package/dist/volume-data/radarGridVolumeSource.js +1 -0
  96. package/dist/volume-data/volumeDataError.d.ts +5 -0
  97. package/dist/volume-data/volumeDataError.js +1 -0
  98. package/dist/volume-data/volumeDataTypes.d.ts +54 -0
  99. package/dist/volume-data/volumeDataTypes.js +1 -0
  100. package/dist/volume-data/zipArchive.d.ts +6 -0
  101. package/dist/volume-data/zipArchive.js +1 -0
  102. package/dist/volume-mars3d/createMars3dVolumeScene.js +1 -1
  103. package/dist/volume-mars3d/index.cjs +1 -1
  104. package/dist/volume-mars3d/index.js +1 -1
  105. package/dist/volume-mars3d/index.mjs +1 -1
  106. package/dist/volume-mars3d/m4-w-volume-mars3d.umd.js +1 -1
  107. package/dist/volume-mars3d/mars3dCanvasCompensation.js +1 -1
  108. package/dist/volume-mars3d/mars3dRaymarchShader.js +1 -1
  109. package/dist/volume-mars3d/mars3dVolumeLayer.js +1 -1
  110. package/dist/volume-mars3d/mars3dVolumeRenderer.js +1 -1
  111. package/dist/volume-mars3d-native/index.cjs +1 -1
  112. package/dist/volume-mars3d-native/index.js +1 -1
  113. package/dist/volume-mars3d-native/index.mjs +1 -1
  114. package/dist/volume-mars3d-native/liveUpdateScheduler.js +1 -1
  115. package/dist/volume-mars3d-native/m4-w-volume-mars3d-native.umd.js +1 -1
  116. package/dist/volume-mars3d-native/mars3dNativeSliceLayer.js +1 -1
  117. package/dist/volume-mars3d-native/mars3dNativeSliceRenderer.js +1 -1
  118. package/dist/volume-mars3d-native/mars3dNativeVolumeLayer.js +1 -1
  119. package/dist/volume-mars3d-native/mars3dNativeVolumeRenderer.js +1 -1
  120. package/dist/volume-mars3d-native/nativeAxisSliceRenderer.js +1 -1
  121. package/dist/volume-mars3d-native/nativeSliceAtlas.js +1 -1
  122. package/dist/volume-mars3d-native/nativeVoxelProvider.js +1 -1
  123. package/dist/volume-mars3d-native/nativeVoxelShader.js +1 -1
  124. package/dist/volume-mars3d-native/voxelData.js +1 -1
  125. package/dist/volume-scene/brickLayout.js +1 -1
  126. package/dist/volume-scene/brickResidency.js +1 -1
  127. package/dist/volume-scene/camera.js +1 -1
  128. package/dist/volume-scene/createVolumeScene.js +1 -1
  129. package/dist/volume-scene/geographicVolume.js +1 -1
  130. package/dist/volume-scene/inMemoryVolumeSource.js +1 -1
  131. package/dist/volume-scene/index.cjs +1 -1
  132. package/dist/volume-scene/index.js +1 -1
  133. package/dist/volume-scene/index.mjs +1 -1
  134. package/dist/volume-scene/m4-w-volume-scene.umd.js +1 -1
  135. package/dist/volume-scene/matrix.js +1 -1
  136. package/dist/volume-scene/rendering/webgpu/index.js +1 -1
  137. package/dist/volume-scene/rendering/webgpu/webgpuBrickAtlas.js +1 -1
  138. package/dist/volume-scene/rendering/webgpu/webgpuSceneAttachments.js +1 -1
  139. package/dist/volume-scene/rendering/webgpu/webgpuSceneMeshResources.js +1 -1
  140. package/dist/volume-scene/rendering/webgpu/webgpuSliceResources.js +1 -1
  141. package/dist/volume-scene/rendering/webgpu/webgpuTransferResources.js +1 -1
  142. package/dist/volume-scene/rendering/webgpu/webgpuVolumeSceneRenderer.js +1 -1
  143. package/dist/volume-scene/routeProfileMesh.js +1 -1
  144. package/dist/volume-scene/sliceInteractionController.js +1 -1
  145. package/dist/volume-scene/sliceMarkerOverlay.js +1 -1
  146. package/dist/volume-scene/sliceState.js +1 -1
  147. package/dist/volume-scene/volumeBrickData.js +1 -1
  148. package/dist/volume-scene/volumeScene.js +1 -1
  149. package/dist/volume-scene/volumeTransfer.js +1 -1
  150. package/dist/volume-scene/volumeValidation.js +1 -1
  151. package/dist/volume-section/createHorizontalRasterGrid.d.ts +3 -0
  152. package/dist/volume-section/createHorizontalRasterGrid.js +1 -0
  153. package/dist/volume-section/createVolumeSection.d.ts +3 -0
  154. package/dist/volume-section/createVolumeSection.js +1 -0
  155. package/dist/volume-section/createVolumeSectionRasterGrid.d.ts +3 -0
  156. package/dist/volume-section/createVolumeSectionRasterGrid.js +1 -0
  157. package/dist/volume-section/createVolumeSectionRouteProfile.d.ts +3 -0
  158. package/dist/volume-section/createVolumeSectionRouteProfile.js +1 -0
  159. package/dist/volume-section/geographic.d.ts +3 -0
  160. package/dist/volume-section/geographic.js +1 -0
  161. package/dist/volume-section/gridLayerStatistics.d.ts +9 -0
  162. package/dist/volume-section/gridLayerStatistics.js +1 -0
  163. package/dist/volume-section/index.cjs +1 -0
  164. package/dist/volume-section/index.d.ts +8 -0
  165. package/dist/volume-section/index.js +1 -0
  166. package/dist/volume-section/index.mjs +1 -0
  167. package/dist/volume-section/m4-w-volume-section.umd.js +1 -0
  168. package/dist/volume-section/routeSampling.d.ts +9 -0
  169. package/dist/volume-section/routeSampling.js +1 -0
  170. package/dist/volume-section/volumeSectionTypes.d.ts +39 -0
  171. package/dist/volume-section/volumeSectionTypes.js +1 -0
  172. package/package.json +58 -12
@@ -1 +1 @@
1
- const _0x1d30f8=_0x4af7;(function(_0x5e4795,_0x59fc29){const _0x624b32=_0x4af7,_0x3f137a=_0x5e4795();while(!![]){try{const _0x5091c7=-parseInt(_0x624b32(0x39d))/0x1*(-parseInt(_0x624b32(0x184))/0x2)+parseInt(_0x624b32(0x140))/0x3*(-parseInt(_0x624b32(0x365))/0x4)+parseInt(_0x624b32(0x2ee))/0x5*(parseInt(_0x624b32(0x273))/0x6)+parseInt(_0x624b32(0x230))/0x7+parseInt(_0x624b32(0x2be))/0x8*(parseInt(_0x624b32(0x23c))/0x9)+-parseInt(_0x624b32(0x3b5))/0xa*(-parseInt(_0x624b32(0x1c1))/0xb)+-parseInt(_0x624b32(0x277))/0xc;if(_0x5091c7===_0x59fc29)break;else _0x3f137a['push'](_0x3f137a['shift']());}catch(_0x373b9c){_0x3f137a['push'](_0x3f137a['shift']());}}}(_0x19e9,0x5e24e));const WGS84_SEMI_MAJOR_AXIS_METERS=0x615299,WGS84_SEMI_MINOR_AXIS_METERS=WGS84_SEMI_MAJOR_AXIS_METERS*(0x1-0x1/298.257223563),WGS84_FIRST_ECCENTRICITY_SQUARED=0x1-WGS84_SEMI_MINOR_AXIS_METERS**0x2/WGS84_SEMI_MAJOR_AXIS_METERS**0x2,degreesToRadians=_0x38e5d4=>_0x38e5d4*Math['PI']/0xb4,geodeticToEcef=(_0x2093d9,_0x56029d,_0x32e506)=>{const _0x41080b=_0x4af7;let _0x375d92=Math[_0x41080b(0x139)](_0x56029d),_0x27a3ba=Math[_0x41080b(0x16c)](_0x56029d),_0x20403b=Math[_0x41080b(0x139)](_0x2093d9),_0x2f3171=Math[_0x41080b(0x16c)](_0x2093d9),_0x5b60dd=WGS84_SEMI_MAJOR_AXIS_METERS/Math[_0x41080b(0x382)](0x1-WGS84_FIRST_ECCENTRICITY_SQUARED*_0x375d92*_0x375d92);return[(_0x5b60dd+_0x32e506)*_0x27a3ba*_0x2f3171,(_0x5b60dd+_0x32e506)*_0x27a3ba*_0x20403b,(_0x5b60dd*(0x1-WGS84_FIRST_ECCENTRICITY_SQUARED)+_0x32e506)*_0x375d92];},validateAxisSpan=(_0x5a7abb,_0xc0ae06,_0xec690c)=>{const _0x48cc2a=_0x4af7;if(!Number['isFinite'](_0x5a7abb)||!Number[_0x48cc2a(0x193)](_0xc0ae06)||_0x5a7abb===_0xc0ae06)throw Error(_0xec690c+_0x48cc2a(0x141)+_0xec690c+'\x20轴必须包含两个不同的有限端点。');},createGeographicVolumeLayout=(_0x30517d,_0xd3ef88=0x1)=>{const _0x2607bf=_0x4af7;let _0x1ad434=degreesToRadians(_0x30517d['xAxis'][_0x2607bf(0x218)]),_0x593bd9=degreesToRadians(_0x30517d[_0x2607bf(0xf3)]['end']),_0x556f7a=degreesToRadians(_0x30517d[_0x2607bf(0x1d9)][_0x2607bf(0x218)]),_0x42043c=degreesToRadians(_0x30517d[_0x2607bf(0x1d9)]['end']);validateAxisSpan(_0x1ad434,_0x593bd9,'Longitude\x20/\x20经度'),validateAxisSpan(_0x556f7a,_0x42043c,_0x2607bf(0x183));let _0x5b0729=_0x30517d['yAxis'][_0x2607bf(0x218)],_0x4b0f6b=_0x30517d[_0x2607bf(0x2b7)][_0x2607bf(0x144)];if(validateAxisSpan(_0x5b0729,_0x4b0f6b,_0x2607bf(0x295)),!(_0xd3ef88>0x0)||!Number[_0x2607bf(0x193)](_0xd3ef88))throw Error(_0x2607bf(0x117));let _0x7957c5=_0x5b0729+(_0x4b0f6b-_0x5b0729)*_0xd3ef88,_0x368911=(_0x1ad434+_0x593bd9)/0x2,_0x12d202=(_0x556f7a+_0x42043c)/0x2,_0x2cdf3b=geodeticToEcef(_0x368911,_0x12d202,0x0),_0x401b8e=Math[_0x2607bf(0x356)](_0x593bd9-_0x1ad434)*WGS84_SEMI_MAJOR_AXIS_METERS*Math['max'](0.01,Math[_0x2607bf(0x16c)](_0x12d202)),_0x297232=Math['abs'](_0x42043c-_0x556f7a)*WGS84_SEMI_MAJOR_AXIS_METERS,_0x23531a=Math[_0x2607bf(0x334)](_0x401b8e,_0x297232);if(!(_0x23531a>0x0)||!Number[_0x2607bf(0x193)](_0x23531a))throw Error(_0x2607bf(0x2aa));let _0x42c1c8=[0x1/0x0,0x1/0x0,0x1/0x0],_0x3ae785=[-0x1/0x0,-0x1/0x0,-0x1/0x0];for(let _0x277fb5=0x0;_0x277fb5<=0x8;_0x277fb5+=0x1){let _0x3dfe5b=_0x556f7a+(_0x42043c-_0x556f7a)*_0x277fb5/0x8;for(let _0x300094=0x0;_0x300094<=0x8;_0x300094+=0x1){let _0x2e2e93=_0x1ad434+(_0x593bd9-_0x1ad434)*_0x300094/0x8;for(let _0x356ac0 of[_0x5b0729,_0x7957c5]){let _0x111f88=geodeticToEcef(_0x2e2e93,_0x3dfe5b,_0x356ac0);for(let _0x19111b=0x0;_0x19111b<0x3;_0x19111b+=0x1){let _0x220896=(_0x111f88[_0x19111b]-_0x2cdf3b[_0x19111b])/_0x23531a;_0x42c1c8[_0x19111b]=Math[_0x2607bf(0xcc)](_0x42c1c8[_0x19111b],_0x220896),_0x3ae785[_0x19111b]=Math[_0x2607bf(0x334)](_0x3ae785[_0x19111b],_0x220896);}}}}let _0x1cb651=_0x3ae785[_0x2607bf(0x2f9)]((_0x21389b,_0x10ab00)=>_0x21389b-_0x42c1c8[_0x10ab00]);if(_0x1cb651[_0x2607bf(0x350)](_0x58481b=>!(_0x58481b>0x0)||!Number[_0x2607bf(0x193)](_0x58481b)))throw Error(_0x2607bf(0x182));return{'centerEcef':_0x2cdf3b,'normalizationMeters':_0x23531a,'proxyModelMatrix':[_0x1cb651[0x0],0x0,0x0,0x0,0x0,_0x1cb651[0x1],0x0,0x0,0x0,0x0,_0x1cb651[0x2],0x0,_0x42c1c8[0x0],_0x42c1c8[0x1],_0x42c1c8[0x2],0x1],'transform':{'mode':_0x2607bf(0x3c5),'centerEcefScaled':[_0x2cdf3b[0x0]/_0x23531a,_0x2cdf3b[0x1]/_0x23531a,_0x2cdf3b[0x2]/_0x23531a],'semiMajorAxisScaled':WGS84_SEMI_MAJOR_AXIS_METERS/_0x23531a,'semiMinorAxisScaled':WGS84_SEMI_MINOR_AXIS_METERS/_0x23531a,'longitudeRadians':[_0x1ad434,_0x593bd9],'latitudeRadians':[_0x556f7a,_0x42043c],'heightScaled':[_0x5b0729/_0x23531a,_0x7957c5/_0x23531a]}};},ecefToGeographicVolumeLocal=(_0x2fb436,_0x176914)=>[(_0x2fb436[0x0]-_0x176914[_0x1d30f8(0x2ab)][0x0])/_0x176914['normalizationMeters'],(_0x2fb436[0x1]-_0x176914[_0x1d30f8(0x2ab)][0x1])/_0x176914[_0x1d30f8(0x403)],(_0x2fb436[0x2]-_0x176914['centerEcef'][0x2])/_0x176914[_0x1d30f8(0x403)]],validatePositiveInteger=(_0x164746,_0x3766f3)=>{const _0x4a1b24=_0x1d30f8;if(!Number[_0x4a1b24(0x3b4)](_0x164746)||_0x164746<=0x0)throw Error(_0x3766f3+_0x4a1b24(0x21e)+_0x3766f3+_0x4a1b24(0x2d1));},validateAxis=(_0xce346,_0x244835)=>{const _0x4ea9e6=_0x1d30f8;if(validatePositiveInteger(_0xce346['count'],_0x244835+_0x4ea9e6(0x289)),!Number[_0x4ea9e6(0x193)](_0xce346[_0x4ea9e6(0x218)])||!Number[_0x4ea9e6(0x193)](_0xce346[_0x4ea9e6(0x144)]))throw Error(_0x244835+_0x4ea9e6(0x1c2)+_0x244835+_0x4ea9e6(0x2ec));if(_0xce346['count']===0x1&&_0xce346[_0x4ea9e6(0x218)]!==_0xce346[_0x4ea9e6(0x144)])throw Error(_0x244835+_0x4ea9e6(0x29a)+_0x244835+'\x20只有一个采样点时端点必须相等。');if(_0xce346['count']>0x1&&_0xce346[_0x4ea9e6(0x218)]===_0xce346[_0x4ea9e6(0x144)])throw Error(_0x244835+_0x4ea9e6(0x2e4)+_0x244835+_0x4ea9e6(0x3f6));},validateNoData=(_0x494fa8,_0x1baf39)=>{const _0x5356fd=_0x1d30f8;if(_0x494fa8!==void 0x0&&!Number[_0x5356fd(0x193)](_0x494fa8)&&!Number[_0x5356fd(0x3d4)](_0x494fa8))throw Error(_0x1baf39+_0x5356fd(0x2da)+_0x1baf39+_0x5356fd(0x1bd));},rangesEqual=(_0x55fde5,_0x20f816)=>_0x55fde5[_0x1d30f8(0x405)]===_0x20f816[_0x1d30f8(0x405)]&&_0x55fde5[_0x1d30f8(0x298)]===_0x20f816['xCount']&&_0x55fde5[_0x1d30f8(0x418)]===_0x20f816[_0x1d30f8(0x418)]&&_0x55fde5['levelCount']===_0x20f816['levelCount']&&_0x55fde5[_0x1d30f8(0x3c8)]===_0x20f816[_0x1d30f8(0x3c8)]&&_0x55fde5[_0x1d30f8(0x26c)]===_0x20f816['sourceYCount'],validateVolumeMetadata=_0x332b0c=>{const _0x286002=_0x1d30f8;if(validateAxis(_0x332b0c['xAxis'],_0x286002(0x17b)),validateAxis(_0x332b0c[_0x286002(0x2b7)],_0x286002(0x225)),validateAxis(_0x332b0c[_0x286002(0x1d9)],_0x286002(0x2ff)),validatePositiveInteger(_0x332b0c[_0x286002(0x26b)],_0x286002(0x397)),validateNoData(_0x332b0c[_0x286002(0x32e)],_0x286002(0xd8)),_0x332b0c[_0x286002(0x188)]!==void 0x0&&!Number[_0x286002(0x193)](_0x332b0c[_0x286002(0x188)]))throw Error(_0x286002(0x122));if(_0x332b0c['revision']!==void 0x0&&(!Number['isInteger'](_0x332b0c[_0x286002(0x130)])||_0x332b0c[_0x286002(0x130)]<0x0))throw Error(_0x286002(0x3b8));},validateVolumeTimeIndex=(_0x2feed3,_0x334a4e)=>{const _0x41a9d5=_0x1d30f8;if(!Number[_0x41a9d5(0x3b4)](_0x334a4e)||_0x334a4e<0x0||_0x334a4e>=_0x2feed3[_0x41a9d5(0x26b)])throw Error(_0x41a9d5(0x28e)+_0x334a4e+_0x41a9d5(0xd6));},validateVolumeChunkRange=(_0x10255e,_0x18b69c)=>{const _0x4ddc56=_0x1d30f8;let _0x31fef2=[[_0x18b69c[_0x4ddc56(0x405)],_0x4ddc56(0x405)],[_0x18b69c[_0x4ddc56(0x298)],'xCount'],[_0x18b69c[_0x4ddc56(0x418)],'levelStart'],[_0x18b69c[_0x4ddc56(0x3ce)],'levelCount'],[_0x18b69c['sourceYStart'],'sourceYStart'],[_0x18b69c[_0x4ddc56(0x26c)],'sourceYCount']];for(let [_0x142c0a,_0x30df2a]of _0x31fef2)if(!Number[_0x4ddc56(0x3b4)](_0x142c0a)||_0x142c0a<0x0||_0x30df2a[_0x4ddc56(0x1e8)](_0x4ddc56(0x3f0))&&_0x142c0a===0x0)throw Error(_0x4ddc56(0x227)+_0x30df2a+_0x4ddc56(0x390)+_0x142c0a+_0x4ddc56(0x148)+_0x30df2a+_0x4ddc56(0x36f));if(_0x18b69c[_0x4ddc56(0x405)]+_0x18b69c[_0x4ddc56(0x298)]>_0x10255e[_0x4ddc56(0xf3)]['count']||_0x18b69c[_0x4ddc56(0x418)]+_0x18b69c[_0x4ddc56(0x3ce)]>_0x10255e[_0x4ddc56(0x2b7)]['count']||_0x18b69c['sourceYStart']+_0x18b69c[_0x4ddc56(0x26c)]>_0x10255e['zAxis'][_0x4ddc56(0xdb)])throw Error(_0x4ddc56(0x201));},validateVolumeChunk=(_0x1542c2,_0x3a96b1,_0x303585,_0x3e529e)=>{const _0xcfed02=_0x1d30f8;if(validateVolumeTimeIndex(_0x1542c2,_0x3a96b1[_0xcfed02(0x394)]),validateVolumeChunkRange(_0x1542c2,_0x3a96b1['range']),_0x3e529e!==void 0x0&&_0x3a96b1[_0xcfed02(0x394)]!==_0x3e529e)throw Error(_0xcfed02(0x2b3));if(_0x303585&&!rangesEqual(_0x3a96b1[_0xcfed02(0x241)],_0x303585))throw Error('Returned\x20volume\x20chunk\x20range\x20does\x20not\x20match\x20the\x20request.\x20返回体积分块范围与请求不一致。');if(_0x3a96b1[_0xcfed02(0x238)]!==_0x3a96b1[_0xcfed02(0x241)][_0xcfed02(0x298)]||_0x3a96b1[_0xcfed02(0x26d)]!==_0x3a96b1[_0xcfed02(0x241)]['levelCount']||_0x3a96b1[_0xcfed02(0x3c4)]!==_0x3a96b1[_0xcfed02(0x241)][_0xcfed02(0x26c)])throw Error(_0xcfed02(0x3bc));let _0x148dca=_0x3a96b1['width']*_0x3a96b1[_0xcfed02(0x26d)]*_0x3a96b1[_0xcfed02(0x3c4)];if(!Number['isSafeInteger'](_0x148dca)||_0x3a96b1[_0xcfed02(0x270)][_0xcfed02(0x29b)]!==_0x148dca)throw Error(_0xcfed02(0x399)+_0x148dca+_0xcfed02(0x34e)+_0x3a96b1['values'][_0xcfed02(0x29b)]+_0xcfed02(0x24d));},validateVolumeSource=_0x327eab=>{const _0x131835=_0x1d30f8;if(!_0x327eab||typeof _0x327eab[_0x131835(0x14d)]!=_0x131835(0x3b1))throw Error('Volume\x20source\x20must\x20provide\x20readChunk().\x20体积数据源必须提供\x20readChunk()。');validateVolumeMetadata(_0x327eab[_0x131835(0x1f0)]);},validateBrickShape=_0x7169a8=>{const _0x4b3712=_0x1d30f8;for(let [_0x3ce134,_0x4eb084]of[[_0x7169a8[_0x4b3712(0x238)],_0x4b3712(0x238)],[_0x7169a8[_0x4b3712(0x26d)],'height'],[_0x7169a8[_0x4b3712(0x3c4)],_0x4b3712(0x3c4)]])if(!Number[_0x4b3712(0x3b4)](_0x3ce134)||_0x3ce134<=0x0)throw Error(_0x4b3712(0x177)+_0x4eb084+_0x4b3712(0x308)+_0x4eb084+_0x4b3712(0x2d1));if(!Number[_0x4b3712(0x3b4)](_0x7169a8[_0x4b3712(0x15b)])||_0x7169a8[_0x4b3712(0x15b)]<0x1)throw Error(_0x4b3712(0x353));},resolveVolumeBrickShape=(_0x262025={})=>{const _0x5aac30=_0x1d30f8;let _0x2e818a={'width':_0x262025[_0x5aac30(0x238)]??0x100,'height':_0x262025[_0x5aac30(0x26d)]??0x8,'depth':_0x262025[_0x5aac30(0x3c4)]??0x100,'halo':_0x262025[_0x5aac30(0x15b)]??0x1};return validateBrickShape(_0x2e818a),_0x2e818a;},createVolumeBrickLayout=(_0x1e3007,_0x23e7c7={})=>{const _0x33c586=_0x1d30f8;validateVolumeMetadata(_0x1e3007);let _0x34e3a7=resolveVolumeBrickShape(_0x23e7c7),_0x50d108=Math[_0x33c586(0x332)](_0x1e3007[_0x33c586(0xf3)][_0x33c586(0xdb)]/_0x34e3a7[_0x33c586(0x238)]),_0x172daf=Math['ceil'](_0x1e3007[_0x33c586(0x2b7)]['count']/_0x34e3a7[_0x33c586(0x26d)]),_0x4e8c03=Math[_0x33c586(0x332)](_0x1e3007[_0x33c586(0x1d9)]['count']/_0x34e3a7[_0x33c586(0x3c4)]);return{'shape':_0x34e3a7,'countX':_0x50d108,'countY':_0x172daf,'countZ':_0x4e8c03,'brickCount':_0x50d108*_0x172daf*_0x4e8c03};},createVolumeBrickKey=_0x49fafe=>_0x49fafe['x']+':'+_0x49fafe['y']+':'+_0x49fafe['z'],createVolumeBrickDescriptor=(_0xcbc52a,_0x2a7b22,_0x3ccef3)=>{const _0x2152c0=_0x1d30f8;if(!Number[_0x2152c0(0x3b4)](_0x3ccef3['x'])||!Number[_0x2152c0(0x3b4)](_0x3ccef3['y'])||!Number[_0x2152c0(0x3b4)](_0x3ccef3['z'])||_0x3ccef3['x']<0x0||_0x3ccef3['x']>=_0x2a7b22['countX']||_0x3ccef3['y']<0x0||_0x3ccef3['y']>=_0x2a7b22[_0x2152c0(0x26e)]||_0x3ccef3['z']<0x0||_0x3ccef3['z']>=_0x2a7b22[_0x2152c0(0x279)])throw Error(_0x2152c0(0x3ff));let _0x401da8=_0x3ccef3['x']*_0x2a7b22[_0x2152c0(0x39e)][_0x2152c0(0x238)],_0x1429bc=_0x3ccef3['y']*_0x2a7b22[_0x2152c0(0x39e)][_0x2152c0(0x26d)],_0x2cb827=_0x3ccef3['z']*_0x2a7b22[_0x2152c0(0x39e)][_0x2152c0(0x3c4)],_0x45d295=Math[_0x2152c0(0xcc)](_0x2a7b22[_0x2152c0(0x39e)][_0x2152c0(0x238)],_0xcbc52a[_0x2152c0(0xf3)][_0x2152c0(0xdb)]-_0x401da8),_0xeba4fb=Math[_0x2152c0(0xcc)](_0x2a7b22[_0x2152c0(0x39e)][_0x2152c0(0x26d)],_0xcbc52a[_0x2152c0(0x2b7)][_0x2152c0(0xdb)]-_0x1429bc),_0xd1efc1=Math[_0x2152c0(0xcc)](_0x2a7b22['shape'][_0x2152c0(0x3c4)],_0xcbc52a[_0x2152c0(0x1d9)][_0x2152c0(0xdb)]-_0x2cb827),_0x151c18=_0x2a7b22[_0x2152c0(0x39e)][_0x2152c0(0x15b)],_0x25d7a3=Math['max'](0x0,_0x401da8-_0x151c18),_0x304711=Math['max'](0x0,_0x1429bc-_0x151c18),_0x181e8f=Math['max'](0x0,_0x2cb827-_0x151c18),_0x4d910a=Math[_0x2152c0(0xcc)](_0xcbc52a[_0x2152c0(0xf3)]['count'],_0x401da8+_0x45d295+_0x151c18),_0x3f7751=Math['min'](_0xcbc52a[_0x2152c0(0x2b7)][_0x2152c0(0xdb)],_0x1429bc+_0xeba4fb+_0x151c18),_0x1730cb=Math[_0x2152c0(0xcc)](_0xcbc52a['zAxis'][_0x2152c0(0xdb)],_0x2cb827+_0xd1efc1+_0x151c18),_0x9f6ef6=_0x2a7b22[_0x2152c0(0x39e)][_0x2152c0(0x238)]+_0x151c18*0x2,_0x4fa2a8=_0x2a7b22[_0x2152c0(0x39e)][_0x2152c0(0x26d)]+_0x151c18*0x2,_0x2a43d7=_0x2a7b22[_0x2152c0(0x39e)]['depth']+_0x151c18*0x2;return{'key':createVolumeBrickKey(_0x3ccef3),'coordinate':_0x3ccef3,'coreRange':{'xStart':_0x401da8,'xCount':_0x45d295,'levelStart':_0x1429bc,'levelCount':_0xeba4fb,'sourceYStart':_0x2cb827,'sourceYCount':_0xd1efc1},'readRange':{'xStart':_0x25d7a3,'xCount':_0x4d910a-_0x25d7a3,'levelStart':_0x304711,'levelCount':_0x3f7751-_0x304711,'sourceYStart':_0x181e8f,'sourceYCount':_0x1730cb-_0x181e8f},'physicalWidth':_0x9f6ef6,'physicalHeight':_0x4fa2a8,'physicalDepth':_0x2a43d7,'byteLength':_0x9f6ef6*_0x4fa2a8*_0x2a43d7*Float32Array[_0x2152c0(0xe9)]};},createVolumeBrickDescriptors=(_0x2f845b,_0xec9a02)=>{const _0x498ace=_0x1d30f8;let _0x4da2d1=[];for(let _0x2e1eeb=0x0;_0x2e1eeb<_0xec9a02[_0x498ace(0x279)];_0x2e1eeb+=0x1)for(let _0x2e361c=0x0;_0x2e361c<_0xec9a02[_0x498ace(0x26e)];_0x2e361c+=0x1)for(let _0x5ef240=0x0;_0x5ef240<_0xec9a02[_0x498ace(0xf5)];_0x5ef240+=0x1)_0x4da2d1[_0x498ace(0x40e)](createVolumeBrickDescriptor(_0x2f845b,_0xec9a02,{'x':_0x5ef240,'y':_0x2e361c,'z':_0x2e1eeb}));return _0x4da2d1;},EPSILON=1e-8,createMatrix=()=>new Float32Array(0x10),dotVector3=(_0x16e24e,_0x1045c6)=>_0x16e24e[0x0]*_0x1045c6[0x0]+_0x16e24e[0x1]*_0x1045c6[0x1]+_0x16e24e[0x2]*_0x1045c6[0x2],subtractVector3=(_0x53194f,_0x3833c5)=>[_0x53194f[0x0]-_0x3833c5[0x0],_0x53194f[0x1]-_0x3833c5[0x1],_0x53194f[0x2]-_0x3833c5[0x2]],crossVector3=(_0x146681,_0x1381eb)=>[_0x146681[0x1]*_0x1381eb[0x2]-_0x146681[0x2]*_0x1381eb[0x1],_0x146681[0x2]*_0x1381eb[0x0]-_0x146681[0x0]*_0x1381eb[0x2],_0x146681[0x0]*_0x1381eb[0x1]-_0x146681[0x1]*_0x1381eb[0x0]],normalizeVector3=_0x700419=>{const _0x580685=_0x1d30f8;let _0x5116b9=Math[_0x580685(0x20b)](_0x700419[0x0],_0x700419[0x1],_0x700419[0x2]);if(_0x5116b9<=EPSILON)throw Error('无法归一化长度为零的三维向量。');return[_0x700419[0x0]/_0x5116b9,_0x700419[0x1]/_0x5116b9,_0x700419[0x2]/_0x5116b9];},createIdentityMatrix=()=>{let _0x1bd4bc=createMatrix();return _0x1bd4bc[0x0]=0x1,_0x1bd4bc[0x5]=0x1,_0x1bd4bc[0xa]=0x1,_0x1bd4bc[0xf]=0x1,_0x1bd4bc;},multiplyMatrices=(_0x163fa6,_0x3c311e)=>{let _0x2c964c=createMatrix();for(let _0x5260bd=0x0;_0x5260bd<0x4;_0x5260bd+=0x1)for(let _0x212f74=0x0;_0x212f74<0x4;_0x212f74+=0x1){let _0x4d73bd=0x0;for(let _0x382682=0x0;_0x382682<0x4;_0x382682+=0x1)_0x4d73bd+=_0x163fa6[_0x382682*0x4+_0x212f74]*_0x3c311e[_0x5260bd*0x4+_0x382682];_0x2c964c[_0x5260bd*0x4+_0x212f74]=_0x4d73bd;}return _0x2c964c;},invertMatrix=_0x13eb60=>{const _0x527323=_0x1d30f8;let _0x3e2869=Array['from']({'length':0x4},(_0x347fb5,_0x18c119)=>{let _0x14013d=new Float64Array(0x8);for(let _0x22a63b=0x0;_0x22a63b<0x4;_0x22a63b+=0x1)_0x14013d[_0x22a63b]=_0x13eb60[_0x22a63b*0x4+_0x18c119];return _0x14013d[_0x18c119+0x4]=0x1,_0x14013d;});for(let _0x184242=0x0;_0x184242<0x4;_0x184242+=0x1){let _0x541a51=_0x184242;for(let _0x345370=_0x184242+0x1;_0x345370<0x4;_0x345370+=0x1)Math[_0x527323(0x356)](_0x3e2869[_0x345370][_0x184242])>Math['abs'](_0x3e2869[_0x541a51][_0x184242])&&(_0x541a51=_0x345370);if(Math[_0x527323(0x356)](_0x3e2869[_0x541a51][_0x184242])<=EPSILON)throw Error(_0x527323(0x25d));_0x541a51!==_0x184242&&([_0x3e2869[_0x184242],_0x3e2869[_0x541a51]]=[_0x3e2869[_0x541a51],_0x3e2869[_0x184242]]);let _0x300127=_0x3e2869[_0x184242][_0x184242];for(let _0x2177ba=0x0;_0x2177ba<0x8;_0x2177ba+=0x1)_0x3e2869[_0x184242][_0x2177ba]/=_0x300127;for(let _0x22d907=0x0;_0x22d907<0x4;_0x22d907+=0x1){if(_0x22d907===_0x184242)continue;let _0x17aaa5=_0x3e2869[_0x22d907][_0x184242];for(let _0x2a22ec=0x0;_0x2a22ec<0x8;_0x2a22ec+=0x1)_0x3e2869[_0x22d907][_0x2a22ec]-=_0x17aaa5*_0x3e2869[_0x184242][_0x2a22ec];}}let _0x600252=createMatrix();for(let _0x176157=0x0;_0x176157<0x4;_0x176157+=0x1)for(let _0x384db=0x0;_0x384db<0x4;_0x384db+=0x1)_0x600252[_0x384db*0x4+_0x176157]=_0x3e2869[_0x176157][_0x384db+0x4];return _0x600252;},createLookAtMatrix=(_0x112107,_0x173bd8,_0x1bd727)=>{let _0x16d1e1=normalizeVector3(subtractVector3(_0x112107,_0x173bd8)),_0x20ab50=normalizeVector3(crossVector3(_0x1bd727,_0x16d1e1)),_0x7f8ada=crossVector3(_0x16d1e1,_0x20ab50),_0xfc3c47=createIdentityMatrix();return _0xfc3c47[0x0]=_0x20ab50[0x0],_0xfc3c47[0x1]=_0x7f8ada[0x0],_0xfc3c47[0x2]=_0x16d1e1[0x0],_0xfc3c47[0x4]=_0x20ab50[0x1],_0xfc3c47[0x5]=_0x7f8ada[0x1],_0xfc3c47[0x6]=_0x16d1e1[0x1],_0xfc3c47[0x8]=_0x20ab50[0x2],_0xfc3c47[0x9]=_0x7f8ada[0x2],_0xfc3c47[0xa]=_0x16d1e1[0x2],_0xfc3c47[0xc]=-dotVector3(_0x20ab50,_0x112107),_0xfc3c47[0xd]=-dotVector3(_0x7f8ada,_0x112107),_0xfc3c47[0xe]=-dotVector3(_0x16d1e1,_0x112107),_0xfc3c47;},createPerspectiveMatrix=(_0x3e9946,_0x3186bd,_0x4e49b5,_0x5cf94e)=>{const _0x4c63a3=_0x1d30f8;if(!(_0x3e9946>0x0&&_0x3e9946<Math['PI']))throw Error(_0x4c63a3(0x192));if(!(_0x3186bd>0x0))throw Error(_0x4c63a3(0x309));if(!(_0x4e49b5>0x0&&_0x5cf94e>_0x4e49b5))throw Error('相机裁剪距离必须满足\x200\x20<\x20near\x20<\x20far。');let _0x31d6ae=0x1/Math[_0x4c63a3(0x3ec)](_0x3e9946/0x2),_0x4400c9=createMatrix();return _0x4400c9[0x0]=_0x31d6ae/_0x3186bd,_0x4400c9[0x5]=_0x31d6ae,_0x4400c9[0xa]=_0x5cf94e/(_0x4e49b5-_0x5cf94e),_0x4400c9[0xb]=-0x1,_0x4400c9[0xe]=_0x4e49b5*_0x5cf94e/(_0x4e49b5-_0x5cf94e),_0x4400c9;},createOrthographicMatrix=(_0x3b2603,_0x15a5e0,_0x5369b8,_0x50a69f)=>{const _0x4ad44e=_0x1d30f8;if(!(_0x3b2603>0x0&&_0x15a5e0>0x0))throw Error(_0x4ad44e(0x1d7));if(!(_0x5369b8>=0x0&&_0x50a69f>_0x5369b8))throw Error(_0x4ad44e(0x1d1));let _0x2d511b=_0x3b2603*_0x15a5e0,_0x4b4b43=createIdentityMatrix();return _0x4b4b43[0x0]=0x2/_0x2d511b,_0x4b4b43[0x5]=0x2/_0x3b2603,_0x4b4b43[0xa]=0x1/(_0x5369b8-_0x50a69f),_0x4b4b43[0xe]=_0x5369b8/(_0x5369b8-_0x50a69f),_0x4b4b43;},createScaleMatrix=(_0xb2d2c7,_0x11ffa8,_0x12ba8c)=>{let _0x42144c=createIdentityMatrix();return _0x42144c[0x0]=_0xb2d2c7,_0x42144c[0x5]=_0x11ffa8,_0x42144c[0xa]=_0x12ba8c,_0x42144c;},composeVolumeModelMatrix=(_0x28081a,_0x3b50a0)=>{const _0x3ace6b=_0x1d30f8;if(!(_0x3b50a0>0x0)||!Number[_0x3ace6b(0x193)](_0x3b50a0))throw Error(_0x3ace6b(0x2a9));let _0x122b48=createScaleMatrix(0x1,_0x3b50a0,0x1);return _0x28081a?multiplyMatrices(_0x28081a,_0x122b48):_0x122b48;},transformPoint=(_0x33cccd,_0x1627a4,_0x5e3a67=0x1)=>[_0x33cccd[0x0]*_0x1627a4[0x0]+_0x33cccd[0x4]*_0x1627a4[0x1]+_0x33cccd[0x8]*_0x1627a4[0x2]+_0x33cccd[0xc]*_0x5e3a67,_0x33cccd[0x1]*_0x1627a4[0x0]+_0x33cccd[0x5]*_0x1627a4[0x1]+_0x33cccd[0x9]*_0x1627a4[0x2]+_0x33cccd[0xd]*_0x5e3a67,_0x33cccd[0x2]*_0x1627a4[0x0]+_0x33cccd[0x6]*_0x1627a4[0x1]+_0x33cccd[0xa]*_0x1627a4[0x2]+_0x33cccd[0xe]*_0x5e3a67,_0x33cccd[0x3]*_0x1627a4[0x0]+_0x33cccd[0x7]*_0x1627a4[0x1]+_0x33cccd[0xb]*_0x1627a4[0x2]+_0x33cccd[0xf]*_0x5e3a67],projectPointToViewport=(_0x9a7d3f,_0x250db9,_0x4df8ad,_0x446418)=>{let _0x27116e=transformPoint(_0x9a7d3f,_0x250db9);if(_0x27116e[0x3]<=EPSILON)return null;let _0x4b1e36=0x1/_0x27116e[0x3];return[(_0x27116e[0x0]*_0x4b1e36*0.5+0.5)*_0x4df8ad,(0.5-_0x27116e[0x1]*_0x4b1e36*0.5)*_0x446418,_0x27116e[0x2]*_0x4b1e36];},DEFAULT_POSITION=[0x0,0x1,0x2],DEFAULT_TARGET=[0x0,0x0,0x0],DEFAULT_UP=[0x0,0x1,0x0],DEFAULT_PROJECTION={'type':_0x1d30f8(0x189),'fovYDegrees':0x2d,'near':0.01,'far':0x2710},DEGREE_TO_RADIAN=Math['PI']/0xb4,cloneVector=_0x31d7ff=>[_0x31d7ff[0x0],_0x31d7ff[0x1],_0x31d7ff[0x2]],cloneProjection=_0x33eb76=>(_0x33eb76[_0x1d30f8(0x1a0)],{..._0x33eb76}),cloneState=_0x1a72d3=>({'position':cloneVector(_0x1a72d3[_0x1d30f8(0x209)]),'target':cloneVector(_0x1a72d3[_0x1d30f8(0x306)]),'up':cloneVector(_0x1a72d3['up']),'projection':cloneProjection(_0x1a72d3[_0x1d30f8(0x11a)])}),subtractVector=(_0x5384da,_0x33ff1b)=>[_0x5384da[0x0]-_0x33ff1b[0x0],_0x5384da[0x1]-_0x33ff1b[0x1],_0x5384da[0x2]-_0x33ff1b[0x2]],addVector=(_0x4304eb,_0xea8a91)=>[_0x4304eb[0x0]+_0xea8a91[0x0],_0x4304eb[0x1]+_0xea8a91[0x1],_0x4304eb[0x2]+_0xea8a91[0x2]],scaleVector=(_0x1d5945,_0x5d69be)=>[_0x1d5945[0x0]*_0x5d69be,_0x1d5945[0x1]*_0x5d69be,_0x1d5945[0x2]*_0x5d69be],crossVector$1=(_0x49f0e5,_0x4908ae)=>[_0x49f0e5[0x1]*_0x4908ae[0x2]-_0x49f0e5[0x2]*_0x4908ae[0x1],_0x49f0e5[0x2]*_0x4908ae[0x0]-_0x49f0e5[0x0]*_0x4908ae[0x2],_0x49f0e5[0x0]*_0x4908ae[0x1]-_0x49f0e5[0x1]*_0x4908ae[0x0]],normalizeVector$1=_0x236da3=>{const _0x3a613d=_0x1d30f8;let _0x4d41a5=Math[_0x3a613d(0x20b)](_0x236da3[0x0],_0x236da3[0x1],_0x236da3[0x2]);return _0x4d41a5===0x0?[0x0,0x0,0x0]:scaleVector(_0x236da3,0x1/_0x4d41a5);},clamp$1=(_0x4aef1e,_0x4fc94a,_0xd85ec9)=>Math[_0x1d30f8(0xcc)](_0xd85ec9,Math[_0x1d30f8(0x334)](_0x4fc94a,_0x4aef1e)),validateProjection=_0x35d99a=>{const _0x8969cc=_0x1d30f8;if(!(_0x35d99a[_0x8969cc(0x384)]>=0x0&&_0x35d99a[_0x8969cc(0x170)]>_0x35d99a['near']))throw Error('相机裁剪距离必须满足\x200\x20<=\x20near\x20<\x20far。');if(_0x35d99a[_0x8969cc(0x1a0)]===_0x8969cc(0x189)&&!(_0x35d99a[_0x8969cc(0x384)]>0x0&&_0x35d99a[_0x8969cc(0x347)]>0x0&&_0x35d99a['fovYDegrees']<0xb4))throw Error(_0x8969cc(0x3a8));if(_0x35d99a[_0x8969cc(0x1a0)]==='orthographic'&&!(_0x35d99a[_0x8969cc(0x26d)]>0x0))throw Error(_0x8969cc(0x3d6));},resolveInitialState=_0x537498=>{const _0x1bea76=_0x1d30f8;let _0x4e689b={'position':_0x537498[_0x1bea76(0x239)]?.[_0x1bea76(0x209)]?cloneVector(_0x537498['state'][_0x1bea76(0x209)]):cloneVector(DEFAULT_POSITION),'target':_0x537498[_0x1bea76(0x239)]?.[_0x1bea76(0x306)]?cloneVector(_0x537498[_0x1bea76(0x239)]['target']):cloneVector(DEFAULT_TARGET),'up':_0x537498[_0x1bea76(0x239)]?.['up']?cloneVector(_0x537498[_0x1bea76(0x239)]['up']):cloneVector(DEFAULT_UP),'projection':_0x537498[_0x1bea76(0x239)]?.[_0x1bea76(0x11a)]?cloneProjection(_0x537498[_0x1bea76(0x239)][_0x1bea76(0x11a)]):cloneProjection(DEFAULT_PROJECTION)};return validateProjection(_0x4e689b[_0x1bea76(0x11a)]),_0x4e689b;};var VolumeCamera=class{[_0x1d30f8(0x3a4)];[_0x1d30f8(0x401)];['rotateSpeed'];[_0x1d30f8(0x258)];[_0x1d30f8(0x119)];[_0x1d30f8(0x2a1)];[_0x1d30f8(0x316)];[_0x1d30f8(0x38e)];[_0x1d30f8(0x1ae)];constructor(_0x25da27={}){const _0x30a8b8=_0x1d30f8;if(this[_0x30a8b8(0x3a4)]=resolveInitialState(_0x25da27),this[_0x30a8b8(0x401)]=_0x25da27[_0x30a8b8(0x401)]??0x1,this[_0x30a8b8(0x417)]=_0x25da27[_0x30a8b8(0x417)]??0.005,this[_0x30a8b8(0x258)]=_0x25da27[_0x30a8b8(0x258)]??0x1,this[_0x30a8b8(0x119)]=_0x25da27['zoomSpeed']??0.0015,this[_0x30a8b8(0x2a1)]=_0x25da27['minimumDistance']??0.001,this[_0x30a8b8(0x316)]=_0x25da27[_0x30a8b8(0x316)]??0x1/0x0,this['minimumPitch']=(_0x25da27['minimumPitchDegrees']??-0x59)*DEGREE_TO_RADIAN,this[_0x30a8b8(0x1ae)]=(_0x25da27['maximumPitchDegrees']??0x59)*DEGREE_TO_RADIAN,!(this[_0x30a8b8(0x401)]>0x0))throw Error(_0x30a8b8(0x309));}get[_0x1d30f8(0x239)](){const _0x2438fa=_0x1d30f8;return cloneState(this[_0x2438fa(0x3a4)]);}get[_0x1d30f8(0x1ef)](){const _0x17c890=_0x1d30f8;let _0x3bb379=createLookAtMatrix(this[_0x17c890(0x3a4)][_0x17c890(0x209)],this['cameraState']['target'],this[_0x17c890(0x3a4)]['up']),_0x5b5bd6=this[_0x17c890(0x1c6)](),_0x4a3527=multiplyMatrices(_0x5b5bd6,_0x3bb379);return{'view':_0x3bb379,'projection':_0x5b5bd6,'viewProjection':_0x4a3527,'inverseViewProjection':invertMatrix(_0x4a3527)};}[_0x1d30f8(0x169)](_0x4242e0){const _0x314b41=_0x1d30f8;validateProjection(_0x4242e0[_0x314b41(0x11a)]),this[_0x314b41(0x3a4)]=cloneState(_0x4242e0);}[_0x1d30f8(0x10f)](_0x40f217){const _0x2443b8=_0x1d30f8;if(!(_0x40f217>0x0)||!Number['isFinite'](_0x40f217))throw Error('相机宽高比必须是大于\x200\x20的有限数。');this[_0x2443b8(0x401)]=_0x40f217;}[_0x1d30f8(0xcb)](_0x37109c){const _0x58a586=_0x1d30f8;if(_0x37109c===this[_0x58a586(0x3a4)][_0x58a586(0x11a)][_0x58a586(0x1a0)])return;let _0x10aa07=Math[_0x58a586(0x20b)](...subtractVector(this[_0x58a586(0x3a4)][_0x58a586(0x209)],this['cameraState'][_0x58a586(0x306)]));if(_0x37109c===_0x58a586(0x325)){let _0x383a65=this[_0x58a586(0x3a4)]['projection'],_0x3edd93=_0x383a65[_0x58a586(0x1a0)]===_0x58a586(0x189)?_0x383a65['fovYDegrees']*DEGREE_TO_RADIAN:0x2d*DEGREE_TO_RADIAN;this['cameraState'][_0x58a586(0x11a)]={'type':_0x37109c,'height':0x2*_0x10aa07*Math[_0x58a586(0x3ec)](_0x3edd93/0x2),'near':_0x383a65[_0x58a586(0x384)],'far':_0x383a65[_0x58a586(0x170)]};return;}let _0x4f7730=this[_0x58a586(0x3a4)][_0x58a586(0x11a)],_0x52220e=_0x4f7730['type']==='orthographic'?_0x4f7730[_0x58a586(0x26d)]/(0x2*Math['tan'](0x2d*DEGREE_TO_RADIAN/0x2)):_0x10aa07,_0x121984=normalizeVector$1(subtractVector(this[_0x58a586(0x3a4)][_0x58a586(0x209)],this[_0x58a586(0x3a4)][_0x58a586(0x306)]));this['cameraState'][_0x58a586(0x209)]=addVector(this[_0x58a586(0x3a4)]['target'],scaleVector(_0x121984,_0x52220e)),this[_0x58a586(0x3a4)][_0x58a586(0x11a)]={'type':_0x37109c,'fovYDegrees':0x2d,'near':_0x4f7730[_0x58a586(0x384)],'far':_0x4f7730[_0x58a586(0x170)]};}['orbit'](_0x57f9f3,_0x53cc16){const _0x58ca07=_0x1d30f8;let _0x1c980c=subtractVector(this[_0x58ca07(0x3a4)][_0x58ca07(0x209)],this[_0x58ca07(0x3a4)][_0x58ca07(0x306)]),_0x5b80d9=Math[_0x58ca07(0x20b)](..._0x1c980c);if(_0x5b80d9===0x0)return;let _0x3ad47f=Math[_0x58ca07(0x402)](_0x1c980c[0x0],_0x1c980c[0x2])-_0x57f9f3*this[_0x58ca07(0x417)],_0x4b21e1=clamp$1(Math[_0x58ca07(0x368)](_0x1c980c[0x1]/_0x5b80d9)+_0x53cc16*this[_0x58ca07(0x417)],this[_0x58ca07(0x38e)],this[_0x58ca07(0x1ae)]),_0x1bc48d=Math[_0x58ca07(0x16c)](_0x4b21e1)*_0x5b80d9;this['cameraState'][_0x58ca07(0x209)]=addVector(this[_0x58ca07(0x3a4)][_0x58ca07(0x306)],[Math['sin'](_0x3ad47f)*_0x1bc48d,Math['sin'](_0x4b21e1)*_0x5b80d9,Math[_0x58ca07(0x16c)](_0x3ad47f)*_0x1bc48d]);}['pan'](_0x4e2e08,_0x3e4953,_0x24db97){const _0x63575=_0x1d30f8;if(!(_0x24db97>0x0))return;let _0x4179ef=normalizeVector$1(subtractVector(this[_0x63575(0x3a4)][_0x63575(0x306)],this[_0x63575(0x3a4)]['position'])),_0x1ed02b=normalizeVector$1(crossVector$1(_0x4179ef,this[_0x63575(0x3a4)]['up'])),_0x581062=normalizeVector$1(crossVector$1(_0x1ed02b,_0x4179ef)),_0x55e00e=Math[_0x63575(0x20b)](...subtractVector(this[_0x63575(0x3a4)][_0x63575(0x209)],this[_0x63575(0x3a4)]['target'])),_0x2a7126=(this[_0x63575(0x3a4)]['projection'][_0x63575(0x1a0)]===_0x63575(0x325)?this[_0x63575(0x3a4)][_0x63575(0x11a)][_0x63575(0x26d)]:0x2*_0x55e00e*Math[_0x63575(0x3ec)](this[_0x63575(0x3a4)]['projection']['fovYDegrees']*DEGREE_TO_RADIAN/0x2))/_0x24db97*this['panSpeed'],_0xa8cb0c=addVector(scaleVector(_0x1ed02b,-_0x4e2e08*_0x2a7126),scaleVector(_0x581062,_0x3e4953*_0x2a7126));this[_0x63575(0x3a4)][_0x63575(0x209)]=addVector(this['cameraState']['position'],_0xa8cb0c),this[_0x63575(0x3a4)][_0x63575(0x306)]=addVector(this[_0x63575(0x3a4)]['target'],_0xa8cb0c);}['dolly'](_0x3971c6){const _0x1c8569=_0x1d30f8;let _0x1365d0=Math['exp'](_0x3971c6*this[_0x1c8569(0x119)]);if(this[_0x1c8569(0x3a4)]['projection'][_0x1c8569(0x1a0)]===_0x1c8569(0x325)){this[_0x1c8569(0x3a4)][_0x1c8569(0x11a)]={...this['cameraState'][_0x1c8569(0x11a)],'height':Math[_0x1c8569(0x334)](this[_0x1c8569(0x2a1)],this[_0x1c8569(0x3a4)]['projection'][_0x1c8569(0x26d)]*_0x1365d0)};return;}let _0x15acfe=subtractVector(this['cameraState'][_0x1c8569(0x209)],this['cameraState'][_0x1c8569(0x306)]),_0xe92715=clamp$1(Math['hypot'](..._0x15acfe)*_0x1365d0,this['minimumDistance'],this[_0x1c8569(0x316)]);this[_0x1c8569(0x3a4)][_0x1c8569(0x209)]=addVector(this[_0x1c8569(0x3a4)][_0x1c8569(0x306)],scaleVector(normalizeVector$1(_0x15acfe),_0xe92715));}[_0x1d30f8(0x1c6)](){const _0x1aa426=_0x1d30f8;let _0x392462=this[_0x1aa426(0x3a4)]['projection'];return _0x392462['type']===_0x1aa426(0x189)?createPerspectiveMatrix(_0x392462[_0x1aa426(0x347)]*DEGREE_TO_RADIAN,this[_0x1aa426(0x401)],_0x392462[_0x1aa426(0x384)],_0x392462[_0x1aa426(0x170)]):createOrthographicMatrix(_0x392462[_0x1aa426(0x26d)],this[_0x1aa426(0x401)],_0x392462[_0x1aa426(0x384)],_0x392462[_0x1aa426(0x170)]);}};const isMissingValue=(_0x437a45,_0xbd9581)=>Number[_0x1d30f8(0x3d4)](_0x437a45)||_0xbd9581!==void 0x0&&_0x437a45===_0xbd9581,axisValueToNormalized=(_0xda0c13,_0x4d7329)=>_0xda0c13[_0x1d30f8(0x218)]===_0xda0c13[_0x1d30f8(0x144)]?0x0:(_0x4d7329-_0xda0c13['start'])/(_0xda0c13['end']-_0xda0c13[_0x1d30f8(0x218)]),validateProfile=_0x4591a6=>{const _0xe36f76=_0x1d30f8;if(!_0x4591a6['id'])throw Error(_0xe36f76(0x2ba));if(_0x4591a6[_0xe36f76(0x205)][_0xe36f76(0x29b)]<0x4||_0x4591a6['path'][_0xe36f76(0x29b)]%0x2!=0x0)throw Error('路线剖面\x20'+_0x4591a6['id']+_0xe36f76(0x217));if(_0x4591a6['heights'][_0xe36f76(0x29b)]<0x2)throw Error(_0xe36f76(0x359)+_0x4591a6['id']+_0xe36f76(0x1b6));let _0xf7a3a9=_0x4591a6[_0xe36f76(0x205)][_0xe36f76(0x29b)]/0x2;if(_0x4591a6[_0xe36f76(0x270)][_0xe36f76(0x29b)]!==_0xf7a3a9*_0x4591a6['heights'][_0xe36f76(0x29b)])throw Error(_0xe36f76(0x359)+_0x4591a6['id']+_0xe36f76(0x3ed));if(_0x4591a6[_0xe36f76(0x251)]!==void 0x0&&(!(_0x4591a6[_0xe36f76(0x251)]>=0x0&&_0x4591a6[_0xe36f76(0x251)]<=0x1)||!Number[_0xe36f76(0x193)](_0x4591a6[_0xe36f76(0x251)])))throw Error(_0xe36f76(0x359)+_0x4591a6['id']+_0xe36f76(0x40f));for(let _0x3163a8 of _0x4591a6[_0xe36f76(0x205)])if(!Number['isFinite'](_0x3163a8))throw Error(_0xe36f76(0x359)+_0x4591a6['id']+_0xe36f76(0x2ca));for(let _0x4181ad of _0x4591a6[_0xe36f76(0x20a)])if(!Number[_0xe36f76(0x193)](_0x4181ad))throw Error('路线剖面\x20'+_0x4591a6['id']+_0xe36f76(0x231));return _0xf7a3a9;},createPositions=(_0xe91c13,_0xe02fbc,_0x2929ae)=>{const _0x28f071=_0x1d30f8;let _0x50ea6e=new Float32Array(_0xe02fbc*_0xe91c13[_0x28f071(0x20a)]['length']*0x3);for(let _0x36f487=0x0;_0x36f487<_0xe91c13[_0x28f071(0x20a)][_0x28f071(0x29b)];_0x36f487+=0x1)for(let _0x550fbb=0x0;_0x550fbb<_0xe02fbc;_0x550fbb+=0x1){let _0x56a476=(_0x36f487*_0xe02fbc+_0x550fbb)*0x3;_0x50ea6e[_0x56a476]=axisValueToNormalized(_0x2929ae[_0x28f071(0xf3)],_0xe91c13[_0x28f071(0x205)][_0x550fbb*0x2]),_0x50ea6e[_0x56a476+0x1]=axisValueToNormalized(_0x2929ae[_0x28f071(0x2b7)],_0xe91c13['heights'][_0x36f487]),_0x50ea6e[_0x56a476+0x2]=axisValueToNormalized(_0x2929ae[_0x28f071(0x1d9)],_0xe91c13[_0x28f071(0x205)][_0x550fbb*0x2+0x1]);}return _0x50ea6e;},createValues=_0x226384=>{const _0x42c03e=_0x1d30f8;let _0x32daa2=new Float32Array(_0x226384[_0x42c03e(0x270)][_0x42c03e(0x29b)]);for(let _0x51eee9=0x0;_0x51eee9<_0x226384['values']['length'];_0x51eee9+=0x1){let _0x2869f0=_0x226384['values'][_0x51eee9];_0x32daa2[_0x51eee9]=isMissingValue(_0x2869f0,_0x226384[_0x42c03e(0x32e)])?NaN:_0x2869f0;}return _0x32daa2;},createIndices=(_0xb2a3b4,_0x291594)=>{let _0xb1b900=new Uint32Array((_0xb2a3b4-0x1)*(_0x291594-0x1)*0x6),_0x23e4cd=0x0;for(let _0x487617=0x0;_0x487617<_0x291594-0x1;_0x487617+=0x1)for(let _0x20249f=0x0;_0x20249f<_0xb2a3b4-0x1;_0x20249f+=0x1){let _0x330d44=_0x487617*_0xb2a3b4+_0x20249f,_0x138a92=_0x330d44+0x1,_0x2cc298=_0x330d44+_0xb2a3b4,_0x52b738=_0x2cc298+0x1;_0xb1b900[_0x23e4cd]=_0x330d44,_0xb1b900[_0x23e4cd+0x1]=_0x138a92,_0xb1b900[_0x23e4cd+0x2]=_0x2cc298,_0xb1b900[_0x23e4cd+0x3]=_0x2cc298,_0xb1b900[_0x23e4cd+0x4]=_0x138a92,_0xb1b900[_0x23e4cd+0x5]=_0x52b738,_0x23e4cd+=0x6;}return _0xb1b900;},buildVolumeRouteProfileMesh=(_0x2a2cc1,_0x5e10a2)=>{const _0x1fa247=_0x1d30f8;let _0x145ae4=validateProfile(_0x2a2cc1);return{'id':_0x2a2cc1['id'],'positions':createPositions(_0x2a2cc1,_0x145ae4,_0x5e10a2),'values':createValues(_0x2a2cc1),'indices':createIndices(_0x145ae4,_0x2a2cc1['heights'][_0x1fa247(0x29b)]),'opacity':_0x2a2cc1[_0x1fa247(0x251)]??0x1,'depthMode':_0x2a2cc1[_0x1fa247(0x274)]??'scene','revision':_0x2a2cc1[_0x1fa247(0x130)]};};var volumeRaymarch_default=_0x1d30f8(0x37c),sceneMesh_default=_0x1d30f8(0x147),volumeSlice_default=_0x1d30f8(0x16d);const validateMetadata=_0x38a43b=>{const _0x8d7494=_0x1d30f8;if([_0x38a43b[_0x8d7494(0xf3)][_0x8d7494(0xdb)],_0x38a43b[_0x8d7494(0x2b7)][_0x8d7494(0xdb)],_0x38a43b['zAxis'][_0x8d7494(0xdb)],_0x38a43b['brickWidth'],_0x38a43b[_0x8d7494(0x416)],_0x38a43b[_0x8d7494(0x25a)]][_0x8d7494(0x350)](_0x26c358=>!Number[_0x8d7494(0x3b4)](_0x26c358)||_0x26c358<=0x0))throw Error(_0x8d7494(0x3e3));if(_0x38a43b[_0x8d7494(0x15b)]!==0x1)throw Error(_0x8d7494(0x1b0));},getBrickCount=_0xaabd94=>[Math[_0x1d30f8(0x332)](_0xaabd94[_0x1d30f8(0xf3)][_0x1d30f8(0xdb)]/_0xaabd94[_0x1d30f8(0x312)]),Math['ceil'](_0xaabd94[_0x1d30f8(0x2b7)][_0x1d30f8(0xdb)]/_0xaabd94[_0x1d30f8(0x416)]),Math[_0x1d30f8(0x332)](_0xaabd94[_0x1d30f8(0x1d9)][_0x1d30f8(0xdb)]/_0xaabd94[_0x1d30f8(0x25a)])],getLogicalBrickCoordinate=(_0x45222f,_0x55db91)=>{const _0x5df4dd=_0x1d30f8;let _0x4843ae=_0x55db91[0x0]*_0x55db91[0x1],_0xf483d4=Math[_0x5df4dd(0x331)](_0x45222f/_0x4843ae),_0x587961=_0x45222f-_0xf483d4*_0x4843ae,_0x957d03=Math[_0x5df4dd(0x331)](_0x587961/_0x55db91[0x0]);return[_0x587961-_0x957d03*_0x55db91[0x0],_0x957d03,_0xf483d4];},analyzeBrickOccupancy=(_0x3d7f4e,_0x140ae9,_0xdb2f13)=>{const _0x543337=_0x1d30f8;let _0x3cc972=_0x140ae9['brickWidth']+0x2,_0x33b24c=_0x140ae9[_0x543337(0x416)]+0x2,_0x1e3624=getLogicalBrickCoordinate(_0x3d7f4e[_0x543337(0x2dc)],_0xdb2f13),_0x57aa06=Math[_0x543337(0xcc)](_0x140ae9[_0x543337(0x312)],_0x140ae9[_0x543337(0xf3)]['count']-_0x1e3624[0x0]*_0x140ae9[_0x543337(0x312)]),_0x23da83=Math[_0x543337(0xcc)](_0x140ae9[_0x543337(0x416)],_0x140ae9[_0x543337(0x2b7)][_0x543337(0xdb)]-_0x1e3624[0x1]*_0x140ae9[_0x543337(0x416)]),_0x384cae=Math[_0x543337(0xcc)](_0x140ae9[_0x543337(0x25a)],_0x140ae9[_0x543337(0x1d9)]['count']-_0x1e3624[0x2]*_0x140ae9['brickDepth']);for(let _0x59f5f4=0x0;_0x59f5f4<_0x384cae;_0x59f5f4+=0x1)for(let _0x3d62d7=0x0;_0x3d62d7<_0x23da83;_0x3d62d7+=0x1){let _0x194020=((_0x59f5f4+0x1)*_0x33b24c+_0x3d62d7+0x1)*_0x3cc972+0x1;for(let _0xfe1590=0x0;_0xfe1590<_0x57aa06;_0xfe1590+=0x1){let _0x5e22d6=_0x3d7f4e[_0x543337(0x270)][_0x194020+_0xfe1590];if(_0x5e22d6===_0x5e22d6&&(_0x140ae9['noData']===void 0x0||_0x5e22d6!==_0x140ae9['noData']))return{'occupied':!0x0,'coreSampleCount':_0x57aa06*_0x23da83*_0x384cae};}}return{'occupied':!0x1,'coreSampleCount':_0x57aa06*_0x23da83*_0x384cae};},findAtlasLayout=(_0x202000,_0x2056fa,_0x597af8,_0x4b54aa,_0x267608)=>{const _0x159346=_0x1d30f8;if(_0x202000<=0x0)return null;let _0x5c3519=Math[_0x159346(0x331)](_0x267608/_0x2056fa),_0xa9333c=Math[_0x159346(0x331)](_0x267608/_0x597af8),_0x42acf4=Math[_0x159346(0x331)](_0x267608/_0x4b54aa),_0x37c55b=null;for(let _0x23f34e=0x1;_0x23f34e<=_0x5c3519;_0x23f34e+=0x1)for(let _0x5882c7=0x1;_0x5882c7<=_0xa9333c;_0x5882c7+=0x1){let _0xf89aea=Math[_0x159346(0xcc)](_0x42acf4,Math[_0x159346(0x331)](_0x202000/(_0x23f34e*_0x5882c7))),_0x595bfb=_0x23f34e*_0x5882c7*_0xf89aea;_0xf89aea<=0x0||_0x595bfb<=(_0x37c55b?.[_0x159346(0x195)]??0x0)||(_0x37c55b={'slotCountX':_0x23f34e,'slotCountY':_0x5882c7,'slotCountZ':_0xf89aea,'slotCount':_0x595bfb,'textureCount':0x1,'capacity':_0x595bfb});}return _0x37c55b;},getSlotCoordinate=(_0x55e2e0,_0x193868)=>{const _0x2e2f67=_0x1d30f8;let _0x49eb70=_0x193868[_0x2e2f67(0x328)]*_0x193868[_0x2e2f67(0x2f3)],_0x542c38=Math[_0x2e2f67(0x331)](_0x55e2e0/_0x49eb70),_0x38110f=_0x55e2e0-_0x542c38*_0x49eb70,_0x324e12=Math['floor'](_0x38110f/_0x193868[_0x2e2f67(0x328)]);return[_0x38110f-_0x324e12*_0x193868[_0x2e2f67(0x328)],_0x324e12,_0x542c38];},findLeastRecentlyUsed=(_0xa17c4,_0x5226ca)=>{const _0x5bac4a=_0x1d30f8;let _0x6d14b0=null;for(let _0x52acb7 of _0xa17c4)_0x52acb7[_0x5bac4a(0x2f5)]!==_0x5226ca&&(!_0x6d14b0||_0x52acb7[_0x5bac4a(0x2f5)]<_0x6d14b0[_0x5bac4a(0x2f5)])&&(_0x6d14b0=_0x52acb7);return _0x6d14b0;},createPaddedTextureData=(_0x27602f,_0x1a927b,_0x10c347,_0x5d3e42)=>{const _0x5f5721=_0x1d30f8;let _0x2bd59a=_0x1a927b*Float32Array[_0x5f5721(0xe9)],_0x159b30=Math[_0x5f5721(0x332)](_0x2bd59a/0x100)*0x100;if(_0x2bd59a===_0x159b30)return{'values':_0x27602f,'bytesPerRow':_0x159b30};let _0x25f202=_0x159b30/Float32Array[_0x5f5721(0xe9)],_0xcb92aa=new Float32Array(_0x25f202*_0x10c347*_0x5d3e42);for(let _0x1329d2=0x0;_0x1329d2<_0x5d3e42;_0x1329d2+=0x1)for(let _0x1a6d36=0x0;_0x1a6d36<_0x10c347;_0x1a6d36+=0x1){let _0x588ede=(_0x1329d2*_0x10c347+_0x1a6d36)*_0x1a927b,_0x5d6092=(_0x1329d2*_0x10c347+_0x1a6d36)*_0x25f202;_0xcb92aa[_0x5f5721(0x1a8)](_0x27602f[_0x5f5721(0x13e)](_0x588ede,_0x588ede+_0x1a927b),_0x5d6092);}return{'values':_0xcb92aa,'bytesPerRow':_0x159b30};};var WebgpuBrickAtlas=class{[_0x1d30f8(0x15c)];[_0x1d30f8(0x3d9)];[_0x1d30f8(0x198)];['metadata']=null;[_0x1d30f8(0x41d)]=null;[_0x1d30f8(0x2bd)]=[];[_0x1d30f8(0x15a)]=[];[_0x1d30f8(0x18b)]=null;[_0x1d30f8(0x1b2)]=new Uint32Array();['residentByLogicalIndex']=new Map();[_0x1d30f8(0xf2)]=new Map();[_0x1d30f8(0x381)]=0x0;constructor(_0x3bb906,_0x2637c9=0x20000000,_0x5df799=_0x2637c9){const _0x30224f=_0x1d30f8;if(!Number[_0x30224f(0x193)](_0x2637c9)||!Number[_0x30224f(0x193)](_0x5df799)||_0x2637c9<=0x0||_0x5df799<=0x0)throw Error(_0x30224f(0x344));this[_0x30224f(0x15c)]=_0x3bb906,this['memoryTargetBytes']=Math[_0x30224f(0xcc)](_0x2637c9,_0x5df799),this[_0x30224f(0x198)]=_0x5df799;}get[_0x1d30f8(0x254)](){const _0x40bc1e=_0x1d30f8;if(!this['metadata'])throw Error(_0x40bc1e(0x3ea));return this[_0x40bc1e(0x1f0)];}get[_0x1d30f8(0xd2)](){const _0xed7057=_0x1d30f8;if(!this['layout'])throw Error(_0xed7057(0x429));return this['layout'];}get[_0x1d30f8(0x2dd)](){const _0x1783cd=_0x1d30f8;return this[_0x1783cd(0x3d5)][_0x1783cd(0x2d2)];}get['statistics'](){const _0xca3628=_0x1d30f8;if(!this[_0xca3628(0x1f0)]||!this[_0xca3628(0x41d)])return{'logicalBrickCount':0x0,'atlasCapacity':0x0,'gpuBytes':0x0,'memoryLimitBytes':this[_0xca3628(0x198)],'budgetLimited':!0x1,'skippedSamples':0x0,'skippedCells':0x0};let _0x23337a=getBrickCount(this[_0xca3628(0x1f0)]),_0xd35464=_0x23337a[0x0]*_0x23337a[0x1]*_0x23337a[0x2],_0x452726=this[_0xca3628(0x1f0)][_0xca3628(0x312)]+0x2,_0x1e1989=this['metadata'][_0xca3628(0x416)]+0x2,_0x27d4e3=this[_0xca3628(0x1f0)][_0xca3628(0x25a)]+0x2,_0x1afed7=_0x452726*_0x1e1989*_0x27d4e3*this[_0xca3628(0x41d)][_0xca3628(0x2b4)]*Float32Array[_0xca3628(0xe9)],_0x2e7a6a=_0xd35464*0x4*Uint32Array['BYTES_PER_ELEMENT'],_0xea98ed=0x0,_0x37524b=0x0;for(let _0x630b30 of this[_0xca3628(0x3d5)]['values']())_0x630b30[_0xca3628(0x146)]||(_0x37524b+=0x1,_0xea98ed+=_0x630b30['skippedSampleCount']);return{'logicalBrickCount':_0xd35464,'atlasCapacity':this[_0xca3628(0x41d)]['capacity'],'gpuBytes':_0x1afed7+_0x2e7a6a,'memoryLimitBytes':this[_0xca3628(0x198)],'budgetLimited':this[_0xca3628(0x41d)][_0xca3628(0x2b4)]<_0xd35464,'skippedSamples':_0xea98ed,'skippedCells':_0x37524b};}[_0x1d30f8(0x256)](_0x2cbf10){const _0x660c1=_0x1d30f8;validateMetadata(_0x2cbf10);let _0x5a5470=_0x2cbf10[_0x660c1(0x312)]+0x2,_0x1a1cc3=_0x2cbf10[_0x660c1(0x416)]+0x2,_0x3aa7be=_0x2cbf10[_0x660c1(0x25a)]+0x2,_0x4e6499=getBrickCount(_0x2cbf10),_0x28fd3e=_0x4e6499[0x0]*_0x4e6499[0x1]*_0x4e6499[0x2],_0x5be467=_0x28fd3e*0x4*Uint32Array[_0x660c1(0xe9)],_0x228a0c=Math[_0x660c1(0xcc)](this['memoryTargetBytes'],this[_0x660c1(0x198)])-_0x5be467;if(_0x228a0c<=0x0)throw Error('WebGPU\x20volume\x20page\x20table\x20exceeds\x20the\x20configured\x20memory\x20limit.\x20WebGPU\x20体积页表超过显存限制。');let _0x40ba0a=_0x5a5470*_0x1a1cc3*_0x3aa7be*Float32Array[_0x660c1(0xe9)],_0x36f3d2=Math['min'](_0x28fd3e,Math[_0x660c1(0x331)](_0x228a0c/_0x40ba0a)),_0x168c39=Math[_0x660c1(0x334)](0x1,Math[_0x660c1(0x331)](0x4000000/_0x40ba0a)),_0x481016=Math[_0x660c1(0xcc)](0x8,Math[_0x660c1(0x334)](0x1,Math['ceil'](_0x36f3d2/_0x168c39))),_0x30820b=findAtlasLayout(Math[_0x660c1(0x334)](0x1,Math['floor'](_0x36f3d2/_0x481016)),_0x5a5470,_0x1a1cc3,_0x3aa7be,this['device'][_0x660c1(0x2e0)][_0x660c1(0x282)]);if(!_0x30820b)throw Error('Unable\x20to\x20allocate\x20a\x20WebGPU\x20R32F\x20volume\x20atlas\x20within\x20device\x20limits.\x20无法在设备限制内分配\x20WebGPU\x20R32F\x20体积图集。');let _0x53653d={..._0x30820b,'textureCount':_0x481016,'capacity':_0x30820b['slotCount']*_0x481016},_0x564261=_0x5a5470*_0x53653d[_0x660c1(0x328)],_0x5c2a89=_0x1a1cc3*_0x53653d[_0x660c1(0x2f3)],_0x51afa5=_0x3aa7be*_0x53653d[_0x660c1(0x22d)],_0x4cb7b7=Array[_0x660c1(0x3d2)]({'length':_0x481016},(_0x31f1df,_0x2cfe64)=>this[_0x660c1(0x15c)][_0x660c1(0x36b)]({'label':_0x660c1(0x1f9)+_0x2cfe64,'size':[_0x564261,_0x5c2a89,_0x51afa5],'dimension':'3d','format':_0x660c1(0x24e),'usage':GPUTextureUsage[_0x660c1(0x1e4)]|GPUTextureUsage[_0x660c1(0x41a)]|GPUTextureUsage[_0x660c1(0x422)]})),_0x427d71=this[_0x660c1(0x15c)][_0x660c1(0x153)]({'label':'volume\x20brick\x20page\x20table','size':Math[_0x660c1(0x334)](0x10,_0x5be467),'usage':GPUBufferUsage[_0x660c1(0x202)]|GPUBufferUsage['COPY_DST']});this[_0x660c1(0x3bf)](),this['metadata']={..._0x2cbf10},this[_0x660c1(0x41d)]=_0x53653d,this[_0x660c1(0x2bd)]=_0x4cb7b7,this[_0x660c1(0x15a)]=_0x4cb7b7[_0x660c1(0x2f9)](_0x226154=>_0x226154[_0x660c1(0x376)]({'dimension':'3d'})),this['pageTableBuffer']=_0x427d71,this[_0x660c1(0x1b2)]=new Uint32Array(_0x28fd3e*0x4),this[_0x660c1(0x15c)][_0x660c1(0x3d8)][_0x660c1(0x3ee)](_0x427d71,0x0,this[_0x660c1(0x1b2)]);for(let _0x508650 of _0x4cb7b7)this[_0x660c1(0xe1)](_0x508650,_0x564261,_0x5c2a89,_0x51afa5);this[_0x660c1(0x381)]+=0x1;}[_0x1d30f8(0x2b8)](_0x208df3,_0x2461a8){const _0x3b660a=_0x1d30f8;let _0x4c9c84=this[_0x3b660a(0x254)],_0x490e51=this[_0x3b660a(0xd2)],_0x2da8e3=getBrickCount(_0x4c9c84),_0x44426a=_0x2da8e3[0x0]*_0x2da8e3[0x1]*_0x2da8e3[0x2];if(!Number[_0x3b660a(0x3b4)](_0x208df3[_0x3b660a(0x2dc)])||_0x208df3[_0x3b660a(0x2dc)]<0x0||_0x208df3[_0x3b660a(0x2dc)]>=_0x44426a)throw Error('Invalid\x20logical\x20volume\x20brick\x20index:\x20'+_0x208df3[_0x3b660a(0x2dc)]+'.\x20体积逻辑砖块索引无效。');let _0x254b27=_0x4c9c84[_0x3b660a(0x312)]+0x2,_0x4c3b2d=_0x4c9c84['brickHeight']+0x2,_0x2cd9d4=_0x4c9c84[_0x3b660a(0x25a)]+0x2,_0x1b6e5a=_0x254b27*_0x4c3b2d*_0x2cd9d4;if(_0x208df3['values'][_0x3b660a(0x29b)]!==_0x1b6e5a)throw Error('Volume\x20brick\x20'+_0x208df3[_0x3b660a(0x2dc)]+_0x3b660a(0x13d)+_0x1b6e5a+_0x3b660a(0x34e)+_0x208df3['values']['length']+_0x3b660a(0xcd));let _0x135087=this[_0x3b660a(0x3d5)][_0x3b660a(0x2d0)](_0x208df3[_0x3b660a(0x2dc)])??this['acquireSlot'](_0x208df3['logicalIndex'],_0x2461a8),_0x29bb6d=analyzeBrickOccupancy(_0x208df3,_0x4c9c84,_0x2da8e3),_0x1d457e=Math[_0x3b660a(0x331)](_0x135087[_0x3b660a(0x2bf)]/_0x490e51[_0x3b660a(0x195)]),_0x1689de=getSlotCoordinate(_0x135087['slotIndex']%_0x490e51['slotCount'],_0x490e51),_0x3882b0=createPaddedTextureData(new Float32Array(_0x208df3[_0x3b660a(0x270)]),_0x254b27,_0x4c3b2d,_0x2cd9d4);return _0x135087['lastUsedFrame']=_0x2461a8,_0x135087[_0x3b660a(0x381)]=this[_0x3b660a(0x381)],_0x135087[_0x3b660a(0x146)]=_0x29bb6d[_0x3b660a(0x146)],_0x135087[_0x3b660a(0x163)]=_0x29bb6d[_0x3b660a(0x1fb)],this['writePageEntry'](_0x135087),{'values':_0x3882b0[_0x3b660a(0x270)],'bytesPerRow':_0x3882b0[_0x3b660a(0x42e)],'rowsPerImage':_0x4c3b2d,'origin':{'x':_0x1689de[0x0]*_0x254b27,'y':_0x1689de[0x1]*_0x4c3b2d,'z':_0x1689de[0x2]*_0x2cd9d4},'extent':[_0x254b27,_0x4c3b2d,_0x2cd9d4],'atlasIndex':_0x1d457e};}[_0x1d30f8(0x1af)](_0x277641,_0x1f6210,_0x4fda60,_0x51a56f){const _0x2a2c2f=_0x1d30f8;_0x277641[_0x2a2c2f(0x17c)]({'buffer':_0x1f6210,'offset':_0x4fda60,'bytesPerRow':_0x51a56f[_0x2a2c2f(0x42e)],'rowsPerImage':_0x51a56f['rowsPerImage']},{'texture':this[_0x2a2c2f(0x2bb)](_0x51a56f[_0x2a2c2f(0x208)]),'origin':_0x51a56f['origin']},_0x51a56f[_0x2a2c2f(0x10d)]);}['touch'](_0xf186f0,_0x566646){for(let _0x27a516 of _0xf186f0){let _0x164d11=this['residentByLogicalIndex']['get'](_0x27a516);_0x164d11&&(_0x164d11['lastUsedFrame']=_0x566646);}}[_0x1d30f8(0x27b)](_0x4c3506,_0x359aba){const _0x4b01ca=_0x1d30f8;if(this['atlasViews'][_0x4b01ca(0x29b)]===0x0||!this['pageTableBuffer'])throw Error('WebGPU\x20volume\x20atlas\x20resources\x20are\x20incomplete.\x20WebGPU\x20体积图集资源不完整。');return this[_0x4b01ca(0x15c)][_0x4b01ca(0x27b)]({'label':_0x4b01ca(0x219),'layout':_0x4c3506,'entries':[...Array['from']({'length':0x8},(_0x2396d6,_0x524cae)=>({'binding':_0x524cae,'resource':this[_0x4b01ca(0x15a)][_0x524cae]??this[_0x4b01ca(0x15a)][0x0]})),{'binding':0x8,'resource':{'buffer':this['pageTableBuffer']}},{'binding':0x9,'resource':{'buffer':_0x359aba}}]});}[_0x1d30f8(0x377)](){const _0x44f609=_0x1d30f8;this[_0x44f609(0x3bf)](),this[_0x44f609(0x1f0)]=null,this[_0x44f609(0x41d)]=null,this[_0x44f609(0x1b2)]=new Uint32Array();}[_0x1d30f8(0x14f)](_0x14ec2a,_0x4be025){const _0x51bff7=_0x1d30f8;let _0x40c5ed=this[_0x51bff7(0xd2)],_0x19d433=this[_0x51bff7(0xf2)][_0x51bff7(0x2d2)];if(_0x19d433>=_0x40c5ed['capacity']){let _0x2b1c0f=findLeastRecentlyUsed(this['residentBySlotIndex'][_0x51bff7(0x270)](),_0x4be025);if(!_0x2b1c0f)throw Error(_0x51bff7(0x19f));_0x19d433=_0x2b1c0f[_0x51bff7(0x2bf)],this['clearPageEntry'](_0x2b1c0f[_0x51bff7(0x2dc)]),this[_0x51bff7(0x3d5)]['delete'](_0x2b1c0f[_0x51bff7(0x2dc)]),this[_0x51bff7(0xf2)][_0x51bff7(0xd5)](_0x19d433);}let _0x11df3f={'logicalIndex':_0x14ec2a,'slotIndex':_0x19d433,'lastUsedFrame':_0x4be025,'generation':this[_0x51bff7(0x381)],'occupied':!0x1,'skippedSampleCount':0x0};return this[_0x51bff7(0x3d5)][_0x51bff7(0x1a8)](_0x14ec2a,_0x11df3f),this['residentBySlotIndex'][_0x51bff7(0x1a8)](_0x19d433,_0x11df3f),_0x11df3f;}[_0x1d30f8(0x2a4)](_0x37e8db){const _0x104c88=_0x1d30f8;let _0x3753b7=_0x37e8db[_0x104c88(0x2dc)]*0x4;this[_0x104c88(0x1b2)][_0x3753b7]=_0x37e8db['slotIndex']%this[_0x104c88(0xd2)][_0x104c88(0x195)]+0x1,this['pageTableValues'][_0x3753b7+0x1]=_0x37e8db[_0x104c88(0x381)],this[_0x104c88(0x1b2)][_0x3753b7+0x2]=+!!_0x37e8db['occupied'],this[_0x104c88(0x1b2)][_0x3753b7+0x3]=Math[_0x104c88(0x331)](_0x37e8db[_0x104c88(0x2bf)]/this[_0x104c88(0xd2)][_0x104c88(0x195)]),this[_0x104c88(0x15c)]['queue'][_0x104c88(0x3ee)](this['getPageTableBuffer'](),_0x3753b7*Uint32Array['BYTES_PER_ELEMENT'],this[_0x104c88(0x1b2)],_0x3753b7,0x4);}[_0x1d30f8(0x34f)](_0x412eb7){const _0x4fa6e7=_0x1d30f8;let _0x3e9bbd=_0x412eb7*0x4;this[_0x4fa6e7(0x1b2)][_0x4fa6e7(0x3f1)](0x0,_0x3e9bbd,_0x3e9bbd+0x4),this[_0x4fa6e7(0x15c)][_0x4fa6e7(0x3d8)]['writeBuffer'](this[_0x4fa6e7(0x41c)](),_0x3e9bbd*Uint32Array[_0x4fa6e7(0xe9)],this[_0x4fa6e7(0x1b2)],_0x3e9bbd,0x4);}['getAtlasTexture'](_0x433596){const _0x6df1ca=_0x1d30f8;let _0x43d702=this[_0x6df1ca(0x2bd)][_0x433596];if(!_0x43d702)throw Error(_0x6df1ca(0x2df));return _0x43d702;}[_0x1d30f8(0xe1)](_0x2459a4,_0x3d8592,_0x145b8d,_0x29b335){const _0x6b4c5d=_0x1d30f8;let _0x58ba51=this['device']['createShaderModule']({'label':'volume\x20atlas\x20clear\x20shader','code':'\x0a@group(0)\x20@binding(0)\x20var\x20atlas:\x20texture_storage_3d<r32float,\x20write>;\x0a\x0a@compute\x20@workgroup_size(4,\x204,\x204)\x0afn\x20main(@builtin(global_invocation_id)\x20invocation:\x20vec3u)\x20{\x0a\x20\x20\x20\x20let\x20dimensions\x20=\x20textureDimensions(atlas);\x0a\x20\x20\x20\x20if\x20(all(invocation\x20<\x20dimensions))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20textureStore(atlas,\x20vec3i(invocation),\x20vec4f(0.0));\x0a\x20\x20\x20\x20}\x0a}\x0a'}),_0x5863b6=this[_0x6b4c5d(0x15c)]['createComputePipeline']({'label':_0x6b4c5d(0x1aa),'layout':_0x6b4c5d(0x19c),'compute':{'module':_0x58ba51,'entryPoint':_0x6b4c5d(0x1ab)}}),_0x2222b6=this[_0x6b4c5d(0x15c)]['createBindGroup']({'label':'volume\x20atlas\x20clear\x20bind\x20group','layout':_0x5863b6[_0x6b4c5d(0xd7)](0x0),'entries':[{'binding':0x0,'resource':_0x2459a4['createView']({'dimension':'3d'})}]}),_0x552af7=this[_0x6b4c5d(0x15c)][_0x6b4c5d(0x261)]({'label':_0x6b4c5d(0x178)}),_0x5b6080=_0x552af7['beginComputePass']({'label':_0x6b4c5d(0x18c)});_0x5b6080['setPipeline'](_0x5863b6),_0x5b6080[_0x6b4c5d(0x1bb)](0x0,_0x2222b6),_0x5b6080['dispatchWorkgroups'](Math['ceil'](_0x3d8592/0x4),Math[_0x6b4c5d(0x332)](_0x145b8d/0x4),Math[_0x6b4c5d(0x332)](_0x29b335/0x4)),_0x5b6080['end'](),this[_0x6b4c5d(0x15c)]['queue']['submit']([_0x552af7['finish']()]);}['getPageTableBuffer'](){const _0xecfe99=_0x1d30f8;if(!this[_0xecfe99(0x18b)])throw Error(_0xecfe99(0x165));return this[_0xecfe99(0x18b)];}[_0x1d30f8(0x3bf)](){const _0x264e4a=_0x1d30f8;for(let _0x55a030 of this[_0x264e4a(0x2bd)])_0x55a030['destroy']();this['pageTableBuffer']?.[_0x264e4a(0x377)](),this[_0x264e4a(0x2bd)]=[],this[_0x264e4a(0x15a)]=[],this[_0x264e4a(0x18b)]=null,this[_0x264e4a(0x3d5)][_0x264e4a(0x12f)](),this[_0x264e4a(0xf2)][_0x264e4a(0x12f)]();}},WebgpuSceneAttachments=class{[_0x1d30f8(0x15c)];[_0x1d30f8(0x2c5)]=null;[_0x1d30f8(0x3bd)]=null;[_0x1d30f8(0x238)]=0x0;[_0x1d30f8(0x26d)]=0x0;constructor(_0x3eb31e){const _0x3ef516=_0x1d30f8;this[_0x3ef516(0x15c)]=_0x3eb31e;}get[_0x1d30f8(0x40d)](){const _0x766667=_0x1d30f8;if(!this['depthView'])throw Error(_0x766667(0x207));return this[_0x766667(0x3bd)];}[_0x1d30f8(0x1e3)](_0x2bc466,_0x10951e){const _0x480ea1=_0x1d30f8;if(this['width']===_0x2bc466&&this[_0x480ea1(0x26d)]===_0x10951e)return;let _0x2d05db=this['device']['createTexture']({'label':_0x480ea1(0x271),'size':[_0x2bc466,_0x10951e],'format':'depth32float','usage':GPUTextureUsage[_0x480ea1(0x156)]|GPUTextureUsage['TEXTURE_BINDING']}),_0x204839=this['depthTexture'];this['depthTexture']=_0x2d05db,this[_0x480ea1(0x3bd)]=_0x2d05db[_0x480ea1(0x376)](),this[_0x480ea1(0x238)]=_0x2bc466,this['height']=_0x10951e,_0x204839?.[_0x480ea1(0x377)]();}[_0x1d30f8(0x377)](){const _0x56a569=_0x1d30f8;this['depthTexture']?.[_0x56a569(0x377)](),this[_0x56a569(0x2c5)]=null,this[_0x56a569(0x3bd)]=null,this['width']=0x0,this['height']=0x0;}},WebgpuSceneMeshResources=class{['device'];['resources']=[];constructor(_0x5b35a1){this['device']=_0x5b35a1;}get[_0x1d30f8(0xdb)](){const _0x4e6684=_0x1d30f8;return this[_0x4e6684(0x28c)]['length'];}[_0x1d30f8(0x118)](_0x2b6c58){const _0x15fde7=_0x1d30f8;let _0x2c7c38=[];try{for(let _0x49b49b of _0x2b6c58)_0x2c7c38['push'](this[_0x15fde7(0x40c)](_0x49b49b));}catch(_0x34bbb5){for(let _0x2f60b5 of _0x2c7c38)_0x2f60b5[_0x15fde7(0x150)][_0x15fde7(0x377)]();throw _0x34bbb5;}this[_0x15fde7(0x3bf)](),this[_0x15fde7(0x28c)]=_0x2c7c38;}[_0x1d30f8(0x29f)](_0x468c50,_0x29cccd,_0x5ac33b){const _0x86a571=_0x1d30f8;for(let _0x370273 of this['resources'])_0x370273[_0x86a571(0x250)]!==_0x29cccd||_0x370273[_0x86a571(0x274)]!==_0x5ac33b||(_0x468c50[_0x86a571(0x38a)](0x0,_0x370273[_0x86a571(0x150)]),_0x468c50[_0x86a571(0x29f)](_0x370273[_0x86a571(0x3fa)]));}['destroy'](){const _0x36f609=_0x1d30f8;this[_0x36f609(0x3bf)]();}[_0x1d30f8(0x40c)](_0x9eb5ad){const _0x4e82a7=_0x1d30f8;if(_0x9eb5ad[_0x4e82a7(0x17e)][_0x4e82a7(0x29b)]===0x0||_0x9eb5ad['vertices']['length']%0x7!=0x0)throw Error('Scene\x20mesh\x20'+_0x9eb5ad['id']+_0x4e82a7(0x2f2));let _0x3cdada=new Float32Array(_0x9eb5ad[_0x4e82a7(0x17e)]),_0x3315d1=this[_0x4e82a7(0x15c)][_0x4e82a7(0x153)]({'label':_0x4e82a7(0x223)+_0x9eb5ad['id'],'size':_0x3cdada[_0x4e82a7(0x3c0)],'usage':GPUBufferUsage[_0x4e82a7(0x346)]|GPUBufferUsage['COPY_DST']});return this['device'][_0x4e82a7(0x3d8)]['writeBuffer'](_0x3315d1,0x0,_0x3cdada),{'id':_0x9eb5ad['id'],'topology':_0x9eb5ad[_0x4e82a7(0x250)],'depthMode':_0x9eb5ad['depthMode'],'buffer':_0x3315d1,'vertexCount':_0x9eb5ad[_0x4e82a7(0x17e)][_0x4e82a7(0x29b)]/0x7};}['destroyResources'](){const _0x20644a=_0x1d30f8;for(let _0x222985 of this[_0x20644a(0x28c)])_0x222985[_0x20644a(0x150)][_0x20644a(0x377)]();this[_0x20644a(0x28c)]=[];}},WebgpuSliceResources=class{[_0x1d30f8(0x15c)];['layout'];[_0x1d30f8(0x28c)]=[];[_0x1d30f8(0x269)]=0x0;[_0x1d30f8(0x1b4)]=0x0;constructor(_0x580507,_0x340b3c){const _0x4f9037=_0x1d30f8;this[_0x4f9037(0x15c)]=_0x580507,this[_0x4f9037(0x41d)]=_0x340b3c;}get[_0x1d30f8(0xdb)](){const _0x1d3fa2=_0x1d30f8;return this['resources'][_0x1d3fa2(0x29b)];}get['statistics'](){const _0x455ee3=_0x1d30f8;return{'uniformUpdateCount':this[_0x455ee3(0x269)],'resourceRebuildCount':this[_0x455ee3(0x1b4)]};}['replace'](_0x4036f0){const _0x8fcf4f=_0x1d30f8;let _0x4d9aca=new Map(this['resources']['map'](_0x191219=>[_0x191219['id'],_0x191219])),_0xec38ed=[],_0x509c64=new Set();try{for(let _0x48c412 of _0x4036f0){if(!_0x48c412[_0x8fcf4f(0x35c)])continue;if(_0x509c64[_0x8fcf4f(0x314)](_0x48c412['id']))throw Error('Volume\x20slice\x20ID\x20'+_0x48c412['id']+_0x8fcf4f(0x3e9));_0x509c64['add'](_0x48c412['id']);let _0x5622f4=this[_0x8fcf4f(0x281)](_0x48c412),_0x521606=_0x4d9aca['get'](_0x48c412['id']);if(!_0x521606){_0xec38ed[_0x8fcf4f(0x40e)](this[_0x8fcf4f(0x40c)](_0x48c412,_0x5622f4));continue;}_0x4d9aca[_0x8fcf4f(0xd5)](_0x48c412['id']),_0x521606['depthMode']=_0x48c412[_0x8fcf4f(0x274)],this[_0x8fcf4f(0x3ef)](_0x521606[_0x8fcf4f(0x270)],_0x5622f4)||(this[_0x8fcf4f(0x15c)][_0x8fcf4f(0x3d8)][_0x8fcf4f(0x3ee)](_0x521606[_0x8fcf4f(0x150)],0x0,_0x5622f4),_0x521606['values']=_0x5622f4,this[_0x8fcf4f(0x269)]+=0x1),_0xec38ed[_0x8fcf4f(0x40e)](_0x521606);}}catch(_0x348017){for(let _0x36e01c of _0xec38ed)this[_0x8fcf4f(0x28c)][_0x8fcf4f(0x361)](_0x36e01c)||_0x36e01c[_0x8fcf4f(0x150)][_0x8fcf4f(0x377)]();throw _0x348017;}for(let _0x155659 of _0x4d9aca['values']())_0x155659[_0x8fcf4f(0x150)][_0x8fcf4f(0x377)]();this[_0x8fcf4f(0x28c)]=_0xec38ed;}[_0x1d30f8(0x29f)](_0x2c0480,_0x17c31e,_0x2f4493){const _0x147e89=_0x1d30f8;_0x2c0480[_0x147e89(0x30c)](_0x17c31e);for(let _0x298de9 of this[_0x147e89(0x28c)])_0x298de9[_0x147e89(0x274)]===_0x2f4493&&(_0x2c0480[_0x147e89(0x1bb)](0x3,_0x298de9[_0x147e89(0x34b)]),_0x2c0480[_0x147e89(0x29f)](0x1800));}['destroy'](){this['destroyResources']();}[_0x1d30f8(0x281)](_0x2ecaf7){const _0x5cb307=_0x1d30f8;if(!Number['isFinite'](_0x2ecaf7[_0x5cb307(0x209)])||_0x2ecaf7[_0x5cb307(0x209)]<0x0||_0x2ecaf7['position']>0x1)throw Error('Volume\x20slice\x20'+_0x2ecaf7['id']+_0x5cb307(0x255));let _0xa3c24f=_0x2ecaf7[_0x5cb307(0x3f3)]==='x'?0x0:_0x2ecaf7[_0x5cb307(0x3f3)]==='y'?0x1:0x2,_0x1fd778=_0x2ecaf7[_0x5cb307(0xde)]??[0x0,0x0,0x0,0x0];if(_0x1fd778['some'](_0x7e2aee=>!Number[_0x5cb307(0x193)](_0x7e2aee)||_0x7e2aee<0x0||_0x7e2aee>0x1))throw Error('Volume\x20slice\x20'+_0x2ecaf7['id']+_0x5cb307(0x2b9));return new Float32Array([_0xa3c24f,_0x2ecaf7[_0x5cb307(0x209)],_0x2ecaf7[_0x5cb307(0x251)]??0x1,0x0,..._0x1fd778]);}[_0x1d30f8(0x40c)](_0x49bde3,_0x16fb78){const _0xa9bcea=_0x1d30f8;let _0x124e8a=this['device'][_0xa9bcea(0x153)]({'label':'volume\x20slice\x20'+_0x49bde3['id'],'size':0x20,'usage':GPUBufferUsage[_0xa9bcea(0x25e)]|GPUBufferUsage[_0xa9bcea(0x41a)]});this['device'][_0xa9bcea(0x3d8)][_0xa9bcea(0x3ee)](_0x124e8a,0x0,_0x16fb78);let _0x541b2e=this['device']['createBindGroup']({'layout':this['layout'],'entries':[{'binding':0x0,'resource':{'buffer':_0x124e8a}}]});return this[_0xa9bcea(0x1b4)]+=0x1,{'id':_0x49bde3['id'],'depthMode':_0x49bde3[_0xa9bcea(0x274)],'buffer':_0x124e8a,'bindGroup':_0x541b2e,'values':_0x16fb78};}[_0x1d30f8(0x3ef)](_0x56f800,_0x2ef65d){const _0x65c8b1=_0x1d30f8;for(let _0x18a743=0x0;_0x18a743<_0x56f800[_0x65c8b1(0x29b)];_0x18a743+=0x1)if(_0x56f800[_0x18a743]!==_0x2ef65d[_0x18a743])return!0x1;return!0x0;}['destroyResources'](){const _0x29b8a4=_0x1d30f8;for(let _0x27c811 of this[_0x29b8a4(0x28c)])_0x27c811['buffer'][_0x29b8a4(0x377)]();this['resources']=[];}};const createStorageBuffer=(_0x5d8380,_0x53ad46,_0x1219ad)=>{const _0x384028=_0x1d30f8;let _0x1486de=_0x5d8380['createBuffer']({'label':_0x1219ad,'size':Math['max'](0x4,_0x53ad46[_0x384028(0x3c0)]),'usage':GPUBufferUsage['STORAGE']|GPUBufferUsage[_0x384028(0x41a)]});return _0x53ad46['byteLength']>0x0&&_0x5d8380[_0x384028(0x3d8)]['writeBuffer'](_0x1486de,0x0,_0x53ad46),_0x1486de;},validateStops$1=(_0x5d8a1d,_0x3ff515)=>{const _0x2dfc06=_0x1d30f8;if(_0x5d8a1d['length']===0x0||_0x3ff515[_0x2dfc06(0x29b)]===0x0)throw Error(_0x2dfc06(0x34c));for(let _0x717796=0x1;_0x717796<_0x5d8a1d[_0x2dfc06(0x29b)];_0x717796+=0x1)if(_0x5d8a1d[_0x717796][_0x2dfc06(0x288)]<_0x5d8a1d[_0x717796-0x1]['value'])throw Error(_0x2dfc06(0x3d7));for(let _0x4c303f=0x0;_0x4c303f<_0x3ff515[_0x2dfc06(0x29b)];_0x4c303f+=0x1){if(_0x3ff515[_0x4c303f][_0x2dfc06(0x251)]<0x0||_0x3ff515[_0x4c303f][_0x2dfc06(0x251)]>0x1)throw Error(_0x2dfc06(0x21c));if(_0x4c303f>0x0&&_0x3ff515[_0x4c303f]['value']<_0x3ff515[_0x4c303f-0x1][_0x2dfc06(0x288)])throw Error(_0x2dfc06(0x1bf));}};function _0x4af7(_0x37bb8a,_0x3e3ad0){const _0x19e9ad=_0x19e9();return _0x4af7=function(_0x4af7fb,_0x3f02e2){_0x4af7fb=_0x4af7fb-0xcb;let _0x2c0b8a=_0x19e9ad[_0x4af7fb];return _0x2c0b8a;},_0x4af7(_0x37bb8a,_0x3e3ad0);}function _0x19e9(){const _0x4249fe=['\x20with\x20one\x20sample\x20must\x20use\x20equal\x20endpoints.\x20','length','idle','maxZ','syncCamera','draw','volume-bounds','minimumDistance','vertexMain','initializationGeneration','writePageEntry','startX','opacityStops','volume\x20scene\x20bind\x20group','clientX','verticalScale\x20必须是大于\x200\x20的有限数。','Geographic\x20volume\x20normalization\x20must\x20be\x20a\x20positive\x20finite\x20distance.\x20地理体积归一化尺度必须是正有限距离。','centerEcef','clipMaximum','renderFrame','premultiplied','resolve','pointerleave','none','flushSliceState','Returned\x20volume\x20chunk\x20timeIndex\x20does\x20not\x20match\x20the\x20request.\x20返回体积分块的时间索引与请求不一致。','capacity','syncPreview','framesRemaining','yAxis','prepareBrickUpload','\x20plate\x20color\x20must\x20use\x20values\x20from\x20zero\x20through\x20one.\x20体积切面底板颜色必须位于零至一。','路线剖面\x20id\x20不能为空。','getAtlasTexture','0\x202px','atlasTextures','1366360RezrDb','slotIndex','getAttachments','translate(-50%,\x20-100%)','brickSortCount','initialized','WebGPU\x20slice\x20resources\x20are\x20unavailable.\x20WebGPU\x20切面资源不可用。','depthTexture','colorValuesBuffer','sort','WebGPU\x20volume\x20frame\x20capture\x20failed:\x20','opacityValuesBuffer','\x20的\x20path\x20包含非有限坐标。','rgba(','beginCameraInteraction','descriptors','setAxes','.\x20WebGPU\x20体积设备已丢失。','get','\x20必须是正整数。','size','readyPromise','volumePipeline','Mars3D\x20volume\x20shader\x20marker\x20is\x20missing\x20or\x20duplicated:\x20','abort','find','WebGPU\x20is\x20required\x20for\x20the\x20volume\x20scene\x20but\x20is\x20unavailable.\x20体积场景需要\x20WebGPU,但当前环境不可用。','getAxisResources','\x20noData\x20must\x20be\x20finite\x20or\x20NaN.\x20','axisHysteresisPixels','logicalIndex','residentBrickCount','cameraFrameCompensation','WebGPU\x20volume\x20atlas\x20texture\x20is\x20unavailable.\x20WebGPU\x20体积图集纹理不可用。','limits','beginLockedSliceDrag','firstChild','geographicTransform','\x20with\x20multiple\x20samples\x20must\x20have\x20a\x20non-zero\x20step.\x20','maximumUploadBatchBytes','gap','uploadedBrickCount','button','attachments','setRouteProfiles','pendingSliceSnapshot','\x20端点必须是有限数值。','frameIndex','5TbyVhQ','updateTransferResources','getCanvas','rejectPendingBrickUploads','\x20must\x20contain\x20position\x20and\x20RGBA\x20values\x20for\x20every\x20vertex.\x20场景网格顶点必须包含位置和\x20RGBA。','slotCountY','volume\x20scene\x20params','lastUsedFrame','configureModel','geometryBindGroup','volumeOptions','map','WebGPU\x20slice\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20切面绑定布局不可用。','catch','one','rebuildProfiles','getEffectiveQuality','Volume\x20Z\x20axis','notify','smooth','viewportHeight','fov','touch','left','target','\x20必须是大于\x200\x20的有限数。','\x20must\x20be\x20a\x20positive\x20integer.\x20体积分块\x20','相机宽高比必须大于\x200。','isInteracting','WebGPU\x20transfer\x20resources\x20are\x20unavailable.\x20WebGPU\x20传递函数资源不可用。','setPipeline','pushErrorScope','recordFrameInterval','read-only-storage','不支持的\x20hex\x20颜色格式:\x20','createShaderModule','brickWidth','aria-label','has','WebGPU\x20volume\x20renderer\x20is\x20not\x20ready\x20for\x20frame\x20capture.\x20WebGPU\x20体积渲染器尚不能读取帧。','maximumDistance','maximum','A\x20destroyed\x20volume\x20scene\x20cannot\x20capture\x20a\x20frame.\x20已销毁的体积场景不能读取帧。','verticalScale','handleFrameAvailable','WebGPU\x20volume\x20source\x20must\x20be\x20configured\x20before\x20uploading\x20bricks.\x20上传砖块前必须配置\x20WebGPU\x20体积数据源。','createCanvas','relative','createPipelines','encodeVolumePass','setProfiles','destroyed','onInteractionStart','bindFrameAvailableCallback','transferBindGroupLayout','orthographic','lost','autoFrameCount','slotCountX','requireRenderer','getCurrentTexture','handlePreRender','createTextNode','center','noData','join','interactionRenderScale','floor','ceil','updateLockedSlice','max','onSubmittedWorkDone','processBrickUploads','autoFrameIntervalTotal','loadBrick','transferBindGroup','external','volume\x20atlas\x20bind\x20group\x20layout','\x20\x20\x20\x20var\x20interval\x20=\x20intersectClipBox(nearModel,\x20direction);\x0a\x0a\x20\x20\x20\x20if\x20(scene.geographic0.x\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20shellInterval\x20=\x20intersectGeographicShell(nearModel,\x20direction);\x0a\x20\x20\x20\x20\x20\x20\x20\x20interval.minimum\x20=\x20max(interval.minimum,\x20shellInterval.minimum);\x0a\x20\x20\x20\x20\x20\x20\x20\x20interval.maximum\x20=\x20min(interval.maximum,\x20shellInterval.maximum);\x0a\x20\x20\x20\x20\x20\x20\x20\x20interval.valid\x20=\x20interval.valid\x20&&\x20shellInterval.valid\x20&&\x20interval.maximum\x20>=\x20interval.minimum;\x0a\x20\x20\x20\x20}','Mars3D\x20map\x20canvas\x20must\x20have\x20a\x20parent\x20element.\x20Mars3D\x20地图\x20Canvas\x20必须存在父元素。','Geographic\x20WGS84\x20volume\x20scenes\x20manage\x20their\x20own\x20model\x20transform.\x20WGS84\x20地理体积场景自行管理模型变换。','camera','fn\x20getPageIndex','positionWC','all','0.72','WebGPU\x20volume\x20memory\x20limits\x20must\x20be\x20positive.\x20WebGPU\x20体积显存限制必须大于零。','COPY_SRC','VERTEX','fovYDegrees','\x20must\x20contain\x20sixteen\x20finite\x20values.\x20','endInteraction','whiteSpace','bindGroup','Volume\x20color\x20and\x20opacity\x20stops\x20cannot\x20be\x20empty.\x20体积颜色和透明度色标不能为空。','colorStops\x20不能为空','\x20values\x20but\x20received\x20','clearPageEntry','some','requestDevice','markers','Volume\x20brick\x20halo\x20must\x20be\x20a\x20positive\x20integer.\x20体积分块\x20halo\x20必须是正整数。','float32x3','getDevice','abs','clipMinimum','sceneTrianglePipeline','路线剖面\x20','findAxisHit','frustum','visible','drawSlices','displayedCompensationFrame','screenAnchors','volume\x20raymarch\x20shader','includes','setAttribute','lockSlice','positionCartographic','592kNbHui','add','The\x20maximum\x20locked\x20slice\x20count\x20has\x20been\x20reached.\x20已达到最大锁定切面数量。','asin','bindSliceState','line-list','createTexture','touchAction','uploadPump','clientY','\x20无效。','getUploadStagingBuffer','append','inset','configureSource','trim','volume-axes','createView','destroy','opacityBuffer','RGB\x20颜色通道必须在\x200\x20~\x20255\x20之间','renderDirty','cachedAxes','struct\x20SceneParams\x20{\x0a\x20\x20\x20\x20viewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseViewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20modelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseModelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20cameraPosition:\x20vec4f,\x0a\x20\x20\x20\x20viewport:\x20vec4f,\x0a\x20\x20\x20\x20clipMinimum:\x20vec4f,\x0a\x20\x20\x20\x20clipMaximum:\x20vec4f,\x0a\x20\x20\x20\x20render:\x20vec4f,\x0a\x20\x20\x20\x20transfer:\x20vec4f,\x0a\x20\x20\x20\x20geographic0:\x20vec4f,\x0a\x20\x20\x20\x20geographic1:\x20vec4f,\x0a\x20\x20\x20\x20geographic2:\x20vec4f,\x0a}\x0a\x0astruct\x20VolumeParams\x20{\x0a\x20\x20\x20\x20dimensions:\x20vec4u,\x0a\x20\x20\x20\x20brickInterior:\x20vec4u,\x0a\x20\x20\x20\x20brickCount:\x20vec4u,\x0a\x20\x20\x20\x20atlasSlots:\x20vec4u,\x0a\x20\x20\x20\x20atlasDimensions:\x20vec4u,\x0a\x20\x20\x20\x20valueMeta:\x20vec4f,\x0a}\x0a\x0astruct\x20PageTable\x20{\x0a\x20\x20\x20\x20values:\x20array<vec4u>,\x0a}\x0a\x0astruct\x20FloatValues\x20{\x0a\x20\x20\x20\x20values:\x20array<f32>,\x0a}\x0a\x0astruct\x20Colors\x20{\x0a\x20\x20\x20\x20values:\x20array<vec4f>,\x0a}\x0a\x0astruct\x20VolumeSample\x20{\x0a\x20\x20\x20\x20value:\x20f32,\x0a\x20\x20\x20\x20valid:\x20bool,\x0a}\x0a\x0astruct\x20RayInterval\x20{\x0a\x20\x20\x20\x20minimum:\x20f32,\x0a\x20\x20\x20\x20maximum:\x20f32,\x0a\x20\x20\x20\x20valid:\x20bool,\x0a}\x0a\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20scene:\x20SceneParams;\x0a@group(0)\x20@binding(1)\x20var\x20sceneDepth:\x20texture_depth_2d;\x0a@group(1)\x20@binding(0)\x20var\x20volumeAtlas0:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(1)\x20var\x20volumeAtlas1:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(2)\x20var\x20volumeAtlas2:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(3)\x20var\x20volumeAtlas3:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(4)\x20var\x20volumeAtlas4:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(5)\x20var\x20volumeAtlas5:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(6)\x20var\x20volumeAtlas6:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(7)\x20var\x20volumeAtlas7:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(8)\x20var<storage,\x20read>\x20pageTable:\x20PageTable;\x0a@group(1)\x20@binding(9)\x20var<uniform>\x20volume:\x20VolumeParams;\x0a@group(2)\x20@binding(0)\x20var<storage,\x20read>\x20colorStopValues:\x20FloatValues;\x0a@group(2)\x20@binding(1)\x20var<storage,\x20read>\x20colorStopColors:\x20Colors;\x0a@group(2)\x20@binding(2)\x20var<storage,\x20read>\x20opacityStopValues:\x20FloatValues;\x0a@group(2)\x20@binding(3)\x20var<storage,\x20read>\x20opacityStopAlphas:\x20FloatValues;\x0a\x0afn\x20invalidVolumeSample()\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20return\x20VolumeSample(0.0,\x20false);\x0a}\x0a\x0afn\x20validVolumeSample(value:\x20f32)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20return\x20VolumeSample(value,\x20true);\x0a}\x0a\x0afn\x20transformPoint(matrix:\x20mat4x4f,\x20point:\x20vec3f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20let\x20transformed\x20=\x20matrix\x20*\x20vec4f(point,\x201.0);\x0a\x20\x20\x20\x20return\x20transformed.xyz\x20/\x20transformed.w;\x0a}\x0a\x0afn\x20reconstructWorldPosition(ndc:\x20vec3f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20return\x20transformPoint(scene.inverseViewProjection,\x20ndc);\x0a}\x0a\x0a//\x20地理模式将局部\x20ECEF\x20采样点反算为经纬高归一化坐标;代理盒仅限制射线范围,不决定体积形状。\x0a//\x20Geographic\x20mode\x20converts\x20each\x20local\x20ECEF\x20sample\x20back\x20to\x20normalized\x20longitude,\x20latitude,\x20and\x20altitude;\x20the\x20proxy\x20box\x20only\x20limits\x20the\x20ray\x20interval\x20and\x20does\x20not\x20define\x20the\x20volume\x20shape.\x0afn\x20worldToVolume(worldPosition:\x20vec3f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20if\x20(scene.geographic0.x\x20<\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20transformPoint(scene.inverseModelMatrix,\x20worldPosition);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20ecef\x20=\x20worldPosition\x20+\x20scene.geographic0.yzw;\x0a\x20\x20\x20\x20let\x20semiMajor\x20=\x20scene.geographic1.x;\x0a\x20\x20\x20\x20let\x20semiMinor\x20=\x20scene.geographic1.y;\x0a\x20\x20\x20\x20let\x20eccentricitySquared\x20=\x201.0\x20-\x20semiMinor\x20*\x20semiMinor\x20/\x20(semiMajor\x20*\x20semiMajor);\x0a\x20\x20\x20\x20let\x20secondEccentricitySquared\x20=\x20(semiMajor\x20*\x20semiMajor\x20-\x20semiMinor\x20*\x20semiMinor)\x20/\x20(semiMinor\x20*\x20semiMinor);\x0a\x20\x20\x20\x20let\x20horizontal\x20=\x20length(ecef.xy);\x0a\x20\x20\x20\x20let\x20theta\x20=\x20atan2(ecef.z\x20*\x20semiMajor,\x20horizontal\x20*\x20semiMinor);\x0a\x20\x20\x20\x20let\x20thetaSin\x20=\x20sin(theta);\x0a\x20\x20\x20\x20let\x20thetaCos\x20=\x20cos(theta);\x0a\x20\x20\x20\x20let\x20latitude\x20=\x20atan2(\x0a\x20\x20\x20\x20\x20\x20\x20\x20ecef.z\x20+\x20secondEccentricitySquared\x20*\x20semiMinor\x20*\x20thetaSin\x20*\x20thetaSin\x20*\x20thetaSin,\x0a\x20\x20\x20\x20\x20\x20\x20\x20horizontal\x20-\x20eccentricitySquared\x20*\x20semiMajor\x20*\x20thetaCos\x20*\x20thetaCos\x20*\x20thetaCos\x0a\x20\x20\x20\x20);\x0a\x20\x20\x20\x20let\x20latitudeSin\x20=\x20sin(latitude);\x0a\x20\x20\x20\x20let\x20primeVerticalRadius\x20=\x20semiMajor\x20/\x20sqrt(1.0\x20-\x20eccentricitySquared\x20*\x20latitudeSin\x20*\x20latitudeSin);\x0a\x20\x20\x20\x20let\x20height\x20=\x20horizontal\x20/\x20max(0.000001,\x20abs(cos(latitude)))\x20-\x20primeVerticalRadius;\x0a\x20\x20\x20\x20let\x20longitude\x20=\x20atan2(ecef.y,\x20ecef.x);\x0a\x20\x20\x20\x20return\x20vec3f(\x0a\x20\x20\x20\x20\x20\x20\x20\x20(longitude\x20-\x20scene.geographic1.z)\x20/\x20(scene.geographic1.w\x20-\x20scene.geographic1.z),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(height\x20-\x20scene.geographic2.z)\x20/\x20(scene.geographic2.w\x20-\x20scene.geographic2.z),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(latitude\x20-\x20scene.geographic2.x)\x20/\x20(scene.geographic2.y\x20-\x20scene.geographic2.x)\x0a\x20\x20\x20\x20);\x0a}\x0a\x0afn\x20proxyToVolume(proxyPosition:\x20vec3f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20if\x20(scene.geographic0.x\x20<\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20proxyPosition;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20worldToVolume(transformPoint(scene.modelMatrix,\x20proxyPosition));\x0a}\x0a\x0afn\x20isInsideVolume(position:\x20vec3f)\x20->\x20bool\x20{\x0a\x20\x20\x20\x20return\x20all(position\x20>=\x20scene.clipMinimum.xyz)\x20&&\x20all(position\x20<=\x20scene.clipMaximum.xyz);\x0a}\x0a\x0afn\x20intersectAxis(origin:\x20f32,\x20direction:\x20f32,\x20minimumValue:\x20f32,\x20maximumValue:\x20f32)\x20->\x20vec2f\x20{\x0a\x20\x20\x20\x20if\x20(abs(direction)\x20<\x200.000001)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(origin\x20<\x20minimumValue\x20||\x20origin\x20>\x20maximumValue)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec2f(1.0,\x20-1.0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec2f(-1e20,\x201e20);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20first\x20=\x20(minimumValue\x20-\x20origin)\x20/\x20direction;\x0a\x20\x20\x20\x20let\x20second\x20=\x20(maximumValue\x20-\x20origin)\x20/\x20direction;\x0a\x20\x20\x20\x20return\x20vec2f(min(first,\x20second),\x20max(first,\x20second));\x0a}\x0a\x0afn\x20intersectClipBox(origin:\x20vec3f,\x20direction:\x20vec3f)\x20->\x20RayInterval\x20{\x0a\x20\x20\x20\x20let\x20x\x20=\x20intersectAxis(origin.x,\x20direction.x,\x20scene.clipMinimum.x,\x20scene.clipMaximum.x);\x0a\x20\x20\x20\x20let\x20y\x20=\x20intersectAxis(origin.y,\x20direction.y,\x20scene.clipMinimum.y,\x20scene.clipMaximum.y);\x0a\x20\x20\x20\x20let\x20z\x20=\x20intersectAxis(origin.z,\x20direction.z,\x20scene.clipMinimum.z,\x20scene.clipMaximum.z);\x0a\x20\x20\x20\x20let\x20minimumDistance\x20=\x20max(max(x.x,\x20y.x),\x20z.x);\x0a\x20\x20\x20\x20let\x20maximumDistance\x20=\x20min(min(x.y,\x20y.y),\x20z.y);\x0a\x20\x20\x20\x20return\x20RayInterval(max(0.0,\x20minimumDistance),\x20maximumDistance,\x20maximumDistance\x20>=\x20max(0.0,\x20minimumDistance));\x0a}\x0a\x0afn\x20getPageIndex(brick:\x20vec3u)\x20->\x20u32\x20{\x0a\x20\x20\x20\x20return\x20brick.x\x20+\x20brick.y\x20*\x20volume.brickCount.x\x20+\x20brick.z\x20*\x20volume.brickCount.x\x20*\x20volume.brickCount.y;\x0a}\x0a\x0afn\x20getSlotCoordinate(slotIndex:\x20u32)\x20->\x20vec3u\x20{\x0a\x20\x20\x20\x20let\x20layerSize\x20=\x20volume.atlasSlots.x\x20*\x20volume.atlasSlots.y;\x0a\x20\x20\x20\x20let\x20z\x20=\x20slotIndex\x20/\x20layerSize;\x0a\x20\x20\x20\x20let\x20remainder\x20=\x20slotIndex\x20-\x20z\x20*\x20layerSize;\x0a\x20\x20\x20\x20let\x20y\x20=\x20remainder\x20/\x20volume.atlasSlots.x;\x0a\x20\x20\x20\x20let\x20x\x20=\x20remainder\x20-\x20y\x20*\x20volume.atlasSlots.x;\x0a\x20\x20\x20\x20return\x20vec3u(x,\x20y,\x20z);\x0a}\x0a\x0afn\x20loadAtlasValue(atlasIndex:\x20u32,\x20coordinate:\x20vec3i)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x200u)\x20{\x20return\x20textureLoad(volumeAtlas0,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x201u)\x20{\x20return\x20textureLoad(volumeAtlas1,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x202u)\x20{\x20return\x20textureLoad(volumeAtlas2,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x203u)\x20{\x20return\x20textureLoad(volumeAtlas3,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x204u)\x20{\x20return\x20textureLoad(volumeAtlas4,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x205u)\x20{\x20return\x20textureLoad(volumeAtlas5,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x206u)\x20{\x20return\x20textureLoad(volumeAtlas6,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20return\x20textureLoad(volumeAtlas7,\x20coordinate,\x200).r;\x0a}\x0a\x0afn\x20loadAtlasVoxel(voxel:\x20vec3i,\x20owningBrick:\x20vec3u)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20let\x20page\x20=\x20pageTable.values[getPageIndex(owningBrick)];\x0a\x0a\x20\x20\x20\x20if\x20(page.x\x20==\x200u\x20||\x20page.z\x20==\x200u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20slot\x20=\x20getSlotCoordinate(page.x\x20-\x201u);\x0a\x20\x20\x20\x20let\x20physicalBrick\x20=\x20volume.brickInterior.xyz\x20+\x20vec3u(2u);\x0a\x20\x20\x20\x20let\x20brickStart\x20=\x20vec3i(owningBrick\x20*\x20volume.brickInterior.xyz);\x0a\x20\x20\x20\x20let\x20local\x20=\x20voxel\x20-\x20brickStart\x20+\x20vec3i(1);\x0a\x20\x20\x20\x20let\x20atlasCoordinate\x20=\x20vec3i(slot\x20*\x20physicalBrick)\x20+\x20local;\x0a\x20\x20\x20\x20let\x20value\x20=\x20loadAtlasValue(page.w,\x20atlasCoordinate);\x0a\x0a\x20\x20\x20\x20if\x20(value\x20!=\x20value\x20||\x20(volume.valueMeta.y\x20>\x200.5\x20&&\x20value\x20==\x20volume.valueMeta.x))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20validVolumeSample(value);\x0a}\x0a\x0afn\x20sampleVolume(modelPosition:\x20vec3f)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20let\x20normalized\x20=\x20clamp(modelPosition,\x20vec3f(0.0),\x20vec3f(1.0));\x0a\x20\x20\x20\x20let\x20voxel\x20=\x20normalized\x20*\x20vec3f(volume.dimensions.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20baseVoxel\x20=\x20vec3i(floor(voxel));\x0a\x20\x20\x20\x20let\x20maximumVoxel\x20=\x20vec3i(volume.dimensions.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20nextVoxel\x20=\x20min(baseVoxel\x20+\x20vec3i(1),\x20maximumVoxel);\x0a\x20\x20\x20\x20let\x20fraction\x20=\x20voxel\x20-\x20vec3f(baseVoxel);\x0a\x20\x20\x20\x20let\x20owningBrick\x20=\x20min(vec3u(max(baseVoxel,\x20vec3i(0)))\x20/\x20volume.brickInterior.xyz,\x20volume.brickCount.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20c000\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20baseVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c100\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20baseVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c010\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20nextVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c110\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20nextVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c001\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20baseVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c101\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20baseVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c011\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20nextVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c111\x20=\x20loadAtlasVoxel(nextVoxel,\x20owningBrick);\x0a\x0a\x20\x20\x20\x20if\x20(!c000.valid\x20||\x20!c100.valid\x20||\x20!c010.valid\x20||\x20!c110.valid\x20||\x20!c001.valid\x20||\x20!c101.valid\x20||\x20!c011.valid\x20||\x20!c111.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20bottom0\x20=\x20mix(c000.value,\x20c100.value,\x20fraction.x);\x0a\x20\x20\x20\x20let\x20bottom1\x20=\x20mix(c010.value,\x20c110.value,\x20fraction.x);\x0a\x20\x20\x20\x20let\x20top0\x20=\x20mix(c001.value,\x20c101.value,\x20fraction.x);\x0a\x20\x20\x20\x20let\x20top1\x20=\x20mix(c011.value,\x20c111.value,\x20fraction.x);\x0a\x20\x20\x20\x20return\x20validVolumeSample(mix(mix(bottom0,\x20bottom1,\x20fraction.y),\x20mix(top0,\x20top1,\x20fraction.y),\x20fraction.z));\x0a}\x0a\x0a//\x20体积分步只读取当前最近体素,避免对最终透明的样本执行八次纹理读取;高精度切面仍使用独立的三线性采样。\x0a//\x20Raymarch\x20steps\x20read\x20the\x20nearest\x20voxel\x20so\x20transparent\x20samples\x20avoid\x20eight\x20texture\x20loads;\x20high-detail\x20slices\x20keep\x20their\x20separate\x20trilinear\x20sampling.\x0afn\x20sampleVolumeNearest(modelPosition:\x20vec3f)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20let\x20normalized\x20=\x20clamp(modelPosition,\x20vec3f(0.0),\x20vec3f(1.0));\x0a\x20\x20\x20\x20let\x20maximumVoxel\x20=\x20volume.dimensions.xyz\x20-\x20vec3u(1u);\x0a\x20\x20\x20\x20let\x20voxel\x20=\x20vec3i(round(normalized\x20*\x20vec3f(maximumVoxel)));\x0a\x20\x20\x20\x20let\x20owningBrick\x20=\x20min(vec3u(max(voxel,\x20vec3i(0)))\x20/\x20volume.brickInterior.xyz,\x20volume.brickCount.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20return\x20loadAtlasVoxel(voxel,\x20owningBrick);\x0a}\x0a\x0afn\x20sampleColor(value:\x20f32)\x20->\x20vec4f\x20{\x0a\x20\x20\x20\x20let\x20count\x20=\x20u32(scene.transfer.x);\x0a\x0a\x20\x20\x20\x20if\x20(count\x20==\x201u\x20||\x20value\x20<=\x20colorStopValues.values[0u])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20colorStopColors.values[0u];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20+\x201u\x20<\x20count;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20start\x20=\x20colorStopValues.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20end\x20=\x20colorStopValues.values[index\x20+\x201u];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20<\x20end)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(scene.transfer.w\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20colorStopColors.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20ratio\x20=\x20clamp((value\x20-\x20start)\x20/\x20max(end\x20-\x20start,\x200.000001),\x200.0,\x201.0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20mix(colorStopColors.values[index],\x20colorStopColors.values[index\x20+\x201u],\x20ratio);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20colorStopColors.values[count\x20-\x201u];\x0a}\x0a\x0afn\x20sampleOpacity(value:\x20f32)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20let\x20count\x20=\x20u32(scene.transfer.y);\x0a\x0a\x20\x20\x20\x20if\x20(count\x20==\x201u\x20||\x20value\x20<=\x20opacityStopValues.values[0u])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20opacityStopAlphas.values[0u];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20+\x201u\x20<\x20count;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20start\x20=\x20opacityStopValues.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20end\x20=\x20opacityStopValues.values[index\x20+\x201u];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20<\x20end)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(scene.transfer.w\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20opacityStopAlphas.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20ratio\x20=\x20clamp((value\x20-\x20start)\x20/\x20max(end\x20-\x20start,\x200.000001),\x200.0,\x201.0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20mix(opacityStopAlphas.values[index],\x20opacityStopAlphas.values[index\x20+\x201u],\x20ratio);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20opacityStopAlphas.values[count\x20-\x201u];\x0a}\x0a\x0afn\x20nextBrickAxisDistance(position:\x20f32,\x20direction:\x20f32,\x20minimumValue:\x20f32,\x20maximumValue:\x20f32)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20if\x20(direction\x20>\x200.000001)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20max(scene.render.w,\x20(maximumValue\x20-\x20position)\x20/\x20direction\x20+\x20scene.render.w\x20*\x200.25);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(direction\x20<\x20-0.000001)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20max(scene.render.w,\x20(minimumValue\x20-\x20position)\x20/\x20direction\x20+\x20scene.render.w\x20*\x200.25);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x201e20;\x0a}\x0a\x0afn\x20getEmptyBrickSkipDistance(position:\x20vec3f,\x20direction:\x20vec3f)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20let\x20normalized\x20=\x20clamp(position,\x20vec3f(0.0),\x20vec3f(1.0));\x0a\x20\x20\x20\x20let\x20maximumVoxel\x20=\x20volume.dimensions.xyz\x20-\x20vec3u(1u);\x0a\x20\x20\x20\x20let\x20safeMaximumVoxel\x20=\x20max(maximumVoxel,\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20voxel\x20=\x20vec3u(floor(normalized\x20*\x20vec3f(maximumVoxel)));\x0a\x20\x20\x20\x20let\x20brick\x20=\x20min(voxel\x20/\x20volume.brickInterior.xyz,\x20volume.brickCount.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20page\x20=\x20pageTable.values[getPageIndex(brick)];\x0a\x0a\x20\x20\x20\x20if\x20(page.x\x20!=\x200u\x20&&\x20page.z\x20!=\x200u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x200.0;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20minimumPosition\x20=\x20vec3f(brick\x20*\x20volume.brickInterior.xyz)\x20/\x20vec3f(safeMaximumVoxel);\x0a\x20\x20\x20\x20let\x20maximumPosition\x20=\x20vec3f(min((brick\x20+\x20vec3u(1u))\x20*\x20volume.brickInterior.xyz,\x20maximumVoxel))\x20/\x20vec3f(safeMaximumVoxel);\x0a\x20\x20\x20\x20return\x20min(\x0a\x20\x20\x20\x20\x20\x20\x20\x20nextBrickAxisDistance(normalized.x,\x20direction.x,\x20minimumPosition.x,\x20maximumPosition.x),\x0a\x20\x20\x20\x20\x20\x20\x20\x20min(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20nextBrickAxisDistance(normalized.y,\x20direction.y,\x20minimumPosition.y,\x20maximumPosition.y),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20nextBrickAxisDistance(normalized.z,\x20direction.z,\x20minimumPosition.z,\x20maximumPosition.z)\x0a\x20\x20\x20\x20\x20\x20\x20\x20)\x0a\x20\x20\x20\x20);\x0a}\x0a\x0afn\x20getDepthDistance(pixel:\x20vec2i,\x20ndcXY:\x20vec2f,\x20rayOrigin:\x20vec3f,\x20rayDirection:\x20vec3f)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20let\x20depth\x20=\x20textureLoad(sceneDepth,\x20pixel,\x200);\x0a\x0a\x20\x20\x20\x20if\x20(depth\x20>=\x201.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x201e20;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20depthWorld\x20=\x20reconstructWorldPosition(vec3f(ndcXY,\x20depth));\x0a\x20\x20\x20\x20let\x20depthModel\x20=\x20transformPoint(scene.inverseModelMatrix,\x20depthWorld);\x0a\x20\x20\x20\x20return\x20max(0.0,\x20dot(depthModel\x20-\x20rayOrigin,\x20rayDirection));\x0a}\x0a\x0afn\x20raymarchComposite(origin:\x20vec3f,\x20direction:\x20vec3f,\x20interval:\x20RayInterval)\x20->\x20vec4f\x20{\x0a\x20\x20\x20\x20var\x20accumulated\x20=\x20vec4f(0.0);\x0a\x20\x20\x20\x20var\x20distance\x20=\x20interval.minimum;\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20<\x204096u\x20&&\x20distance\x20<=\x20interval.maximum\x20&&\x20accumulated.a\x20<\x200.985;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20proxyPosition\x20=\x20origin\x20+\x20direction\x20*\x20distance;\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20skipDistance\x20=\x20select(0.0,\x20getEmptyBrickSkipDistance(proxyPosition,\x20direction),\x20scene.geographic0.x\x20<\x200.5);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(skipDistance\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20skipDistance;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20volumePosition\x20=\x20proxyToVolume(proxyPosition);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!isInsideVolume(volumePosition))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20scene.render.w;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20sample\x20=\x20sampleVolumeNearest(volumePosition);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(sample.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20sampleAlpha\x20=\x20sampleOpacity(sample.value);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(sampleAlpha\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20color\x20=\x20sampleColor(sample.value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20alpha\x20=\x201.0\x20-\x20exp(-sampleAlpha\x20*\x20scene.render.z\x20*\x20scene.render.w);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20contribution\x20=\x20(1.0\x20-\x20accumulated.a)\x20*\x20alpha;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20accumulated\x20=\x20vec4f(accumulated.rgb\x20+\x20color.rgb\x20*\x20contribution,\x20accumulated.a\x20+\x20contribution);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20scene.render.w;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20finalAlpha\x20=\x20accumulated.a\x20*\x20scene.render.y\x20*\x20scene.transfer.z;\x0a\x20\x20\x20\x20return\x20vec4f(accumulated.rgb\x20*\x20scene.render.y\x20*\x20scene.transfer.z,\x20finalAlpha);\x0a}\x0a\x0afn\x20raymarchMaximum(origin:\x20vec3f,\x20direction:\x20vec3f,\x20interval:\x20RayInterval)\x20->\x20vec4f\x20{\x0a\x20\x20\x20\x20var\x20maximumValue\x20=\x20-1e30;\x0a\x20\x20\x20\x20var\x20found\x20=\x20false;\x0a\x20\x20\x20\x20var\x20distance\x20=\x20interval.minimum;\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20<\x204096u\x20&&\x20distance\x20<=\x20interval.maximum;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20proxyPosition\x20=\x20origin\x20+\x20direction\x20*\x20distance;\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20skipDistance\x20=\x20select(0.0,\x20getEmptyBrickSkipDistance(proxyPosition,\x20direction),\x20scene.geographic0.x\x20<\x200.5);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(skipDistance\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20skipDistance;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20volumePosition\x20=\x20proxyToVolume(proxyPosition);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!isInsideVolume(volumePosition))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20scene.render.w;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20sample\x20=\x20sampleVolumeNearest(volumePosition);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(sample.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20maximumValue\x20=\x20max(maximumValue,\x20sample.value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20found\x20=\x20true;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20scene.render.w;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(!found)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec4f(0.0);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20color\x20=\x20sampleColor(maximumValue);\x0a\x20\x20\x20\x20let\x20alpha\x20=\x20sampleOpacity(maximumValue)\x20*\x20scene.render.y\x20*\x20scene.transfer.z;\x0a\x20\x20\x20\x20return\x20vec4f(color.rgb\x20*\x20alpha,\x20alpha);\x0a}\x0a\x0a@vertex\x0afn\x20vertexMain(@builtin(vertex_index)\x20vertexIndex:\x20u32)\x20->\x20@builtin(position)\x20vec4f\x20{\x0a\x20\x20\x20\x20let\x20x\x20=\x20f32(i32(vertexIndex\x20&\x201u)\x20*\x204\x20-\x201);\x0a\x20\x20\x20\x20let\x20y\x20=\x20f32(i32(vertexIndex\x20>>\x201u)\x20*\x204\x20-\x201);\x0a\x20\x20\x20\x20return\x20vec4f(x,\x20y,\x200.0,\x201.0);\x0a}\x0a\x0a@fragment\x0afn\x20fragmentMain(@builtin(position)\x20fragmentPosition:\x20vec4f)\x20->\x20@location(0)\x20vec4f\x20{\x0a\x20\x20\x20\x20let\x20ndcXY\x20=\x20vec2f(fragmentPosition.x\x20/\x20scene.viewport.x\x20*\x202.0\x20-\x201.0,\x201.0\x20-\x20fragmentPosition.y\x20/\x20scene.viewport.y\x20*\x202.0);\x0a\x20\x20\x20\x20let\x20nearWorld\x20=\x20reconstructWorldPosition(vec3f(ndcXY,\x200.0));\x0a\x20\x20\x20\x20let\x20farWorld\x20=\x20reconstructWorldPosition(vec3f(ndcXY,\x201.0));\x0a\x20\x20\x20\x20let\x20nearModel\x20=\x20transformPoint(scene.inverseModelMatrix,\x20nearWorld);\x0a\x20\x20\x20\x20let\x20farModel\x20=\x20transformPoint(scene.inverseModelMatrix,\x20farWorld);\x0a\x20\x20\x20\x20let\x20direction\x20=\x20normalize(farModel\x20-\x20nearModel);\x0a\x20\x20\x20\x20var\x20interval\x20=\x20intersectClipBox(nearModel,\x20direction);\x0a\x0a\x20\x20\x20\x20if\x20(!interval.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20discard;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20interval.maximum\x20=\x20min(interval.maximum,\x20getDepthDistance(vec2i(fragmentPosition.xy),\x20ndcXY,\x20nearModel,\x20direction));\x0a\x0a\x20\x20\x20\x20if\x20(interval.maximum\x20<\x20interval.minimum)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20discard;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(scene.render.x\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20raymarchMaximum(nearModel,\x20direction,\x20interval);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20raymarchComposite(nearModel,\x20direction,\x20interval);\x0a}\x0a','then','currentPreview','locked','flex','generation','sqrt','lastSubmittedFrameTimestamp','near','volume\x20transfer\x20bind\x20group\x20layout','gpuBytes','error','BaseLayer','READ','setVertexBuffer','requestAdapter','\x0afn\x20intersectEllipsoid(origin:\x20vec3f,\x20direction:\x20vec3f,\x20semiMajor:\x20f32,\x20semiMinor:\x20f32)\x20->\x20vec2f\x20{\x0a\x20\x20\x20\x20let\x20inverseRadiiSquared\x20=\x20vec3f(\x0a\x20\x20\x20\x20\x20\x20\x20\x201.0\x20/\x20(semiMajor\x20*\x20semiMajor),\x0a\x20\x20\x20\x20\x20\x20\x20\x201.0\x20/\x20(semiMajor\x20*\x20semiMajor),\x0a\x20\x20\x20\x20\x20\x20\x20\x201.0\x20/\x20(semiMinor\x20*\x20semiMinor)\x0a\x20\x20\x20\x20);\x0a\x20\x20\x20\x20let\x20coefficientA\x20=\x20dot(direction\x20*\x20direction,\x20inverseRadiiSquared);\x0a\x20\x20\x20\x20let\x20coefficientB\x20=\x202.0\x20*\x20dot(origin\x20*\x20direction,\x20inverseRadiiSquared);\x0a\x20\x20\x20\x20let\x20coefficientC\x20=\x20dot(origin\x20*\x20origin,\x20inverseRadiiSquared)\x20-\x201.0;\x0a\x20\x20\x20\x20let\x20discriminant\x20=\x20coefficientB\x20*\x20coefficientB\x20-\x204.0\x20*\x20coefficientA\x20*\x20coefficientC;\x0a\x0a\x20\x20\x20\x20if\x20(discriminant\x20<\x200.0\x20||\x20coefficientA\x20<=\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec2f(1.0,\x20-1.0);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20root\x20=\x20sqrt(discriminant);\x0a\x20\x20\x20\x20let\x20inverseDenominator\x20=\x200.5\x20/\x20coefficientA;\x0a\x20\x20\x20\x20let\x20first\x20=\x20(-coefficientB\x20-\x20root)\x20*\x20inverseDenominator;\x0a\x20\x20\x20\x20let\x20second\x20=\x20(-coefficientB\x20+\x20root)\x20*\x20inverseDenominator;\x0a\x20\x20\x20\x20return\x20vec2f(min(first,\x20second),\x20max(first,\x20second));\x0a}\x0a\x0afn\x20intersectGeographicShell(origin:\x20vec3f,\x20direction:\x20vec3f)\x20->\x20RayInterval\x20{\x0a\x20\x20\x20\x20let\x20worldOrigin\x20=\x20transformPoint(scene.modelMatrix,\x20origin)\x20+\x20scene.geographic0.yzw;\x0a\x20\x20\x20\x20let\x20worldDirection\x20=\x20transformPoint(scene.modelMatrix,\x20origin\x20+\x20direction)\x20-\x20transformPoint(scene.modelMatrix,\x20origin);\x0a\x20\x20\x20\x20let\x20minimumHeight\x20=\x20min(scene.geographic2.z,\x20scene.geographic2.w);\x0a\x20\x20\x20\x20let\x20maximumHeight\x20=\x20max(scene.geographic2.z,\x20scene.geographic2.w);\x0a\x20\x20\x20\x20let\x20outer\x20=\x20intersectEllipsoid(worldOrigin,\x20worldDirection,\x20scene.geographic1.x\x20+\x20maximumHeight,\x20scene.geographic1.y\x20+\x20maximumHeight);\x0a\x0a\x20\x20\x20\x20if\x20(outer.y\x20<\x20max(0.0,\x20outer.x))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20RayInterval(1.0,\x20-1.0,\x20false);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20var\x20minimumDistance\x20=\x20max(0.0,\x20outer.x);\x0a\x20\x20\x20\x20var\x20maximumDistance\x20=\x20outer.y;\x0a\x20\x20\x20\x20let\x20inner\x20=\x20intersectEllipsoid(worldOrigin,\x20worldDirection,\x20scene.geographic1.x\x20+\x20minimumHeight,\x20scene.geographic1.y\x20+\x20minimumHeight);\x0a\x0a\x20\x20\x20\x20if\x20(inner.y\x20>=\x20max(0.0,\x20inner.x))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(inner.x\x20>\x20minimumDistance)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20maximumDistance\x20=\x20min(maximumDistance,\x20inner.x);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(inner.y\x20>\x20minimumDistance)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20minimumDistance\x20=\x20max(minimumDistance,\x20inner.y);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20RayInterval(minimumDistance,\x20maximumDistance,\x20maximumDistance\x20>=\x20minimumDistance);\x0a}\x0a\x0afn\x20getPageIndex','handlePointerDown','minimumPitch','sourceGeneration','\x20is\x20invalid:\x20','logicalBrickCount','cameraEndTimer','cartesian','timeIndex','A\x20destroyed\x20WebGPU\x20volume\x20renderer\x20cannot\x20be\x20initialized\x20again.\x20已销毁的\x20WebGPU\x20体积渲染器不能再次初始化。','encodeScenePass','Volume\x20timeCount','cacheBrickUpload','Volume\x20chunk\x20requires\x20','getPreferredCanvasFormat','Mars3D\x20volume\x20layer\x20is\x20not\x20attached\x20to\x20a\x20map.\x20Mars3D\x20体积层尚未关联地图。','handleResize','9OFtLCF','shape','不支持的颜色格式:\x20','colorBuffer','uploadStagingBufferSize','_mountedHook','backend','cameraState','volume\x20geometry\x20bind\x20group','cameraPosition','zIndex','透视相机参数无效。','createElement','The\x20current\x20WebGPU\x20volume\x20atlas\x20requires\x20halo:\x201.\x20当前\x20WebGPU\x20体积图集要求\x20halo\x20为\x201。','bindControls','lifecycleState','coordinate','requestFramesImmediately','getFormat','coordinateSystem','function','directionWC','pointermove','isInteger','2980lTkjKH','onError','个色标范围的\x20min\x20必须小于\x20max','Volume\x20revision\x20must\x20be\x20a\x20non-negative\x20integer.\x20体积\x20revision\x20必须是非负整数。','切面轴采样数必须是正整数。','createRenderPipeline','drawMeshes','Returned\x20volume\x20chunk\x20dimensions\x20do\x20not\x20match\x20its\x20range.\x20返回体积分块尺寸与范围不一致。','depthView','indices','destroyResources','byteLength','less','lastFrameTimeMilliseconds','getBoundingClientRect','depth','wgs84','getTransferResources','anchorDistance','sourceYStart','showDebugGeometry','activePointer','WebGPU\x20volume\x20canvas\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20Canvas\x20尚未初始化。','volume\x20brick\x20upload\x20batch\x20flush','clientHeight','levelCount','managed','message','getEffectiveRenderScale','from','unconfigure','isNaN','residentByLogicalIndex','正交相机高度必须大于\x200。','Volume\x20color\x20stops\x20must\x20be\x20sorted\x20by\x20value.\x20体积颜色色标必须按数值升序排列。','queue','memoryTargetBytes','cachedSlices','desiredKeys','one-minus-src-alpha','createLockedMarker','remove','hitTolerance','clipBox','destroyBuffers','snapshot','WebGPU\x20volume\x20dimensions\x20must\x20be\x20positive\x20integers.\x20WebGPU\x20体积尺寸必须是正整数。','round','centerEcefScaled','onInteractionEnd','overlayContainer','slicePlateColor','\x20is\x20duplicated.\x20体积切面\x20ID\x20重复。','WebGPU\x20volume\x20atlas\x20is\x20not\x20configured.\x20WebGPU\x20体积图集尚未配置。','fovy','tan','\x20的\x20values\x20长度与\x20path、heights\x20不匹配。','writeBuffer','valuesEqual','Count','fill','requestBrickSchedule','axis','finally','webgpu','\x20包含多个采样点时步长不能为零。','WebGPU\x20scene\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20场景绑定布局不可用。','createCurrentCompensationFrame','longitudeRadians','vertexCount','atlasCapacity','frameAvailableCallback','colorStopCount','getFrame','Volume\x20brick\x20coordinate\x20is\x20out\x20of\x20range.\x20体积分块坐标越界。','startsWith','aspect','atan2','normalizationMeters','rgb(','xStart','brickScheduleDirty','encodeOverlayPass','initializing','distance','div','volumeBindGroup','createResource','sceneDepthView','push','\x20的\x20opacity\x20必须位于\x200\x20到\x201。','alignItems','inverseModelMatrix','devicePixelRatio','sliceState','interactionElement','style','brickHeight','rotateSpeed','levelStart','getContext','COPY_DST','balanced','getPageTableBuffer','layout','composite','.\x20创建\x20WebGPU\x20体积管线失败。','chunk','hitTolerancePixels','STORAGE_BINDING','clientWidth','requestRender','_addedHook','mode','volume\x20scene\x20frame','removeEventListener','WebGPU\x20volume\x20atlas\x20layout\x20is\x20unavailable.\x20WebGPU\x20体积图集布局不可用。','WebGPU\x20volume\x20scene\x20dimensions\x20must\x20be\x20positive\x20integers.\x20WebGPU\x20体积场景尺寸必须是正整数。','loadedKeys','always-visible','getSliceBindGroupLayout','bytesPerRow','setProjectionType','min','.\x20体积砖块数据长度不正确。','colorStops','sceneBindGroupLayout','statistics','inherit','atlasLayout','atlas','volume\x20raymarch\x20pass','delete','.\x20体积时间索引越界。','getBindGroupLayout','Volume','fovYRadians','getAtlas','count','colorMode','mars3d\x20volume\x20shell\x20raymarch\x20shader','plateColor','scene','sceneParamsBuffer','clearAtlasTexture','upload','volume\x20color\x20stop\x20values','container','densityScale','scheduleUploadPump','切面深度模式无效\x20/\x20Slice\x20depth\x20mode\x20is\x20invalid','不支持的\x20rgb\x20颜色格式:\x20','BYTES_PER_ELEMENT','volumeParamsBuffer','triangle-list','createPipelineLayout','preview','store','transform','key','pointercancel','residentBySlotIndex','xAxis','sliceBindGroupLayout','countX','subscribe','matrix(','format','configureSourceResources','minX','overlaySlicePipeline','inverseViewProjection','WebGPU\x20axis\x20resources\x20are\x20unavailable.\x20WebGPU\x20轴线资源不可用。','top','sceneBindGroup','onSliceError','unsubscribe','geometryBindGroupLayout','renderScale','lockedSlices','previousAxis','transferResources','pendingKeys','bind','viewportWidth','pixelRatioCap','\x20must\x20be\x20a\x20positive\x20finite\x20number.\x20','volume\x20always\x20visible\x20pass','extent','finish','setAspect','handlePointerUp','volumeCamera','watchDeviceLost','handlePointerMove','viewProjectionMatrix','modelMatrix','submittedFrameCount','verticalScale\x20must\x20be\x20a\x20positive\x20finite\x20value.\x20verticalScale\x20必须是大于\x200\x20的有限数。','replace','zoomSpeed','projection','beginInteraction','WebGPU\x20scene\x20attachments\x20are\x20unavailable.\x20WebGPU\x20场景附件不可用。','Failed\x20to\x20acquire\x20a\x20WebGPU\x20adapter\x20for\x20the\x20volume\x20scene.\x20无法为体积场景获取\x20WebGPU\x20adapter。','cachedProfiles','positionMarker','activeInteractions','wheel','Volume\x20valueScale\x20must\x20be\x20finite.\x20体积\x20valueScale\x20必须是有限数值。','getVolumeBindGroupLayout','preventDefault','setFrameAvailableCallback','finishCameraInteraction','cachedBricks','show','maxBufferSize','unmap','Failed\x20to\x20create\x20a\x20WebGPU\x20canvas\x20context\x20for\x20the\x20volume\x20scene.\x20无法为体积场景创建\x20WebGPU\x20Canvas\x20上下文。','sceneLinePipeline','pointerId','renderMode','clear','revision','popErrorScope','axisHysteresis','maxY','hideAllMarkers','prepared','profileResources','writeVolumeParams','getProfileResources','sin','toUpperCase','uploadBrick','updatePreview','\x20requires\x20','subarray','autoQuality','5322CDsmsr','\x20axis\x20must\x20contain\x20two\x20different\x20finite\x20endpoints.\x20','WebGPU\x20volume\x20context\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20context\x20尚未初始化。','hasPointerCapture','end','pointerup','occupied','struct\x20SceneParams\x20{\x0a\x20\x20\x20\x20viewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseViewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20modelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseModelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20cameraPosition:\x20vec4f,\x0a\x20\x20\x20\x20viewport:\x20vec4f,\x0a\x20\x20\x20\x20clipMinimum:\x20vec4f,\x0a\x20\x20\x20\x20clipMaximum:\x20vec4f,\x0a\x20\x20\x20\x20render:\x20vec4f,\x0a\x20\x20\x20\x20transfer:\x20vec4f,\x0a\x20\x20\x20\x20geographic0:\x20vec4f,\x0a\x20\x20\x20\x20geographic1:\x20vec4f,\x0a\x20\x20\x20\x20geographic2:\x20vec4f,\x0a}\x0a\x0astruct\x20VertexOutput\x20{\x0a\x20\x20\x20\x20@builtin(position)\x20position:\x20vec4f,\x0a\x20\x20\x20\x20@location(0)\x20color:\x20vec4f,\x0a}\x0a\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20scene:\x20SceneParams;\x0a\x0afn\x20transformScenePosition(position:\x20vec3f)\x20->\x20vec4f\x20{\x0a\x20\x20\x20\x20if\x20(scene.geographic0.x\x20<\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20scene.viewProjection\x20*\x20scene.modelMatrix\x20*\x20vec4f(position,\x201.0);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20longitude\x20=\x20mix(scene.geographic1.z,\x20scene.geographic1.w,\x20position.x);\x0a\x20\x20\x20\x20let\x20latitude\x20=\x20mix(scene.geographic2.x,\x20scene.geographic2.y,\x20position.z);\x0a\x20\x20\x20\x20let\x20height\x20=\x20mix(scene.geographic2.z,\x20scene.geographic2.w,\x20position.y);\x0a\x20\x20\x20\x20let\x20latitudeSin\x20=\x20sin(latitude);\x0a\x20\x20\x20\x20let\x20latitudeCos\x20=\x20cos(latitude);\x0a\x20\x20\x20\x20let\x20semiMajor\x20=\x20scene.geographic1.x;\x0a\x20\x20\x20\x20let\x20semiMinor\x20=\x20scene.geographic1.y;\x0a\x20\x20\x20\x20let\x20eccentricitySquared\x20=\x201.0\x20-\x20semiMinor\x20*\x20semiMinor\x20/\x20(semiMajor\x20*\x20semiMajor);\x0a\x20\x20\x20\x20let\x20primeVerticalRadius\x20=\x20semiMajor\x20/\x20sqrt(1.0\x20-\x20eccentricitySquared\x20*\x20latitudeSin\x20*\x20latitudeSin);\x0a\x20\x20\x20\x20let\x20ecef\x20=\x20vec3f(\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20+\x20height)\x20*\x20latitudeCos\x20*\x20cos(longitude),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20+\x20height)\x20*\x20latitudeCos\x20*\x20sin(longitude),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20*\x20(1.0\x20-\x20eccentricitySquared)\x20+\x20height)\x20*\x20latitudeSin\x0a\x20\x20\x20\x20);\x0a\x20\x20\x20\x20return\x20scene.viewProjection\x20*\x20vec4f(ecef\x20-\x20scene.geographic0.yzw,\x201.0);\x0a}\x0a\x0a@vertex\x0afn\x20vertexMain(@location(0)\x20position:\x20vec3f,\x20@location(1)\x20color:\x20vec4f)\x20->\x20VertexOutput\x20{\x0a\x20\x20\x20\x20return\x20VertexOutput(transformScenePosition(position),\x20color);\x0a}\x0a\x0a@fragment\x0afn\x20fragmentMain(input:\x20VertexOutput)\x20->\x20@location(0)\x20vec4f\x20{\x0a\x20\x20\x20\x20return\x20vec4f(input.color.rgb\x20*\x20input.color.a,\x20input.color.a);\x0a}\x0a','.\x20体积分块\x20','assertAlive','absolute','submit','getSceneBindGroupLayout','readChunk','_showHook','acquireSlot','buffer','captureFrame','cameraSignature','createBuffer','clearPreview','flushBrickSchedule','RENDER_ATTACHMENT','minY','createProjectionCamera','handleWindowPointerMove','atlasViews','halo','device','stepLength','userSelect','latitudeRadians','setSlices','load','parentElement','skippedSampleCount','getStepLength','WebGPU\x20volume\x20page\x20table\x20is\x20unavailable.\x20WebGPU\x20体积页表不可用。','render','setToolMode','startY','setState','skippedSamples','setTimeIndex','cos','struct\x20SceneParams\x20{\x0a\x20\x20\x20\x20viewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseViewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20modelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseModelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20cameraPosition:\x20vec4f,\x0a\x20\x20\x20\x20viewport:\x20vec4f,\x0a\x20\x20\x20\x20clipMinimum:\x20vec4f,\x0a\x20\x20\x20\x20clipMaximum:\x20vec4f,\x0a\x20\x20\x20\x20render:\x20vec4f,\x0a\x20\x20\x20\x20transfer:\x20vec4f,\x0a\x20\x20\x20\x20geographic0:\x20vec4f,\x0a\x20\x20\x20\x20geographic1:\x20vec4f,\x0a\x20\x20\x20\x20geographic2:\x20vec4f,\x0a}\x0a\x0astruct\x20VolumeParams\x20{\x0a\x20\x20\x20\x20dimensions:\x20vec4u,\x0a\x20\x20\x20\x20brickInterior:\x20vec4u,\x0a\x20\x20\x20\x20brickCount:\x20vec4u,\x0a\x20\x20\x20\x20atlasSlots:\x20vec4u,\x0a\x20\x20\x20\x20atlasDimensions:\x20vec4u,\x0a\x20\x20\x20\x20valueMeta:\x20vec4f,\x0a}\x0a\x0astruct\x20PageTable\x20{\x20values:\x20array<vec4u>\x20}\x0astruct\x20FloatValues\x20{\x20values:\x20array<f32>\x20}\x0astruct\x20Colors\x20{\x20values:\x20array<vec4f>\x20}\x0astruct\x20SliceParams\x20{\x0a\x20\x20\x20\x20data:\x20vec4f,\x0a\x20\x20\x20\x20plateColor:\x20vec4f,\x0a}\x0astruct\x20VolumeSample\x20{\x20value:\x20f32,\x20valid:\x20bool\x20}\x0a\x0astruct\x20SliceVertexOutput\x20{\x0a\x20\x20\x20\x20@builtin(position)\x20position:\x20vec4f,\x0a\x20\x20\x20\x20@location(0)\x20modelPosition:\x20vec3f,\x0a}\x0a\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20scene:\x20SceneParams;\x0a@group(1)\x20@binding(0)\x20var\x20volumeAtlas0:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(1)\x20var\x20volumeAtlas1:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(2)\x20var\x20volumeAtlas2:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(3)\x20var\x20volumeAtlas3:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(4)\x20var\x20volumeAtlas4:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(5)\x20var\x20volumeAtlas5:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(6)\x20var\x20volumeAtlas6:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(7)\x20var\x20volumeAtlas7:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(8)\x20var<storage,\x20read>\x20pageTable:\x20PageTable;\x0a@group(1)\x20@binding(9)\x20var<uniform>\x20volume:\x20VolumeParams;\x0a@group(2)\x20@binding(0)\x20var<storage,\x20read>\x20colorStopValues:\x20FloatValues;\x0a@group(2)\x20@binding(1)\x20var<storage,\x20read>\x20colorStopColors:\x20Colors;\x0a@group(2)\x20@binding(2)\x20var<storage,\x20read>\x20opacityStopValues:\x20FloatValues;\x0a@group(2)\x20@binding(3)\x20var<storage,\x20read>\x20opacityStopAlphas:\x20FloatValues;\x0a@group(3)\x20@binding(0)\x20var<uniform>\x20slice:\x20SliceParams;\x0a\x0afn\x20invalidVolumeSample()\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20return\x20VolumeSample(0.0,\x20false);\x0a}\x0a\x0afn\x20validVolumeSample(value:\x20f32)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20return\x20VolumeSample(value,\x20true);\x0a}\x0a\x0afn\x20getPageIndex(brick:\x20vec3u)\x20->\x20u32\x20{\x0a\x20\x20\x20\x20return\x20brick.x\x20+\x20brick.y\x20*\x20volume.brickCount.x\x20+\x20brick.z\x20*\x20volume.brickCount.x\x20*\x20volume.brickCount.y;\x0a}\x0a\x0afn\x20getSlotCoordinate(slotIndex:\x20u32)\x20->\x20vec3u\x20{\x0a\x20\x20\x20\x20let\x20layerSize\x20=\x20volume.atlasSlots.x\x20*\x20volume.atlasSlots.y;\x0a\x20\x20\x20\x20let\x20z\x20=\x20slotIndex\x20/\x20layerSize;\x0a\x20\x20\x20\x20let\x20remainder\x20=\x20slotIndex\x20-\x20z\x20*\x20layerSize;\x0a\x20\x20\x20\x20let\x20y\x20=\x20remainder\x20/\x20volume.atlasSlots.x;\x0a\x20\x20\x20\x20return\x20vec3u(remainder\x20-\x20y\x20*\x20volume.atlasSlots.x,\x20y,\x20z);\x0a}\x0a\x0afn\x20loadAtlasValue(atlasIndex:\x20u32,\x20coordinate:\x20vec3i)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x200u)\x20{\x20return\x20textureLoad(volumeAtlas0,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x201u)\x20{\x20return\x20textureLoad(volumeAtlas1,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x202u)\x20{\x20return\x20textureLoad(volumeAtlas2,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x203u)\x20{\x20return\x20textureLoad(volumeAtlas3,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x204u)\x20{\x20return\x20textureLoad(volumeAtlas4,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x205u)\x20{\x20return\x20textureLoad(volumeAtlas5,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x206u)\x20{\x20return\x20textureLoad(volumeAtlas6,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20return\x20textureLoad(volumeAtlas7,\x20coordinate,\x200).r;\x0a}\x0a\x0afn\x20loadAtlasVoxel(voxel:\x20vec3i,\x20owningBrick:\x20vec3u)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20let\x20page\x20=\x20pageTable.values[getPageIndex(owningBrick)];\x0a\x0a\x20\x20\x20\x20if\x20(page.x\x20==\x200u\x20||\x20page.z\x20==\x200u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20physicalBrick\x20=\x20volume.brickInterior.xyz\x20+\x20vec3u(2u);\x0a\x20\x20\x20\x20let\x20slot\x20=\x20getSlotCoordinate(page.x\x20-\x201u);\x0a\x20\x20\x20\x20let\x20local\x20=\x20voxel\x20-\x20vec3i(owningBrick\x20*\x20volume.brickInterior.xyz)\x20+\x20vec3i(1);\x0a\x20\x20\x20\x20let\x20value\x20=\x20loadAtlasValue(page.w,\x20vec3i(slot\x20*\x20physicalBrick)\x20+\x20local);\x0a\x0a\x20\x20\x20\x20if\x20(value\x20!=\x20value\x20||\x20(volume.valueMeta.y\x20>\x200.5\x20&&\x20value\x20==\x20volume.valueMeta.x))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20validVolumeSample(value);\x0a}\x0a\x0afn\x20sampleVolume(modelPosition:\x20vec3f)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20let\x20normalized\x20=\x20clamp(modelPosition,\x20vec3f(0.0),\x20vec3f(1.0));\x0a\x20\x20\x20\x20let\x20voxel\x20=\x20normalized\x20*\x20vec3f(volume.dimensions.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20baseVoxel\x20=\x20vec3i(floor(voxel));\x0a\x20\x20\x20\x20let\x20nextVoxel\x20=\x20min(baseVoxel\x20+\x20vec3i(1),\x20vec3i(volume.dimensions.xyz\x20-\x20vec3u(1u)));\x0a\x20\x20\x20\x20let\x20fraction\x20=\x20voxel\x20-\x20vec3f(baseVoxel);\x0a\x20\x20\x20\x20let\x20owningBrick\x20=\x20min(vec3u(baseVoxel)\x20/\x20volume.brickInterior.xyz,\x20volume.brickCount.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20c000\x20=\x20loadAtlasVoxel(baseVoxel,\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c100\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20baseVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c010\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20nextVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c110\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20nextVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c001\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20baseVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c101\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20baseVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c011\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20nextVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c111\x20=\x20loadAtlasVoxel(nextVoxel,\x20owningBrick);\x0a\x0a\x20\x20\x20\x20if\x20(!c000.valid\x20||\x20!c100.valid\x20||\x20!c010.valid\x20||\x20!c110.valid\x20||\x20!c001.valid\x20||\x20!c101.valid\x20||\x20!c011.valid\x20||\x20!c111.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20bottom\x20=\x20mix(mix(c000.value,\x20c100.value,\x20fraction.x),\x20mix(c010.value,\x20c110.value,\x20fraction.x),\x20fraction.y);\x0a\x20\x20\x20\x20let\x20top\x20=\x20mix(mix(c001.value,\x20c101.value,\x20fraction.x),\x20mix(c011.value,\x20c111.value,\x20fraction.x),\x20fraction.y);\x0a\x20\x20\x20\x20return\x20validVolumeSample(mix(bottom,\x20top,\x20fraction.z));\x0a}\x0a\x0afn\x20sampleColor(value:\x20f32)\x20->\x20vec4f\x20{\x0a\x20\x20\x20\x20let\x20count\x20=\x20u32(scene.transfer.x);\x0a\x0a\x20\x20\x20\x20if\x20(count\x20==\x201u\x20||\x20value\x20<=\x20colorStopValues.values[0u])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20colorStopColors.values[0u];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20+\x201u\x20<\x20count;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20start\x20=\x20colorStopValues.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20end\x20=\x20colorStopValues.values[index\x20+\x201u];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20<\x20end)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(scene.transfer.w\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20colorStopColors.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20mix(colorStopColors.values[index],\x20colorStopColors.values[index\x20+\x201u],\x20clamp((value\x20-\x20start)\x20/\x20max(end\x20-\x20start,\x200.000001),\x200.0,\x201.0));\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20colorStopColors.values[count\x20-\x201u];\x0a}\x0a\x0afn\x20sampleOpacity(value:\x20f32)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20let\x20count\x20=\x20u32(scene.transfer.y);\x0a\x0a\x20\x20\x20\x20if\x20(count\x20==\x201u\x20||\x20value\x20<=\x20opacityStopValues.values[0u])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20opacityStopAlphas.values[0u];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20+\x201u\x20<\x20count;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20start\x20=\x20opacityStopValues.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20end\x20=\x20opacityStopValues.values[index\x20+\x201u];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20<\x20end)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(scene.transfer.w\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20opacityStopAlphas.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20mix(opacityStopAlphas.values[index],\x20opacityStopAlphas.values[index\x20+\x201u],\x20clamp((value\x20-\x20start)\x20/\x20max(end\x20-\x20start,\x200.000001),\x200.0,\x201.0));\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20opacityStopAlphas.values[count\x20-\x201u];\x0a}\x0a\x0afn\x20getPlanePosition(axis:\x20u32,\x20planePosition:\x20f32,\x20corner:\x20vec2f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20if\x20(axis\x20==\x200u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec3f(planePosition,\x20corner.x,\x20corner.y);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(axis\x20==\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec3f(corner.x,\x20planePosition,\x20corner.y);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20vec3f(corner.x,\x20corner.y,\x20planePosition);\x0a}\x0a\x0afn\x20getCorner(vertexIndex:\x20u32)\x20->\x20vec2f\x20{\x0a\x20\x20\x20\x20let\x20corners\x20=\x20array<vec2f,\x206>(\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec2f(0.0,\x200.0),\x20vec2f(1.0,\x200.0),\x20vec2f(0.0,\x201.0),\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec2f(0.0,\x201.0),\x20vec2f(1.0,\x200.0),\x20vec2f(1.0,\x201.0)\x0a\x20\x20\x20\x20);\x0a\x20\x20\x20\x20return\x20corners[vertexIndex];\x0a}\x0a\x0afn\x20getTessellatedCorner(vertexIndex:\x20u32)\x20->\x20vec2f\x20{\x0a\x20\x20\x20\x20let\x20gridSize\x20=\x2032u;\x0a\x20\x20\x20\x20let\x20cellIndex\x20=\x20vertexIndex\x20/\x206u;\x0a\x20\x20\x20\x20let\x20cellX\x20=\x20cellIndex\x20%\x20gridSize;\x0a\x20\x20\x20\x20let\x20cellY\x20=\x20cellIndex\x20/\x20gridSize;\x0a\x20\x20\x20\x20return\x20(vec2f(f32(cellX),\x20f32(cellY))\x20+\x20getCorner(vertexIndex\x20%\x206u))\x20/\x20f32(gridSize);\x0a}\x0a\x0afn\x20volumeToWorld(position:\x20vec3f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20if\x20(scene.geographic0.x\x20<\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20transformed\x20=\x20scene.modelMatrix\x20*\x20vec4f(position,\x201.0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20transformed.xyz\x20/\x20transformed.w;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20longitude\x20=\x20mix(scene.geographic1.z,\x20scene.geographic1.w,\x20position.x);\x0a\x20\x20\x20\x20let\x20latitude\x20=\x20mix(scene.geographic2.x,\x20scene.geographic2.y,\x20position.z);\x0a\x20\x20\x20\x20let\x20height\x20=\x20mix(scene.geographic2.z,\x20scene.geographic2.w,\x20position.y);\x0a\x20\x20\x20\x20let\x20latitudeSin\x20=\x20sin(latitude);\x0a\x20\x20\x20\x20let\x20latitudeCos\x20=\x20cos(latitude);\x0a\x20\x20\x20\x20let\x20semiMajor\x20=\x20scene.geographic1.x;\x0a\x20\x20\x20\x20let\x20semiMinor\x20=\x20scene.geographic1.y;\x0a\x20\x20\x20\x20let\x20eccentricitySquared\x20=\x201.0\x20-\x20semiMinor\x20*\x20semiMinor\x20/\x20(semiMajor\x20*\x20semiMajor);\x0a\x20\x20\x20\x20let\x20primeVerticalRadius\x20=\x20semiMajor\x20/\x20sqrt(1.0\x20-\x20eccentricitySquared\x20*\x20latitudeSin\x20*\x20latitudeSin);\x0a\x20\x20\x20\x20let\x20ecef\x20=\x20vec3f(\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20+\x20height)\x20*\x20latitudeCos\x20*\x20cos(longitude),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20+\x20height)\x20*\x20latitudeCos\x20*\x20sin(longitude),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20*\x20(1.0\x20-\x20eccentricitySquared)\x20+\x20height)\x20*\x20latitudeSin\x0a\x20\x20\x20\x20);\x0a\x20\x20\x20\x20return\x20ecef\x20-\x20scene.geographic0.yzw;\x0a}\x0a\x0a@vertex\x0afn\x20vertexMain(@builtin(vertex_index)\x20vertexIndex:\x20u32)\x20->\x20SliceVertexOutput\x20{\x0a\x20\x20\x20\x20let\x20modelPosition\x20=\x20getPlanePosition(u32(slice.data.x),\x20slice.data.y,\x20getTessellatedCorner(vertexIndex));\x0a\x20\x20\x20\x20let\x20clipPosition\x20=\x20scene.viewProjection\x20*\x20vec4f(volumeToWorld(modelPosition),\x201.0);\x0a\x20\x20\x20\x20return\x20SliceVertexOutput(clipPosition,\x20modelPosition);\x0a}\x0a\x0a@fragment\x0afn\x20fragmentMain(input:\x20SliceVertexOutput)\x20->\x20@location(0)\x20vec4f\x20{\x0a\x20\x20\x20\x20let\x20sample\x20=\x20sampleVolume(input.modelPosition);\x0a\x20\x20\x20\x20let\x20plateAlpha\x20=\x20slice.plateColor.a;\x0a\x20\x20\x20\x20let\x20platePremultiplied\x20=\x20slice.plateColor.rgb\x20*\x20plateAlpha;\x0a\x0a\x20\x20\x20\x20if\x20(!sample.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(plateAlpha\x20<=\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20discard;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec4f(platePremultiplied,\x20plateAlpha);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20color\x20=\x20sampleColor(sample.value);\x0a\x20\x20\x20\x20let\x20alpha\x20=\x20color.a\x20*\x20sampleOpacity(sample.value)\x20*\x20slice.data.z;\x0a\x20\x20\x20\x20//\x20彩色数据覆盖白色透明底板,二者在同一\x20fragment\x20中合成以避免重合面的深度冲突。\x0a\x20\x20\x20\x20//\x20Colored\x20data\x20is\x20composited\x20over\x20the\x20translucent\x20white\x20plate\x20in\x20one\x20fragment\x20to\x20avoid\x20coplanar\x20depth\x20conflicts.\x0a\x20\x20\x20\x20let\x20outputAlpha\x20=\x20alpha\x20+\x20plateAlpha\x20*\x20(1.0\x20-\x20alpha);\x0a\x20\x20\x20\x20let\x20outputColor\x20=\x20color.rgb\x20*\x20alpha\x20+\x20platePremultiplied\x20*\x20(1.0\x20-\x20alpha);\x0a\x20\x20\x20\x20return\x20vec4f(outputColor,\x20outputAlpha);\x0a}\x0a','writeParams','nowrap','far','多采样点切面轴的起止值不能相等。','\x20必须是正有限数值。','setSource','update','indexOf','memoryLimitBytes','Volume\x20brick\x20','volume\x20atlas\x20clear','uploadBatchCount','listeners','Volume\x20X\x20axis','copyBufferToTexture','uploadStagingBuffer','vertices','sceneSlicePipeline','clearLockedSlices','context','Geographic\x20volume\x20proxy\x20bounds\x20are\x20invalid.\x20地理体积代理范围无效。','Latitude\x20/\x20纬度','47924nFVIRB','recreateSceneBindGroup','setCamera','applyHit','valueScale','perspective','createBindGroupLayout','pageTableBuffer','volume\x20atlas\x20clear\x20pass','block','previewMarker','overlayTrianglePipeline','stopPropagation','pendingBrickCount','透视相机视场角必须位于\x200\x20到\x20180\x20度之间。','isFinite','WebGPU\x20volume\x20format\x20is\x20not\x20initialized.\x20WebGPU\x20体积格式尚未初始化。','slotCount','pointer','getGeometryBindGroupLayout','memoryHardLimitBytes','shown','layer','pendingCompensationFrame','auto','formatPosition','pendingBrickUploads','WebGPU\x20volume\x20atlas\x20has\x20no\x20evictable\x20slot.\x20WebGPU\x20体积图集没有可驱逐的槽位。','type','sliceDepthMode','pointerdown','frameInFlight','volume\x20slice\x20shader','upWC','viewProjection','Volume\x20brick\x20upload\x20was\x20superseded\x20by\x20a\x20new\x20source.\x20体积砖上传已被新数据源替代。','set','contextmenu','volume\x20atlas\x20clear\x20pipeline','main','removeSlice','filter','maximumPitch','encodePreparedBrickUpload','WebGPU\x20volume\x20bricks\x20require\x20halo\x201.\x20WebGPU\x20体积砖块要求\x20halo\x20为\x201。','pointerEvents','pageTableValues','previousContainerPosition','resourceRebuildCount','WebGPU\x20scene\x20params\x20buffer\x20is\x20unavailable.\x20WebGPU\x20场景参数\x20Buffer\x20不可用。','\x20至少需要两个高度层。','mapAsync','WebGPU\x20geometry\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20几何绑定布局不可用。','Volume\x20opacity\x20must\x20be\x20within\x20[0,\x201].\x20体积透明度必须位于\x20[0,\x201]。','\x20must\x20be\x20a\x20positive\x20finite\x20value.\x20','setBindGroup','call','\x20noData\x20必须是有限数值或\x20NaN。','clearCameraFrameCompensation','Volume\x20opacity\x20stops\x20must\x20be\x20sorted\x20by\x20value.\x20体积透明度色标必须按数值升序排列。','WebGPU\x20volume\x20transfer\x20resources\x20are\x20incomplete.\x20WebGPU\x20体积传递函数资源不完整。','17468tHiUym','\x20endpoints\x20must\x20be\x20finite.\x20','orbit','cacheOnSuccess','color','createProjectionMatrix','mixed','volume\x20opacity\x20stop\x20alphas','options','moved','interactionStepScale','background','sliceId','profiles','requestControllers','getSliceResources','相机裁剪距离必须满足\x200\x20<=\x20near\x20<\x20far。','bindSliceInteraction','getInteractionKind','preRender','renderer','now','正交相机高度和宽高比必须大于\x200。','resetBrickRequests','zAxis','font','WebGPU\x20volume\x20device\x20restoration\x20failed.\x20WebGPU\x20体积设备恢复失败。','border','colorInputs','nextId','Alpha\x20颜色通道必须在0\x20~\x201之间','volume\x20color\x20stop\x20colors','cursor','createCameraSignature','resize','TEXTURE_BINDING','clearTimeout','maxLockedSlices\x20必须是正整数。','handlePointerLeave','endsWith','padding','releaseGpuResources','100%','onLimitReached','scheduleCameraMoveEnd','Volume\x20brick\x20upload\x20became\x20stale.\x20体积砖上传已过期。','matrices','metadata','切面轴端点必须是有限数。','initialize','sliceResources','setShow','getVolumeParamsBuffer','volumeDimFactor\x20必须位于\x200\x20到\x201。','budgetLimited','toolMode','volume\x20brick\x20atlas\x20','syncLockedMarkers','coreSampleCount','deltaY','WebGPU\x20volume\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20体积绑定布局不可用。','uniform','semiMajorAxisScaled','flatMap','Volume\x20chunk\x20range\x20exceeds\x20source\x20dimensions.\x20体积分块范围超出源数据尺寸。','STORAGE','minZ','WebGPU\x20volume\x20params\x20buffer\x20is\x20unavailable.\x20WebGPU\x20体积参数\x20Buffer\x20不可用。','path','WebGPU\x20volume\x20resources\x20were\x20released.\x20WebGPU\x20体积资源已释放。','WebGPU\x20scene\x20depth\x20attachment\x20is\x20not\x20initialized.\x20WebGPU\x20场景深度附件尚未初始化。','atlasIndex','position','heights','hypot','grab','applyCameraFrameCompensation','setPointerCapture','minimum','slice','fragmentMain','adapter','axisDefinitions','getSceneParamsBuffer','MAP_WRITE','rgb(17\x2024\x2039\x20/\x2082%)','\x20的\x20path\x20必须包含至少两个\x20[x,\x20z]\x20点。','start','volume\x20atlas\x20bind\x20group','brickScheduleCount','bufferOffset','Volume\x20opacity\x20stops\x20must\x20be\x20between\x20zero\x20and\x20one.\x20体积透明度色标必须位于零到一之间。','create','\x20must\x20be\x20a\x20positive\x20integer.\x20','performance','beginRenderPass','positions','findIndex','volume\x20scene\x20mesh\x20','baseModelMatrix','Volume\x20Y\x20axis','source','Volume\x20chunk\x20','axisResources','markerOverlay','every','lockPreview','getTransferBindGroupLayout','slotCountZ','requireScene','AbortError','3006339YNNlsP','\x20的\x20heights\x20包含非有限高度。','overlayLinePipeline','dolly','bgra8unorm','navigationMode','pan','quality','width','state','element','enqueueBrickUpload','36Ngruba','geographic-wgs84','actualFrameIntervalMilliseconds','depth32float','interactionController','range','volumeDimFactor','sliceInteraction','rgb\x20颜色通道数量不正确:\x20','readyResolve','coreRange','worldAnchors','copyTextureToBuffer','volumeBindGroupLayout','opacityStopCount','Maximum\x20locked\x20slice\x20count\x20is\x20','onSlicesChange','.\x20体积分块数值数量与尺寸不一致。','r32float','slices','topology','opacity','3px\x206px','textContent','volumeMetadata','\x20position\x20must\x20be\x20normalized\x20to\x20zero\x20through\x20one.\x20体积切面位置必须归一化到零至一。','configure','eventDisposers','panSpeed','borderRadius','brickDepth','transparent','cameraMoving','矩阵不可逆。','UNIFORM','volume\x20opacity\x20stop\x20values','mars3d\x20volume\x20shell\x20raymarch\x20pipeline','createCommandEncoder','Mars3D\x20volume\x20layer\x20is\x20not\x20ready;\x20await\x20readyPromise\x20first.\x20Mars3D\x20体积层尚未就绪,请先等待\x20readyPromise。','skippedCells','FRAGMENT','forEach','addEventListener','counts','scheduleBricks','uniformUpdateCount','requestFrames','timeCount','sourceYCount','height','countY','lastTimingFrameTimestamp','values','volume\x20scene\x20depth','Volume\x20opacity\x20stop\x20values\x20must\x20be\x20finite\x20and\x20strictly\x20increasing.\x20体积透明度节点值必须有限且严格递增。','1594458ehsQQX','depthMode','setTimeout','ready','17029392hzBzqw','match','countZ','high-performance','createBindGroup','readRange','updateSlice','splice','canvas','reject','createValues','maxTextureDimension3D','createGpuResources','getMappedRange','touchBricks','volume\x20transfer\x20bind\x20group','uploadGeneration','value','\x20count','parseInt','axes','resources','proxyModelMatrix','Volume\x20timeIndex\x20is\x20out\x20of\x20range:\x20','validation','setTransfer','4px','frameRequest','maxLockedSlices','maxX','Height\x20/\x20高度','volume\x20scene\x20mesh\x20shader','volume\x20scene\x20bind\x20group\x20layout','xCount','display'];_0x19e9=function(){return _0x4249fe;};return _0x19e9();}var WebgpuTransferResources=class{[_0x1d30f8(0x15c)];[_0x1d30f8(0x2c6)]=null;[_0x1d30f8(0x3a0)]=null;[_0x1d30f8(0x2c9)]=null;[_0x1d30f8(0x378)]=null;[_0x1d30f8(0x3fd)]=0x0;[_0x1d30f8(0x24a)]=0x0;constructor(_0x2eaa1a){const _0xae147a=_0x1d30f8;this[_0xae147a(0x15c)]=_0x2eaa1a;}get[_0x1d30f8(0x267)](){return[this['colorStopCount'],this['opacityStopCount']];}['update'](_0x16a3c3,_0x2270ce){const _0x9b4755=_0x1d30f8;validateStops$1(_0x16a3c3,_0x2270ce);let _0x444471=new Float32Array(_0x16a3c3[_0x9b4755(0x29b)]),_0xbab91b=new Float32Array(_0x16a3c3[_0x9b4755(0x29b)]*0x4),_0x2695e7=new Float32Array(_0x2270ce[_0x9b4755(0x29b)]),_0x8b534e=new Float32Array(_0x2270ce['length']);for(let _0x344209=0x0;_0x344209<_0x16a3c3['length'];_0x344209+=0x1)_0x444471[_0x344209]=_0x16a3c3[_0x344209][_0x9b4755(0x288)],_0xbab91b[_0x9b4755(0x1a8)](_0x16a3c3[_0x344209][_0x9b4755(0x1c5)],_0x344209*0x4);for(let _0x27d8d5=0x0;_0x27d8d5<_0x2270ce[_0x9b4755(0x29b)];_0x27d8d5+=0x1)_0x2695e7[_0x27d8d5]=_0x2270ce[_0x27d8d5][_0x9b4755(0x288)],_0x8b534e[_0x27d8d5]=_0x2270ce[_0x27d8d5][_0x9b4755(0x251)];let _0x34f296=[createStorageBuffer(this[_0x9b4755(0x15c)],_0x444471,_0x9b4755(0xe3)),createStorageBuffer(this[_0x9b4755(0x15c)],_0xbab91b,_0x9b4755(0x1e0)),createStorageBuffer(this[_0x9b4755(0x15c)],_0x2695e7,_0x9b4755(0x25f)),createStorageBuffer(this['device'],_0x8b534e,_0x9b4755(0x1c8))];this['destroyBuffers'](),this[_0x9b4755(0x2c6)]=_0x34f296[0x0],this[_0x9b4755(0x3a0)]=_0x34f296[0x1],this[_0x9b4755(0x2c9)]=_0x34f296[0x2],this[_0x9b4755(0x378)]=_0x34f296[0x3],this[_0x9b4755(0x3fd)]=_0x16a3c3[_0x9b4755(0x29b)],this[_0x9b4755(0x24a)]=_0x2270ce[_0x9b4755(0x29b)];}[_0x1d30f8(0x27b)](_0x5ed079){const _0x1af3e9=_0x1d30f8;if(!this[_0x1af3e9(0x2c6)]||!this[_0x1af3e9(0x3a0)]||!this[_0x1af3e9(0x2c9)]||!this[_0x1af3e9(0x378)])throw Error(_0x1af3e9(0x1c0));return this[_0x1af3e9(0x15c)][_0x1af3e9(0x27b)]({'label':_0x1af3e9(0x286),'layout':_0x5ed079,'entries':[{'binding':0x0,'resource':{'buffer':this[_0x1af3e9(0x2c6)]}},{'binding':0x1,'resource':{'buffer':this[_0x1af3e9(0x3a0)]}},{'binding':0x2,'resource':{'buffer':this[_0x1af3e9(0x2c9)]}},{'binding':0x3,'resource':{'buffer':this[_0x1af3e9(0x378)]}}]});}['destroy'](){const _0x4c70b1=_0x1d30f8;this[_0x4c70b1(0x3e1)](),this[_0x4c70b1(0x3fd)]=0x0,this[_0x4c70b1(0x24a)]=0x0;}['destroyBuffers'](){const _0x1b64ec=_0x1d30f8;this[_0x1b64ec(0x2c6)]?.['destroy'](),this[_0x1b64ec(0x3a0)]?.['destroy'](),this[_0x1b64ec(0x2c9)]?.['destroy'](),this[_0x1b64ec(0x378)]?.[_0x1b64ec(0x377)](),this[_0x1b64ec(0x2c6)]=null,this[_0x1b64ec(0x3a0)]=null,this[_0x1b64ec(0x2c9)]=null,this[_0x1b64ec(0x378)]=null;}};const DEFAULT_MEMORY_TARGET_BYTES=0x200*0x400*0x400,IDENTITY_MATRIX$1=[0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1],DEFAULT_COLOR_STOPS=[{'value':0x0,'color':[0x0,0x0,0x1,0x1]},{'value':0x1,'color':[0x1,0x0,0x0,0x1]}],DEFAULT_OPACITY_STOPS=[{'value':0x0,'opacity':0x0},{'value':0x1,'opacity':0x1}],premultipliedBlend$1=()=>({'color':{'srcFactor':_0x1d30f8(0x2fc),'dstFactor':_0x1d30f8(0x3dc),'operation':'add'},'alpha':{'srcFactor':_0x1d30f8(0x2fc),'dstFactor':_0x1d30f8(0x3dc),'operation':'add'}}),validateMatrix=(_0x219b4,_0x40caf0)=>{const _0x1f1485=_0x1d30f8;if(_0x219b4[_0x1f1485(0x29b)]!==0x10||_0x219b4['some'](_0x13eb8a=>!Number['isFinite'](_0x13eb8a)))throw Error(_0x40caf0+_0x1f1485(0x348)+_0x40caf0+'\x20必须包含十六个有限数值。');},validateNonNegative=(_0x4a4c99,_0x3b6a65)=>{if(!Number['isFinite'](_0x4a4c99)||_0x4a4c99<0x0)throw Error(_0x3b6a65+'\x20must\x20be\x20a\x20non-negative\x20finite\x20value.\x20'+_0x3b6a65+'\x20必须是非负有限数值。');return _0x4a4c99;},validatePositive=(_0x537415,_0x1213dd)=>{const _0x4653a2=_0x1d30f8;if(!Number[_0x4653a2(0x193)](_0x537415)||_0x537415<=0x0)throw Error(_0x1213dd+_0x4653a2(0x1ba)+_0x1213dd+_0x4653a2(0x172));return _0x537415;},cloneMeshes=_0x1e88ad=>_0x1e88ad['map'](_0x1cb700=>({..._0x1cb700,'vertices':new Float32Array(_0x1cb700[_0x1d30f8(0x17e)])})),estimateBrickUploadBytes=_0x410ff4=>{const _0x58a4c8=_0x1d30f8;let _0x4a9b19=_0x410ff4[_0x58a4c8(0x312)]+_0x410ff4[_0x58a4c8(0x15b)]*0x2,_0x42dcca=_0x410ff4[_0x58a4c8(0x416)]+_0x410ff4[_0x58a4c8(0x15b)]*0x2,_0x5f1ac4=_0x410ff4[_0x58a4c8(0x25a)]+_0x410ff4[_0x58a4c8(0x15b)]*0x2;return Math[_0x58a4c8(0x332)](_0x4a9b19*Float32Array[_0x58a4c8(0xe9)]/0x100)*0x100*_0x42dcca*_0x5f1ac4+0x10;};var WebgpuVolumeSceneRenderer=class{[_0x1d30f8(0x1c9)];[_0x1d30f8(0x3ac)]='idle';[_0x1d30f8(0x27f)]=null;[_0x1d30f8(0x212)]=null;[_0x1d30f8(0x15c)]=null;[_0x1d30f8(0x181)]=null;[_0x1d30f8(0xf8)]=null;[_0x1d30f8(0xe0)]=null;[_0x1d30f8(0xea)]=null;['geometryBindGroupLayout']=null;[_0x1d30f8(0xcf)]=null;[_0x1d30f8(0x249)]=null;[_0x1d30f8(0x324)]=null;['sliceBindGroupLayout']=null;[_0x1d30f8(0x2f7)]=null;[_0x1d30f8(0xff)]=null;[_0x1d30f8(0x40b)]=null;[_0x1d30f8(0x339)]=null;[_0x1d30f8(0x2d4)]=null;[_0x1d30f8(0x358)]=null;[_0x1d30f8(0x12c)]=null;[_0x1d30f8(0x18f)]=null;[_0x1d30f8(0x232)]=null;[_0x1d30f8(0x17f)]=null;[_0x1d30f8(0xfb)]=null;[_0x1d30f8(0x2e9)]=null;[_0x1d30f8(0xd3)]=null;[_0x1d30f8(0x106)]=null;['profileResources']=null;[_0x1d30f8(0x1f3)]=null;[_0x1d30f8(0x228)]=null;['metadata']=null;[_0x1d30f8(0x33f)]={'viewProjection':IDENTITY_MATRIX$1,'inverseViewProjection':IDENTITY_MATRIX$1,'cameraPosition':[0x0,0x0,0x2]};[_0x1d30f8(0x115)]=IDENTITY_MATRIX$1;[_0x1d30f8(0x411)]=IDENTITY_MATRIX$1;[_0x1d30f8(0x357)]=[0x0,0x0,0x0];[_0x1d30f8(0x2ac)]=[0x1,0x1,0x1];[_0x1d30f8(0x12e)]='composite';[_0x1d30f8(0x251)]=0.3;[_0x1d30f8(0xe5)]=0x1;[_0x1d30f8(0x15d)]=0.005;[_0x1d30f8(0x242)]=0x1;[_0x1d30f8(0xdc)]=_0x1d30f8(0x301);[_0x1d30f8(0x2e3)]=null;[_0x1d30f8(0xce)]=DEFAULT_COLOR_STOPS;[_0x1d30f8(0x2a6)]=DEFAULT_OPACITY_STOPS;[_0x1d30f8(0x2ed)]=0x0;[_0x1d30f8(0x116)]=0x0;[_0x1d30f8(0x238)]=0x0;[_0x1d30f8(0x26d)]=0x0;['initializationGeneration']=0x0;[_0x1d30f8(0x3c2)]=0x0;[_0x1d30f8(0x11e)]=[];['cachedSlices']=[];[_0x1d30f8(0x37b)]=[];[_0x1d30f8(0x127)]=new Map();[_0x1d30f8(0x19e)]=[];[_0x1d30f8(0x36d)]=null;['uploadGeneration']=0x0;[_0x1d30f8(0x17d)]=null;['uploadStagingBufferSize']=0x0;['uploadedBrickCount']=0x0;['uploadBatchCount']=0x0;[_0x1d30f8(0x2e5)]=0x0;[_0x1d30f8(0x1a3)]=!0x1;[_0x1d30f8(0x3fc)]=null;constructor(_0x570b3a={}){const _0x3b8632=_0x1d30f8;this[_0x3b8632(0x1c9)]={..._0x570b3a};}get[_0x1d30f8(0x239)](){return this['lifecycleState'];}get['statistics'](){const _0xefd1a2=_0x1d30f8;let _0x4091fe=this[_0xefd1a2(0xd3)]?.['statistics']??{'logicalBrickCount':0x0,'atlasCapacity':0x0,'gpuBytes':0x0,'memoryLimitBytes':this['options'][_0xefd1a2(0x198)]??this[_0xefd1a2(0x1c9)][_0xefd1a2(0x3d9)]??DEFAULT_MEMORY_TARGET_BYTES,'budgetLimited':!0x1,'skippedSamples':0x0,'skippedCells':0x0},_0xff3dc3=this[_0xefd1a2(0x1f3)]?.['statistics']??{'uniformUpdateCount':0x0,'resourceRebuildCount':0x0};return{'logicalBrickCount':_0x4091fe[_0xefd1a2(0x391)],'residentBrickCount':this[_0xefd1a2(0xd3)]?.['residentBrickCount']??0x0,'pendingBrickCount':0x0,'atlasCapacity':_0x4091fe[_0xefd1a2(0x3fb)],'gpuBytes':_0x4091fe[_0xefd1a2(0x386)],'memoryLimitBytes':_0x4091fe[_0xefd1a2(0x176)],'budgetLimited':_0x4091fe[_0xefd1a2(0x1f7)],'frameTimeMilliseconds':this['lastFrameTimeMilliseconds'],'submittedFrameCount':this[_0xefd1a2(0x116)],'uploadedBrickCount':this[_0xefd1a2(0x2e7)],'uploadBatchCount':this[_0xefd1a2(0x179)],'maximumUploadBatchBytes':this[_0xefd1a2(0x2e5)],'sliceUniformUpdateCount':_0xff3dc3[_0xefd1a2(0x269)],'sliceResourceRebuildCount':_0xff3dc3[_0xefd1a2(0x1b4)],'skippedSamples':_0x4091fe[_0xefd1a2(0x16a)],'skippedCells':_0x4091fe[_0xefd1a2(0x263)]};}[_0x1d30f8(0x125)](_0x1c276a){const _0x89e58d=_0x1d30f8;this[_0x89e58d(0x3fc)]=_0x1c276a;}async[_0x1d30f8(0x1f2)](_0x504e9a){const _0x5996ea=_0x1d30f8;if(this[_0x5996ea(0x3ac)]===_0x5996ea(0x321))throw Error(_0x5996ea(0x395));let _0x5303fd=++this[_0x5996ea(0x2a3)];this[_0x5996ea(0x1ea)](),this[_0x5996ea(0x27f)]=_0x504e9a,this[_0x5996ea(0x3ac)]=_0x5996ea(0x408);let _0x4fe2ab=navigator['gpu'];if(!_0x4fe2ab)throw this['lifecycleState']=_0x5996ea(0x29c),Error(_0x5996ea(0x2d8));let _0x2af63c=await _0x4fe2ab[_0x5996ea(0x38b)]({'powerPreference':this[_0x5996ea(0x1c9)]['powerPreference']??_0x5996ea(0x27a)});if(_0x5303fd!==this[_0x5996ea(0x2a3)])return;if(!_0x2af63c)throw this['lifecycleState']=_0x5996ea(0x29c),Error(_0x5996ea(0x11d));let _0x300516=await _0x2af63c[_0x5996ea(0x351)]();if(_0x5303fd!==this[_0x5996ea(0x2a3)]){_0x300516[_0x5996ea(0x377)]();return;}let _0x55e2d9=_0x504e9a[_0x5996ea(0x419)](_0x5996ea(0x3f5));if(!_0x55e2d9)throw _0x300516[_0x5996ea(0x377)](),this[_0x5996ea(0x3ac)]=_0x5996ea(0x29c),Error(_0x5996ea(0x12b));let _0x2a3a12=_0x4fe2ab[_0x5996ea(0x39a)]();_0x55e2d9[_0x5996ea(0x256)]({'device':_0x300516,'format':_0x2a3a12,'alphaMode':_0x5996ea(0x2ae),'usage':GPUTextureUsage[_0x5996ea(0x156)]|GPUTextureUsage['COPY_SRC']}),this[_0x5996ea(0x212)]=_0x2af63c,this[_0x5996ea(0x15c)]=_0x300516,this['context']=_0x55e2d9,this[_0x5996ea(0xf8)]=_0x2a3a12,_0x300516[_0x5996ea(0x30d)](_0x5996ea(0x28f)),this[_0x5996ea(0x283)]();let _0xde0d1b=await _0x300516[_0x5996ea(0x131)]();if(_0xde0d1b)throw this[_0x5996ea(0x1ea)](),this[_0x5996ea(0x3ac)]=_0x5996ea(0x29c),Error('Failed\x20to\x20create\x20WebGPU\x20volume\x20pipelines:\x20'+_0xde0d1b[_0x5996ea(0x3d0)]+_0x5996ea(0x41f));if(this[_0x5996ea(0x112)](_0x300516),this[_0x5996ea(0x3ac)]=_0x5996ea(0x276),this['metadata']){this[_0x5996ea(0xf9)](this[_0x5996ea(0x1f0)]);let _0x3f459f=Array['from'](this[_0x5996ea(0x127)]['entries']());await Promise[_0x5996ea(0x342)](_0x3f459f[_0x5996ea(0x2f9)](([_0x527703,_0x57e305])=>this[_0x5996ea(0x23b)]({'logicalIndex':_0x527703,'values':_0x57e305},!0x1)));}this['updateTransferResources'](),this[_0x5996ea(0x138)]()[_0x5996ea(0x118)](this['cachedProfiles']),this[_0x5996ea(0x1d0)]()[_0x5996ea(0x118)](this['cachedSlices']),this['getAxisResources']()[_0x5996ea(0x118)](this[_0x5996ea(0x37b)]),this['resize'](_0x504e9a[_0x5996ea(0x238)]||_0x504e9a[_0x5996ea(0x423)]||0x1,_0x504e9a[_0x5996ea(0x26d)]||_0x504e9a[_0x5996ea(0x3cd)]||0x1);}[_0x1d30f8(0x173)](_0x565a70){const _0x12af0e=_0x1d30f8;this[_0x12af0e(0x287)]+=0x1,this[_0x12af0e(0x2f1)](new DOMException(_0x12af0e(0x1a7),_0x12af0e(0x22f))),this[_0x12af0e(0x1f0)]={..._0x565a70},this['cachedBricks'][_0x12af0e(0x12f)](),this[_0x12af0e(0x2e7)]=0x0,this[_0x12af0e(0x179)]=0x0,this[_0x12af0e(0x2e5)]=0x0,this['lifecycleState']===_0x12af0e(0x276)&&this[_0x12af0e(0xf9)](_0x565a70);}[_0x1d30f8(0x13b)](_0x38a551){return this['enqueueBrickUpload'](_0x38a551,!0x0);}[_0x1d30f8(0x285)](_0x1b6c93){const _0x521fbc=_0x1d30f8;this['getAtlas']()[_0x521fbc(0x304)](_0x1b6c93,this[_0x521fbc(0x2ed)]);for(let _0x515f7b of _0x1b6c93){let _0x210f32=this[_0x521fbc(0x127)][_0x521fbc(0x2d0)](_0x515f7b);_0x210f32&&(this[_0x521fbc(0x127)][_0x521fbc(0xd5)](_0x515f7b),this[_0x521fbc(0x127)][_0x521fbc(0x1a8)](_0x515f7b,_0x210f32));}}[_0x1d30f8(0x186)](_0x2dea12){const _0x5bd9e8=_0x1d30f8;validateMatrix(_0x2dea12[_0x5bd9e8(0x1a6)],_0x5bd9e8(0x1a6)),validateMatrix(_0x2dea12[_0x5bd9e8(0xfc)],_0x5bd9e8(0xfc)),this[_0x5bd9e8(0x33f)]={'viewProjection':[..._0x2dea12[_0x5bd9e8(0x1a6)]],'inverseViewProjection':[..._0x2dea12[_0x5bd9e8(0xfc)]],'cameraPosition':[..._0x2dea12[_0x5bd9e8(0x3a6)]]};}[_0x1d30f8(0x320)](_0xd8546e){const _0xdb710a=_0x1d30f8;this[_0xdb710a(0x11e)]=cloneMeshes(_0xd8546e),this[_0xdb710a(0x138)]()[_0xdb710a(0x118)](_0xd8546e);}[_0x1d30f8(0x160)](_0x50991f){const _0xff5df4=_0x1d30f8;this[_0xff5df4(0x3da)]=_0x50991f[_0xff5df4(0x2f9)](_0x3d20e9=>({..._0x3d20e9})),this[_0xff5df4(0x1d0)]()['replace'](_0x50991f);}[_0x1d30f8(0x2ce)](_0x4aac8e){const _0x160293=_0x1d30f8;this[_0x160293(0x37b)]=cloneMeshes(_0x4aac8e),this[_0x160293(0x2d9)]()['replace'](_0x4aac8e);}[_0x1d30f8(0x290)](_0x464d18,_0x35675a,_0x1b7662){const _0x172860=_0x1d30f8;this['colorStops']=_0x464d18['map'](_0x146106=>({'value':_0x146106[_0x172860(0x288)],'color':[..._0x146106[_0x172860(0x1c5)]]})),this[_0x172860(0x2a6)]=_0x35675a[_0x172860(0x2f9)](_0x4fa590=>({..._0x4fa590})),_0x1b7662&&(this[_0x172860(0xdc)]=_0x1b7662),this[_0x172860(0x3ac)]===_0x172860(0x276)&&this[_0x172860(0x2ef)]();}[_0x1d30f8(0x174)](_0x226c27){const _0x4be9ec=_0x1d30f8;_0x226c27[_0x4be9ec(0x115)]&&(validateMatrix(_0x226c27[_0x4be9ec(0x115)],_0x4be9ec(0x115)),this[_0x4be9ec(0x115)]=[..._0x226c27['modelMatrix']]),_0x226c27[_0x4be9ec(0x411)]&&(validateMatrix(_0x226c27[_0x4be9ec(0x411)],'inverseModelMatrix'),this[_0x4be9ec(0x411)]=[..._0x226c27[_0x4be9ec(0x411)]]),_0x226c27['clipMinimum']&&(this['clipMinimum']=[..._0x226c27['clipMinimum']]),_0x226c27[_0x4be9ec(0x2ac)]&&(this[_0x4be9ec(0x2ac)]=[..._0x226c27[_0x4be9ec(0x2ac)]]),_0x226c27['renderMode']&&(this[_0x4be9ec(0x12e)]=_0x226c27[_0x4be9ec(0x12e)]),_0x226c27['opacity']!==void 0x0&&(this[_0x4be9ec(0x251)]=validateNonNegative(_0x226c27[_0x4be9ec(0x251)],_0x4be9ec(0x251))),_0x226c27['densityScale']!==void 0x0&&(this[_0x4be9ec(0xe5)]=validateNonNegative(_0x226c27[_0x4be9ec(0xe5)],_0x4be9ec(0xe5))),_0x226c27['stepLength']!==void 0x0&&(this[_0x4be9ec(0x15d)]=validatePositive(_0x226c27['stepLength'],_0x4be9ec(0x15d))),_0x226c27[_0x4be9ec(0x242)]!==void 0x0&&(this[_0x4be9ec(0x242)]=validateNonNegative(_0x226c27[_0x4be9ec(0x242)],_0x4be9ec(0x242))),_0x226c27[_0x4be9ec(0xdc)]&&(this[_0x4be9ec(0xdc)]=_0x226c27[_0x4be9ec(0xdc)]),_0x226c27[_0x4be9ec(0x2e3)]!==void 0x0&&(this[_0x4be9ec(0x2e3)]=_0x226c27[_0x4be9ec(0x2e3)]?{..._0x226c27['geographicTransform']}:null);}['resize'](_0x58941e,_0x2f603c){const _0x48d882=_0x1d30f8;if(!Number['isInteger'](_0x58941e)||!Number[_0x48d882(0x3b4)](_0x2f603c)||_0x58941e<=0x0||_0x2f603c<=0x0)throw Error(_0x48d882(0x42a));let _0x371fd1=this['getCanvas']();_0x371fd1[_0x48d882(0x238)]=_0x58941e,_0x371fd1[_0x48d882(0x26d)]=_0x2f603c,this[_0x48d882(0x238)]=_0x58941e,this[_0x48d882(0x26d)]=_0x2f603c,this[_0x48d882(0x2c0)]()[_0x48d882(0x1e3)](_0x58941e,_0x2f603c),this[_0x48d882(0x185)]();}[_0x1d30f8(0x166)](){const _0x4d5c19=_0x1d30f8;if(this[_0x4d5c19(0x3ac)]!==_0x4d5c19(0x276)||!this[_0x4d5c19(0x1f0)]||this[_0x4d5c19(0x238)]<=0x0||this[_0x4d5c19(0x26d)]<=0x0||this['frameInFlight'])return!0x1;let _0x633a1e=performance['now']();this[_0x4d5c19(0x2ed)]+=0x1,this['writeParams']();let _0x2774da=this['getDevice'](),_0xe9c2d2=_0x2774da[_0x4d5c19(0x261)]({'label':_0x4d5c19(0x427)}),_0x5bad4b=this[_0x4d5c19(0x419)]()[_0x4d5c19(0x32a)]()[_0x4d5c19(0x376)]();return this[_0x4d5c19(0x396)](_0xe9c2d2,_0x5bad4b),this[_0x4d5c19(0x31f)](_0xe9c2d2,_0x5bad4b),this['encodeOverlayPass'](_0xe9c2d2,_0x5bad4b),_0x2774da['queue'][_0x4d5c19(0x14b)]([_0xe9c2d2[_0x4d5c19(0x10e)]()]),this[_0x4d5c19(0x1a3)]=!0x0,this['submittedFrameCount']+=0x1,this[_0x4d5c19(0x3c2)]=Math['max'](0.000001,performance[_0x4d5c19(0x1d6)]()-_0x633a1e),_0x2774da[_0x4d5c19(0x3d8)][_0x4d5c19(0x335)]()['then'](()=>{const _0x1faf17=_0x4d5c19;this[_0x1faf17(0x15c)]!==_0x2774da||this[_0x1faf17(0x3ac)]!=='ready'||(this[_0x1faf17(0x1a3)]=!0x1,this[_0x1faf17(0x3fc)]?.());})[_0x4d5c19(0x2fb)](()=>{const _0x318ded=_0x4d5c19;this[_0x318ded(0x15c)]===_0x2774da&&(this[_0x318ded(0x1a3)]=!0x1);}),!0x0;}async['captureFrame'](){const _0x3d617b=_0x1d30f8;if(this['lifecycleState']!==_0x3d617b(0x276)||!this['metadata']||this[_0x3d617b(0x238)]<=0x0||this[_0x3d617b(0x26d)]<=0x0)throw Error(_0x3d617b(0x315));let _0x2364bd=this['getDevice'](),_0xe0185c=this['width']*0x4,_0x1cd93e=Math[_0x3d617b(0x332)](_0xe0185c/0x100)*0x100,_0x153d54=_0x2364bd['createBuffer']({'label':'volume\x20frame\x20readback','size':_0x1cd93e*this[_0x3d617b(0x26d)],'usage':GPUBufferUsage[_0x3d617b(0x41a)]|GPUBufferUsage['MAP_READ']});_0x2364bd[_0x3d617b(0x30d)]('validation'),this[_0x3d617b(0x2ed)]+=0x1,this[_0x3d617b(0x16e)]();let _0x2e644f=_0x2364bd[_0x3d617b(0x261)]({'label':'volume\x20frame\x20capture'}),_0x565ca3=this[_0x3d617b(0x419)]()['getCurrentTexture'](),_0x5eaec2=_0x565ca3[_0x3d617b(0x376)]();this['encodeScenePass'](_0x2e644f,_0x5eaec2),this[_0x3d617b(0x31f)](_0x2e644f,_0x5eaec2),this[_0x3d617b(0x407)](_0x2e644f,_0x5eaec2),_0x2e644f[_0x3d617b(0x248)]({'texture':_0x565ca3},{'buffer':_0x153d54,'bytesPerRow':_0x1cd93e,'rowsPerImage':this[_0x3d617b(0x26d)]},[this['width'],this['height']]),_0x2364bd['queue'][_0x3d617b(0x14b)]([_0x2e644f[_0x3d617b(0x10e)]()]);let _0x1775a2=await _0x2364bd[_0x3d617b(0x131)]();if(_0x1775a2)throw _0x153d54[_0x3d617b(0x377)](),Error(_0x3d617b(0x2c8)+_0x1775a2['message']+'.\x20WebGPU\x20体积帧读取失败。');await _0x153d54[_0x3d617b(0x1b7)](GPUMapMode[_0x3d617b(0x389)]);let _0x5693ee=new Uint8Array(_0x153d54['getMappedRange']()),_0x5753ed=new Uint8Array(_0xe0185c*this[_0x3d617b(0x26d)]),_0x2db5e9=this[_0x3d617b(0x3af)]()===_0x3d617b(0x234);for(let _0x25cf33=0x0;_0x25cf33<this['height'];_0x25cf33+=0x1){let _0x4b245a=_0x5693ee[_0x3d617b(0x13e)](_0x25cf33*_0x1cd93e,_0x25cf33*_0x1cd93e+_0xe0185c),_0xeaebc2=_0x25cf33*_0xe0185c;if(!_0x2db5e9){_0x5753ed['set'](_0x4b245a,_0xeaebc2);continue;}for(let _0x299b88=0x0;_0x299b88<this[_0x3d617b(0x238)];_0x299b88+=0x1){let _0x4adc60=_0x299b88*0x4,_0x2cc713=_0xeaebc2+_0x4adc60;_0x5753ed[_0x2cc713]=_0x4b245a[_0x4adc60+0x2],_0x5753ed[_0x2cc713+0x1]=_0x4b245a[_0x4adc60+0x1],_0x5753ed[_0x2cc713+0x2]=_0x4b245a[_0x4adc60],_0x5753ed[_0x2cc713+0x3]=_0x4b245a[_0x4adc60+0x3];}}return _0x153d54['unmap'](),_0x153d54[_0x3d617b(0x377)](),this[_0x3d617b(0x116)]+=0x1,{'width':this[_0x3d617b(0x238)],'height':this['height'],'pixels':_0x5753ed};}['destroy'](){const _0x12fea5=_0x1d30f8;this['lifecycleState']!=='destroyed'&&(++this[_0x12fea5(0x2a3)],this[_0x12fea5(0x1ea)](),this['canvas']=null,this[_0x12fea5(0x1f0)]=null,this[_0x12fea5(0x3fc)]=null,this[_0x12fea5(0x3ac)]='destroyed');}[_0x1d30f8(0x283)](){const _0x3ac09e=_0x1d30f8;let _0x2ab37b=this[_0x3ac09e(0x355)]();this[_0x3ac09e(0xe0)]=_0x2ab37b[_0x3ac09e(0x153)]({'label':_0x3ac09e(0x2f4),'size':0x190,'usage':GPUBufferUsage[_0x3ac09e(0x25e)]|GPUBufferUsage[_0x3ac09e(0x41a)]}),this[_0x3ac09e(0xea)]=_0x2ab37b[_0x3ac09e(0x153)]({'label':'volume\x20metadata\x20params','size':0x60,'usage':GPUBufferUsage[_0x3ac09e(0x25e)]|GPUBufferUsage[_0x3ac09e(0x41a)]}),this[_0x3ac09e(0x102)]=_0x2ab37b[_0x3ac09e(0x18a)]({'label':'volume\x20geometry\x20bind\x20group\x20layout','entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x3ac09e(0x346)]|GPUShaderStage[_0x3ac09e(0x264)],'buffer':{'type':_0x3ac09e(0x1fe)}}]}),this['sceneBindGroupLayout']=_0x2ab37b['createBindGroupLayout']({'label':_0x3ac09e(0x297),'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x3ac09e(0x346)]|GPUShaderStage['FRAGMENT'],'buffer':{'type':_0x3ac09e(0x1fe)}},{'binding':0x1,'visibility':GPUShaderStage['FRAGMENT'],'texture':{'sampleType':_0x3ac09e(0x3c4)}}]}),this[_0x3ac09e(0x249)]=_0x2ab37b[_0x3ac09e(0x18a)]({'label':_0x3ac09e(0x33b),'entries':[...Array[_0x3ac09e(0x3d2)]({'length':0x8},(_0x199a43,_0x32463b)=>({'binding':_0x32463b,'visibility':GPUShaderStage[_0x3ac09e(0x264)],'texture':{'sampleType':'unfilterable-float','viewDimension':'3d'}})),{'binding':0x8,'visibility':GPUShaderStage[_0x3ac09e(0x264)],'buffer':{'type':'read-only-storage'}},{'binding':0x9,'visibility':GPUShaderStage[_0x3ac09e(0x264)],'buffer':{'type':_0x3ac09e(0x1fe)}}]}),this[_0x3ac09e(0x324)]=_0x2ab37b[_0x3ac09e(0x18a)]({'label':_0x3ac09e(0x385),'entries':[0x0,0x1,0x2,0x3][_0x3ac09e(0x2f9)](_0x18f1f9=>({'binding':_0x18f1f9,'visibility':GPUShaderStage[_0x3ac09e(0x264)],'buffer':{'type':_0x3ac09e(0x30f)}}))}),this[_0x3ac09e(0xf4)]=_0x2ab37b['createBindGroupLayout']({'label':'volume\x20slice\x20bind\x20group\x20layout','entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x3ac09e(0x346)]|GPUShaderStage[_0x3ac09e(0x264)],'buffer':{'type':_0x3ac09e(0x1fe)}}]}),this[_0x3ac09e(0x2e9)]=new WebgpuSceneAttachments(_0x2ab37b),this[_0x3ac09e(0x106)]=new WebgpuTransferResources(_0x2ab37b),this[_0x3ac09e(0x136)]=new WebgpuSceneMeshResources(_0x2ab37b),this[_0x3ac09e(0x1f3)]=new WebgpuSliceResources(_0x2ab37b,this['getSliceBindGroupLayout']()),this[_0x3ac09e(0x228)]=new WebgpuSceneMeshResources(_0x2ab37b),this['createPipelines']();}['createPipelines'](){const _0x2c7fa6=_0x1d30f8;let _0x4f30be=this[_0x2c7fa6(0x355)](),_0x3948d4=this[_0x2c7fa6(0x3af)](),_0x28f74e=this['getGeometryBindGroupLayout'](),_0x45a37b=this[_0x2c7fa6(0x14c)](),_0x43535b=_0x4f30be[_0x2c7fa6(0x311)]({'label':_0x2c7fa6(0x296),'code':sceneMesh_default}),_0x201eb6={'module':_0x43535b,'entryPoint':'vertexMain','buffers':[{'arrayStride':0x1c,'attributes':[{'shaderLocation':0x0,'offset':0x0,'format':_0x2c7fa6(0x354)},{'shaderLocation':0x1,'offset':0xc,'format':'float32x4'}]}]},_0x2225d={'module':_0x43535b,'entryPoint':_0x2c7fa6(0x211),'targets':[{'format':_0x3948d4,'blend':premultipliedBlend$1()}]},_0x55e93b=(_0x25db35,_0x1fa623)=>_0x4f30be['createRenderPipeline']({'layout':_0x4f30be[_0x2c7fa6(0xec)]({'bindGroupLayouts':[_0x28f74e]}),'vertex':_0x201eb6,'fragment':_0x2225d,'primitive':{'topology':_0x25db35},'depthStencil':_0x1fa623?{'format':_0x2c7fa6(0x23f),'depthWriteEnabled':!0x0,'depthCompare':'less'}:void 0x0});this[_0x2c7fa6(0x358)]=_0x55e93b(_0x2c7fa6(0xeb),!0x0),this[_0x2c7fa6(0x12c)]=_0x55e93b('line-list',!0x0),this[_0x2c7fa6(0x18f)]=_0x55e93b(_0x2c7fa6(0xeb),!0x1),this[_0x2c7fa6(0x232)]=_0x55e93b(_0x2c7fa6(0x36a),!0x1);let _0x1fd160=_0x4f30be['createShaderModule']({'label':_0x2c7fa6(0x360),'code':volumeRaymarch_default});this[_0x2c7fa6(0x2d4)]=_0x4f30be[_0x2c7fa6(0x3ba)]({'layout':_0x4f30be[_0x2c7fa6(0xec)]({'bindGroupLayouts':[_0x45a37b,this[_0x2c7fa6(0x123)](),this[_0x2c7fa6(0x22c)]()]}),'vertex':{'module':_0x1fd160,'entryPoint':_0x2c7fa6(0x2a2)},'fragment':{'module':_0x1fd160,'entryPoint':_0x2c7fa6(0x211),'targets':[{'format':_0x3948d4,'blend':premultipliedBlend$1()}]},'primitive':{'topology':_0x2c7fa6(0xeb)}});let _0x274827=_0x4f30be[_0x2c7fa6(0x311)]({'label':_0x2c7fa6(0x1a4),'code':volumeSlice_default}),_0x4439b4=_0x395139=>_0x4f30be[_0x2c7fa6(0x3ba)]({'layout':_0x4f30be['createPipelineLayout']({'bindGroupLayouts':[_0x28f74e,this[_0x2c7fa6(0x123)](),this[_0x2c7fa6(0x22c)](),this[_0x2c7fa6(0x42d)]()]}),'vertex':{'module':_0x274827,'entryPoint':'vertexMain'},'fragment':{'module':_0x274827,'entryPoint':_0x2c7fa6(0x211),'targets':[{'format':_0x3948d4,'blend':premultipliedBlend$1()}]},'primitive':{'topology':_0x2c7fa6(0xeb)},'depthStencil':_0x395139?{'format':_0x2c7fa6(0x23f),'depthWriteEnabled':!0x0,'depthCompare':_0x2c7fa6(0x3c1)}:void 0x0});this[_0x2c7fa6(0x17f)]=_0x4439b4(!0x0),this[_0x2c7fa6(0xfb)]=_0x4439b4(!0x1);}['configureSourceResources'](_0x2c26e8){const _0x5cd9c7=_0x1d30f8;this[_0x5cd9c7(0xd3)]?.[_0x5cd9c7(0x377)](),this[_0x5cd9c7(0xd3)]=new WebgpuBrickAtlas(this[_0x5cd9c7(0x355)](),this['options']['memoryTargetBytes']??DEFAULT_MEMORY_TARGET_BYTES,this[_0x5cd9c7(0x1c9)][_0x5cd9c7(0x198)]??this[_0x5cd9c7(0x1c9)]['memoryTargetBytes']??DEFAULT_MEMORY_TARGET_BYTES),this[_0x5cd9c7(0xd3)][_0x5cd9c7(0x256)](_0x2c26e8),this[_0x5cd9c7(0x137)](),this['volumeBindGroup']=this['atlas'][_0x5cd9c7(0x27b)](this[_0x5cd9c7(0x123)](),this[_0x5cd9c7(0x1f5)]());}['enqueueBrickUpload'](_0x7f26c7,_0x470613){return new Promise((_0x2dc0e6,_0x2af0ea)=>{const _0x375538=_0x4af7;this[_0x375538(0x19e)][_0x375538(0x40e)]({'upload':_0x7f26c7,'generation':this[_0x375538(0x287)],'cacheOnSuccess':_0x470613,'resolve':_0x2dc0e6,'reject':_0x2af0ea}),this[_0x375538(0xe6)]();});}[_0x1d30f8(0xe6)](){const _0xf09101=_0x1d30f8;this['uploadPump']||=Promise['resolve']()[_0xf09101(0x37d)](()=>this[_0xf09101(0x336)]())[_0xf09101(0x3f4)](()=>{const _0x17aa43=_0xf09101;this['uploadPump']=null,this[_0x17aa43(0x19e)]['length']>0x0&&this[_0x17aa43(0x3ac)]==='ready'&&this[_0x17aa43(0xe6)]();});}async[_0x1d30f8(0x336)](){const _0x18788a=_0x1d30f8;for(;this['pendingBrickUploads'][_0x18788a(0x29b)]>0x0&&this[_0x18788a(0x3ac)]===_0x18788a(0x276)&&this[_0x18788a(0x1f0)];){let _0x2d3f92=this[_0x18788a(0x355)](),_0x145540=estimateBrickUploadBytes(this[_0x18788a(0x1f0)]),_0x5f1768=Math['min'](0x4000000,Math['max'](_0x145540,Math['floor'](_0x2d3f92[_0x18788a(0x2e0)][_0x18788a(0x129)]/0x4))),_0x151c1a=[],_0x389d08=0x0;for(;this['pendingBrickUploads']['length']>0x0&&_0x151c1a['length']<0x10;){let _0x5eed45=this[_0x18788a(0x19e)][0x0];if(_0x151c1a[_0x18788a(0x29b)]>0x0&&_0x389d08+_0x145540>_0x5f1768)break;if(this[_0x18788a(0x19e)]['shift'](),_0x5eed45['generation']!==this[_0x18788a(0x287)]){_0x5eed45[_0x18788a(0x280)](new DOMException(_0x18788a(0x1ee),_0x18788a(0x22f)));continue;}_0x151c1a[_0x18788a(0x40e)](_0x5eed45),_0x389d08+=_0x145540;}if(_0x151c1a[_0x18788a(0x29b)]!==0x0)try{let _0xff8911=[],_0x260c90=0x0;for(let _0x45a4e0 of _0x151c1a){let _0x1ff2b0=this[_0x18788a(0xda)]()[_0x18788a(0x2b8)](_0x45a4e0['upload'],this[_0x18788a(0x2ed)]),_0x2e0a93=Math[_0x18788a(0x332)](_0x260c90/0x100)*0x100;_0xff8911['push']({'item':_0x45a4e0,'prepared':_0x1ff2b0,'bufferOffset':_0x2e0a93}),_0x260c90=_0x2e0a93+_0x1ff2b0['values'][_0x18788a(0x3c0)];}let _0x375c2c=this[_0x18788a(0x370)](_0x260c90);await _0x375c2c[_0x18788a(0x1b7)](GPUMapMode['WRITE']);let _0x5d335e=new Uint8Array(_0x375c2c[_0x18788a(0x284)]());for(let _0xd9c52a of _0xff8911){let _0x2116ac=_0xd9c52a[_0x18788a(0x135)]['values'];_0x5d335e[_0x18788a(0x1a8)](new Uint8Array(_0x2116ac[_0x18788a(0x150)],_0x2116ac['byteOffset'],_0x2116ac[_0x18788a(0x3c0)]),_0xd9c52a[_0x18788a(0x21b)]);}_0x375c2c[_0x18788a(0x12a)]();let _0x5b2a58=_0x2d3f92['createCommandEncoder']({'label':_0x18788a(0x3cc)});for(let _0x351275 of _0xff8911)this['getAtlas']()['encodePreparedBrickUpload'](_0x5b2a58,_0x375c2c,_0x351275['bufferOffset'],_0x351275['prepared']);_0x2d3f92[_0x18788a(0x3d8)][_0x18788a(0x14b)]([_0x5b2a58[_0x18788a(0x10e)]()]),await _0x2d3f92[_0x18788a(0x3d8)]['onSubmittedWorkDone'](),await new Promise(_0x39e30b=>setTimeout(_0x39e30b,0x0)),this[_0x18788a(0x2e7)]+=_0x151c1a['length'],this[_0x18788a(0x179)]+=0x1,this[_0x18788a(0x2e5)]=Math[_0x18788a(0x334)](this[_0x18788a(0x2e5)],_0x389d08);for(let _0x19a1f6 of _0x151c1a){if(_0x19a1f6['generation']!==this[_0x18788a(0x287)]){_0x19a1f6[_0x18788a(0x280)](new DOMException(_0x18788a(0x1ee),_0x18788a(0x22f)));continue;}_0x19a1f6[_0x18788a(0x1c4)]&&this[_0x18788a(0x398)](_0x19a1f6[_0x18788a(0xe2)]),_0x19a1f6[_0x18788a(0x2af)]();}}catch(_0x16872e){for(let _0x24a123 of _0x151c1a)_0x24a123[_0x18788a(0x280)](_0x16872e);}}}[_0x1d30f8(0x370)](_0x1abe4f){const _0x50996a=_0x1d30f8;let _0x1ea062=Math[_0x50996a(0x334)](0x100,Math[_0x50996a(0x332)](_0x1abe4f/0x100)*0x100);return this[_0x50996a(0x17d)]&&this[_0x50996a(0x3a1)]>=_0x1ea062?this['uploadStagingBuffer']:(this['uploadStagingBuffer']?.[_0x50996a(0x377)](),this[_0x50996a(0x17d)]=this['getDevice']()[_0x50996a(0x153)]({'label':'volume\x20brick\x20reusable\x20upload\x20staging','size':_0x1ea062,'usage':GPUBufferUsage[_0x50996a(0x215)]|GPUBufferUsage[_0x50996a(0x345)]}),this['uploadStagingBufferSize']=_0x1ea062,this[_0x50996a(0x17d)]);}[_0x1d30f8(0x398)](_0x157665){const _0x56ad3b=_0x1d30f8;for(this['cachedBricks'][_0x56ad3b(0xd5)](_0x157665[_0x56ad3b(0x2dc)]),this[_0x56ad3b(0x127)][_0x56ad3b(0x1a8)](_0x157665[_0x56ad3b(0x2dc)],new Float32Array(_0x157665[_0x56ad3b(0x270)]));this[_0x56ad3b(0x127)]['size']>this[_0x56ad3b(0xd0)][_0x56ad3b(0x3fb)];){let _0x24af1b=this[_0x56ad3b(0x127)]['keys']()['next']()[_0x56ad3b(0x288)];if(_0x24af1b===void 0x0)break;this[_0x56ad3b(0x127)][_0x56ad3b(0xd5)](_0x24af1b);}}[_0x1d30f8(0x2f1)](_0x743c85){const _0x9d8b11=_0x1d30f8;for(let _0x35325d of this['pendingBrickUploads'][_0x9d8b11(0x27e)](0x0))_0x35325d[_0x9d8b11(0x280)](_0x743c85);}['updateTransferResources'](){const _0xd00e1b=_0x1d30f8;let _0x28ea56=this[_0xd00e1b(0x3c6)]();_0x28ea56[_0xd00e1b(0x174)](this[_0xd00e1b(0xce)],this[_0xd00e1b(0x2a6)]),this[_0xd00e1b(0x339)]=_0x28ea56[_0xd00e1b(0x27b)](this[_0xd00e1b(0x22c)]());}['recreateSceneBindGroup'](){const _0x1f2f80=_0x1d30f8;!this[_0x1f2f80(0xe0)]||!this['attachments']||!this[_0x1f2f80(0x102)]||!this[_0x1f2f80(0xcf)]||(this[_0x1f2f80(0x2f7)]=this[_0x1f2f80(0x355)]()[_0x1f2f80(0x27b)]({'label':_0x1f2f80(0x3a5),'layout':this['geometryBindGroupLayout'],'entries':[{'binding':0x0,'resource':{'buffer':this[_0x1f2f80(0xe0)]}}]}),this['sceneBindGroup']=this[_0x1f2f80(0x355)]()[_0x1f2f80(0x27b)]({'label':_0x1f2f80(0x2a7),'layout':this[_0x1f2f80(0xcf)],'entries':[{'binding':0x0,'resource':{'buffer':this[_0x1f2f80(0xe0)]}},{'binding':0x1,'resource':this[_0x1f2f80(0x2e9)][_0x1f2f80(0x40d)]}]}));}['writeParams'](){const _0x3e0161=_0x1d30f8;let _0x12a996=new Float32Array(0x64);_0x12a996[_0x3e0161(0x1a8)](this[_0x3e0161(0x33f)][_0x3e0161(0x1a6)],0x0),_0x12a996[_0x3e0161(0x1a8)](this[_0x3e0161(0x33f)]['inverseViewProjection'],0x10),_0x12a996[_0x3e0161(0x1a8)](this[_0x3e0161(0x115)],0x20),_0x12a996[_0x3e0161(0x1a8)](this['inverseModelMatrix'],0x30),_0x12a996['set']([...this[_0x3e0161(0x33f)][_0x3e0161(0x3a6)],0x1],0x40),_0x12a996['set']([this[_0x3e0161(0x238)],this['height'],0x1/this[_0x3e0161(0x238)],0x1/this[_0x3e0161(0x26d)]],0x44),_0x12a996['set']([...this[_0x3e0161(0x357)],0x0],0x48),_0x12a996[_0x3e0161(0x1a8)]([...this[_0x3e0161(0x2ac)],0x0],0x4c),_0x12a996[_0x3e0161(0x1a8)]([+(this['renderMode']===_0x3e0161(0x317)),this['opacity'],this['densityScale'],this[_0x3e0161(0x15d)]],0x50),_0x12a996[_0x3e0161(0x1a8)]([this['colorStops'][_0x3e0161(0x29b)],this[_0x3e0161(0x2a6)][_0x3e0161(0x29b)],this[_0x3e0161(0x242)],+(this['colorMode']==='step')],0x54);let _0x1d02b2=this['geographicTransform'];_0x1d02b2&&(_0x12a996[_0x3e0161(0x1a8)]([0x1,..._0x1d02b2[_0x3e0161(0x3e5)]],0x58),_0x12a996['set']([_0x1d02b2[_0x3e0161(0x1ff)],_0x1d02b2['semiMinorAxisScaled'],..._0x1d02b2[_0x3e0161(0x3f9)]],0x5c),_0x12a996[_0x3e0161(0x1a8)]([..._0x1d02b2[_0x3e0161(0x15f)],..._0x1d02b2['heightScaled']],0x60)),this['getDevice']()['queue']['writeBuffer'](this[_0x3e0161(0x214)](),0x0,_0x12a996);}[_0x1d30f8(0x137)](){const _0x18add7=_0x1d30f8;let _0x20313e=this[_0x18add7(0x1f0)],_0x37978a=this[_0x18add7(0xd3)];if(!_0x20313e||!_0x37978a)return;let _0x5be24e=_0x37978a[_0x18add7(0xd2)],_0x58a618=new Uint32Array(0x60/0x4),_0x28b5d0=Math['ceil'](_0x20313e[_0x18add7(0xf3)][_0x18add7(0xdb)]/_0x20313e[_0x18add7(0x312)]),_0x194b3e=Math[_0x18add7(0x332)](_0x20313e[_0x18add7(0x2b7)][_0x18add7(0xdb)]/_0x20313e[_0x18add7(0x416)]),_0x3a29b9=Math[_0x18add7(0x332)](_0x20313e[_0x18add7(0x1d9)]['count']/_0x20313e[_0x18add7(0x25a)]);_0x58a618['set']([_0x20313e['xAxis'][_0x18add7(0xdb)],_0x20313e[_0x18add7(0x2b7)][_0x18add7(0xdb)],_0x20313e['zAxis']['count'],0x0],0x0),_0x58a618[_0x18add7(0x1a8)]([_0x20313e['brickWidth'],_0x20313e[_0x18add7(0x416)],_0x20313e[_0x18add7(0x25a)],0x1],0x4),_0x58a618[_0x18add7(0x1a8)]([_0x28b5d0,_0x194b3e,_0x3a29b9,0x0],0x8),_0x58a618[_0x18add7(0x1a8)]([_0x5be24e[_0x18add7(0x328)],_0x5be24e[_0x18add7(0x2f3)],_0x5be24e[_0x18add7(0x22d)],_0x5be24e['slotCount']],0xc),_0x58a618[_0x18add7(0x1a8)]([(_0x20313e['brickWidth']+0x2)*_0x5be24e[_0x18add7(0x328)],(_0x20313e['brickHeight']+0x2)*_0x5be24e[_0x18add7(0x2f3)],(_0x20313e[_0x18add7(0x25a)]+0x2)*_0x5be24e[_0x18add7(0x22d)],0x0],0x10),new Float32Array(_0x58a618[_0x18add7(0x150)])[_0x18add7(0x1a8)]([_0x20313e[_0x18add7(0x32e)]??0x0,_0x20313e[_0x18add7(0x32e)]===void 0x0?0x0:0x1,0x0,0x0],0x14),this['getDevice']()[_0x18add7(0x3d8)][_0x18add7(0x3ee)](this[_0x18add7(0x1f5)](),0x0,_0x58a618);}[_0x1d30f8(0x396)](_0xfb7c9d,_0x54f0c1){const _0x546a82=_0x1d30f8;let _0x53056f=_0xfb7c9d[_0x546a82(0x220)]({'label':'volume\x20scene\x20geometry\x20pass','colorAttachments':[{'view':_0x54f0c1,'clearValue':{'r':0x0,'g':0x0,'b':0x0,'a':0x0},'loadOp':'clear','storeOp':_0x546a82(0xee)}],'depthStencilAttachment':{'view':this[_0x546a82(0x2c0)]()['sceneDepthView'],'depthClearValue':0x1,'depthLoadOp':_0x546a82(0x12f),'depthStoreOp':'store'}});this[_0x546a82(0x3bb)](_0x53056f,_0x546a82(0xdf)),this[_0x546a82(0x35d)](_0x53056f,_0x546a82(0xdf)),_0x53056f['end']();}[_0x1d30f8(0x31f)](_0x1a8d94,_0x1c344a){const _0x42aa18=_0x1d30f8;if(!this[_0x42aa18(0x40b)]||!this[_0x42aa18(0x339)]||!this['sceneBindGroup']||!this['volumePipeline'])return;let _0x35d5db=_0x1a8d94[_0x42aa18(0x220)]({'label':_0x42aa18(0xd4),'colorAttachments':[{'view':_0x1c344a,'loadOp':_0x42aa18(0x161),'storeOp':_0x42aa18(0xee)}]});_0x35d5db[_0x42aa18(0x30c)](this[_0x42aa18(0x2d4)]),_0x35d5db['setBindGroup'](0x0,this['sceneBindGroup']),_0x35d5db[_0x42aa18(0x1bb)](0x1,this[_0x42aa18(0x40b)]),_0x35d5db[_0x42aa18(0x1bb)](0x2,this[_0x42aa18(0x339)]),_0x35d5db[_0x42aa18(0x29f)](0x3),_0x35d5db[_0x42aa18(0x144)]();}[_0x1d30f8(0x407)](_0x18a70b,_0x332c90){const _0x448c96=_0x1d30f8;let _0x17c497=_0x18a70b[_0x448c96(0x220)]({'label':_0x448c96(0x10c),'colorAttachments':[{'view':_0x332c90,'loadOp':_0x448c96(0x161),'storeOp':_0x448c96(0xee)}]});this[_0x448c96(0x3bb)](_0x17c497,'always-visible'),this['drawSlices'](_0x17c497,_0x448c96(0x42c)),_0x17c497[_0x448c96(0x144)]();}[_0x1d30f8(0x3bb)](_0x4391e3,_0x25ae3d){const _0x349f86=_0x1d30f8;let _0x272a47=this[_0x349f86(0x2f7)];if(!_0x272a47)return;let _0x51d7a3=_0x25ae3d===_0x349f86(0xdf)?this['sceneTrianglePipeline']:this['overlayTrianglePipeline'],_0x43e2d5=_0x25ae3d===_0x349f86(0xdf)?this[_0x349f86(0x12c)]:this['overlayLinePipeline'];_0x51d7a3&&(_0x4391e3['setPipeline'](_0x51d7a3),_0x4391e3['setBindGroup'](0x0,_0x272a47),this[_0x349f86(0x136)]?.['draw'](_0x4391e3,'triangle-list',_0x25ae3d),this['axisResources']?.[_0x349f86(0x29f)](_0x4391e3,'triangle-list',_0x25ae3d)),_0x43e2d5&&(_0x4391e3['setPipeline'](_0x43e2d5),_0x4391e3[_0x349f86(0x1bb)](0x0,_0x272a47),this['profileResources']?.[_0x349f86(0x29f)](_0x4391e3,_0x349f86(0x36a),_0x25ae3d),this[_0x349f86(0x228)]?.[_0x349f86(0x29f)](_0x4391e3,_0x349f86(0x36a),_0x25ae3d));}['drawSlices'](_0xff99c5,_0x2a4172){const _0x30877a=_0x1d30f8;let _0x532a3c=_0x2a4172===_0x30877a(0xdf)?this['sceneSlicePipeline']:this['overlaySlicePipeline'];!_0x532a3c||!this[_0x30877a(0x2f7)]||!this[_0x30877a(0x40b)]||!this[_0x30877a(0x339)]||(_0xff99c5[_0x30877a(0x1bb)](0x0,this[_0x30877a(0x2f7)]),_0xff99c5[_0x30877a(0x1bb)](0x1,this[_0x30877a(0x40b)]),_0xff99c5[_0x30877a(0x1bb)](0x2,this[_0x30877a(0x339)]),this[_0x30877a(0x1f3)]?.[_0x30877a(0x29f)](_0xff99c5,_0x532a3c,_0x2a4172));}[_0x1d30f8(0x112)](_0xc06268){const _0x42663e=_0x1d30f8;_0xc06268[_0x42663e(0x326)]['then'](_0x2e9a53=>{const _0xd3c5f3=_0x42663e;if(this['device']!==_0xc06268||this[_0xd3c5f3(0x3ac)]===_0xd3c5f3(0x321))return;this['lifecycleState']=_0xd3c5f3(0x326),console['error']('WebGPU\x20volume\x20device\x20was\x20lost:\x20'+_0x2e9a53[_0xd3c5f3(0x3d0)]+_0xd3c5f3(0x2cf));let _0x37bc7c=this[_0xd3c5f3(0x27f)];this[_0xd3c5f3(0x1ea)](),_0x37bc7c&&this['initialize'](_0x37bc7c)['catch'](_0x8bb93e=>{const _0x2e81e9=_0xd3c5f3;console[_0x2e81e9(0x387)](_0x2e81e9(0x1db),_0x8bb93e);});});}['releaseGpuResources'](){const _0x4f9b48=_0x1d30f8;this['uploadGeneration']+=0x1,this[_0x4f9b48(0x2f1)](new DOMException(_0x4f9b48(0x206),'AbortError')),this[_0x4f9b48(0xd3)]?.[_0x4f9b48(0x377)](),this[_0x4f9b48(0x106)]?.[_0x4f9b48(0x377)](),this[_0x4f9b48(0x136)]?.['destroy'](),this[_0x4f9b48(0x1f3)]?.['destroy'](),this['axisResources']?.['destroy'](),this[_0x4f9b48(0x2e9)]?.[_0x4f9b48(0x377)](),this[_0x4f9b48(0xe0)]?.['destroy'](),this[_0x4f9b48(0xea)]?.[_0x4f9b48(0x377)](),this['uploadStagingBuffer']?.[_0x4f9b48(0x377)]();try{this[_0x4f9b48(0x181)]?.[_0x4f9b48(0x3d3)]();}catch{}this[_0x4f9b48(0x15c)]?.[_0x4f9b48(0x377)](),this[_0x4f9b48(0x212)]=null,this['device']=null,this[_0x4f9b48(0x181)]=null,this[_0x4f9b48(0xf8)]=null,this['sceneParamsBuffer']=null,this[_0x4f9b48(0xea)]=null,this['uploadStagingBuffer']=null,this['uploadStagingBufferSize']=0x0,this['geometryBindGroupLayout']=null,this[_0x4f9b48(0xcf)]=null,this[_0x4f9b48(0x249)]=null,this[_0x4f9b48(0x324)]=null,this[_0x4f9b48(0xf4)]=null,this[_0x4f9b48(0x2f7)]=null,this['sceneBindGroup']=null,this['volumeBindGroup']=null,this['transferBindGroup']=null,this[_0x4f9b48(0x2d4)]=null,this[_0x4f9b48(0x358)]=null,this['sceneLinePipeline']=null,this['overlayTrianglePipeline']=null,this[_0x4f9b48(0x232)]=null,this[_0x4f9b48(0x17f)]=null,this[_0x4f9b48(0xfb)]=null,this[_0x4f9b48(0x2e9)]=null,this['atlas']=null,this[_0x4f9b48(0x106)]=null,this[_0x4f9b48(0x136)]=null,this['sliceResources']=null,this[_0x4f9b48(0x228)]=null,this[_0x4f9b48(0x1a3)]=!0x1,this[_0x4f9b48(0x238)]=0x0,this[_0x4f9b48(0x26d)]=0x0;}[_0x1d30f8(0x355)](){const _0x39cddf=_0x1d30f8;if(!this[_0x39cddf(0x15c)])throw Error('WebGPU\x20volume\x20device\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20device\x20尚未初始化。');return this[_0x39cddf(0x15c)];}[_0x1d30f8(0x419)](){const _0x91875d=_0x1d30f8;if(!this['context'])throw Error(_0x91875d(0x142));return this[_0x91875d(0x181)];}[_0x1d30f8(0x3af)](){const _0x2d75e2=_0x1d30f8;if(!this[_0x2d75e2(0xf8)])throw Error(_0x2d75e2(0x194));return this['format'];}[_0x1d30f8(0x2f0)](){const _0xdd1e8d=_0x1d30f8;if(!this[_0xdd1e8d(0x27f)])throw Error(_0xdd1e8d(0x3cb));return this[_0xdd1e8d(0x27f)];}[_0x1d30f8(0x2c0)](){const _0x5c433f=_0x1d30f8;if(!this[_0x5c433f(0x2e9)])throw Error(_0x5c433f(0x11c));return this[_0x5c433f(0x2e9)];}['getAtlas'](){const _0x360fb3=_0x1d30f8;if(!this[_0x360fb3(0xd3)])throw Error(_0x360fb3(0x31b));return this['atlas'];}[_0x1d30f8(0x3c6)](){const _0x2037c8=_0x1d30f8;if(!this[_0x2037c8(0x106)])throw Error(_0x2037c8(0x30b));return this[_0x2037c8(0x106)];}[_0x1d30f8(0x138)](){const _0x1023cc=_0x1d30f8;if(!this['profileResources'])throw Error('WebGPU\x20profile\x20resources\x20are\x20unavailable.\x20WebGPU\x20剖面资源不可用。');return this[_0x1023cc(0x136)];}[_0x1d30f8(0x1d0)](){const _0xa599b1=_0x1d30f8;if(!this[_0xa599b1(0x1f3)])throw Error(_0xa599b1(0x2c4));return this[_0xa599b1(0x1f3)];}[_0x1d30f8(0x2d9)](){const _0x43df01=_0x1d30f8;if(!this['axisResources'])throw Error(_0x43df01(0xfd));return this[_0x43df01(0x228)];}[_0x1d30f8(0x14c)](){const _0x561c92=_0x1d30f8;if(!this['sceneBindGroupLayout'])throw Error(_0x561c92(0x3f7));return this['sceneBindGroupLayout'];}[_0x1d30f8(0x197)](){const _0x10d69e=_0x1d30f8;if(!this['geometryBindGroupLayout'])throw Error(_0x10d69e(0x1b8));return this[_0x10d69e(0x102)];}[_0x1d30f8(0x123)](){const _0x2710aa=_0x1d30f8;if(!this[_0x2710aa(0x249)])throw Error(_0x2710aa(0x1fd));return this[_0x2710aa(0x249)];}['getTransferBindGroupLayout'](){const _0x58d832=_0x1d30f8;if(!this[_0x58d832(0x324)])throw Error('WebGPU\x20transfer\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20传递函数绑定布局不可用。');return this[_0x58d832(0x324)];}[_0x1d30f8(0x42d)](){const _0x14a302=_0x1d30f8;if(!this[_0x14a302(0xf4)])throw Error(_0x14a302(0x2fa));return this[_0x14a302(0xf4)];}[_0x1d30f8(0x214)](){const _0x563a72=_0x1d30f8;if(!this['sceneParamsBuffer'])throw Error(_0x563a72(0x1b5));return this[_0x563a72(0xe0)];}[_0x1d30f8(0x1f5)](){const _0x17fb57=_0x1d30f8;if(!this['volumeParamsBuffer'])throw Error(_0x17fb57(0x204));return this[_0x17fb57(0xea)];}};const getAxis=(_0x49e3de,_0x12a8f9)=>_0x12a8f9==='x'?_0x49e3de[_0x1d30f8(0xf3)]:_0x12a8f9==='y'?_0x49e3de['yAxis']:_0x49e3de['zAxis'],clampPosition=(_0x1cc21f,_0x2b612e,_0x55de52)=>{const _0x522777=_0x1d30f8;if(!Number[_0x522777(0x193)](_0x55de52))throw Error('切面位置必须是有限数。');let _0x59512c=getAxis(_0x1cc21f,_0x2b612e),_0x37dcbd=Math['min'](_0x59512c[_0x522777(0x218)],_0x59512c[_0x522777(0x144)]),_0x1d55fc=Math[_0x522777(0x334)](_0x59512c[_0x522777(0x218)],_0x59512c[_0x522777(0x144)]);return Math[_0x522777(0xcc)](_0x1d55fc,Math[_0x522777(0x334)](_0x37dcbd,_0x55de52));},clonePreview=_0x1a9f36=>_0x1a9f36?{..._0x1a9f36}:null,cloneLockedSlice=_0x4b4274=>({..._0x4b4274}),validateAxes=_0x3e63b2=>{const _0x35e7a6=_0x1d30f8;for(let _0x2ab641 of[_0x3e63b2[_0x35e7a6(0xf3)],_0x3e63b2['yAxis'],_0x3e63b2[_0x35e7a6(0x1d9)]]){if(!Number[_0x35e7a6(0x193)](_0x2ab641['start'])||!Number['isFinite'](_0x2ab641[_0x35e7a6(0x144)]))throw Error(_0x35e7a6(0x1f1));if(!(Number[_0x35e7a6(0x3b4)](_0x2ab641[_0x35e7a6(0xdb)])&&_0x2ab641[_0x35e7a6(0xdb)]>0x0))throw Error(_0x35e7a6(0x3b9));if(_0x2ab641[_0x35e7a6(0xdb)]>0x1&&_0x2ab641['start']===_0x2ab641[_0x35e7a6(0x144)])throw Error(_0x35e7a6(0x171));}},volumeAxisValueToNormalized=(_0x27d91d,_0x1598d6)=>_0x27d91d[_0x1d30f8(0x218)]===_0x27d91d['end']?0x0:(_0x1598d6-_0x27d91d['start'])/(_0x27d91d['end']-_0x27d91d[_0x1d30f8(0x218)]),normalizedToVolumeAxisValue=(_0x4d1aed,_0x5aa900)=>_0x4d1aed['start']+_0x5aa900*(_0x4d1aed[_0x1d30f8(0x144)]-_0x4d1aed[_0x1d30f8(0x218)]);var SliceState=class{['axes'];[_0x1d30f8(0x17a)]=new Set();[_0x1d30f8(0x1ec)];[_0x1d30f8(0x293)];[_0x1d30f8(0x274)];['nextId']=0x1;[_0x1d30f8(0x37e)]=null;['slices']=[];[_0x1d30f8(0x426)]=_0x1d30f8(0x19c);[_0x1d30f8(0x242)];constructor(_0x5e8eec,_0x509f4b={}){const _0x46d6fe=_0x1d30f8;if(validateAxes(_0x5e8eec),this[_0x46d6fe(0x28b)]={'xAxis':{..._0x5e8eec[_0x46d6fe(0xf3)]},'yAxis':{..._0x5e8eec['yAxis']},'zAxis':{..._0x5e8eec[_0x46d6fe(0x1d9)]}},this[_0x46d6fe(0x242)]=_0x509f4b['volumeDimFactor']??0.25,this[_0x46d6fe(0x274)]=_0x509f4b[_0x46d6fe(0x274)]??_0x46d6fe(0xdf),this['maxLockedSlices']=_0x509f4b[_0x46d6fe(0x293)]??0xc,this[_0x46d6fe(0x1ec)]=_0x509f4b[_0x46d6fe(0x1ec)],!(this[_0x46d6fe(0x242)]>=0x0&&this[_0x46d6fe(0x242)]<=0x1))throw Error(_0x46d6fe(0x1f6));if(this[_0x46d6fe(0x274)]!==_0x46d6fe(0xdf)&&this[_0x46d6fe(0x274)]!=='always-visible')throw Error(_0x46d6fe(0xe7));if(!(Number[_0x46d6fe(0x3b4)](this[_0x46d6fe(0x293)])&&this[_0x46d6fe(0x293)]>0x0))throw Error(_0x46d6fe(0x1e6));}get['preview'](){const _0x58b05a=_0x1d30f8;return clonePreview(this[_0x58b05a(0x37e)]);}get[_0x1d30f8(0x104)](){const _0xea8b20=_0x1d30f8;return this['slices'][_0xea8b20(0x2f9)](cloneLockedSlice);}get[_0x1d30f8(0x1f8)](){return this['mode'];}get['snapshot'](){const _0x414488=_0x1d30f8;return{'preview':this[_0x414488(0xed)],'lockedSlices':this[_0x414488(0x104)],'toolMode':this[_0x414488(0x426)],'volumeDimFactor':this[_0x414488(0x242)]};}[_0x1d30f8(0xf6)](_0x3a92db){const _0x84f892=_0x1d30f8;return this[_0x84f892(0x17a)]['add'](_0x3a92db),_0x3a92db(this[_0x84f892(0x3e2)]),()=>this['listeners'][_0x84f892(0xd5)](_0x3a92db);}get['axisDefinitions'](){const _0x2dc68c=_0x1d30f8;return{'xAxis':{...this[_0x2dc68c(0x28b)][_0x2dc68c(0xf3)]},'yAxis':{...this[_0x2dc68c(0x28b)][_0x2dc68c(0x2b7)]},'zAxis':{...this['axes'][_0x2dc68c(0x1d9)]}};}[_0x1d30f8(0x2ce)](_0x3171f7){const _0x11da2c=_0x1d30f8;validateAxes(_0x3171f7),this[_0x11da2c(0x28b)]={'xAxis':{..._0x3171f7[_0x11da2c(0xf3)]},'yAxis':{..._0x3171f7[_0x11da2c(0x2b7)]},'zAxis':{..._0x3171f7[_0x11da2c(0x1d9)]}},this['currentPreview']&&(this[_0x11da2c(0x37e)]['position']=clampPosition(this[_0x11da2c(0x28b)],this[_0x11da2c(0x37e)][_0x11da2c(0x3f3)],this[_0x11da2c(0x37e)][_0x11da2c(0x209)])),this['slices']=this[_0x11da2c(0x24f)][_0x11da2c(0x2f9)](_0x19df23=>({..._0x19df23,'position':clampPosition(this['axes'],_0x19df23['axis'],_0x19df23['position'])})),this['notify']();}[_0x1d30f8(0x167)](_0x571a5a){const _0x2d7835=_0x1d30f8;this[_0x2d7835(0x426)]!==_0x571a5a&&(this[_0x2d7835(0x426)]=_0x571a5a,(_0x571a5a===null||_0x571a5a!==_0x2d7835(0x19c)&&this[_0x2d7835(0x37e)]?.[_0x2d7835(0x3f3)]!==_0x571a5a)&&(this[_0x2d7835(0x37e)]=null),this[_0x2d7835(0x300)]());}['updatePreview'](_0x30deb7,_0xae20dc){const _0x5c3854=_0x1d30f8;if(this[_0x5c3854(0x426)]===null||this[_0x5c3854(0x426)]!=='auto'&&this[_0x5c3854(0x426)]!==_0x30deb7)return;let _0x4eae62=clampPosition(this[_0x5c3854(0x28b)],_0x30deb7,_0xae20dc);this[_0x5c3854(0x37e)]?.[_0x5c3854(0x3f3)]===_0x30deb7&&this[_0x5c3854(0x37e)][_0x5c3854(0x209)]===_0x4eae62||(this[_0x5c3854(0x37e)]={'axis':_0x30deb7,'position':_0x4eae62},this[_0x5c3854(0x300)]());}[_0x1d30f8(0x154)](){const _0x49799d=_0x1d30f8;this[_0x49799d(0x37e)]&&(this['currentPreview']=null,this[_0x49799d(0x300)]());}[_0x1d30f8(0x22b)](_0x1b8f1b=this[_0x1d30f8(0x274)]){const _0x2b54f8=_0x1d30f8;return this['currentPreview']?this[_0x2b54f8(0x363)](this[_0x2b54f8(0x37e)][_0x2b54f8(0x3f3)],this[_0x2b54f8(0x37e)][_0x2b54f8(0x209)],_0x1b8f1b):null;}[_0x1d30f8(0x363)](_0x4a8dd1,_0xee7f68,_0x2b1863=this[_0x1d30f8(0x274)]){const _0x56024d=_0x1d30f8;if(this[_0x56024d(0x24f)][_0x56024d(0x29b)]>=this[_0x56024d(0x293)])return this['onLimitReached']?.(this['maxLockedSlices']),null;let _0x61f266={'id':'volume-slice-'+this[_0x56024d(0x1de)],'axis':_0x4a8dd1,'position':clampPosition(this[_0x56024d(0x28b)],_0x4a8dd1,_0xee7f68),'depthMode':_0x2b1863,'visible':!0x0};return this[_0x56024d(0x1de)]+=0x1,this['slices']=[...this[_0x56024d(0x24f)],_0x61f266],this['notify'](),cloneLockedSlice(_0x61f266);}[_0x1d30f8(0x333)](_0x48d9cd,_0xf01ad6){const _0x3ddb30=_0x1d30f8;let _0x5b10dd=this[_0x3ddb30(0x24f)][_0x3ddb30(0x222)](_0x197e9a=>_0x197e9a['id']===_0x48d9cd);if(_0x5b10dd<0x0)return;let _0x5d0d9f=this[_0x3ddb30(0x24f)][_0x5b10dd],_0x506cbf=clampPosition(this[_0x3ddb30(0x28b)],_0x5d0d9f[_0x3ddb30(0x3f3)],_0xf01ad6);_0x506cbf!==_0x5d0d9f[_0x3ddb30(0x209)]&&(this[_0x3ddb30(0x24f)]=this[_0x3ddb30(0x24f)]['map'](_0x301fc9=>_0x301fc9['id']===_0x48d9cd?{..._0x301fc9,'position':_0x506cbf}:_0x301fc9),this[_0x3ddb30(0x300)]());}[_0x1d30f8(0x1ac)](_0x20cbb6){const _0x32cc37=_0x1d30f8;let _0x5b52bf=this[_0x32cc37(0x24f)][_0x32cc37(0x1ad)](_0x267cbb=>_0x267cbb['id']!==_0x20cbb6);_0x5b52bf[_0x32cc37(0x29b)]!==this[_0x32cc37(0x24f)]['length']&&(this['slices']=_0x5b52bf,this[_0x32cc37(0x300)]());}[_0x1d30f8(0x180)](){const _0x16337f=_0x1d30f8;this[_0x16337f(0x24f)][_0x16337f(0x29b)]!==0x0&&(this[_0x16337f(0x24f)]=[],this[_0x16337f(0x300)]());}[_0x1d30f8(0x300)](){const _0x28d3b9=_0x1d30f8;let _0x111503=this[_0x28d3b9(0x3e2)];for(let _0x1dd638 of this[_0x28d3b9(0x17a)])_0x1dd638(_0x111503);}};const axisEndpoints=_0x3500a9=>_0x3500a9==='x'?[[0x0,0x0,0x0],[0x1,0x0,0x0]]:_0x3500a9==='y'?[[0x0,0x0,0x0],[0x0,0x1,0x0]]:[[0x0,0x0,0x0],[0x0,0x0,0x1]],projectAxis=(_0x26f8f3,_0x43d780)=>{const _0x4b5c96=_0x1d30f8;let _0x1545a5=multiplyMatrices(_0x43d780[_0x4b5c96(0x114)],_0x43d780[_0x4b5c96(0x115)]),[_0x188d87,_0x58b16d]=axisEndpoints(_0x26f8f3),_0x7fb420=projectPointToViewport(_0x1545a5,_0x188d87,_0x43d780[_0x4b5c96(0x109)],_0x43d780[_0x4b5c96(0x302)]),_0xdcc6a3=projectPointToViewport(_0x1545a5,_0x58b16d,_0x43d780['viewportWidth'],_0x43d780[_0x4b5c96(0x302)]);return!_0x7fb420||!_0xdcc6a3?null:{'axis':_0x26f8f3,'startX':_0x7fb420[0x0],'startY':_0x7fb420[0x1],'endX':_0xdcc6a3[0x0],'endY':_0xdcc6a3[0x1]};},hitProjectedAxis=(_0x113f22,_0x56a31a,_0x3c3acc)=>{const _0x4bd554=_0x1d30f8;let _0x5c1649=_0x113f22['endX']-_0x113f22[_0x4bd554(0x2a5)],_0x3f504f=_0x113f22['endY']-_0x113f22[_0x4bd554(0x168)],_0x4de11d=_0x5c1649*_0x5c1649+_0x3f504f*_0x3f504f,_0x386e46=_0x4de11d===0x0?0x0:((_0x56a31a-_0x113f22['startX'])*_0x5c1649+(_0x3c3acc-_0x113f22['startY'])*_0x3f504f)/_0x4de11d,_0x2e0d44=Math[_0x4bd554(0xcc)](0x1,Math['max'](0x0,_0x386e46)),_0x5a7242=_0x113f22[_0x4bd554(0x2a5)]+_0x2e0d44*_0x5c1649,_0x2f0779=_0x113f22[_0x4bd554(0x168)]+_0x2e0d44*_0x3f504f;return{'axis':_0x113f22[_0x4bd554(0x3f3)],'distance':Math[_0x4bd554(0x20b)](_0x56a31a-_0x5a7242,_0x3c3acc-_0x2f0779),'normalizedPosition':_0x2e0d44};},eventViewportPoint=(_0x3e421d,_0x2fe58d,_0xe4318c)=>{const _0x3cd154=_0x1d30f8;let _0x4f184e=_0x2fe58d[_0x3cd154(0x3c3)]();return[_0x4f184e[_0x3cd154(0x238)]===0x0?0x0:(_0x3e421d[_0x3cd154(0x2a8)]-_0x4f184e[_0x3cd154(0x305)])*_0xe4318c[_0x3cd154(0x109)]/_0x4f184e[_0x3cd154(0x238)],_0x4f184e[_0x3cd154(0x26d)]===0x0?0x0:(_0x3e421d[_0x3cd154(0x36e)]-_0x4f184e[_0x3cd154(0xfe)])*_0xe4318c['viewportHeight']/_0x4f184e['height']];},realAxisPosition=(_0x3ea98e,_0x18e6bc,_0x1c155a)=>{const _0x1541c5=_0x1d30f8;let _0x13e721=_0x3ea98e[_0x1541c5(0x213)];return normalizedToVolumeAxisValue(_0x18e6bc==='x'?_0x13e721[_0x1541c5(0xf3)]:_0x18e6bc==='y'?_0x13e721[_0x1541c5(0x2b7)]:_0x13e721[_0x1541c5(0x1d9)],_0x1c155a);};var SliceInteractionController=class{[_0x1d30f8(0x23a)];['state'];[_0x1d30f8(0x3fe)];[_0x1d30f8(0x3df)];[_0x1d30f8(0x132)];['onInteractionStart'];[_0x1d30f8(0x3e6)];[_0x1d30f8(0x3ca)]=null;['previousAxis']=null;[_0x1d30f8(0x2c3)]=!0x1;constructor(_0x4821a6,_0xee8799,_0x1759ea,_0x2e20b6={}){const _0x5076db=_0x1d30f8;this[_0x5076db(0x23a)]=_0x4821a6,this[_0x5076db(0x239)]=_0xee8799,this['getFrame']=_0x1759ea,this[_0x5076db(0x3df)]=_0x2e20b6[_0x5076db(0x421)]??0xa,this['axisHysteresis']=_0x2e20b6[_0x5076db(0x2db)]??0x4,this['onInteractionStart']=_0x2e20b6[_0x5076db(0x322)],this[_0x5076db(0x3e6)]=_0x2e20b6[_0x5076db(0x3e6)];}[_0x1d30f8(0x1f2)](){const _0x26c40d=_0x1d30f8;this[_0x26c40d(0x2c3)]||(this[_0x26c40d(0x2c3)]=!0x0,this[_0x26c40d(0x23a)][_0x26c40d(0x266)](_0x26c40d(0x1a2),this[_0x26c40d(0x38d)],!0x0),this['element'][_0x26c40d(0x266)](_0x26c40d(0x3b3),this[_0x26c40d(0x113)],!0x0),this[_0x26c40d(0x23a)]['addEventListener'](_0x26c40d(0x2b0),this['handlePointerLeave'],!0x0),window[_0x26c40d(0x266)](_0x26c40d(0x3b3),this[_0x26c40d(0x159)],!0x0),window[_0x26c40d(0x266)](_0x26c40d(0x145),this[_0x26c40d(0x110)],!0x0),window[_0x26c40d(0x266)]('pointercancel',this[_0x26c40d(0x110)],!0x0));}[_0x1d30f8(0x2e1)](_0xeb4f76,_0x532e44){const _0x17b81b=_0x1d30f8;let _0x9f534b=this[_0x17b81b(0x239)][_0x17b81b(0x104)][_0x17b81b(0x2d7)](_0x187a74=>_0x187a74['id']===_0xeb4f76);_0x9f534b&&(this['activePointer']={'kind':_0x17b81b(0x37f),'axis':_0x9f534b['axis'],'pointerId':_0x532e44[_0x17b81b(0x12d)],'sliceId':_0xeb4f76,'startX':_0x532e44['clientX'],'startY':_0x532e44[_0x17b81b(0x36e)],'moved':!0x1},this[_0x17b81b(0x322)]?.(),_0x532e44[_0x17b81b(0x124)](),_0x532e44[_0x17b81b(0x190)]());}[_0x1d30f8(0x377)](){const _0x272f65=_0x1d30f8;this['initialized']&&(this[_0x272f65(0x2c3)]=!0x1,this['element'][_0x272f65(0x428)](_0x272f65(0x1a2),this[_0x272f65(0x38d)],!0x0),this[_0x272f65(0x23a)]['removeEventListener'](_0x272f65(0x3b3),this['handlePointerMove'],!0x0),this[_0x272f65(0x23a)][_0x272f65(0x428)](_0x272f65(0x2b0),this[_0x272f65(0x1e7)],!0x0),window[_0x272f65(0x428)](_0x272f65(0x3b3),this[_0x272f65(0x159)],!0x0),window[_0x272f65(0x428)](_0x272f65(0x145),this[_0x272f65(0x110)],!0x0),window[_0x272f65(0x428)](_0x272f65(0xf1),this[_0x272f65(0x110)],!0x0),this[_0x272f65(0x3ca)]&&this[_0x272f65(0x3e6)]?.(),this[_0x272f65(0x3ca)]=null,this[_0x272f65(0x105)]=null,this[_0x272f65(0x239)][_0x272f65(0x154)]());}['findAxisHit'](_0x56e16b,_0x2100e6){const _0x35f54a=_0x1d30f8;let _0xe41fa9=this[_0x35f54a(0x3fe)]();if(!_0xe41fa9)return null;let [_0x544a02,_0x5effea]=eventViewportPoint(_0x56e16b,this[_0x35f54a(0x23a)],_0xe41fa9),_0x457c5c=this[_0x35f54a(0x239)][_0x35f54a(0x1f8)];if(_0x457c5c===null)return null;let _0x57ceb2=(_0x2100e6?[_0x2100e6]:_0x457c5c==='auto'?['x','y','z']:[_0x457c5c])[_0x35f54a(0x2f9)](_0x40fbbd=>projectAxis(_0x40fbbd,_0xe41fa9))[_0x35f54a(0x1ad)](_0x5838a8=>_0x5838a8!==null)['map'](_0xd88bfa=>hitProjectedAxis(_0xd88bfa,_0x544a02,_0x5effea));if(_0x57ceb2[_0x35f54a(0x29b)]===0x0)return null;_0x57ceb2[_0x35f54a(0x2c7)]((_0x3e073a,_0x7afcc3)=>_0x3e073a[_0x35f54a(0x409)]-_0x7afcc3[_0x35f54a(0x409)]);let _0x3df7d4=_0x57ceb2[0x0];if(!_0x2100e6&&this[_0x35f54a(0x105)]){let _0x5afdc0=_0x57ceb2[_0x35f54a(0x2d7)](_0x4a0deb=>_0x4a0deb[_0x35f54a(0x3f3)]===this[_0x35f54a(0x105)]);_0x5afdc0&&_0x5afdc0[_0x35f54a(0x409)]<=_0x3df7d4[_0x35f54a(0x409)]+this[_0x35f54a(0x132)]&&(_0x3df7d4=_0x5afdc0);}return!_0x2100e6&&_0x3df7d4[_0x35f54a(0x409)]>this[_0x35f54a(0x3df)]?null:_0x3df7d4;}['applyHit'](_0x22e17c,_0x5380fc){const _0x5f5dd1=_0x1d30f8;let _0x24bb49=realAxisPosition(this['state'],_0x22e17c['axis'],_0x22e17c['normalizedPosition']);_0x5380fc?this[_0x5f5dd1(0x239)][_0x5f5dd1(0x333)](_0x5380fc,_0x24bb49):this['state'][_0x5f5dd1(0x13c)](_0x22e17c['axis'],_0x24bb49),this[_0x5f5dd1(0x105)]=_0x22e17c[_0x5f5dd1(0x3f3)];}['handlePointerDown']=_0x5b9556=>{const _0x54d21a=_0x1d30f8;if(_0x5b9556[_0x54d21a(0x2e8)]!==0x0||this[_0x54d21a(0x3ca)])return;let _0x47c7a4=this[_0x54d21a(0x35a)](_0x5b9556);_0x47c7a4&&(this[_0x54d21a(0x187)](_0x47c7a4),this[_0x54d21a(0x3ca)]={'kind':_0x54d21a(0xed),'axis':_0x47c7a4['axis'],'pointerId':_0x5b9556[_0x54d21a(0x12d)],'startX':_0x5b9556['clientX'],'startY':_0x5b9556[_0x54d21a(0x36e)],'moved':!0x1},this['onInteractionStart']?.(),this[_0x54d21a(0x23a)]['setPointerCapture']?.(_0x5b9556['pointerId']),_0x5b9556[_0x54d21a(0x124)](),_0x5b9556[_0x54d21a(0x190)]());};[_0x1d30f8(0x113)]=_0x429f8a=>{const _0x41ee54=_0x1d30f8;if(this[_0x41ee54(0x3ca)])return;let _0x10db4b=this[_0x41ee54(0x35a)](_0x429f8a);if(!_0x10db4b){this['previousAxis']=null,this[_0x41ee54(0x239)][_0x41ee54(0x154)]();return;}this[_0x41ee54(0x187)](_0x10db4b);};[_0x1d30f8(0x159)]=_0x279cac=>{const _0x2fa309=_0x1d30f8;let _0x4acd0b=this[_0x2fa309(0x3ca)];if(!_0x4acd0b||_0x4acd0b[_0x2fa309(0x12d)]!==_0x279cac['pointerId'])return;let _0x4fc912=this[_0x2fa309(0x35a)](_0x279cac,_0x4acd0b[_0x2fa309(0x3f3)]);_0x4fc912&&(Math[_0x2fa309(0x20b)](_0x279cac[_0x2fa309(0x2a8)]-_0x4acd0b[_0x2fa309(0x2a5)],_0x279cac[_0x2fa309(0x36e)]-_0x4acd0b[_0x2fa309(0x168)])>0x4&&(_0x4acd0b[_0x2fa309(0x1ca)]=!0x0),this[_0x2fa309(0x187)](_0x4fc912,_0x4acd0b[_0x2fa309(0x1cd)]),_0x279cac[_0x2fa309(0x124)](),_0x279cac['stopPropagation']());};['handlePointerUp']=_0x48a2fb=>{const _0x12d801=_0x1d30f8;let _0x50b021=this[_0x12d801(0x3ca)];!_0x50b021||_0x50b021[_0x12d801(0x12d)]!==_0x48a2fb[_0x12d801(0x12d)]||(_0x50b021['kind']===_0x12d801(0xed)&&!_0x50b021['moved']&&this[_0x12d801(0x239)][_0x12d801(0x22b)](),this[_0x12d801(0x23a)][_0x12d801(0x143)]?.(_0x48a2fb['pointerId'])&&this['element']['releasePointerCapture'](_0x48a2fb[_0x12d801(0x12d)]),this['activePointer']=null,this[_0x12d801(0x3e6)]?.(),_0x48a2fb[_0x12d801(0x124)](),_0x48a2fb['stopPropagation']());};[_0x1d30f8(0x1e7)]=()=>{const _0xedd219=_0x1d30f8;this['activePointer']||this[_0xedd219(0x239)][_0xedd219(0x154)]();};};const axisLabel=_0x1fb5a2=>_0x1fb5a2[_0x1d30f8(0x13a)](),defaultFormatPosition=(_0x2a07f5,_0x108a59)=>axisLabel(_0x2a07f5)+'\x20'+Number(_0x108a59['toFixed'](0x4)),getAxisDefinition=(_0x219771,_0x255596)=>{const _0x2270a2=_0x1d30f8;let _0x2a5c48=_0x219771['axisDefinitions'];return _0x255596==='x'?_0x2a5c48['xAxis']:_0x255596==='y'?_0x2a5c48['yAxis']:_0x2a5c48[_0x2270a2(0x1d9)];},markerModelPoint=(_0x1d5bdf,_0x3bf5e7)=>{const _0x375c92=_0x1d30f8;let _0x5a4d3b=volumeAxisValueToNormalized(getAxisDefinition(_0x1d5bdf,_0x3bf5e7[_0x375c92(0x3f3)]),_0x3bf5e7[_0x375c92(0x209)]);return _0x3bf5e7[_0x375c92(0x3f3)]==='x'?[_0x5a4d3b,0x0,0x0]:_0x3bf5e7['axis']==='y'?[0x0,_0x5a4d3b,0x0]:[0x0,0x0,_0x5a4d3b];},applyMarkerBaseStyle=_0x1c0c6c=>{const _0x326e2d=_0x1d30f8;_0x1c0c6c['style']['position']=_0x326e2d(0x14a),_0x1c0c6c[_0x326e2d(0x415)][_0x326e2d(0x3a7)]='1',_0x1c0c6c[_0x326e2d(0x415)][_0x326e2d(0x299)]=_0x326e2d(0x380),_0x1c0c6c[_0x326e2d(0x415)][_0x326e2d(0x410)]=_0x326e2d(0x32d),_0x1c0c6c[_0x326e2d(0x415)][_0x326e2d(0x2e6)]=_0x326e2d(0x291),_0x1c0c6c[_0x326e2d(0x415)][_0x326e2d(0x1e9)]=_0x326e2d(0x252),_0x1c0c6c[_0x326e2d(0x415)][_0x326e2d(0x1dc)]='1px\x20solid\x20rgb(255\x20255\x20255\x20/\x2065%)',_0x1c0c6c[_0x326e2d(0x415)][_0x326e2d(0x259)]=_0x326e2d(0x291),_0x1c0c6c[_0x326e2d(0x415)][_0x326e2d(0x1c5)]='#fff',_0x1c0c6c[_0x326e2d(0x415)]['background']=_0x326e2d(0x216),_0x1c0c6c[_0x326e2d(0x415)][_0x326e2d(0x1da)]='12px/1.2\x20sans-serif',_0x1c0c6c[_0x326e2d(0x415)][_0x326e2d(0x34a)]=_0x326e2d(0x16f),_0x1c0c6c['style'][_0x326e2d(0xef)]=_0x326e2d(0x2c1),_0x1c0c6c['style'][_0x326e2d(0x15e)]=_0x326e2d(0x2b1),_0x1c0c6c['style'][_0x326e2d(0x36c)]=_0x326e2d(0x2b1);},createDeleteButton=()=>{const _0x303828=_0x1d30f8;let _0x41cda6=document['createElement']('button');return _0x41cda6['type']=_0x303828(0x2e8),_0x41cda6['textContent']='×',_0x41cda6[_0x303828(0x362)](_0x303828(0x313),'删除切面'),_0x41cda6[_0x303828(0x415)]['padding']=_0x303828(0x2bc),_0x41cda6[_0x303828(0x415)]['border']='0',_0x41cda6[_0x303828(0x415)][_0x303828(0x1c5)]=_0x303828(0xd1),_0x41cda6[_0x303828(0x415)][_0x303828(0x1cc)]=_0x303828(0x25b),_0x41cda6[_0x303828(0x415)][_0x303828(0x1e1)]=_0x303828(0x196),_0x41cda6;};var SliceMarkerOverlay=class{['container'];['state'];['getFrame'];[_0x1d30f8(0x240)];[_0x1d30f8(0x19d)];['markers']=new Map();[_0x1d30f8(0x1b3)];[_0x1d30f8(0x101)];[_0x1d30f8(0x18e)]=null;constructor(_0x5601f5,_0x3df409,_0x1874de,_0x3f49d6={}){const _0x5a5b44=_0x1d30f8;this[_0x5a5b44(0xe4)]=_0x5601f5,this[_0x5a5b44(0x239)]=_0x3df409,this[_0x5a5b44(0x3fe)]=_0x1874de,this[_0x5a5b44(0x240)]=_0x3f49d6[_0x5a5b44(0x240)],this['formatPosition']=_0x3f49d6[_0x5a5b44(0x19d)]??defaultFormatPosition,this[_0x5a5b44(0x1b3)]=_0x5601f5[_0x5a5b44(0x415)][_0x5a5b44(0x209)],getComputedStyle(_0x5601f5)[_0x5a5b44(0x209)]==='static'&&(_0x5601f5[_0x5a5b44(0x415)][_0x5a5b44(0x209)]=_0x5a5b44(0x31d)),this[_0x5a5b44(0x101)]=_0x3df409[_0x5a5b44(0xf6)](()=>this['update']());}['update'](){const _0x56bdf3=_0x1d30f8;let _0x367393=this[_0x56bdf3(0x239)][_0x56bdf3(0x3e2)];this[_0x56bdf3(0x2b5)](_0x367393[_0x56bdf3(0xed)]),this[_0x56bdf3(0x1fa)](_0x367393['lockedSlices']);let _0x4d7122=this[_0x56bdf3(0x3fe)]();if(!_0x4d7122){this[_0x56bdf3(0x134)]();return;}_0x367393[_0x56bdf3(0xed)]&&this['previewMarker']&&this[_0x56bdf3(0x11f)](this[_0x56bdf3(0x18e)],_0x367393[_0x56bdf3(0xed)],_0x4d7122);for(let _0x19799d of _0x367393[_0x56bdf3(0x104)]){let _0x5b9074=this['markers']['get'](_0x19799d['id']);_0x5b9074&&this[_0x56bdf3(0x11f)](_0x5b9074,_0x19799d,_0x4d7122);}}[_0x1d30f8(0x377)](){const _0x2a083f=_0x1d30f8;this[_0x2a083f(0x101)](),this['previewMarker']?.[_0x2a083f(0x3de)](),this[_0x2a083f(0x18e)]=null;for(let _0x1413cc of this[_0x2a083f(0x352)][_0x2a083f(0x270)]())_0x1413cc[_0x2a083f(0x3de)]();this[_0x2a083f(0x352)][_0x2a083f(0x12f)](),this[_0x2a083f(0xe4)]['style'][_0x2a083f(0x209)]=this[_0x2a083f(0x1b3)];}[_0x1d30f8(0x2b5)](_0x5a8938){const _0xc1ceb5=_0x1d30f8;if(!_0x5a8938){this[_0xc1ceb5(0x18e)]?.[_0xc1ceb5(0x3de)](),this[_0xc1ceb5(0x18e)]=null;return;}this[_0xc1ceb5(0x18e)]||(this[_0xc1ceb5(0x18e)]=document[_0xc1ceb5(0x3a9)](_0xc1ceb5(0x40a)),applyMarkerBaseStyle(this[_0xc1ceb5(0x18e)]),this[_0xc1ceb5(0x18e)][_0xc1ceb5(0x415)][_0xc1ceb5(0x1b1)]=_0xc1ceb5(0x2b1),this[_0xc1ceb5(0x18e)][_0xc1ceb5(0x415)][_0xc1ceb5(0x251)]=_0xc1ceb5(0x343),this[_0xc1ceb5(0xe4)][_0xc1ceb5(0x371)](this[_0xc1ceb5(0x18e)])),this[_0xc1ceb5(0x18e)]['textContent']=this['formatPosition'](_0x5a8938[_0xc1ceb5(0x3f3)],_0x5a8938[_0xc1ceb5(0x209)]);}[_0x1d30f8(0x1fa)](_0x2c590e){const _0x487885=_0x1d30f8;let _0x25cb26=new Set(_0x2c590e['map'](_0x4f6bd7=>_0x4f6bd7['id']));for(let [_0x18b058,_0x469c2c]of this['markers'])_0x25cb26[_0x487885(0x314)](_0x18b058)||(_0x469c2c[_0x487885(0x3de)](),this['markers'][_0x487885(0xd5)](_0x18b058));for(let _0x5496c6 of _0x2c590e){let _0x28cb91=this[_0x487885(0x352)][_0x487885(0x2d0)](_0x5496c6['id']);_0x28cb91||(_0x28cb91=this[_0x487885(0x3dd)](_0x5496c6['id']),this[_0x487885(0x352)]['set'](_0x5496c6['id'],_0x28cb91),this[_0x487885(0xe4)][_0x487885(0x371)](_0x28cb91));let _0x542ecf=_0x28cb91[_0x487885(0x2e2)];_0x542ecf&&(_0x542ecf[_0x487885(0x253)]=this['formatPosition'](_0x5496c6[_0x487885(0x3f3)],_0x5496c6['position']));}}['createLockedMarker'](_0x1f9938){const _0xc731aa=_0x1d30f8;let _0x1954a2=document['createElement'](_0xc731aa(0x40a));applyMarkerBaseStyle(_0x1954a2),_0x1954a2[_0xc731aa(0x415)][_0xc731aa(0x1e1)]=_0xc731aa(0x20c),_0x1954a2['append'](document[_0xc731aa(0x32c)](''));let _0x3d2a13=createDeleteButton();return _0x3d2a13[_0xc731aa(0x266)]('pointerdown',_0x4607b1=>_0x4607b1['stopPropagation']()),_0x3d2a13['addEventListener']('click',_0x1aa7c6=>{const _0xddfed=_0xc731aa;_0x1aa7c6[_0xddfed(0x190)](),this[_0xddfed(0x239)]['removeSlice'](_0x1f9938);}),_0x1954a2['addEventListener']('pointerdown',_0x35ee7c=>this[_0xc731aa(0x240)]?.[_0xc731aa(0x2e1)](_0x1f9938,_0x35ee7c)),_0x1954a2[_0xc731aa(0x371)](_0x3d2a13),_0x1954a2;}[_0x1d30f8(0x11f)](_0x407c1f,_0x2453f1,_0x579fd7){const _0x3ff672=_0x1d30f8;let _0x3e06b7=projectPointToViewport(multiplyMatrices(_0x579fd7[_0x3ff672(0x114)],_0x579fd7['modelMatrix']),markerModelPoint(this[_0x3ff672(0x239)],_0x2453f1),_0x579fd7[_0x3ff672(0x109)],_0x579fd7[_0x3ff672(0x302)]);if(!_0x3e06b7||_0x3e06b7[0x2]<0x0||_0x3e06b7[0x2]>0x1){_0x407c1f[_0x3ff672(0x415)][_0x3ff672(0x299)]=_0x3ff672(0x2b1);return;}_0x407c1f[_0x3ff672(0x415)][_0x3ff672(0x299)]='flex',_0x407c1f[_0x3ff672(0x415)][_0x3ff672(0x305)]=_0x3e06b7[0x0]+'px',_0x407c1f[_0x3ff672(0x415)]['top']=_0x3e06b7[0x1]+'px';}[_0x1d30f8(0x134)](){const _0x287c9c=_0x1d30f8;this[_0x287c9c(0x18e)]&&(this[_0x287c9c(0x18e)]['style'][_0x287c9c(0x299)]='none');for(let _0x20b933 of this['markers'][_0x287c9c(0x270)]())_0x20b933[_0x287c9c(0x415)][_0x287c9c(0x299)]=_0x287c9c(0x2b1);}};const clamp=(_0x487fed,_0x400310)=>Math['min'](_0x400310-0x1,Math[_0x1d30f8(0x334)](0x0,_0x487fed)),createPhysicalBrickValues=(_0x59580f,_0x377f33,_0x140473,_0x3162fa)=>{const _0x4f19ea=_0x1d30f8;validateVolumeChunk(_0x59580f,_0x3162fa,_0x140473[_0x4f19ea(0x27c)]);let _0x401e98=_0x377f33[_0x4f19ea(0x238)]+_0x377f33[_0x4f19ea(0x15b)]*0x2,_0x517ee7=_0x377f33['height']+_0x377f33['halo']*0x2,_0x1e0ce2=_0x377f33[_0x4f19ea(0x3c4)]+_0x377f33[_0x4f19ea(0x15b)]*0x2,_0x2ad835=new Float32Array(_0x401e98*_0x517ee7*_0x1e0ce2);for(let _0x2db1f0=0x0;_0x2db1f0<_0x1e0ce2;_0x2db1f0+=0x1){let _0x24b0a7=clamp(_0x140473[_0x4f19ea(0x246)][_0x4f19ea(0x3c8)]+_0x2db1f0-_0x377f33[_0x4f19ea(0x15b)],_0x59580f['zAxis'][_0x4f19ea(0xdb)])-_0x3162fa[_0x4f19ea(0x241)][_0x4f19ea(0x3c8)];for(let _0x12537a=0x0;_0x12537a<_0x517ee7;_0x12537a+=0x1){let _0x1474ac=clamp(_0x140473[_0x4f19ea(0x246)][_0x4f19ea(0x418)]+_0x12537a-_0x377f33[_0x4f19ea(0x15b)],_0x59580f[_0x4f19ea(0x2b7)][_0x4f19ea(0xdb)])-_0x3162fa[_0x4f19ea(0x241)][_0x4f19ea(0x418)];for(let _0x4b1aa3=0x0;_0x4b1aa3<_0x401e98;_0x4b1aa3+=0x1){let _0x577c11=clamp(_0x140473[_0x4f19ea(0x246)][_0x4f19ea(0x405)]+_0x4b1aa3-_0x377f33[_0x4f19ea(0x15b)],_0x59580f[_0x4f19ea(0xf3)][_0x4f19ea(0xdb)])-_0x3162fa[_0x4f19ea(0x241)]['xStart'];_0x2ad835[(_0x2db1f0*_0x517ee7+_0x12537a)*_0x401e98+_0x4b1aa3]=_0x3162fa[_0x4f19ea(0x270)][(_0x24b0a7*_0x3162fa[_0x4f19ea(0x26d)]+_0x1474ac)*_0x3162fa['width']+_0x577c11];}}}return _0x2ad835;},normalizeColorStops=_0x4e6c8d=>{const _0x537139=_0x1d30f8;if(_0x4e6c8d[_0x537139(0x29b)]===0x0)throw Error(_0x537139(0x34d));return _0x4e6c8d[_0x537139(0x2f9)]((_0x34463a,_0x61dd14)=>{const _0x4662d3=_0x537139;if(Number[_0x4662d3(0x3d4)](_0x34463a[_0x4662d3(0xcc)])||Number[_0x4662d3(0x3d4)](_0x34463a['max']))throw TypeError('第'+(_0x61dd14+0x1)+'个色标范围不能是NaN');if(_0x34463a[_0x4662d3(0xcc)]>=_0x34463a[_0x4662d3(0x334)])throw Error('第'+(_0x61dd14+0x1)+_0x4662d3(0x3b7));return{'min':_0x34463a[_0x4662d3(0xcc)],'max':_0x34463a[_0x4662d3(0x334)],'color':parseRasterColor(_0x34463a[_0x4662d3(0x1c5)])};})[_0x537139(0x2c7)]((_0x42716,_0xe132f0)=>_0x42716['min']-_0xe132f0['min']);},parseRasterColor=_0x5be922=>{const _0xa19922=_0x1d30f8;let _0x34e903=_0x5be922['trim']()['toLowerCase']();if(_0x34e903[_0xa19922(0x400)]('#'))return parseHexColor(_0x34e903);if(_0x34e903[_0xa19922(0x400)](_0xa19922(0x2cb)))return parseRgbColor(_0x34e903,!0x0);if(_0x34e903['startsWith'](_0xa19922(0x404)))return parseRgbColor(_0x34e903,!0x1);throw Error(_0xa19922(0x39f)+_0x5be922);},parseHexColor=_0x2949a8=>{const _0x3dcbac=_0x1d30f8;if(_0x2949a8[_0x3dcbac(0x29b)]===0x4)return normalizeRgb(Number['parseInt'](''+_0x2949a8[0x1]+_0x2949a8[0x1],0x10),Number[_0x3dcbac(0x28a)](''+_0x2949a8[0x2]+_0x2949a8[0x2],0x10),Number[_0x3dcbac(0x28a)](''+_0x2949a8[0x3]+_0x2949a8[0x3],0x10),0x1);if(_0x2949a8[_0x3dcbac(0x29b)]===0x7)return normalizeRgb(Number[_0x3dcbac(0x28a)](_0x2949a8[_0x3dcbac(0x210)](0x1,0x3),0x10),Number[_0x3dcbac(0x28a)](_0x2949a8[_0x3dcbac(0x210)](0x3,0x5),0x10),Number['parseInt'](_0x2949a8[_0x3dcbac(0x210)](0x5,0x7),0x10),0x1);throw Error(_0x3dcbac(0x310)+_0x2949a8);},parseRgbColor=(_0x3c6aad,_0x32eb73)=>{const _0x41058a=_0x1d30f8;let _0x6a039b=_0x3c6aad[_0x41058a(0x278)](/^rgba?\(([^)]+)\)$/);if(!_0x6a039b)throw Error(_0x41058a(0xe8)+_0x3c6aad);let _0x16c989=_0x6a039b[0x1]['split'](',')[_0x41058a(0x2f9)](_0x168a21=>_0x168a21[_0x41058a(0x374)]()),_0x1c8356=_0x32eb73?0x4:0x3;if(_0x16c989['length']!==_0x1c8356)throw Error(_0x41058a(0x244)+_0x3c6aad);return normalizeRgb(Number(_0x16c989[0x0]),Number(_0x16c989[0x1]),Number(_0x16c989[0x2]),_0x32eb73?Number(_0x16c989[0x3]):0x1);},normalizeRgb=(_0x4390ef,_0x30026b,_0x2f4b6e,_0x29eb57)=>{const _0x30eb05=_0x1d30f8;if(!isValidRgbChannel(_0x4390ef)||!isValidRgbChannel(_0x30026b)||!isValidRgbChannel(_0x2f4b6e))throw Error(_0x30eb05(0x379));if(!Number[_0x30eb05(0x193)](_0x29eb57)||_0x29eb57<0x0||_0x29eb57>0x1)throw Error(_0x30eb05(0x1df));return[_0x4390ef/0xff,_0x30026b/0xff,_0x2f4b6e/0xff,_0x29eb57];},isValidRgbChannel=_0x5a2598=>Number[_0x1d30f8(0x193)](_0x5a2598)&&_0x5a2598>=0x0&&_0x5a2598<=0xff,validateStops=_0x19294b=>{const _0x34ebec=_0x1d30f8;if(_0x19294b[_0x34ebec(0x29b)]===0x0)throw Error('Volume\x20opacity\x20stops\x20cannot\x20be\x20empty.\x20体积透明度节点不能为空。');let _0xcb56a6=-0x1/0x0;for(let _0x578df7 of _0x19294b){if(!Number[_0x34ebec(0x193)](_0x578df7['value'])||_0x578df7[_0x34ebec(0x288)]<=_0xcb56a6)throw Error(_0x34ebec(0x272));if(!Number[_0x34ebec(0x193)](_0x578df7['opacity'])||_0x578df7[_0x34ebec(0x251)]<0x0||_0x578df7[_0x34ebec(0x251)]>0x1)throw Error(_0x34ebec(0x1b9));_0xcb56a6=_0x578df7['value'];}},findTransferInterval=(_0x44430a,_0x329eb2)=>{const _0x1be118=_0x1d30f8;if(_0x44430a<=_0x329eb2[0x0])return[0x0,0x0,0x0];for(let _0x341397=0x1;_0x341397<_0x329eb2['length'];_0x341397+=0x1)if(_0x44430a<=_0x329eb2[_0x341397]){let _0x15aff6=_0x329eb2[_0x341397]-_0x329eb2[_0x341397-0x1];return[_0x341397-0x1,_0x341397,_0x15aff6===0x0?0x0:Math[_0x1be118(0xcc)](0x1,Math[_0x1be118(0x334)](0x0,(_0x44430a-_0x329eb2[_0x341397-0x1])/_0x15aff6))];}let _0x3a70ad=_0x329eb2[_0x1be118(0x29b)]-0x1;return[_0x3a70ad,_0x3a70ad,0x0];},prepareWebgpuVolumeTransfer=(_0x2ba85a,_0x516535)=>{const _0x2c4479=_0x1d30f8;validateStops(_0x516535);let _0x13f4bc=normalizeColorStops([..._0x2ba85a]);return{'colorStops':_0x13f4bc[_0x2c4479(0x200)]((_0x53080d,_0x404cd0)=>{const _0xeceaa7=_0x2c4479;let _0xe584f3=_0x13f4bc[Math[_0xeceaa7(0xcc)](_0x404cd0+0x1,_0x13f4bc['length']-0x1)][_0xeceaa7(0x1c5)];return[{'value':_0x53080d[_0xeceaa7(0xcc)],'color':_0x53080d[_0xeceaa7(0x1c5)]},{'value':_0x53080d['max'],'color':_0xe584f3}];}),'opacityStops':_0x516535['map'](_0x503844=>({..._0x503844}))};},sampleVolumeTransferColor=(_0xa893b0,_0x1f6fb4,_0x3f61c4,_0x25d0aa)=>{const _0x558a86=_0x1d30f8;if(!Number[_0x558a86(0x193)](_0xa893b0))return[0x0,0x0,0x0,0x0];let [_0x50cb6f,_0x1e872f,_0x1f26d6]=findTransferInterval(_0xa893b0,_0x1f6fb4[_0x558a86(0x2f9)](_0x1c1fe4=>_0x1c1fe4[_0x558a86(0x288)])),_0x4f1184=_0x1f6fb4[_0x50cb6f],_0x4bdb86=_0x1f6fb4[_0x1e872f],_0x278fb9=_0x25d0aa==='step'?0x0:_0x1f26d6;return[_0x4f1184[_0x558a86(0x1c5)][0x0]+(_0x4bdb86['color'][0x0]-_0x4f1184[_0x558a86(0x1c5)][0x0])*_0x278fb9,_0x4f1184[_0x558a86(0x1c5)][0x1]+(_0x4bdb86[_0x558a86(0x1c5)][0x1]-_0x4f1184['color'][0x1])*_0x278fb9,_0x4f1184['color'][0x2]+(_0x4bdb86['color'][0x2]-_0x4f1184[_0x558a86(0x1c5)][0x2])*_0x278fb9,(_0x4f1184[_0x558a86(0x1c5)][0x3]+(_0x4bdb86[_0x558a86(0x1c5)][0x3]-_0x4f1184[_0x558a86(0x1c5)][0x3])*_0x278fb9)*_0x3f61c4];},sampleVolumeTransferOpacity=(_0x5b163c,_0x42ceef,_0x39c7c5)=>{const _0x5ecbfc=_0x1d30f8;if(!Number[_0x5ecbfc(0x193)](_0x5b163c))return 0x0;let [_0x1c99a3,_0x3d9616,_0x580580]=findTransferInterval(_0x5b163c,_0x42ceef[_0x5ecbfc(0x2f9)](_0x233e4a=>_0x233e4a[_0x5ecbfc(0x288)])),_0x544346=_0x39c7c5==='step'?0x0:_0x580580;return _0x42ceef[_0x1c99a3][_0x5ecbfc(0x251)]+(_0x42ceef[_0x3d9616]['opacity']-_0x42ceef[_0x1c99a3][_0x5ecbfc(0x251)])*_0x544346;},DEFAULT_CAMERA={'position':[1.4,1.2,2.1],'target':[0.5,0.5,0.5],'up':[0x0,0x1,0x0],'projection':{'type':'perspective','fovYDegrees':0x2d,'near':0.01,'far':0x64}},IDENTITY_MATRIX=[0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1],clamp01=_0x5301b6=>Math[_0x1d30f8(0xcc)](0x1,Math[_0x1d30f8(0x334)](0x0,_0x5301b6)),qualityStepLength=_0x21bb40=>_0x21bb40===_0x1d30f8(0x21f)?0.012:_0x21bb40===_0x1d30f8(0x237)?0.0025:_0x21bb40==='balanced'?0.005:0.006,qualityUploadCount=_0x4e42dc=>_0x4e42dc==='performance'?0x8:_0x4e42dc===_0x1d30f8(0x237)?0x2:0x4,nextAutoQuality=(_0x15792e,_0x4bf827)=>_0x4bf827>0x18?_0x15792e===_0x1d30f8(0x237)?_0x1d30f8(0x41b):_0x1d30f8(0x21f):_0x4bf827<0xe?_0x15792e===_0x1d30f8(0x21f)?'balanced':_0x1d30f8(0x237):_0x15792e,validatePositiveOption=(_0x5b8cbf,_0x342123)=>{const _0x1d2ca2=_0x1d30f8;if(!Number[_0x1d2ca2(0x193)](_0x5b8cbf)||_0x5b8cbf<=0x0)throw Error(_0x342123+_0x1d2ca2(0x10b)+_0x342123+_0x1d2ca2(0x307));return _0x5b8cbf;},normalizeClipBox=(_0x48e026,_0x3bee58)=>{const _0x450043=_0x1d30f8;if(!_0x3bee58)return{'minimum':[0x0,0x0,0x0],'maximum':[0x1,0x1,0x1]};let _0x3b3e6a=clamp01(volumeAxisValueToNormalized(_0x48e026[_0x450043(0x1f0)][_0x450043(0xf3)],_0x3bee58[_0x450043(0xfa)])),_0x2af61b=clamp01(volumeAxisValueToNormalized(_0x48e026['metadata'][_0x450043(0xf3)],_0x3bee58[_0x450043(0x294)])),_0x3bd7f0=clamp01(volumeAxisValueToNormalized(_0x48e026[_0x450043(0x1f0)][_0x450043(0x2b7)],_0x3bee58[_0x450043(0x157)])),_0x22aacd=clamp01(volumeAxisValueToNormalized(_0x48e026[_0x450043(0x1f0)]['yAxis'],_0x3bee58[_0x450043(0x133)])),_0x17fcc5=clamp01(volumeAxisValueToNormalized(_0x48e026[_0x450043(0x1f0)][_0x450043(0x1d9)],_0x3bee58[_0x450043(0x203)])),_0x2dcdb7=clamp01(volumeAxisValueToNormalized(_0x48e026['metadata'][_0x450043(0x1d9)],_0x3bee58[_0x450043(0x29d)]));return{'minimum':[Math[_0x450043(0xcc)](_0x3b3e6a,_0x2af61b),Math[_0x450043(0xcc)](_0x3bd7f0,_0x22aacd),Math[_0x450043(0xcc)](_0x17fcc5,_0x2dcdb7)],'maximum':[Math['max'](_0x3b3e6a,_0x2af61b),Math[_0x450043(0x334)](_0x3bd7f0,_0x22aacd),Math[_0x450043(0x334)](_0x17fcc5,_0x2dcdb7)]};},createAxesMesh=()=>({'id':_0x1d30f8(0x375),'topology':_0x1d30f8(0x36a),'depthMode':_0x1d30f8(0x42c),'vertices':new Float32Array([0x0,0x0,0x0,0x1,0.2,0.2,0x1,0x1,0x0,0x0,0x1,0.2,0.2,0x1,0x0,0x0,0x0,0.2,0x1,0.2,0x1,0x0,0x1,0x0,0.2,0x1,0.2,0x1,0x0,0x0,0x0,0.2,0.5,0x1,0x1,0x0,0x0,0x1,0.2,0.5,0x1,0x1])}),createBoundsMesh=()=>{const _0x15f3d2=_0x1d30f8;let _0x142ec6=[0.1,0.53,0.56,0.62],_0x46b10d=[[0x0,0x0,0x0],[0x1,0x0,0x0],[0x0,0x1,0x0],[0x1,0x1,0x0],[0x0,0x0,0x1],[0x1,0x0,0x1],[0x0,0x1,0x1],[0x1,0x1,0x1]],_0xbc062b=[[0x0,0x1],[0x0,0x2],[0x1,0x3],[0x2,0x3],[0x4,0x5],[0x4,0x6],[0x5,0x7],[0x6,0x7],[0x0,0x4],[0x1,0x5],[0x2,0x6],[0x3,0x7]],_0x3f3f80=new Float32Array(_0xbc062b[_0x15f3d2(0x29b)]*0x2*0x7),_0xced1f0=0x0;for(let _0x5b09e2 of _0xbc062b)for(let _0x5f28a3 of _0x5b09e2)_0x3f3f80[_0x15f3d2(0x1a8)]([..._0x46b10d[_0x5f28a3],..._0x142ec6],_0xced1f0),_0xced1f0+=0x7;return{'id':_0x15f3d2(0x2a0),'topology':_0x15f3d2(0x36a),'depthMode':_0x15f3d2(0xdf),'vertices':_0x3f3f80};},createProfileSceneMesh=(_0x3d6318,_0x2658a9,_0xd22c0e,_0x4dff0f)=>{const _0x1d0cc4=_0x1d30f8;let _0x101bb1=new Float32Array(_0x3d6318[_0x1d0cc4(0x3be)][_0x1d0cc4(0x29b)]*0x7);for(let _0xa778ef=0x0;_0xa778ef<_0x3d6318[_0x1d0cc4(0x3be)][_0x1d0cc4(0x29b)];_0xa778ef+=0x1){let _0x3033a4=_0x3d6318[_0x1d0cc4(0x3be)][_0xa778ef],_0x3be38f=_0x3033a4*0x3,_0x59a931=sampleVolumeTransferOpacity(_0x3d6318[_0x1d0cc4(0x270)][_0x3033a4],_0xd22c0e,_0x4dff0f),_0x5aa4bc=sampleVolumeTransferColor(_0x3d6318['values'][_0x3033a4],_0x2658a9,_0x3d6318[_0x1d0cc4(0x251)]*_0x59a931,_0x4dff0f);_0x101bb1[_0x1d0cc4(0x1a8)]([_0x3d6318[_0x1d0cc4(0x221)][_0x3be38f],_0x3d6318[_0x1d0cc4(0x221)][_0x3be38f+0x1],_0x3d6318[_0x1d0cc4(0x221)][_0x3be38f+0x2],_0x5aa4bc[0x0]*_0x5aa4bc[0x3],_0x5aa4bc[0x1]*_0x5aa4bc[0x3],_0x5aa4bc[0x2]*_0x5aa4bc[0x3],_0x5aa4bc[0x3]],_0xa778ef*0x7);}return{'id':_0x3d6318['id'],'topology':'triangle-list','depthMode':_0x3d6318[_0x1d0cc4(0x274)],'vertices':_0x101bb1};},descriptorDistance=(_0x1eb6c7,_0x1b4870,_0x5633f9)=>{const _0x29a669=_0x1d30f8;let _0x1bc9f4=(_0x1eb6c7[_0x29a669(0x3ad)]['x']+0.5)/_0x1b4870[_0x29a669(0xf5)],_0x5dc2f5=(_0x1eb6c7['coordinate']['y']+0.5)/_0x1b4870['countY'],_0x57567f=(_0x1eb6c7[_0x29a669(0x3ad)]['z']+0.5)/_0x1b4870[_0x29a669(0x279)];return Math[_0x29a669(0x20b)](_0x1bc9f4-_0x5633f9['position'][0x0],_0x5dc2f5-_0x5633f9[_0x29a669(0x209)][0x1],_0x57567f-_0x5633f9['position'][0x2]);},descriptorLogicalIndex=(_0x238b20,_0x5175b3)=>(_0x238b20[_0x1d30f8(0x3ad)]['z']*_0x5175b3[_0x1d30f8(0x26e)]+_0x238b20[_0x1d30f8(0x3ad)]['y'])*_0x5175b3[_0x1d30f8(0xf5)]+_0x238b20['coordinate']['x'],descriptorContainsSlice=(_0x128154,_0x33badb,_0x55636d,_0x49cca5)=>{const _0x4445a5=_0x1d30f8;let _0x42c2c6=_0x55636d==='x'?{'start':_0x128154[_0x4445a5(0x246)][_0x4445a5(0x405)],'count':_0x128154[_0x4445a5(0x246)][_0x4445a5(0x298)],'size':_0x33badb[_0x4445a5(0x1f0)]['xAxis'][_0x4445a5(0xdb)]}:_0x55636d==='y'?{'start':_0x128154[_0x4445a5(0x246)]['levelStart'],'count':_0x128154[_0x4445a5(0x246)][_0x4445a5(0x3ce)],'size':_0x33badb[_0x4445a5(0x1f0)][_0x4445a5(0x2b7)][_0x4445a5(0xdb)]}:{'start':_0x128154['coreRange']['sourceYStart'],'count':_0x128154[_0x4445a5(0x246)][_0x4445a5(0x26c)],'size':_0x33badb['metadata'][_0x4445a5(0x1d9)][_0x4445a5(0xdb)]};return _0x49cca5>=_0x42c2c6['start']/_0x42c2c6['size']&&_0x49cca5<=(_0x42c2c6[_0x4445a5(0x218)]+_0x42c2c6[_0x4445a5(0xdb)])/_0x42c2c6[_0x4445a5(0x2d2)];},descriptorContainsProfile=(_0x1bac6b,_0x20626b,_0x5d9c06)=>{const _0x54aec9=_0x1d30f8;let _0x4d3885=_0x1bac6b[_0x54aec9(0x246)][_0x54aec9(0x405)]/_0x20626b[_0x54aec9(0x1f0)]['xAxis'][_0x54aec9(0xdb)],_0x2f571c=(_0x1bac6b['coreRange'][_0x54aec9(0x405)]+_0x1bac6b['coreRange']['xCount'])/_0x20626b[_0x54aec9(0x1f0)]['xAxis'][_0x54aec9(0xdb)],_0x522cc9=_0x1bac6b[_0x54aec9(0x246)]['levelStart']/_0x20626b[_0x54aec9(0x1f0)][_0x54aec9(0x2b7)][_0x54aec9(0xdb)],_0x7f20e=(_0x1bac6b[_0x54aec9(0x246)]['levelStart']+_0x1bac6b[_0x54aec9(0x246)][_0x54aec9(0x3ce)])/_0x20626b[_0x54aec9(0x1f0)][_0x54aec9(0x2b7)]['count'],_0x18ae2f=_0x1bac6b['coreRange'][_0x54aec9(0x3c8)]/_0x20626b[_0x54aec9(0x1f0)][_0x54aec9(0x1d9)][_0x54aec9(0xdb)],_0x141767=(_0x1bac6b[_0x54aec9(0x246)][_0x54aec9(0x3c8)]+_0x1bac6b[_0x54aec9(0x246)]['sourceYCount'])/_0x20626b[_0x54aec9(0x1f0)][_0x54aec9(0x1d9)]['count'];return _0x5d9c06['some'](_0x4dc502=>{const _0x15608c=_0x54aec9;let _0x4b5812=volumeAxisValueToNormalized(_0x20626b[_0x15608c(0x1f0)][_0x15608c(0x2b7)],_0x4dc502[_0x15608c(0x20a)][0x0]),_0x3e81f8=volumeAxisValueToNormalized(_0x20626b['metadata'][_0x15608c(0x2b7)],_0x4dc502[_0x15608c(0x20a)][_0x4dc502[_0x15608c(0x20a)][_0x15608c(0x29b)]-0x1]);if(Math[_0x15608c(0x334)](_0x4b5812,_0x3e81f8)<_0x522cc9||Math['min'](_0x4b5812,_0x3e81f8)>_0x7f20e)return!0x1;for(let _0x32ed5c=0x0;_0x32ed5c<_0x4dc502[_0x15608c(0x205)]['length'];_0x32ed5c+=0x2){let _0x426c3b=volumeAxisValueToNormalized(_0x20626b[_0x15608c(0x1f0)][_0x15608c(0xf3)],_0x4dc502['path'][_0x32ed5c]),_0x2434de=volumeAxisValueToNormalized(_0x20626b[_0x15608c(0x1f0)][_0x15608c(0x1d9)],_0x4dc502['path'][_0x32ed5c+0x1]);if(_0x426c3b>=_0x4d3885&&_0x426c3b<=_0x2f571c&&_0x2434de>=_0x18ae2f&&_0x2434de<=_0x141767)return!0x0;}return!0x1;});},descriptorDemandPriority=(_0x156be9,_0x3c5886,_0x11b4cc,_0x4227a1)=>{const _0xa71da4=_0x1d30f8;let _0x2c73ae=_0x11b4cc['preview'];if(_0x2c73ae){let _0x39e59c=_0x2c73ae[_0xa71da4(0x3f3)]==='x'?_0x3c5886[_0xa71da4(0x1f0)][_0xa71da4(0xf3)]:_0x2c73ae[_0xa71da4(0x3f3)]==='y'?_0x3c5886[_0xa71da4(0x1f0)][_0xa71da4(0x2b7)]:_0x3c5886[_0xa71da4(0x1f0)][_0xa71da4(0x1d9)];if(descriptorContainsSlice(_0x156be9,_0x3c5886,_0x2c73ae[_0xa71da4(0x3f3)],volumeAxisValueToNormalized(_0x39e59c,_0x2c73ae[_0xa71da4(0x209)])))return 0x0;}for(let _0x435029 of _0x11b4cc['lockedSlices']){let _0x34e225=_0x435029[_0xa71da4(0x3f3)]==='x'?_0x3c5886[_0xa71da4(0x1f0)][_0xa71da4(0xf3)]:_0x435029['axis']==='y'?_0x3c5886[_0xa71da4(0x1f0)][_0xa71da4(0x2b7)]:_0x3c5886[_0xa71da4(0x1f0)][_0xa71da4(0x1d9)];if(_0x435029['visible']&&descriptorContainsSlice(_0x156be9,_0x3c5886,_0x435029[_0xa71da4(0x3f3)],volumeAxisValueToNormalized(_0x34e225,_0x435029[_0xa71da4(0x209)])))return 0x1;}return descriptorContainsProfile(_0x156be9,_0x3c5886,_0x4227a1)?0x2:0x3;};var VolumeScene=class VolumeScene{[_0x1d30f8(0x3a3)]='webgpu';[_0x1d30f8(0x1d5)];[_0x1d30f8(0x111)];['canvas'];['renderMode'];[_0x1d30f8(0x414)];[_0x1d30f8(0x257)]=[];[_0x1d30f8(0x226)];[_0x1d30f8(0x41d)];[_0x1d30f8(0x2cd)];[_0x1d30f8(0x413)];['colorStops'];[_0x1d30f8(0x1dd)];[_0x1d30f8(0x2a6)];[_0x1d30f8(0x1ce)]=[];[_0x1d30f8(0x394)];['sourceGeneration']=0x0;[_0x1d30f8(0x42b)]=new Set();[_0x1d30f8(0x107)]=new Map();[_0x1d30f8(0x3db)]=new Set();['frameRequest']=0x0;[_0x1d30f8(0x321)]=!0x1;[_0x1d30f8(0x224)];[_0x1d30f8(0x319)];['coordinateSystem'];[_0x1d30f8(0x3e0)];[_0x1d30f8(0x237)];[_0x1d30f8(0x13f)]=_0x1d30f8(0x41b);[_0x1d30f8(0x327)]=0x0;[_0x1d30f8(0x337)]=0x0;[_0x1d30f8(0xdc)];[_0x1d30f8(0x196)]=null;[_0x1d30f8(0x235)];[_0x1d30f8(0x10a)];[_0x1d30f8(0x103)];[_0x1d30f8(0x330)];['interactionStepScale'];[_0x1d30f8(0x120)]=new Set();['renderDirty']=!0x0;[_0x1d30f8(0x406)]=!0x1;[_0x1d30f8(0x21a)]=0x0;[_0x1d30f8(0x2c2)]=0x0;[_0x1d30f8(0x2eb)]=null;[_0x1d30f8(0x1a1)];[_0x1d30f8(0x3e8)];[_0x1d30f8(0x24c)];[_0x1d30f8(0x383)]=0x0;[_0x1d30f8(0x26f)]=0x0;['actualFrameIntervalMilliseconds']=0x0;['requestControllers']=new Set();['sliceInteraction']=null;[_0x1d30f8(0x229)]=null;constructor(_0x3d0af7,_0x2656e3){const _0x2aa3c1=_0x1d30f8;this['renderer']=_0x2656e3,this['canvas']=_0x3d0af7['canvas'],this[_0x2aa3c1(0x414)]=_0x3d0af7[_0x2aa3c1(0x414)]??_0x3d0af7[_0x2aa3c1(0x27f)],this[_0x2aa3c1(0x12e)]=_0x3d0af7[_0x2aa3c1(0x12e)]??'managed',this['source']=_0x3d0af7[_0x2aa3c1(0x226)],this[_0x2aa3c1(0x394)]=_0x3d0af7[_0x2aa3c1(0x394)]??0x0,this['layout']=this['createLayout'](_0x3d0af7),this['descriptors']=createVolumeBrickDescriptors(this[_0x2aa3c1(0x226)][_0x2aa3c1(0x1f0)],this['layout']),this['volumeCamera']=new VolumeCamera({'state':_0x3d0af7['camera']??DEFAULT_CAMERA}),this[_0x2aa3c1(0x413)]=this['createSliceState'](_0x3d0af7);let _0x774a9a=prepareWebgpuVolumeTransfer(_0x3d0af7['colorStops'],_0x3d0af7[_0x2aa3c1(0x2a6)]);if(this['colorStops']=_0x774a9a['colorStops'],this[_0x2aa3c1(0x1dd)]=_0x3d0af7[_0x2aa3c1(0xce)],this[_0x2aa3c1(0x2a6)]=_0x3d0af7[_0x2aa3c1(0x2a6)],this[_0x2aa3c1(0x224)]=_0x3d0af7[_0x2aa3c1(0x115)]??IDENTITY_MATRIX,this[_0x2aa3c1(0x319)]=validatePositiveOption(_0x3d0af7['verticalScale']??0x1,_0x2aa3c1(0x319)),this['coordinateSystem']=_0x3d0af7[_0x2aa3c1(0x3b0)]??_0x2aa3c1(0x393),this[_0x2aa3c1(0x3b0)]===_0x2aa3c1(0x23d)&&_0x3d0af7[_0x2aa3c1(0x115)])throw Error(_0x2aa3c1(0x33e));this[_0x2aa3c1(0x3e0)]=_0x3d0af7[_0x2aa3c1(0x3e0)]??null,this[_0x2aa3c1(0x237)]=_0x3d0af7[_0x2aa3c1(0x237)]??'auto',this[_0x2aa3c1(0x235)]=_0x3d0af7['navigationMode']??_0x2aa3c1(0x1c3),this['pixelRatioCap']=validatePositiveOption(_0x3d0af7[_0x2aa3c1(0x10a)]??0x2,_0x2aa3c1(0x10a)),this[_0x2aa3c1(0x103)]=validatePositiveOption(_0x3d0af7[_0x2aa3c1(0x103)]??0x1,'renderScale'),this['interactionRenderScale']=validatePositiveOption(_0x3d0af7[_0x2aa3c1(0x330)]??0.6,_0x2aa3c1(0x330)),this[_0x2aa3c1(0x1cb)]=validatePositiveOption(_0x3d0af7[_0x2aa3c1(0x1cb)]??0x1,_0x2aa3c1(0x1cb)),this[_0x2aa3c1(0xdc)]=_0x3d0af7[_0x2aa3c1(0xdc)]??_0x2aa3c1(0x301),this[_0x2aa3c1(0x1a1)]=_0x3d0af7['sliceInteraction']?.[_0x2aa3c1(0x274)]??_0x2aa3c1(0xdf),this['slicePlateColor']=_0x3d0af7['sliceInteraction']?.['plateColor'],this[_0x2aa3c1(0x24c)]=_0x3d0af7['sliceInteraction']?.[_0x2aa3c1(0x24c)],this['renderer'][_0x2aa3c1(0x125)](()=>this[_0x2aa3c1(0x31a)]()),this[_0x2aa3c1(0x1d5)]['setTransfer'](_0x774a9a[_0x2aa3c1(0xce)],_0x774a9a[_0x2aa3c1(0x2a6)]);let _0x22c892=_0x3d0af7[_0x2aa3c1(0x3c9)]??this[_0x2aa3c1(0x3b0)]===_0x2aa3c1(0x393);this[_0x2aa3c1(0x1d5)][_0x2aa3c1(0x2ce)](_0x22c892?[createBoundsMesh(),createAxesMesh()]:[]),this[_0x2aa3c1(0x1d5)]['update']({'renderMode':_0x3d0af7[_0x2aa3c1(0x426)]??_0x2aa3c1(0x41e),'colorMode':this[_0x2aa3c1(0xdc)],'opacity':_0x3d0af7['opacity']??0.3,'densityScale':_0x3d0af7['densityScale']??0x1,'stepLength':this[_0x2aa3c1(0x164)](),'volumeDimFactor':this['sliceState'][_0x2aa3c1(0x242)]}),this[_0x2aa3c1(0x373)](),this[_0x2aa3c1(0x2f6)](),this[_0x2aa3c1(0x369)](),this[_0x2aa3c1(0x1d2)](_0x3d0af7),this[_0x2aa3c1(0x3ab)]();}static async[_0x1d30f8(0x21d)](_0xc69b82){const _0x4bfcf4=_0x1d30f8;if(validateVolumeSource(_0xc69b82['source']),validateVolumeTimeIndex(_0xc69b82[_0x4bfcf4(0x226)][_0x4bfcf4(0x1f0)],_0xc69b82[_0x4bfcf4(0x394)]??0x0),(_0xc69b82[_0x4bfcf4(0x420)]?.['halo']??0x1)!==0x1)throw Error(_0x4bfcf4(0x3aa));let _0x5d7e4a=_0xc69b82['chunk']?.[_0x4bfcf4(0x3d9)]??0x20000000,_0x1081e4=new WebgpuVolumeSceneRenderer({'memoryTargetBytes':_0x5d7e4a,'memoryHardLimitBytes':_0xc69b82[_0x4bfcf4(0x420)]?.[_0x4bfcf4(0x176)]??_0x5d7e4a});await _0x1081e4[_0x4bfcf4(0x1f2)](_0xc69b82[_0x4bfcf4(0x27f)]);let _0xe1291f=new VolumeScene(_0xc69b82,_0x1081e4);return _0xe1291f[_0x4bfcf4(0x1e3)](),_0xe1291f[_0x4bfcf4(0x268)](),_0xe1291f[_0x4bfcf4(0x12e)]===_0x4bfcf4(0x3cf)&&_0xe1291f['requestRender'](),_0xe1291f;}get['camera'](){const _0x167cf5=_0x1d30f8;return this[_0x167cf5(0x111)][_0x167cf5(0x239)];}get['lockedSlices'](){const _0x40ae6c=_0x1d30f8;return this[_0x40ae6c(0x413)][_0x40ae6c(0x104)];}get['statistics'](){const _0x16c160=_0x1d30f8;let _0x1795d4=this[_0x16c160(0x12e)]===_0x16c160(0x33a)||this[_0x16c160(0x30a)]()||performance[_0x16c160(0x1d6)]()-this[_0x16c160(0x383)]<=0xfa?this['actualFrameIntervalMilliseconds']:0x0;return{...this[_0x16c160(0x1d5)][_0x16c160(0xd0)],'pendingBrickCount':this['pendingKeys'][_0x16c160(0x2d2)],'brickScheduleCount':this[_0x16c160(0x21a)],'brickSortCount':this[_0x16c160(0x2c2)],'actualFrameIntervalMilliseconds':_0x1795d4,'estimatedFps':_0x1795d4>0x0?0x3e8/_0x1795d4:0x0,'effectiveQuality':this[_0x16c160(0x2fe)](),'effectiveRenderScale':this[_0x16c160(0x3d1)](),'interactionKind':this[_0x16c160(0x1d3)]()};}[_0x1d30f8(0x174)](_0x4014c){const _0x258b47=_0x1d30f8;_0x4014c[_0x258b47(0x33f)]&&this['setCamera'](_0x4014c[_0x258b47(0x33f)]),_0x4014c[_0x258b47(0x115)]&&(this[_0x258b47(0x224)]=[..._0x4014c[_0x258b47(0x115)]]),_0x4014c[_0x258b47(0x319)]!==void 0x0&&(this[_0x258b47(0x319)]=validatePositiveOption(_0x4014c['verticalScale'],_0x258b47(0x319))),_0x4014c['clipBox']!==void 0x0&&(this[_0x258b47(0x3e0)]=_0x4014c[_0x258b47(0x3e0)]),_0x4014c[_0x258b47(0x237)]&&(this[_0x258b47(0x237)]=_0x4014c[_0x258b47(0x237)]),_0x4014c[_0x258b47(0x235)]&&(this[_0x258b47(0x235)]=_0x4014c[_0x258b47(0x235)]);let _0x1c8ef3=!0x1;if(_0x4014c[_0x258b47(0x10a)]!==void 0x0&&(this[_0x258b47(0x10a)]=validatePositiveOption(_0x4014c[_0x258b47(0x10a)],_0x258b47(0x10a)),_0x1c8ef3=!0x0),_0x4014c['renderScale']!==void 0x0&&(this[_0x258b47(0x103)]=validatePositiveOption(_0x4014c[_0x258b47(0x103)],_0x258b47(0x103)),_0x1c8ef3=!0x0),_0x4014c['interactionRenderScale']!==void 0x0&&(this[_0x258b47(0x330)]=validatePositiveOption(_0x4014c[_0x258b47(0x330)],_0x258b47(0x330)),_0x1c8ef3=this[_0x258b47(0x30a)]()),_0x4014c['interactionStepScale']!==void 0x0&&(this[_0x258b47(0x1cb)]=validatePositiveOption(_0x4014c['interactionStepScale'],_0x258b47(0x1cb))),_0x4014c['colorMode']&&(this[_0x258b47(0xdc)]=_0x4014c[_0x258b47(0xdc)]),_0x4014c[_0x258b47(0xce)]||_0x4014c[_0x258b47(0x2a6)]){let _0x36c4f9=prepareWebgpuVolumeTransfer(_0x4014c['colorStops']??this[_0x258b47(0x1dd)],_0x4014c['opacityStops']??this[_0x258b47(0x2a6)]);this[_0x258b47(0xce)]=_0x36c4f9['colorStops'],this['colorInputs']=_0x4014c[_0x258b47(0xce)]??this[_0x258b47(0x1dd)],this[_0x258b47(0x2a6)]=_0x4014c['opacityStops']??this['opacityStops'],this[_0x258b47(0x1d5)][_0x258b47(0x290)](_0x36c4f9[_0x258b47(0xce)],_0x36c4f9['opacityStops']),this['rebuildProfiles']();}_0x4014c[_0x258b47(0xdc)]&&!_0x4014c['colorStops']&&!_0x4014c[_0x258b47(0x2a6)]&&this[_0x258b47(0x2fd)](),this[_0x258b47(0x1d5)][_0x258b47(0x174)]({'renderMode':_0x4014c['mode'],'colorMode':_0x4014c[_0x258b47(0xdc)],'opacity':_0x4014c[_0x258b47(0x251)],'densityScale':_0x4014c[_0x258b47(0xe5)],'stepLength':this[_0x258b47(0x164)]()}),this[_0x258b47(0x2f6)](),_0x1c8ef3&&this['resize'](),this[_0x258b47(0x424)]();}[_0x1d30f8(0x186)](_0xbd29ea){const _0x4d0e9b=_0x1d30f8;this[_0x4d0e9b(0x111)][_0x4d0e9b(0x169)](_0xbd29ea),this[_0x4d0e9b(0x3f2)](),this[_0x4d0e9b(0x424)]();}[_0x1d30f8(0x16b)](_0x33de3d){const _0xbfe7d1=_0x1d30f8;validateVolumeTimeIndex(this[_0xbfe7d1(0x226)][_0xbfe7d1(0x1f0)],_0x33de3d),_0x33de3d!==this['timeIndex']&&(this[_0xbfe7d1(0x394)]=_0x33de3d,this['resetBrickRequests']());}['setSource'](_0xcd32ef){const _0x4343ed=_0x1d30f8;validateVolumeSource(_0xcd32ef),this[_0x4343ed(0x226)]=_0xcd32ef,this[_0x4343ed(0x394)]=Math[_0x4343ed(0xcc)](this['timeIndex'],_0xcd32ef[_0x4343ed(0x1f0)][_0x4343ed(0x26b)]-0x1),this[_0x4343ed(0x41d)]=createVolumeBrickLayout(_0xcd32ef[_0x4343ed(0x1f0)],this[_0x4343ed(0x41d)][_0x4343ed(0x39e)]),this[_0x4343ed(0x2cd)]=createVolumeBrickDescriptors(_0xcd32ef['metadata'],this['layout']),this[_0x4343ed(0x413)][_0x4343ed(0x2ce)](_0xcd32ef[_0x4343ed(0x1f0)]),this[_0x4343ed(0x373)](),this[_0x4343ed(0x2f6)](),this[_0x4343ed(0x1d8)](),this[_0x4343ed(0x2fd)](),this[_0x4343ed(0x424)]();}[_0x1d30f8(0x2ea)](_0x4ad3d5){const _0x5edb1a=_0x1d30f8;this[_0x5edb1a(0x1ce)]=_0x4ad3d5,this[_0x5edb1a(0x2fd)](),this[_0x5edb1a(0x3f2)](),this[_0x5edb1a(0x424)]();}['setSliceTool'](_0x1ba1c2){const _0x8a00ef=_0x1d30f8;this[_0x8a00ef(0x413)][_0x8a00ef(0x167)](_0x1ba1c2);}[_0x1d30f8(0x11b)](_0x53541a){const _0x24e44c=_0x1d30f8;if(this[_0x24e44c(0x321)]||this[_0x24e44c(0x120)]['has'](_0x53541a))return;let _0x39e79b=!this[_0x24e44c(0x30a)]();this[_0x24e44c(0x120)][_0x24e44c(0x366)](_0x53541a),_0x39e79b&&(this[_0x24e44c(0x26f)]=0x0,this['resize']());}[_0x1d30f8(0x349)](_0x489bed){const _0x547714=_0x1d30f8;this[_0x547714(0x321)]||!this[_0x547714(0x120)][_0x547714(0xd5)](_0x489bed)||this['isInteracting']()||(this[_0x547714(0x26f)]=0x0,this['resize']());}[_0x1d30f8(0x363)](_0x59341a,_0x54ef53){const _0x4c7078=_0x1d30f8;this[_0x4c7078(0x413)][_0x4c7078(0x13c)](_0x59341a,_0x54ef53);let _0x1e97f1=this[_0x4c7078(0x413)][_0x4c7078(0x22b)]();if(!_0x1e97f1)throw Error(_0x4c7078(0x367));return _0x1e97f1;}['updateSlice'](_0x45873e,_0xa63f0d){const _0x49cdff=_0x1d30f8;this[_0x49cdff(0x413)][_0x49cdff(0x333)](_0x45873e,_0xa63f0d);}[_0x1d30f8(0x1ac)](_0x1a52db){const _0x1ab8aa=_0x1d30f8;this[_0x1ab8aa(0x413)]['removeSlice'](_0x1a52db);}['clearLockedSlices'](){const _0x351e06=_0x1d30f8;this[_0x351e06(0x413)][_0x351e06(0x180)]();}[_0x1d30f8(0x1e3)](){const _0xeaaf64=_0x1d30f8;let _0x4eacf3=Math[_0xeaaf64(0xcc)](window[_0xeaaf64(0x412)]||0x1,this[_0xeaaf64(0x10a)])*this['getEffectiveRenderScale'](),_0x5ba925=Math['max'](0x1,Math[_0xeaaf64(0x3e4)](this[_0xeaaf64(0x27f)]['clientWidth']*_0x4eacf3||this[_0xeaaf64(0x27f)][_0xeaaf64(0x238)]||0x1)),_0x3de7f3=Math[_0xeaaf64(0x334)](0x1,Math[_0xeaaf64(0x3e4)](this[_0xeaaf64(0x27f)][_0xeaaf64(0x3cd)]*_0x4eacf3||this[_0xeaaf64(0x27f)][_0xeaaf64(0x26d)]||0x1));this[_0xeaaf64(0x111)][_0xeaaf64(0x10f)](_0x5ba925/_0x3de7f3),(this[_0xeaaf64(0x27f)][_0xeaaf64(0x238)]!==_0x5ba925||this[_0xeaaf64(0x27f)]['height']!==_0x3de7f3)&&this[_0xeaaf64(0x1d5)][_0xeaaf64(0x1e3)](_0x5ba925,_0x3de7f3),this['requestRender']();}[_0x1d30f8(0x166)](){const _0x5e06cf=_0x1d30f8;if(this['destroyed'])return;this[_0x5e06cf(0x2b2)](),this['flushBrickSchedule']();let _0x21f57d=this['volumeCamera']['matrices'];if(this[_0x5e06cf(0x1d5)][_0x5e06cf(0x186)]({'viewProjection':Array['from'](_0x21f57d['viewProjection']),'inverseViewProjection':Array[_0x5e06cf(0x3d2)](_0x21f57d[_0x5e06cf(0xfc)]),'cameraPosition':this[_0x5e06cf(0x111)][_0x5e06cf(0x239)][_0x5e06cf(0x209)]}),this['renderer'][_0x5e06cf(0x174)]({'stepLength':this[_0x5e06cf(0x164)]()}),!this[_0x5e06cf(0x1d5)][_0x5e06cf(0x166)]()){this[_0x5e06cf(0x37a)]=!0x0;return;}this['renderDirty']=!0x1,this[_0x5e06cf(0x30e)](performance['now']()),this[_0x5e06cf(0x229)]?.['update']();}[_0x1d30f8(0x151)](){const _0x4a4619=_0x1d30f8;if(this['destroyed'])return Promise[_0x4a4619(0x280)](Error(_0x4a4619(0x318)));this['flushSliceState'](),this['flushBrickSchedule']();let _0x4626b2=this[_0x4a4619(0x111)][_0x4a4619(0x1ef)];return this[_0x4a4619(0x1d5)][_0x4a4619(0x186)]({'viewProjection':Array[_0x4a4619(0x3d2)](_0x4626b2['viewProjection']),'inverseViewProjection':Array[_0x4a4619(0x3d2)](_0x4626b2[_0x4a4619(0xfc)]),'cameraPosition':this[_0x4a4619(0x111)][_0x4a4619(0x239)]['position']}),this[_0x4a4619(0x1d5)][_0x4a4619(0x151)]();}['destroy'](){const _0x155d79=_0x1d30f8;if(!this[_0x155d79(0x321)]){this[_0x155d79(0x321)]=!0x0,this[_0x155d79(0x38f)]+=0x1;for(let _0x484a4f of this[_0x155d79(0x1cf)])_0x484a4f[_0x155d79(0x2d6)]();this[_0x155d79(0x1cf)][_0x155d79(0x12f)](),cancelAnimationFrame(this['frameRequest']),this[_0x155d79(0x1d5)][_0x155d79(0x125)](null),this[_0x155d79(0x257)][_0x155d79(0x27e)](0x0)[_0x155d79(0x265)](_0x197177=>_0x197177()),this[_0x155d79(0x1d5)]['destroy'](),this[_0x155d79(0x243)]?.[_0x155d79(0x377)](),this[_0x155d79(0x229)]?.[_0x155d79(0x377)](),this['loadedKeys']['clear'](),this['pendingKeys'][_0x155d79(0x12f)](),this[_0x155d79(0x3db)][_0x155d79(0x12f)](),this[_0x155d79(0x120)][_0x155d79(0x12f)](),this[_0x155d79(0x2eb)]=null;}}['createLayout'](_0x1b8008){const _0x464d5c=_0x1d30f8;return createVolumeBrickLayout(_0x1b8008[_0x464d5c(0x226)][_0x464d5c(0x1f0)],{'width':_0x1b8008[_0x464d5c(0x420)]?.[_0x464d5c(0x238)],'height':_0x1b8008[_0x464d5c(0x420)]?.[_0x464d5c(0x26d)],'depth':_0x1b8008[_0x464d5c(0x420)]?.[_0x464d5c(0x3c4)],'halo':_0x1b8008[_0x464d5c(0x420)]?.[_0x464d5c(0x15b)]});}[_0x1d30f8(0x2fe)](){const _0x2eaf9b=_0x1d30f8;return this[_0x2eaf9b(0x237)]===_0x2eaf9b(0x19c)?this['autoQuality']:this[_0x2eaf9b(0x237)];}[_0x1d30f8(0x164)](){const _0x1a3227=_0x1d30f8;let _0x1566bc=qualityStepLength(this[_0x1a3227(0x2fe)]());return(this['coordinateSystem']===_0x1a3227(0x23d)?_0x1566bc*0.05:_0x1566bc)*(this[_0x1a3227(0x30a)]()?this[_0x1a3227(0x1cb)]:0x1);}[_0x1d30f8(0x30a)](){const _0x407c82=_0x1d30f8;return this['activeInteractions'][_0x407c82(0x2d2)]>0x0;}[_0x1d30f8(0x1d3)](){const _0x1bd712=_0x1d30f8;return this['activeInteractions'][_0x1bd712(0x2d2)]===0x0?_0x1bd712(0x29c):this['activeInteractions']['size']>0x1?_0x1bd712(0x1c7):this[_0x1bd712(0x120)][_0x1bd712(0x270)]()['next']()['value']??'idle';}[_0x1d30f8(0x3d1)](){const _0x35ab38=_0x1d30f8;return this['renderScale']*(this[_0x35ab38(0x30a)]()?this[_0x35ab38(0x330)]:0x1);}['recordFrameInterval'](_0x16ab48){const _0x128391=_0x1d30f8;if(this[_0x128391(0x383)]=_0x16ab48,!(this[_0x128391(0x12e)]===_0x128391(0x33a)||this[_0x128391(0x30a)]())){this['lastTimingFrameTimestamp']=0x0;return;}if(this[_0x128391(0x26f)]>0x0){let _0x3067c3=_0x16ab48-this[_0x128391(0x26f)];_0x3067c3>0x0&&_0x3067c3<=0xfa&&(this[_0x128391(0x23e)]=this[_0x128391(0x23e)]===0x0?_0x3067c3:this['actualFrameIntervalMilliseconds']*0.8+_0x3067c3*0.2,this['updateAutoQuality'](_0x3067c3));}this[_0x128391(0x26f)]=_0x16ab48;}['updateAutoQuality'](_0x5be2ac){const _0x2911a6=_0x1d30f8;if(this['quality']!==_0x2911a6(0x19c)||(this[_0x2911a6(0x327)]+=0x1,this[_0x2911a6(0x337)]+=_0x5be2ac,this['autoFrameCount']<0x1e))return;let _0x51578a=this[_0x2911a6(0x337)]/this['autoFrameCount'];if(this[_0x2911a6(0x327)]=0x0,this[_0x2911a6(0x337)]=0x0,this[_0x2911a6(0x30a)]()&&_0x51578a<0xe)return;let _0xf12749=nextAutoQuality(this[_0x2911a6(0x13f)],_0x51578a);_0xf12749!==this[_0x2911a6(0x13f)]&&(this[_0x2911a6(0x13f)]=_0xf12749,this[_0x2911a6(0x3f2)](),this[_0x2911a6(0x424)]());}['createSliceState'](_0x530b7c){const _0x33c520=_0x1d30f8;return new SliceState(_0x530b7c[_0x33c520(0x226)][_0x33c520(0x1f0)],{'volumeDimFactor':_0x530b7c[_0x33c520(0x243)]?.[_0x33c520(0x242)],'depthMode':_0x530b7c[_0x33c520(0x243)]?.[_0x33c520(0x274)],'maxLockedSlices':_0x530b7c['sliceInteraction']?.['maxLockedSlices'],'onLimitReached':_0x226824=>_0x530b7c['sliceInteraction']?.[_0x33c520(0x100)]?.(Error(_0x33c520(0x24b)+_0x226824+'.\x20最大锁定切面数量为\x20'+_0x226824+'。'))});}[_0x1d30f8(0x369)](){const _0x4b6f4c=_0x1d30f8;let _0x1ac244=this[_0x4b6f4c(0x413)][_0x4b6f4c(0xf6)](_0x413b5f=>{const _0x27eab6=_0x4b6f4c;this[_0x27eab6(0x2eb)]=_0x413b5f,this[_0x27eab6(0x424)]();});this[_0x4b6f4c(0x257)]['push'](_0x1ac244);}[_0x1d30f8(0x2b2)](){const _0x3ca923=_0x1d30f8;let _0x11d000=this['pendingSliceSnapshot'];if(!_0x11d000)return;this['pendingSliceSnapshot']=null;let _0x317b51=[];if(_0x11d000[_0x3ca923(0xed)]){let _0x54f5ff=_0x11d000[_0x3ca923(0xed)]['axis']==='x'?this['source'][_0x3ca923(0x1f0)][_0x3ca923(0xf3)]:_0x11d000[_0x3ca923(0xed)]['axis']==='y'?this[_0x3ca923(0x226)][_0x3ca923(0x1f0)]['yAxis']:this['source'][_0x3ca923(0x1f0)][_0x3ca923(0x1d9)];_0x317b51['push']({'id':'volume-slice-preview','axis':_0x11d000[_0x3ca923(0xed)]['axis'],'position':clamp01(volumeAxisValueToNormalized(_0x54f5ff,_0x11d000[_0x3ca923(0xed)][_0x3ca923(0x209)])),'depthMode':this[_0x3ca923(0x1a1)],'visible':!0x0,'opacity':0.72,'plateColor':this[_0x3ca923(0x3e8)]});}for(let _0x79d151 of _0x11d000[_0x3ca923(0x104)]){let _0x5336ce=_0x79d151[_0x3ca923(0x3f3)]==='x'?this['source'][_0x3ca923(0x1f0)][_0x3ca923(0xf3)]:_0x79d151[_0x3ca923(0x3f3)]==='y'?this['source'][_0x3ca923(0x1f0)][_0x3ca923(0x2b7)]:this[_0x3ca923(0x226)][_0x3ca923(0x1f0)][_0x3ca923(0x1d9)];_0x317b51[_0x3ca923(0x40e)]({..._0x79d151,'position':clamp01(volumeAxisValueToNormalized(_0x5336ce,_0x79d151['position'])),'opacity':0x1,'plateColor':this['slicePlateColor']});}this['renderer'][_0x3ca923(0x160)](_0x317b51),this[_0x3ca923(0x1d5)]['update']({'volumeDimFactor':_0x11d000['preview']||_0x11d000['lockedSlices'][_0x3ca923(0x350)](_0x1a08cb=>_0x1a08cb[_0x3ca923(0x35c)])?_0x11d000[_0x3ca923(0x242)]:0x1}),this[_0x3ca923(0x24c)]?.(_0x11d000['lockedSlices']),this['brickScheduleDirty']=!0x0;}['bindSliceInteraction'](_0x431273){const _0x247e56=_0x1d30f8;let _0x276e7=()=>({'viewProjectionMatrix':this[_0x247e56(0x111)]['matrices'][_0x247e56(0x1a6)],'modelMatrix':composeVolumeModelMatrix(this[_0x247e56(0x224)],this[_0x247e56(0x319)]),'viewportWidth':Math[_0x247e56(0x334)](0x1,this[_0x247e56(0x27f)]['clientWidth']),'viewportHeight':Math[_0x247e56(0x334)](0x1,this[_0x247e56(0x27f)][_0x247e56(0x3cd)])});this[_0x247e56(0x243)]=new SliceInteractionController(this[_0x247e56(0x414)],this[_0x247e56(0x413)],_0x276e7,{'hitTolerancePixels':_0x431273['sliceInteraction']?.['hitRadius'],'onInteractionStart':()=>this[_0x247e56(0x11b)](_0x247e56(0x210)),'onInteractionEnd':()=>this[_0x247e56(0x349)](_0x247e56(0x210))}),this['sliceInteraction'][_0x247e56(0x1f2)](),_0x431273[_0x247e56(0x3e7)]&&(this[_0x247e56(0x229)]=new SliceMarkerOverlay(_0x431273['overlayContainer'],this[_0x247e56(0x413)],_0x276e7,{'interactionController':this[_0x247e56(0x243)]}));}['bindControls'](){const _0x1820f8=_0x1d30f8;let _0x1b856e=_0x462115=>{const _0x5de8d6=_0x4af7;_0x462115['button']!==0x0&&_0x462115[_0x5de8d6(0x2e8)]!==0x2||(this[_0x5de8d6(0x196)]={'id':_0x462115[_0x5de8d6(0x12d)],'x':_0x462115[_0x5de8d6(0x2a8)],'y':_0x462115[_0x5de8d6(0x36e)],'pan':_0x462115[_0x5de8d6(0x2e8)]===0x2||_0x462115['pointerType']!=='mouse'&&this[_0x5de8d6(0x235)]===_0x5de8d6(0x236)},this[_0x5de8d6(0x11b)](_0x5de8d6(0x33f)),this[_0x5de8d6(0x414)][_0x5de8d6(0x20e)]?.(_0x462115['pointerId']),_0x462115['preventDefault']());},_0x368ad8=_0x1320cb=>{const _0x2bee0d=_0x4af7;if(!this['pointer']||this[_0x2bee0d(0x196)]['id']!==_0x1320cb[_0x2bee0d(0x12d)])return;let _0x458b81=_0x1320cb[_0x2bee0d(0x2a8)]-this[_0x2bee0d(0x196)]['x'],_0x1265b0=_0x1320cb['clientY']-this[_0x2bee0d(0x196)]['y'];this['pointer']['x']=_0x1320cb[_0x2bee0d(0x2a8)],this[_0x2bee0d(0x196)]['y']=_0x1320cb['clientY'],this['pointer'][_0x2bee0d(0x236)]?this['volumeCamera'][_0x2bee0d(0x236)](_0x458b81,_0x1265b0,this['canvas'][_0x2bee0d(0x3cd)]):this[_0x2bee0d(0x111)][_0x2bee0d(0x1c3)](_0x458b81,_0x1265b0),this['requestBrickSchedule'](),this['requestRender']();},_0x4789ac=_0x59469a=>{const _0x50bd4a=_0x4af7;this[_0x50bd4a(0x196)]?.['id']===_0x59469a['pointerId']&&(this[_0x50bd4a(0x196)]=null,this[_0x50bd4a(0x349)](_0x50bd4a(0x33f)));},_0x18d509=_0x83aeca=>{const _0x284d51=_0x4af7;_0x83aeca[_0x284d51(0x124)](),this[_0x284d51(0x111)][_0x284d51(0x233)](_0x83aeca[_0x284d51(0x1fc)]),this[_0x284d51(0x3f2)](),this['requestRender']();},_0x16e84b=_0x482c18=>_0x482c18[_0x1820f8(0x124)]();this[_0x1820f8(0x414)][_0x1820f8(0x266)](_0x1820f8(0x1a2),_0x1b856e),this[_0x1820f8(0x414)][_0x1820f8(0x266)](_0x1820f8(0x3b3),_0x368ad8),this[_0x1820f8(0x414)][_0x1820f8(0x266)](_0x1820f8(0x145),_0x4789ac),this['interactionElement']['addEventListener']('pointercancel',_0x4789ac),this[_0x1820f8(0x414)][_0x1820f8(0x266)](_0x1820f8(0x121),_0x18d509,{'passive':!0x1}),this['interactionElement'][_0x1820f8(0x266)](_0x1820f8(0x1a9),_0x16e84b),this['eventDisposers'][_0x1820f8(0x40e)](()=>this['interactionElement'][_0x1820f8(0x428)](_0x1820f8(0x1a2),_0x1b856e),()=>this['interactionElement'][_0x1820f8(0x428)](_0x1820f8(0x3b3),_0x368ad8),()=>this[_0x1820f8(0x414)]['removeEventListener'](_0x1820f8(0x145),_0x4789ac),()=>this['interactionElement'][_0x1820f8(0x428)](_0x1820f8(0xf1),_0x4789ac),()=>this[_0x1820f8(0x414)][_0x1820f8(0x428)](_0x1820f8(0x121),_0x18d509),()=>this[_0x1820f8(0x414)][_0x1820f8(0x428)](_0x1820f8(0x1a9),_0x16e84b));}[_0x1d30f8(0x373)](){const _0x36fd31=_0x1d30f8;this[_0x36fd31(0x1d5)][_0x36fd31(0x173)]({'xAxis':this[_0x36fd31(0x226)][_0x36fd31(0x1f0)][_0x36fd31(0xf3)],'yAxis':this['source'][_0x36fd31(0x1f0)][_0x36fd31(0x2b7)],'zAxis':this[_0x36fd31(0x226)][_0x36fd31(0x1f0)][_0x36fd31(0x1d9)],'brickWidth':this['layout'][_0x36fd31(0x39e)]['width'],'brickHeight':this[_0x36fd31(0x41d)][_0x36fd31(0x39e)][_0x36fd31(0x26d)],'brickDepth':this[_0x36fd31(0x41d)]['shape'][_0x36fd31(0x3c4)],'halo':0x1,'noData':this[_0x36fd31(0x226)][_0x36fd31(0x1f0)][_0x36fd31(0x32e)]});}[_0x1d30f8(0x2f6)](){const _0x19afce=_0x1d30f8;if(this[_0x19afce(0x3b0)]===_0x19afce(0x23d)){let _0x4ce8c1=createGeographicVolumeLayout(this[_0x19afce(0x226)][_0x19afce(0x1f0)],this[_0x19afce(0x319)]);this['renderer']['update']({'modelMatrix':_0x4ce8c1[_0x19afce(0x28d)],'inverseModelMatrix':Array['from'](invertMatrix(_0x4ce8c1[_0x19afce(0x28d)])),'geographicTransform':_0x4ce8c1[_0x19afce(0xef)],'clipMinimum':[0x0,0x0,0x0],'clipMaximum':[0x1,0x1,0x1]}),this[_0x19afce(0x424)]();return;}let _0x224e76=composeVolumeModelMatrix(this[_0x19afce(0x224)],this[_0x19afce(0x319)]),_0x55920e=normalizeClipBox(this['source'],this[_0x19afce(0x3e0)]);this['renderer'][_0x19afce(0x174)]({'modelMatrix':Array[_0x19afce(0x3d2)](_0x224e76),'inverseModelMatrix':Array[_0x19afce(0x3d2)](invertMatrix(_0x224e76)),'geographicTransform':null,'clipMinimum':_0x55920e[_0x19afce(0x20f)],'clipMaximum':_0x55920e['maximum']}),this[_0x19afce(0x424)]();}['rebuildProfiles'](){const _0x2340ba=_0x1d30f8;let _0x571606=this[_0x2340ba(0x1ce)][_0x2340ba(0x2f9)](_0x102e6d=>createProfileSceneMesh(buildVolumeRouteProfileMesh(_0x102e6d,this['source'][_0x2340ba(0x1f0)]),this[_0x2340ba(0xce)],this[_0x2340ba(0x2a6)],this[_0x2340ba(0xdc)]));this[_0x2340ba(0x1d5)][_0x2340ba(0x320)](_0x571606),this[_0x2340ba(0x424)]();}[_0x1d30f8(0x1d8)](){const _0x5197ef=_0x1d30f8;this['sourceGeneration']+=0x1;for(let _0x2391c0 of this[_0x5197ef(0x1cf)])_0x2391c0[_0x5197ef(0x2d6)]();this[_0x5197ef(0x1cf)][_0x5197ef(0x12f)](),this['loadedKeys'][_0x5197ef(0x12f)](),this[_0x5197ef(0x107)][_0x5197ef(0x12f)](),this[_0x5197ef(0x3db)][_0x5197ef(0x12f)](),this[_0x5197ef(0x373)](),this['scheduleBricks']();}['requestBrickSchedule'](){const _0x1b3d7b=_0x1d30f8;this[_0x1b3d7b(0x406)]=!0x0,this['requestRender']();}[_0x1d30f8(0x155)](){const _0x59aa3c=_0x1d30f8;this[_0x59aa3c(0x406)]&&(this['brickScheduleDirty']=!0x1,this[_0x59aa3c(0x268)]());}[_0x1d30f8(0x268)](){const _0x528298=_0x1d30f8;if(this[_0x528298(0x321)])return;this['brickScheduleDirty']=!0x1,this[_0x528298(0x21a)]+=0x1;let _0x125421=this[_0x528298(0x1d5)]['statistics'][_0x528298(0x3fb)];if(_0x125421<=0x0)return;let _0x2751a0=_0x125421>=this[_0x528298(0x2cd)][_0x528298(0x29b)];if(_0x2751a0&&this[_0x528298(0x3db)]['size']===this[_0x528298(0x2cd)][_0x528298(0x29b)]&&this['loadedKeys'][_0x528298(0x2d2)]===this[_0x528298(0x2cd)][_0x528298(0x29b)]&&this[_0x528298(0x107)][_0x528298(0x2d2)]===0x0)return;let _0x2779f9;_0x2751a0?_0x2779f9=this['descriptors']:(this[_0x528298(0x2c2)]+=0x1,_0x2779f9=[...this[_0x528298(0x2cd)]][_0x528298(0x2c7)]((_0x23ee0f,_0x43cb3a)=>descriptorDemandPriority(_0x23ee0f,this[_0x528298(0x226)],this['sliceState'],this[_0x528298(0x1ce)])-descriptorDemandPriority(_0x43cb3a,this[_0x528298(0x226)],this[_0x528298(0x413)],this[_0x528298(0x1ce)])||descriptorDistance(_0x23ee0f,this[_0x528298(0x41d)],this[_0x528298(0x111)]['state'])-descriptorDistance(_0x43cb3a,this[_0x528298(0x41d)],this[_0x528298(0x111)]['state']))['slice'](0x0,_0x125421));let _0x5db06e=new Set(_0x2779f9[_0x528298(0x2f9)](_0x30d914=>_0x30d914['key']));this['desiredKeys']=_0x5db06e,_0x2751a0||this[_0x528298(0x1d5)][_0x528298(0x285)](_0x2779f9[_0x528298(0x1ad)](_0x22f7c2=>this[_0x528298(0x42b)]['has'](_0x22f7c2[_0x528298(0xf0)]))[_0x528298(0x2f9)](_0x392cc8=>descriptorLogicalIndex(_0x392cc8,this[_0x528298(0x41d)])));for(let _0x3d7eba of this[_0x528298(0x42b)])_0x5db06e[_0x528298(0x314)](_0x3d7eba)||this['loadedKeys']['delete'](_0x3d7eba);let _0x917190=Math[_0x528298(0x334)](0x0,qualityUploadCount(this[_0x528298(0x2fe)]())-this[_0x528298(0x107)][_0x528298(0x2d2)]),_0x56e181=_0x2779f9['filter'](_0x4a581d=>!this['loadedKeys']['has'](_0x4a581d[_0x528298(0xf0)])&&!this['pendingKeys']['has'](_0x4a581d['key']))['slice'](0x0,_0x917190);for(let _0x318b87 of _0x56e181)this[_0x528298(0x338)](_0x318b87);}[_0x1d30f8(0x338)](_0x54a9ce){const _0x3d17bf=_0x1d30f8;let _0x4b77e4=this[_0x3d17bf(0x38f)],_0x22945b=this[_0x3d17bf(0x226)],_0x464fcd=this[_0x3d17bf(0x394)],_0x462b48=new AbortController();this[_0x3d17bf(0x1cf)][_0x3d17bf(0x366)](_0x462b48),this['pendingKeys'][_0x3d17bf(0x1a8)](_0x54a9ce[_0x3d17bf(0xf0)],_0x4b77e4),Promise[_0x3d17bf(0x2af)](_0x22945b[_0x3d17bf(0x14d)](_0x464fcd,_0x54a9ce[_0x3d17bf(0x27c)],_0x462b48['signal']))[_0x3d17bf(0x37d)](async _0x658d27=>{const _0x2d79bb=_0x3d17bf;if(this[_0x2d79bb(0x321)]||_0x4b77e4!==this[_0x2d79bb(0x38f)]||_0x22945b!==this['source']||_0x464fcd!==this[_0x2d79bb(0x394)]||!this[_0x2d79bb(0x3db)]['has'](_0x54a9ce[_0x2d79bb(0xf0)]))return;let _0x435613=createPhysicalBrickValues(_0x22945b[_0x2d79bb(0x1f0)],this[_0x2d79bb(0x41d)][_0x2d79bb(0x39e)],_0x54a9ce,_0x658d27),_0x1d0814=descriptorLogicalIndex(_0x54a9ce,this['layout']);await this['renderer'][_0x2d79bb(0x13b)]({'logicalIndex':_0x1d0814,'values':_0x435613}),!(this[_0x2d79bb(0x321)]||_0x4b77e4!==this[_0x2d79bb(0x38f)]||_0x22945b!==this[_0x2d79bb(0x226)]||_0x464fcd!==this['timeIndex']||!this[_0x2d79bb(0x3db)][_0x2d79bb(0x314)](_0x54a9ce['key']))&&(this[_0x2d79bb(0x42b)][_0x2d79bb(0x366)](_0x54a9ce['key']),this['requestRender']());})[_0x3d17bf(0x2fb)](_0x18122a=>{const _0x4c17c2=_0x3d17bf;_0x18122a instanceof DOMException&&_0x18122a['name']==='AbortError'||console[_0x4c17c2(0x387)](_0x18122a);})[_0x3d17bf(0x3f4)](()=>{const _0x1c4c4f=_0x3d17bf;this[_0x1c4c4f(0x1cf)][_0x1c4c4f(0xd5)](_0x462b48),this[_0x1c4c4f(0x107)]['get'](_0x54a9ce[_0x1c4c4f(0xf0)])===_0x4b77e4&&this[_0x1c4c4f(0x107)][_0x1c4c4f(0xd5)](_0x54a9ce[_0x1c4c4f(0xf0)]),_0x4b77e4===this[_0x1c4c4f(0x38f)]&&this[_0x1c4c4f(0x268)]();});}[_0x1d30f8(0x31a)](){const _0x405af3=_0x1d30f8;this[_0x405af3(0x37a)]&&this['requestRender']();}[_0x1d30f8(0x424)](){const _0x17db95=_0x1d30f8;this['destroyed']||(this['renderDirty']=!0x0,!(this[_0x17db95(0x12e)]!==_0x17db95(0x3cf)||this[_0x17db95(0x292)]!==0x0)&&(this['frameRequest']=requestAnimationFrame(()=>{const _0x178890=_0x17db95;this['frameRequest']=0x0,!(this[_0x178890(0x321)]||!this[_0x178890(0x37a)])&&this[_0x178890(0x166)]();})));}};const createVolumeScene=_0x32c56a=>VolumeScene[_0x1d30f8(0x21d)](_0x32c56a),insertOnce=(_0x247739,_0x214013,_0x25c8dc)=>{const _0x47077b=_0x1d30f8;let _0x42ffb8=_0x247739['indexOf'](_0x214013);if(_0x42ffb8<0x0||_0x247739[_0x47077b(0x175)](_0x214013,_0x42ffb8+_0x214013[_0x47077b(0x29b)])>=0x0)throw Error(_0x47077b(0x2d5)+_0x214013);return''+_0x247739[_0x47077b(0x210)](0x0,_0x42ffb8)+_0x25c8dc+_0x247739['slice'](_0x42ffb8+_0x214013[_0x47077b(0x29b)]);},mars3dVolumeRaymarchSource=insertOnce(insertOnce(volumeRaymarch_default,_0x1d30f8(0x340),_0x1d30f8(0x38c)),'\x20\x20\x20\x20var\x20interval\x20=\x20intersectClipBox(nearModel,\x20direction);',_0x1d30f8(0x33c)),premultipliedBlend=()=>({'color':{'srcFactor':_0x1d30f8(0x2fc),'dstFactor':_0x1d30f8(0x3dc),'operation':_0x1d30f8(0x366)},'alpha':{'srcFactor':_0x1d30f8(0x2fc),'dstFactor':_0x1d30f8(0x3dc),'operation':_0x1d30f8(0x366)}}),rendererPrototype=WebgpuVolumeSceneRenderer['prototype'],mars3dCanvases=new WeakSet();let pipelineHookInstalled=!0x1;const installPipelineHook=()=>{const _0x2c4231=_0x1d30f8;if(pipelineHookInstalled)return;let _0x33873c=rendererPrototype[_0x2c4231(0x31e)];rendererPrototype['createPipelines']=function(){const _0x265d26=_0x2c4231;if(_0x33873c[_0x265d26(0x1bc)](this),!this[_0x265d26(0x27f)]||!mars3dCanvases['has'](this[_0x265d26(0x27f)]))return;let _0x137ae9=this[_0x265d26(0x355)](),_0x4e9b7a=_0x137ae9['createShaderModule']({'label':_0x265d26(0xdd),'code':mars3dVolumeRaymarchSource});this[_0x265d26(0x2d4)]=_0x137ae9[_0x265d26(0x3ba)]({'label':_0x265d26(0x260),'layout':_0x137ae9['createPipelineLayout']({'bindGroupLayouts':[this['getSceneBindGroupLayout'](),this[_0x265d26(0x123)](),this[_0x265d26(0x22c)]()]}),'vertex':{'module':_0x4e9b7a,'entryPoint':'vertexMain'},'fragment':{'module':_0x4e9b7a,'entryPoint':_0x265d26(0x211),'targets':[{'format':this['getFormat'](),'blend':premultipliedBlend()}]},'primitive':{'topology':_0x265d26(0xeb)}});},pipelineHookInstalled=!0x0;},createMars3dVolumeScene=async _0x52eee7=>{const _0x518f19=_0x1d30f8;installPipelineHook(),mars3dCanvases[_0x518f19(0x366)](_0x52eee7[_0x518f19(0x27f)]);try{let _0x454cf4=await createVolumeScene(_0x52eee7),_0xe5fd6c=_0x454cf4[_0x518f19(0x377)][_0x518f19(0x108)](_0x454cf4);return _0x454cf4[_0x518f19(0x377)]=()=>{const _0xcc76cb=_0x518f19;mars3dCanvases['delete'](_0x52eee7[_0xcc76cb(0x27f)]),_0xe5fd6c();},_0x454cf4;}catch(_0x4a1e44){throw mars3dCanvases[_0x518f19(0xd5)](_0x52eee7[_0x518f19(0x27f)]),_0x4a1e44;}},crossVector=(_0x524925,_0x48e4d9)=>[_0x524925[0x1]*_0x48e4d9[0x2]-_0x524925[0x2]*_0x48e4d9[0x1],_0x524925[0x2]*_0x48e4d9[0x0]-_0x524925[0x0]*_0x48e4d9[0x2],_0x524925[0x0]*_0x48e4d9[0x1]-_0x524925[0x1]*_0x48e4d9[0x0]],normalizeVector=_0x77ba0=>{const _0x77a1de=_0x1d30f8;let _0x4e57a1=Math[_0x77a1de(0x20b)](_0x77ba0[0x0],_0x77ba0[0x1],_0x77ba0[0x2]);return _0x4e57a1>1e-10?[_0x77ba0[0x0]/_0x4e57a1,_0x77ba0[0x1]/_0x4e57a1,_0x77ba0[0x2]/_0x4e57a1]:null;},dotVector=(_0x11a964,_0x400334)=>_0x11a964[0x0]*_0x400334[0x0]+_0x11a964[0x1]*_0x400334[0x1]+_0x11a964[0x2]*_0x400334[0x2],addScaledVector=(_0x259e8b,_0x3595f0,_0x224b71)=>[_0x259e8b[0x0]+_0x3595f0[0x0]*_0x224b71,_0x259e8b[0x1]+_0x3595f0[0x1]*_0x224b71,_0x259e8b[0x2]+_0x3595f0[0x2]*_0x224b71],createMars3dCompensationFrame=(_0x10bcf8,_0x503c40,_0x4595cb)=>{const _0x4aebd2=_0x1d30f8;let _0x286885=normalizeVector(_0x10bcf8['direction']),_0x8c2b91=_0x286885?normalizeVector(crossVector(_0x286885,_0x10bcf8['up'])):null,_0x59f16b=_0x286885&&_0x8c2b91?normalizeVector(crossVector(_0x8c2b91,_0x286885)):null,_0x13870b=Math[_0x4aebd2(0x3ec)](_0x10bcf8[_0x4aebd2(0xd9)]/0x2),_0x4534f5=_0x503c40/_0x4595cb;if(!_0x286885||!_0x8c2b91||!_0x59f16b||!(_0x13870b>0x0)||!(_0x4534f5>0x0)||!(_0x10bcf8['anchorDistance']>0x0))return null;let _0x81f654=addScaledVector(_0x10bcf8[_0x4aebd2(0x209)],_0x286885,_0x10bcf8[_0x4aebd2(0x3c7)]),_0x50432c=[_0x81f654,addScaledVector(_0x81f654,_0x8c2b91,_0x10bcf8[_0x4aebd2(0x3c7)]*_0x13870b*_0x4534f5*0.5),addScaledVector(_0x81f654,_0x59f16b,_0x10bcf8[_0x4aebd2(0x3c7)]*_0x13870b*0.5)],_0x593159=projectMars3dCompensationAnchors(_0x10bcf8,_0x50432c,_0x503c40,_0x4595cb);return _0x593159?{'worldAnchors':_0x50432c,'screenAnchors':_0x593159}:null;},projectMars3dCompensationAnchors=(_0x26047b,_0x39abe7,_0x214f6a,_0x6e596e)=>{const _0x4f18d4=_0x1d30f8;let _0x49b8b2=normalizeVector(_0x26047b['direction']),_0x2eedd5=_0x49b8b2?normalizeVector(crossVector(_0x49b8b2,_0x26047b['up'])):null,_0x1e3669=_0x49b8b2&&_0x2eedd5?normalizeVector(crossVector(_0x2eedd5,_0x49b8b2)):null,_0x92f84b=Math[_0x4f18d4(0x3ec)](_0x26047b[_0x4f18d4(0xd9)]/0x2),_0x233e7f=_0x214f6a/_0x6e596e;if(!_0x49b8b2||!_0x2eedd5||!_0x1e3669||!(_0x92f84b>0x0)||!(_0x233e7f>0x0))return null;let _0x45d2ae=[];for(let _0x5550a0 of _0x39abe7){let _0x41622c=[_0x5550a0[0x0]-_0x26047b['position'][0x0],_0x5550a0[0x1]-_0x26047b[_0x4f18d4(0x209)][0x1],_0x5550a0[0x2]-_0x26047b[_0x4f18d4(0x209)][0x2]],_0xddd9a1=dotVector(_0x41622c,_0x49b8b2);if(!(_0xddd9a1>0.000001))return null;let _0x4a11cc=dotVector(_0x41622c,_0x2eedd5)/(_0xddd9a1*_0x92f84b*_0x233e7f),_0x411771=dotVector(_0x41622c,_0x1e3669)/(_0xddd9a1*_0x92f84b);_0x45d2ae[_0x4f18d4(0x40e)]({'x':(_0x4a11cc*0.5+0.5)*_0x214f6a,'y':(0.5-_0x411771*0.5)*_0x6e596e});}return _0x45d2ae;},createMars3dCanvasCompensationTransform=(_0xe5058d,_0x36eb04)=>{const _0x355ac4=_0x1d30f8;if(_0xe5058d['length']!==0x3||_0x36eb04[_0x355ac4(0x29b)]!==0x3)return null;let _0x252042={'x':_0xe5058d[0x1]['x']-_0xe5058d[0x0]['x'],'y':_0xe5058d[0x1]['y']-_0xe5058d[0x0]['y']},_0x3ade8={'x':_0xe5058d[0x2]['x']-_0xe5058d[0x0]['x'],'y':_0xe5058d[0x2]['y']-_0xe5058d[0x0]['y']},_0x5bf65f={'x':_0x36eb04[0x1]['x']-_0x36eb04[0x0]['x'],'y':_0x36eb04[0x1]['y']-_0x36eb04[0x0]['y']},_0x3463c0={'x':_0x36eb04[0x2]['x']-_0x36eb04[0x0]['x'],'y':_0x36eb04[0x2]['y']-_0x36eb04[0x0]['y']},_0x1bb1a9=_0x252042['x']*_0x3ade8['y']-_0x3ade8['x']*_0x252042['y'];if(Math['abs'](_0x1bb1a9)<0.000001)return null;let _0x367402=(_0x5bf65f['x']*_0x3ade8['y']-_0x3463c0['x']*_0x252042['y'])/_0x1bb1a9,_0x4add04=(-_0x5bf65f['x']*_0x3ade8['x']+_0x3463c0['x']*_0x252042['x'])/_0x1bb1a9,_0x5dc9d7=(_0x5bf65f['y']*_0x3ade8['y']-_0x3463c0['y']*_0x252042['y'])/_0x1bb1a9,_0x546649=(-_0x5bf65f['y']*_0x3ade8['x']+_0x3463c0['y']*_0x252042['x'])/_0x1bb1a9,_0x1cbc43=[_0x367402,_0x5dc9d7,_0x4add04,_0x546649,_0x36eb04[0x0]['x']-_0x367402*_0xe5058d[0x0]['x']-_0x4add04*_0xe5058d[0x0]['y'],_0x36eb04[0x0]['y']-_0x5dc9d7*_0xe5058d[0x0]['x']-_0x546649*_0xe5058d[0x0]['y']];return _0x1cbc43[_0x355ac4(0x22a)](Number[_0x355ac4(0x193)])?_0x355ac4(0xf7)+_0x1cbc43[_0x355ac4(0x32f)](',')+')':null;},getError=_0x536dc8=>_0x536dc8 instanceof Error?_0x536dc8:Error(String(_0x536dc8));var Mars3dVolumeRenderer=class{[_0x1d30f8(0x2d3)];[_0x1d30f8(0x2f9)];['canvas'];[_0x1d30f8(0x3b6)];[_0x1d30f8(0x2de)];[_0x1d30f8(0xdf)]=null;[_0x1d30f8(0x226)];['layout'];['frameRequest']=0x0;['cameraEndTimer']=0x0;[_0x1d30f8(0x2b6)]=0x0;[_0x1d30f8(0x199)];[_0x1d30f8(0x321)]=!0x1;[_0x1d30f8(0x25c)]=!0x1;[_0x1d30f8(0x152)]='';[_0x1d30f8(0x19b)]=null;['displayedCompensationFrame']=null;constructor(_0x2bafbb,_0x55a971){const _0x8aa427=_0x1d30f8;this[_0x8aa427(0x2f9)]=_0x2bafbb,this[_0x8aa427(0x226)]=_0x55a971[_0x8aa427(0x226)],this[_0x8aa427(0x41d)]=createGeographicVolumeLayout(_0x55a971[_0x8aa427(0x226)]['metadata']),this[_0x8aa427(0x3b6)]=_0x55a971[_0x8aa427(0x3b6)],this['cameraFrameCompensation']=_0x55a971['cameraFrameCompensation']??!0x0,this[_0x8aa427(0x199)]=_0x55a971[_0x8aa427(0x128)]??!0x0,this[_0x8aa427(0x27f)]=this[_0x8aa427(0x31c)](_0x2bafbb[_0x8aa427(0xdf)][_0x8aa427(0x27f)]),this[_0x8aa427(0x2d3)]=this[_0x8aa427(0x1f2)](_0x55a971);}get['statistics'](){const _0x54a612=_0x1d30f8;return this['scene']?.[_0x54a612(0xd0)]??null;}get['lockedSlices'](){const _0x1fd5c1=_0x1d30f8;return this[_0x1fd5c1(0xdf)]?.[_0x1fd5c1(0x104)]??[];}[_0x1d30f8(0x1f4)](_0x132578){const _0x15ef7e=_0x1d30f8;this[_0x15ef7e(0x149)](),this['shown']=_0x132578,this[_0x15ef7e(0x27f)][_0x15ef7e(0x415)][_0x15ef7e(0x299)]=_0x132578?_0x15ef7e(0x18d):_0x15ef7e(0x2b1),_0x132578&&this[_0x15ef7e(0x26a)](0x3);}['update'](_0x2e34cb){const _0x3de684=_0x1d30f8;this['requireScene']()[_0x3de684(0x174)](_0x2e34cb),this['requestFrames'](0x3);}[_0x1d30f8(0x16b)](_0x3b77b3){const _0x47aff4=_0x1d30f8;this[_0x47aff4(0x22e)]()[_0x47aff4(0x16b)](_0x3b77b3),this[_0x47aff4(0x26a)](0x3);}['setRouteProfiles'](_0x4f6f47){const _0x4a75ae=_0x1d30f8;this['requireScene']()[_0x4a75ae(0x2ea)](_0x4f6f47),this['requestFrames'](0x3);}[_0x1d30f8(0x27d)](_0x5506a8,_0x1ca293){const _0x58cfea=_0x1d30f8;this[_0x58cfea(0x22e)]()[_0x58cfea(0x27d)](_0x5506a8,_0x1ca293),this[_0x58cfea(0x26a)](0x3);}['removeSlice'](_0x1724ef){const _0x275563=_0x1d30f8;this[_0x275563(0x22e)]()['removeSlice'](_0x1724ef),this[_0x275563(0x26a)](0x3);}['clearLockedSlices'](){const _0x1e8208=_0x1d30f8;this['requireScene']()[_0x1e8208(0x180)](),this[_0x1e8208(0x26a)](0x3);}[_0x1d30f8(0x363)](_0x4d3e1a,_0x2d5502){const _0x4b246b=_0x1d30f8;let _0x4496d0=this[_0x4b246b(0x22e)]()['lockSlice'](_0x4d3e1a,_0x2d5502);return this['requestFrames'](0x3),_0x4496d0;}[_0x1d30f8(0x173)](_0x1b67e6){const _0x2378f=_0x1d30f8;this[_0x2378f(0x149)](),this['source']=_0x1b67e6,this[_0x2378f(0x41d)]=createGeographicVolumeLayout(_0x1b67e6['metadata']),this[_0x2378f(0x1be)](),this['requireScene']()[_0x2378f(0x173)](_0x1b67e6),this[_0x2378f(0x29e)](),this[_0x2378f(0x26a)](0x3);}[_0x1d30f8(0x377)](){const _0x4d7f1f=_0x1d30f8;this[_0x4d7f1f(0x321)]||(this[_0x4d7f1f(0x321)]=!0x0,cancelAnimationFrame(this[_0x4d7f1f(0x292)]),window[_0x4d7f1f(0x1e5)](this[_0x4d7f1f(0x392)]),this['frameRequest']=0x0,this[_0x4d7f1f(0x392)]=0x0,this['map'][_0x4d7f1f(0xdf)][_0x4d7f1f(0x1d4)][_0x4d7f1f(0x428)](this[_0x4d7f1f(0x32b)]),window[_0x4d7f1f(0x428)](_0x4d7f1f(0x1e3),this['handleResize']),this[_0x4d7f1f(0xdf)]?.[_0x4d7f1f(0x377)](),this[_0x4d7f1f(0xdf)]=null,this[_0x4d7f1f(0x27f)][_0x4d7f1f(0x3de)]());}[_0x1d30f8(0x126)](){const _0x59b04b=_0x1d30f8;this[_0x59b04b(0x25c)]&&(window[_0x59b04b(0x1e5)](this[_0x59b04b(0x392)]),this['cameraEndTimer']=0x0,this[_0x59b04b(0x25c)]=!0x1,this[_0x59b04b(0xdf)]?.[_0x59b04b(0x349)](_0x59b04b(0x33f)),this['syncCamera'](),this[_0x59b04b(0x26a)](0x3));}['handlePreRender']=()=>{const _0x3f3353=_0x1d30f8;let _0x21ad43=this[_0x3f3353(0x1e2)](this[_0x3f3353(0x2f9)][_0x3f3353(0xdf)][_0x3f3353(0x33f)]);_0x21ad43!==this['cameraSignature']&&(this['cameraSignature']=_0x21ad43,this['beginCameraInteraction'](),this[_0x3f3353(0x29e)](),this[_0x3f3353(0x20d)](),this[_0x3f3353(0x3ae)](0x1));};[_0x1d30f8(0x39c)]=()=>{const _0x5243d2=_0x1d30f8;this[_0x5243d2(0x1be)](),this['scene']?.[_0x5243d2(0x1e3)](),this[_0x5243d2(0x29e)](),this[_0x5243d2(0x26a)](0x3);};async['initialize'](_0x43e571){const _0x40aeef=_0x1d30f8;try{let _0x19d46d=await createMars3dVolumeScene({..._0x43e571,'interactionStepScale':_0x43e571['interactionStepScale']??1.35,'canvas':this[_0x40aeef(0x27f)],'coordinateSystem':_0x40aeef(0x23d),'showDebugGeometry':!0x1,'renderMode':'external'});if(this[_0x40aeef(0x321)]){_0x19d46d[_0x40aeef(0x377)]();return;}this['scene']=_0x19d46d,this[_0x40aeef(0x323)](_0x19d46d),this[_0x40aeef(0x2f9)]['scene'][_0x40aeef(0x1d4)][_0x40aeef(0x266)](this['handlePreRender']),window['addEventListener'](_0x40aeef(0x1e3),this['handleResize']),this[_0x40aeef(0x29e)](),this[_0x40aeef(0x26a)](0x3);}catch(_0x4a01a7){let _0x14e9e9=getError(_0x4a01a7);throw this[_0x40aeef(0x27f)]['remove'](),this['onError']?.(_0x14e9e9),_0x14e9e9;}}[_0x1d30f8(0x29e)](){const _0x3fa587=_0x1d30f8;let _0x419eea=this[_0x3fa587(0xdf)];if(!_0x419eea)return;let _0xe1a049=this[_0x3fa587(0x2f9)]['scene'][_0x3fa587(0x33f)],_0x52f73e=ecefToGeographicVolumeLocal([_0xe1a049[_0x3fa587(0x341)]['x'],_0xe1a049['positionWC']['y'],_0xe1a049[_0x3fa587(0x341)]['z']],this[_0x3fa587(0x41d)]),_0x156e64=[_0xe1a049[_0x3fa587(0x3b2)]['x'],_0xe1a049[_0x3fa587(0x3b2)]['y'],_0xe1a049[_0x3fa587(0x3b2)]['z']],_0x5c9be6=[_0xe1a049['upWC']['x'],_0xe1a049[_0x3fa587(0x1a5)]['y'],_0xe1a049[_0x3fa587(0x1a5)]['z']],_0x38b654=Math[_0x3fa587(0x334)](0.001,Math[_0x3fa587(0x356)](_0xe1a049[_0x3fa587(0x364)]['height'])/this['layout'][_0x3fa587(0x403)]),_0x1f1d01=[_0x52f73e[0x0]+_0x156e64[0x0]*_0x38b654,_0x52f73e[0x1]+_0x156e64[0x1]*_0x38b654,_0x52f73e[0x2]+_0x156e64[0x2]*_0x38b654],_0x54fb62=_0xe1a049[_0x3fa587(0x35b)][_0x3fa587(0x3eb)]??_0xe1a049[_0x3fa587(0x35b)][_0x3fa587(0x303)]??Math['PI']/0x3,_0x4e86aa=Math[_0x3fa587(0x334)](0.0001,_0x38b654/0x2710),_0x17e35c=Math['max'](0x64,_0x38b654*0x4);_0x419eea['setCamera']({'position':_0x52f73e,'target':_0x1f1d01,'up':_0x5c9be6,'projection':{'type':_0x3fa587(0x189),'fovYDegrees':_0x54fb62*0xb4/Math['PI'],'near':_0x4e86aa,'far':_0x17e35c}});}[_0x1d30f8(0x323)](_0x199584){const _0x8ad192=_0x1d30f8;let _0x24c0c2=_0x199584[_0x8ad192(0x1d5)],_0x4a3163=_0x24c0c2[_0x8ad192(0x3fc)];_0x24c0c2['frameAvailableCallback']=()=>{const _0xf2e59f=_0x8ad192;this[_0xf2e59f(0x19b)]&&(this[_0xf2e59f(0x35e)]=this[_0xf2e59f(0x19b)],this[_0xf2e59f(0x19b)]=null,this[_0xf2e59f(0x20d)]()),_0x4a3163?.();};}[_0x1d30f8(0x158)](){const _0x390c11=_0x1d30f8;let _0x20db76=this[_0x390c11(0x2f9)][_0x390c11(0xdf)][_0x390c11(0x33f)];return{'position':[_0x20db76[_0x390c11(0x341)]['x'],_0x20db76[_0x390c11(0x341)]['y'],_0x20db76[_0x390c11(0x341)]['z']],'direction':[_0x20db76[_0x390c11(0x3b2)]['x'],_0x20db76[_0x390c11(0x3b2)]['y'],_0x20db76['directionWC']['z']],'up':[_0x20db76[_0x390c11(0x1a5)]['x'],_0x20db76[_0x390c11(0x1a5)]['y'],_0x20db76[_0x390c11(0x1a5)]['z']],'fovYRadians':_0x20db76[_0x390c11(0x35b)][_0x390c11(0x3eb)]??_0x20db76[_0x390c11(0x35b)]['fov']??Math['PI']/0x3,'anchorDistance':Math[_0x390c11(0x334)](0x3e8,Math[_0x390c11(0x356)](_0x20db76['positionCartographic'][_0x390c11(0x26d)])*0x2)};}[_0x1d30f8(0x3f8)](){const _0x271752=_0x1d30f8;return createMars3dCompensationFrame(this[_0x271752(0x158)](),this[_0x271752(0x27f)][_0x271752(0x423)],this[_0x271752(0x27f)][_0x271752(0x3cd)]);}['applyCameraFrameCompensation'](){const _0x57a1e9=_0x1d30f8;if(!this['cameraFrameCompensation']||!this[_0x57a1e9(0x35e)]){this[_0x57a1e9(0x27f)]['style'][_0x57a1e9(0xef)]=_0x57a1e9(0x2b1);return;}let _0xc65c61=projectMars3dCompensationAnchors(this[_0x57a1e9(0x158)](),this[_0x57a1e9(0x35e)][_0x57a1e9(0x247)],this[_0x57a1e9(0x27f)][_0x57a1e9(0x423)],this['canvas'][_0x57a1e9(0x3cd)]),_0x429a03=_0xc65c61?createMars3dCanvasCompensationTransform(this[_0x57a1e9(0x35e)][_0x57a1e9(0x35f)],_0xc65c61):null;this[_0x57a1e9(0x27f)][_0x57a1e9(0x415)][_0x57a1e9(0xef)]=_0x429a03??_0x57a1e9(0x2b1);}[_0x1d30f8(0x1be)](){const _0x190ee8=_0x1d30f8;this[_0x190ee8(0x19b)]=null,this[_0x190ee8(0x35e)]=null,this['canvas'][_0x190ee8(0x415)][_0x190ee8(0xef)]='none';}[_0x1d30f8(0x26a)](_0x205872){const _0x4e7b58=_0x1d30f8;!this[_0x4e7b58(0x199)]||this[_0x4e7b58(0x321)]||(this[_0x4e7b58(0x2b6)]=Math[_0x4e7b58(0x334)](this[_0x4e7b58(0x2b6)],_0x205872),this[_0x4e7b58(0x292)]||=requestAnimationFrame(this[_0x4e7b58(0x2ad)]));}[_0x1d30f8(0x3ae)](_0x137107){const _0x4d0b45=_0x1d30f8;!this[_0x4d0b45(0x199)]||this['destroyed']||(this[_0x4d0b45(0x2b6)]=Math[_0x4d0b45(0x334)](this[_0x4d0b45(0x2b6)],_0x137107),this['frameRequest']&&cancelAnimationFrame(this[_0x4d0b45(0x292)]),this[_0x4d0b45(0x292)]=0x0,this[_0x4d0b45(0x2ad)]());}[_0x1d30f8(0x2ad)]=()=>{const _0x2853cc=_0x1d30f8;this[_0x2853cc(0x292)]=0x0;let _0x3c26dd=this[_0x2853cc(0xdf)];if(!(!_0x3c26dd||!this[_0x2853cc(0x199)]||this[_0x2853cc(0x321)]))try{_0x3c26dd[_0x2853cc(0x1e3)]();let _0x234c84=_0x3c26dd[_0x2853cc(0xd0)][_0x2853cc(0x116)];_0x3c26dd[_0x2853cc(0x166)](),_0x3c26dd[_0x2853cc(0xd0)][_0x2853cc(0x116)]>_0x234c84&&(this['pendingCompensationFrame']=this['createCurrentCompensationFrame'](),this[_0x2853cc(0x2b6)]=Math['max'](0x0,this[_0x2853cc(0x2b6)]-0x1));let _0x225301=_0x3c26dd['statistics'];(_0x225301[_0x2853cc(0x191)]>0x0||_0x225301[_0x2853cc(0x2e7)]<_0x225301['logicalBrickCount']||this[_0x2853cc(0x2b6)]>0x0)&&(this[_0x2853cc(0x292)]=requestAnimationFrame(this[_0x2853cc(0x2ad)]));}catch(_0x48fce9){this['onError']?.(getError(_0x48fce9));}};[_0x1d30f8(0x31c)](_0x1e0b89){const _0x3be648=_0x1d30f8;let _0x476ed3=_0x1e0b89[_0x3be648(0x162)];if(!_0x476ed3)throw Error(_0x3be648(0x33d));let _0x1d92cf=document[_0x3be648(0x3a9)]('canvas');return _0x1d92cf[_0x3be648(0x415)][_0x3be648(0x209)]=_0x3be648(0x14a),_0x1d92cf[_0x3be648(0x415)][_0x3be648(0x372)]='0',_0x1d92cf[_0x3be648(0x415)][_0x3be648(0x238)]=_0x3be648(0x1eb),_0x1d92cf[_0x3be648(0x415)]['height']=_0x3be648(0x1eb),_0x1d92cf[_0x3be648(0x415)]['pointerEvents']='none',_0x1d92cf['style'][_0x3be648(0x299)]=this['shown']?'block':_0x3be648(0x2b1),_0x1d92cf[_0x3be648(0x415)][_0x3be648(0x3a7)]='1',_0x476ed3[_0x3be648(0x371)](_0x1d92cf),_0x1d92cf;}['createCameraSignature'](_0x4ac312){const _0x3c2def=_0x1d30f8;return[_0x4ac312[_0x3c2def(0x341)]['x'],_0x4ac312['positionWC']['y'],_0x4ac312[_0x3c2def(0x341)]['z'],_0x4ac312['directionWC']['x'],_0x4ac312[_0x3c2def(0x3b2)]['y'],_0x4ac312[_0x3c2def(0x3b2)]['z'],_0x4ac312[_0x3c2def(0x1a5)]['x'],_0x4ac312[_0x3c2def(0x1a5)]['y'],_0x4ac312[_0x3c2def(0x1a5)]['z'],_0x4ac312[_0x3c2def(0x35b)][_0x3c2def(0x3eb)]??_0x4ac312[_0x3c2def(0x35b)][_0x3c2def(0x303)]??0x0,_0x4ac312[_0x3c2def(0x35b)][_0x3c2def(0x384)],_0x4ac312['frustum'][_0x3c2def(0x170)]][_0x3c2def(0x2f9)](_0x78a767=>_0x78a767['toPrecision'](0xa))['join']('|');}[_0x1d30f8(0x1ed)](){const _0x2ceaf2=_0x1d30f8;window['clearTimeout'](this['cameraEndTimer']),this[_0x2ceaf2(0x392)]=window[_0x2ceaf2(0x275)](this[_0x2ceaf2(0x126)][_0x2ceaf2(0x108)](this),0xc8);}[_0x1d30f8(0x2cc)](){const _0x5a9855=_0x1d30f8;this[_0x5a9855(0x25c)]||(this[_0x5a9855(0x25c)]=!0x0,this[_0x5a9855(0xdf)]?.['beginInteraction'](_0x5a9855(0x33f))),this[_0x5a9855(0x1ed)]();}[_0x1d30f8(0x22e)](){const _0x5b7291=_0x1d30f8;if(this[_0x5b7291(0x149)](),!this[_0x5b7291(0xdf)])throw Error(_0x5b7291(0x262));return this[_0x5b7291(0xdf)];}[_0x1d30f8(0x149)](){const _0x4147f7=_0x1d30f8;if(this[_0x4147f7(0x321)])throw Error('A\x20destroyed\x20Mars3D\x20volume\x20layer\x20cannot\x20be\x20used.\x20已销毁的\x20Mars3D\x20体积层不能继续使用。');}};const layerConstructors=new WeakMap(),getVolumeLayerConstructor=_0x125478=>{const _0x16049e=_0x1d30f8;let _0x5316cf=layerConstructors[_0x16049e(0x2d0)](_0x125478);if(_0x5316cf)return _0x5316cf;let _0x479540=_0x125478[_0x16049e(0x19a)][_0x16049e(0x388)];class _0x2d043f extends _0x479540{[_0x16049e(0x2f8)];['renderer']=null;[_0x16049e(0x245)]=null;['readyReject']=null;[_0x16049e(0x2d3)]=new Promise((resolve,reject)=>{const _0x4cb201=_0x16049e;this[_0x4cb201(0x245)]=resolve,this['readyReject']=reject;});constructor(_0x544f50){const _0x923dcc=_0x16049e;super({..._0x544f50}),this[_0x923dcc(0x2f8)]={..._0x544f50};}get[_0x16049e(0xd0)](){const _0x57c1b7=_0x16049e;return this[_0x57c1b7(0x1d5)]?.[_0x57c1b7(0xd0)]??null;}get[_0x16049e(0x104)](){const _0x46ce43=_0x16049e;return this[_0x46ce43(0x1d5)]?.[_0x46ce43(0x104)]??[];}[_0x16049e(0x174)](_0x38678f){const _0x5c26a7=_0x16049e;this[_0x5c26a7(0x1d5)]?.[_0x5c26a7(0x174)](_0x38678f);}[_0x16049e(0x173)](_0xe4c88e){const _0x46d7b2=_0x16049e;this[_0x46d7b2(0x2f8)][_0x46d7b2(0x226)]=_0xe4c88e,this[_0x46d7b2(0x329)]()[_0x46d7b2(0x173)](_0xe4c88e);}[_0x16049e(0x16b)](_0x4089c8){const _0x947e4c=_0x16049e;this[_0x947e4c(0x329)]()['setTimeIndex'](_0x4089c8);}[_0x16049e(0x2ea)](_0x3e3be7){const _0x4b58a6=_0x16049e;this[_0x4b58a6(0x329)]()[_0x4b58a6(0x2ea)](_0x3e3be7);}[_0x16049e(0x363)](_0x357050,_0x29daf5){const _0x16ab64=_0x16049e;return this[_0x16ab64(0x329)]()[_0x16ab64(0x363)](_0x357050,_0x29daf5);}[_0x16049e(0x27d)](_0x1ee556,_0x36c4e9){const _0x26569b=_0x16049e;this[_0x26569b(0x329)]()[_0x26569b(0x27d)](_0x1ee556,_0x36c4e9);}[_0x16049e(0x1ac)](_0xdb02ad){const _0x53237b=_0x16049e;this['requireRenderer']()[_0x53237b(0x1ac)](_0xdb02ad);}[_0x16049e(0x180)](){const _0x533b3a=_0x16049e;this[_0x533b3a(0x329)]()[_0x533b3a(0x180)]();}[_0x16049e(0x3a2)](){}[_0x16049e(0x425)](){const _0x504c7d=_0x16049e;if(!this['_map'])throw Error(_0x504c7d(0x39b));this[_0x504c7d(0x1d5)]?.['destroy'](),this['renderer']=new Mars3dVolumeRenderer(this['_map'],this[_0x504c7d(0x2f8)]),this['renderer']['setShow'](this[_0x504c7d(0x128)]),this['renderer'][_0x504c7d(0x2d3)][_0x504c7d(0x37d)](()=>this[_0x504c7d(0x245)]?.())[_0x504c7d(0x2fb)](_0x4e91ec=>this['readyReject']?.(_0x4e91ec));}[_0x16049e(0x14e)](_0x4971bd){const _0x5ea2de=_0x16049e;this[_0x5ea2de(0x1d5)]?.[_0x5ea2de(0x1f4)](_0x4971bd);}['_removedHook'](){const _0x5ea67f=_0x16049e;this[_0x5ea67f(0x1d5)]?.['destroy'](),this[_0x5ea67f(0x1d5)]=null;}[_0x16049e(0x329)](){const _0xf58f60=_0x16049e;if(!this[_0xf58f60(0x1d5)])throw Error('Mars3D\x20volume\x20layer\x20is\x20not\x20added\x20to\x20a\x20map.\x20Mars3D\x20体积层尚未添加到地图。');return this['renderer'];}}let _0x5d7920=_0x2d043f;return layerConstructors[_0x16049e(0x1a8)](_0x125478,_0x5d7920),_0x5d7920;},createMars3dVolumeLayer=(_0x4c74db,_0x1f723e)=>new(getVolumeLayerConstructor(_0x4c74db))(_0x1f723e);export{createMars3dVolumeLayer};
1
+ const _0x4d4387=_0xb383;(function(_0x19aa40,_0x42c275){const _0x5e47d7=_0xb383,_0x57f97b=_0x19aa40();while(!![]){try{const _0x10b1e5=parseInt(_0x5e47d7(0x269))/0x1*(-parseInt(_0x5e47d7(0x210))/0x2)+parseInt(_0x5e47d7(0x283))/0x3*(-parseInt(_0x5e47d7(0x133))/0x4)+-parseInt(_0x5e47d7(0x2fb))/0x5+-parseInt(_0x5e47d7(0x150))/0x6+parseInt(_0x5e47d7(0x360))/0x7*(parseInt(_0x5e47d7(0x2f2))/0x8)+parseInt(_0x5e47d7(0x190))/0x9+parseInt(_0x5e47d7(0x1f3))/0xa;if(_0x10b1e5===_0x42c275)break;else _0x57f97b['push'](_0x57f97b['shift']());}catch(_0x26025f){_0x57f97b['push'](_0x57f97b['shift']());}}}(_0x20aa,0x85592));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=_0x1b775b=>_0x1b775b*Math['PI']/0xb4,geodeticToEcef=(_0x14978e,_0x4bac8b,_0x175088)=>{const _0x558511=_0xb383;let _0x33a640=Math[_0x558511(0x2db)](_0x4bac8b),_0x2b0c83=Math[_0x558511(0x329)](_0x4bac8b),_0x55c58c=Math[_0x558511(0x2db)](_0x14978e),_0x3188e0=Math['cos'](_0x14978e),_0x528cc6=WGS84_SEMI_MAJOR_AXIS_METERS/Math[_0x558511(0x30d)](0x1-WGS84_FIRST_ECCENTRICITY_SQUARED*_0x33a640*_0x33a640);return[(_0x528cc6+_0x175088)*_0x2b0c83*_0x3188e0,(_0x528cc6+_0x175088)*_0x2b0c83*_0x55c58c,(_0x528cc6*(0x1-WGS84_FIRST_ECCENTRICITY_SQUARED)+_0x175088)*_0x33a640];},validateAxisSpan=(_0x1c6ce3,_0x5c1905,_0x10b26d)=>{const _0x2341b2=_0xb383;if(!Number[_0x2341b2(0x240)](_0x1c6ce3)||!Number['isFinite'](_0x5c1905)||_0x1c6ce3===_0x5c1905)throw Error(_0x10b26d+_0x2341b2(0x3fe)+_0x10b26d+'\x20轴必须包含两个不同的有限端点。');},createGeographicVolumeLayout=(_0x2a51ed,_0x495016=0x1)=>{const _0x312b75=_0xb383;let _0x2840e1=degreesToRadians(_0x2a51ed[_0x312b75(0x169)]['start']),_0x27b29d=degreesToRadians(_0x2a51ed['xAxis'][_0x312b75(0x356)]),_0x4b914b=degreesToRadians(_0x2a51ed[_0x312b75(0x182)][_0x312b75(0x34c)]),_0x291af3=degreesToRadians(_0x2a51ed[_0x312b75(0x182)][_0x312b75(0x356)]);validateAxisSpan(_0x2840e1,_0x27b29d,_0x312b75(0x38c)),validateAxisSpan(_0x4b914b,_0x291af3,'Latitude\x20/\x20纬度');let _0x31ecf9=_0x2a51ed[_0x312b75(0x424)]['start'],_0x3b744f=_0x2a51ed[_0x312b75(0x424)][_0x312b75(0x356)];if(validateAxisSpan(_0x31ecf9,_0x3b744f,_0x312b75(0x405)),!(_0x495016>0x0)||!Number[_0x312b75(0x240)](_0x495016))throw Error(_0x312b75(0x212));let _0x32c1b5=_0x31ecf9+(_0x3b744f-_0x31ecf9)*_0x495016,_0x2bca71=(_0x2840e1+_0x27b29d)/0x2,_0x152404=(_0x4b914b+_0x291af3)/0x2,_0x9b4cca=geodeticToEcef(_0x2bca71,_0x152404,0x0),_0x3897f2=Math['abs'](_0x27b29d-_0x2840e1)*WGS84_SEMI_MAJOR_AXIS_METERS*Math[_0x312b75(0x412)](0.01,Math[_0x312b75(0x329)](_0x152404)),_0xbc286b=Math[_0x312b75(0x3c7)](_0x291af3-_0x4b914b)*WGS84_SEMI_MAJOR_AXIS_METERS,_0x990774=Math['max'](_0x3897f2,_0xbc286b);if(!(_0x990774>0x0)||!Number['isFinite'](_0x990774))throw Error(_0x312b75(0x1bd));let _0x1ae818=[0x1/0x0,0x1/0x0,0x1/0x0],_0x53e584=[-0x1/0x0,-0x1/0x0,-0x1/0x0];for(let _0x5f2742=0x0;_0x5f2742<=0x8;_0x5f2742+=0x1){let _0x5ca72=_0x4b914b+(_0x291af3-_0x4b914b)*_0x5f2742/0x8;for(let _0x1a5ac8=0x0;_0x1a5ac8<=0x8;_0x1a5ac8+=0x1){let _0x13601c=_0x2840e1+(_0x27b29d-_0x2840e1)*_0x1a5ac8/0x8;for(let _0x563ec9 of[_0x31ecf9,_0x32c1b5]){let _0x302a22=geodeticToEcef(_0x13601c,_0x5ca72,_0x563ec9);for(let _0x478983=0x0;_0x478983<0x3;_0x478983+=0x1){let _0x542f41=(_0x302a22[_0x478983]-_0x9b4cca[_0x478983])/_0x990774;_0x1ae818[_0x478983]=Math[_0x312b75(0x279)](_0x1ae818[_0x478983],_0x542f41),_0x53e584[_0x478983]=Math['max'](_0x53e584[_0x478983],_0x542f41);}}}}let _0x1394c4=_0x53e584['map']((_0xc8e1f9,_0x1a3b8e)=>_0xc8e1f9-_0x1ae818[_0x1a3b8e]);if(_0x1394c4[_0x312b75(0x177)](_0x3abd31=>!(_0x3abd31>0x0)||!Number[_0x312b75(0x240)](_0x3abd31)))throw Error(_0x312b75(0x318));return{'centerEcef':_0x9b4cca,'normalizationMeters':_0x990774,'proxyModelMatrix':[_0x1394c4[0x0],0x0,0x0,0x0,0x0,_0x1394c4[0x1],0x0,0x0,0x0,0x0,_0x1394c4[0x2],0x0,_0x1ae818[0x0],_0x1ae818[0x1],_0x1ae818[0x2],0x1],'transform':{'mode':'wgs84','centerEcefScaled':[_0x9b4cca[0x0]/_0x990774,_0x9b4cca[0x1]/_0x990774,_0x9b4cca[0x2]/_0x990774],'semiMajorAxisScaled':WGS84_SEMI_MAJOR_AXIS_METERS/_0x990774,'semiMinorAxisScaled':WGS84_SEMI_MINOR_AXIS_METERS/_0x990774,'longitudeRadians':[_0x2840e1,_0x27b29d],'latitudeRadians':[_0x4b914b,_0x291af3],'heightScaled':[_0x31ecf9/_0x990774,_0x32c1b5/_0x990774]}};},ecefToGeographicVolumeLocal=(_0x3ee376,_0x1c0d95)=>[(_0x3ee376[0x0]-_0x1c0d95[_0x4d4387(0x2ba)][0x0])/_0x1c0d95[_0x4d4387(0x388)],(_0x3ee376[0x1]-_0x1c0d95['centerEcef'][0x1])/_0x1c0d95[_0x4d4387(0x388)],(_0x3ee376[0x2]-_0x1c0d95['centerEcef'][0x2])/_0x1c0d95[_0x4d4387(0x388)]],validatePositiveInteger=(_0x101f9d,_0x556467)=>{const _0x4ae299=_0x4d4387;if(!Number[_0x4ae299(0x403)](_0x101f9d)||_0x101f9d<=0x0)throw Error(_0x556467+_0x4ae299(0x1a1)+_0x556467+_0x4ae299(0x18b));},validateAxis=(_0x4a8ae3,_0x2917c6)=>{const _0x326275=_0x4d4387;if(validatePositiveInteger(_0x4a8ae3[_0x326275(0x173)],_0x2917c6+_0x326275(0x256)),!Number[_0x326275(0x240)](_0x4a8ae3[_0x326275(0x34c)])||!Number['isFinite'](_0x4a8ae3[_0x326275(0x356)]))throw Error(_0x2917c6+_0x326275(0x3da)+_0x2917c6+'\x20端点必须是有限数值。');if(_0x4a8ae3[_0x326275(0x173)]===0x1&&_0x4a8ae3['start']!==_0x4a8ae3[_0x326275(0x356)])throw Error(_0x2917c6+_0x326275(0x397)+_0x2917c6+_0x326275(0x3b9));if(_0x4a8ae3[_0x326275(0x173)]>0x1&&_0x4a8ae3[_0x326275(0x34c)]===_0x4a8ae3[_0x326275(0x356)])throw Error(_0x2917c6+_0x326275(0x38d)+_0x2917c6+_0x326275(0x459));},validateNoData=(_0x40e6c6,_0x15ee54)=>{const _0x4997e7=_0x4d4387;if(_0x40e6c6!==void 0x0&&!Number[_0x4997e7(0x240)](_0x40e6c6)&&!Number[_0x4997e7(0x148)](_0x40e6c6))throw Error(_0x15ee54+_0x4997e7(0x179)+_0x15ee54+_0x4997e7(0x13b));},rangesEqual=(_0xc75c8c,_0x294a0e)=>_0xc75c8c[_0x4d4387(0x31f)]===_0x294a0e[_0x4d4387(0x31f)]&&_0xc75c8c[_0x4d4387(0x2cf)]===_0x294a0e[_0x4d4387(0x2cf)]&&_0xc75c8c[_0x4d4387(0x10b)]===_0x294a0e[_0x4d4387(0x10b)]&&_0xc75c8c[_0x4d4387(0x32b)]===_0x294a0e[_0x4d4387(0x32b)]&&_0xc75c8c[_0x4d4387(0x462)]===_0x294a0e[_0x4d4387(0x462)]&&_0xc75c8c[_0x4d4387(0x353)]===_0x294a0e['sourceYCount'],validateVolumeMetadata=_0xa19836=>{const _0xbecbc2=_0x4d4387;if(validateAxis(_0xa19836[_0xbecbc2(0x169)],_0xbecbc2(0x376)),validateAxis(_0xa19836['yAxis'],_0xbecbc2(0x3e6)),validateAxis(_0xa19836[_0xbecbc2(0x182)],_0xbecbc2(0x2f1)),validatePositiveInteger(_0xa19836[_0xbecbc2(0x320)],_0xbecbc2(0x14c)),validateNoData(_0xa19836[_0xbecbc2(0x3b4)],_0xbecbc2(0x26d)),_0xa19836[_0xbecbc2(0x400)]!==void 0x0&&!Number[_0xbecbc2(0x240)](_0xa19836['valueScale']))throw Error(_0xbecbc2(0x393));if(_0xa19836['revision']!==void 0x0&&(!Number[_0xbecbc2(0x403)](_0xa19836[_0xbecbc2(0x156)])||_0xa19836[_0xbecbc2(0x156)]<0x0))throw Error(_0xbecbc2(0x1dc));},validateVolumeTimeIndex=(_0x26ab19,_0x4eb155)=>{const _0x54f03b=_0x4d4387;if(!Number[_0x54f03b(0x403)](_0x4eb155)||_0x4eb155<0x0||_0x4eb155>=_0x26ab19[_0x54f03b(0x320)])throw Error('Volume\x20timeIndex\x20is\x20out\x20of\x20range:\x20'+_0x4eb155+'.\x20体积时间索引越界。');},validateVolumeChunkRange=(_0x131ee4,_0xf7f7cf)=>{const _0x29ba5c=_0x4d4387;let _0x40f9a3=[[_0xf7f7cf[_0x29ba5c(0x31f)],_0x29ba5c(0x31f)],[_0xf7f7cf[_0x29ba5c(0x2cf)],'xCount'],[_0xf7f7cf[_0x29ba5c(0x10b)],_0x29ba5c(0x10b)],[_0xf7f7cf[_0x29ba5c(0x32b)],_0x29ba5c(0x32b)],[_0xf7f7cf['sourceYStart'],_0x29ba5c(0x462)],[_0xf7f7cf[_0x29ba5c(0x353)],'sourceYCount']];for(let [_0x4e958a,_0x23f525]of _0x40f9a3)if(!Number['isInteger'](_0x4e958a)||_0x4e958a<0x0||_0x23f525[_0x29ba5c(0x14b)](_0x29ba5c(0x2d4))&&_0x4e958a===0x0)throw Error(_0x29ba5c(0x3ab)+_0x23f525+'\x20is\x20invalid:\x20'+_0x4e958a+'.\x20体积分块\x20'+_0x23f525+_0x29ba5c(0x323));if(_0xf7f7cf[_0x29ba5c(0x31f)]+_0xf7f7cf[_0x29ba5c(0x2cf)]>_0x131ee4[_0x29ba5c(0x169)][_0x29ba5c(0x173)]||_0xf7f7cf['levelStart']+_0xf7f7cf[_0x29ba5c(0x32b)]>_0x131ee4[_0x29ba5c(0x424)][_0x29ba5c(0x173)]||_0xf7f7cf[_0x29ba5c(0x462)]+_0xf7f7cf[_0x29ba5c(0x353)]>_0x131ee4[_0x29ba5c(0x182)][_0x29ba5c(0x173)])throw Error(_0x29ba5c(0x369));},validateVolumeChunk=(_0x41bee3,_0x57a459,_0x5c0fe2,_0x1448ae)=>{const _0x571b36=_0x4d4387;if(validateVolumeTimeIndex(_0x41bee3,_0x57a459['timeIndex']),validateVolumeChunkRange(_0x41bee3,_0x57a459[_0x571b36(0x14a)]),_0x1448ae!==void 0x0&&_0x57a459[_0x571b36(0x1fa)]!==_0x1448ae)throw Error(_0x571b36(0x2cd));if(_0x5c0fe2&&!rangesEqual(_0x57a459[_0x571b36(0x14a)],_0x5c0fe2))throw Error(_0x571b36(0x1b8));if(_0x57a459[_0x571b36(0x13c)]!==_0x57a459[_0x571b36(0x14a)]['xCount']||_0x57a459['height']!==_0x57a459[_0x571b36(0x14a)][_0x571b36(0x32b)]||_0x57a459[_0x571b36(0x25c)]!==_0x57a459[_0x571b36(0x14a)][_0x571b36(0x353)])throw Error(_0x571b36(0x383));let _0x41df74=_0x57a459[_0x571b36(0x13c)]*_0x57a459[_0x571b36(0x3cb)]*_0x57a459['depth'];if(!Number[_0x571b36(0x42b)](_0x41df74)||_0x57a459[_0x571b36(0x39c)][_0x571b36(0x27b)]!==_0x41df74)throw Error(_0x571b36(0x3ff)+_0x41df74+_0x571b36(0x2b1)+_0x57a459[_0x571b36(0x39c)][_0x571b36(0x27b)]+'.\x20体积分块数值数量与尺寸不一致。');},validateVolumeSource=_0x3ad5e2=>{const _0xb5468e=_0x4d4387;if(!_0x3ad5e2||typeof _0x3ad5e2[_0xb5468e(0x20a)]!='function')throw Error(_0xb5468e(0x3df));validateVolumeMetadata(_0x3ad5e2['metadata']);},validateBrickShape=_0x2432e0=>{const _0x5826df=_0x4d4387;for(let [_0x377fb1,_0x11470e]of[[_0x2432e0[_0x5826df(0x13c)],'width'],[_0x2432e0[_0x5826df(0x3cb)],_0x5826df(0x3cb)],[_0x2432e0[_0x5826df(0x25c)],_0x5826df(0x25c)]])if(!Number[_0x5826df(0x403)](_0x377fb1)||_0x377fb1<=0x0)throw Error(_0x5826df(0x427)+_0x11470e+'\x20must\x20be\x20a\x20positive\x20integer.\x20体积分块\x20'+_0x11470e+_0x5826df(0x18b));if(!Number['isInteger'](_0x2432e0[_0x5826df(0x3d8)])||_0x2432e0['halo']<0x1)throw Error(_0x5826df(0x44e));},resolveVolumeBrickShape=(_0x65ee61={})=>{const _0xf866b5=_0x4d4387;let _0x1d5084={'width':_0x65ee61[_0xf866b5(0x13c)]??0x100,'height':_0x65ee61[_0xf866b5(0x3cb)]??0x8,'depth':_0x65ee61[_0xf866b5(0x25c)]??0x100,'halo':_0x65ee61[_0xf866b5(0x3d8)]??0x1};return validateBrickShape(_0x1d5084),_0x1d5084;},createVolumeBrickLayout=(_0x4378d2,_0x40d9a5={})=>{const _0x1b925a=_0x4d4387;validateVolumeMetadata(_0x4378d2);let _0x43b0bf=resolveVolumeBrickShape(_0x40d9a5),_0x3c6dc4=Math[_0x1b925a(0x14e)](_0x4378d2[_0x1b925a(0x169)][_0x1b925a(0x173)]/_0x43b0bf[_0x1b925a(0x13c)]),_0x5acbf5=Math[_0x1b925a(0x14e)](_0x4378d2[_0x1b925a(0x424)]['count']/_0x43b0bf[_0x1b925a(0x3cb)]),_0x32b6c9=Math['ceil'](_0x4378d2[_0x1b925a(0x182)][_0x1b925a(0x173)]/_0x43b0bf[_0x1b925a(0x25c)]);return{'shape':_0x43b0bf,'countX':_0x3c6dc4,'countY':_0x5acbf5,'countZ':_0x32b6c9,'brickCount':_0x3c6dc4*_0x5acbf5*_0x32b6c9};},createVolumeBrickKey=_0x105eed=>_0x105eed['x']+':'+_0x105eed['y']+':'+_0x105eed['z'],createVolumeBrickDescriptor=(_0x207aaa,_0x12b25d,_0x1ede7d)=>{const _0x339b06=_0x4d4387;if(!Number[_0x339b06(0x403)](_0x1ede7d['x'])||!Number[_0x339b06(0x403)](_0x1ede7d['y'])||!Number[_0x339b06(0x403)](_0x1ede7d['z'])||_0x1ede7d['x']<0x0||_0x1ede7d['x']>=_0x12b25d[_0x339b06(0x380)]||_0x1ede7d['y']<0x0||_0x1ede7d['y']>=_0x12b25d[_0x339b06(0x116)]||_0x1ede7d['z']<0x0||_0x1ede7d['z']>=_0x12b25d['countZ'])throw Error('Volume\x20brick\x20coordinate\x20is\x20out\x20of\x20range.\x20体积分块坐标越界。');let _0xb5fe41=_0x1ede7d['x']*_0x12b25d['shape'][_0x339b06(0x13c)],_0xd60134=_0x1ede7d['y']*_0x12b25d['shape'][_0x339b06(0x3cb)],_0x204f87=_0x1ede7d['z']*_0x12b25d[_0x339b06(0x21a)]['depth'],_0x57aec8=Math[_0x339b06(0x279)](_0x12b25d[_0x339b06(0x21a)][_0x339b06(0x13c)],_0x207aaa[_0x339b06(0x169)][_0x339b06(0x173)]-_0xb5fe41),_0x32567b=Math['min'](_0x12b25d[_0x339b06(0x21a)]['height'],_0x207aaa[_0x339b06(0x424)][_0x339b06(0x173)]-_0xd60134),_0x779b0e=Math['min'](_0x12b25d[_0x339b06(0x21a)][_0x339b06(0x25c)],_0x207aaa[_0x339b06(0x182)][_0x339b06(0x173)]-_0x204f87),_0x3234e4=_0x12b25d[_0x339b06(0x21a)][_0x339b06(0x3d8)],_0x1fe7b5=Math[_0x339b06(0x412)](0x0,_0xb5fe41-_0x3234e4),_0xe5bcbd=Math[_0x339b06(0x412)](0x0,_0xd60134-_0x3234e4),_0x6c5065=Math[_0x339b06(0x412)](0x0,_0x204f87-_0x3234e4),_0x1f87c3=Math[_0x339b06(0x279)](_0x207aaa[_0x339b06(0x169)][_0x339b06(0x173)],_0xb5fe41+_0x57aec8+_0x3234e4),_0x7f919a=Math['min'](_0x207aaa['yAxis']['count'],_0xd60134+_0x32567b+_0x3234e4),_0x53a0a0=Math[_0x339b06(0x279)](_0x207aaa[_0x339b06(0x182)][_0x339b06(0x173)],_0x204f87+_0x779b0e+_0x3234e4),_0x2e9dc8=_0x12b25d[_0x339b06(0x21a)][_0x339b06(0x13c)]+_0x3234e4*0x2,_0x3f463a=_0x12b25d[_0x339b06(0x21a)][_0x339b06(0x3cb)]+_0x3234e4*0x2,_0x460b90=_0x12b25d[_0x339b06(0x21a)]['depth']+_0x3234e4*0x2;return{'key':createVolumeBrickKey(_0x1ede7d),'coordinate':_0x1ede7d,'coreRange':{'xStart':_0xb5fe41,'xCount':_0x57aec8,'levelStart':_0xd60134,'levelCount':_0x32567b,'sourceYStart':_0x204f87,'sourceYCount':_0x779b0e},'readRange':{'xStart':_0x1fe7b5,'xCount':_0x1f87c3-_0x1fe7b5,'levelStart':_0xe5bcbd,'levelCount':_0x7f919a-_0xe5bcbd,'sourceYStart':_0x6c5065,'sourceYCount':_0x53a0a0-_0x6c5065},'physicalWidth':_0x2e9dc8,'physicalHeight':_0x3f463a,'physicalDepth':_0x460b90,'byteLength':_0x2e9dc8*_0x3f463a*_0x460b90*Float32Array[_0x339b06(0x322)]};},createVolumeBrickDescriptors=(_0x579b44,_0x2a0167)=>{const _0x55dae3=_0x4d4387;let _0x9ce6ee=[];for(let _0x138a93=0x0;_0x138a93<_0x2a0167[_0x55dae3(0x3f0)];_0x138a93+=0x1)for(let _0x923baa=0x0;_0x923baa<_0x2a0167['countY'];_0x923baa+=0x1)for(let _0x1fa56e=0x0;_0x1fa56e<_0x2a0167[_0x55dae3(0x380)];_0x1fa56e+=0x1)_0x9ce6ee['push'](createVolumeBrickDescriptor(_0x579b44,_0x2a0167,{'x':_0x1fa56e,'y':_0x923baa,'z':_0x138a93}));return _0x9ce6ee;},EPSILON=1e-8,createMatrix=()=>new Float32Array(0x10),dotVector3=(_0x5096fa,_0x405841)=>_0x5096fa[0x0]*_0x405841[0x0]+_0x5096fa[0x1]*_0x405841[0x1]+_0x5096fa[0x2]*_0x405841[0x2],subtractVector3=(_0x4c1a6f,_0x46f3bf)=>[_0x4c1a6f[0x0]-_0x46f3bf[0x0],_0x4c1a6f[0x1]-_0x46f3bf[0x1],_0x4c1a6f[0x2]-_0x46f3bf[0x2]],crossVector3=(_0x495571,_0x179dff)=>[_0x495571[0x1]*_0x179dff[0x2]-_0x495571[0x2]*_0x179dff[0x1],_0x495571[0x2]*_0x179dff[0x0]-_0x495571[0x0]*_0x179dff[0x2],_0x495571[0x0]*_0x179dff[0x1]-_0x495571[0x1]*_0x179dff[0x0]],normalizeVector3=_0x4f3c2a=>{const _0x5ee3e=_0x4d4387;let _0x37a30e=Math[_0x5ee3e(0x15e)](_0x4f3c2a[0x0],_0x4f3c2a[0x1],_0x4f3c2a[0x2]);if(_0x37a30e<=EPSILON)throw Error(_0x5ee3e(0x395));return[_0x4f3c2a[0x0]/_0x37a30e,_0x4f3c2a[0x1]/_0x37a30e,_0x4f3c2a[0x2]/_0x37a30e];},createIdentityMatrix=()=>{let _0x366a41=createMatrix();return _0x366a41[0x0]=0x1,_0x366a41[0x5]=0x1,_0x366a41[0xa]=0x1,_0x366a41[0xf]=0x1,_0x366a41;},multiplyMatrices=(_0x309090,_0x4a8da2)=>{let _0x4d64df=createMatrix();for(let _0x45892b=0x0;_0x45892b<0x4;_0x45892b+=0x1)for(let _0x234e78=0x0;_0x234e78<0x4;_0x234e78+=0x1){let _0x59cd78=0x0;for(let _0x5c33cb=0x0;_0x5c33cb<0x4;_0x5c33cb+=0x1)_0x59cd78+=_0x309090[_0x5c33cb*0x4+_0x234e78]*_0x4a8da2[_0x45892b*0x4+_0x5c33cb];_0x4d64df[_0x45892b*0x4+_0x234e78]=_0x59cd78;}return _0x4d64df;},invertMatrix=_0x5db30e=>{const _0x24e321=_0x4d4387;let _0x206dde=Array[_0x24e321(0x1c5)]({'length':0x4},(_0x33f696,_0x335c5e)=>{let _0x90466f=new Float64Array(0x8);for(let _0x2db24c=0x0;_0x2db24c<0x4;_0x2db24c+=0x1)_0x90466f[_0x2db24c]=_0x5db30e[_0x2db24c*0x4+_0x335c5e];return _0x90466f[_0x335c5e+0x4]=0x1,_0x90466f;});for(let _0x3bb0e5=0x0;_0x3bb0e5<0x4;_0x3bb0e5+=0x1){let _0x2244c6=_0x3bb0e5;for(let _0x586e5c=_0x3bb0e5+0x1;_0x586e5c<0x4;_0x586e5c+=0x1)Math['abs'](_0x206dde[_0x586e5c][_0x3bb0e5])>Math[_0x24e321(0x3c7)](_0x206dde[_0x2244c6][_0x3bb0e5])&&(_0x2244c6=_0x586e5c);if(Math[_0x24e321(0x3c7)](_0x206dde[_0x2244c6][_0x3bb0e5])<=EPSILON)throw Error(_0x24e321(0x1e8));_0x2244c6!==_0x3bb0e5&&([_0x206dde[_0x3bb0e5],_0x206dde[_0x2244c6]]=[_0x206dde[_0x2244c6],_0x206dde[_0x3bb0e5]]);let _0x2c6d75=_0x206dde[_0x3bb0e5][_0x3bb0e5];for(let _0x5774c9=0x0;_0x5774c9<0x8;_0x5774c9+=0x1)_0x206dde[_0x3bb0e5][_0x5774c9]/=_0x2c6d75;for(let _0x2babdd=0x0;_0x2babdd<0x4;_0x2babdd+=0x1){if(_0x2babdd===_0x3bb0e5)continue;let _0x100b24=_0x206dde[_0x2babdd][_0x3bb0e5];for(let _0x1473e4=0x0;_0x1473e4<0x8;_0x1473e4+=0x1)_0x206dde[_0x2babdd][_0x1473e4]-=_0x100b24*_0x206dde[_0x3bb0e5][_0x1473e4];}}let _0xa6580e=createMatrix();for(let _0x50a535=0x0;_0x50a535<0x4;_0x50a535+=0x1)for(let _0xcbabe8=0x0;_0xcbabe8<0x4;_0xcbabe8+=0x1)_0xa6580e[_0xcbabe8*0x4+_0x50a535]=_0x206dde[_0x50a535][_0xcbabe8+0x4];return _0xa6580e;},createLookAtMatrix=(_0x3a9e37,_0x314db7,_0x421a8b)=>{let _0x18cdf3=normalizeVector3(subtractVector3(_0x3a9e37,_0x314db7)),_0x2afb27=normalizeVector3(crossVector3(_0x421a8b,_0x18cdf3)),_0x1133a3=crossVector3(_0x18cdf3,_0x2afb27),_0x22bdc4=createIdentityMatrix();return _0x22bdc4[0x0]=_0x2afb27[0x0],_0x22bdc4[0x1]=_0x1133a3[0x0],_0x22bdc4[0x2]=_0x18cdf3[0x0],_0x22bdc4[0x4]=_0x2afb27[0x1],_0x22bdc4[0x5]=_0x1133a3[0x1],_0x22bdc4[0x6]=_0x18cdf3[0x1],_0x22bdc4[0x8]=_0x2afb27[0x2],_0x22bdc4[0x9]=_0x1133a3[0x2],_0x22bdc4[0xa]=_0x18cdf3[0x2],_0x22bdc4[0xc]=-dotVector3(_0x2afb27,_0x3a9e37),_0x22bdc4[0xd]=-dotVector3(_0x1133a3,_0x3a9e37),_0x22bdc4[0xe]=-dotVector3(_0x18cdf3,_0x3a9e37),_0x22bdc4;},createPerspectiveMatrix=(_0x25309b,_0x1d8a34,_0x562254,_0x367f61)=>{const _0x32c9a3=_0x4d4387;if(!(_0x25309b>0x0&&_0x25309b<Math['PI']))throw Error(_0x32c9a3(0x35c));if(!(_0x1d8a34>0x0))throw Error(_0x32c9a3(0x19e));if(!(_0x562254>0x0&&_0x367f61>_0x562254))throw Error(_0x32c9a3(0x254));let _0x58026b=0x1/Math['tan'](_0x25309b/0x2),_0x477fa9=createMatrix();return _0x477fa9[0x0]=_0x58026b/_0x1d8a34,_0x477fa9[0x5]=_0x58026b,_0x477fa9[0xa]=_0x367f61/(_0x562254-_0x367f61),_0x477fa9[0xb]=-0x1,_0x477fa9[0xe]=_0x562254*_0x367f61/(_0x562254-_0x367f61),_0x477fa9;},createOrthographicMatrix=(_0x126577,_0x38eb18,_0x3cd003,_0x39bcd2)=>{const _0x5a474e=_0x4d4387;if(!(_0x126577>0x0&&_0x38eb18>0x0))throw Error(_0x5a474e(0x2fc));if(!(_0x3cd003>=0x0&&_0x39bcd2>_0x3cd003))throw Error(_0x5a474e(0x3c8));let _0x55210c=_0x126577*_0x38eb18,_0x439477=createIdentityMatrix();return _0x439477[0x0]=0x2/_0x55210c,_0x439477[0x5]=0x2/_0x126577,_0x439477[0xa]=0x1/(_0x3cd003-_0x39bcd2),_0x439477[0xe]=_0x3cd003/(_0x3cd003-_0x39bcd2),_0x439477;},createScaleMatrix=(_0x19803b,_0x15b149,_0x410ac9)=>{let _0x9a0273=createIdentityMatrix();return _0x9a0273[0x0]=_0x19803b,_0x9a0273[0x5]=_0x15b149,_0x9a0273[0xa]=_0x410ac9,_0x9a0273;},composeVolumeModelMatrix=(_0x1cd8ab,_0x32ec30)=>{const _0x403880=_0x4d4387;if(!(_0x32ec30>0x0)||!Number[_0x403880(0x240)](_0x32ec30))throw Error(_0x403880(0x1b6));let _0x5a54b6=createScaleMatrix(0x1,_0x32ec30,0x1);return _0x1cd8ab?multiplyMatrices(_0x1cd8ab,_0x5a54b6):_0x5a54b6;},transformPoint=(_0x20f154,_0x576485,_0x26fdb0=0x1)=>[_0x20f154[0x0]*_0x576485[0x0]+_0x20f154[0x4]*_0x576485[0x1]+_0x20f154[0x8]*_0x576485[0x2]+_0x20f154[0xc]*_0x26fdb0,_0x20f154[0x1]*_0x576485[0x0]+_0x20f154[0x5]*_0x576485[0x1]+_0x20f154[0x9]*_0x576485[0x2]+_0x20f154[0xd]*_0x26fdb0,_0x20f154[0x2]*_0x576485[0x0]+_0x20f154[0x6]*_0x576485[0x1]+_0x20f154[0xa]*_0x576485[0x2]+_0x20f154[0xe]*_0x26fdb0,_0x20f154[0x3]*_0x576485[0x0]+_0x20f154[0x7]*_0x576485[0x1]+_0x20f154[0xb]*_0x576485[0x2]+_0x20f154[0xf]*_0x26fdb0],projectPointToViewport=(_0x51c82b,_0x5e749d,_0x4c84e5,_0x21e487)=>{let _0x2e3f4f=transformPoint(_0x51c82b,_0x5e749d);if(_0x2e3f4f[0x3]<=EPSILON)return null;let _0x5979c4=0x1/_0x2e3f4f[0x3];return[(_0x2e3f4f[0x0]*_0x5979c4*0.5+0.5)*_0x4c84e5,(0.5-_0x2e3f4f[0x1]*_0x5979c4*0.5)*_0x21e487,_0x2e3f4f[0x2]*_0x5979c4];},DEFAULT_POSITION=[0x0,0x1,0x2],DEFAULT_TARGET=[0x0,0x0,0x0],DEFAULT_UP=[0x0,0x1,0x0],DEFAULT_PROJECTION={'type':_0x4d4387(0x2ab),'fovYDegrees':0x2d,'near':0.01,'far':0x2710},DEGREE_TO_RADIAN=Math['PI']/0xb4,cloneVector=_0x1f09c2=>[_0x1f09c2[0x0],_0x1f09c2[0x1],_0x1f09c2[0x2]],cloneProjection=_0x33cb82=>(_0x33cb82[_0x4d4387(0x24e)],{..._0x33cb82}),cloneState=_0xf01b2e=>({'position':cloneVector(_0xf01b2e[_0x4d4387(0x1cc)]),'target':cloneVector(_0xf01b2e[_0x4d4387(0x206)]),'up':cloneVector(_0xf01b2e['up']),'projection':cloneProjection(_0xf01b2e[_0x4d4387(0x2f7)])}),subtractVector=(_0x31ca72,_0x4e3765)=>[_0x31ca72[0x0]-_0x4e3765[0x0],_0x31ca72[0x1]-_0x4e3765[0x1],_0x31ca72[0x2]-_0x4e3765[0x2]],addVector=(_0x2accc3,_0x455c92)=>[_0x2accc3[0x0]+_0x455c92[0x0],_0x2accc3[0x1]+_0x455c92[0x1],_0x2accc3[0x2]+_0x455c92[0x2]],scaleVector=(_0x244e6a,_0x479a06)=>[_0x244e6a[0x0]*_0x479a06,_0x244e6a[0x1]*_0x479a06,_0x244e6a[0x2]*_0x479a06],crossVector$1=(_0x381dcd,_0x310972)=>[_0x381dcd[0x1]*_0x310972[0x2]-_0x381dcd[0x2]*_0x310972[0x1],_0x381dcd[0x2]*_0x310972[0x0]-_0x381dcd[0x0]*_0x310972[0x2],_0x381dcd[0x0]*_0x310972[0x1]-_0x381dcd[0x1]*_0x310972[0x0]],normalizeVector$1=_0x28d475=>{const _0x25a497=_0x4d4387;let _0x145fe3=Math[_0x25a497(0x15e)](_0x28d475[0x0],_0x28d475[0x1],_0x28d475[0x2]);return _0x145fe3===0x0?[0x0,0x0,0x0]:scaleVector(_0x28d475,0x1/_0x145fe3);},clamp$1=(_0x50b69c,_0x544715,_0x4c74d5)=>Math[_0x4d4387(0x279)](_0x4c74d5,Math[_0x4d4387(0x412)](_0x544715,_0x50b69c)),validateProjection=_0x54d1fb=>{const _0x2048b2=_0x4d4387;if(!(_0x54d1fb[_0x2048b2(0x391)]>=0x0&&_0x54d1fb[_0x2048b2(0x184)]>_0x54d1fb[_0x2048b2(0x391)]))throw Error(_0x2048b2(0x3c8));if(_0x54d1fb[_0x2048b2(0x24e)]==='perspective'&&!(_0x54d1fb['near']>0x0&&_0x54d1fb[_0x2048b2(0x122)]>0x0&&_0x54d1fb[_0x2048b2(0x122)]<0xb4))throw Error(_0x2048b2(0x1d1));if(_0x54d1fb[_0x2048b2(0x24e)]===_0x2048b2(0x3af)&&!(_0x54d1fb[_0x2048b2(0x3cb)]>0x0))throw Error(_0x2048b2(0x171));},resolveInitialState=_0x3b8eb3=>{const _0x108bb4=_0x4d4387;let _0x20f400={'position':_0x3b8eb3[_0x108bb4(0x1fd)]?.[_0x108bb4(0x1cc)]?cloneVector(_0x3b8eb3[_0x108bb4(0x1fd)][_0x108bb4(0x1cc)]):cloneVector(DEFAULT_POSITION),'target':_0x3b8eb3['state']?.[_0x108bb4(0x206)]?cloneVector(_0x3b8eb3[_0x108bb4(0x1fd)][_0x108bb4(0x206)]):cloneVector(DEFAULT_TARGET),'up':_0x3b8eb3['state']?.['up']?cloneVector(_0x3b8eb3[_0x108bb4(0x1fd)]['up']):cloneVector(DEFAULT_UP),'projection':_0x3b8eb3[_0x108bb4(0x1fd)]?.[_0x108bb4(0x2f7)]?cloneProjection(_0x3b8eb3['state'][_0x108bb4(0x2f7)]):cloneProjection(DEFAULT_PROJECTION)};return validateProjection(_0x20f400[_0x108bb4(0x2f7)]),_0x20f400;};var VolumeCamera=class{['cameraState'];[_0x4d4387(0x161)];[_0x4d4387(0x2ae)];[_0x4d4387(0x271)];['zoomSpeed'];[_0x4d4387(0x2b5)];['maximumDistance'];[_0x4d4387(0x2f6)];[_0x4d4387(0x354)];constructor(_0xae1def={}){const _0x218785=_0x4d4387;if(this[_0x218785(0x44d)]=resolveInitialState(_0xae1def),this[_0x218785(0x161)]=_0xae1def[_0x218785(0x161)]??0x1,this[_0x218785(0x2ae)]=_0xae1def['rotateSpeed']??0.005,this[_0x218785(0x271)]=_0xae1def[_0x218785(0x271)]??0x1,this['zoomSpeed']=_0xae1def['zoomSpeed']??0.0015,this[_0x218785(0x2b5)]=_0xae1def[_0x218785(0x2b5)]??0.001,this[_0x218785(0x32d)]=_0xae1def[_0x218785(0x32d)]??0x1/0x0,this['minimumPitch']=(_0xae1def[_0x218785(0x2e1)]??-0x59)*DEGREE_TO_RADIAN,this[_0x218785(0x354)]=(_0xae1def[_0x218785(0x2c5)]??0x59)*DEGREE_TO_RADIAN,!(this[_0x218785(0x161)]>0x0))throw Error(_0x218785(0x19e));}get[_0x4d4387(0x1fd)](){const _0x406acf=_0x4d4387;return cloneState(this[_0x406acf(0x44d)]);}get[_0x4d4387(0x16c)](){const _0x2843be=_0x4d4387;let _0x35952e=createLookAtMatrix(this[_0x2843be(0x44d)][_0x2843be(0x1cc)],this['cameraState'][_0x2843be(0x206)],this[_0x2843be(0x44d)]['up']),_0xc3aa68=this[_0x2843be(0x430)](),_0x36ad7b=multiplyMatrices(_0xc3aa68,_0x35952e);return{'view':_0x35952e,'projection':_0xc3aa68,'viewProjection':_0x36ad7b,'inverseViewProjection':invertMatrix(_0x36ad7b)};}[_0x4d4387(0x3cc)](_0x1bdb7f){const _0x48a297=_0x4d4387;validateProjection(_0x1bdb7f[_0x48a297(0x2f7)]),this[_0x48a297(0x44d)]=cloneState(_0x1bdb7f);}[_0x4d4387(0x138)](_0x108eb6){const _0x8b6156=_0x4d4387;if(!(_0x108eb6>0x0)||!Number[_0x8b6156(0x240)](_0x108eb6))throw Error(_0x8b6156(0x18a));this[_0x8b6156(0x161)]=_0x108eb6;}[_0x4d4387(0x301)](_0xaf25fc){const _0x2a8872=_0x4d4387;if(_0xaf25fc===this[_0x2a8872(0x44d)][_0x2a8872(0x2f7)]['type'])return;let _0x4d1e61=Math['hypot'](...subtractVector(this[_0x2a8872(0x44d)][_0x2a8872(0x1cc)],this['cameraState']['target']));if(_0xaf25fc===_0x2a8872(0x3af)){let _0x50cc74=this[_0x2a8872(0x44d)][_0x2a8872(0x2f7)],_0x3e9c88=_0x50cc74[_0x2a8872(0x24e)]==='perspective'?_0x50cc74[_0x2a8872(0x122)]*DEGREE_TO_RADIAN:0x2d*DEGREE_TO_RADIAN;this[_0x2a8872(0x44d)][_0x2a8872(0x2f7)]={'type':_0xaf25fc,'height':0x2*_0x4d1e61*Math[_0x2a8872(0x1cf)](_0x3e9c88/0x2),'near':_0x50cc74[_0x2a8872(0x391)],'far':_0x50cc74[_0x2a8872(0x184)]};return;}let _0x34df23=this['cameraState'][_0x2a8872(0x2f7)],_0x3250b2=_0x34df23[_0x2a8872(0x24e)]===_0x2a8872(0x3af)?_0x34df23[_0x2a8872(0x3cb)]/(0x2*Math[_0x2a8872(0x1cf)](0x2d*DEGREE_TO_RADIAN/0x2)):_0x4d1e61,_0x7a04aa=normalizeVector$1(subtractVector(this[_0x2a8872(0x44d)][_0x2a8872(0x1cc)],this[_0x2a8872(0x44d)]['target']));this[_0x2a8872(0x44d)]['position']=addVector(this[_0x2a8872(0x44d)][_0x2a8872(0x206)],scaleVector(_0x7a04aa,_0x3250b2)),this['cameraState'][_0x2a8872(0x2f7)]={'type':_0xaf25fc,'fovYDegrees':0x2d,'near':_0x34df23[_0x2a8872(0x391)],'far':_0x34df23[_0x2a8872(0x184)]};}[_0x4d4387(0x414)](_0x1f2690,_0x4ce591){const _0x3d62e4=_0x4d4387;let _0x5dcfa5=subtractVector(this[_0x3d62e4(0x44d)]['position'],this[_0x3d62e4(0x44d)][_0x3d62e4(0x206)]),_0x47d82b=Math[_0x3d62e4(0x15e)](..._0x5dcfa5);if(_0x47d82b===0x0)return;let _0x163cbd=Math[_0x3d62e4(0x119)](_0x5dcfa5[0x0],_0x5dcfa5[0x2])-_0x1f2690*this[_0x3d62e4(0x2ae)],_0x403277=clamp$1(Math[_0x3d62e4(0x238)](_0x5dcfa5[0x1]/_0x47d82b)+_0x4ce591*this[_0x3d62e4(0x2ae)],this[_0x3d62e4(0x2f6)],this[_0x3d62e4(0x354)]),_0x1d8019=Math[_0x3d62e4(0x329)](_0x403277)*_0x47d82b;this[_0x3d62e4(0x44d)][_0x3d62e4(0x1cc)]=addVector(this[_0x3d62e4(0x44d)][_0x3d62e4(0x206)],[Math[_0x3d62e4(0x2db)](_0x163cbd)*_0x1d8019,Math[_0x3d62e4(0x2db)](_0x403277)*_0x47d82b,Math[_0x3d62e4(0x329)](_0x163cbd)*_0x1d8019]);}[_0x4d4387(0x423)](_0x2e7b56,_0x4f7397,_0x37ef8b){const _0x262c80=_0x4d4387;if(!(_0x37ef8b>0x0))return;let _0x29f334=normalizeVector$1(subtractVector(this[_0x262c80(0x44d)][_0x262c80(0x206)],this[_0x262c80(0x44d)][_0x262c80(0x1cc)])),_0x3614f6=normalizeVector$1(crossVector$1(_0x29f334,this['cameraState']['up'])),_0x456556=normalizeVector$1(crossVector$1(_0x3614f6,_0x29f334)),_0xdf6ca7=Math[_0x262c80(0x15e)](...subtractVector(this['cameraState'][_0x262c80(0x1cc)],this[_0x262c80(0x44d)][_0x262c80(0x206)])),_0x126fb3=(this[_0x262c80(0x44d)][_0x262c80(0x2f7)][_0x262c80(0x24e)]===_0x262c80(0x3af)?this['cameraState'][_0x262c80(0x2f7)][_0x262c80(0x3cb)]:0x2*_0xdf6ca7*Math[_0x262c80(0x1cf)](this[_0x262c80(0x44d)][_0x262c80(0x2f7)][_0x262c80(0x122)]*DEGREE_TO_RADIAN/0x2))/_0x37ef8b*this[_0x262c80(0x271)],_0x3c699d=addVector(scaleVector(_0x3614f6,-_0x2e7b56*_0x126fb3),scaleVector(_0x456556,_0x4f7397*_0x126fb3));this[_0x262c80(0x44d)][_0x262c80(0x1cc)]=addVector(this['cameraState'][_0x262c80(0x1cc)],_0x3c699d),this['cameraState'][_0x262c80(0x206)]=addVector(this[_0x262c80(0x44d)][_0x262c80(0x206)],_0x3c699d);}[_0x4d4387(0x1ab)](_0x39efe1){const _0x3443f2=_0x4d4387;let _0x78d07f=Math['exp'](_0x39efe1*this[_0x3443f2(0x3b7)]);if(this[_0x3443f2(0x44d)][_0x3443f2(0x2f7)][_0x3443f2(0x24e)]==='orthographic'){this[_0x3443f2(0x44d)][_0x3443f2(0x2f7)]={...this[_0x3443f2(0x44d)][_0x3443f2(0x2f7)],'height':Math['max'](this[_0x3443f2(0x2b5)],this[_0x3443f2(0x44d)][_0x3443f2(0x2f7)]['height']*_0x78d07f)};return;}let _0xec61de=subtractVector(this[_0x3443f2(0x44d)][_0x3443f2(0x1cc)],this[_0x3443f2(0x44d)][_0x3443f2(0x206)]),_0x32c372=clamp$1(Math[_0x3443f2(0x15e)](..._0xec61de)*_0x78d07f,this['minimumDistance'],this['maximumDistance']);this[_0x3443f2(0x44d)][_0x3443f2(0x1cc)]=addVector(this[_0x3443f2(0x44d)][_0x3443f2(0x206)],scaleVector(normalizeVector$1(_0xec61de),_0x32c372));}[_0x4d4387(0x430)](){const _0x49e9b3=_0x4d4387;let _0x119998=this[_0x49e9b3(0x44d)][_0x49e9b3(0x2f7)];return _0x119998[_0x49e9b3(0x24e)]===_0x49e9b3(0x2ab)?createPerspectiveMatrix(_0x119998['fovYDegrees']*DEGREE_TO_RADIAN,this['aspect'],_0x119998[_0x49e9b3(0x391)],_0x119998['far']):createOrthographicMatrix(_0x119998['height'],this[_0x49e9b3(0x161)],_0x119998[_0x49e9b3(0x391)],_0x119998[_0x49e9b3(0x184)]);}};const isMissingValue=(_0x4b864f,_0x1af34c)=>Number[_0x4d4387(0x148)](_0x4b864f)||_0x1af34c!==void 0x0&&_0x4b864f===_0x1af34c,axisValueToNormalized=(_0x59d224,_0x2dbf31)=>_0x59d224[_0x4d4387(0x34c)]===_0x59d224[_0x4d4387(0x356)]?0x0:(_0x2dbf31-_0x59d224[_0x4d4387(0x34c)])/(_0x59d224['end']-_0x59d224[_0x4d4387(0x34c)]),validateProfile=_0x379e4a=>{const _0x4239e6=_0x4d4387;if(!_0x379e4a['id'])throw Error(_0x4239e6(0x460));if(_0x379e4a['path'][_0x4239e6(0x27b)]<0x4||_0x379e4a[_0x4239e6(0x29b)]['length']%0x2!=0x0)throw Error('路线剖面\x20'+_0x379e4a['id']+_0x4239e6(0x42f));if(_0x379e4a[_0x4239e6(0x228)][_0x4239e6(0x27b)]<0x2)throw Error(_0x4239e6(0x324)+_0x379e4a['id']+_0x4239e6(0x3dc));let _0x499844=_0x379e4a[_0x4239e6(0x29b)][_0x4239e6(0x27b)]/0x2;if(_0x379e4a[_0x4239e6(0x39c)][_0x4239e6(0x27b)]!==_0x499844*_0x379e4a[_0x4239e6(0x228)][_0x4239e6(0x27b)])throw Error(_0x4239e6(0x324)+_0x379e4a['id']+_0x4239e6(0x428));if(_0x379e4a[_0x4239e6(0x29d)]!==void 0x0&&(!(_0x379e4a[_0x4239e6(0x29d)]>=0x0&&_0x379e4a[_0x4239e6(0x29d)]<=0x1)||!Number[_0x4239e6(0x240)](_0x379e4a[_0x4239e6(0x29d)])))throw Error(_0x4239e6(0x324)+_0x379e4a['id']+_0x4239e6(0x149));for(let _0x15db7b of _0x379e4a[_0x4239e6(0x29b)])if(!Number[_0x4239e6(0x240)](_0x15db7b))throw Error('路线剖面\x20'+_0x379e4a['id']+_0x4239e6(0x175));for(let _0x3dc07a of _0x379e4a[_0x4239e6(0x228)])if(!Number[_0x4239e6(0x240)](_0x3dc07a))throw Error(_0x4239e6(0x324)+_0x379e4a['id']+_0x4239e6(0x3ae));return _0x499844;},createPositions=(_0x17e40f,_0x2c4b90,_0x547ab5)=>{const _0x22c1b3=_0x4d4387;let _0x35c9bf=new Float32Array(_0x2c4b90*_0x17e40f['heights'][_0x22c1b3(0x27b)]*0x3);for(let _0x3e3f6c=0x0;_0x3e3f6c<_0x17e40f[_0x22c1b3(0x228)]['length'];_0x3e3f6c+=0x1)for(let _0x3c89cc=0x0;_0x3c89cc<_0x2c4b90;_0x3c89cc+=0x1){let _0x54441a=(_0x3e3f6c*_0x2c4b90+_0x3c89cc)*0x3;_0x35c9bf[_0x54441a]=axisValueToNormalized(_0x547ab5[_0x22c1b3(0x169)],_0x17e40f['path'][_0x3c89cc*0x2]),_0x35c9bf[_0x54441a+0x1]=axisValueToNormalized(_0x547ab5[_0x22c1b3(0x424)],_0x17e40f[_0x22c1b3(0x228)][_0x3e3f6c]),_0x35c9bf[_0x54441a+0x2]=axisValueToNormalized(_0x547ab5[_0x22c1b3(0x182)],_0x17e40f['path'][_0x3c89cc*0x2+0x1]);}return _0x35c9bf;},createValues=_0x2ff02d=>{const _0x1dae02=_0x4d4387;let _0x1801a8=new Float32Array(_0x2ff02d[_0x1dae02(0x39c)]['length']);for(let _0x1b1986=0x0;_0x1b1986<_0x2ff02d[_0x1dae02(0x39c)]['length'];_0x1b1986+=0x1){let _0x5de0ae=_0x2ff02d[_0x1dae02(0x39c)][_0x1b1986];_0x1801a8[_0x1b1986]=isMissingValue(_0x5de0ae,_0x2ff02d[_0x1dae02(0x3b4)])?NaN:_0x5de0ae;}return _0x1801a8;},createIndices=(_0x4fa392,_0x3b36c5)=>{let _0xc95ac3=new Uint32Array((_0x4fa392-0x1)*(_0x3b36c5-0x1)*0x6),_0x483896=0x0;for(let _0x497265=0x0;_0x497265<_0x3b36c5-0x1;_0x497265+=0x1)for(let _0x25a624=0x0;_0x25a624<_0x4fa392-0x1;_0x25a624+=0x1){let _0x3b8649=_0x497265*_0x4fa392+_0x25a624,_0x123db6=_0x3b8649+0x1,_0x5902ca=_0x3b8649+_0x4fa392,_0x1e834e=_0x5902ca+0x1;_0xc95ac3[_0x483896]=_0x3b8649,_0xc95ac3[_0x483896+0x1]=_0x123db6,_0xc95ac3[_0x483896+0x2]=_0x5902ca,_0xc95ac3[_0x483896+0x3]=_0x5902ca,_0xc95ac3[_0x483896+0x4]=_0x123db6,_0xc95ac3[_0x483896+0x5]=_0x1e834e,_0x483896+=0x6;}return _0xc95ac3;},buildVolumeRouteProfileMesh=(_0x40c6aa,_0x304ab1)=>{const _0x160fa3=_0x4d4387;let _0x31ae35=validateProfile(_0x40c6aa);return{'id':_0x40c6aa['id'],'positions':createPositions(_0x40c6aa,_0x31ae35,_0x304ab1),'values':createValues(_0x40c6aa),'indices':createIndices(_0x31ae35,_0x40c6aa['heights'][_0x160fa3(0x27b)]),'opacity':_0x40c6aa[_0x160fa3(0x29d)]??0x1,'depthMode':_0x40c6aa[_0x160fa3(0x471)]??_0x160fa3(0x120),'revision':_0x40c6aa[_0x160fa3(0x156)]};};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=_0x4d4387(0x174),volumeSlice_default=_0x4d4387(0x163);const validateMetadata=_0x368eec=>{const _0x4f7a57=_0x4d4387;if([_0x368eec[_0x4f7a57(0x169)][_0x4f7a57(0x173)],_0x368eec[_0x4f7a57(0x424)][_0x4f7a57(0x173)],_0x368eec[_0x4f7a57(0x182)]['count'],_0x368eec['brickWidth'],_0x368eec[_0x4f7a57(0x261)],_0x368eec[_0x4f7a57(0x16d)]][_0x4f7a57(0x177)](_0x441df0=>!Number[_0x4f7a57(0x403)](_0x441df0)||_0x441df0<=0x0))throw Error('WebGPU\x20volume\x20dimensions\x20must\x20be\x20positive\x20integers.\x20WebGPU\x20体积尺寸必须是正整数。');if(_0x368eec[_0x4f7a57(0x3d8)]!==0x1)throw Error('WebGPU\x20volume\x20bricks\x20require\x20halo\x201.\x20WebGPU\x20体积砖块要求\x20halo\x20为\x201。');},getBrickCount=_0x19add6=>[Math[_0x4d4387(0x14e)](_0x19add6[_0x4d4387(0x169)][_0x4d4387(0x173)]/_0x19add6['brickWidth']),Math['ceil'](_0x19add6[_0x4d4387(0x424)][_0x4d4387(0x173)]/_0x19add6[_0x4d4387(0x261)]),Math[_0x4d4387(0x14e)](_0x19add6[_0x4d4387(0x182)]['count']/_0x19add6[_0x4d4387(0x16d)])],getLogicalBrickCoordinate=(_0x58adfd,_0x4cacec)=>{const _0x2dea24=_0x4d4387;let _0x3a927c=_0x4cacec[0x0]*_0x4cacec[0x1],_0x27a6b3=Math[_0x2dea24(0x3a5)](_0x58adfd/_0x3a927c),_0x513896=_0x58adfd-_0x27a6b3*_0x3a927c,_0x3e3829=Math['floor'](_0x513896/_0x4cacec[0x0]);return[_0x513896-_0x3e3829*_0x4cacec[0x0],_0x3e3829,_0x27a6b3];},analyzeBrickOccupancy=(_0x36a563,_0x332fbf,_0x240eda)=>{const _0x1a823d=_0x4d4387;let _0x33343a=_0x332fbf[_0x1a823d(0x2dd)]+0x2,_0x4566df=_0x332fbf[_0x1a823d(0x261)]+0x2,_0x374412=getLogicalBrickCoordinate(_0x36a563[_0x1a823d(0x41b)],_0x240eda),_0x524318=Math['min'](_0x332fbf[_0x1a823d(0x2dd)],_0x332fbf[_0x1a823d(0x169)]['count']-_0x374412[0x0]*_0x332fbf['brickWidth']),_0xaad7bb=Math[_0x1a823d(0x279)](_0x332fbf['brickHeight'],_0x332fbf['yAxis']['count']-_0x374412[0x1]*_0x332fbf[_0x1a823d(0x261)]),_0x3cf715=Math[_0x1a823d(0x279)](_0x332fbf[_0x1a823d(0x16d)],_0x332fbf['zAxis'][_0x1a823d(0x173)]-_0x374412[0x2]*_0x332fbf[_0x1a823d(0x16d)]);for(let _0x2f10aa=0x0;_0x2f10aa<_0x3cf715;_0x2f10aa+=0x1)for(let _0x42e642=0x0;_0x42e642<_0xaad7bb;_0x42e642+=0x1){let _0x3d77d7=((_0x2f10aa+0x1)*_0x4566df+_0x42e642+0x1)*_0x33343a+0x1;for(let _0x4f0149=0x0;_0x4f0149<_0x524318;_0x4f0149+=0x1){let _0x1b9860=_0x36a563['values'][_0x3d77d7+_0x4f0149];if(_0x1b9860===_0x1b9860&&(_0x332fbf['noData']===void 0x0||_0x1b9860!==_0x332fbf[_0x1a823d(0x3b4)]))return{'occupied':!0x0,'coreSampleCount':_0x524318*_0xaad7bb*_0x3cf715};}}return{'occupied':!0x1,'coreSampleCount':_0x524318*_0xaad7bb*_0x3cf715};},findAtlasLayout=(_0x3821c2,_0x43d12d,_0x2beb0a,_0x224c7f,_0x7c664d)=>{const _0x35761f=_0x4d4387;if(_0x3821c2<=0x0)return null;let _0x465af7=Math[_0x35761f(0x3a5)](_0x7c664d/_0x43d12d),_0x23796a=Math['floor'](_0x7c664d/_0x2beb0a),_0x48a9df=Math['floor'](_0x7c664d/_0x224c7f),_0x1dae06=null;for(let _0x109f5d=0x1;_0x109f5d<=_0x465af7;_0x109f5d+=0x1)for(let _0x47d485=0x1;_0x47d485<=_0x23796a;_0x47d485+=0x1){let _0x314065=Math['min'](_0x48a9df,Math[_0x35761f(0x3a5)](_0x3821c2/(_0x109f5d*_0x47d485))),_0x2c7cf3=_0x109f5d*_0x47d485*_0x314065;_0x314065<=0x0||_0x2c7cf3<=(_0x1dae06?.[_0x35761f(0x3ee)]??0x0)||(_0x1dae06={'slotCountX':_0x109f5d,'slotCountY':_0x47d485,'slotCountZ':_0x314065,'slotCount':_0x2c7cf3,'textureCount':0x1,'capacity':_0x2c7cf3});}return _0x1dae06;},getSlotCoordinate=(_0x216504,_0x158ae6)=>{const _0xe3f5a=_0x4d4387;let _0x44f4bd=_0x158ae6[_0xe3f5a(0x1db)]*_0x158ae6[_0xe3f5a(0x115)],_0x33e8f3=Math[_0xe3f5a(0x3a5)](_0x216504/_0x44f4bd),_0x46d62b=_0x216504-_0x33e8f3*_0x44f4bd,_0x110656=Math[_0xe3f5a(0x3a5)](_0x46d62b/_0x158ae6[_0xe3f5a(0x1db)]);return[_0x46d62b-_0x110656*_0x158ae6[_0xe3f5a(0x1db)],_0x110656,_0x33e8f3];},findLeastRecentlyUsed=(_0x2977bb,_0x49400d)=>{const _0x449881=_0x4d4387;let _0x5c2a6e=null;for(let _0x25c168 of _0x2977bb)_0x25c168[_0x449881(0x135)]!==_0x49400d&&(!_0x5c2a6e||_0x25c168['lastUsedFrame']<_0x5c2a6e[_0x449881(0x135)])&&(_0x5c2a6e=_0x25c168);return _0x5c2a6e;},createPaddedTextureData=(_0x2696a8,_0xfbcd6b,_0x538953,_0x353206)=>{const _0x342d3e=_0x4d4387;let _0x1e61da=_0xfbcd6b*Float32Array[_0x342d3e(0x322)],_0xccdbed=Math[_0x342d3e(0x14e)](_0x1e61da/0x100)*0x100;if(_0x1e61da===_0xccdbed)return{'values':_0x2696a8,'bytesPerRow':_0xccdbed};let _0x3953ed=_0xccdbed/Float32Array[_0x342d3e(0x322)],_0x11f5fa=new Float32Array(_0x3953ed*_0x538953*_0x353206);for(let _0x48f84c=0x0;_0x48f84c<_0x353206;_0x48f84c+=0x1)for(let _0x500a3e=0x0;_0x500a3e<_0x538953;_0x500a3e+=0x1){let _0xd7ded8=(_0x48f84c*_0x538953+_0x500a3e)*_0xfbcd6b,_0x3623f1=(_0x48f84c*_0x538953+_0x500a3e)*_0x3953ed;_0x11f5fa[_0x342d3e(0x11e)](_0x2696a8[_0x342d3e(0x38b)](_0xd7ded8,_0xd7ded8+_0xfbcd6b),_0x3623f1);}return{'values':_0x11f5fa,'bytesPerRow':_0xccdbed};};var WebgpuBrickAtlas=class{[_0x4d4387(0x2d2)];[_0x4d4387(0x377)];['memoryHardLimitBytes'];[_0x4d4387(0x299)]=null;[_0x4d4387(0x3db)]=null;[_0x4d4387(0x410)]=[];[_0x4d4387(0x1f8)]=[];['pageTableBuffer']=null;['pageTableValues']=new Uint32Array();[_0x4d4387(0x246)]=new Map();['residentBySlotIndex']=new Map();[_0x4d4387(0x33b)]=0x0;constructor(_0x25b474,_0x18a8f9=0x20000000,_0x3577e0=_0x18a8f9){const _0x560765=_0x4d4387;if(!Number['isFinite'](_0x18a8f9)||!Number[_0x560765(0x240)](_0x3577e0)||_0x18a8f9<=0x0||_0x3577e0<=0x0)throw Error(_0x560765(0x159));this[_0x560765(0x2d2)]=_0x25b474,this[_0x560765(0x377)]=Math['min'](_0x18a8f9,_0x3577e0),this[_0x560765(0x15a)]=_0x3577e0;}get[_0x4d4387(0x15d)](){const _0xbe89b0=_0x4d4387;if(!this['metadata'])throw Error(_0xbe89b0(0x3f6));return this[_0xbe89b0(0x299)];}get[_0x4d4387(0x407)](){const _0x2aab58=_0x4d4387;if(!this[_0x2aab58(0x3db)])throw Error(_0x2aab58(0x111));return this[_0x2aab58(0x3db)];}get[_0x4d4387(0x18d)](){const _0x2c0cb1=_0x4d4387;return this[_0x2c0cb1(0x246)][_0x2c0cb1(0x33e)];}get[_0x4d4387(0x258)](){const _0x51c536=_0x4d4387;if(!this[_0x51c536(0x299)]||!this[_0x51c536(0x3db)])return{'logicalBrickCount':0x0,'atlasCapacity':0x0,'gpuBytes':0x0,'memoryLimitBytes':this[_0x51c536(0x15a)],'budgetLimited':!0x1,'skippedSamples':0x0,'skippedCells':0x0};let _0x42c70c=getBrickCount(this[_0x51c536(0x299)]),_0x3fbefb=_0x42c70c[0x0]*_0x42c70c[0x1]*_0x42c70c[0x2],_0x4cbd97=this[_0x51c536(0x299)][_0x51c536(0x2dd)]+0x2,_0x2c3e8d=this['metadata']['brickHeight']+0x2,_0x4d0a8f=this[_0x51c536(0x299)][_0x51c536(0x16d)]+0x2,_0x4c0f58=_0x4cbd97*_0x2c3e8d*_0x4d0a8f*this[_0x51c536(0x3db)]['capacity']*Float32Array[_0x51c536(0x322)],_0x2ac8de=_0x3fbefb*0x4*Uint32Array[_0x51c536(0x322)],_0x165e7b=0x0,_0x46f11a=0x0;for(let _0x4bc9be of this[_0x51c536(0x246)][_0x51c536(0x39c)]())_0x4bc9be[_0x51c536(0x241)]||(_0x46f11a+=0x1,_0x165e7b+=_0x4bc9be[_0x51c536(0x314)]);return{'logicalBrickCount':_0x3fbefb,'atlasCapacity':this[_0x51c536(0x3db)]['capacity'],'gpuBytes':_0x4c0f58+_0x2ac8de,'memoryLimitBytes':this[_0x51c536(0x15a)],'budgetLimited':this['layout'][_0x51c536(0x123)]<_0x3fbefb,'skippedSamples':_0x165e7b,'skippedCells':_0x46f11a};}['configure'](_0x2bb79b){const _0x50217c=_0x4d4387;validateMetadata(_0x2bb79b);let _0x44a9db=_0x2bb79b[_0x50217c(0x2dd)]+0x2,_0x543ce6=_0x2bb79b[_0x50217c(0x261)]+0x2,_0x3893d6=_0x2bb79b[_0x50217c(0x16d)]+0x2,_0x2c40e0=getBrickCount(_0x2bb79b),_0x5e37eb=_0x2c40e0[0x0]*_0x2c40e0[0x1]*_0x2c40e0[0x2],_0x3fcef1=_0x5e37eb*0x4*Uint32Array[_0x50217c(0x322)],_0x3a56fd=Math[_0x50217c(0x279)](this[_0x50217c(0x377)],this[_0x50217c(0x15a)])-_0x3fcef1;if(_0x3a56fd<=0x0)throw Error(_0x50217c(0x372));let _0x3dc380=_0x44a9db*_0x543ce6*_0x3893d6*Float32Array[_0x50217c(0x322)],_0x37ef14=Math[_0x50217c(0x279)](_0x5e37eb,Math[_0x50217c(0x3a5)](_0x3a56fd/_0x3dc380)),_0x59bfdc=Math['max'](0x1,Math[_0x50217c(0x3a5)](0x4000000/_0x3dc380)),_0x365f41=Math[_0x50217c(0x279)](0x8,Math['max'](0x1,Math['ceil'](_0x37ef14/_0x59bfdc))),_0x17cf64=findAtlasLayout(Math['max'](0x1,Math[_0x50217c(0x3a5)](_0x37ef14/_0x365f41)),_0x44a9db,_0x543ce6,_0x3893d6,this[_0x50217c(0x2d2)][_0x50217c(0x188)]['maxTextureDimension3D']);if(!_0x17cf64)throw Error('Unable\x20to\x20allocate\x20a\x20WebGPU\x20R32F\x20volume\x20atlas\x20within\x20device\x20limits.\x20无法在设备限制内分配\x20WebGPU\x20R32F\x20体积图集。');let _0x18a7fc={..._0x17cf64,'textureCount':_0x365f41,'capacity':_0x17cf64[_0x50217c(0x3ee)]*_0x365f41},_0x30088d=_0x44a9db*_0x18a7fc[_0x50217c(0x1db)],_0x3cff35=_0x543ce6*_0x18a7fc[_0x50217c(0x115)],_0x2b2c79=_0x3893d6*_0x18a7fc[_0x50217c(0x157)],_0x280ef8=Array[_0x50217c(0x1c5)]({'length':_0x365f41},(_0x2e9969,_0x283b04)=>this[_0x50217c(0x2d2)][_0x50217c(0x1ee)]({'label':'volume\x20brick\x20atlas\x20'+_0x283b04,'size':[_0x30088d,_0x3cff35,_0x2b2c79],'dimension':'3d','format':_0x50217c(0x44f),'usage':GPUTextureUsage['TEXTURE_BINDING']|GPUTextureUsage[_0x50217c(0x2d9)]|GPUTextureUsage[_0x50217c(0x2a2)]})),_0x514b15=this[_0x50217c(0x2d2)][_0x50217c(0x2f0)]({'label':_0x50217c(0x1df),'size':Math[_0x50217c(0x412)](0x10,_0x3fcef1),'usage':GPUBufferUsage['STORAGE']|GPUBufferUsage['COPY_DST']});this['destroyResources'](),this[_0x50217c(0x299)]={..._0x2bb79b},this['layout']=_0x18a7fc,this['atlasTextures']=_0x280ef8,this[_0x50217c(0x1f8)]=_0x280ef8['map'](_0x450e7b=>_0x450e7b[_0x50217c(0x3b6)]({'dimension':'3d'})),this['pageTableBuffer']=_0x514b15,this['pageTableValues']=new Uint32Array(_0x5e37eb*0x4),this['device'][_0x50217c(0x1de)][_0x50217c(0x2f5)](_0x514b15,0x0,this['pageTableValues']);for(let _0x2dc6e0 of _0x280ef8)this[_0x50217c(0x11b)](_0x2dc6e0,_0x30088d,_0x3cff35,_0x2b2c79);this[_0x50217c(0x33b)]+=0x1;}[_0x4d4387(0x3d3)](_0x24c70c,_0x304a56){const _0x4cfbc7=_0x4d4387;let _0x5245e7=this[_0x4cfbc7(0x15d)],_0x464d83=this[_0x4cfbc7(0x407)],_0x13524a=getBrickCount(_0x5245e7),_0x5035f8=_0x13524a[0x0]*_0x13524a[0x1]*_0x13524a[0x2];if(!Number[_0x4cfbc7(0x403)](_0x24c70c[_0x4cfbc7(0x41b)])||_0x24c70c['logicalIndex']<0x0||_0x24c70c[_0x4cfbc7(0x41b)]>=_0x5035f8)throw Error(_0x4cfbc7(0x1f5)+_0x24c70c[_0x4cfbc7(0x41b)]+_0x4cfbc7(0x2e9));let _0x5da5ef=_0x5245e7[_0x4cfbc7(0x2dd)]+0x2,_0xf1a99a=_0x5245e7['brickHeight']+0x2,_0x48ecba=_0x5245e7[_0x4cfbc7(0x16d)]+0x2,_0x4580a4=_0x5da5ef*_0xf1a99a*_0x48ecba;if(_0x24c70c[_0x4cfbc7(0x39c)][_0x4cfbc7(0x27b)]!==_0x4580a4)throw Error('Volume\x20brick\x20'+_0x24c70c['logicalIndex']+_0x4cfbc7(0x20c)+_0x4580a4+_0x4cfbc7(0x2b1)+_0x24c70c[_0x4cfbc7(0x39c)]['length']+_0x4cfbc7(0x12e));let _0x368404=this[_0x4cfbc7(0x246)][_0x4cfbc7(0x40e)](_0x24c70c['logicalIndex'])??this['acquireSlot'](_0x24c70c[_0x4cfbc7(0x41b)],_0x304a56),_0xd1de27=analyzeBrickOccupancy(_0x24c70c,_0x5245e7,_0x13524a),_0x383092=Math['floor'](_0x368404['slotIndex']/_0x464d83[_0x4cfbc7(0x3ee)]),_0x18ecee=getSlotCoordinate(_0x368404[_0x4cfbc7(0x16b)]%_0x464d83[_0x4cfbc7(0x3ee)],_0x464d83),_0x35a9a8=createPaddedTextureData(new Float32Array(_0x24c70c['values']),_0x5da5ef,_0xf1a99a,_0x48ecba);return _0x368404[_0x4cfbc7(0x135)]=_0x304a56,_0x368404[_0x4cfbc7(0x33b)]=this['generation'],_0x368404[_0x4cfbc7(0x241)]=_0xd1de27[_0x4cfbc7(0x241)],_0x368404[_0x4cfbc7(0x314)]=_0xd1de27[_0x4cfbc7(0x449)],this[_0x4cfbc7(0x455)](_0x368404),{'values':_0x35a9a8[_0x4cfbc7(0x39c)],'bytesPerRow':_0x35a9a8['bytesPerRow'],'rowsPerImage':_0xf1a99a,'origin':{'x':_0x18ecee[0x0]*_0x5da5ef,'y':_0x18ecee[0x1]*_0xf1a99a,'z':_0x18ecee[0x2]*_0x48ecba},'extent':[_0x5da5ef,_0xf1a99a,_0x48ecba],'atlasIndex':_0x383092};}['encodePreparedBrickUpload'](_0x29752f,_0x1929a4,_0x245c36,_0xf0380c){const _0xd39042=_0x4d4387;_0x29752f['copyBufferToTexture']({'buffer':_0x1929a4,'offset':_0x245c36,'bytesPerRow':_0xf0380c[_0xd39042(0x19d)],'rowsPerImage':_0xf0380c[_0xd39042(0x367)]},{'texture':this[_0xd39042(0x375)](_0xf0380c['atlasIndex']),'origin':_0xf0380c[_0xd39042(0x1ad)]},_0xf0380c[_0xd39042(0x215)]);}[_0x4d4387(0x331)](_0x3629e6,_0x2d188e){const _0x5632d0=_0x4d4387;for(let _0x4f9d14 of _0x3629e6){let _0x9c7266=this[_0x5632d0(0x246)][_0x5632d0(0x40e)](_0x4f9d14);_0x9c7266&&(_0x9c7266[_0x5632d0(0x135)]=_0x2d188e);}}['createBindGroup'](_0x2431cc,_0x2bd320){const _0xa588cf=_0x4d4387;if(this[_0xa588cf(0x1f8)][_0xa588cf(0x27b)]===0x0||!this[_0xa588cf(0x2e6)])throw Error(_0xa588cf(0x468));return this[_0xa588cf(0x2d2)][_0xa588cf(0x23f)]({'label':_0xa588cf(0x1b0),'layout':_0x2431cc,'entries':[...Array[_0xa588cf(0x1c5)]({'length':0x8},(_0x3b2767,_0x5152a3)=>({'binding':_0x5152a3,'resource':this[_0xa588cf(0x1f8)][_0x5152a3]??this[_0xa588cf(0x1f8)][0x0]})),{'binding':0x8,'resource':{'buffer':this[_0xa588cf(0x2e6)]}},{'binding':0x9,'resource':{'buffer':_0x2bd320}}]});}['destroy'](){const _0x2fca0f=_0x4d4387;this[_0x2fca0f(0x43e)](),this[_0x2fca0f(0x299)]=null,this[_0x2fca0f(0x3db)]=null,this[_0x2fca0f(0x3ac)]=new Uint32Array();}[_0x4d4387(0x31b)](_0x38657d,_0x3c7de0){const _0x406ec6=_0x4d4387;let _0x34da99=this[_0x406ec6(0x407)],_0x4f8ca8=this[_0x406ec6(0x1eb)][_0x406ec6(0x33e)];if(_0x4f8ca8>=_0x34da99[_0x406ec6(0x123)]){let _0x45a91d=findLeastRecentlyUsed(this[_0x406ec6(0x1eb)]['values'](),_0x3c7de0);if(!_0x45a91d)throw Error(_0x406ec6(0x21d));_0x4f8ca8=_0x45a91d[_0x406ec6(0x16b)],this[_0x406ec6(0x22f)](_0x45a91d['logicalIndex']),this[_0x406ec6(0x246)][_0x406ec6(0x3aa)](_0x45a91d[_0x406ec6(0x41b)]),this[_0x406ec6(0x1eb)][_0x406ec6(0x3aa)](_0x4f8ca8);}let _0x3d85ca={'logicalIndex':_0x38657d,'slotIndex':_0x4f8ca8,'lastUsedFrame':_0x3c7de0,'generation':this[_0x406ec6(0x33b)],'occupied':!0x1,'skippedSampleCount':0x0};return this[_0x406ec6(0x246)][_0x406ec6(0x11e)](_0x38657d,_0x3d85ca),this[_0x406ec6(0x1eb)]['set'](_0x4f8ca8,_0x3d85ca),_0x3d85ca;}['writePageEntry'](_0x1f914d){const _0x3be024=_0x4d4387;let _0x3895a6=_0x1f914d['logicalIndex']*0x4;this[_0x3be024(0x3ac)][_0x3895a6]=_0x1f914d[_0x3be024(0x16b)]%this[_0x3be024(0x407)][_0x3be024(0x3ee)]+0x1,this[_0x3be024(0x3ac)][_0x3895a6+0x1]=_0x1f914d[_0x3be024(0x33b)],this[_0x3be024(0x3ac)][_0x3895a6+0x2]=+!!_0x1f914d[_0x3be024(0x241)],this[_0x3be024(0x3ac)][_0x3895a6+0x3]=Math[_0x3be024(0x3a5)](_0x1f914d[_0x3be024(0x16b)]/this['atlasLayout'][_0x3be024(0x3ee)]),this[_0x3be024(0x2d2)]['queue'][_0x3be024(0x2f5)](this['getPageTableBuffer'](),_0x3895a6*Uint32Array[_0x3be024(0x322)],this[_0x3be024(0x3ac)],_0x3895a6,0x4);}['clearPageEntry'](_0x4affa8){const _0xe96276=_0x4d4387;let _0x822f45=_0x4affa8*0x4;this[_0xe96276(0x3ac)][_0xe96276(0x192)](0x0,_0x822f45,_0x822f45+0x4),this[_0xe96276(0x2d2)][_0xe96276(0x1de)][_0xe96276(0x2f5)](this[_0xe96276(0x326)](),_0x822f45*Uint32Array[_0xe96276(0x322)],this[_0xe96276(0x3ac)],_0x822f45,0x4);}[_0x4d4387(0x375)](_0x1ed94c){const _0x1378c7=_0x4d4387;let _0xe37d1b=this[_0x1378c7(0x410)][_0x1ed94c];if(!_0xe37d1b)throw Error('WebGPU\x20volume\x20atlas\x20texture\x20is\x20unavailable.\x20WebGPU\x20体积图集纹理不可用。');return _0xe37d1b;}[_0x4d4387(0x11b)](_0x5d1826,_0x14ebd5,_0x3b505a,_0x140318){const _0x34b322=_0x4d4387;let _0x45990e=this[_0x34b322(0x2d2)][_0x34b322(0x330)]({'label':'volume\x20atlas\x20clear\x20shader','code':_0x34b322(0x197)}),_0x5e9729=this[_0x34b322(0x2d2)]['createComputePipeline']({'label':_0x34b322(0x12a),'layout':_0x34b322(0x1f0),'compute':{'module':_0x45990e,'entryPoint':_0x34b322(0x12d)}}),_0x3d3323=this[_0x34b322(0x2d2)][_0x34b322(0x23f)]({'label':_0x34b322(0x467),'layout':_0x5e9729[_0x34b322(0x364)](0x0),'entries':[{'binding':0x0,'resource':_0x5d1826['createView']({'dimension':'3d'})}]}),_0x4edf7e=this[_0x34b322(0x2d2)][_0x34b322(0x1d0)]({'label':'volume\x20atlas\x20clear'}),_0x309da1=_0x4edf7e[_0x34b322(0x12b)]({'label':_0x34b322(0x211)});_0x309da1[_0x34b322(0x14f)](_0x5e9729),_0x309da1[_0x34b322(0x378)](0x0,_0x3d3323),_0x309da1[_0x34b322(0x26f)](Math[_0x34b322(0x14e)](_0x14ebd5/0x4),Math['ceil'](_0x3b505a/0x4),Math['ceil'](_0x140318/0x4)),_0x309da1[_0x34b322(0x356)](),this[_0x34b322(0x2d2)][_0x34b322(0x1de)][_0x34b322(0x3c1)]([_0x4edf7e[_0x34b322(0x30a)]()]);}['getPageTableBuffer'](){const _0x4de84c=_0x4d4387;if(!this[_0x4de84c(0x2e6)])throw Error(_0x4de84c(0x1a8));return this['pageTableBuffer'];}[_0x4d4387(0x43e)](){const _0x554a0f=_0x4d4387;for(let _0x3588f8 of this[_0x554a0f(0x410)])_0x3588f8[_0x554a0f(0x16a)]();this['pageTableBuffer']?.[_0x554a0f(0x16a)](),this[_0x554a0f(0x410)]=[],this[_0x554a0f(0x1f8)]=[],this[_0x554a0f(0x2e6)]=null,this[_0x554a0f(0x246)][_0x554a0f(0x352)](),this['residentBySlotIndex']['clear']();}},WebgpuSceneAttachments=class{[_0x4d4387(0x2d2)];[_0x4d4387(0x16f)]=null;[_0x4d4387(0x1bb)]=null;[_0x4d4387(0x13c)]=0x0;['height']=0x0;constructor(_0x4a0d5f){const _0x2aa918=_0x4d4387;this[_0x2aa918(0x2d2)]=_0x4a0d5f;}get[_0x4d4387(0x25b)](){const _0x5a58bd=_0x4d4387;if(!this[_0x5a58bd(0x1bb)])throw Error('WebGPU\x20scene\x20depth\x20attachment\x20is\x20not\x20initialized.\x20WebGPU\x20场景深度附件尚未初始化。');return this[_0x5a58bd(0x1bb)];}[_0x4d4387(0x21c)](_0x42a924,_0x7f8a59){const _0x560cf0=_0x4d4387;if(this[_0x560cf0(0x13c)]===_0x42a924&&this[_0x560cf0(0x3cb)]===_0x7f8a59)return;let _0x57eb1a=this['device'][_0x560cf0(0x1ee)]({'label':'volume\x20scene\x20depth','size':[_0x42a924,_0x7f8a59],'format':'depth32float','usage':GPUTextureUsage['RENDER_ATTACHMENT']|GPUTextureUsage[_0x560cf0(0x3e8)]}),_0x488b4d=this[_0x560cf0(0x16f)];this[_0x560cf0(0x16f)]=_0x57eb1a,this[_0x560cf0(0x1bb)]=_0x57eb1a[_0x560cf0(0x3b6)](),this[_0x560cf0(0x13c)]=_0x42a924,this[_0x560cf0(0x3cb)]=_0x7f8a59,_0x488b4d?.[_0x560cf0(0x16a)]();}['destroy'](){const _0x444f70=_0x4d4387;this['depthTexture']?.[_0x444f70(0x16a)](),this[_0x444f70(0x16f)]=null,this[_0x444f70(0x1bb)]=null,this[_0x444f70(0x13c)]=0x0,this[_0x444f70(0x3cb)]=0x0;}},WebgpuSceneMeshResources=class{[_0x4d4387(0x2d2)];[_0x4d4387(0x313)]=[];constructor(_0x1ef577){const _0x572976=_0x4d4387;this[_0x572976(0x2d2)]=_0x1ef577;}get[_0x4d4387(0x173)](){const _0x5894d3=_0x4d4387;return this[_0x5894d3(0x313)]['length'];}['replace'](_0x5c573b){const _0x42fd30=_0x4d4387;let _0x5131c0=[];try{for(let _0xb7b24e of _0x5c573b)_0x5131c0[_0x42fd30(0x2a3)](this['createResource'](_0xb7b24e));}catch(_0x434fef){for(let _0xac8121 of _0x5131c0)_0xac8121[_0x42fd30(0x251)][_0x42fd30(0x16a)]();throw _0x434fef;}this[_0x42fd30(0x43e)](),this[_0x42fd30(0x313)]=_0x5131c0;}[_0x4d4387(0x2bf)](_0x28c937,_0x183b97,_0x9be382){const _0x3ada8e=_0x4d4387;for(let _0x3e4d47 of this[_0x3ada8e(0x313)])_0x3e4d47['topology']!==_0x183b97||_0x3e4d47[_0x3ada8e(0x471)]!==_0x9be382||(_0x28c937[_0x3ada8e(0x34e)](0x0,_0x3e4d47[_0x3ada8e(0x251)]),_0x28c937[_0x3ada8e(0x2bf)](_0x3e4d47[_0x3ada8e(0x43b)]));}[_0x4d4387(0x16a)](){const _0x254414=_0x4d4387;this[_0x254414(0x43e)]();}['createResource'](_0x560ba6){const _0x627957=_0x4d4387;if(_0x560ba6[_0x627957(0x45c)]['length']===0x0||_0x560ba6[_0x627957(0x45c)][_0x627957(0x27b)]%0x7!=0x0)throw Error(_0x627957(0x1d8)+_0x560ba6['id']+_0x627957(0x434));let _0x18e853=new Float32Array(_0x560ba6[_0x627957(0x45c)]),_0x5de1d1=this[_0x627957(0x2d2)]['createBuffer']({'label':'volume\x20scene\x20mesh\x20'+_0x560ba6['id'],'size':_0x18e853['byteLength'],'usage':GPUBufferUsage[_0x627957(0x298)]|GPUBufferUsage[_0x627957(0x2d9)]});return this['device'][_0x627957(0x1de)][_0x627957(0x2f5)](_0x5de1d1,0x0,_0x18e853),{'id':_0x560ba6['id'],'topology':_0x560ba6[_0x627957(0x155)],'depthMode':_0x560ba6[_0x627957(0x471)],'buffer':_0x5de1d1,'vertexCount':_0x560ba6[_0x627957(0x45c)][_0x627957(0x27b)]/0x7};}[_0x4d4387(0x43e)](){const _0x5e0039=_0x4d4387;for(let _0x5a930a of this[_0x5e0039(0x313)])_0x5a930a[_0x5e0039(0x251)][_0x5e0039(0x16a)]();this[_0x5e0039(0x313)]=[];}},WebgpuSliceResources=class{['device'];[_0x4d4387(0x3db)];[_0x4d4387(0x313)]=[];['uniformUpdateCount']=0x0;['resourceRebuildCount']=0x0;constructor(_0x117b3c,_0x199a06){const _0x4d4973=_0x4d4387;this[_0x4d4973(0x2d2)]=_0x117b3c,this[_0x4d4973(0x3db)]=_0x199a06;}get[_0x4d4387(0x173)](){const _0x321112=_0x4d4387;return this['resources'][_0x321112(0x27b)];}get[_0x4d4387(0x258)](){const _0x52e5d2=_0x4d4387;return{'uniformUpdateCount':this[_0x52e5d2(0x1a0)],'resourceRebuildCount':this[_0x52e5d2(0x2df)]};}[_0x4d4387(0x39b)](_0x62a6c){const _0x36e31c=_0x4d4387;let _0x31def1=new Map(this[_0x36e31c(0x313)]['map'](_0x2dba2d=>[_0x2dba2d['id'],_0x2dba2d])),_0x21ef2e=[],_0x496fd8=new Set();try{for(let _0x9ec8be of _0x62a6c){if(!_0x9ec8be[_0x36e31c(0x3d7)])continue;if(_0x496fd8[_0x36e31c(0x2d5)](_0x9ec8be['id']))throw Error(_0x36e31c(0x416)+_0x9ec8be['id']+_0x36e31c(0x145));_0x496fd8[_0x36e31c(0x45d)](_0x9ec8be['id']);let _0x560c08=this[_0x36e31c(0x34d)](_0x9ec8be),_0x3332bc=_0x31def1[_0x36e31c(0x40e)](_0x9ec8be['id']);if(!_0x3332bc){_0x21ef2e[_0x36e31c(0x2a3)](this[_0x36e31c(0x3d6)](_0x9ec8be,_0x560c08));continue;}_0x31def1[_0x36e31c(0x3aa)](_0x9ec8be['id']),_0x3332bc[_0x36e31c(0x471)]=_0x9ec8be[_0x36e31c(0x471)],this[_0x36e31c(0x1d7)](_0x3332bc[_0x36e31c(0x39c)],_0x560c08)||(this[_0x36e31c(0x2d2)][_0x36e31c(0x1de)][_0x36e31c(0x2f5)](_0x3332bc['buffer'],0x0,_0x560c08),_0x3332bc[_0x36e31c(0x39c)]=_0x560c08,this[_0x36e31c(0x1a0)]+=0x1),_0x21ef2e[_0x36e31c(0x2a3)](_0x3332bc);}}catch(_0x42ee98){for(let _0x43ad4e of _0x21ef2e)this[_0x36e31c(0x313)][_0x36e31c(0x2de)](_0x43ad4e)||_0x43ad4e['buffer'][_0x36e31c(0x16a)]();throw _0x42ee98;}for(let _0x4e444b of _0x31def1[_0x36e31c(0x39c)]())_0x4e444b['buffer'][_0x36e31c(0x16a)]();this[_0x36e31c(0x313)]=_0x21ef2e;}[_0x4d4387(0x2bf)](_0x5313d1,_0x5645e4,_0x51b66c){const _0x222e33=_0x4d4387;_0x5313d1[_0x222e33(0x14f)](_0x5645e4);for(let _0x12e47d of this[_0x222e33(0x313)])_0x12e47d[_0x222e33(0x471)]===_0x51b66c&&(_0x5313d1[_0x222e33(0x378)](0x3,_0x12e47d['bindGroup']),_0x5313d1[_0x222e33(0x2bf)](0x1800));}[_0x4d4387(0x16a)](){const _0x153b57=_0x4d4387;this[_0x153b57(0x43e)]();}[_0x4d4387(0x34d)](_0x3d891b){const _0x2dbd63=_0x4d4387;if(!Number['isFinite'](_0x3d891b[_0x2dbd63(0x1cc)])||_0x3d891b['position']<0x0||_0x3d891b[_0x2dbd63(0x1cc)]>0x1)throw Error(_0x2dbd63(0x45b)+_0x3d891b['id']+_0x2dbd63(0x172));let _0x683a66=_0x3d891b[_0x2dbd63(0x347)]==='x'?0x0:_0x3d891b[_0x2dbd63(0x347)]==='y'?0x1:0x2,_0x1ce560=_0x3d891b[_0x2dbd63(0x204)]??[0x0,0x0,0x0,0x0];if(_0x1ce560[_0x2dbd63(0x177)](_0x284f43=>!Number['isFinite'](_0x284f43)||_0x284f43<0x0||_0x284f43>0x1))throw Error(_0x2dbd63(0x45b)+_0x3d891b['id']+_0x2dbd63(0x214));return new Float32Array([_0x683a66,_0x3d891b['position'],_0x3d891b['opacity']??0x1,0x0,..._0x1ce560]);}[_0x4d4387(0x3d6)](_0xf13eaf,_0x424cd3){const _0x374992=_0x4d4387;let _0x13cbe2=this[_0x374992(0x2d2)][_0x374992(0x2f0)]({'label':_0x374992(0x265)+_0xf13eaf['id'],'size':0x20,'usage':GPUBufferUsage[_0x374992(0x3ca)]|GPUBufferUsage[_0x374992(0x2d9)]});this[_0x374992(0x2d2)][_0x374992(0x1de)][_0x374992(0x2f5)](_0x13cbe2,0x0,_0x424cd3);let _0x29b0ff=this['device'][_0x374992(0x23f)]({'layout':this['layout'],'entries':[{'binding':0x0,'resource':{'buffer':_0x13cbe2}}]});return this['resourceRebuildCount']+=0x1,{'id':_0xf13eaf['id'],'depthMode':_0xf13eaf['depthMode'],'buffer':_0x13cbe2,'bindGroup':_0x29b0ff,'values':_0x424cd3};}['valuesEqual'](_0xdce557,_0x2d38dc){for(let _0x41dde4=0x0;_0x41dde4<_0xdce557['length'];_0x41dde4+=0x1)if(_0xdce557[_0x41dde4]!==_0x2d38dc[_0x41dde4])return!0x1;return!0x0;}[_0x4d4387(0x43e)](){const _0x2cf5ed=_0x4d4387;for(let _0x316846 of this[_0x2cf5ed(0x313)])_0x316846[_0x2cf5ed(0x251)][_0x2cf5ed(0x16a)]();this[_0x2cf5ed(0x313)]=[];}};const createStorageBuffer=(_0x2507d1,_0x2aa4e7,_0x5b5896)=>{const _0x408e8c=_0x4d4387;let _0x53edbe=_0x2507d1[_0x408e8c(0x2f0)]({'label':_0x5b5896,'size':Math[_0x408e8c(0x412)](0x4,_0x2aa4e7[_0x408e8c(0x13e)]),'usage':GPUBufferUsage[_0x408e8c(0x359)]|GPUBufferUsage[_0x408e8c(0x2d9)]});return _0x2aa4e7[_0x408e8c(0x13e)]>0x0&&_0x2507d1[_0x408e8c(0x1de)]['writeBuffer'](_0x53edbe,0x0,_0x2aa4e7),_0x53edbe;},validateStops$1=(_0x5bae51,_0x1bcc0e)=>{const _0x5d15f4=_0x4d4387;if(_0x5bae51[_0x5d15f4(0x27b)]===0x0||_0x1bcc0e['length']===0x0)throw Error('Volume\x20color\x20and\x20opacity\x20stops\x20cannot\x20be\x20empty.\x20体积颜色和透明度色标不能为空。');for(let _0x51cc47=0x1;_0x51cc47<_0x5bae51[_0x5d15f4(0x27b)];_0x51cc47+=0x1)if(_0x5bae51[_0x51cc47][_0x5d15f4(0x1e9)]<_0x5bae51[_0x51cc47-0x1][_0x5d15f4(0x1e9)])throw Error(_0x5d15f4(0x1b9));for(let _0x337d73=0x0;_0x337d73<_0x1bcc0e[_0x5d15f4(0x27b)];_0x337d73+=0x1){if(_0x1bcc0e[_0x337d73]['opacity']<0x0||_0x1bcc0e[_0x337d73]['opacity']>0x1)throw Error('Volume\x20opacity\x20stops\x20must\x20be\x20between\x20zero\x20and\x20one.\x20体积透明度色标必须位于零到一之间。');if(_0x337d73>0x0&&_0x1bcc0e[_0x337d73][_0x5d15f4(0x1e9)]<_0x1bcc0e[_0x337d73-0x1][_0x5d15f4(0x1e9)])throw Error(_0x5d15f4(0x398));}};var WebgpuTransferResources=class{[_0x4d4387(0x2d2)];[_0x4d4387(0x245)]=null;[_0x4d4387(0x46e)]=null;['opacityValuesBuffer']=null;['opacityBuffer']=null;[_0x4d4387(0x1b1)]=0x0;[_0x4d4387(0x3bd)]=0x0;constructor(_0x3681da){this['device']=_0x3681da;}get[_0x4d4387(0x10a)](){const _0x53d81a=_0x4d4387;return[this['colorStopCount'],this[_0x53d81a(0x3bd)]];}[_0x4d4387(0x1f4)](_0x2795a0,_0x12f971){const _0x4b2dbd=_0x4d4387;validateStops$1(_0x2795a0,_0x12f971);let _0x2cf19a=new Float32Array(_0x2795a0[_0x4b2dbd(0x27b)]),_0x145408=new Float32Array(_0x2795a0['length']*0x4),_0x5acf5a=new Float32Array(_0x12f971[_0x4b2dbd(0x27b)]),_0x5c719b=new Float32Array(_0x12f971[_0x4b2dbd(0x27b)]);for(let _0x5c2d02=0x0;_0x5c2d02<_0x2795a0[_0x4b2dbd(0x27b)];_0x5c2d02+=0x1)_0x2cf19a[_0x5c2d02]=_0x2795a0[_0x5c2d02]['value'],_0x145408[_0x4b2dbd(0x11e)](_0x2795a0[_0x5c2d02][_0x4b2dbd(0x15f)],_0x5c2d02*0x4);for(let _0x5457e7=0x0;_0x5457e7<_0x12f971[_0x4b2dbd(0x27b)];_0x5457e7+=0x1)_0x5acf5a[_0x5457e7]=_0x12f971[_0x5457e7][_0x4b2dbd(0x1e9)],_0x5c719b[_0x5457e7]=_0x12f971[_0x5457e7][_0x4b2dbd(0x29d)];let _0x616325=[createStorageBuffer(this[_0x4b2dbd(0x2d2)],_0x2cf19a,_0x4b2dbd(0x2ad)),createStorageBuffer(this[_0x4b2dbd(0x2d2)],_0x145408,_0x4b2dbd(0x362)),createStorageBuffer(this['device'],_0x5acf5a,'volume\x20opacity\x20stop\x20values'),createStorageBuffer(this[_0x4b2dbd(0x2d2)],_0x5c719b,_0x4b2dbd(0x3d4))];this[_0x4b2dbd(0x296)](),this[_0x4b2dbd(0x245)]=_0x616325[0x0],this[_0x4b2dbd(0x46e)]=_0x616325[0x1],this[_0x4b2dbd(0x3e4)]=_0x616325[0x2],this[_0x4b2dbd(0x451)]=_0x616325[0x3],this[_0x4b2dbd(0x1b1)]=_0x2795a0[_0x4b2dbd(0x27b)],this[_0x4b2dbd(0x3bd)]=_0x12f971[_0x4b2dbd(0x27b)];}[_0x4d4387(0x23f)](_0x3f7065){const _0x25e286=_0x4d4387;if(!this['colorValuesBuffer']||!this[_0x25e286(0x46e)]||!this[_0x25e286(0x3e4)]||!this[_0x25e286(0x451)])throw Error(_0x25e286(0x10f));return this[_0x25e286(0x2d2)]['createBindGroup']({'label':_0x25e286(0x1a5),'layout':_0x3f7065,'entries':[{'binding':0x0,'resource':{'buffer':this[_0x25e286(0x245)]}},{'binding':0x1,'resource':{'buffer':this[_0x25e286(0x46e)]}},{'binding':0x2,'resource':{'buffer':this[_0x25e286(0x3e4)]}},{'binding':0x3,'resource':{'buffer':this['opacityBuffer']}}]});}['destroy'](){const _0x554fc8=_0x4d4387;this[_0x554fc8(0x296)](),this[_0x554fc8(0x1b1)]=0x0,this[_0x554fc8(0x3bd)]=0x0;}[_0x4d4387(0x296)](){const _0x1e08a5=_0x4d4387;this['colorValuesBuffer']?.[_0x1e08a5(0x16a)](),this['colorBuffer']?.[_0x1e08a5(0x16a)](),this[_0x1e08a5(0x3e4)]?.[_0x1e08a5(0x16a)](),this['opacityBuffer']?.[_0x1e08a5(0x16a)](),this['colorValuesBuffer']=null,this[_0x1e08a5(0x46e)]=null,this[_0x1e08a5(0x3e4)]=null,this[_0x1e08a5(0x451)]=null;}};const DEFAULT_MEMORY_TARGET_BYTES=0x200*0x400*0x400,IDENTITY_MATRIX$1=[0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1],DEFAULT_COLOR_STOPS=[{'value':0x0,'color':[0x0,0x0,0x1,0x1]},{'value':0x1,'color':[0x1,0x0,0x0,0x1]}],DEFAULT_OPACITY_STOPS=[{'value':0x0,'opacity':0x0},{'value':0x1,'opacity':0x1}],premultipliedBlend$1=()=>({'color':{'srcFactor':_0x4d4387(0x295),'dstFactor':_0x4d4387(0x1d3),'operation':_0x4d4387(0x45d)},'alpha':{'srcFactor':_0x4d4387(0x295),'dstFactor':_0x4d4387(0x1d3),'operation':_0x4d4387(0x45d)}}),validateMatrix=(_0x194e50,_0xa32521)=>{const _0x2ecdb1=_0x4d4387;if(_0x194e50[_0x2ecdb1(0x27b)]!==0x10||_0x194e50[_0x2ecdb1(0x177)](_0x375a9f=>!Number[_0x2ecdb1(0x240)](_0x375a9f)))throw Error(_0xa32521+_0x2ecdb1(0x3b5)+_0xa32521+'\x20必须包含十六个有限数值。');},validateNonNegative=(_0x4c9431,_0x34c069)=>{const _0x92424c=_0x4d4387;if(!Number[_0x92424c(0x240)](_0x4c9431)||_0x4c9431<0x0)throw Error(_0x34c069+_0x92424c(0x236)+_0x34c069+'\x20必须是非负有限数值。');return _0x4c9431;},validatePositive=(_0x5a92f8,_0x1cceff)=>{const _0x41547f=_0x4d4387;if(!Number['isFinite'](_0x5a92f8)||_0x5a92f8<=0x0)throw Error(_0x1cceff+_0x41547f(0x2c9)+_0x1cceff+_0x41547f(0x294));return _0x5a92f8;},cloneMeshes=_0x3d06bb=>_0x3d06bb['map'](_0x174a2f=>({..._0x174a2f,'vertices':new Float32Array(_0x174a2f[_0x4d4387(0x45c)])})),estimateBrickUploadBytes=_0x114bf9=>{const _0x42271e=_0x4d4387;let _0x261f08=_0x114bf9[_0x42271e(0x2dd)]+_0x114bf9[_0x42271e(0x3d8)]*0x2,_0x424bc3=_0x114bf9['brickHeight']+_0x114bf9[_0x42271e(0x3d8)]*0x2,_0x155905=_0x114bf9['brickDepth']+_0x114bf9['halo']*0x2;return Math['ceil'](_0x261f08*Float32Array[_0x42271e(0x322)]/0x100)*0x100*_0x424bc3*_0x155905+0x10;};var WebgpuVolumeSceneRenderer=class{[_0x4d4387(0x2d7)];[_0x4d4387(0x382)]='idle';['canvas']=null;[_0x4d4387(0x27e)]=null;[_0x4d4387(0x2d2)]=null;[_0x4d4387(0x452)]=null;['format']=null;[_0x4d4387(0x28c)]=null;[_0x4d4387(0x17b)]=null;['geometryBindGroupLayout']=null;[_0x4d4387(0x32e)]=null;[_0x4d4387(0x126)]=null;[_0x4d4387(0x1f9)]=null;['sliceBindGroupLayout']=null;[_0x4d4387(0x243)]=null;[_0x4d4387(0x306)]=null;[_0x4d4387(0x321)]=null;[_0x4d4387(0x344)]=null;['volumePipeline']=null;[_0x4d4387(0x18c)]=null;[_0x4d4387(0x36d)]=null;['overlayTrianglePipeline']=null;[_0x4d4387(0x3f8)]=null;[_0x4d4387(0x3c6)]=null;[_0x4d4387(0x180)]=null;[_0x4d4387(0x195)]=null;[_0x4d4387(0x2e2)]=null;[_0x4d4387(0x341)]=null;[_0x4d4387(0x21e)]=null;[_0x4d4387(0x337)]=null;['axisResources']=null;['metadata']=null;['camera']={'viewProjection':IDENTITY_MATRIX$1,'inverseViewProjection':IDENTITY_MATRIX$1,'cameraPosition':[0x0,0x0,0x2]};[_0x4d4387(0x19f)]=IDENTITY_MATRIX$1;['inverseModelMatrix']=IDENTITY_MATRIX$1;[_0x4d4387(0x340)]=[0x0,0x0,0x0];[_0x4d4387(0x229)]=[0x1,0x1,0x1];['renderMode']=_0x4d4387(0x1c2);[_0x4d4387(0x29d)]=0.3;[_0x4d4387(0x281)]=0x1;[_0x4d4387(0x165)]=0.005;['volumeDimFactor']=0x1;['colorMode']='smooth';[_0x4d4387(0x267)]=null;[_0x4d4387(0x11d)]=DEFAULT_COLOR_STOPS;[_0x4d4387(0x450)]=DEFAULT_OPACITY_STOPS;[_0x4d4387(0x35b)]=0x0;[_0x4d4387(0x35f)]=0x0;['width']=0x0;[_0x4d4387(0x3cb)]=0x0;[_0x4d4387(0x284)]=0x0;[_0x4d4387(0x293)]=0x0;['cachedProfiles']=[];['cachedSlices']=[];[_0x4d4387(0x239)]=[];[_0x4d4387(0x46c)]=new Map();['pendingBrickUploads']=[];[_0x4d4387(0x332)]=null;[_0x4d4387(0x35a)]=0x0;[_0x4d4387(0x355)]=null;[_0x4d4387(0x248)]=0x0;['uploadedBrickCount']=0x0;['uploadBatchCount']=0x0;[_0x4d4387(0x131)]=0x0;[_0x4d4387(0x3c9)]=!0x1;[_0x4d4387(0x264)]=null;constructor(_0x1b0ac7={}){this['options']={..._0x1b0ac7};}get[_0x4d4387(0x1fd)](){const _0x80e263=_0x4d4387;return this[_0x80e263(0x382)];}get[_0x4d4387(0x258)](){const _0x4b7784=_0x4d4387;let _0x170e77=this[_0x4b7784(0x2e2)]?.[_0x4b7784(0x258)]??{'logicalBrickCount':0x0,'atlasCapacity':0x0,'gpuBytes':0x0,'memoryLimitBytes':this[_0x4b7784(0x2d7)]['memoryHardLimitBytes']??this[_0x4b7784(0x2d7)][_0x4b7784(0x377)]??DEFAULT_MEMORY_TARGET_BYTES,'budgetLimited':!0x1,'skippedSamples':0x0,'skippedCells':0x0},_0xa35cf9=this[_0x4b7784(0x337)]?.['statistics']??{'uniformUpdateCount':0x0,'resourceRebuildCount':0x0};return{'logicalBrickCount':_0x170e77['logicalBrickCount'],'residentBrickCount':this[_0x4b7784(0x2e2)]?.['residentBrickCount']??0x0,'pendingBrickCount':0x0,'atlasCapacity':_0x170e77[_0x4b7784(0x38a)],'gpuBytes':_0x170e77[_0x4b7784(0x317)],'memoryLimitBytes':_0x170e77['memoryLimitBytes'],'budgetLimited':_0x170e77[_0x4b7784(0x3ed)],'frameTimeMilliseconds':this[_0x4b7784(0x293)],'submittedFrameCount':this[_0x4b7784(0x35f)],'uploadedBrickCount':this[_0x4b7784(0x189)],'uploadBatchCount':this[_0x4b7784(0x420)],'maximumUploadBatchBytes':this['maximumUploadBatchBytes'],'sliceUniformUpdateCount':_0xa35cf9[_0x4b7784(0x1a0)],'sliceResourceRebuildCount':_0xa35cf9[_0x4b7784(0x2df)],'skippedSamples':_0x170e77[_0x4b7784(0x41d)],'skippedCells':_0x170e77[_0x4b7784(0x217)]};}[_0x4d4387(0x2ea)](_0x49b7e6){this['frameAvailableCallback']=_0x49b7e6;}async[_0x4d4387(0x33c)](_0x23e54a){const _0x5e79b9=_0x4d4387;if(this[_0x5e79b9(0x382)]===_0x5e79b9(0x3de))throw Error('A\x20destroyed\x20WebGPU\x20volume\x20renderer\x20cannot\x20be\x20initialized\x20again.\x20已销毁的\x20WebGPU\x20体积渲染器不能再次初始化。');let _0x1d840c=++this[_0x5e79b9(0x284)];this['releaseGpuResources'](),this['canvas']=_0x23e54a,this[_0x5e79b9(0x382)]=_0x5e79b9(0x31a);let _0x1f98bc=navigator[_0x5e79b9(0x10c)];if(!_0x1f98bc)throw this[_0x5e79b9(0x382)]=_0x5e79b9(0x263),Error(_0x5e79b9(0x374));let _0x1b57ea=await _0x1f98bc[_0x5e79b9(0x339)]({'powerPreference':this['options'][_0x5e79b9(0x30e)]??_0x5e79b9(0x33a)});if(_0x1d840c!==this[_0x5e79b9(0x284)])return;if(!_0x1b57ea)throw this[_0x5e79b9(0x382)]=_0x5e79b9(0x263),Error(_0x5e79b9(0x37e));let _0x4c687f=await _0x1b57ea[_0x5e79b9(0x290)]();if(_0x1d840c!==this[_0x5e79b9(0x284)]){_0x4c687f[_0x5e79b9(0x16a)]();return;}let _0x4645b1=_0x23e54a[_0x5e79b9(0x136)]('webgpu');if(!_0x4645b1)throw _0x4c687f[_0x5e79b9(0x16a)](),this[_0x5e79b9(0x382)]=_0x5e79b9(0x263),Error(_0x5e79b9(0x315));let _0x1592b3=_0x1f98bc[_0x5e79b9(0x44a)]();_0x4645b1[_0x5e79b9(0x40d)]({'device':_0x4c687f,'format':_0x1592b3,'alphaMode':_0x5e79b9(0x231),'usage':GPUTextureUsage['RENDER_ATTACHMENT']|GPUTextureUsage[_0x5e79b9(0x277)]}),this[_0x5e79b9(0x27e)]=_0x1b57ea,this[_0x5e79b9(0x2d2)]=_0x4c687f,this[_0x5e79b9(0x452)]=_0x4645b1,this[_0x5e79b9(0x350)]=_0x1592b3,_0x4c687f[_0x5e79b9(0x463)](_0x5e79b9(0x387)),this[_0x5e79b9(0x41f)]();let _0xd27856=await _0x4c687f[_0x5e79b9(0x13f)]();if(_0xd27856)throw this[_0x5e79b9(0x216)](),this['lifecycleState']='idle',Error('Failed\x20to\x20create\x20WebGPU\x20volume\x20pipelines:\x20'+_0xd27856[_0x5e79b9(0x2d3)]+'.\x20创建\x20WebGPU\x20体积管线失败。');if(this[_0x5e79b9(0x244)](_0x4c687f),this[_0x5e79b9(0x382)]=_0x5e79b9(0x3d9),this[_0x5e79b9(0x299)]){this['configureSourceResources'](this[_0x5e79b9(0x299)]);let _0x5b1a56=Array[_0x5e79b9(0x1c5)](this[_0x5e79b9(0x46c)][_0x5e79b9(0x44b)]());await Promise['all'](_0x5b1a56[_0x5e79b9(0x45f)](([_0x29b631,_0x579f00])=>this['enqueueBrickUpload']({'logicalIndex':_0x29b631,'values':_0x579f00},!0x1)));}this[_0x5e79b9(0x3e3)](),this[_0x5e79b9(0x419)]()[_0x5e79b9(0x39b)](this['cachedProfiles']),this[_0x5e79b9(0x441)]()[_0x5e79b9(0x39b)](this[_0x5e79b9(0x3a3)]),this[_0x5e79b9(0x2a6)]()['replace'](this[_0x5e79b9(0x239)]),this[_0x5e79b9(0x21c)](_0x23e54a['width']||_0x23e54a[_0x5e79b9(0x127)]||0x1,_0x23e54a['height']||_0x23e54a[_0x5e79b9(0x22c)]||0x1);}[_0x4d4387(0x124)](_0x5a9e57){const _0x504e2f=_0x4d4387;this[_0x504e2f(0x35a)]+=0x1,this[_0x504e2f(0x3fb)](new DOMException(_0x504e2f(0x23a),_0x504e2f(0x225))),this[_0x504e2f(0x299)]={..._0x5a9e57},this[_0x504e2f(0x46c)][_0x504e2f(0x352)](),this[_0x504e2f(0x189)]=0x0,this[_0x504e2f(0x420)]=0x0,this[_0x504e2f(0x131)]=0x0,this[_0x504e2f(0x382)]==='ready'&&this['configureSourceResources'](_0x5a9e57);}[_0x4d4387(0x1e5)](_0x161a3b){return this['enqueueBrickUpload'](_0x161a3b,!0x0);}[_0x4d4387(0x292)](_0x3ffc9f){const _0x3b5e67=_0x4d4387;this[_0x3b5e67(0x2e4)]()['touch'](_0x3ffc9f,this[_0x3b5e67(0x35b)]);for(let _0x2770d5 of _0x3ffc9f){let _0x45ccc7=this[_0x3b5e67(0x46c)][_0x3b5e67(0x40e)](_0x2770d5);_0x45ccc7&&(this[_0x3b5e67(0x46c)][_0x3b5e67(0x3aa)](_0x2770d5),this[_0x3b5e67(0x46c)][_0x3b5e67(0x11e)](_0x2770d5,_0x45ccc7));}}[_0x4d4387(0x349)](_0x2197f3){const _0x423a2b=_0x4d4387;validateMatrix(_0x2197f3[_0x423a2b(0x285)],_0x423a2b(0x285)),validateMatrix(_0x2197f3['inverseViewProjection'],_0x423a2b(0x1bf)),this[_0x423a2b(0x401)]={'viewProjection':[..._0x2197f3[_0x423a2b(0x285)]],'inverseViewProjection':[..._0x2197f3[_0x423a2b(0x1bf)]],'cameraPosition':[..._0x2197f3[_0x423a2b(0x28b)]]};}[_0x4d4387(0x1ba)](_0x31b378){const _0x16b147=_0x4d4387;this[_0x16b147(0x11a)]=cloneMeshes(_0x31b378),this[_0x16b147(0x419)]()['replace'](_0x31b378);}[_0x4d4387(0x22d)](_0x237963){const _0x497cf4=_0x4d4387;this[_0x497cf4(0x3a3)]=_0x237963[_0x497cf4(0x45f)](_0x47fad6=>({..._0x47fad6})),this[_0x497cf4(0x441)]()[_0x497cf4(0x39b)](_0x237963);}['setAxes'](_0x17e4d6){const _0x1bf9b0=_0x4d4387;this[_0x1bf9b0(0x239)]=cloneMeshes(_0x17e4d6),this[_0x1bf9b0(0x2a6)]()[_0x1bf9b0(0x39b)](_0x17e4d6);}[_0x4d4387(0x3a8)](_0x4202c7,_0x328a69,_0x3c406b){const _0x77bd76=_0x4d4387;this['colorStops']=_0x4202c7['map'](_0x1e1a5e=>({'value':_0x1e1a5e['value'],'color':[..._0x1e1a5e[_0x77bd76(0x15f)]]})),this[_0x77bd76(0x450)]=_0x328a69[_0x77bd76(0x45f)](_0x1ccd65=>({..._0x1ccd65})),_0x3c406b&&(this[_0x77bd76(0x18f)]=_0x3c406b),this[_0x77bd76(0x382)]==='ready'&&this[_0x77bd76(0x3e3)]();}[_0x4d4387(0x1f4)](_0x25fbd6){const _0x5c993b=_0x4d4387;_0x25fbd6['modelMatrix']&&(validateMatrix(_0x25fbd6['modelMatrix'],_0x5c993b(0x19f)),this[_0x5c993b(0x19f)]=[..._0x25fbd6[_0x5c993b(0x19f)]]),_0x25fbd6[_0x5c993b(0x114)]&&(validateMatrix(_0x25fbd6[_0x5c993b(0x114)],_0x5c993b(0x114)),this[_0x5c993b(0x114)]=[..._0x25fbd6[_0x5c993b(0x114)]]),_0x25fbd6[_0x5c993b(0x340)]&&(this[_0x5c993b(0x340)]=[..._0x25fbd6[_0x5c993b(0x340)]]),_0x25fbd6[_0x5c993b(0x229)]&&(this[_0x5c993b(0x229)]=[..._0x25fbd6[_0x5c993b(0x229)]]),_0x25fbd6[_0x5c993b(0x1e2)]&&(this[_0x5c993b(0x1e2)]=_0x25fbd6['renderMode']),_0x25fbd6[_0x5c993b(0x29d)]!==void 0x0&&(this['opacity']=validateNonNegative(_0x25fbd6[_0x5c993b(0x29d)],'opacity')),_0x25fbd6['densityScale']!==void 0x0&&(this['densityScale']=validateNonNegative(_0x25fbd6[_0x5c993b(0x281)],'densityScale')),_0x25fbd6[_0x5c993b(0x165)]!==void 0x0&&(this[_0x5c993b(0x165)]=validatePositive(_0x25fbd6[_0x5c993b(0x165)],_0x5c993b(0x165))),_0x25fbd6[_0x5c993b(0x275)]!==void 0x0&&(this[_0x5c993b(0x275)]=validateNonNegative(_0x25fbd6[_0x5c993b(0x275)],_0x5c993b(0x275))),_0x25fbd6[_0x5c993b(0x18f)]&&(this[_0x5c993b(0x18f)]=_0x25fbd6[_0x5c993b(0x18f)]),_0x25fbd6[_0x5c993b(0x267)]!==void 0x0&&(this[_0x5c993b(0x267)]=_0x25fbd6[_0x5c993b(0x267)]?{..._0x25fbd6[_0x5c993b(0x267)]}:null);}[_0x4d4387(0x21c)](_0x1f47f3,_0x3ebcfc){const _0x290770=_0x4d4387;if(!Number[_0x290770(0x403)](_0x1f47f3)||!Number['isInteger'](_0x3ebcfc)||_0x1f47f3<=0x0||_0x3ebcfc<=0x0)throw Error(_0x290770(0x2f3));let _0x17df48=this[_0x290770(0x433)]();_0x17df48[_0x290770(0x13c)]=_0x1f47f3,_0x17df48[_0x290770(0x3cb)]=_0x3ebcfc,this[_0x290770(0x13c)]=_0x1f47f3,this[_0x290770(0x3cb)]=_0x3ebcfc,this[_0x290770(0x39e)]()[_0x290770(0x21c)](_0x1f47f3,_0x3ebcfc),this[_0x290770(0x218)]();}[_0x4d4387(0x392)](){const _0x53423e=_0x4d4387;if(this[_0x53423e(0x382)]!==_0x53423e(0x3d9)||!this[_0x53423e(0x299)]||this[_0x53423e(0x13c)]<=0x0||this[_0x53423e(0x3cb)]<=0x0||this[_0x53423e(0x3c9)])return!0x1;let _0x4d29cb=performance[_0x53423e(0x38e)]();this['frameIndex']+=0x1,this[_0x53423e(0x14d)]();let _0x5b0903=this[_0x53423e(0x389)](),_0x3df6b3=_0x5b0903[_0x53423e(0x1d0)]({'label':_0x53423e(0x1ff)}),_0x16f1f3=this['getContext']()[_0x53423e(0x30c)]()[_0x53423e(0x3b6)]();return this['encodeScenePass'](_0x3df6b3,_0x16f1f3),this[_0x53423e(0x255)](_0x3df6b3,_0x16f1f3),this['encodeOverlayPass'](_0x3df6b3,_0x16f1f3),_0x5b0903[_0x53423e(0x1de)]['submit']([_0x3df6b3['finish']()]),this['frameInFlight']=!0x0,this[_0x53423e(0x35f)]+=0x1,this['lastFrameTimeMilliseconds']=Math[_0x53423e(0x412)](0.000001,performance[_0x53423e(0x38e)]()-_0x4d29cb),_0x5b0903[_0x53423e(0x1de)][_0x53423e(0x472)]()[_0x53423e(0x19a)](()=>{const _0x1394f5=_0x53423e;this[_0x1394f5(0x2d2)]!==_0x5b0903||this[_0x1394f5(0x382)]!==_0x1394f5(0x3d9)||(this[_0x1394f5(0x3c9)]=!0x1,this['frameAvailableCallback']?.());})[_0x53423e(0x1b5)](()=>{const _0x3fc60b=_0x53423e;this[_0x3fc60b(0x2d2)]===_0x5b0903&&(this[_0x3fc60b(0x3c9)]=!0x1);}),!0x0;}async['captureFrame'](){const _0x2fd877=_0x4d4387;if(this[_0x2fd877(0x382)]!==_0x2fd877(0x3d9)||!this['metadata']||this[_0x2fd877(0x13c)]<=0x0||this[_0x2fd877(0x3cb)]<=0x0)throw Error(_0x2fd877(0x28e));let _0x545df8=this[_0x2fd877(0x389)](),_0x280b1e=this[_0x2fd877(0x13c)]*0x4,_0x57eaa6=Math[_0x2fd877(0x14e)](_0x280b1e/0x100)*0x100,_0x3e72ec=_0x545df8[_0x2fd877(0x2f0)]({'label':_0x2fd877(0x219),'size':_0x57eaa6*this[_0x2fd877(0x3cb)],'usage':GPUBufferUsage[_0x2fd877(0x2d9)]|GPUBufferUsage[_0x2fd877(0x1ce)]});_0x545df8[_0x2fd877(0x463)](_0x2fd877(0x387)),this[_0x2fd877(0x35b)]+=0x1,this[_0x2fd877(0x14d)]();let _0x4cc4ef=_0x545df8[_0x2fd877(0x1d0)]({'label':_0x2fd877(0x15b)}),_0x4f77c2=this[_0x2fd877(0x136)]()[_0x2fd877(0x30c)](),_0x5392e6=_0x4f77c2[_0x2fd877(0x3b6)]();this[_0x2fd877(0x112)](_0x4cc4ef,_0x5392e6),this['encodeVolumePass'](_0x4cc4ef,_0x5392e6),this[_0x2fd877(0x125)](_0x4cc4ef,_0x5392e6),_0x4cc4ef[_0x2fd877(0x368)]({'texture':_0x4f77c2},{'buffer':_0x3e72ec,'bytesPerRow':_0x57eaa6,'rowsPerImage':this[_0x2fd877(0x3cb)]},[this['width'],this['height']]),_0x545df8[_0x2fd877(0x1de)][_0x2fd877(0x3c1)]([_0x4cc4ef['finish']()]);let _0x31d8bc=await _0x545df8[_0x2fd877(0x13f)]();if(_0x31d8bc)throw _0x3e72ec[_0x2fd877(0x16a)](),Error(_0x2fd877(0x233)+_0x31d8bc[_0x2fd877(0x2d3)]+_0x2fd877(0x2f9));await _0x3e72ec[_0x2fd877(0x1ef)](GPUMapMode['READ']);let _0x490e5f=new Uint8Array(_0x3e72ec['getMappedRange']()),_0x4e66cb=new Uint8Array(_0x280b1e*this['height']),_0x3a3903=this[_0x2fd877(0x40b)]()==='bgra8unorm';for(let _0x205580=0x0;_0x205580<this[_0x2fd877(0x3cb)];_0x205580+=0x1){let _0x5aa29e=_0x490e5f[_0x2fd877(0x38b)](_0x205580*_0x57eaa6,_0x205580*_0x57eaa6+_0x280b1e),_0x5359d9=_0x205580*_0x280b1e;if(!_0x3a3903){_0x4e66cb[_0x2fd877(0x11e)](_0x5aa29e,_0x5359d9);continue;}for(let _0x3d8d88=0x0;_0x3d8d88<this['width'];_0x3d8d88+=0x1){let _0x212615=_0x3d8d88*0x4,_0x2ac4aa=_0x5359d9+_0x212615;_0x4e66cb[_0x2ac4aa]=_0x5aa29e[_0x212615+0x2],_0x4e66cb[_0x2ac4aa+0x1]=_0x5aa29e[_0x212615+0x1],_0x4e66cb[_0x2ac4aa+0x2]=_0x5aa29e[_0x212615],_0x4e66cb[_0x2ac4aa+0x3]=_0x5aa29e[_0x212615+0x3];}}return _0x3e72ec[_0x2fd877(0x17e)](),_0x3e72ec[_0x2fd877(0x16a)](),this[_0x2fd877(0x35f)]+=0x1,{'width':this[_0x2fd877(0x13c)],'height':this[_0x2fd877(0x3cb)],'pixels':_0x4e66cb};}[_0x4d4387(0x16a)](){const _0x2185ca=_0x4d4387;this['lifecycleState']!==_0x2185ca(0x3de)&&(++this[_0x2185ca(0x284)],this['releaseGpuResources'](),this['canvas']=null,this[_0x2185ca(0x299)]=null,this[_0x2185ca(0x264)]=null,this[_0x2185ca(0x382)]=_0x2185ca(0x3de));}[_0x4d4387(0x41f)](){const _0x41e5f7=_0x4d4387;let _0x4a02f6=this[_0x41e5f7(0x389)]();this[_0x41e5f7(0x28c)]=_0x4a02f6[_0x41e5f7(0x2f0)]({'label':_0x41e5f7(0x118),'size':0x190,'usage':GPUBufferUsage[_0x41e5f7(0x3ca)]|GPUBufferUsage['COPY_DST']}),this[_0x41e5f7(0x17b)]=_0x4a02f6['createBuffer']({'label':_0x41e5f7(0x205),'size':0x60,'usage':GPUBufferUsage[_0x41e5f7(0x3ca)]|GPUBufferUsage['COPY_DST']}),this[_0x41e5f7(0x3a9)]=_0x4a02f6[_0x41e5f7(0x23e)]({'label':'volume\x20geometry\x20bind\x20group\x20layout','entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x41e5f7(0x298)]|GPUShaderStage[_0x41e5f7(0x132)],'buffer':{'type':_0x41e5f7(0x30f)}}]}),this['sceneBindGroupLayout']=_0x4a02f6[_0x41e5f7(0x23e)]({'label':_0x41e5f7(0x3d0),'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x41e5f7(0x298)]|GPUShaderStage[_0x41e5f7(0x132)],'buffer':{'type':_0x41e5f7(0x30f)}},{'binding':0x1,'visibility':GPUShaderStage[_0x41e5f7(0x132)],'texture':{'sampleType':'depth'}}]}),this[_0x41e5f7(0x126)]=_0x4a02f6['createBindGroupLayout']({'label':'volume\x20atlas\x20bind\x20group\x20layout','entries':[...Array['from']({'length':0x8},(_0x3e507b,_0xe18239)=>({'binding':_0xe18239,'visibility':GPUShaderStage['FRAGMENT'],'texture':{'sampleType':_0x41e5f7(0x2c1),'viewDimension':'3d'}})),{'binding':0x8,'visibility':GPUShaderStage['FRAGMENT'],'buffer':{'type':'read-only-storage'}},{'binding':0x9,'visibility':GPUShaderStage[_0x41e5f7(0x132)],'buffer':{'type':'uniform'}}]}),this['transferBindGroupLayout']=_0x4a02f6[_0x41e5f7(0x23e)]({'label':_0x41e5f7(0x303),'entries':[0x0,0x1,0x2,0x3]['map'](_0x1e720d=>({'binding':_0x1e720d,'visibility':GPUShaderStage[_0x41e5f7(0x132)],'buffer':{'type':_0x41e5f7(0x23b)}}))}),this[_0x41e5f7(0x26c)]=_0x4a02f6['createBindGroupLayout']({'label':_0x41e5f7(0x23c),'entries':[{'binding':0x0,'visibility':GPUShaderStage['VERTEX']|GPUShaderStage['FRAGMENT'],'buffer':{'type':_0x41e5f7(0x30f)}}]}),this[_0x41e5f7(0x195)]=new WebgpuSceneAttachments(_0x4a02f6),this[_0x41e5f7(0x341)]=new WebgpuTransferResources(_0x4a02f6),this[_0x41e5f7(0x21e)]=new WebgpuSceneMeshResources(_0x4a02f6),this[_0x41e5f7(0x337)]=new WebgpuSliceResources(_0x4a02f6,this[_0x41e5f7(0x38f)]()),this[_0x41e5f7(0x33f)]=new WebgpuSceneMeshResources(_0x4a02f6),this[_0x41e5f7(0x302)]();}[_0x4d4387(0x302)](){const _0x4ee52c=_0x4d4387;let _0x780491=this['getDevice'](),_0x22051c=this[_0x4ee52c(0x40b)](),_0xb4a336=this['getGeometryBindGroupLayout'](),_0x3c3056=this[_0x4ee52c(0x469)](),_0x34efa0=_0x780491[_0x4ee52c(0x330)]({'label':_0x4ee52c(0x454),'code':sceneMesh_default}),_0xef749d={'module':_0x34efa0,'entryPoint':'vertexMain','buffers':[{'arrayStride':0x1c,'attributes':[{'shaderLocation':0x0,'offset':0x0,'format':_0x4ee52c(0x129)},{'shaderLocation':0x1,'offset':0xc,'format':_0x4ee52c(0x3d5)}]}]},_0x257208={'module':_0x34efa0,'entryPoint':'fragmentMain','targets':[{'format':_0x22051c,'blend':premultipliedBlend$1()}]},_0x10fe3b=(_0x37297f,_0xc9d159)=>_0x780491[_0x4ee52c(0x280)]({'layout':_0x780491['createPipelineLayout']({'bindGroupLayouts':[_0xb4a336]}),'vertex':_0xef749d,'fragment':_0x257208,'primitive':{'topology':_0x37297f},'depthStencil':_0xc9d159?{'format':_0x4ee52c(0x2b2),'depthWriteEnabled':!0x0,'depthCompare':'less'}:void 0x0});this[_0x4ee52c(0x18c)]=_0x10fe3b('triangle-list',!0x0),this[_0x4ee52c(0x36d)]=_0x10fe3b(_0x4ee52c(0x2a8),!0x0),this[_0x4ee52c(0x408)]=_0x10fe3b(_0x4ee52c(0x201),!0x1),this['overlayLinePipeline']=_0x10fe3b('line-list',!0x1);let _0xff3cb4=_0x780491[_0x4ee52c(0x330)]({'label':_0x4ee52c(0x268),'code':volumeRaymarch_default});this[_0x4ee52c(0x446)]=_0x780491[_0x4ee52c(0x280)]({'layout':_0x780491[_0x4ee52c(0x2ec)]({'bindGroupLayouts':[_0x3c3056,this[_0x4ee52c(0x1d2)](),this[_0x4ee52c(0x2fa)]()]}),'vertex':{'module':_0xff3cb4,'entryPoint':_0x4ee52c(0x137)},'fragment':{'module':_0xff3cb4,'entryPoint':_0x4ee52c(0x432),'targets':[{'format':_0x22051c,'blend':premultipliedBlend$1()}]},'primitive':{'topology':_0x4ee52c(0x201)}});let _0x52b079=_0x780491[_0x4ee52c(0x330)]({'label':'volume\x20slice\x20shader','code':volumeSlice_default}),_0x5a6b74=_0x53aaea=>_0x780491['createRenderPipeline']({'layout':_0x780491['createPipelineLayout']({'bindGroupLayouts':[_0xb4a336,this[_0x4ee52c(0x1d2)](),this[_0x4ee52c(0x2fa)](),this[_0x4ee52c(0x38f)]()]}),'vertex':{'module':_0x52b079,'entryPoint':'vertexMain'},'fragment':{'module':_0x52b079,'entryPoint':_0x4ee52c(0x432),'targets':[{'format':_0x22051c,'blend':premultipliedBlend$1()}]},'primitive':{'topology':'triangle-list'},'depthStencil':_0x53aaea?{'format':_0x4ee52c(0x2b2),'depthWriteEnabled':!0x0,'depthCompare':_0x4ee52c(0x1c9)}:void 0x0});this['sceneSlicePipeline']=_0x5a6b74(!0x0),this['overlaySlicePipeline']=_0x5a6b74(!0x1);}[_0x4d4387(0x224)](_0x382d47){const _0x3f67f1=_0x4d4387;this[_0x3f67f1(0x2e2)]?.[_0x3f67f1(0x16a)](),this['atlas']=new WebgpuBrickAtlas(this[_0x3f67f1(0x389)](),this[_0x3f67f1(0x2d7)]['memoryTargetBytes']??DEFAULT_MEMORY_TARGET_BYTES,this[_0x3f67f1(0x2d7)][_0x3f67f1(0x15a)]??this[_0x3f67f1(0x2d7)][_0x3f67f1(0x377)]??DEFAULT_MEMORY_TARGET_BYTES),this[_0x3f67f1(0x2e2)][_0x3f67f1(0x40d)](_0x382d47),this[_0x3f67f1(0x3a0)](),this['volumeBindGroup']=this[_0x3f67f1(0x2e2)][_0x3f67f1(0x23f)](this['getVolumeBindGroupLayout'](),this[_0x3f67f1(0x39a)]());}[_0x4d4387(0x2fd)](_0x141e17,_0x58605b){return new Promise((_0x4b528f,_0x263e81)=>{const _0x113be0=_0xb383;this[_0x113be0(0x1c1)][_0x113be0(0x2a3)]({'upload':_0x141e17,'generation':this[_0x113be0(0x35a)],'cacheOnSuccess':_0x58605b,'resolve':_0x4b528f,'reject':_0x263e81}),this[_0x113be0(0x2ef)]();});}['scheduleUploadPump'](){const _0x1a5b42=_0x4d4387;this[_0x1a5b42(0x332)]||=Promise[_0x1a5b42(0x2b0)]()[_0x1a5b42(0x19a)](()=>this['processBrickUploads']())[_0x1a5b42(0x2c6)](()=>{const _0x2587b4=_0x1a5b42;this[_0x2587b4(0x332)]=null,this['pendingBrickUploads'][_0x2587b4(0x27b)]>0x0&&this[_0x2587b4(0x382)]===_0x2587b4(0x3d9)&&this[_0x2587b4(0x2ef)]();});}async[_0x4d4387(0x15c)](){const _0x3aea3b=_0x4d4387;for(;this[_0x3aea3b(0x1c1)]['length']>0x0&&this[_0x3aea3b(0x382)]===_0x3aea3b(0x3d9)&&this[_0x3aea3b(0x299)];){let _0x443ce4=this['getDevice'](),_0x4a14d0=estimateBrickUploadBytes(this[_0x3aea3b(0x299)]),_0x208d57=Math[_0x3aea3b(0x279)](0x4000000,Math[_0x3aea3b(0x412)](_0x4a14d0,Math[_0x3aea3b(0x3a5)](_0x443ce4['limits'][_0x3aea3b(0x2e0)]/0x4))),_0x3d4a5c=[],_0x20c080=0x0;for(;this[_0x3aea3b(0x1c1)][_0x3aea3b(0x27b)]>0x0&&_0x3d4a5c[_0x3aea3b(0x27b)]<0x10;){let _0x1b1559=this['pendingBrickUploads'][0x0];if(_0x3d4a5c[_0x3aea3b(0x27b)]>0x0&&_0x20c080+_0x4a14d0>_0x208d57)break;if(this['pendingBrickUploads'][_0x3aea3b(0x311)](),_0x1b1559[_0x3aea3b(0x33b)]!==this[_0x3aea3b(0x35a)]){_0x1b1559[_0x3aea3b(0x46a)](new DOMException(_0x3aea3b(0x273),'AbortError'));continue;}_0x3d4a5c[_0x3aea3b(0x2a3)](_0x1b1559),_0x20c080+=_0x4a14d0;}if(_0x3d4a5c[_0x3aea3b(0x27b)]!==0x0)try{let _0x2dc4f9=[],_0x21211d=0x0;for(let _0x5dce5a of _0x3d4a5c){let _0x16be8=this[_0x3aea3b(0x2e4)]()[_0x3aea3b(0x3d3)](_0x5dce5a['upload'],this[_0x3aea3b(0x35b)]),_0x37394a=Math[_0x3aea3b(0x14e)](_0x21211d/0x100)*0x100;_0x2dc4f9[_0x3aea3b(0x2a3)]({'item':_0x5dce5a,'prepared':_0x16be8,'bufferOffset':_0x37394a}),_0x21211d=_0x37394a+_0x16be8[_0x3aea3b(0x39c)][_0x3aea3b(0x13e)];}let _0x40bf98=this[_0x3aea3b(0x43a)](_0x21211d);await _0x40bf98[_0x3aea3b(0x1ef)](GPUMapMode[_0x3aea3b(0x45a)]);let _0x13f401=new Uint8Array(_0x40bf98[_0x3aea3b(0x21f)]());for(let _0x3266d8 of _0x2dc4f9){let _0x96cb4e=_0x3266d8[_0x3aea3b(0x394)][_0x3aea3b(0x39c)];_0x13f401['set'](new Uint8Array(_0x96cb4e[_0x3aea3b(0x251)],_0x96cb4e[_0x3aea3b(0x29a)],_0x96cb4e['byteLength']),_0x3266d8[_0x3aea3b(0x444)]);}_0x40bf98[_0x3aea3b(0x17e)]();let _0x8ed8bc=_0x443ce4[_0x3aea3b(0x1d0)]({'label':_0x3aea3b(0x2d1)});for(let _0x31c0bf of _0x2dc4f9)this[_0x3aea3b(0x2e4)]()[_0x3aea3b(0x40f)](_0x8ed8bc,_0x40bf98,_0x31c0bf[_0x3aea3b(0x444)],_0x31c0bf[_0x3aea3b(0x394)]);_0x443ce4[_0x3aea3b(0x1de)]['submit']([_0x8ed8bc[_0x3aea3b(0x30a)]()]),await _0x443ce4['queue'][_0x3aea3b(0x472)](),await new Promise(_0x4aef55=>setTimeout(_0x4aef55,0x0)),this[_0x3aea3b(0x189)]+=_0x3d4a5c[_0x3aea3b(0x27b)],this[_0x3aea3b(0x420)]+=0x1,this['maximumUploadBatchBytes']=Math['max'](this[_0x3aea3b(0x131)],_0x20c080);for(let _0x292693 of _0x3d4a5c){if(_0x292693[_0x3aea3b(0x33b)]!==this[_0x3aea3b(0x35a)]){_0x292693[_0x3aea3b(0x46a)](new DOMException(_0x3aea3b(0x273),_0x3aea3b(0x225)));continue;}_0x292693[_0x3aea3b(0x2dc)]&&this[_0x3aea3b(0x3fc)](_0x292693[_0x3aea3b(0x336)]),_0x292693[_0x3aea3b(0x2b0)]();}}catch(_0x3b9df9){for(let _0x4f04b4 of _0x3d4a5c)_0x4f04b4[_0x3aea3b(0x46a)](_0x3b9df9);}}}[_0x4d4387(0x43a)](_0x38155a){const _0x3b5dd1=_0x4d4387;let _0x2a0622=Math['max'](0x100,Math[_0x3b5dd1(0x14e)](_0x38155a/0x100)*0x100);return this[_0x3b5dd1(0x355)]&&this[_0x3b5dd1(0x248)]>=_0x2a0622?this[_0x3b5dd1(0x355)]:(this[_0x3b5dd1(0x355)]?.[_0x3b5dd1(0x16a)](),this['uploadStagingBuffer']=this['getDevice']()[_0x3b5dd1(0x2f0)]({'label':_0x3b5dd1(0x2ce),'size':_0x2a0622,'usage':GPUBufferUsage[_0x3b5dd1(0x24f)]|GPUBufferUsage[_0x3b5dd1(0x277)]}),this[_0x3b5dd1(0x248)]=_0x2a0622,this[_0x3b5dd1(0x355)]);}[_0x4d4387(0x3fc)](_0x2173f3){const _0x2c047b=_0x4d4387;for(this[_0x2c047b(0x46c)][_0x2c047b(0x3aa)](_0x2173f3[_0x2c047b(0x41b)]),this[_0x2c047b(0x46c)]['set'](_0x2173f3[_0x2c047b(0x41b)],new Float32Array(_0x2173f3[_0x2c047b(0x39c)]));this[_0x2c047b(0x46c)][_0x2c047b(0x33e)]>this['statistics']['atlasCapacity'];){let _0x502cb2=this['cachedBricks'][_0x2c047b(0x178)]()[_0x2c047b(0x32f)]()[_0x2c047b(0x1e9)];if(_0x502cb2===void 0x0)break;this['cachedBricks'][_0x2c047b(0x3aa)](_0x502cb2);}}[_0x4d4387(0x3fb)](_0x337c76){const _0x1bc996=_0x4d4387;for(let _0x195feb of this[_0x1bc996(0x1c1)][_0x1bc996(0x17a)](0x0))_0x195feb[_0x1bc996(0x46a)](_0x337c76);}['updateTransferResources'](){const _0x5c06b0=_0x4d4387;let _0x5bb57c=this[_0x5c06b0(0x170)]();_0x5bb57c[_0x5c06b0(0x1f4)](this['colorStops'],this['opacityStops']),this[_0x5c06b0(0x344)]=_0x5bb57c[_0x5c06b0(0x23f)](this[_0x5c06b0(0x2fa)]());}[_0x4d4387(0x218)](){const _0x43727f=_0x4d4387;!this['sceneParamsBuffer']||!this[_0x43727f(0x195)]||!this[_0x43727f(0x3a9)]||!this[_0x43727f(0x32e)]||(this['geometryBindGroup']=this[_0x43727f(0x389)]()['createBindGroup']({'label':_0x43727f(0x1a9),'layout':this['geometryBindGroupLayout'],'entries':[{'binding':0x0,'resource':{'buffer':this[_0x43727f(0x28c)]}}]}),this[_0x43727f(0x306)]=this[_0x43727f(0x389)]()[_0x43727f(0x23f)]({'label':_0x43727f(0x2c8),'layout':this[_0x43727f(0x32e)],'entries':[{'binding':0x0,'resource':{'buffer':this[_0x43727f(0x28c)]}},{'binding':0x1,'resource':this[_0x43727f(0x195)][_0x43727f(0x25b)]}]}));}[_0x4d4387(0x14d)](){const _0xe6ead2=_0x4d4387;let _0x5454d2=new Float32Array(0x64);_0x5454d2[_0xe6ead2(0x11e)](this[_0xe6ead2(0x401)][_0xe6ead2(0x285)],0x0),_0x5454d2[_0xe6ead2(0x11e)](this[_0xe6ead2(0x401)][_0xe6ead2(0x1bf)],0x10),_0x5454d2['set'](this[_0xe6ead2(0x19f)],0x20),_0x5454d2['set'](this[_0xe6ead2(0x114)],0x30),_0x5454d2[_0xe6ead2(0x11e)]([...this[_0xe6ead2(0x401)][_0xe6ead2(0x28b)],0x1],0x40),_0x5454d2['set']([this[_0xe6ead2(0x13c)],this[_0xe6ead2(0x3cb)],0x1/this[_0xe6ead2(0x13c)],0x1/this['height']],0x44),_0x5454d2[_0xe6ead2(0x11e)]([...this[_0xe6ead2(0x340)],0x0],0x48),_0x5454d2[_0xe6ead2(0x11e)]([...this['clipMaximum'],0x0],0x4c),_0x5454d2[_0xe6ead2(0x11e)]([+(this['renderMode']===_0xe6ead2(0x351)),this[_0xe6ead2(0x29d)],this[_0xe6ead2(0x281)],this['stepLength']],0x50),_0x5454d2[_0xe6ead2(0x11e)]([this[_0xe6ead2(0x11d)][_0xe6ead2(0x27b)],this[_0xe6ead2(0x450)]['length'],this[_0xe6ead2(0x275)],+(this[_0xe6ead2(0x18f)]===_0xe6ead2(0x457))],0x54);let _0x1aee79=this[_0xe6ead2(0x267)];_0x1aee79&&(_0x5454d2[_0xe6ead2(0x11e)]([0x1,..._0x1aee79[_0xe6ead2(0x2f4)]],0x58),_0x5454d2[_0xe6ead2(0x11e)]([_0x1aee79[_0xe6ead2(0x25f)],_0x1aee79[_0xe6ead2(0x3be)],..._0x1aee79[_0xe6ead2(0x288)]],0x5c),_0x5454d2['set']([..._0x1aee79['latitudeRadians'],..._0x1aee79[_0xe6ead2(0x3d2)]],0x60)),this[_0xe6ead2(0x389)]()['queue']['writeBuffer'](this['getSceneParamsBuffer'](),0x0,_0x5454d2);}['writeVolumeParams'](){const _0x219bd5=_0x4d4387;let _0x268eb3=this[_0x219bd5(0x299)],_0x454540=this['atlas'];if(!_0x268eb3||!_0x454540)return;let _0x272177=_0x454540[_0x219bd5(0x407)],_0x37d495=new Uint32Array(0x60/0x4),_0x497a67=Math[_0x219bd5(0x14e)](_0x268eb3['xAxis'][_0x219bd5(0x173)]/_0x268eb3['brickWidth']),_0x1ea0ee=Math[_0x219bd5(0x14e)](_0x268eb3[_0x219bd5(0x424)][_0x219bd5(0x173)]/_0x268eb3[_0x219bd5(0x261)]),_0x50bccc=Math['ceil'](_0x268eb3[_0x219bd5(0x182)][_0x219bd5(0x173)]/_0x268eb3[_0x219bd5(0x16d)]);_0x37d495[_0x219bd5(0x11e)]([_0x268eb3[_0x219bd5(0x169)][_0x219bd5(0x173)],_0x268eb3['yAxis'][_0x219bd5(0x173)],_0x268eb3[_0x219bd5(0x182)][_0x219bd5(0x173)],0x0],0x0),_0x37d495['set']([_0x268eb3[_0x219bd5(0x2dd)],_0x268eb3['brickHeight'],_0x268eb3[_0x219bd5(0x16d)],0x1],0x4),_0x37d495[_0x219bd5(0x11e)]([_0x497a67,_0x1ea0ee,_0x50bccc,0x0],0x8),_0x37d495['set']([_0x272177[_0x219bd5(0x1db)],_0x272177[_0x219bd5(0x115)],_0x272177['slotCountZ'],_0x272177['slotCount']],0xc),_0x37d495['set']([(_0x268eb3['brickWidth']+0x2)*_0x272177[_0x219bd5(0x1db)],(_0x268eb3[_0x219bd5(0x261)]+0x2)*_0x272177['slotCountY'],(_0x268eb3['brickDepth']+0x2)*_0x272177[_0x219bd5(0x157)],0x0],0x10),new Float32Array(_0x37d495['buffer'])[_0x219bd5(0x11e)]([_0x268eb3[_0x219bd5(0x3b4)]??0x0,_0x268eb3['noData']===void 0x0?0x0:0x1,0x0,0x0],0x14),this[_0x219bd5(0x389)]()[_0x219bd5(0x1de)][_0x219bd5(0x2f5)](this[_0x219bd5(0x39a)](),0x0,_0x37d495);}[_0x4d4387(0x112)](_0x46b127,_0x491bd1){const _0x55236d=_0x4d4387;let _0x44c898=_0x46b127[_0x55236d(0x370)]({'label':_0x55236d(0x2d6),'colorAttachments':[{'view':_0x491bd1,'clearValue':{'r':0x0,'g':0x0,'b':0x0,'a':0x0},'loadOp':_0x55236d(0x352),'storeOp':_0x55236d(0x39f)}],'depthStencilAttachment':{'view':this[_0x55236d(0x39e)]()[_0x55236d(0x25b)],'depthClearValue':0x1,'depthLoadOp':'clear','depthStoreOp':_0x55236d(0x39f)}});this[_0x55236d(0x453)](_0x44c898,_0x55236d(0x120)),this['drawSlices'](_0x44c898,_0x55236d(0x120)),_0x44c898[_0x55236d(0x356)]();}[_0x4d4387(0x255)](_0x38b851,_0x493aa0){const _0x35ff8a=_0x4d4387;if(!this[_0x35ff8a(0x321)]||!this['transferBindGroup']||!this[_0x35ff8a(0x306)]||!this['volumePipeline'])return;let _0x5d145a=_0x38b851[_0x35ff8a(0x370)]({'label':_0x35ff8a(0x259),'colorAttachments':[{'view':_0x493aa0,'loadOp':'load','storeOp':_0x35ff8a(0x39f)}]});_0x5d145a[_0x35ff8a(0x14f)](this[_0x35ff8a(0x446)]),_0x5d145a[_0x35ff8a(0x378)](0x0,this['sceneBindGroup']),_0x5d145a[_0x35ff8a(0x378)](0x1,this[_0x35ff8a(0x321)]),_0x5d145a[_0x35ff8a(0x378)](0x2,this['transferBindGroup']),_0x5d145a[_0x35ff8a(0x2bf)](0x3),_0x5d145a['end']();}[_0x4d4387(0x125)](_0x4d32a9,_0x40b822){const _0x3fc56e=_0x4d4387;let _0x57517b=_0x4d32a9['beginRenderPass']({'label':_0x3fc56e(0x3ec),'colorAttachments':[{'view':_0x40b822,'loadOp':'load','storeOp':_0x3fc56e(0x39f)}]});this[_0x3fc56e(0x453)](_0x57517b,'always-visible'),this[_0x3fc56e(0x20b)](_0x57517b,'always-visible'),_0x57517b[_0x3fc56e(0x356)]();}[_0x4d4387(0x453)](_0x225c2e,_0x4f70da){const _0x4e6ced=_0x4d4387;let _0x424d15=this[_0x4e6ced(0x243)];if(!_0x424d15)return;let _0x2b601e=_0x4f70da===_0x4e6ced(0x120)?this[_0x4e6ced(0x18c)]:this[_0x4e6ced(0x408)],_0xeaebe0=_0x4f70da==='scene'?this[_0x4e6ced(0x36d)]:this['overlayLinePipeline'];_0x2b601e&&(_0x225c2e['setPipeline'](_0x2b601e),_0x225c2e['setBindGroup'](0x0,_0x424d15),this['profileResources']?.['draw'](_0x225c2e,_0x4e6ced(0x201),_0x4f70da),this[_0x4e6ced(0x33f)]?.[_0x4e6ced(0x2bf)](_0x225c2e,_0x4e6ced(0x201),_0x4f70da)),_0xeaebe0&&(_0x225c2e['setPipeline'](_0xeaebe0),_0x225c2e[_0x4e6ced(0x378)](0x0,_0x424d15),this[_0x4e6ced(0x21e)]?.[_0x4e6ced(0x2bf)](_0x225c2e,_0x4e6ced(0x2a8),_0x4f70da),this[_0x4e6ced(0x33f)]?.[_0x4e6ced(0x2bf)](_0x225c2e,_0x4e6ced(0x2a8),_0x4f70da));}[_0x4d4387(0x20b)](_0x503559,_0x4f9d0e){const _0x38be23=_0x4d4387;let _0x51268d=_0x4f9d0e==='scene'?this[_0x38be23(0x3c6)]:this[_0x38be23(0x180)];!_0x51268d||!this[_0x38be23(0x243)]||!this['volumeBindGroup']||!this['transferBindGroup']||(_0x503559['setBindGroup'](0x0,this[_0x38be23(0x243)]),_0x503559[_0x38be23(0x378)](0x1,this[_0x38be23(0x321)]),_0x503559[_0x38be23(0x378)](0x2,this[_0x38be23(0x344)]),this[_0x38be23(0x337)]?.[_0x38be23(0x2bf)](_0x503559,_0x51268d,_0x4f9d0e));}[_0x4d4387(0x244)](_0x8907f){const _0xf01d95=_0x4d4387;_0x8907f[_0xf01d95(0x24b)][_0xf01d95(0x19a)](_0x1c9029=>{const _0x28def8=_0xf01d95;if(this[_0x28def8(0x2d2)]!==_0x8907f||this['lifecycleState']===_0x28def8(0x3de))return;this[_0x28def8(0x382)]=_0x28def8(0x24b),console[_0x28def8(0x37a)](_0x28def8(0x2ee)+_0x1c9029[_0x28def8(0x2d3)]+_0x28def8(0x3fd));let _0x49af70=this[_0x28def8(0x2a5)];this[_0x28def8(0x216)](),_0x49af70&&this[_0x28def8(0x33c)](_0x49af70)[_0x28def8(0x1b5)](_0x2caa3f=>{const _0x25c49e=_0x28def8;console[_0x25c49e(0x37a)]('WebGPU\x20volume\x20device\x20restoration\x20failed.\x20WebGPU\x20体积设备恢复失败。',_0x2caa3f);});});}[_0x4d4387(0x216)](){const _0x35faa4=_0x4d4387;this[_0x35faa4(0x35a)]+=0x1,this[_0x35faa4(0x3fb)](new DOMException('WebGPU\x20volume\x20resources\x20were\x20released.\x20WebGPU\x20体积资源已释放。',_0x35faa4(0x225))),this[_0x35faa4(0x2e2)]?.[_0x35faa4(0x16a)](),this[_0x35faa4(0x341)]?.['destroy'](),this[_0x35faa4(0x21e)]?.[_0x35faa4(0x16a)](),this[_0x35faa4(0x337)]?.[_0x35faa4(0x16a)](),this[_0x35faa4(0x33f)]?.[_0x35faa4(0x16a)](),this[_0x35faa4(0x195)]?.[_0x35faa4(0x16a)](),this[_0x35faa4(0x28c)]?.[_0x35faa4(0x16a)](),this[_0x35faa4(0x17b)]?.[_0x35faa4(0x16a)](),this['uploadStagingBuffer']?.[_0x35faa4(0x16a)]();try{this[_0x35faa4(0x452)]?.[_0x35faa4(0x2cc)]();}catch{}this[_0x35faa4(0x2d2)]?.['destroy'](),this[_0x35faa4(0x27e)]=null,this['device']=null,this[_0x35faa4(0x452)]=null,this[_0x35faa4(0x350)]=null,this[_0x35faa4(0x28c)]=null,this[_0x35faa4(0x17b)]=null,this[_0x35faa4(0x355)]=null,this[_0x35faa4(0x248)]=0x0,this[_0x35faa4(0x3a9)]=null,this[_0x35faa4(0x32e)]=null,this[_0x35faa4(0x126)]=null,this[_0x35faa4(0x1f9)]=null,this[_0x35faa4(0x26c)]=null,this[_0x35faa4(0x243)]=null,this[_0x35faa4(0x306)]=null,this['volumeBindGroup']=null,this['transferBindGroup']=null,this[_0x35faa4(0x446)]=null,this[_0x35faa4(0x18c)]=null,this[_0x35faa4(0x36d)]=null,this[_0x35faa4(0x408)]=null,this[_0x35faa4(0x3f8)]=null,this[_0x35faa4(0x3c6)]=null,this[_0x35faa4(0x180)]=null,this[_0x35faa4(0x195)]=null,this[_0x35faa4(0x2e2)]=null,this[_0x35faa4(0x341)]=null,this[_0x35faa4(0x21e)]=null,this[_0x35faa4(0x337)]=null,this['axisResources']=null,this[_0x35faa4(0x3c9)]=!0x1,this[_0x35faa4(0x13c)]=0x0,this[_0x35faa4(0x3cb)]=0x0;}[_0x4d4387(0x389)](){const _0x46a77b=_0x4d4387;if(!this[_0x46a77b(0x2d2)])throw Error(_0x46a77b(0x334));return this[_0x46a77b(0x2d2)];}[_0x4d4387(0x136)](){const _0x3583a2=_0x4d4387;if(!this[_0x3583a2(0x452)])throw Error(_0x3583a2(0x29f));return this['context'];}[_0x4d4387(0x40b)](){if(!this['format'])throw Error('WebGPU\x20volume\x20format\x20is\x20not\x20initialized.\x20WebGPU\x20体积格式尚未初始化。');return this['format'];}[_0x4d4387(0x433)](){const _0x47556c=_0x4d4387;if(!this[_0x47556c(0x2a5)])throw Error(_0x47556c(0x2fe));return this[_0x47556c(0x2a5)];}['getAttachments'](){const _0x5801e0=_0x4d4387;if(!this[_0x5801e0(0x195)])throw Error(_0x5801e0(0x3ad));return this[_0x5801e0(0x195)];}[_0x4d4387(0x2e4)](){const _0x3b81e1=_0x4d4387;if(!this[_0x3b81e1(0x2e2)])throw Error(_0x3b81e1(0x1f7));return this[_0x3b81e1(0x2e2)];}[_0x4d4387(0x170)](){const _0x16e0f2=_0x4d4387;if(!this['transferResources'])throw Error(_0x16e0f2(0x2a7));return this[_0x16e0f2(0x341)];}['getProfileResources'](){const _0x210fe3=_0x4d4387;if(!this[_0x210fe3(0x21e)])throw Error(_0x210fe3(0x1ec));return this['profileResources'];}[_0x4d4387(0x441)](){const _0x11ccc9=_0x4d4387;if(!this[_0x11ccc9(0x337)])throw Error(_0x11ccc9(0x207));return this['sliceResources'];}['getAxisResources'](){const _0x22cb13=_0x4d4387;if(!this['axisResources'])throw Error(_0x22cb13(0x1da));return this[_0x22cb13(0x33f)];}[_0x4d4387(0x469)](){const _0x347b31=_0x4d4387;if(!this[_0x347b31(0x32e)])throw Error(_0x347b31(0x20f));return this[_0x347b31(0x32e)];}['getGeometryBindGroupLayout'](){const _0x433e3d=_0x4d4387;if(!this[_0x433e3d(0x3a9)])throw Error(_0x433e3d(0x3a2));return this[_0x433e3d(0x3a9)];}[_0x4d4387(0x1d2)](){const _0x5dcff9=_0x4d4387;if(!this[_0x5dcff9(0x126)])throw Error('WebGPU\x20volume\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20体积绑定布局不可用。');return this[_0x5dcff9(0x126)];}[_0x4d4387(0x2fa)](){const _0x47fc6b=_0x4d4387;if(!this[_0x47fc6b(0x1f9)])throw Error('WebGPU\x20transfer\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20传递函数绑定布局不可用。');return this[_0x47fc6b(0x1f9)];}[_0x4d4387(0x38f)](){const _0x1727b9=_0x4d4387;if(!this['sliceBindGroupLayout'])throw Error(_0x1727b9(0x319));return this['sliceBindGroupLayout'];}[_0x4d4387(0x2b9)](){const _0x47b4b6=_0x4d4387;if(!this[_0x47b4b6(0x28c)])throw Error(_0x47b4b6(0x266));return this['sceneParamsBuffer'];}[_0x4d4387(0x39a)](){const _0x5497e4=_0x4d4387;if(!this['volumeParamsBuffer'])throw Error(_0x5497e4(0x3f1));return this[_0x5497e4(0x17b)];}};const getAxis=(_0x36f722,_0x489f7a)=>_0x489f7a==='x'?_0x36f722['xAxis']:_0x489f7a==='y'?_0x36f722[_0x4d4387(0x424)]:_0x36f722[_0x4d4387(0x182)],clampPosition=(_0x2d4ba3,_0x46e851,_0x14db8c)=>{const _0x1abfcd=_0x4d4387;if(!Number['isFinite'](_0x14db8c))throw Error(_0x1abfcd(0x3e1));let _0x3e25cd=getAxis(_0x2d4ba3,_0x46e851),_0x1bffa6=Math[_0x1abfcd(0x279)](_0x3e25cd[_0x1abfcd(0x34c)],_0x3e25cd[_0x1abfcd(0x356)]),_0xf505bd=Math[_0x1abfcd(0x412)](_0x3e25cd[_0x1abfcd(0x34c)],_0x3e25cd[_0x1abfcd(0x356)]);return Math[_0x1abfcd(0x279)](_0xf505bd,Math[_0x1abfcd(0x412)](_0x1bffa6,_0x14db8c));},clonePreview=_0x20a6b6=>_0x20a6b6?{..._0x20a6b6}:null,cloneLockedSlice=_0x2713ba=>({..._0x2713ba}),validateAxes=_0x5ac926=>{const _0x350dd1=_0x4d4387;for(let _0x1762e2 of[_0x5ac926[_0x350dd1(0x169)],_0x5ac926[_0x350dd1(0x424)],_0x5ac926[_0x350dd1(0x182)]]){if(!Number[_0x350dd1(0x240)](_0x1762e2[_0x350dd1(0x34c)])||!Number[_0x350dd1(0x240)](_0x1762e2[_0x350dd1(0x356)]))throw Error(_0x350dd1(0x1d9));if(!(Number[_0x350dd1(0x403)](_0x1762e2['count'])&&_0x1762e2[_0x350dd1(0x173)]>0x0))throw Error(_0x350dd1(0x3e5));if(_0x1762e2[_0x350dd1(0x173)]>0x1&&_0x1762e2[_0x350dd1(0x34c)]===_0x1762e2['end'])throw Error('多采样点切面轴的起止值不能相等。');}},volumeAxisValueToNormalized=(_0x4f1cb9,_0x1e2630)=>_0x4f1cb9[_0x4d4387(0x34c)]===_0x4f1cb9[_0x4d4387(0x356)]?0x0:(_0x1e2630-_0x4f1cb9['start'])/(_0x4f1cb9[_0x4d4387(0x356)]-_0x4f1cb9[_0x4d4387(0x34c)]),normalizedToVolumeAxisValue=(_0x3715da,_0x30038c)=>_0x3715da[_0x4d4387(0x34c)]+_0x30038c*(_0x3715da[_0x4d4387(0x356)]-_0x3715da['start']);var SliceState=class{[_0x4d4387(0x25a)];['listeners']=new Set();[_0x4d4387(0x1a3)];[_0x4d4387(0x113)];[_0x4d4387(0x471)];[_0x4d4387(0x2aa)]=0x1;[_0x4d4387(0x30b)]=null;['slices']=[];[_0x4d4387(0x305)]=_0x4d4387(0x1f0);['volumeDimFactor'];constructor(_0x13a889,_0x5deb1f={}){const _0x430fe5=_0x4d4387;if(validateAxes(_0x13a889),this['axes']={'xAxis':{..._0x13a889[_0x430fe5(0x169)]},'yAxis':{..._0x13a889[_0x430fe5(0x424)]},'zAxis':{..._0x13a889[_0x430fe5(0x182)]}},this['volumeDimFactor']=_0x5deb1f[_0x430fe5(0x275)]??0.25,this[_0x430fe5(0x471)]=_0x5deb1f['depthMode']??'scene',this[_0x430fe5(0x113)]=_0x5deb1f[_0x430fe5(0x113)]??0xc,this['onLimitReached']=_0x5deb1f[_0x430fe5(0x1a3)],!(this[_0x430fe5(0x275)]>=0x0&&this['volumeDimFactor']<=0x1))throw Error('volumeDimFactor\x20必须位于\x200\x20到\x201。');if(this['depthMode']!==_0x430fe5(0x120)&&this[_0x430fe5(0x471)]!==_0x430fe5(0x252))throw Error(_0x430fe5(0x2b7));if(!(Number[_0x430fe5(0x403)](this[_0x430fe5(0x113)])&&this['maxLockedSlices']>0x0))throw Error(_0x430fe5(0x2b4));}get[_0x4d4387(0x361)](){const _0x39959c=_0x4d4387;return clonePreview(this[_0x39959c(0x30b)]);}get[_0x4d4387(0x365)](){const _0x2efeaf=_0x4d4387;return this[_0x2efeaf(0x42c)][_0x2efeaf(0x45f)](cloneLockedSlice);}get['toolMode'](){return this['mode'];}get[_0x4d4387(0x3a4)](){const _0x381e01=_0x4d4387;return{'preview':this[_0x381e01(0x361)],'lockedSlices':this['lockedSlices'],'toolMode':this[_0x381e01(0x305)],'volumeDimFactor':this[_0x381e01(0x275)]};}[_0x4d4387(0x22e)](_0x2c5988){const _0x4ebc53=_0x4d4387;return this[_0x4ebc53(0x418)][_0x4ebc53(0x45d)](_0x2c5988),_0x2c5988(this[_0x4ebc53(0x3a4)]),()=>this[_0x4ebc53(0x418)]['delete'](_0x2c5988);}get[_0x4d4387(0x2cb)](){const _0x311ed1=_0x4d4387;return{'xAxis':{...this[_0x311ed1(0x25a)]['xAxis']},'yAxis':{...this['axes'][_0x311ed1(0x424)]},'zAxis':{...this[_0x311ed1(0x25a)]['zAxis']}};}[_0x4d4387(0x440)](_0x572229){const _0x54723c=_0x4d4387;validateAxes(_0x572229),this[_0x54723c(0x25a)]={'xAxis':{..._0x572229[_0x54723c(0x169)]},'yAxis':{..._0x572229[_0x54723c(0x424)]},'zAxis':{..._0x572229[_0x54723c(0x182)]}},this['currentPreview']&&(this[_0x54723c(0x30b)]['position']=clampPosition(this[_0x54723c(0x25a)],this[_0x54723c(0x30b)][_0x54723c(0x347)],this['currentPreview'][_0x54723c(0x1cc)])),this[_0x54723c(0x42c)]=this[_0x54723c(0x42c)]['map'](_0x4b79f1=>({..._0x4b79f1,'position':clampPosition(this[_0x54723c(0x25a)],_0x4b79f1[_0x54723c(0x347)],_0x4b79f1['position'])})),this[_0x54723c(0x358)]();}['setToolMode'](_0x159276){const _0x1e179e=_0x4d4387;this[_0x1e179e(0x305)]!==_0x159276&&(this[_0x1e179e(0x305)]=_0x159276,(_0x159276===null||_0x159276!==_0x1e179e(0x1f0)&&this['currentPreview']?.['axis']!==_0x159276)&&(this[_0x1e179e(0x30b)]=null),this[_0x1e179e(0x358)]());}[_0x4d4387(0x128)](_0xace234,_0x10a32b){const _0x2b5d54=_0x4d4387;if(this['mode']===null||this[_0x2b5d54(0x305)]!==_0x2b5d54(0x1f0)&&this[_0x2b5d54(0x305)]!==_0xace234)return;let _0x6cfe87=clampPosition(this[_0x2b5d54(0x25a)],_0xace234,_0x10a32b);this[_0x2b5d54(0x30b)]?.['axis']===_0xace234&&this[_0x2b5d54(0x30b)][_0x2b5d54(0x1cc)]===_0x6cfe87||(this[_0x2b5d54(0x30b)]={'axis':_0xace234,'position':_0x6cfe87},this[_0x2b5d54(0x358)]());}['clearPreview'](){const _0x10d237=_0x4d4387;this[_0x10d237(0x30b)]&&(this[_0x10d237(0x30b)]=null,this[_0x10d237(0x358)]());}[_0x4d4387(0x28a)](_0x3bddf0=this[_0x4d4387(0x471)]){const _0x3f11fe=_0x4d4387;return this[_0x3f11fe(0x30b)]?this[_0x3f11fe(0x10d)](this['currentPreview'][_0x3f11fe(0x347)],this[_0x3f11fe(0x30b)][_0x3f11fe(0x1cc)],_0x3bddf0):null;}['lockSlice'](_0x3a394c,_0x5a1468,_0xcc4256=this[_0x4d4387(0x471)]){const _0x3ed308=_0x4d4387;if(this['slices']['length']>=this[_0x3ed308(0x113)])return this['onLimitReached']?.(this[_0x3ed308(0x113)]),null;let _0xf5e484={'id':_0x3ed308(0x24d)+this[_0x3ed308(0x2aa)],'axis':_0x3a394c,'position':clampPosition(this[_0x3ed308(0x25a)],_0x3a394c,_0x5a1468),'depthMode':_0xcc4256,'visible':!0x0};return this[_0x3ed308(0x2aa)]+=0x1,this[_0x3ed308(0x42c)]=[...this[_0x3ed308(0x42c)],_0xf5e484],this[_0x3ed308(0x358)](),cloneLockedSlice(_0xf5e484);}[_0x4d4387(0x438)](_0x3151f4,_0x1b8070){const _0x1ba2cc=_0x4d4387;let _0x294f85=this[_0x1ba2cc(0x42c)][_0x1ba2cc(0x3c0)](_0xc14f28=>_0xc14f28['id']===_0x3151f4);if(_0x294f85<0x0)return;let _0x310c4b=this[_0x1ba2cc(0x42c)][_0x294f85],_0x340d79=clampPosition(this['axes'],_0x310c4b['axis'],_0x1b8070);_0x340d79!==_0x310c4b[_0x1ba2cc(0x1cc)]&&(this[_0x1ba2cc(0x42c)]=this[_0x1ba2cc(0x42c)][_0x1ba2cc(0x45f)](_0x45e167=>_0x45e167['id']===_0x3151f4?{..._0x45e167,'position':_0x340d79}:_0x45e167),this[_0x1ba2cc(0x358)]());}[_0x4d4387(0x431)](_0x8793bc){const _0x2b415d=_0x4d4387;let _0x215677=this[_0x2b415d(0x42c)]['filter'](_0x56f61d=>_0x56f61d['id']!==_0x8793bc);_0x215677[_0x2b415d(0x27b)]!==this[_0x2b415d(0x42c)][_0x2b415d(0x27b)]&&(this[_0x2b415d(0x42c)]=_0x215677,this[_0x2b415d(0x358)]());}[_0x4d4387(0x3f2)](){const _0x122de1=_0x4d4387;this['slices']['length']!==0x0&&(this[_0x122de1(0x42c)]=[],this[_0x122de1(0x358)]());}[_0x4d4387(0x358)](){const _0x539cae=_0x4d4387;let _0x37ba5b=this[_0x539cae(0x3a4)];for(let _0x453a1d of this[_0x539cae(0x418)])_0x453a1d(_0x37ba5b);}};const axisEndpoints=_0x11a151=>_0x11a151==='x'?[[0x0,0x0,0x0],[0x1,0x0,0x0]]:_0x11a151==='y'?[[0x0,0x0,0x0],[0x0,0x1,0x0]]:[[0x0,0x0,0x0],[0x0,0x0,0x1]],projectAxis=(_0x3ceed5,_0x5c03cc)=>{const _0x29675d=_0x4d4387;let _0xc16eac=multiplyMatrices(_0x5c03cc[_0x29675d(0x458)],_0x5c03cc[_0x29675d(0x19f)]),[_0x58016e,_0x5dc9f2]=axisEndpoints(_0x3ceed5),_0x3b2197=projectPointToViewport(_0xc16eac,_0x58016e,_0x5c03cc['viewportWidth'],_0x5c03cc['viewportHeight']),_0x5b2027=projectPointToViewport(_0xc16eac,_0x5dc9f2,_0x5c03cc[_0x29675d(0x25e)],_0x5c03cc[_0x29675d(0x1c0)]);return!_0x3b2197||!_0x5b2027?null:{'axis':_0x3ceed5,'startX':_0x3b2197[0x0],'startY':_0x3b2197[0x1],'endX':_0x5b2027[0x0],'endY':_0x5b2027[0x1]};},hitProjectedAxis=(_0x3854de,_0x3c8d09,_0x482ed4)=>{const _0x4ed3b3=_0x4d4387;let _0x2111bb=_0x3854de[_0x4ed3b3(0x366)]-_0x3854de[_0x4ed3b3(0x1a6)],_0x3f8c2a=_0x3854de[_0x4ed3b3(0x1bc)]-_0x3854de[_0x4ed3b3(0x139)],_0x57449b=_0x2111bb*_0x2111bb+_0x3f8c2a*_0x3f8c2a,_0x1abd15=_0x57449b===0x0?0x0:((_0x3c8d09-_0x3854de[_0x4ed3b3(0x1a6)])*_0x2111bb+(_0x482ed4-_0x3854de[_0x4ed3b3(0x139)])*_0x3f8c2a)/_0x57449b,_0x4741ef=Math['min'](0x1,Math['max'](0x0,_0x1abd15)),_0x35c434=_0x3854de[_0x4ed3b3(0x1a6)]+_0x4741ef*_0x2111bb,_0x23f3b0=_0x3854de['startY']+_0x4741ef*_0x3f8c2a;return{'axis':_0x3854de[_0x4ed3b3(0x347)],'distance':Math['hypot'](_0x3c8d09-_0x35c434,_0x482ed4-_0x23f3b0),'normalizedPosition':_0x4741ef};},eventViewportPoint=(_0x1f6c4a,_0x4b8319,_0x2d8560)=>{const _0x4c94a1=_0x4d4387;let _0x5cc3c9=_0x4b8319[_0x4c94a1(0x422)]();return[_0x5cc3c9[_0x4c94a1(0x13c)]===0x0?0x0:(_0x1f6c4a['clientX']-_0x5cc3c9['left'])*_0x2d8560[_0x4c94a1(0x25e)]/_0x5cc3c9[_0x4c94a1(0x13c)],_0x5cc3c9[_0x4c94a1(0x3cb)]===0x0?0x0:(_0x1f6c4a['clientY']-_0x5cc3c9['top'])*_0x2d8560['viewportHeight']/_0x5cc3c9[_0x4c94a1(0x3cb)]];},realAxisPosition=(_0x3a5249,_0x4dc9ad,_0x488467)=>{const _0x2fe6bf=_0x4d4387;let _0x9a3073=_0x3a5249['axisDefinitions'];return normalizedToVolumeAxisValue(_0x4dc9ad==='x'?_0x9a3073[_0x2fe6bf(0x169)]:_0x4dc9ad==='y'?_0x9a3073['yAxis']:_0x9a3073['zAxis'],_0x488467);};var SliceInteractionController=class{[_0x4d4387(0x26e)];[_0x4d4387(0x1fd)];[_0x4d4387(0x348)];[_0x4d4387(0x20d)];['axisHysteresis'];[_0x4d4387(0x1e6)];[_0x4d4387(0x198)];['activePointer']=null;[_0x4d4387(0x1aa)]=null;['initialized']=!0x1;constructor(_0x4bee66,_0xe126ea,_0x3de3b6,_0x1c7b1a={}){const _0x245b4d=_0x4d4387;this[_0x245b4d(0x26e)]=_0x4bee66,this[_0x245b4d(0x1fd)]=_0xe126ea,this[_0x245b4d(0x348)]=_0x3de3b6,this[_0x245b4d(0x20d)]=_0x1c7b1a[_0x245b4d(0x289)]??0xa,this['axisHysteresis']=_0x1c7b1a[_0x245b4d(0x415)]??0x4,this[_0x245b4d(0x1e6)]=_0x1c7b1a[_0x245b4d(0x1e6)],this['onInteractionEnd']=_0x1c7b1a[_0x245b4d(0x198)];}[_0x4d4387(0x33c)](){const _0x5395ad=_0x4d4387;this[_0x5395ad(0x31e)]||(this[_0x5395ad(0x31e)]=!0x0,this[_0x5395ad(0x26e)]['addEventListener'](_0x5395ad(0x1af),this[_0x5395ad(0x1e3)],!0x0),this[_0x5395ad(0x26e)][_0x5395ad(0x325)](_0x5395ad(0x439),this[_0x5395ad(0x2b3)],!0x0),this[_0x5395ad(0x26e)]['addEventListener'](_0x5395ad(0x29c),this[_0x5395ad(0x384)],!0x0),window[_0x5395ad(0x325)]('pointermove',this['handleWindowPointerMove'],!0x0),window[_0x5395ad(0x325)](_0x5395ad(0x235),this['handlePointerUp'],!0x0),window[_0x5395ad(0x325)](_0x5395ad(0x404),this[_0x5395ad(0x43c)],!0x0));}['beginLockedSliceDrag'](_0x47a8cc,_0x27ed21){const _0x1005bc=_0x4d4387;let _0x1ae929=this['state'][_0x1005bc(0x365)][_0x1005bc(0x147)](_0x3564b0=>_0x3564b0['id']===_0x47a8cc);_0x1ae929&&(this[_0x1005bc(0x3c4)]={'kind':_0x1005bc(0x312),'axis':_0x1ae929[_0x1005bc(0x347)],'pointerId':_0x27ed21[_0x1005bc(0x17f)],'sliceId':_0x47a8cc,'startX':_0x27ed21[_0x1005bc(0x3a6)],'startY':_0x27ed21[_0x1005bc(0x141)],'moved':!0x1},this['onInteractionStart']?.(),_0x27ed21[_0x1005bc(0x291)](),_0x27ed21['stopPropagation']());}[_0x4d4387(0x16a)](){const _0x54de1f=_0x4d4387;this['initialized']&&(this['initialized']=!0x1,this[_0x54de1f(0x26e)][_0x54de1f(0x42e)](_0x54de1f(0x1af),this[_0x54de1f(0x1e3)],!0x0),this['element'][_0x54de1f(0x42e)]('pointermove',this[_0x54de1f(0x2b3)],!0x0),this[_0x54de1f(0x26e)][_0x54de1f(0x42e)]('pointerleave',this[_0x54de1f(0x384)],!0x0),window['removeEventListener'](_0x54de1f(0x439),this[_0x54de1f(0x399)],!0x0),window[_0x54de1f(0x42e)](_0x54de1f(0x235),this[_0x54de1f(0x43c)],!0x0),window[_0x54de1f(0x42e)](_0x54de1f(0x404),this[_0x54de1f(0x43c)],!0x0),this[_0x54de1f(0x3c4)]&&this['onInteractionEnd']?.(),this['activePointer']=null,this[_0x54de1f(0x1aa)]=null,this[_0x54de1f(0x1fd)][_0x54de1f(0x2b6)]());}[_0x4d4387(0x237)](_0x504f3b,_0x397134){const _0x2db989=_0x4d4387;let _0x4a19b9=this[_0x2db989(0x348)]();if(!_0x4a19b9)return null;let [_0x559591,_0x4fb777]=eventViewportPoint(_0x504f3b,this[_0x2db989(0x26e)],_0x4a19b9),_0x2088f9=this[_0x2db989(0x1fd)][_0x2db989(0x2c2)];if(_0x2088f9===null)return null;let _0x2d8f51=(_0x397134?[_0x397134]:_0x2088f9===_0x2db989(0x1f0)?['x','y','z']:[_0x2088f9])[_0x2db989(0x45f)](_0x4c53a8=>projectAxis(_0x4c53a8,_0x4a19b9))[_0x2db989(0x1d6)](_0x3a58d2=>_0x3a58d2!==null)[_0x2db989(0x45f)](_0x5e1520=>hitProjectedAxis(_0x5e1520,_0x559591,_0x4fb777));if(_0x2d8f51[_0x2db989(0x27b)]===0x0)return null;_0x2d8f51[_0x2db989(0x274)]((_0x1c3af0,_0x3e5cc1)=>_0x1c3af0[_0x2db989(0x1d4)]-_0x3e5cc1['distance']);let _0x5d304a=_0x2d8f51[0x0];if(!_0x397134&&this[_0x2db989(0x1aa)]){let _0xffd776=_0x2d8f51[_0x2db989(0x147)](_0x128614=>_0x128614[_0x2db989(0x347)]===this[_0x2db989(0x1aa)]);_0xffd776&&_0xffd776[_0x2db989(0x1d4)]<=_0x5d304a['distance']+this[_0x2db989(0x183)]&&(_0x5d304a=_0xffd776);}return!_0x397134&&_0x5d304a['distance']>this['hitTolerance']?null:_0x5d304a;}[_0x4d4387(0x1a7)](_0x3da5e9,_0x15c67e){const _0x14dbc9=_0x4d4387;let _0x5cb7a4=realAxisPosition(this['state'],_0x3da5e9[_0x14dbc9(0x347)],_0x3da5e9['normalizedPosition']);_0x15c67e?this[_0x14dbc9(0x1fd)][_0x14dbc9(0x438)](_0x15c67e,_0x5cb7a4):this[_0x14dbc9(0x1fd)][_0x14dbc9(0x128)](_0x3da5e9[_0x14dbc9(0x347)],_0x5cb7a4),this[_0x14dbc9(0x1aa)]=_0x3da5e9['axis'];}[_0x4d4387(0x1e3)]=_0x1d599e=>{const _0x3e2d11=_0x4d4387;if(_0x1d599e[_0x3e2d11(0x23d)]!==0x0||this[_0x3e2d11(0x3c4)])return;let _0x49bee1=this[_0x3e2d11(0x237)](_0x1d599e);_0x49bee1&&(this['applyHit'](_0x49bee1),this[_0x3e2d11(0x3c4)]={'kind':_0x3e2d11(0x361),'axis':_0x49bee1['axis'],'pointerId':_0x1d599e[_0x3e2d11(0x17f)],'startX':_0x1d599e['clientX'],'startY':_0x1d599e[_0x3e2d11(0x141)],'moved':!0x1},this[_0x3e2d11(0x1e6)]?.(),this[_0x3e2d11(0x26e)]['setPointerCapture']?.(_0x1d599e[_0x3e2d11(0x17f)]),_0x1d599e[_0x3e2d11(0x291)](),_0x1d599e[_0x3e2d11(0x1e4)]());};[_0x4d4387(0x2b3)]=_0x9353bf=>{const _0xf25c11=_0x4d4387;if(this[_0xf25c11(0x3c4)])return;let _0x1c2237=this['findAxisHit'](_0x9353bf);if(!_0x1c2237){this[_0xf25c11(0x1aa)]=null,this[_0xf25c11(0x1fd)][_0xf25c11(0x2b6)]();return;}this[_0xf25c11(0x1a7)](_0x1c2237);};[_0x4d4387(0x399)]=_0x3d4146=>{const _0x32d26c=_0x4d4387;let _0x5d0454=this[_0x32d26c(0x3c4)];if(!_0x5d0454||_0x5d0454['pointerId']!==_0x3d4146[_0x32d26c(0x17f)])return;let _0x4cb7b9=this[_0x32d26c(0x237)](_0x3d4146,_0x5d0454[_0x32d26c(0x347)]);_0x4cb7b9&&(Math[_0x32d26c(0x15e)](_0x3d4146[_0x32d26c(0x3a6)]-_0x5d0454['startX'],_0x3d4146['clientY']-_0x5d0454[_0x32d26c(0x139)])>0x4&&(_0x5d0454[_0x32d26c(0x22a)]=!0x0),this[_0x32d26c(0x1a7)](_0x4cb7b9,_0x5d0454[_0x32d26c(0x232)]),_0x3d4146['preventDefault'](),_0x3d4146[_0x32d26c(0x1e4)]());};[_0x4d4387(0x43c)]=_0x50e543=>{const _0x21f909=_0x4d4387;let _0x46c670=this[_0x21f909(0x3c4)];!_0x46c670||_0x46c670[_0x21f909(0x17f)]!==_0x50e543[_0x21f909(0x17f)]||(_0x46c670[_0x21f909(0x36b)]===_0x21f909(0x361)&&!_0x46c670[_0x21f909(0x22a)]&&this['state'][_0x21f909(0x28a)](),this['element'][_0x21f909(0x282)]?.(_0x50e543['pointerId'])&&this[_0x21f909(0x26e)][_0x21f909(0x3ce)](_0x50e543[_0x21f909(0x17f)]),this['activePointer']=null,this[_0x21f909(0x198)]?.(),_0x50e543[_0x21f909(0x291)](),_0x50e543['stopPropagation']());};[_0x4d4387(0x384)]=()=>{const _0x54755e=_0x4d4387;this[_0x54755e(0x3c4)]||this[_0x54755e(0x1fd)]['clearPreview']();};};const axisLabel=_0x423ba6=>_0x423ba6[_0x4d4387(0x1ea)](),defaultFormatPosition=(_0x4436d1,_0xdee3cf)=>axisLabel(_0x4436d1)+'\x20'+Number(_0xdee3cf['toFixed'](0x4)),getAxisDefinition=(_0x5b7f63,_0x58fb04)=>{const _0x5a3c38=_0x4d4387;let _0x1ad1c1=_0x5b7f63[_0x5a3c38(0x2cb)];return _0x58fb04==='x'?_0x1ad1c1[_0x5a3c38(0x169)]:_0x58fb04==='y'?_0x1ad1c1[_0x5a3c38(0x424)]:_0x1ad1c1['zAxis'];},markerModelPoint=(_0x3bc44b,_0x51523b)=>{const _0x85480=_0x4d4387;let _0x4d6f4a=volumeAxisValueToNormalized(getAxisDefinition(_0x3bc44b,_0x51523b[_0x85480(0x347)]),_0x51523b[_0x85480(0x1cc)]);return _0x51523b[_0x85480(0x347)]==='x'?[_0x4d6f4a,0x0,0x0]:_0x51523b[_0x85480(0x347)]==='y'?[0x0,_0x4d6f4a,0x0]:[0x0,0x0,_0x4d6f4a];},applyMarkerBaseStyle=_0xf238e6=>{const _0x1a1fd3=_0x4d4387;_0xf238e6[_0x1a1fd3(0x2c0)]['position']=_0x1a1fd3(0x1c4),_0xf238e6[_0x1a1fd3(0x2c0)]['zIndex']='1',_0xf238e6[_0x1a1fd3(0x2c0)][_0x1a1fd3(0x234)]=_0x1a1fd3(0x153),_0xf238e6[_0x1a1fd3(0x2c0)][_0x1a1fd3(0x117)]='center',_0xf238e6['style']['gap']='4px',_0xf238e6['style'][_0x1a1fd3(0x3b2)]='3px\x206px',_0xf238e6[_0x1a1fd3(0x2c0)]['border']=_0x1a1fd3(0x40c),_0xf238e6[_0x1a1fd3(0x2c0)]['borderRadius']=_0x1a1fd3(0x223),_0xf238e6[_0x1a1fd3(0x2c0)][_0x1a1fd3(0x15f)]='#fff',_0xf238e6[_0x1a1fd3(0x2c0)]['background']=_0x1a1fd3(0x327),_0xf238e6[_0x1a1fd3(0x2c0)][_0x1a1fd3(0x2be)]=_0x1a1fd3(0x1ed),_0xf238e6['style'][_0x1a1fd3(0x242)]=_0x1a1fd3(0x33d),_0xf238e6['style'][_0x1a1fd3(0x28f)]=_0x1a1fd3(0x46b),_0xf238e6[_0x1a1fd3(0x2c0)][_0x1a1fd3(0x22b)]=_0x1a1fd3(0x10e),_0xf238e6['style'][_0x1a1fd3(0x411)]=_0x1a1fd3(0x10e);},createDeleteButton=()=>{const _0x3ed8d0=_0x4d4387;let _0x5d219f=document[_0x3ed8d0(0x1cb)](_0x3ed8d0(0x23d));return _0x5d219f[_0x3ed8d0(0x24e)]='button',_0x5d219f[_0x3ed8d0(0x11c)]='×',_0x5d219f['setAttribute'](_0x3ed8d0(0x40a),_0x3ed8d0(0x37d)),_0x5d219f[_0x3ed8d0(0x2c0)][_0x3ed8d0(0x3b2)]=_0x3ed8d0(0x1e7),_0x5d219f[_0x3ed8d0(0x2c0)]['border']='0',_0x5d219f['style'][_0x3ed8d0(0x15f)]=_0x3ed8d0(0x186),_0x5d219f['style']['background']='transparent',_0x5d219f[_0x3ed8d0(0x2c0)]['cursor']=_0x3ed8d0(0x464),_0x5d219f;};var SliceMarkerOverlay=class{[_0x4d4387(0x44c)];[_0x4d4387(0x1fd)];['getFrame'];[_0x4d4387(0x3cd)];[_0x4d4387(0x19b)];[_0x4d4387(0x297)]=new Map();['previousContainerPosition'];[_0x4d4387(0x154)];[_0x4d4387(0x2b8)]=null;constructor(_0xa303c1,_0x1c5273,_0x329b46,_0x1b1980={}){const _0x497c77=_0x4d4387;this[_0x497c77(0x44c)]=_0xa303c1,this['state']=_0x1c5273,this[_0x497c77(0x348)]=_0x329b46,this['interactionController']=_0x1b1980['interactionController'],this[_0x497c77(0x19b)]=_0x1b1980['formatPosition']??defaultFormatPosition,this[_0x497c77(0x250)]=_0xa303c1[_0x497c77(0x2c0)]['position'],getComputedStyle(_0xa303c1)[_0x497c77(0x1cc)]===_0x497c77(0x230)&&(_0xa303c1['style'][_0x497c77(0x1cc)]=_0x497c77(0x3b0)),this[_0x497c77(0x154)]=_0x1c5273['subscribe'](()=>this[_0x497c77(0x1f4)]());}[_0x4d4387(0x1f4)](){const _0x40a9a4=_0x4d4387;let _0x795842=this['state'][_0x40a9a4(0x3a4)];this[_0x40a9a4(0x1e0)](_0x795842[_0x40a9a4(0x361)]),this[_0x40a9a4(0x1c8)](_0x795842[_0x40a9a4(0x365)]);let _0x4a572a=this[_0x40a9a4(0x348)]();if(!_0x4a572a){this[_0x40a9a4(0x2bd)]();return;}_0x795842[_0x40a9a4(0x361)]&&this[_0x40a9a4(0x2b8)]&&this[_0x40a9a4(0x27a)](this['previewMarker'],_0x795842[_0x40a9a4(0x361)],_0x4a572a);for(let _0x13bf6b of _0x795842[_0x40a9a4(0x365)]){let _0x4f4de6=this[_0x40a9a4(0x297)][_0x40a9a4(0x40e)](_0x13bf6b['id']);_0x4f4de6&&this[_0x40a9a4(0x27a)](_0x4f4de6,_0x13bf6b,_0x4a572a);}}['destroy'](){const _0x272d96=_0x4d4387;this[_0x272d96(0x154)](),this[_0x272d96(0x2b8)]?.[_0x272d96(0x2ac)](),this[_0x272d96(0x2b8)]=null;for(let _0x3b51ec of this[_0x272d96(0x297)][_0x272d96(0x39c)]())_0x3b51ec[_0x272d96(0x2ac)]();this[_0x272d96(0x297)]['clear'](),this[_0x272d96(0x44c)][_0x272d96(0x2c0)][_0x272d96(0x1cc)]=this[_0x272d96(0x250)];}[_0x4d4387(0x1e0)](_0x45c493){const _0x81eda8=_0x4d4387;if(!_0x45c493){this[_0x81eda8(0x2b8)]?.[_0x81eda8(0x2ac)](),this[_0x81eda8(0x2b8)]=null;return;}this[_0x81eda8(0x2b8)]||(this[_0x81eda8(0x2b8)]=document[_0x81eda8(0x1cb)](_0x81eda8(0x42d)),applyMarkerBaseStyle(this['previewMarker']),this[_0x81eda8(0x2b8)]['style'][_0x81eda8(0x158)]='none',this['previewMarker'][_0x81eda8(0x2c0)][_0x81eda8(0x29d)]='0.72',this[_0x81eda8(0x44c)][_0x81eda8(0x2c4)](this['previewMarker'])),this[_0x81eda8(0x2b8)][_0x81eda8(0x11c)]=this[_0x81eda8(0x19b)](_0x45c493['axis'],_0x45c493[_0x81eda8(0x1cc)]);}['syncLockedMarkers'](_0x162ed2){const _0x509900=_0x4d4387;let _0x4fb48e=new Set(_0x162ed2[_0x509900(0x45f)](_0x55ce7b=>_0x55ce7b['id']));for(let [_0x24592b,_0x26262f]of this[_0x509900(0x297)])_0x4fb48e[_0x509900(0x2d5)](_0x24592b)||(_0x26262f[_0x509900(0x2ac)](),this[_0x509900(0x297)][_0x509900(0x3aa)](_0x24592b));for(let _0x119002 of _0x162ed2){let _0x1d2c48=this[_0x509900(0x297)][_0x509900(0x40e)](_0x119002['id']);_0x1d2c48||(_0x1d2c48=this[_0x509900(0x425)](_0x119002['id']),this[_0x509900(0x297)]['set'](_0x119002['id'],_0x1d2c48),this[_0x509900(0x44c)][_0x509900(0x2c4)](_0x1d2c48));let _0x2e5909=_0x1d2c48[_0x509900(0x1ac)];_0x2e5909&&(_0x2e5909[_0x509900(0x11c)]=this[_0x509900(0x19b)](_0x119002[_0x509900(0x347)],_0x119002['position']));}}[_0x4d4387(0x425)](_0x358a63){const _0x1e467c=_0x4d4387;let _0x488420=document['createElement']('div');applyMarkerBaseStyle(_0x488420),_0x488420[_0x1e467c(0x2c0)][_0x1e467c(0x203)]='grab',_0x488420['append'](document[_0x1e467c(0x470)](''));let _0x599b87=createDeleteButton();return _0x599b87[_0x1e467c(0x325)](_0x1e467c(0x1af),_0x125dc3=>_0x125dc3[_0x1e467c(0x1e4)]()),_0x599b87['addEventListener']('click',_0x1d31c0=>{const _0x4e9d9f=_0x1e467c;_0x1d31c0[_0x4e9d9f(0x1e4)](),this[_0x4e9d9f(0x1fd)][_0x4e9d9f(0x431)](_0x358a63);}),_0x488420[_0x1e467c(0x325)](_0x1e467c(0x1af),_0x3c7583=>this[_0x1e467c(0x3cd)]?.[_0x1e467c(0x13d)](_0x358a63,_0x3c7583)),_0x488420[_0x1e467c(0x2c4)](_0x599b87),_0x488420;}[_0x4d4387(0x27a)](_0x1fdbe6,_0x30371f,_0x3dd29d){const _0x521871=_0x4d4387;let _0xcae20=projectPointToViewport(multiplyMatrices(_0x3dd29d[_0x521871(0x458)],_0x3dd29d['modelMatrix']),markerModelPoint(this['state'],_0x30371f),_0x3dd29d['viewportWidth'],_0x3dd29d[_0x521871(0x1c0)]);if(!_0xcae20||_0xcae20[0x2]<0x0||_0xcae20[0x2]>0x1){_0x1fdbe6['style'][_0x521871(0x234)]=_0x521871(0x10e);return;}_0x1fdbe6['style'][_0x521871(0x234)]=_0x521871(0x153),_0x1fdbe6[_0x521871(0x2c0)][_0x521871(0x2a0)]=_0xcae20[0x0]+'px',_0x1fdbe6['style'][_0x521871(0x3f7)]=_0xcae20[0x1]+'px';}[_0x4d4387(0x2bd)](){const _0x21e479=_0x4d4387;this[_0x21e479(0x2b8)]&&(this[_0x21e479(0x2b8)][_0x21e479(0x2c0)][_0x21e479(0x234)]=_0x21e479(0x10e));for(let _0x151186 of this[_0x21e479(0x297)][_0x21e479(0x39c)]())_0x151186[_0x21e479(0x2c0)][_0x21e479(0x234)]='none';}};function _0xb383(_0x553684,_0x7c4bd0){const _0x20aa18=_0x20aa();return _0xb383=function(_0xb38333,_0x563b94){_0xb38333=_0xb38333-0x10a;let _0x3a1029=_0x20aa18[_0xb38333];return _0x3a1029;},_0xb383(_0x553684,_0x7c4bd0);}const clamp=(_0x30abd2,_0x2736f2)=>Math[_0x4d4387(0x279)](_0x2736f2-0x1,Math[_0x4d4387(0x412)](0x0,_0x30abd2)),createPhysicalBrickValues=(_0x39b7e1,_0x438871,_0x218ed2,_0x4d9d90)=>{const _0x53fee2=_0x4d4387;validateVolumeChunk(_0x39b7e1,_0x4d9d90,_0x218ed2[_0x53fee2(0x36f)]);let _0x19d3aa=_0x438871['width']+_0x438871[_0x53fee2(0x3d8)]*0x2,_0x1e7a80=_0x438871['height']+_0x438871[_0x53fee2(0x3d8)]*0x2,_0x1d8d54=_0x438871[_0x53fee2(0x25c)]+_0x438871[_0x53fee2(0x3d8)]*0x2,_0x3dfd8d=new Float32Array(_0x19d3aa*_0x1e7a80*_0x1d8d54);for(let _0x16ff40=0x0;_0x16ff40<_0x1d8d54;_0x16ff40+=0x1){let _0x5c74de=clamp(_0x218ed2[_0x53fee2(0x345)][_0x53fee2(0x462)]+_0x16ff40-_0x438871[_0x53fee2(0x3d8)],_0x39b7e1[_0x53fee2(0x182)][_0x53fee2(0x173)])-_0x4d9d90[_0x53fee2(0x14a)][_0x53fee2(0x462)];for(let _0x33effb=0x0;_0x33effb<_0x1e7a80;_0x33effb+=0x1){let _0x58aa42=clamp(_0x218ed2[_0x53fee2(0x345)][_0x53fee2(0x10b)]+_0x33effb-_0x438871[_0x53fee2(0x3d8)],_0x39b7e1[_0x53fee2(0x424)][_0x53fee2(0x173)])-_0x4d9d90[_0x53fee2(0x14a)][_0x53fee2(0x10b)];for(let _0x57d308=0x0;_0x57d308<_0x19d3aa;_0x57d308+=0x1){let _0x2b1485=clamp(_0x218ed2[_0x53fee2(0x345)][_0x53fee2(0x31f)]+_0x57d308-_0x438871[_0x53fee2(0x3d8)],_0x39b7e1[_0x53fee2(0x169)][_0x53fee2(0x173)])-_0x4d9d90[_0x53fee2(0x14a)][_0x53fee2(0x31f)];_0x3dfd8d[(_0x16ff40*_0x1e7a80+_0x33effb)*_0x19d3aa+_0x57d308]=_0x4d9d90[_0x53fee2(0x39c)][(_0x5c74de*_0x4d9d90[_0x53fee2(0x3cb)]+_0x58aa42)*_0x4d9d90[_0x53fee2(0x13c)]+_0x2b1485];}}}return _0x3dfd8d;},normalizeColorStops=_0x2c54a3=>{const _0x5731e5=_0x4d4387;if(_0x2c54a3[_0x5731e5(0x27b)]===0x0)throw Error(_0x5731e5(0x287));return _0x2c54a3[_0x5731e5(0x45f)]((_0x224c9d,_0x1d4ee0)=>{const _0x505a31=_0x5731e5;if(Number[_0x505a31(0x148)](_0x224c9d[_0x505a31(0x279)])||Number[_0x505a31(0x148)](_0x224c9d[_0x505a31(0x412)]))throw TypeError('第'+(_0x1d4ee0+0x1)+'个色标范围不能是NaN');if(_0x224c9d[_0x505a31(0x279)]>=_0x224c9d[_0x505a31(0x412)])throw Error('第'+(_0x1d4ee0+0x1)+_0x505a31(0x426));return{'min':_0x224c9d['min'],'max':_0x224c9d['max'],'color':parseRasterColor(_0x224c9d[_0x505a31(0x15f)])};})['sort']((_0x5ad3e7,_0x21f373)=>_0x5ad3e7['min']-_0x21f373['min']);},parseRasterColor=_0x432701=>{const _0x3239f5=_0x4d4387;let _0x1fd8b8=_0x432701[_0x3239f5(0x343)]()[_0x3239f5(0x2af)]();if(_0x1fd8b8[_0x3239f5(0x20e)]('#'))return parseHexColor(_0x1fd8b8);if(_0x1fd8b8['startsWith'](_0x3239f5(0x2eb)))return parseRgbColor(_0x1fd8b8,!0x0);if(_0x1fd8b8[_0x3239f5(0x20e)](_0x3239f5(0x3fa)))return parseRgbColor(_0x1fd8b8,!0x1);throw Error(_0x3239f5(0x191)+_0x432701);},parseHexColor=_0x46a2da=>{const _0xaca0e5=_0x4d4387;if(_0x46a2da[_0xaca0e5(0x27b)]===0x4)return normalizeRgb(Number['parseInt'](''+_0x46a2da[0x1]+_0x46a2da[0x1],0x10),Number[_0xaca0e5(0x3e2)](''+_0x46a2da[0x2]+_0x46a2da[0x2],0x10),Number['parseInt'](''+_0x46a2da[0x3]+_0x46a2da[0x3],0x10),0x1);if(_0x46a2da['length']===0x7)return normalizeRgb(Number[_0xaca0e5(0x3e2)](_0x46a2da[_0xaca0e5(0x465)](0x1,0x3),0x10),Number[_0xaca0e5(0x3e2)](_0x46a2da['slice'](0x3,0x5),0x10),Number['parseInt'](_0x46a2da[_0xaca0e5(0x465)](0x5,0x7),0x10),0x1);throw Error(_0xaca0e5(0x168)+_0x46a2da);},parseRgbColor=(_0x57a53d,_0x592977)=>{const _0x27bbff=_0x4d4387;let _0x3a64e6=_0x57a53d[_0x27bbff(0x37f)](/^rgba?\(([^)]+)\)$/);if(!_0x3a64e6)throw Error(_0x27bbff(0x390)+_0x57a53d);let _0x4001c0=_0x3a64e6[0x1]['split'](',')['map'](_0x15c403=>_0x15c403[_0x27bbff(0x343)]()),_0x40abf5=_0x592977?0x4:0x3;if(_0x4001c0[_0x27bbff(0x27b)]!==_0x40abf5)throw Error('rgb\x20颜色通道数量不正确:\x20'+_0x57a53d);return normalizeRgb(Number(_0x4001c0[0x0]),Number(_0x4001c0[0x1]),Number(_0x4001c0[0x2]),_0x592977?Number(_0x4001c0[0x3]):0x1);},normalizeRgb=(_0x1b2405,_0x2a382a,_0x8dfb06,_0x51d566)=>{const _0x5eb0fc=_0x4d4387;if(!isValidRgbChannel(_0x1b2405)||!isValidRgbChannel(_0x2a382a)||!isValidRgbChannel(_0x8dfb06))throw Error(_0x5eb0fc(0x12f));if(!Number[_0x5eb0fc(0x240)](_0x51d566)||_0x51d566<0x0||_0x51d566>0x1)throw Error(_0x5eb0fc(0x278));return[_0x1b2405/0xff,_0x2a382a/0xff,_0x8dfb06/0xff,_0x51d566];},isValidRgbChannel=_0x524677=>Number[_0x4d4387(0x240)](_0x524677)&&_0x524677>=0x0&&_0x524677<=0xff,validateStops=_0x1691e0=>{const _0x537847=_0x4d4387;if(_0x1691e0['length']===0x0)throw Error(_0x537847(0x3f5));let _0x362b13=-0x1/0x0;for(let _0x3a138d of _0x1691e0){if(!Number[_0x537847(0x240)](_0x3a138d[_0x537847(0x1e9)])||_0x3a138d[_0x537847(0x1e9)]<=_0x362b13)throw Error(_0x537847(0x249));if(!Number[_0x537847(0x240)](_0x3a138d['opacity'])||_0x3a138d['opacity']<0x0||_0x3a138d[_0x537847(0x29d)]>0x1)throw Error(_0x537847(0x2ff));_0x362b13=_0x3a138d[_0x537847(0x1e9)];}},findTransferInterval=(_0x4c10bb,_0x1c6116)=>{const _0x3a291c=_0x4d4387;if(_0x4c10bb<=_0x1c6116[0x0])return[0x0,0x0,0x0];for(let _0x4fe2bf=0x1;_0x4fe2bf<_0x1c6116[_0x3a291c(0x27b)];_0x4fe2bf+=0x1)if(_0x4c10bb<=_0x1c6116[_0x4fe2bf]){let _0x38bcee=_0x1c6116[_0x4fe2bf]-_0x1c6116[_0x4fe2bf-0x1];return[_0x4fe2bf-0x1,_0x4fe2bf,_0x38bcee===0x0?0x0:Math[_0x3a291c(0x279)](0x1,Math['max'](0x0,(_0x4c10bb-_0x1c6116[_0x4fe2bf-0x1])/_0x38bcee))];}let _0x5840de=_0x1c6116[_0x3a291c(0x27b)]-0x1;return[_0x5840de,_0x5840de,0x0];},prepareWebgpuVolumeTransfer=(_0x4db9a8,_0x498c33)=>{validateStops(_0x498c33);let _0x2156e2=normalizeColorStops([..._0x4db9a8]);return{'colorStops':_0x2156e2['flatMap']((_0x596a3d,_0x4441cd)=>{const _0x3b816f=_0xb383;let _0x344fae=_0x2156e2[Math[_0x3b816f(0x279)](_0x4441cd+0x1,_0x2156e2[_0x3b816f(0x27b)]-0x1)][_0x3b816f(0x15f)];return[{'value':_0x596a3d['min'],'color':_0x596a3d[_0x3b816f(0x15f)]},{'value':_0x596a3d[_0x3b816f(0x412)],'color':_0x344fae}];}),'opacityStops':_0x498c33['map'](_0x26da62=>({..._0x26da62}))};},sampleVolumeTransferColor=(_0x36a7be,_0x3f3d81,_0x1932b8,_0x1b6c52)=>{const _0x340a19=_0x4d4387;if(!Number['isFinite'](_0x36a7be))return[0x0,0x0,0x0,0x0];let [_0x22ded8,_0x2171d1,_0x16b2cc]=findTransferInterval(_0x36a7be,_0x3f3d81[_0x340a19(0x45f)](_0x1f7e3c=>_0x1f7e3c['value'])),_0x19c497=_0x3f3d81[_0x22ded8],_0x530e94=_0x3f3d81[_0x2171d1],_0x1e87e7=_0x1b6c52===_0x340a19(0x457)?0x0:_0x16b2cc;return[_0x19c497['color'][0x0]+(_0x530e94[_0x340a19(0x15f)][0x0]-_0x19c497[_0x340a19(0x15f)][0x0])*_0x1e87e7,_0x19c497[_0x340a19(0x15f)][0x1]+(_0x530e94[_0x340a19(0x15f)][0x1]-_0x19c497['color'][0x1])*_0x1e87e7,_0x19c497[_0x340a19(0x15f)][0x2]+(_0x530e94[_0x340a19(0x15f)][0x2]-_0x19c497[_0x340a19(0x15f)][0x2])*_0x1e87e7,(_0x19c497['color'][0x3]+(_0x530e94[_0x340a19(0x15f)][0x3]-_0x19c497['color'][0x3])*_0x1e87e7)*_0x1932b8];},sampleVolumeTransferOpacity=(_0x525074,_0x3712b3,_0x529deb)=>{const _0x17a721=_0x4d4387;if(!Number[_0x17a721(0x240)](_0x525074))return 0x0;let [_0x17334c,_0x3d0a9c,_0x5c78cf]=findTransferInterval(_0x525074,_0x3712b3['map'](_0x2ce110=>_0x2ce110[_0x17a721(0x1e9)])),_0x2194d2=_0x529deb===_0x17a721(0x457)?0x0:_0x5c78cf;return _0x3712b3[_0x17334c]['opacity']+(_0x3712b3[_0x3d0a9c][_0x17a721(0x29d)]-_0x3712b3[_0x17334c][_0x17a721(0x29d)])*_0x2194d2;},DEFAULT_CAMERA={'position':[1.4,1.2,2.1],'target':[0.5,0.5,0.5],'up':[0x0,0x1,0x0],'projection':{'type':_0x4d4387(0x2ab),'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=_0x2d69a9=>Math[_0x4d4387(0x279)](0x1,Math[_0x4d4387(0x412)](0x0,_0x2d69a9)),qualityStepLength=_0x296be5=>_0x296be5===_0x4d4387(0x226)?0.012:_0x296be5==='quality'?0.0025:_0x296be5==='balanced'?0.005:0.006,qualityUploadCount=_0x5c5644=>_0x5c5644===_0x4d4387(0x226)?0x8:_0x5c5644===_0x4d4387(0x429)?0x2:0x4,nextAutoQuality=(_0x790f5,_0x56f909)=>_0x56f909>0x18?_0x790f5==='quality'?_0x4d4387(0x1b3):_0x4d4387(0x226):_0x56f909<0xe?_0x790f5==='performance'?_0x4d4387(0x1b3):_0x4d4387(0x429):_0x790f5,validatePositiveOption=(_0x21696c,_0x44ad3a)=>{const _0x295302=_0x4d4387;if(!Number[_0x295302(0x240)](_0x21696c)||_0x21696c<=0x0)throw Error(_0x44ad3a+'\x20must\x20be\x20a\x20positive\x20finite\x20number.\x20'+_0x44ad3a+'\x20必须是大于\x200\x20的有限数。');return _0x21696c;},normalizeClipBox=(_0x41d5e8,_0x33fed8)=>{const _0x109c66=_0x4d4387;if(!_0x33fed8)return{'minimum':[0x0,0x0,0x0],'maximum':[0x1,0x1,0x1]};let _0x47cc56=clamp01(volumeAxisValueToNormalized(_0x41d5e8[_0x109c66(0x299)][_0x109c66(0x169)],_0x33fed8[_0x109c66(0x445)])),_0x527479=clamp01(volumeAxisValueToNormalized(_0x41d5e8[_0x109c66(0x299)]['xAxis'],_0x33fed8[_0x109c66(0x2e8)])),_0x13d70b=clamp01(volumeAxisValueToNormalized(_0x41d5e8[_0x109c66(0x299)][_0x109c66(0x424)],_0x33fed8['minY'])),_0x381b1d=clamp01(volumeAxisValueToNormalized(_0x41d5e8['metadata']['yAxis'],_0x33fed8[_0x109c66(0x167)])),_0x38819c=clamp01(volumeAxisValueToNormalized(_0x41d5e8[_0x109c66(0x299)][_0x109c66(0x182)],_0x33fed8[_0x109c66(0x1ae)])),_0x4c6207=clamp01(volumeAxisValueToNormalized(_0x41d5e8[_0x109c66(0x299)][_0x109c66(0x182)],_0x33fed8[_0x109c66(0x3c2)]));return{'minimum':[Math[_0x109c66(0x279)](_0x47cc56,_0x527479),Math[_0x109c66(0x279)](_0x13d70b,_0x381b1d),Math['min'](_0x38819c,_0x4c6207)],'maximum':[Math[_0x109c66(0x412)](_0x47cc56,_0x527479),Math[_0x109c66(0x412)](_0x13d70b,_0x381b1d),Math[_0x109c66(0x412)](_0x38819c,_0x4c6207)]};},createAxesMesh=()=>({'id':_0x4d4387(0x146),'topology':_0x4d4387(0x2a8),'depthMode':_0x4d4387(0x252),'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 _0x15c55a=_0x4d4387;let _0x141c08=[0.1,0.53,0.56,0.62],_0x1ae77f=[[0x0,0x0,0x0],[0x1,0x0,0x0],[0x0,0x1,0x0],[0x1,0x1,0x0],[0x0,0x0,0x1],[0x1,0x0,0x1],[0x0,0x1,0x1],[0x1,0x1,0x1]],_0x334229=[[0x0,0x1],[0x0,0x2],[0x1,0x3],[0x2,0x3],[0x4,0x5],[0x4,0x6],[0x5,0x7],[0x6,0x7],[0x0,0x4],[0x1,0x5],[0x2,0x6],[0x3,0x7]],_0x490c88=new Float32Array(_0x334229[_0x15c55a(0x27b)]*0x2*0x7),_0x5dc932=0x0;for(let _0x4e49c8 of _0x334229)for(let _0x2caeda of _0x4e49c8)_0x490c88['set']([..._0x1ae77f[_0x2caeda],..._0x141c08],_0x5dc932),_0x5dc932+=0x7;return{'id':_0x15c55a(0x31d),'topology':_0x15c55a(0x2a8),'depthMode':_0x15c55a(0x120),'vertices':_0x490c88};},createProfileSceneMesh=(_0x248f03,_0x489c11,_0x3d9cbe,_0x317ab0)=>{const _0x56a2f8=_0x4d4387;let _0x2aabda=new Float32Array(_0x248f03['indices'][_0x56a2f8(0x27b)]*0x7);for(let _0x33bd26=0x0;_0x33bd26<_0x248f03[_0x56a2f8(0x2e3)][_0x56a2f8(0x27b)];_0x33bd26+=0x1){let _0x4cbcfb=_0x248f03[_0x56a2f8(0x2e3)][_0x33bd26],_0x22e0b6=_0x4cbcfb*0x3,_0x3b0a07=sampleVolumeTransferOpacity(_0x248f03['values'][_0x4cbcfb],_0x3d9cbe,_0x317ab0),_0x3a936b=sampleVolumeTransferColor(_0x248f03[_0x56a2f8(0x39c)][_0x4cbcfb],_0x489c11,_0x248f03[_0x56a2f8(0x29d)]*_0x3b0a07,_0x317ab0);_0x2aabda[_0x56a2f8(0x11e)]([_0x248f03['positions'][_0x22e0b6],_0x248f03[_0x56a2f8(0x260)][_0x22e0b6+0x1],_0x248f03[_0x56a2f8(0x260)][_0x22e0b6+0x2],_0x3a936b[0x0]*_0x3a936b[0x3],_0x3a936b[0x1]*_0x3a936b[0x3],_0x3a936b[0x2]*_0x3a936b[0x3],_0x3a936b[0x3]],_0x33bd26*0x7);}return{'id':_0x248f03['id'],'topology':_0x56a2f8(0x201),'depthMode':_0x248f03[_0x56a2f8(0x471)],'vertices':_0x2aabda};},descriptorDistance=(_0x261599,_0x35169f,_0x4c6f49)=>{const _0xdb77f9=_0x4d4387;let _0x109287=(_0x261599[_0xdb77f9(0x31c)]['x']+0.5)/_0x35169f[_0xdb77f9(0x380)],_0x4798dc=(_0x261599[_0xdb77f9(0x31c)]['y']+0.5)/_0x35169f['countY'],_0x91c135=(_0x261599[_0xdb77f9(0x31c)]['z']+0.5)/_0x35169f[_0xdb77f9(0x3f0)];return Math[_0xdb77f9(0x15e)](_0x109287-_0x4c6f49[_0xdb77f9(0x1cc)][0x0],_0x4798dc-_0x4c6f49[_0xdb77f9(0x1cc)][0x1],_0x91c135-_0x4c6f49[_0xdb77f9(0x1cc)][0x2]);},descriptorLogicalIndex=(_0x1488fb,_0x4d1313)=>(_0x1488fb[_0x4d4387(0x31c)]['z']*_0x4d1313[_0x4d4387(0x116)]+_0x1488fb[_0x4d4387(0x31c)]['y'])*_0x4d1313[_0x4d4387(0x380)]+_0x1488fb[_0x4d4387(0x31c)]['x'],descriptorContainsSlice=(_0x80482a,_0x4bc8ed,_0x5f2372,_0x24491d)=>{const _0x5a9ce3=_0x4d4387;let _0x3ae82c=_0x5f2372==='x'?{'start':_0x80482a['coreRange'][_0x5a9ce3(0x31f)],'count':_0x80482a[_0x5a9ce3(0x345)]['xCount'],'size':_0x4bc8ed[_0x5a9ce3(0x299)][_0x5a9ce3(0x169)][_0x5a9ce3(0x173)]}:_0x5f2372==='y'?{'start':_0x80482a['coreRange'][_0x5a9ce3(0x10b)],'count':_0x80482a['coreRange'][_0x5a9ce3(0x32b)],'size':_0x4bc8ed[_0x5a9ce3(0x299)][_0x5a9ce3(0x424)][_0x5a9ce3(0x173)]}:{'start':_0x80482a[_0x5a9ce3(0x345)][_0x5a9ce3(0x462)],'count':_0x80482a[_0x5a9ce3(0x345)][_0x5a9ce3(0x353)],'size':_0x4bc8ed[_0x5a9ce3(0x299)][_0x5a9ce3(0x182)]['count']};return _0x24491d>=_0x3ae82c['start']/_0x3ae82c[_0x5a9ce3(0x33e)]&&_0x24491d<=(_0x3ae82c[_0x5a9ce3(0x34c)]+_0x3ae82c[_0x5a9ce3(0x173)])/_0x3ae82c['size'];},descriptorContainsProfile=(_0x4e20f2,_0x26c73d,_0x837b4d)=>{const _0x3ff8a6=_0x4d4387;let _0x5e4a7d=_0x4e20f2[_0x3ff8a6(0x345)][_0x3ff8a6(0x31f)]/_0x26c73d[_0x3ff8a6(0x299)][_0x3ff8a6(0x169)]['count'],_0x4ebece=(_0x4e20f2[_0x3ff8a6(0x345)][_0x3ff8a6(0x31f)]+_0x4e20f2['coreRange']['xCount'])/_0x26c73d['metadata'][_0x3ff8a6(0x169)][_0x3ff8a6(0x173)],_0x35d47a=_0x4e20f2[_0x3ff8a6(0x345)][_0x3ff8a6(0x10b)]/_0x26c73d[_0x3ff8a6(0x299)][_0x3ff8a6(0x424)][_0x3ff8a6(0x173)],_0x30a5fd=(_0x4e20f2[_0x3ff8a6(0x345)][_0x3ff8a6(0x10b)]+_0x4e20f2['coreRange'][_0x3ff8a6(0x32b)])/_0x26c73d[_0x3ff8a6(0x299)][_0x3ff8a6(0x424)]['count'],_0x5d73ce=_0x4e20f2['coreRange'][_0x3ff8a6(0x462)]/_0x26c73d[_0x3ff8a6(0x299)]['zAxis'][_0x3ff8a6(0x173)],_0x321d68=(_0x4e20f2[_0x3ff8a6(0x345)][_0x3ff8a6(0x462)]+_0x4e20f2[_0x3ff8a6(0x345)][_0x3ff8a6(0x353)])/_0x26c73d[_0x3ff8a6(0x299)][_0x3ff8a6(0x182)]['count'];return _0x837b4d[_0x3ff8a6(0x177)](_0x2e07f8=>{const _0x171b20=_0x3ff8a6;let _0x47b2ce=volumeAxisValueToNormalized(_0x26c73d[_0x171b20(0x299)][_0x171b20(0x424)],_0x2e07f8[_0x171b20(0x228)][0x0]),_0xf02e33=volumeAxisValueToNormalized(_0x26c73d[_0x171b20(0x299)][_0x171b20(0x424)],_0x2e07f8['heights'][_0x2e07f8[_0x171b20(0x228)][_0x171b20(0x27b)]-0x1]);if(Math[_0x171b20(0x412)](_0x47b2ce,_0xf02e33)<_0x35d47a||Math[_0x171b20(0x279)](_0x47b2ce,_0xf02e33)>_0x30a5fd)return!0x1;for(let _0x383178=0x0;_0x383178<_0x2e07f8[_0x171b20(0x29b)][_0x171b20(0x27b)];_0x383178+=0x2){let _0x3dcbf3=volumeAxisValueToNormalized(_0x26c73d[_0x171b20(0x299)][_0x171b20(0x169)],_0x2e07f8['path'][_0x383178]),_0x46fb4b=volumeAxisValueToNormalized(_0x26c73d[_0x171b20(0x299)][_0x171b20(0x182)],_0x2e07f8[_0x171b20(0x29b)][_0x383178+0x1]);if(_0x3dcbf3>=_0x5e4a7d&&_0x3dcbf3<=_0x4ebece&&_0x46fb4b>=_0x5d73ce&&_0x46fb4b<=_0x321d68)return!0x0;}return!0x1;});},descriptorDemandPriority=(_0x488e07,_0x307595,_0x1824f0,_0x4f1c43)=>{const _0x5b1c0e=_0x4d4387;let _0x2a5a69=_0x1824f0[_0x5b1c0e(0x361)];if(_0x2a5a69){let _0x1550a7=_0x2a5a69[_0x5b1c0e(0x347)]==='x'?_0x307595[_0x5b1c0e(0x299)][_0x5b1c0e(0x169)]:_0x2a5a69['axis']==='y'?_0x307595[_0x5b1c0e(0x299)][_0x5b1c0e(0x424)]:_0x307595[_0x5b1c0e(0x299)][_0x5b1c0e(0x182)];if(descriptorContainsSlice(_0x488e07,_0x307595,_0x2a5a69[_0x5b1c0e(0x347)],volumeAxisValueToNormalized(_0x1550a7,_0x2a5a69[_0x5b1c0e(0x1cc)])))return 0x0;}for(let _0x5e5a81 of _0x1824f0[_0x5b1c0e(0x365)]){let _0x22e5fa=_0x5e5a81[_0x5b1c0e(0x347)]==='x'?_0x307595[_0x5b1c0e(0x299)][_0x5b1c0e(0x169)]:_0x5e5a81[_0x5b1c0e(0x347)]==='y'?_0x307595[_0x5b1c0e(0x299)]['yAxis']:_0x307595[_0x5b1c0e(0x299)][_0x5b1c0e(0x182)];if(_0x5e5a81[_0x5b1c0e(0x3d7)]&&descriptorContainsSlice(_0x488e07,_0x307595,_0x5e5a81[_0x5b1c0e(0x347)],volumeAxisValueToNormalized(_0x22e5fa,_0x5e5a81[_0x5b1c0e(0x1cc)])))return 0x1;}return descriptorContainsProfile(_0x488e07,_0x307595,_0x4f1c43)?0x2:0x3;};function _0x20aa(){const _0x344c3f=['createCameraSignature','axisDefinitions','unconfigure','Returned\x20volume\x20chunk\x20timeIndex\x20does\x20not\x20match\x20the\x20request.\x20返回体积分块的时间索引与请求不一致。','volume\x20brick\x20reusable\x20upload\x20staging','xCount','autoQuality','volume\x20brick\x20upload\x20batch\x20flush','device','message','Count','has','volume\x20scene\x20geometry\x20pass','options','descriptors','COPY_DST','shown','sin','cacheOnSuccess','brickWidth','includes','resourceRebuildCount','maxBufferSize','minimumPitchDegrees','atlas','indices','getAtlas','requestRender','pageTableBuffer','overlayContainer','maxX','.\x20体积逻辑砖块索引无效。','setFrameAvailableCallback','rgba(','createPipelineLayout','\x20\x20\x20\x20var\x20interval\x20=\x20intersectClipBox(nearModel,\x20direction);','WebGPU\x20volume\x20device\x20was\x20lost:\x20','scheduleUploadPump','createBuffer','Volume\x20Z\x20axis','8HfzTiJ','WebGPU\x20volume\x20scene\x20dimensions\x20must\x20be\x20positive\x20integers.\x20WebGPU\x20体积场景尺寸必须是正整数。','centerEcefScaled','writeBuffer','minimumPitch','projection','round','.\x20WebGPU\x20体积帧读取失败。','getTransferBindGroupLayout','5285920nJVEEj','正交相机高度和宽高比必须大于\x200。','enqueueBrickUpload','WebGPU\x20volume\x20canvas\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20Canvas\x20尚未初始化。','Volume\x20opacity\x20must\x20be\x20within\x20[0,\x201].\x20体积透明度必须位于\x20[0,\x201]。','pendingKeys','setProjectionType','createPipelines','volume\x20transfer\x20bind\x20group\x20layout','framesRemaining','mode','sceneBindGroup','brickScheduleDirty','name','clearTimeout','finish','currentPreview','getCurrentTexture','sqrt','powerPreference','uniform','interactionStepScale','shift','locked','resources','skippedSampleCount','Failed\x20to\x20create\x20a\x20WebGPU\x20canvas\x20context\x20for\x20the\x20volume\x20scene.\x20无法为体积场景创建\x20WebGPU\x20Canvas\x20上下文。','loadBrick','gpuBytes','Geographic\x20volume\x20proxy\x20bounds\x20are\x20invalid.\x20地理体积代理范围无效。','WebGPU\x20slice\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20切面绑定布局不可用。','initializing','acquireSlot','coordinate','volume-bounds','initialized','xStart','timeCount','volumeBindGroup','BYTES_PER_ELEMENT','\x20无效。','路线剖面\x20','addEventListener','getPageTableBuffer','rgb(17\x2024\x2039\x20/\x2082%)','forEach','cos','beginInteraction','levelCount','volumeCamera','maximumDistance','sceneBindGroupLayout','next','createShaderModule','touch','uploadPump','backend','WebGPU\x20volume\x20device\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20device\x20尚未初始化。','scheduleCameraMoveEnd','upload','sliceResources','interactionElement','requestAdapter','high-performance','generation','initialize','nowrap','size','axisResources','clipMinimum','transferResources','bindSliceState','trim','transferBindGroup','coreRange','call','axis','getFrame','setCamera','getEffectiveQuality','getInteractionKind','start','createValues','setVertexBuffer','autoFrameIntervalTotal','format','maximum','clear','sourceYCount','maximumPitch','uploadStagingBuffer','end','hitRadius','notify','STORAGE','uploadGeneration','frameIndex','透视相机视场角必须位于\x200\x20到\x20180\x20度之间。','frameRequest','volumeOptions','submittedFrameCount','2293613SnXoMe','preview','volume\x20color\x20stop\x20colors','coordinateSystem','getBindGroupLayout','lockedSlices','endX','rowsPerImage','copyTextureToBuffer','Volume\x20chunk\x20range\x20exceeds\x20source\x20dimensions.\x20体积分块范围超出源数据尺寸。','Mars3D\x20volume\x20layer\x20is\x20not\x20ready;\x20await\x20readyPromise\x20first.\x20Mars3D\x20体积层尚未就绪,请先等待\x20readyPromise。','kind','profiles','sceneLinePipeline','readyResolve','readRange','beginRenderPass','bind','WebGPU\x20volume\x20page\x20table\x20exceeds\x20the\x20configured\x20memory\x20limit.\x20WebGPU\x20体积页表超过显存限制。','syncCamera','WebGPU\x20is\x20required\x20for\x20the\x20volume\x20scene\x20but\x20is\x20unavailable.\x20体积场景需要\x20WebGPU,但当前环境不可用。','getAtlasTexture','Volume\x20X\x20axis','memoryTargetBytes','setBindGroup','readyReject','error','handleFrameAvailable','isInteracting','删除切面','Failed\x20to\x20acquire\x20a\x20WebGPU\x20adapter\x20for\x20the\x20volume\x20scene.\x20无法为体积场景获取\x20WebGPU\x20adapter。','match','countX','pixelRatioCap','lifecycleState','Returned\x20volume\x20chunk\x20dimensions\x20do\x20not\x20match\x20its\x20range.\x20返回体积分块尺寸与范围不一致。','handlePointerLeave','matrix(','_removedHook','validation','normalizationMeters','getDevice','atlasCapacity','subarray','Longitude\x20/\x20经度','\x20with\x20multiple\x20samples\x20must\x20have\x20a\x20non-zero\x20step.\x20','now','getSliceBindGroupLayout','不支持的\x20rgb\x20颜色格式:\x20','near','render','Volume\x20valueScale\x20must\x20be\x20finite.\x20体积\x20valueScale\x20必须是有限数值。','prepared','无法归一化长度为零的三维向量。','cameraEndTimer','\x20with\x20one\x20sample\x20must\x20use\x20equal\x20endpoints.\x20','Volume\x20opacity\x20stops\x20must\x20be\x20sorted\x20by\x20value.\x20体积透明度色标必须按数值升序排列。','handleWindowPointerMove','getVolumeParamsBuffer','replace','values','handlePreRender','getAttachments','store','writeVolumeParams','positionWC','WebGPU\x20geometry\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20几何绑定布局不可用。','cachedSlices','snapshot','floor','clientX','lastTimingFrameTimestamp','setTransfer','geometryBindGroupLayout','delete','Volume\x20chunk\x20','pageTableValues','WebGPU\x20scene\x20attachments\x20are\x20unavailable.\x20WebGPU\x20场景附件不可用。','\x20的\x20heights\x20包含非有限高度。','orthographic','relative','createCanvas','padding','fn\x20getPageIndex','noData','\x20must\x20contain\x20sixteen\x20finite\x20values.\x20','createView','zoomSpeed','setSliceTool','\x20只有一个采样点时端点必须相等。','cartesian','requestControllers','assertAlive','opacityStopCount','semiMinorAxisScaled','setToolMode','findIndex','submit','maxZ','mixed','activePointer','layer','sceneSlicePipeline','abs','相机裁剪距离必须满足\x200\x20<=\x20near\x20<\x20far。','frameInFlight','UNIFORM','height','setState','interactionController','releasePointerCapture','geographic-wgs84','volume\x20scene\x20bind\x20group\x20layout','bindControls','heightScaled','prepareBrickUpload','volume\x20opacity\x20stop\x20alphas','float32x4','createResource','visible','halo','ready','\x20endpoints\x20must\x20be\x20finite.\x20','layout','\x20至少需要两个高度层。','parentElement','destroyed','Volume\x20source\x20must\x20provide\x20readChunk().\x20体积数据源必须提供\x20readChunk()。','clipBox','切面位置必须是有限数。','parseInt','updateTransferResources','opacityValuesBuffer','切面轴采样数必须是正整数。','Volume\x20Y\x20axis','clearCameraFrameCompensation','TEXTURE_BINDING','flushBrickSchedule','Mars3D\x20map\x20canvas\x20must\x20have\x20a\x20parent\x20element.\x20Mars3D\x20地图\x20Canvas\x20必须存在父元素。','chunk','volume\x20always\x20visible\x20pass','budgetLimited','slotCount','setTimeIndex','countZ','WebGPU\x20volume\x20params\x20buffer\x20is\x20unavailable.\x20WebGPU\x20体积参数\x20Buffer\x20不可用。','clearLockedSlices','pendingCompensationFrame','source','Volume\x20opacity\x20stops\x20cannot\x20be\x20empty.\x20体积透明度节点不能为空。','WebGPU\x20volume\x20atlas\x20is\x20not\x20configured.\x20WebGPU\x20体积图集尚未配置。','top','overlayLinePipeline','onError','rgb(','rejectPendingBrickUploads','cacheBrickUpload','.\x20WebGPU\x20体积设备已丢失。','\x20axis\x20must\x20contain\x20two\x20different\x20finite\x20endpoints.\x20','Volume\x20chunk\x20requires\x20','valueScale','camera','updateSlice','isInteger','pointercancel','Height\x20/\x20高度','cameraSignature','atlasLayout','overlayTrianglePipeline','directionWC','aria-label','getFormat','1px\x20solid\x20rgb(255\x20255\x20255\x20/\x2065%)','configure','get','encodePreparedBrickUpload','atlasTextures','touchAction','max','flushSliceState','orbit','axisHysteresisPixels','Volume\x20slice\x20ID\x20','verticalScale','listeners','getProfileResources','fovy','logicalIndex','applyCameraFrameCompensation','skippedSamples','setShow','createGpuResources','uploadBatchCount','finishCameraInteraction','getBoundingClientRect','pan','yAxis','createLockedMarker','个色标范围的\x20min\x20必须小于\x20max','Volume\x20brick\x20','\x20的\x20values\x20长度与\x20path、heights\x20不匹配。','quality','toPrecision','isSafeInteger','slices','div','removeEventListener','\x20的\x20path\x20必须包含至少两个\x20[x,\x20z]\x20点。','createProjectionMatrix','removeSlice','fragmentMain','getCanvas','\x20must\x20contain\x20position\x20and\x20RGBA\x20values\x20for\x20every\x20vertex.\x20场景网格顶点必须包含位置和\x20RGBA。','brickScheduleCount','\x0afn\x20intersectEllipsoid(origin:\x20vec3f,\x20direction:\x20vec3f,\x20semiMajor:\x20f32,\x20semiMinor:\x20f32)\x20->\x20vec2f\x20{\x0a\x20\x20\x20\x20let\x20inverseRadiiSquared\x20=\x20vec3f(\x0a\x20\x20\x20\x20\x20\x20\x20\x201.0\x20/\x20(semiMajor\x20*\x20semiMajor),\x0a\x20\x20\x20\x20\x20\x20\x20\x201.0\x20/\x20(semiMajor\x20*\x20semiMajor),\x0a\x20\x20\x20\x20\x20\x20\x20\x201.0\x20/\x20(semiMinor\x20*\x20semiMinor)\x0a\x20\x20\x20\x20);\x0a\x20\x20\x20\x20let\x20coefficientA\x20=\x20dot(direction\x20*\x20direction,\x20inverseRadiiSquared);\x0a\x20\x20\x20\x20let\x20coefficientB\x20=\x202.0\x20*\x20dot(origin\x20*\x20direction,\x20inverseRadiiSquared);\x0a\x20\x20\x20\x20let\x20coefficientC\x20=\x20dot(origin\x20*\x20origin,\x20inverseRadiiSquared)\x20-\x201.0;\x0a\x20\x20\x20\x20let\x20discriminant\x20=\x20coefficientB\x20*\x20coefficientB\x20-\x204.0\x20*\x20coefficientA\x20*\x20coefficientC;\x0a\x0a\x20\x20\x20\x20if\x20(discriminant\x20<\x200.0\x20||\x20coefficientA\x20<=\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec2f(1.0,\x20-1.0);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20root\x20=\x20sqrt(discriminant);\x0a\x20\x20\x20\x20let\x20inverseDenominator\x20=\x200.5\x20/\x20coefficientA;\x0a\x20\x20\x20\x20let\x20first\x20=\x20(-coefficientB\x20-\x20root)\x20*\x20inverseDenominator;\x0a\x20\x20\x20\x20let\x20second\x20=\x20(-coefficientB\x20+\x20root)\x20*\x20inverseDenominator;\x0a\x20\x20\x20\x20return\x20vec2f(min(first,\x20second),\x20max(first,\x20second));\x0a}\x0a\x0afn\x20intersectGeographicShell(origin:\x20vec3f,\x20direction:\x20vec3f)\x20->\x20RayInterval\x20{\x0a\x20\x20\x20\x20let\x20worldOrigin\x20=\x20transformPoint(scene.modelMatrix,\x20origin)\x20+\x20scene.geographic0.yzw;\x0a\x20\x20\x20\x20let\x20worldDirection\x20=\x20transformPoint(scene.modelMatrix,\x20origin\x20+\x20direction)\x20-\x20transformPoint(scene.modelMatrix,\x20origin);\x0a\x20\x20\x20\x20let\x20minimumHeight\x20=\x20min(scene.geographic2.z,\x20scene.geographic2.w);\x0a\x20\x20\x20\x20let\x20maximumHeight\x20=\x20max(scene.geographic2.z,\x20scene.geographic2.w);\x0a\x20\x20\x20\x20let\x20outer\x20=\x20intersectEllipsoid(worldOrigin,\x20worldDirection,\x20scene.geographic1.x\x20+\x20maximumHeight,\x20scene.geographic1.y\x20+\x20maximumHeight);\x0a\x0a\x20\x20\x20\x20if\x20(outer.y\x20<\x20max(0.0,\x20outer.x))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20RayInterval(1.0,\x20-1.0,\x20false);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20var\x20minimumDistance\x20=\x20max(0.0,\x20outer.x);\x0a\x20\x20\x20\x20var\x20maximumDistance\x20=\x20outer.y;\x0a\x20\x20\x20\x20let\x20inner\x20=\x20intersectEllipsoid(worldOrigin,\x20worldDirection,\x20scene.geographic1.x\x20+\x20minimumHeight,\x20scene.geographic1.y\x20+\x20minimumHeight);\x0a\x0a\x20\x20\x20\x20if\x20(inner.y\x20>=\x20max(0.0,\x20inner.x))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(inner.x\x20>\x20minimumDistance)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20maximumDistance\x20=\x20min(maximumDistance,\x20inner.x);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(inner.y\x20>\x20minimumDistance)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20minimumDistance\x20=\x20max(minimumDistance,\x20inner.y);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20RayInterval(minimumDistance,\x20maximumDistance,\x20maximumDistance\x20>=\x20minimumDistance);\x0a}\x0a\x0afn\x20getPageIndex','fov','updateLockedSlice','pointermove','getUploadStagingBuffer','vertexCount','handlePointerUp','anchorDistance','destroyResources','upWC','setAxes','getSliceResources','preRender','show','bufferOffset','minX','volumePipeline','actualFrameIntervalMilliseconds','configureModel','coreSampleCount','getPreferredCanvasFormat','entries','container','cameraState','Volume\x20brick\x20halo\x20must\x20be\x20a\x20positive\x20integer.\x20体积分块\x20halo\x20必须是正整数。','r32float','opacityStops','opacityBuffer','context','drawMeshes','volume\x20scene\x20mesh\x20shader','writePageEntry','sliceState','step','viewProjectionMatrix','\x20包含多个采样点时步长不能为零。','WRITE','Volume\x20slice\x20','vertices','add','deltaY','map','路线剖面\x20id\x20不能为空。','setRouteProfiles','sourceYStart','pushErrorScope','pointer','slice','requestBrickSchedule','volume\x20atlas\x20clear\x20bind\x20group','WebGPU\x20volume\x20atlas\x20resources\x20are\x20incomplete.\x20WebGPU\x20体积图集资源不完整。','getSceneBindGroupLayout','reject','translate(-50%,\x20-100%)','cachedBricks','indexOf','colorBuffer','devicePixelRatio','createTextNode','depthMode','onSubmittedWorkDone','counts','levelStart','gpu','lockSlice','none','WebGPU\x20volume\x20transfer\x20resources\x20are\x20incomplete.\x20WebGPU\x20体积传递函数资源不完整。','worldAnchors','WebGPU\x20volume\x20atlas\x20layout\x20is\x20unavailable.\x20WebGPU\x20体积图集布局不可用。','encodeScenePass','maxLockedSlices','inverseModelMatrix','slotCountY','countY','alignItems','volume\x20scene\x20params','atan2','cachedProfiles','clearAtlasTexture','textContent','colorStops','set','.\x20最大锁定切面数量为\x20','scene','endInteraction','fovYDegrees','capacity','setSource','encodeOverlayPass','volumeBindGroupLayout','clientWidth','updatePreview','float32x3','volume\x20atlas\x20clear\x20pipeline','beginComputePass','screenAnchors','main','.\x20体积砖块数据长度不正确。','RGB\x20颜色通道必须在\x200\x20~\x20255\x20之间','bindFrameAvailableCallback','maximumUploadBatchBytes','FRAGMENT','84zHQajv','mars3d\x20volume\x20shell\x20raymarch\x20shader','lastUsedFrame','getContext','vertexMain','setAspect','startY','frustum','\x20noData\x20必须是有限数值或\x20NaN。','width','beginLockedSliceDrag','byteLength','popErrorScope','setTimeout','clientY','pendingSliceSnapshot','A\x20destroyed\x20Mars3D\x20volume\x20layer\x20cannot\x20be\x20used.\x20已销毁的\x20Mars3D\x20体积层不能继续使用。','positionCartographic','\x20is\x20duplicated.\x20体积切面\x20ID\x20重复。','volume-axes','find','isNaN','\x20的\x20opacity\x20必须位于\x200\x20到\x201。','range','endsWith','Volume\x20timeCount','writeParams','ceil','setPipeline','4886280TGkkLT','block','sliceDepthMode','flex','unsubscribe','topology','revision','slotCountZ','pointerEvents','WebGPU\x20volume\x20memory\x20limits\x20must\x20be\x20positive.\x20WebGPU\x20体积显存限制必须大于零。','memoryHardLimitBytes','volume\x20frame\x20capture','processBrickUploads','volumeMetadata','hypot','color','markerOverlay','aspect','createProjectionCamera','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','colorInputs','stepLength','configureSource','maxY','不支持的\x20hex\x20颜色格式:\x20','xAxis','destroy','slotIndex','matrices','brickDepth','join','depthTexture','getTransferResources','正交相机高度必须大于\x200。','\x20position\x20must\x20be\x20normalized\x20to\x20zero\x20through\x20one.\x20体积切面位置必须归一化到零至一。','count','struct\x20SceneParams\x20{\x0a\x20\x20\x20\x20viewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseViewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20modelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseModelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20cameraPosition:\x20vec4f,\x0a\x20\x20\x20\x20viewport:\x20vec4f,\x0a\x20\x20\x20\x20clipMinimum:\x20vec4f,\x0a\x20\x20\x20\x20clipMaximum:\x20vec4f,\x0a\x20\x20\x20\x20render:\x20vec4f,\x0a\x20\x20\x20\x20transfer:\x20vec4f,\x0a\x20\x20\x20\x20geographic0:\x20vec4f,\x0a\x20\x20\x20\x20geographic1:\x20vec4f,\x0a\x20\x20\x20\x20geographic2:\x20vec4f,\x0a}\x0a\x0astruct\x20VertexOutput\x20{\x0a\x20\x20\x20\x20@builtin(position)\x20position:\x20vec4f,\x0a\x20\x20\x20\x20@location(0)\x20color:\x20vec4f,\x0a}\x0a\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20scene:\x20SceneParams;\x0a\x0afn\x20transformScenePosition(position:\x20vec3f)\x20->\x20vec4f\x20{\x0a\x20\x20\x20\x20if\x20(scene.geographic0.x\x20<\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20scene.viewProjection\x20*\x20scene.modelMatrix\x20*\x20vec4f(position,\x201.0);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20longitude\x20=\x20mix(scene.geographic1.z,\x20scene.geographic1.w,\x20position.x);\x0a\x20\x20\x20\x20let\x20latitude\x20=\x20mix(scene.geographic2.x,\x20scene.geographic2.y,\x20position.z);\x0a\x20\x20\x20\x20let\x20height\x20=\x20mix(scene.geographic2.z,\x20scene.geographic2.w,\x20position.y);\x0a\x20\x20\x20\x20let\x20latitudeSin\x20=\x20sin(latitude);\x0a\x20\x20\x20\x20let\x20latitudeCos\x20=\x20cos(latitude);\x0a\x20\x20\x20\x20let\x20semiMajor\x20=\x20scene.geographic1.x;\x0a\x20\x20\x20\x20let\x20semiMinor\x20=\x20scene.geographic1.y;\x0a\x20\x20\x20\x20let\x20eccentricitySquared\x20=\x201.0\x20-\x20semiMinor\x20*\x20semiMinor\x20/\x20(semiMajor\x20*\x20semiMajor);\x0a\x20\x20\x20\x20let\x20primeVerticalRadius\x20=\x20semiMajor\x20/\x20sqrt(1.0\x20-\x20eccentricitySquared\x20*\x20latitudeSin\x20*\x20latitudeSin);\x0a\x20\x20\x20\x20let\x20ecef\x20=\x20vec3f(\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20+\x20height)\x20*\x20latitudeCos\x20*\x20cos(longitude),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20+\x20height)\x20*\x20latitudeCos\x20*\x20sin(longitude),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20*\x20(1.0\x20-\x20eccentricitySquared)\x20+\x20height)\x20*\x20latitudeSin\x0a\x20\x20\x20\x20);\x0a\x20\x20\x20\x20return\x20scene.viewProjection\x20*\x20vec4f(ecef\x20-\x20scene.geographic0.yzw,\x201.0);\x0a}\x0a\x0a@vertex\x0afn\x20vertexMain(@location(0)\x20position:\x20vec3f,\x20@location(1)\x20color:\x20vec4f)\x20->\x20VertexOutput\x20{\x0a\x20\x20\x20\x20return\x20VertexOutput(transformScenePosition(position),\x20color);\x0a}\x0a\x0a@fragment\x0afn\x20fragmentMain(input:\x20VertexOutput)\x20->\x20@location(0)\x20vec4f\x20{\x0a\x20\x20\x20\x20return\x20vec4f(input.color.rgb\x20*\x20input.color.a,\x20input.color.a);\x0a}\x0a','\x20的\x20path\x20包含非有限坐标。','abort','some','keys','\x20noData\x20must\x20be\x20finite\x20or\x20NaN.\x20','splice','volumeParamsBuffer','onSlicesChange','The\x20current\x20WebGPU\x20volume\x20atlas\x20requires\x20halo:\x201.\x20当前\x20WebGPU\x20体积图集要求\x20halo\x20为\x201。','unmap','pointerId','overlaySlicePipeline','The\x20maximum\x20locked\x20slice\x20count\x20has\x20been\x20reached.\x20已达到最大锁定切面数量。','zAxis','axisHysteresis','far','eventDisposers','inherit','readyPromise','limits','uploadedBrickCount','相机宽高比必须是大于\x200\x20的有限数。','\x20必须是正整数。','sceneTrianglePipeline','residentBrickCount','createSliceState','colorMode','1544598tddKUU','不支持的颜色格式:\x20','fill','Mars3D\x20volume\x20layer\x20is\x20not\x20added\x20to\x20a\x20map.\x20Mars3D\x20体积层尚未添加到地图。','prototype','attachments','resetBrickRequests','\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','onInteractionEnd','managed','then','formatPosition','volume-slice-preview','bytesPerRow','相机宽高比必须大于\x200。','modelMatrix','uniformUpdateCount','\x20must\x20be\x20a\x20positive\x20integer.\x20','contextmenu','onLimitReached','sliceInteraction','volume\x20transfer\x20bind\x20group','startX','applyHit','WebGPU\x20volume\x20page\x20table\x20is\x20unavailable.\x20WebGPU\x20体积页表不可用。','volume\x20geometry\x20bind\x20group','previousAxis','dolly','firstChild','origin','minZ','pointerdown','volume\x20atlas\x20bind\x20group','colorStopCount','baseModelMatrix','balanced','signal','catch','verticalScale\x20必须是大于\x200\x20的有限数。','handleResize','Returned\x20volume\x20chunk\x20range\x20does\x20not\x20match\x20the\x20request.\x20返回体积分块范围与请求不一致。','Volume\x20color\x20stops\x20must\x20be\x20sorted\x20by\x20value.\x20体积颜色色标必须按数值升序排列。','setProfiles','depthView','endY','Geographic\x20volume\x20normalization\x20must\x20be\x20a\x20positive\x20finite\x20distance.\x20地理体积归一化尺度必须是正有限距离。','sourceGeneration','inverseViewProjection','viewportHeight','pendingBrickUploads','composite','displayedCompensationFrame','absolute','from','onSliceError','recordFrameInterval','syncLockedMarkers','less','interactionRenderScale','createElement','position','cameraMoving','MAP_READ','tan','createCommandEncoder','透视相机参数无效。','getVolumeBindGroupLayout','one-minus-src-alpha','distance','renderer','filter','valuesEqual','Scene\x20mesh\x20','切面轴端点必须是有限数。','WebGPU\x20axis\x20resources\x20are\x20unavailable.\x20WebGPU\x20轴线资源不可用。','slotCountX','Volume\x20revision\x20must\x20be\x20a\x20non-negative\x20integer.\x20体积\x20revision\x20必须是非负整数。','pendingBrickCount','queue','volume\x20brick\x20page\x20table','syncPreview','Mars3D\x20volume\x20layer\x20is\x20not\x20attached\x20to\x20a\x20map.\x20Mars3D\x20体积层尚未关联地图。','renderMode','handlePointerDown','stopPropagation','uploadBrick','onInteractionStart','0\x202px','矩阵不可逆。','value','toUpperCase','residentBySlotIndex','WebGPU\x20profile\x20resources\x20are\x20unavailable.\x20WebGPU\x20剖面资源不可用。','12px/1.2\x20sans-serif','createTexture','mapAsync','auto','lastSubmittedFrameTimestamp','showDebugGeometry','33780270dpxRYF','update','Invalid\x20logical\x20volume\x20brick\x20index:\x20','100%','WebGPU\x20volume\x20source\x20must\x20be\x20configured\x20before\x20uploading\x20bricks.\x20上传砖块前必须配置\x20WebGPU\x20体积数据源。','atlasViews','transferBindGroupLayout','timeIndex','A\x20destroyed\x20volume\x20scene\x20cannot\x20capture\x20a\x20frame.\x20已销毁的体积场景不能读取帧。','external','state','brickSortCount','volume\x20scene\x20frame','captureFrame','triangle-list','desiredKeys','cursor','plateColor','volume\x20metadata\x20params','target','WebGPU\x20slice\x20resources\x20are\x20unavailable.\x20WebGPU\x20切面资源不可用。','requestFramesImmediately','_map','readChunk','drawSlices','\x20requires\x20','hitTolerance','startsWith','WebGPU\x20scene\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20场景绑定布局不可用。','458NBuxyF','volume\x20atlas\x20clear\x20pass','verticalScale\x20must\x20be\x20a\x20positive\x20finite\x20value.\x20verticalScale\x20必须是大于\x200\x20的有限数。','key','\x20plate\x20color\x20must\x20use\x20values\x20from\x20zero\x20through\x20one.\x20体积切面底板颜色必须位于零至一。','extent','releaseGpuResources','skippedCells','recreateSceneBindGroup','volume\x20frame\x20readback','shape','smooth','resize','WebGPU\x20volume\x20atlas\x20has\x20no\x20evictable\x20slot.\x20WebGPU\x20体积图集没有可驱逐的槽位。','profileResources','getMappedRange','renderScale','BaseLayer','proxyModelMatrix','4px','configureSourceResources','AbortError','performance','rebuildProfiles','heights','clipMaximum','moved','userSelect','clientHeight','setSlices','subscribe','clearPageEntry','static','premultiplied','sliceId','WebGPU\x20volume\x20frame\x20capture\x20failed:\x20','display','pointerup','\x20must\x20be\x20a\x20non-negative\x20finite\x20value.\x20','findAxisHit','asin','cachedAxes','Volume\x20brick\x20upload\x20was\x20superseded\x20by\x20a\x20new\x20source.\x20体积砖上传已被新数据源替代。','read-only-storage','volume\x20slice\x20bind\x20group\x20layout','button','createBindGroupLayout','createBindGroup','isFinite','occupied','whiteSpace','geometryBindGroup','watchDeviceLost','colorValuesBuffer','residentByLogicalIndex','navigationMode','uploadStagingBufferSize','Volume\x20opacity\x20stop\x20values\x20must\x20be\x20finite\x20and\x20strictly\x20increasing.\x20体积透明度节点值必须有限且严格递增。','updateAutoQuality','lost','\x20\x20\x20\x20var\x20interval\x20=\x20intersectClipBox(nearModel,\x20direction);\x0a\x0a\x20\x20\x20\x20if\x20(scene.geographic0.x\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20shellInterval\x20=\x20intersectGeographicShell(nearModel,\x20direction);\x0a\x20\x20\x20\x20\x20\x20\x20\x20interval.minimum\x20=\x20max(interval.minimum,\x20shellInterval.minimum);\x0a\x20\x20\x20\x20\x20\x20\x20\x20interval.maximum\x20=\x20min(interval.maximum,\x20shellInterval.maximum);\x0a\x20\x20\x20\x20\x20\x20\x20\x20interval.valid\x20=\x20interval.valid\x20&&\x20shellInterval.valid\x20&&\x20interval.maximum\x20>=\x20interval.minimum;\x0a\x20\x20\x20\x20}','volume-slice-','type','MAP_WRITE','previousContainerPosition','buffer','always-visible','cameraFrameCompensation','相机裁剪距离必须满足\x200\x20<\x20near\x20<\x20far。','encodeVolumePass','\x20count','autoFrameCount','statistics','volume\x20raymarch\x20pass','axes','sceneDepthView','depth','webgpu','viewportWidth','semiMajorAxisScaled','positions','brickHeight','pointerType','idle','frameAvailableCallback','volume\x20slice\x20','WebGPU\x20scene\x20params\x20buffer\x20is\x20unavailable.\x20WebGPU\x20场景参数\x20Buffer\x20不可用。','geographicTransform','volume\x20raymarch\x20shader','2054NARKRq','requireScene','renderFrame','sliceBindGroupLayout','Volume','element','dispatchWorkgroups','direction','panSpeed','activeInteractions','Volume\x20brick\x20upload\x20became\x20stale.\x20体积砖上传已过期。','sort','volumeDimFactor','requestFrames','COPY_SRC','Alpha\x20颜色通道必须在0\x20~\x201之间','min','positionMarker','length','createLayout','_showHook','adapter','create','createRenderPipeline','densityScale','hasPointerCapture','141312GCEizD','initializationGeneration','viewProjection','wheel','colorStops\x20不能为空','longitudeRadians','hitTolerancePixels','lockPreview','cameraPosition','sceneParamsBuffer','slicePlateColor','WebGPU\x20volume\x20renderer\x20is\x20not\x20ready\x20for\x20frame\x20capture.\x20WebGPU\x20体积渲染器尚不能读取帧。','transform','requestDevice','preventDefault','touchBricks','lastFrameTimeMilliseconds','\x20必须是正有限数值。','one','destroyBuffers','markers','VERTEX','metadata','byteOffset','path','pointerleave','opacity','logicalBrickCount','WebGPU\x20volume\x20context\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20context\x20尚未初始化。','left','fovYRadians','STORAGE_BINDING','push','getEffectiveRenderScale','canvas','getAxisResources','WebGPU\x20transfer\x20resources\x20are\x20unavailable.\x20WebGPU\x20传递函数资源不可用。','line-list','requireRenderer','nextId','perspective','remove','volume\x20color\x20stop\x20values','rotateSpeed','toLowerCase','resolve','\x20values\x20but\x20received\x20','depth32float','handlePointerMove','maxLockedSlices\x20必须是正整数。','minimumDistance','clearPreview','切面深度模式无效\x20/\x20Slice\x20depth\x20mode\x20is\x20invalid','previewMarker','getSceneParamsBuffer','centerEcef','renderDirty','loadedKeys','hideAllMarkers','font','draw','style','unfilterable-float','toolMode','getStepLength','append','maximumPitchDegrees','finally','scheduleBricks','volume\x20scene\x20bind\x20group','\x20must\x20be\x20a\x20positive\x20finite\x20value.\x20'];_0x20aa=function(){return _0x344c3f;};return _0x20aa();}var VolumeScene=class VolumeScene{[_0x4d4387(0x333)]=_0x4d4387(0x25d);[_0x4d4387(0x1d5)];[_0x4d4387(0x32c)];[_0x4d4387(0x2a5)];[_0x4d4387(0x1e2)];[_0x4d4387(0x338)];[_0x4d4387(0x185)]=[];['source'];[_0x4d4387(0x3db)];[_0x4d4387(0x2d8)];[_0x4d4387(0x456)];[_0x4d4387(0x11d)];[_0x4d4387(0x164)];['opacityStops'];['profiles']=[];['timeIndex'];[_0x4d4387(0x1be)]=0x0;[_0x4d4387(0x2bc)]=new Set();[_0x4d4387(0x300)]=new Map();[_0x4d4387(0x202)]=new Set();[_0x4d4387(0x35d)]=0x0;['destroyed']=!0x1;['baseModelMatrix'];[_0x4d4387(0x417)];[_0x4d4387(0x363)];[_0x4d4387(0x3e0)];['quality'];['autoQuality']=_0x4d4387(0x1b3);[_0x4d4387(0x257)]=0x0;[_0x4d4387(0x34f)]=0x0;[_0x4d4387(0x18f)];[_0x4d4387(0x464)]=null;['navigationMode'];['pixelRatioCap'];[_0x4d4387(0x220)];[_0x4d4387(0x1ca)];[_0x4d4387(0x310)];[_0x4d4387(0x272)]=new Set();[_0x4d4387(0x2bb)]=!0x0;[_0x4d4387(0x307)]=!0x1;[_0x4d4387(0x435)]=0x0;[_0x4d4387(0x1fe)]=0x0;[_0x4d4387(0x142)]=null;[_0x4d4387(0x152)];[_0x4d4387(0x28d)];[_0x4d4387(0x17c)];['lastSubmittedFrameTimestamp']=0x0;[_0x4d4387(0x3a7)]=0x0;[_0x4d4387(0x447)]=0x0;[_0x4d4387(0x3bb)]=new Set();[_0x4d4387(0x1a4)]=null;[_0x4d4387(0x160)]=null;constructor(_0x14791a,_0x2d4f16){const _0x261de5=_0x4d4387;this[_0x261de5(0x1d5)]=_0x2d4f16,this[_0x261de5(0x2a5)]=_0x14791a[_0x261de5(0x2a5)],this['interactionElement']=_0x14791a[_0x261de5(0x338)]??_0x14791a['canvas'],this['renderMode']=_0x14791a[_0x261de5(0x1e2)]??_0x261de5(0x199),this['source']=_0x14791a[_0x261de5(0x3f4)],this[_0x261de5(0x1fa)]=_0x14791a[_0x261de5(0x1fa)]??0x0,this[_0x261de5(0x3db)]=this[_0x261de5(0x27c)](_0x14791a),this[_0x261de5(0x2d8)]=createVolumeBrickDescriptors(this[_0x261de5(0x3f4)][_0x261de5(0x299)],this[_0x261de5(0x3db)]),this[_0x261de5(0x32c)]=new VolumeCamera({'state':_0x14791a['camera']??DEFAULT_CAMERA}),this['sliceState']=this[_0x261de5(0x18e)](_0x14791a);let _0x5f18ad=prepareWebgpuVolumeTransfer(_0x14791a[_0x261de5(0x11d)],_0x14791a[_0x261de5(0x450)]);if(this['colorStops']=_0x5f18ad[_0x261de5(0x11d)],this[_0x261de5(0x164)]=_0x14791a['colorStops'],this[_0x261de5(0x450)]=_0x14791a[_0x261de5(0x450)],this[_0x261de5(0x1b2)]=_0x14791a['modelMatrix']??IDENTITY_MATRIX,this['verticalScale']=validatePositiveOption(_0x14791a[_0x261de5(0x417)]??0x1,_0x261de5(0x417)),this[_0x261de5(0x363)]=_0x14791a[_0x261de5(0x363)]??'cartesian',this[_0x261de5(0x363)]===_0x261de5(0x3cf)&&_0x14791a[_0x261de5(0x19f)])throw Error('Geographic\x20WGS84\x20volume\x20scenes\x20manage\x20their\x20own\x20model\x20transform.\x20WGS84\x20地理体积场景自行管理模型变换。');this[_0x261de5(0x3e0)]=_0x14791a[_0x261de5(0x3e0)]??null,this['quality']=_0x14791a[_0x261de5(0x429)]??_0x261de5(0x1f0),this['navigationMode']=_0x14791a[_0x261de5(0x247)]??_0x261de5(0x414),this[_0x261de5(0x381)]=validatePositiveOption(_0x14791a[_0x261de5(0x381)]??0x2,'pixelRatioCap'),this[_0x261de5(0x220)]=validatePositiveOption(_0x14791a['renderScale']??0x1,_0x261de5(0x220)),this[_0x261de5(0x1ca)]=validatePositiveOption(_0x14791a['interactionRenderScale']??0.6,_0x261de5(0x1ca)),this[_0x261de5(0x310)]=validatePositiveOption(_0x14791a['interactionStepScale']??0x1,_0x261de5(0x310)),this['colorMode']=_0x14791a[_0x261de5(0x18f)]??_0x261de5(0x21b),this[_0x261de5(0x152)]=_0x14791a[_0x261de5(0x1a4)]?.['depthMode']??_0x261de5(0x120),this[_0x261de5(0x28d)]=_0x14791a[_0x261de5(0x1a4)]?.[_0x261de5(0x204)],this['onSlicesChange']=_0x14791a[_0x261de5(0x1a4)]?.[_0x261de5(0x17c)],this[_0x261de5(0x1d5)][_0x261de5(0x2ea)](()=>this[_0x261de5(0x37b)]()),this[_0x261de5(0x1d5)][_0x261de5(0x3a8)](_0x5f18ad[_0x261de5(0x11d)],_0x5f18ad[_0x261de5(0x450)]);let _0x16d242=_0x14791a[_0x261de5(0x1f2)]??this[_0x261de5(0x363)]===_0x261de5(0x3ba);this[_0x261de5(0x1d5)]['setAxes'](_0x16d242?[createBoundsMesh(),createAxesMesh()]:[]),this[_0x261de5(0x1d5)][_0x261de5(0x1f4)]({'renderMode':_0x14791a[_0x261de5(0x305)]??_0x261de5(0x1c2),'colorMode':this[_0x261de5(0x18f)],'opacity':_0x14791a[_0x261de5(0x29d)]??0.3,'densityScale':_0x14791a[_0x261de5(0x281)]??0x1,'stepLength':this[_0x261de5(0x2c3)](),'volumeDimFactor':this['sliceState'][_0x261de5(0x275)]}),this[_0x261de5(0x166)](),this[_0x261de5(0x448)](),this['bindSliceState'](),this['bindSliceInteraction'](_0x14791a),this['bindControls']();}static async[_0x4d4387(0x27f)](_0x2a9206){const _0x15bb39=_0x4d4387;if(validateVolumeSource(_0x2a9206[_0x15bb39(0x3f4)]),validateVolumeTimeIndex(_0x2a9206['source']['metadata'],_0x2a9206['timeIndex']??0x0),(_0x2a9206[_0x15bb39(0x3eb)]?.[_0x15bb39(0x3d8)]??0x1)!==0x1)throw Error(_0x15bb39(0x17d));let _0x7946b2=_0x2a9206[_0x15bb39(0x3eb)]?.[_0x15bb39(0x377)]??0x20000000,_0x4d55fe=new WebgpuVolumeSceneRenderer({'memoryTargetBytes':_0x7946b2,'memoryHardLimitBytes':_0x2a9206[_0x15bb39(0x3eb)]?.['memoryLimitBytes']??_0x7946b2});await _0x4d55fe[_0x15bb39(0x33c)](_0x2a9206[_0x15bb39(0x2a5)]);let _0x3ef12b=new VolumeScene(_0x2a9206,_0x4d55fe);return _0x3ef12b[_0x15bb39(0x21c)](),_0x3ef12b['scheduleBricks'](),_0x3ef12b[_0x15bb39(0x1e2)]===_0x15bb39(0x199)&&_0x3ef12b[_0x15bb39(0x2e5)](),_0x3ef12b;}get[_0x4d4387(0x401)](){const _0x18cadb=_0x4d4387;return this[_0x18cadb(0x32c)][_0x18cadb(0x1fd)];}get[_0x4d4387(0x365)](){const _0x57873b=_0x4d4387;return this['sliceState'][_0x57873b(0x365)];}get[_0x4d4387(0x258)](){const _0x18a57d=_0x4d4387;let _0xe0f128=this[_0x18a57d(0x1e2)]===_0x18a57d(0x1fc)||this[_0x18a57d(0x37c)]()||performance[_0x18a57d(0x38e)]()-this[_0x18a57d(0x1f1)]<=0xfa?this[_0x18a57d(0x447)]:0x0;return{...this[_0x18a57d(0x1d5)]['statistics'],'pendingBrickCount':this[_0x18a57d(0x300)][_0x18a57d(0x33e)],'brickScheduleCount':this[_0x18a57d(0x435)],'brickSortCount':this['brickSortCount'],'actualFrameIntervalMilliseconds':_0xe0f128,'estimatedFps':_0xe0f128>0x0?0x3e8/_0xe0f128:0x0,'effectiveQuality':this[_0x18a57d(0x34a)](),'effectiveRenderScale':this[_0x18a57d(0x2a4)](),'interactionKind':this[_0x18a57d(0x34b)]()};}[_0x4d4387(0x1f4)](_0x155ca1){const _0x4d1fb3=_0x4d4387;_0x155ca1['camera']&&this[_0x4d1fb3(0x349)](_0x155ca1[_0x4d1fb3(0x401)]),_0x155ca1[_0x4d1fb3(0x19f)]&&(this[_0x4d1fb3(0x1b2)]=[..._0x155ca1[_0x4d1fb3(0x19f)]]),_0x155ca1[_0x4d1fb3(0x417)]!==void 0x0&&(this[_0x4d1fb3(0x417)]=validatePositiveOption(_0x155ca1[_0x4d1fb3(0x417)],_0x4d1fb3(0x417))),_0x155ca1[_0x4d1fb3(0x3e0)]!==void 0x0&&(this['clipBox']=_0x155ca1[_0x4d1fb3(0x3e0)]),_0x155ca1['quality']&&(this[_0x4d1fb3(0x429)]=_0x155ca1[_0x4d1fb3(0x429)]),_0x155ca1[_0x4d1fb3(0x247)]&&(this[_0x4d1fb3(0x247)]=_0x155ca1['navigationMode']);let _0x8d60ca=!0x1;if(_0x155ca1[_0x4d1fb3(0x381)]!==void 0x0&&(this[_0x4d1fb3(0x381)]=validatePositiveOption(_0x155ca1['pixelRatioCap'],_0x4d1fb3(0x381)),_0x8d60ca=!0x0),_0x155ca1[_0x4d1fb3(0x220)]!==void 0x0&&(this[_0x4d1fb3(0x220)]=validatePositiveOption(_0x155ca1[_0x4d1fb3(0x220)],_0x4d1fb3(0x220)),_0x8d60ca=!0x0),_0x155ca1[_0x4d1fb3(0x1ca)]!==void 0x0&&(this[_0x4d1fb3(0x1ca)]=validatePositiveOption(_0x155ca1[_0x4d1fb3(0x1ca)],_0x4d1fb3(0x1ca)),_0x8d60ca=this['isInteracting']()),_0x155ca1[_0x4d1fb3(0x310)]!==void 0x0&&(this[_0x4d1fb3(0x310)]=validatePositiveOption(_0x155ca1[_0x4d1fb3(0x310)],_0x4d1fb3(0x310))),_0x155ca1[_0x4d1fb3(0x18f)]&&(this[_0x4d1fb3(0x18f)]=_0x155ca1[_0x4d1fb3(0x18f)]),_0x155ca1['colorStops']||_0x155ca1['opacityStops']){let _0xdcdb83=prepareWebgpuVolumeTransfer(_0x155ca1[_0x4d1fb3(0x11d)]??this[_0x4d1fb3(0x164)],_0x155ca1['opacityStops']??this[_0x4d1fb3(0x450)]);this[_0x4d1fb3(0x11d)]=_0xdcdb83[_0x4d1fb3(0x11d)],this[_0x4d1fb3(0x164)]=_0x155ca1[_0x4d1fb3(0x11d)]??this[_0x4d1fb3(0x164)],this[_0x4d1fb3(0x450)]=_0x155ca1['opacityStops']??this['opacityStops'],this[_0x4d1fb3(0x1d5)][_0x4d1fb3(0x3a8)](_0xdcdb83[_0x4d1fb3(0x11d)],_0xdcdb83[_0x4d1fb3(0x450)]),this[_0x4d1fb3(0x227)]();}_0x155ca1[_0x4d1fb3(0x18f)]&&!_0x155ca1[_0x4d1fb3(0x11d)]&&!_0x155ca1[_0x4d1fb3(0x450)]&&this[_0x4d1fb3(0x227)](),this[_0x4d1fb3(0x1d5)][_0x4d1fb3(0x1f4)]({'renderMode':_0x155ca1[_0x4d1fb3(0x305)],'colorMode':_0x155ca1['colorMode'],'opacity':_0x155ca1['opacity'],'densityScale':_0x155ca1['densityScale'],'stepLength':this[_0x4d1fb3(0x2c3)]()}),this['configureModel'](),_0x8d60ca&&this[_0x4d1fb3(0x21c)](),this[_0x4d1fb3(0x2e5)]();}['setCamera'](_0x421d3a){const _0x4b6b21=_0x4d4387;this[_0x4b6b21(0x32c)][_0x4b6b21(0x3cc)](_0x421d3a),this[_0x4b6b21(0x466)](),this[_0x4b6b21(0x2e5)]();}[_0x4d4387(0x3ef)](_0x31eecd){const _0x39e979=_0x4d4387;validateVolumeTimeIndex(this[_0x39e979(0x3f4)][_0x39e979(0x299)],_0x31eecd),_0x31eecd!==this[_0x39e979(0x1fa)]&&(this[_0x39e979(0x1fa)]=_0x31eecd,this['resetBrickRequests']());}['setSource'](_0x3c3752){const _0x24c227=_0x4d4387;validateVolumeSource(_0x3c3752),this[_0x24c227(0x3f4)]=_0x3c3752,this[_0x24c227(0x1fa)]=Math[_0x24c227(0x279)](this[_0x24c227(0x1fa)],_0x3c3752[_0x24c227(0x299)][_0x24c227(0x320)]-0x1),this['layout']=createVolumeBrickLayout(_0x3c3752['metadata'],this[_0x24c227(0x3db)][_0x24c227(0x21a)]),this['descriptors']=createVolumeBrickDescriptors(_0x3c3752[_0x24c227(0x299)],this[_0x24c227(0x3db)]),this[_0x24c227(0x456)]['setAxes'](_0x3c3752[_0x24c227(0x299)]),this[_0x24c227(0x166)](),this['configureModel'](),this[_0x24c227(0x196)](),this[_0x24c227(0x227)](),this[_0x24c227(0x2e5)]();}[_0x4d4387(0x461)](_0x51ad17){const _0x5743b3=_0x4d4387;this['profiles']=_0x51ad17,this['rebuildProfiles'](),this[_0x5743b3(0x466)](),this[_0x5743b3(0x2e5)]();}[_0x4d4387(0x3b8)](_0x40c258){const _0x4228d0=_0x4d4387;this['sliceState'][_0x4228d0(0x3bf)](_0x40c258);}['beginInteraction'](_0x5087fb){const _0x10b5e5=_0x4d4387;if(this['destroyed']||this[_0x10b5e5(0x272)][_0x10b5e5(0x2d5)](_0x5087fb))return;let _0x3b83fc=!this[_0x10b5e5(0x37c)]();this[_0x10b5e5(0x272)][_0x10b5e5(0x45d)](_0x5087fb),_0x3b83fc&&(this['lastTimingFrameTimestamp']=0x0,this['resize']());}['endInteraction'](_0x3fe9a1){const _0x5c19c1=_0x4d4387;this['destroyed']||!this[_0x5c19c1(0x272)]['delete'](_0x3fe9a1)||this[_0x5c19c1(0x37c)]()||(this['lastTimingFrameTimestamp']=0x0,this[_0x5c19c1(0x21c)]());}['lockSlice'](_0x45ae59,_0x5572d3){const _0xc6faa=_0x4d4387;this[_0xc6faa(0x456)][_0xc6faa(0x128)](_0x45ae59,_0x5572d3);let _0x3939b9=this[_0xc6faa(0x456)]['lockPreview']();if(!_0x3939b9)throw Error(_0xc6faa(0x181));return _0x3939b9;}[_0x4d4387(0x402)](_0x4a4416,_0x3f65d4){this['sliceState']['updateLockedSlice'](_0x4a4416,_0x3f65d4);}['removeSlice'](_0x2bc61d){const _0x6745ba=_0x4d4387;this['sliceState'][_0x6745ba(0x431)](_0x2bc61d);}['clearLockedSlices'](){const _0x4893ee=_0x4d4387;this['sliceState'][_0x4893ee(0x3f2)]();}[_0x4d4387(0x21c)](){const _0x50cdc0=_0x4d4387;let _0x9afbab=Math[_0x50cdc0(0x279)](window[_0x50cdc0(0x46f)]||0x1,this[_0x50cdc0(0x381)])*this['getEffectiveRenderScale'](),_0x1aa215=Math['max'](0x1,Math[_0x50cdc0(0x2f8)](this[_0x50cdc0(0x2a5)]['clientWidth']*_0x9afbab||this[_0x50cdc0(0x2a5)]['width']||0x1)),_0x797950=Math['max'](0x1,Math[_0x50cdc0(0x2f8)](this[_0x50cdc0(0x2a5)][_0x50cdc0(0x22c)]*_0x9afbab||this[_0x50cdc0(0x2a5)][_0x50cdc0(0x3cb)]||0x1));this[_0x50cdc0(0x32c)][_0x50cdc0(0x138)](_0x1aa215/_0x797950),(this[_0x50cdc0(0x2a5)][_0x50cdc0(0x13c)]!==_0x1aa215||this[_0x50cdc0(0x2a5)]['height']!==_0x797950)&&this['renderer']['resize'](_0x1aa215,_0x797950),this['requestRender']();}[_0x4d4387(0x392)](){const _0x113aa4=_0x4d4387;if(this[_0x113aa4(0x3de)])return;this[_0x113aa4(0x413)](),this[_0x113aa4(0x3e9)]();let _0x58ddb9=this[_0x113aa4(0x32c)][_0x113aa4(0x16c)];if(this[_0x113aa4(0x1d5)][_0x113aa4(0x349)]({'viewProjection':Array['from'](_0x58ddb9[_0x113aa4(0x285)]),'inverseViewProjection':Array[_0x113aa4(0x1c5)](_0x58ddb9['inverseViewProjection']),'cameraPosition':this[_0x113aa4(0x32c)][_0x113aa4(0x1fd)][_0x113aa4(0x1cc)]}),this['renderer'][_0x113aa4(0x1f4)]({'stepLength':this[_0x113aa4(0x2c3)]()}),!this[_0x113aa4(0x1d5)]['render']()){this[_0x113aa4(0x2bb)]=!0x0;return;}this[_0x113aa4(0x2bb)]=!0x1,this[_0x113aa4(0x1c7)](performance['now']()),this[_0x113aa4(0x160)]?.[_0x113aa4(0x1f4)]();}[_0x4d4387(0x200)](){const _0x2fce17=_0x4d4387;if(this[_0x2fce17(0x3de)])return Promise['reject'](Error(_0x2fce17(0x1fb)));this['flushSliceState'](),this[_0x2fce17(0x3e9)]();let _0xa3fff7=this[_0x2fce17(0x32c)]['matrices'];return this[_0x2fce17(0x1d5)][_0x2fce17(0x349)]({'viewProjection':Array[_0x2fce17(0x1c5)](_0xa3fff7[_0x2fce17(0x285)]),'inverseViewProjection':Array[_0x2fce17(0x1c5)](_0xa3fff7[_0x2fce17(0x1bf)]),'cameraPosition':this[_0x2fce17(0x32c)][_0x2fce17(0x1fd)][_0x2fce17(0x1cc)]}),this[_0x2fce17(0x1d5)]['captureFrame']();}['destroy'](){const _0x5bd348=_0x4d4387;if(!this[_0x5bd348(0x3de)]){this['destroyed']=!0x0,this[_0x5bd348(0x1be)]+=0x1;for(let _0x3dd05b of this[_0x5bd348(0x3bb)])_0x3dd05b[_0x5bd348(0x176)]();this['requestControllers'][_0x5bd348(0x352)](),cancelAnimationFrame(this[_0x5bd348(0x35d)]),this[_0x5bd348(0x1d5)]['setFrameAvailableCallback'](null),this['eventDisposers'][_0x5bd348(0x17a)](0x0)[_0x5bd348(0x328)](_0x4de56c=>_0x4de56c()),this[_0x5bd348(0x1d5)][_0x5bd348(0x16a)](),this[_0x5bd348(0x1a4)]?.[_0x5bd348(0x16a)](),this[_0x5bd348(0x160)]?.[_0x5bd348(0x16a)](),this[_0x5bd348(0x2bc)]['clear'](),this['pendingKeys'][_0x5bd348(0x352)](),this[_0x5bd348(0x202)][_0x5bd348(0x352)](),this[_0x5bd348(0x272)][_0x5bd348(0x352)](),this[_0x5bd348(0x142)]=null;}}[_0x4d4387(0x27c)](_0xa6cb82){const _0x4da352=_0x4d4387;return createVolumeBrickLayout(_0xa6cb82[_0x4da352(0x3f4)][_0x4da352(0x299)],{'width':_0xa6cb82[_0x4da352(0x3eb)]?.[_0x4da352(0x13c)],'height':_0xa6cb82['chunk']?.['height'],'depth':_0xa6cb82[_0x4da352(0x3eb)]?.[_0x4da352(0x25c)],'halo':_0xa6cb82[_0x4da352(0x3eb)]?.[_0x4da352(0x3d8)]});}['getEffectiveQuality'](){const _0x47c796=_0x4d4387;return this[_0x47c796(0x429)]===_0x47c796(0x1f0)?this[_0x47c796(0x2d0)]:this['quality'];}['getStepLength'](){const _0x2d501f=_0x4d4387;let _0x3cd183=qualityStepLength(this['getEffectiveQuality']());return(this['coordinateSystem']===_0x2d501f(0x3cf)?_0x3cd183*0.05:_0x3cd183)*(this[_0x2d501f(0x37c)]()?this[_0x2d501f(0x310)]:0x1);}[_0x4d4387(0x37c)](){const _0x4e111c=_0x4d4387;return this['activeInteractions'][_0x4e111c(0x33e)]>0x0;}[_0x4d4387(0x34b)](){const _0x583689=_0x4d4387;return this['activeInteractions'][_0x583689(0x33e)]===0x0?_0x583689(0x263):this[_0x583689(0x272)][_0x583689(0x33e)]>0x1?_0x583689(0x3c3):this['activeInteractions'][_0x583689(0x39c)]()[_0x583689(0x32f)]()[_0x583689(0x1e9)]??_0x583689(0x263);}[_0x4d4387(0x2a4)](){const _0x21cd8b=_0x4d4387;return this[_0x21cd8b(0x220)]*(this[_0x21cd8b(0x37c)]()?this[_0x21cd8b(0x1ca)]:0x1);}['recordFrameInterval'](_0x2c21ba){const _0x491579=_0x4d4387;if(this[_0x491579(0x1f1)]=_0x2c21ba,!(this['renderMode']===_0x491579(0x1fc)||this['isInteracting']())){this[_0x491579(0x3a7)]=0x0;return;}if(this[_0x491579(0x3a7)]>0x0){let _0x34de72=_0x2c21ba-this[_0x491579(0x3a7)];_0x34de72>0x0&&_0x34de72<=0xfa&&(this[_0x491579(0x447)]=this['actualFrameIntervalMilliseconds']===0x0?_0x34de72:this[_0x491579(0x447)]*0.8+_0x34de72*0.2,this['updateAutoQuality'](_0x34de72));}this['lastTimingFrameTimestamp']=_0x2c21ba;}[_0x4d4387(0x24a)](_0x3c934d){const _0x3f7b9c=_0x4d4387;if(this[_0x3f7b9c(0x429)]!==_0x3f7b9c(0x1f0)||(this[_0x3f7b9c(0x257)]+=0x1,this[_0x3f7b9c(0x34f)]+=_0x3c934d,this['autoFrameCount']<0x1e))return;let _0x5adb9c=this[_0x3f7b9c(0x34f)]/this[_0x3f7b9c(0x257)];if(this[_0x3f7b9c(0x257)]=0x0,this[_0x3f7b9c(0x34f)]=0x0,this[_0x3f7b9c(0x37c)]()&&_0x5adb9c<0xe)return;let _0x3c4c7b=nextAutoQuality(this['autoQuality'],_0x5adb9c);_0x3c4c7b!==this['autoQuality']&&(this[_0x3f7b9c(0x2d0)]=_0x3c4c7b,this[_0x3f7b9c(0x466)](),this[_0x3f7b9c(0x2e5)]());}[_0x4d4387(0x18e)](_0x2ff65e){const _0xfb0413=_0x4d4387;return new SliceState(_0x2ff65e[_0xfb0413(0x3f4)][_0xfb0413(0x299)],{'volumeDimFactor':_0x2ff65e[_0xfb0413(0x1a4)]?.[_0xfb0413(0x275)],'depthMode':_0x2ff65e['sliceInteraction']?.['depthMode'],'maxLockedSlices':_0x2ff65e['sliceInteraction']?.[_0xfb0413(0x113)],'onLimitReached':_0x51adbb=>_0x2ff65e[_0xfb0413(0x1a4)]?.[_0xfb0413(0x1c6)]?.(Error('Maximum\x20locked\x20slice\x20count\x20is\x20'+_0x51adbb+_0xfb0413(0x11f)+_0x51adbb+'。'))});}[_0x4d4387(0x342)](){const _0x554392=_0x4d4387;let _0x19dec3=this[_0x554392(0x456)][_0x554392(0x22e)](_0x5a1005=>{this['pendingSliceSnapshot']=_0x5a1005,this['requestRender']();});this[_0x554392(0x185)]['push'](_0x19dec3);}[_0x4d4387(0x413)](){const _0xc04a93=_0x4d4387;let _0x4b67cd=this['pendingSliceSnapshot'];if(!_0x4b67cd)return;this[_0xc04a93(0x142)]=null;let _0x573017=[];if(_0x4b67cd[_0xc04a93(0x361)]){let _0x27d914=_0x4b67cd['preview'][_0xc04a93(0x347)]==='x'?this[_0xc04a93(0x3f4)][_0xc04a93(0x299)][_0xc04a93(0x169)]:_0x4b67cd[_0xc04a93(0x361)][_0xc04a93(0x347)]==='y'?this[_0xc04a93(0x3f4)][_0xc04a93(0x299)][_0xc04a93(0x424)]:this[_0xc04a93(0x3f4)][_0xc04a93(0x299)][_0xc04a93(0x182)];_0x573017[_0xc04a93(0x2a3)]({'id':_0xc04a93(0x19c),'axis':_0x4b67cd[_0xc04a93(0x361)]['axis'],'position':clamp01(volumeAxisValueToNormalized(_0x27d914,_0x4b67cd[_0xc04a93(0x361)][_0xc04a93(0x1cc)])),'depthMode':this[_0xc04a93(0x152)],'visible':!0x0,'opacity':0.72,'plateColor':this[_0xc04a93(0x28d)]});}for(let _0xbe83a8 of _0x4b67cd[_0xc04a93(0x365)]){let _0x444cc8=_0xbe83a8[_0xc04a93(0x347)]==='x'?this['source']['metadata'][_0xc04a93(0x169)]:_0xbe83a8[_0xc04a93(0x347)]==='y'?this['source'][_0xc04a93(0x299)]['yAxis']:this[_0xc04a93(0x3f4)][_0xc04a93(0x299)][_0xc04a93(0x182)];_0x573017[_0xc04a93(0x2a3)]({..._0xbe83a8,'position':clamp01(volumeAxisValueToNormalized(_0x444cc8,_0xbe83a8['position'])),'opacity':0x1,'plateColor':this[_0xc04a93(0x28d)]});}this[_0xc04a93(0x1d5)]['setSlices'](_0x573017),this[_0xc04a93(0x1d5)]['update']({'volumeDimFactor':_0x4b67cd[_0xc04a93(0x361)]||_0x4b67cd[_0xc04a93(0x365)]['some'](_0x180aea=>_0x180aea[_0xc04a93(0x3d7)])?_0x4b67cd[_0xc04a93(0x275)]:0x1}),this[_0xc04a93(0x17c)]?.(_0x4b67cd['lockedSlices']),this[_0xc04a93(0x307)]=!0x0;}['bindSliceInteraction'](_0x301096){const _0x576dd2=_0x4d4387;let _0x548850=()=>({'viewProjectionMatrix':this[_0x576dd2(0x32c)][_0x576dd2(0x16c)]['viewProjection'],'modelMatrix':composeVolumeModelMatrix(this[_0x576dd2(0x1b2)],this[_0x576dd2(0x417)]),'viewportWidth':Math['max'](0x1,this[_0x576dd2(0x2a5)]['clientWidth']),'viewportHeight':Math[_0x576dd2(0x412)](0x1,this['canvas'][_0x576dd2(0x22c)])});this[_0x576dd2(0x1a4)]=new SliceInteractionController(this['interactionElement'],this[_0x576dd2(0x456)],_0x548850,{'hitTolerancePixels':_0x301096[_0x576dd2(0x1a4)]?.[_0x576dd2(0x357)],'onInteractionStart':()=>this[_0x576dd2(0x32a)](_0x576dd2(0x465)),'onInteractionEnd':()=>this[_0x576dd2(0x121)](_0x576dd2(0x465))}),this[_0x576dd2(0x1a4)][_0x576dd2(0x33c)](),_0x301096[_0x576dd2(0x2e7)]&&(this[_0x576dd2(0x160)]=new SliceMarkerOverlay(_0x301096['overlayContainer'],this[_0x576dd2(0x456)],_0x548850,{'interactionController':this[_0x576dd2(0x1a4)]}));}[_0x4d4387(0x3d1)](){const _0x21623c=_0x4d4387;let _0x16f4b7=_0x313040=>{const _0x1380ab=_0xb383;_0x313040[_0x1380ab(0x23d)]!==0x0&&_0x313040[_0x1380ab(0x23d)]!==0x2||(this[_0x1380ab(0x464)]={'id':_0x313040['pointerId'],'x':_0x313040['clientX'],'y':_0x313040[_0x1380ab(0x141)],'pan':_0x313040[_0x1380ab(0x23d)]===0x2||_0x313040[_0x1380ab(0x262)]!=='mouse'&&this[_0x1380ab(0x247)]===_0x1380ab(0x423)},this[_0x1380ab(0x32a)](_0x1380ab(0x401)),this['interactionElement']['setPointerCapture']?.(_0x313040['pointerId']),_0x313040['preventDefault']());},_0x38c333=_0x2a27c4=>{const _0x294d8a=_0xb383;if(!this[_0x294d8a(0x464)]||this[_0x294d8a(0x464)]['id']!==_0x2a27c4[_0x294d8a(0x17f)])return;let _0x1d81ba=_0x2a27c4['clientX']-this[_0x294d8a(0x464)]['x'],_0x47ee5c=_0x2a27c4[_0x294d8a(0x141)]-this[_0x294d8a(0x464)]['y'];this['pointer']['x']=_0x2a27c4[_0x294d8a(0x3a6)],this[_0x294d8a(0x464)]['y']=_0x2a27c4[_0x294d8a(0x141)],this[_0x294d8a(0x464)][_0x294d8a(0x423)]?this[_0x294d8a(0x32c)][_0x294d8a(0x423)](_0x1d81ba,_0x47ee5c,this['canvas']['clientHeight']):this[_0x294d8a(0x32c)][_0x294d8a(0x414)](_0x1d81ba,_0x47ee5c),this[_0x294d8a(0x466)](),this[_0x294d8a(0x2e5)]();},_0x4483bc=_0x1ecf1c=>{const _0x56524d=_0xb383;this[_0x56524d(0x464)]?.['id']===_0x1ecf1c[_0x56524d(0x17f)]&&(this[_0x56524d(0x464)]=null,this['endInteraction']('camera'));},_0x38f348=_0x245034=>{const _0x56da16=_0xb383;_0x245034['preventDefault'](),this[_0x56da16(0x32c)][_0x56da16(0x1ab)](_0x245034[_0x56da16(0x45e)]),this['requestBrickSchedule'](),this['requestRender']();},_0x225562=_0xabf358=>_0xabf358[_0x21623c(0x291)]();this[_0x21623c(0x338)][_0x21623c(0x325)](_0x21623c(0x1af),_0x16f4b7),this[_0x21623c(0x338)][_0x21623c(0x325)](_0x21623c(0x439),_0x38c333),this[_0x21623c(0x338)][_0x21623c(0x325)](_0x21623c(0x235),_0x4483bc),this['interactionElement']['addEventListener'](_0x21623c(0x404),_0x4483bc),this[_0x21623c(0x338)][_0x21623c(0x325)](_0x21623c(0x286),_0x38f348,{'passive':!0x1}),this['interactionElement'][_0x21623c(0x325)](_0x21623c(0x1a2),_0x225562),this[_0x21623c(0x185)][_0x21623c(0x2a3)](()=>this[_0x21623c(0x338)]['removeEventListener']('pointerdown',_0x16f4b7),()=>this['interactionElement']['removeEventListener'](_0x21623c(0x439),_0x38c333),()=>this[_0x21623c(0x338)][_0x21623c(0x42e)](_0x21623c(0x235),_0x4483bc),()=>this[_0x21623c(0x338)][_0x21623c(0x42e)]('pointercancel',_0x4483bc),()=>this[_0x21623c(0x338)][_0x21623c(0x42e)](_0x21623c(0x286),_0x38f348),()=>this['interactionElement'][_0x21623c(0x42e)](_0x21623c(0x1a2),_0x225562));}[_0x4d4387(0x166)](){const _0x140283=_0x4d4387;this['renderer'][_0x140283(0x124)]({'xAxis':this[_0x140283(0x3f4)]['metadata'][_0x140283(0x169)],'yAxis':this['source'][_0x140283(0x299)]['yAxis'],'zAxis':this['source'][_0x140283(0x299)][_0x140283(0x182)],'brickWidth':this[_0x140283(0x3db)]['shape'][_0x140283(0x13c)],'brickHeight':this[_0x140283(0x3db)][_0x140283(0x21a)][_0x140283(0x3cb)],'brickDepth':this['layout'][_0x140283(0x21a)][_0x140283(0x25c)],'halo':0x1,'noData':this[_0x140283(0x3f4)][_0x140283(0x299)][_0x140283(0x3b4)]});}[_0x4d4387(0x448)](){const _0x2d41f2=_0x4d4387;if(this[_0x2d41f2(0x363)]==='geographic-wgs84'){let _0x2a21b5=createGeographicVolumeLayout(this['source'][_0x2d41f2(0x299)],this[_0x2d41f2(0x417)]);this[_0x2d41f2(0x1d5)][_0x2d41f2(0x1f4)]({'modelMatrix':_0x2a21b5[_0x2d41f2(0x222)],'inverseModelMatrix':Array['from'](invertMatrix(_0x2a21b5[_0x2d41f2(0x222)])),'geographicTransform':_0x2a21b5[_0x2d41f2(0x28f)],'clipMinimum':[0x0,0x0,0x0],'clipMaximum':[0x1,0x1,0x1]}),this[_0x2d41f2(0x2e5)]();return;}let _0x2227b0=composeVolumeModelMatrix(this['baseModelMatrix'],this[_0x2d41f2(0x417)]),_0x4709e4=normalizeClipBox(this[_0x2d41f2(0x3f4)],this[_0x2d41f2(0x3e0)]);this[_0x2d41f2(0x1d5)]['update']({'modelMatrix':Array[_0x2d41f2(0x1c5)](_0x2227b0),'inverseModelMatrix':Array['from'](invertMatrix(_0x2227b0)),'geographicTransform':null,'clipMinimum':_0x4709e4['minimum'],'clipMaximum':_0x4709e4[_0x2d41f2(0x351)]}),this[_0x2d41f2(0x2e5)]();}[_0x4d4387(0x227)](){const _0x168ad3=_0x4d4387;let _0x5246d1=this[_0x168ad3(0x36c)][_0x168ad3(0x45f)](_0x3637b3=>createProfileSceneMesh(buildVolumeRouteProfileMesh(_0x3637b3,this[_0x168ad3(0x3f4)][_0x168ad3(0x299)]),this[_0x168ad3(0x11d)],this[_0x168ad3(0x450)],this[_0x168ad3(0x18f)]));this[_0x168ad3(0x1d5)][_0x168ad3(0x1ba)](_0x5246d1),this[_0x168ad3(0x2e5)]();}[_0x4d4387(0x196)](){const _0x3fd93d=_0x4d4387;this[_0x3fd93d(0x1be)]+=0x1;for(let _0x1fb9bf of this[_0x3fd93d(0x3bb)])_0x1fb9bf[_0x3fd93d(0x176)]();this[_0x3fd93d(0x3bb)][_0x3fd93d(0x352)](),this[_0x3fd93d(0x2bc)]['clear'](),this[_0x3fd93d(0x300)][_0x3fd93d(0x352)](),this[_0x3fd93d(0x202)][_0x3fd93d(0x352)](),this[_0x3fd93d(0x166)](),this['scheduleBricks']();}[_0x4d4387(0x466)](){const _0x52bb35=_0x4d4387;this['brickScheduleDirty']=!0x0,this[_0x52bb35(0x2e5)]();}[_0x4d4387(0x3e9)](){const _0x2cda77=_0x4d4387;this[_0x2cda77(0x307)]&&(this['brickScheduleDirty']=!0x1,this[_0x2cda77(0x2c7)]());}[_0x4d4387(0x2c7)](){const _0x1a22ad=_0x4d4387;if(this['destroyed'])return;this[_0x1a22ad(0x307)]=!0x1,this[_0x1a22ad(0x435)]+=0x1;let _0x5e841e=this[_0x1a22ad(0x1d5)]['statistics'][_0x1a22ad(0x38a)];if(_0x5e841e<=0x0)return;let _0x56ac43=_0x5e841e>=this['descriptors'][_0x1a22ad(0x27b)];if(_0x56ac43&&this[_0x1a22ad(0x202)][_0x1a22ad(0x33e)]===this[_0x1a22ad(0x2d8)][_0x1a22ad(0x27b)]&&this[_0x1a22ad(0x2bc)]['size']===this[_0x1a22ad(0x2d8)][_0x1a22ad(0x27b)]&&this[_0x1a22ad(0x300)][_0x1a22ad(0x33e)]===0x0)return;let _0x210dc7;_0x56ac43?_0x210dc7=this['descriptors']:(this[_0x1a22ad(0x1fe)]+=0x1,_0x210dc7=[...this[_0x1a22ad(0x2d8)]][_0x1a22ad(0x274)]((_0x1df19d,_0xff9af)=>descriptorDemandPriority(_0x1df19d,this['source'],this[_0x1a22ad(0x456)],this[_0x1a22ad(0x36c)])-descriptorDemandPriority(_0xff9af,this[_0x1a22ad(0x3f4)],this['sliceState'],this[_0x1a22ad(0x36c)])||descriptorDistance(_0x1df19d,this['layout'],this[_0x1a22ad(0x32c)]['state'])-descriptorDistance(_0xff9af,this[_0x1a22ad(0x3db)],this['volumeCamera'][_0x1a22ad(0x1fd)]))[_0x1a22ad(0x465)](0x0,_0x5e841e));let _0x3eea5e=new Set(_0x210dc7[_0x1a22ad(0x45f)](_0xa200fe=>_0xa200fe[_0x1a22ad(0x213)]));this[_0x1a22ad(0x202)]=_0x3eea5e,_0x56ac43||this[_0x1a22ad(0x1d5)][_0x1a22ad(0x292)](_0x210dc7[_0x1a22ad(0x1d6)](_0x2f7949=>this[_0x1a22ad(0x2bc)][_0x1a22ad(0x2d5)](_0x2f7949['key']))['map'](_0x3273fb=>descriptorLogicalIndex(_0x3273fb,this[_0x1a22ad(0x3db)])));for(let _0x32d3e3 of this['loadedKeys'])_0x3eea5e['has'](_0x32d3e3)||this[_0x1a22ad(0x2bc)][_0x1a22ad(0x3aa)](_0x32d3e3);let _0x4c135c=Math[_0x1a22ad(0x412)](0x0,qualityUploadCount(this['getEffectiveQuality']())-this[_0x1a22ad(0x300)][_0x1a22ad(0x33e)]),_0x372be5=_0x210dc7['filter'](_0x4a827b=>!this[_0x1a22ad(0x2bc)]['has'](_0x4a827b[_0x1a22ad(0x213)])&&!this[_0x1a22ad(0x300)]['has'](_0x4a827b[_0x1a22ad(0x213)]))['slice'](0x0,_0x4c135c);for(let _0x81388f of _0x372be5)this['loadBrick'](_0x81388f);}[_0x4d4387(0x316)](_0x4db527){const _0x177ed4=_0x4d4387;let _0x331f8f=this[_0x177ed4(0x1be)],_0x278c1a=this[_0x177ed4(0x3f4)],_0x36afe5=this[_0x177ed4(0x1fa)],_0x10bc8a=new AbortController();this[_0x177ed4(0x3bb)]['add'](_0x10bc8a),this['pendingKeys'][_0x177ed4(0x11e)](_0x4db527['key'],_0x331f8f),Promise[_0x177ed4(0x2b0)](_0x278c1a['readChunk'](_0x36afe5,_0x4db527[_0x177ed4(0x36f)],_0x10bc8a[_0x177ed4(0x1b4)]))[_0x177ed4(0x19a)](async _0x315081=>{const _0x12a12b=_0x177ed4;if(this[_0x12a12b(0x3de)]||_0x331f8f!==this[_0x12a12b(0x1be)]||_0x278c1a!==this[_0x12a12b(0x3f4)]||_0x36afe5!==this[_0x12a12b(0x1fa)]||!this[_0x12a12b(0x202)][_0x12a12b(0x2d5)](_0x4db527[_0x12a12b(0x213)]))return;let _0x5d32c5=createPhysicalBrickValues(_0x278c1a['metadata'],this[_0x12a12b(0x3db)][_0x12a12b(0x21a)],_0x4db527,_0x315081),_0x153821=descriptorLogicalIndex(_0x4db527,this['layout']);await this[_0x12a12b(0x1d5)][_0x12a12b(0x1e5)]({'logicalIndex':_0x153821,'values':_0x5d32c5}),!(this['destroyed']||_0x331f8f!==this['sourceGeneration']||_0x278c1a!==this['source']||_0x36afe5!==this['timeIndex']||!this[_0x12a12b(0x202)]['has'](_0x4db527[_0x12a12b(0x213)]))&&(this[_0x12a12b(0x2bc)][_0x12a12b(0x45d)](_0x4db527[_0x12a12b(0x213)]),this[_0x12a12b(0x2e5)]());})[_0x177ed4(0x1b5)](_0x5c0536=>{const _0x3b4240=_0x177ed4;_0x5c0536 instanceof DOMException&&_0x5c0536[_0x3b4240(0x308)]===_0x3b4240(0x225)||console[_0x3b4240(0x37a)](_0x5c0536);})[_0x177ed4(0x2c6)](()=>{const _0x580995=_0x177ed4;this[_0x580995(0x3bb)][_0x580995(0x3aa)](_0x10bc8a),this['pendingKeys']['get'](_0x4db527[_0x580995(0x213)])===_0x331f8f&&this['pendingKeys']['delete'](_0x4db527[_0x580995(0x213)]),_0x331f8f===this['sourceGeneration']&&this['scheduleBricks']();});}[_0x4d4387(0x37b)](){this['renderDirty']&&this['requestRender']();}[_0x4d4387(0x2e5)](){const _0x5c14cd=_0x4d4387;this['destroyed']||(this[_0x5c14cd(0x2bb)]=!0x0,!(this[_0x5c14cd(0x1e2)]!==_0x5c14cd(0x199)||this['frameRequest']!==0x0)&&(this[_0x5c14cd(0x35d)]=requestAnimationFrame(()=>{const _0x101085=_0x5c14cd;this[_0x101085(0x35d)]=0x0,!(this[_0x101085(0x3de)]||!this[_0x101085(0x2bb)])&&this['render']();})));}};const createVolumeScene=_0x5539c9=>VolumeScene[_0x4d4387(0x27f)](_0x5539c9),insertOnce=(_0x3e0c2b,_0x9ca520,_0x55eb11)=>{const _0x551f3b=_0x4d4387;let _0x420484=_0x3e0c2b['indexOf'](_0x9ca520);if(_0x420484<0x0||_0x3e0c2b[_0x551f3b(0x46d)](_0x9ca520,_0x420484+_0x9ca520['length'])>=0x0)throw Error('Mars3D\x20volume\x20shader\x20marker\x20is\x20missing\x20or\x20duplicated:\x20'+_0x9ca520);return''+_0x3e0c2b[_0x551f3b(0x465)](0x0,_0x420484)+_0x55eb11+_0x3e0c2b[_0x551f3b(0x465)](_0x420484+_0x9ca520[_0x551f3b(0x27b)]);},mars3dVolumeRaymarchSource=insertOnce(insertOnce(volumeRaymarch_default,_0x4d4387(0x3b3),_0x4d4387(0x436)),_0x4d4387(0x2ed),_0x4d4387(0x24c)),premultipliedBlend=()=>({'color':{'srcFactor':'one','dstFactor':_0x4d4387(0x1d3),'operation':_0x4d4387(0x45d)},'alpha':{'srcFactor':_0x4d4387(0x295),'dstFactor':_0x4d4387(0x1d3),'operation':_0x4d4387(0x45d)}}),rendererPrototype=WebgpuVolumeSceneRenderer[_0x4d4387(0x194)],mars3dCanvases=new WeakSet();let pipelineHookInstalled=!0x1;const installPipelineHook=()=>{const _0x4fd7ab=_0x4d4387;if(pipelineHookInstalled)return;let _0x587ed0=rendererPrototype[_0x4fd7ab(0x302)];rendererPrototype['createPipelines']=function(){const _0x4ccb1c=_0x4fd7ab;if(_0x587ed0[_0x4ccb1c(0x346)](this),!this[_0x4ccb1c(0x2a5)]||!mars3dCanvases[_0x4ccb1c(0x2d5)](this[_0x4ccb1c(0x2a5)]))return;let _0x37b824=this['getDevice'](),_0x4c4383=_0x37b824[_0x4ccb1c(0x330)]({'label':_0x4ccb1c(0x134),'code':mars3dVolumeRaymarchSource});this[_0x4ccb1c(0x446)]=_0x37b824['createRenderPipeline']({'label':'mars3d\x20volume\x20shell\x20raymarch\x20pipeline','layout':_0x37b824[_0x4ccb1c(0x2ec)]({'bindGroupLayouts':[this[_0x4ccb1c(0x469)](),this[_0x4ccb1c(0x1d2)](),this[_0x4ccb1c(0x2fa)]()]}),'vertex':{'module':_0x4c4383,'entryPoint':'vertexMain'},'fragment':{'module':_0x4c4383,'entryPoint':_0x4ccb1c(0x432),'targets':[{'format':this[_0x4ccb1c(0x40b)](),'blend':premultipliedBlend()}]},'primitive':{'topology':_0x4ccb1c(0x201)}});},pipelineHookInstalled=!0x0;},createMars3dVolumeScene=async _0x1cfad5=>{const _0x1fae69=_0x4d4387;installPipelineHook(),mars3dCanvases[_0x1fae69(0x45d)](_0x1cfad5[_0x1fae69(0x2a5)]);try{let _0x122f06=await createVolumeScene(_0x1cfad5),_0x2d3d77=_0x122f06[_0x1fae69(0x16a)]['bind'](_0x122f06);return _0x122f06[_0x1fae69(0x16a)]=()=>{const _0xf5cbff=_0x1fae69;mars3dCanvases[_0xf5cbff(0x3aa)](_0x1cfad5[_0xf5cbff(0x2a5)]),_0x2d3d77();},_0x122f06;}catch(_0x27fb59){throw mars3dCanvases[_0x1fae69(0x3aa)](_0x1cfad5[_0x1fae69(0x2a5)]),_0x27fb59;}},crossVector=(_0x474b70,_0x23c187)=>[_0x474b70[0x1]*_0x23c187[0x2]-_0x474b70[0x2]*_0x23c187[0x1],_0x474b70[0x2]*_0x23c187[0x0]-_0x474b70[0x0]*_0x23c187[0x2],_0x474b70[0x0]*_0x23c187[0x1]-_0x474b70[0x1]*_0x23c187[0x0]],normalizeVector=_0x2a3950=>{let _0x173aed=Math['hypot'](_0x2a3950[0x0],_0x2a3950[0x1],_0x2a3950[0x2]);return _0x173aed>1e-10?[_0x2a3950[0x0]/_0x173aed,_0x2a3950[0x1]/_0x173aed,_0x2a3950[0x2]/_0x173aed]:null;},dotVector=(_0xd78f5,_0x2f54da)=>_0xd78f5[0x0]*_0x2f54da[0x0]+_0xd78f5[0x1]*_0x2f54da[0x1]+_0xd78f5[0x2]*_0x2f54da[0x2],addScaledVector=(_0x3e357d,_0x55ae7e,_0x18fa9e)=>[_0x3e357d[0x0]+_0x55ae7e[0x0]*_0x18fa9e,_0x3e357d[0x1]+_0x55ae7e[0x1]*_0x18fa9e,_0x3e357d[0x2]+_0x55ae7e[0x2]*_0x18fa9e],createMars3dCompensationFrame=(_0x295ca2,_0x542aa8,_0x44c350)=>{const _0x5197d0=_0x4d4387;let _0x54466a=normalizeVector(_0x295ca2[_0x5197d0(0x270)]),_0x3a977c=_0x54466a?normalizeVector(crossVector(_0x54466a,_0x295ca2['up'])):null,_0x3e7e49=_0x54466a&&_0x3a977c?normalizeVector(crossVector(_0x3a977c,_0x54466a)):null,_0xa5377=Math[_0x5197d0(0x1cf)](_0x295ca2[_0x5197d0(0x2a1)]/0x2),_0x44e61a=_0x542aa8/_0x44c350;if(!_0x54466a||!_0x3a977c||!_0x3e7e49||!(_0xa5377>0x0)||!(_0x44e61a>0x0)||!(_0x295ca2[_0x5197d0(0x43d)]>0x0))return null;let _0x4084c3=addScaledVector(_0x295ca2[_0x5197d0(0x1cc)],_0x54466a,_0x295ca2['anchorDistance']),_0x2a401e=[_0x4084c3,addScaledVector(_0x4084c3,_0x3a977c,_0x295ca2[_0x5197d0(0x43d)]*_0xa5377*_0x44e61a*0.5),addScaledVector(_0x4084c3,_0x3e7e49,_0x295ca2['anchorDistance']*_0xa5377*0.5)],_0x42b76a=projectMars3dCompensationAnchors(_0x295ca2,_0x2a401e,_0x542aa8,_0x44c350);return _0x42b76a?{'worldAnchors':_0x2a401e,'screenAnchors':_0x42b76a}:null;},projectMars3dCompensationAnchors=(_0x2d3163,_0x29392b,_0x178786,_0x56e49d)=>{const _0x1df8fe=_0x4d4387;let _0xbe67b5=normalizeVector(_0x2d3163['direction']),_0x483f62=_0xbe67b5?normalizeVector(crossVector(_0xbe67b5,_0x2d3163['up'])):null,_0x23967a=_0xbe67b5&&_0x483f62?normalizeVector(crossVector(_0x483f62,_0xbe67b5)):null,_0x2798ba=Math[_0x1df8fe(0x1cf)](_0x2d3163[_0x1df8fe(0x2a1)]/0x2),_0x720eb1=_0x178786/_0x56e49d;if(!_0xbe67b5||!_0x483f62||!_0x23967a||!(_0x2798ba>0x0)||!(_0x720eb1>0x0))return null;let _0x1d2dbc=[];for(let _0x2fc70d of _0x29392b){let _0x5c6c07=[_0x2fc70d[0x0]-_0x2d3163['position'][0x0],_0x2fc70d[0x1]-_0x2d3163[_0x1df8fe(0x1cc)][0x1],_0x2fc70d[0x2]-_0x2d3163[_0x1df8fe(0x1cc)][0x2]],_0x2f9428=dotVector(_0x5c6c07,_0xbe67b5);if(!(_0x2f9428>0.000001))return null;let _0x2d76fb=dotVector(_0x5c6c07,_0x483f62)/(_0x2f9428*_0x2798ba*_0x720eb1),_0x25cd8e=dotVector(_0x5c6c07,_0x23967a)/(_0x2f9428*_0x2798ba);_0x1d2dbc[_0x1df8fe(0x2a3)]({'x':(_0x2d76fb*0.5+0.5)*_0x178786,'y':(0.5-_0x25cd8e*0.5)*_0x56e49d});}return _0x1d2dbc;},createMars3dCanvasCompensationTransform=(_0x275f17,_0x2bcd83)=>{const _0x21ad8d=_0x4d4387;if(_0x275f17['length']!==0x3||_0x2bcd83['length']!==0x3)return null;let _0x404358={'x':_0x275f17[0x1]['x']-_0x275f17[0x0]['x'],'y':_0x275f17[0x1]['y']-_0x275f17[0x0]['y']},_0x24341f={'x':_0x275f17[0x2]['x']-_0x275f17[0x0]['x'],'y':_0x275f17[0x2]['y']-_0x275f17[0x0]['y']},_0x5279f5={'x':_0x2bcd83[0x1]['x']-_0x2bcd83[0x0]['x'],'y':_0x2bcd83[0x1]['y']-_0x2bcd83[0x0]['y']},_0x7bedca={'x':_0x2bcd83[0x2]['x']-_0x2bcd83[0x0]['x'],'y':_0x2bcd83[0x2]['y']-_0x2bcd83[0x0]['y']},_0x3af995=_0x404358['x']*_0x24341f['y']-_0x24341f['x']*_0x404358['y'];if(Math['abs'](_0x3af995)<0.000001)return null;let _0x193d37=(_0x5279f5['x']*_0x24341f['y']-_0x7bedca['x']*_0x404358['y'])/_0x3af995,_0x4bc3cb=(-_0x5279f5['x']*_0x24341f['x']+_0x7bedca['x']*_0x404358['x'])/_0x3af995,_0x1c80ac=(_0x5279f5['y']*_0x24341f['y']-_0x7bedca['y']*_0x404358['y'])/_0x3af995,_0x28a41a=(-_0x5279f5['y']*_0x24341f['x']+_0x7bedca['y']*_0x404358['x'])/_0x3af995,_0x1b1f9b=[_0x193d37,_0x1c80ac,_0x4bc3cb,_0x28a41a,_0x2bcd83[0x0]['x']-_0x193d37*_0x275f17[0x0]['x']-_0x4bc3cb*_0x275f17[0x0]['y'],_0x2bcd83[0x0]['y']-_0x1c80ac*_0x275f17[0x0]['x']-_0x28a41a*_0x275f17[0x0]['y']];return _0x1b1f9b['every'](Number['isFinite'])?_0x21ad8d(0x385)+_0x1b1f9b[_0x21ad8d(0x16e)](',')+')':null;},getError=_0x4b886d=>_0x4b886d instanceof Error?_0x4b886d:Error(String(_0x4b886d));var Mars3dVolumeRenderer=class{[_0x4d4387(0x187)];['map'];[_0x4d4387(0x2a5)];[_0x4d4387(0x3f9)];[_0x4d4387(0x253)];['scene']=null;[_0x4d4387(0x3f4)];[_0x4d4387(0x3db)];[_0x4d4387(0x35d)]=0x0;[_0x4d4387(0x396)]=0x0;[_0x4d4387(0x304)]=0x0;['shown'];[_0x4d4387(0x3de)]=!0x1;[_0x4d4387(0x1cd)]=!0x1;[_0x4d4387(0x406)]='';[_0x4d4387(0x3f3)]=null;[_0x4d4387(0x1c3)]=null;constructor(_0x146a8b,_0x19d780){const _0x2c1cec=_0x4d4387;this[_0x2c1cec(0x45f)]=_0x146a8b,this[_0x2c1cec(0x3f4)]=_0x19d780[_0x2c1cec(0x3f4)],this['layout']=createGeographicVolumeLayout(_0x19d780[_0x2c1cec(0x3f4)][_0x2c1cec(0x299)]),this['onError']=_0x19d780[_0x2c1cec(0x3f9)],this[_0x2c1cec(0x253)]=_0x19d780['cameraFrameCompensation']??!0x0,this[_0x2c1cec(0x2da)]=_0x19d780[_0x2c1cec(0x443)]??!0x0,this['canvas']=this[_0x2c1cec(0x3b1)](_0x146a8b['scene'][_0x2c1cec(0x2a5)]),this[_0x2c1cec(0x187)]=this['initialize'](_0x19d780);}get[_0x4d4387(0x258)](){const _0x3327e8=_0x4d4387;return this[_0x3327e8(0x120)]?.[_0x3327e8(0x258)]??null;}get[_0x4d4387(0x365)](){const _0xc16dc0=_0x4d4387;return this[_0xc16dc0(0x120)]?.[_0xc16dc0(0x365)]??[];}[_0x4d4387(0x41e)](_0xa243ad){const _0x668754=_0x4d4387;this[_0x668754(0x3bc)](),this[_0x668754(0x2da)]=_0xa243ad,this[_0x668754(0x2a5)]['style'][_0x668754(0x234)]=_0xa243ad?_0x668754(0x151):_0x668754(0x10e),_0xa243ad&&this[_0x668754(0x276)](0x3);}[_0x4d4387(0x1f4)](_0x4a3504){const _0x2c1612=_0x4d4387;this[_0x2c1612(0x26a)]()[_0x2c1612(0x1f4)](_0x4a3504),this['requestFrames'](0x3);}[_0x4d4387(0x3ef)](_0x26eaac){const _0x1d4468=_0x4d4387;this[_0x1d4468(0x26a)]()['setTimeIndex'](_0x26eaac),this[_0x1d4468(0x276)](0x3);}[_0x4d4387(0x461)](_0xe31327){const _0xc1a74a=_0x4d4387;this['requireScene']()['setRouteProfiles'](_0xe31327),this[_0xc1a74a(0x276)](0x3);}[_0x4d4387(0x402)](_0x11cd98,_0x46b359){const _0x433035=_0x4d4387;this[_0x433035(0x26a)]()[_0x433035(0x402)](_0x11cd98,_0x46b359),this[_0x433035(0x276)](0x3);}[_0x4d4387(0x431)](_0x305c98){const _0x599d21=_0x4d4387;this[_0x599d21(0x26a)]()[_0x599d21(0x431)](_0x305c98),this[_0x599d21(0x276)](0x3);}['clearLockedSlices'](){const _0x2ff48e=_0x4d4387;this['requireScene']()['clearLockedSlices'](),this[_0x2ff48e(0x276)](0x3);}[_0x4d4387(0x10d)](_0x32de3d,_0x47a2c1){const _0x116979=_0x4d4387;let _0x4c6860=this[_0x116979(0x26a)]()[_0x116979(0x10d)](_0x32de3d,_0x47a2c1);return this[_0x116979(0x276)](0x3),_0x4c6860;}['setSource'](_0x325d89){const _0x370742=_0x4d4387;this[_0x370742(0x3bc)](),this[_0x370742(0x3f4)]=_0x325d89,this[_0x370742(0x3db)]=createGeographicVolumeLayout(_0x325d89['metadata']),this[_0x370742(0x3e7)](),this[_0x370742(0x26a)]()[_0x370742(0x124)](_0x325d89),this[_0x370742(0x373)](),this['requestFrames'](0x3);}['destroy'](){const _0xb0c367=_0x4d4387;this[_0xb0c367(0x3de)]||(this[_0xb0c367(0x3de)]=!0x0,cancelAnimationFrame(this['frameRequest']),window[_0xb0c367(0x309)](this[_0xb0c367(0x396)]),this[_0xb0c367(0x35d)]=0x0,this[_0xb0c367(0x396)]=0x0,this['map'][_0xb0c367(0x120)][_0xb0c367(0x442)][_0xb0c367(0x42e)](this[_0xb0c367(0x39d)]),window[_0xb0c367(0x42e)](_0xb0c367(0x21c),this[_0xb0c367(0x1b7)]),this[_0xb0c367(0x120)]?.[_0xb0c367(0x16a)](),this[_0xb0c367(0x120)]=null,this[_0xb0c367(0x2a5)]['remove']());}[_0x4d4387(0x421)](){const _0x237a45=_0x4d4387;this['cameraMoving']&&(window['clearTimeout'](this[_0x237a45(0x396)]),this['cameraEndTimer']=0x0,this[_0x237a45(0x1cd)]=!0x1,this['scene']?.['endInteraction']('camera'),this[_0x237a45(0x373)](),this[_0x237a45(0x276)](0x3));}[_0x4d4387(0x39d)]=()=>{const _0x12eb9d=_0x4d4387;let _0x5cae02=this[_0x12eb9d(0x2ca)](this['map'][_0x12eb9d(0x120)][_0x12eb9d(0x401)]);_0x5cae02!==this['cameraSignature']&&(this[_0x12eb9d(0x406)]=_0x5cae02,this['beginCameraInteraction'](),this['syncCamera'](),this['applyCameraFrameCompensation'](),this[_0x12eb9d(0x208)](0x1));};['handleResize']=()=>{const _0x25107a=_0x4d4387;this[_0x25107a(0x3e7)](),this[_0x25107a(0x120)]?.[_0x25107a(0x21c)](),this['syncCamera'](),this[_0x25107a(0x276)](0x3);};async[_0x4d4387(0x33c)](_0x5b3ed8){const _0x4b8e42=_0x4d4387;try{let _0x2766aa=await createMars3dVolumeScene({..._0x5b3ed8,'interactionStepScale':_0x5b3ed8['interactionStepScale']??1.35,'canvas':this[_0x4b8e42(0x2a5)],'coordinateSystem':'geographic-wgs84','showDebugGeometry':!0x1,'renderMode':_0x4b8e42(0x1fc)});if(this[_0x4b8e42(0x3de)]){_0x2766aa[_0x4b8e42(0x16a)]();return;}this[_0x4b8e42(0x120)]=_0x2766aa,this[_0x4b8e42(0x130)](_0x2766aa),this[_0x4b8e42(0x45f)][_0x4b8e42(0x120)][_0x4b8e42(0x442)]['addEventListener'](this[_0x4b8e42(0x39d)]),window[_0x4b8e42(0x325)](_0x4b8e42(0x21c),this[_0x4b8e42(0x1b7)]),this[_0x4b8e42(0x373)](),this[_0x4b8e42(0x276)](0x3);}catch(_0x8de454){let _0x59f768=getError(_0x8de454);throw this[_0x4b8e42(0x2a5)]['remove'](),this['onError']?.(_0x59f768),_0x59f768;}}[_0x4d4387(0x373)](){const _0x4c7ae4=_0x4d4387;let _0x2664eb=this[_0x4c7ae4(0x120)];if(!_0x2664eb)return;let _0x307d28=this[_0x4c7ae4(0x45f)][_0x4c7ae4(0x120)][_0x4c7ae4(0x401)],_0x35d2b4=ecefToGeographicVolumeLocal([_0x307d28['positionWC']['x'],_0x307d28[_0x4c7ae4(0x3a1)]['y'],_0x307d28[_0x4c7ae4(0x3a1)]['z']],this[_0x4c7ae4(0x3db)]),_0x3d5faa=[_0x307d28[_0x4c7ae4(0x409)]['x'],_0x307d28[_0x4c7ae4(0x409)]['y'],_0x307d28[_0x4c7ae4(0x409)]['z']],_0xfb0364=[_0x307d28[_0x4c7ae4(0x43f)]['x'],_0x307d28[_0x4c7ae4(0x43f)]['y'],_0x307d28[_0x4c7ae4(0x43f)]['z']],_0x4e4b9a=Math[_0x4c7ae4(0x412)](0.001,Math['abs'](_0x307d28[_0x4c7ae4(0x144)][_0x4c7ae4(0x3cb)])/this['layout']['normalizationMeters']),_0x4368d7=[_0x35d2b4[0x0]+_0x3d5faa[0x0]*_0x4e4b9a,_0x35d2b4[0x1]+_0x3d5faa[0x1]*_0x4e4b9a,_0x35d2b4[0x2]+_0x3d5faa[0x2]*_0x4e4b9a],_0x447531=_0x307d28[_0x4c7ae4(0x13a)][_0x4c7ae4(0x41a)]??_0x307d28[_0x4c7ae4(0x13a)][_0x4c7ae4(0x437)]??Math['PI']/0x3,_0x32bcf4=Math['max'](0.0001,_0x4e4b9a/0x2710),_0x4e4d48=Math[_0x4c7ae4(0x412)](0x64,_0x4e4b9a*0x4);_0x2664eb[_0x4c7ae4(0x349)]({'position':_0x35d2b4,'target':_0x4368d7,'up':_0xfb0364,'projection':{'type':_0x4c7ae4(0x2ab),'fovYDegrees':_0x447531*0xb4/Math['PI'],'near':_0x32bcf4,'far':_0x4e4d48}});}['bindFrameAvailableCallback'](_0x30ed9a){const _0x4707cf=_0x4d4387;let _0x4c0154=_0x30ed9a['renderer'],_0x29318e=_0x4c0154[_0x4707cf(0x264)];_0x4c0154[_0x4707cf(0x264)]=()=>{const _0x13d193=_0x4707cf;this[_0x13d193(0x3f3)]&&(this['displayedCompensationFrame']=this[_0x13d193(0x3f3)],this[_0x13d193(0x3f3)]=null,this[_0x13d193(0x41c)]()),_0x29318e?.();};}[_0x4d4387(0x162)](){const _0x4d7115=_0x4d4387;let _0x24daae=this[_0x4d7115(0x45f)][_0x4d7115(0x120)][_0x4d7115(0x401)];return{'position':[_0x24daae[_0x4d7115(0x3a1)]['x'],_0x24daae[_0x4d7115(0x3a1)]['y'],_0x24daae[_0x4d7115(0x3a1)]['z']],'direction':[_0x24daae['directionWC']['x'],_0x24daae[_0x4d7115(0x409)]['y'],_0x24daae['directionWC']['z']],'up':[_0x24daae['upWC']['x'],_0x24daae[_0x4d7115(0x43f)]['y'],_0x24daae['upWC']['z']],'fovYRadians':_0x24daae[_0x4d7115(0x13a)][_0x4d7115(0x41a)]??_0x24daae[_0x4d7115(0x13a)]['fov']??Math['PI']/0x3,'anchorDistance':Math[_0x4d7115(0x412)](0x3e8,Math[_0x4d7115(0x3c7)](_0x24daae['positionCartographic'][_0x4d7115(0x3cb)])*0x2)};}['createCurrentCompensationFrame'](){const _0x3a89a1=_0x4d4387;return createMars3dCompensationFrame(this[_0x3a89a1(0x162)](),this[_0x3a89a1(0x2a5)]['clientWidth'],this['canvas'][_0x3a89a1(0x22c)]);}[_0x4d4387(0x41c)](){const _0x1e1058=_0x4d4387;if(!this['cameraFrameCompensation']||!this[_0x1e1058(0x1c3)]){this['canvas'][_0x1e1058(0x2c0)][_0x1e1058(0x28f)]='none';return;}let _0x2446c5=projectMars3dCompensationAnchors(this['createProjectionCamera'](),this[_0x1e1058(0x1c3)][_0x1e1058(0x110)],this[_0x1e1058(0x2a5)]['clientWidth'],this[_0x1e1058(0x2a5)][_0x1e1058(0x22c)]),_0x301b35=_0x2446c5?createMars3dCanvasCompensationTransform(this['displayedCompensationFrame'][_0x1e1058(0x12c)],_0x2446c5):null;this[_0x1e1058(0x2a5)]['style']['transform']=_0x301b35??_0x1e1058(0x10e);}['clearCameraFrameCompensation'](){const _0x1dbb15=_0x4d4387;this[_0x1dbb15(0x3f3)]=null,this['displayedCompensationFrame']=null,this['canvas'][_0x1dbb15(0x2c0)][_0x1dbb15(0x28f)]=_0x1dbb15(0x10e);}[_0x4d4387(0x276)](_0x258470){const _0x5b5ad7=_0x4d4387;!this['shown']||this['destroyed']||(this[_0x5b5ad7(0x304)]=Math['max'](this[_0x5b5ad7(0x304)],_0x258470),this[_0x5b5ad7(0x35d)]||=requestAnimationFrame(this[_0x5b5ad7(0x26b)]));}[_0x4d4387(0x208)](_0x2b8ffa){const _0xc89a50=_0x4d4387;!this[_0xc89a50(0x2da)]||this[_0xc89a50(0x3de)]||(this[_0xc89a50(0x304)]=Math[_0xc89a50(0x412)](this[_0xc89a50(0x304)],_0x2b8ffa),this[_0xc89a50(0x35d)]&&cancelAnimationFrame(this[_0xc89a50(0x35d)]),this['frameRequest']=0x0,this[_0xc89a50(0x26b)]());}[_0x4d4387(0x26b)]=()=>{const _0x5d9533=_0x4d4387;this[_0x5d9533(0x35d)]=0x0;let _0x5e5953=this[_0x5d9533(0x120)];if(!(!_0x5e5953||!this['shown']||this['destroyed']))try{_0x5e5953['resize']();let _0x46eb16=_0x5e5953[_0x5d9533(0x258)]['submittedFrameCount'];_0x5e5953[_0x5d9533(0x392)](),_0x5e5953[_0x5d9533(0x258)][_0x5d9533(0x35f)]>_0x46eb16&&(this[_0x5d9533(0x3f3)]=this['createCurrentCompensationFrame'](),this[_0x5d9533(0x304)]=Math[_0x5d9533(0x412)](0x0,this[_0x5d9533(0x304)]-0x1));let _0x2cd29d=_0x5e5953[_0x5d9533(0x258)];(_0x2cd29d[_0x5d9533(0x1dd)]>0x0||_0x2cd29d[_0x5d9533(0x189)]<_0x2cd29d[_0x5d9533(0x29e)]||this[_0x5d9533(0x304)]>0x0)&&(this[_0x5d9533(0x35d)]=requestAnimationFrame(this['renderFrame']));}catch(_0x40d74a){this[_0x5d9533(0x3f9)]?.(getError(_0x40d74a));}};[_0x4d4387(0x3b1)](_0x5902de){const _0x176601=_0x4d4387;let _0x3f2563=_0x5902de[_0x176601(0x3dd)];if(!_0x3f2563)throw Error(_0x176601(0x3ea));let _0x455b02=document[_0x176601(0x1cb)](_0x176601(0x2a5));return _0x455b02[_0x176601(0x2c0)][_0x176601(0x1cc)]=_0x176601(0x1c4),_0x455b02[_0x176601(0x2c0)]['inset']='0',_0x455b02[_0x176601(0x2c0)][_0x176601(0x13c)]='100%',_0x455b02['style']['height']=_0x176601(0x1f6),_0x455b02[_0x176601(0x2c0)][_0x176601(0x158)]=_0x176601(0x10e),_0x455b02[_0x176601(0x2c0)][_0x176601(0x234)]=this[_0x176601(0x2da)]?_0x176601(0x151):_0x176601(0x10e),_0x455b02[_0x176601(0x2c0)]['zIndex']='1',_0x3f2563['append'](_0x455b02),_0x455b02;}[_0x4d4387(0x2ca)](_0x38db28){const _0xb0d004=_0x4d4387;return[_0x38db28['positionWC']['x'],_0x38db28[_0xb0d004(0x3a1)]['y'],_0x38db28['positionWC']['z'],_0x38db28[_0xb0d004(0x409)]['x'],_0x38db28[_0xb0d004(0x409)]['y'],_0x38db28[_0xb0d004(0x409)]['z'],_0x38db28['upWC']['x'],_0x38db28[_0xb0d004(0x43f)]['y'],_0x38db28[_0xb0d004(0x43f)]['z'],_0x38db28[_0xb0d004(0x13a)]['fovy']??_0x38db28['frustum'][_0xb0d004(0x437)]??0x0,_0x38db28[_0xb0d004(0x13a)][_0xb0d004(0x391)],_0x38db28[_0xb0d004(0x13a)][_0xb0d004(0x184)]]['map'](_0x4535cc=>_0x4535cc[_0xb0d004(0x42a)](0xa))['join']('|');}[_0x4d4387(0x335)](){const _0x13d39c=_0x4d4387;window[_0x13d39c(0x309)](this[_0x13d39c(0x396)]),this[_0x13d39c(0x396)]=window[_0x13d39c(0x140)](this[_0x13d39c(0x421)][_0x13d39c(0x371)](this),0xc8);}['beginCameraInteraction'](){const _0x40f352=_0x4d4387;this[_0x40f352(0x1cd)]||(this['cameraMoving']=!0x0,this[_0x40f352(0x120)]?.[_0x40f352(0x32a)](_0x40f352(0x401))),this['scheduleCameraMoveEnd']();}[_0x4d4387(0x26a)](){const _0x5157e7=_0x4d4387;if(this[_0x5157e7(0x3bc)](),!this[_0x5157e7(0x120)])throw Error(_0x5157e7(0x36a));return this[_0x5157e7(0x120)];}[_0x4d4387(0x3bc)](){const _0x58331b=_0x4d4387;if(this['destroyed'])throw Error(_0x58331b(0x143));}};const layerConstructors=new WeakMap(),getVolumeLayerConstructor=_0xb26400=>{const _0x1b6366=_0x4d4387;let _0x4d0972=layerConstructors[_0x1b6366(0x40e)](_0xb26400);if(_0x4d0972)return _0x4d0972;let _0x25d6cf=_0xb26400[_0x1b6366(0x3c5)][_0x1b6366(0x221)];class _0x50c7e4 extends _0x25d6cf{[_0x1b6366(0x35e)];[_0x1b6366(0x1d5)]=null;[_0x1b6366(0x36e)]=null;[_0x1b6366(0x379)]=null;[_0x1b6366(0x187)]=new Promise((resolve,reject)=>{const _0x29ffd7=_0x1b6366;this[_0x29ffd7(0x36e)]=resolve,this[_0x29ffd7(0x379)]=reject;});constructor(_0x456169){const _0x29002c=_0x1b6366;super({..._0x456169}),this[_0x29002c(0x35e)]={..._0x456169};}get[_0x1b6366(0x258)](){const _0x56b41e=_0x1b6366;return this[_0x56b41e(0x1d5)]?.[_0x56b41e(0x258)]??null;}get[_0x1b6366(0x365)](){const _0x4a3f58=_0x1b6366;return this[_0x4a3f58(0x1d5)]?.[_0x4a3f58(0x365)]??[];}['update'](_0x59cb7c){const _0x48f610=_0x1b6366;this['renderer']?.[_0x48f610(0x1f4)](_0x59cb7c);}[_0x1b6366(0x124)](_0x375e45){const _0x10e5e5=_0x1b6366;this[_0x10e5e5(0x35e)][_0x10e5e5(0x3f4)]=_0x375e45,this[_0x10e5e5(0x2a9)]()[_0x10e5e5(0x124)](_0x375e45);}['setTimeIndex'](_0x3bc243){const _0x4f7840=_0x1b6366;this[_0x4f7840(0x2a9)]()[_0x4f7840(0x3ef)](_0x3bc243);}[_0x1b6366(0x461)](_0xc3c414){const _0x3659da=_0x1b6366;this[_0x3659da(0x2a9)]()[_0x3659da(0x461)](_0xc3c414);}['lockSlice'](_0x2f8c3c,_0x5b83e0){const _0x2cb128=_0x1b6366;return this['requireRenderer']()[_0x2cb128(0x10d)](_0x2f8c3c,_0x5b83e0);}[_0x1b6366(0x402)](_0x26cf59,_0x30069a){const _0x415b63=_0x1b6366;this[_0x415b63(0x2a9)]()['updateSlice'](_0x26cf59,_0x30069a);}[_0x1b6366(0x431)](_0x3f9bfc){const _0x5da13e=_0x1b6366;this[_0x5da13e(0x2a9)]()['removeSlice'](_0x3f9bfc);}[_0x1b6366(0x3f2)](){const _0x249474=_0x1b6366;this[_0x249474(0x2a9)]()[_0x249474(0x3f2)]();}['_mountedHook'](){}['_addedHook'](){const _0x577f8b=_0x1b6366;if(!this['_map'])throw Error(_0x577f8b(0x1e1));this[_0x577f8b(0x1d5)]?.[_0x577f8b(0x16a)](),this['renderer']=new Mars3dVolumeRenderer(this[_0x577f8b(0x209)],this[_0x577f8b(0x35e)]),this[_0x577f8b(0x1d5)][_0x577f8b(0x41e)](this[_0x577f8b(0x443)]),this[_0x577f8b(0x1d5)][_0x577f8b(0x187)][_0x577f8b(0x19a)](()=>this['readyResolve']?.())['catch'](_0x54e3a0=>this['readyReject']?.(_0x54e3a0));}[_0x1b6366(0x27d)](_0x5a5929){const _0x86cfc7=_0x1b6366;this['renderer']?.[_0x86cfc7(0x41e)](_0x5a5929);}[_0x1b6366(0x386)](){const _0x3ccaac=_0x1b6366;this['renderer']?.[_0x3ccaac(0x16a)](),this[_0x3ccaac(0x1d5)]=null;}[_0x1b6366(0x2a9)](){const _0x189c28=_0x1b6366;if(!this[_0x189c28(0x1d5)])throw Error(_0x189c28(0x193));return this[_0x189c28(0x1d5)];}}let _0x1a7783=_0x50c7e4;return layerConstructors[_0x1b6366(0x11e)](_0xb26400,_0x1a7783),_0x1a7783;},createMars3dVolumeLayer=(_0x5d56cb,_0x52fa78)=>new(getVolumeLayerConstructor(_0x5d56cb))(_0x52fa78);export{createMars3dVolumeLayer};