m4-w-fast 1.1.2 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (298) hide show
  1. package/README.md +6 -0
  2. package/dist/index.cjs +1 -1
  3. package/dist/index.d.ts +1 -1
  4. package/dist/index.js +1 -1
  5. package/dist/index.mjs +1 -1
  6. package/dist/intersect.worker.js +2 -2
  7. package/dist/isoBands.worker.js +1 -1
  8. package/dist/m4-w-fast.umd.js +1 -1
  9. package/dist/raster-leaflet/index.cjs +2 -0
  10. package/dist/raster-leaflet/index.d.ts +5 -0
  11. package/dist/raster-leaflet/index.js +1 -0
  12. package/dist/raster-leaflet/index.mjs +2 -0
  13. package/dist/raster-leaflet/m4-w-raster-leaflet.umd.js +2 -0
  14. package/dist/raster-mars3d/cesiumRasterPlaneRenderer.d.ts +28 -0
  15. package/dist/raster-mars3d/cesiumRasterPlaneRenderer.js +1 -0
  16. package/dist/raster-mars3d/cesiumRasterTextureAdapter.d.ts +14 -0
  17. package/dist/raster-mars3d/cesiumRasterTextureAdapter.js +1 -0
  18. package/dist/raster-mars3d/index.cjs +2 -0
  19. package/dist/raster-mars3d/index.d.ts +6 -0
  20. package/dist/raster-mars3d/index.js +1 -0
  21. package/dist/raster-mars3d/index.mjs +2 -0
  22. package/dist/raster-mars3d/m4-w-raster-mars3d.umd.js +2 -0
  23. package/dist/raster-mars3d/mars3dRasterImageryProvider.d.ts +30 -0
  24. package/dist/raster-mars3d/mars3dRasterImageryProvider.js +1 -0
  25. package/dist/raster-mars3d/mars3dRasterPlaneLayer.d.ts +3 -0
  26. package/dist/raster-mars3d/mars3dRasterPlaneLayer.js +1 -0
  27. package/dist/raster-mars3d/rasterPlaneCesiumTypes.d.ts +95 -0
  28. package/dist/raster-mars3d/rasterPlaneCesiumTypes.js +1 -0
  29. package/dist/raster-mars3d/rasterPlaneGeometry.d.ts +5 -0
  30. package/dist/raster-mars3d/rasterPlaneGeometry.js +1 -0
  31. package/dist/raster-mars3d/rasterPlaneGridChunks.d.ts +4 -0
  32. package/dist/raster-mars3d/rasterPlaneGridChunks.js +1 -0
  33. package/dist/raster-mars3d/rasterPlaneMaterial.d.ts +21 -0
  34. package/dist/raster-mars3d/rasterPlaneMaterial.js +1 -0
  35. package/dist/raster-mars3d/rasterPlaneTypes.d.ts +33 -0
  36. package/dist/raster-mars3d/rasterPlaneTypes.js +1 -0
  37. package/dist/raster-mars3d/types.d.ts +30 -0
  38. package/dist/raster-mars3d/types.js +1 -0
  39. package/dist/raster-overlay/color.d.ts +1 -1
  40. package/dist/raster-overlay/color.js +1 -1
  41. package/dist/raster-overlay/core.d.ts +1 -1
  42. package/dist/raster-overlay/core.js +1 -1
  43. package/dist/raster-overlay/index.cjs +2 -2
  44. package/dist/raster-overlay/index.d.ts +5 -2
  45. package/dist/raster-overlay/index.js +1 -1
  46. package/dist/raster-overlay/index.mjs +2 -2
  47. package/dist/raster-overlay/leaflet-renderers/createRenderer.d.ts +3 -7
  48. package/dist/raster-overlay/leaflet-renderers/createRenderer.js +1 -1
  49. package/dist/raster-overlay/leaflet-renderers/renderer.d.ts +1 -59
  50. package/dist/raster-overlay/leafletLayer.d.ts +4 -0
  51. package/dist/raster-overlay/leafletLayer.js +1 -1
  52. package/dist/raster-overlay/leafletTypes.d.ts +21 -0
  53. package/dist/raster-overlay/leafletTypes.js +1 -0
  54. package/dist/raster-overlay/m4-w-raster-overlay.umd.js +2 -2
  55. package/dist/raster-overlay/query.d.ts +1 -1
  56. package/dist/raster-overlay/query.js +1 -1
  57. package/dist/raster-overlay/rasterTypes.d.ts +73 -0
  58. package/dist/raster-overlay/rasterTypes.js +1 -0
  59. package/dist/raster-overlay/rendering/createRasterRenderer.d.ts +4 -0
  60. package/dist/raster-overlay/rendering/createRasterRenderer.js +1 -0
  61. package/dist/raster-overlay/rendering/index.d.ts +5 -0
  62. package/dist/raster-overlay/rendering/index.js +1 -0
  63. package/dist/raster-overlay/rendering/rasterRenderState.d.ts +27 -0
  64. package/dist/raster-overlay/rendering/rasterRenderState.js +1 -0
  65. package/dist/raster-overlay/rendering/renderer.d.ts +15 -0
  66. package/dist/raster-overlay/rendering/renderer.js +1 -0
  67. package/dist/raster-overlay/rendering/webgl2RasterRenderer.d.ts +34 -0
  68. package/dist/raster-overlay/rendering/webgl2RasterRenderer.js +1 -0
  69. package/dist/raster-overlay/rendering/webgpuRasterRenderer.d.ts +42 -0
  70. package/dist/raster-overlay/rendering/webgpuRasterRenderer.js +1 -0
  71. package/dist/raster-overlay/types.d.ts +2 -235
  72. package/dist/raster-rendering/index.cjs +2 -0
  73. package/dist/raster-rendering/index.d.ts +8 -0
  74. package/dist/raster-rendering/index.js +1 -0
  75. package/dist/raster-rendering/index.mjs +2 -0
  76. package/dist/raster-rendering/m4-w-raster-rendering.umd.js +2 -0
  77. package/dist/raster-rendering/types.d.ts +13 -0
  78. package/dist/raster-rendering/types.js +1 -0
  79. package/dist/raster-rendering/webgpuRasterTileRenderer.d.ts +29 -0
  80. package/dist/raster-rendering/webgpuRasterTileRenderer.js +1 -0
  81. package/dist/readFile.d.ts +2 -2
  82. package/dist/readFile.js +1 -1
  83. package/dist/rendering/index.d.ts +6 -0
  84. package/dist/rendering/index.js +1 -0
  85. package/dist/rendering/renderer.d.ts +35 -0
  86. package/dist/rendering/renderer.js +1 -0
  87. package/dist/rendering/types.d.ts +20 -0
  88. package/dist/rendering/types.js +1 -0
  89. package/dist/rendering/webgl2/baseWebgl2Renderer.d.ts +37 -0
  90. package/dist/rendering/webgl2/baseWebgl2Renderer.js +1 -0
  91. package/dist/rendering/webgl2/index.d.ts +4 -0
  92. package/dist/rendering/webgl2/index.js +1 -0
  93. package/dist/rendering/webgl2/types.d.ts +24 -0
  94. package/dist/rendering/webgl2/types.js +1 -0
  95. package/dist/rendering/webgl2/webgl2CoverageResources.d.ts +29 -0
  96. package/dist/rendering/webgl2/webgl2CoverageResources.js +1 -0
  97. package/dist/rendering/webgl2/webgl2VisualizationResources.d.ts +33 -0
  98. package/dist/rendering/webgl2/webgl2VisualizationResources.js +1 -0
  99. package/dist/rendering/webgpu/baseWebgpuRenderer.d.ts +181 -0
  100. package/dist/rendering/webgpu/baseWebgpuRenderer.js +1 -0
  101. package/dist/rendering/webgpu/index.d.ts +3 -0
  102. package/dist/rendering/webgpu/index.js +1 -0
  103. package/dist/rendering/webgpu/types.d.ts +33 -0
  104. package/dist/rendering/webgpu/types.js +1 -0
  105. package/dist/rendering/webgpu/visualizationParams.d.ts +25 -0
  106. package/dist/rendering/webgpu/visualizationParams.js +1 -0
  107. package/dist/rendering/webgpu/visualizationResources.d.ts +50 -0
  108. package/dist/rendering/webgpu/visualizationResources.js +1 -0
  109. package/dist/rendering/webgpu/webgpuCoverageResources.d.ts +36 -0
  110. package/dist/rendering/webgpu/webgpuCoverageResources.js +1 -0
  111. package/dist/road-overlay/coordinateTransform.js +1 -1
  112. package/dist/road-overlay/index.cjs +2 -2
  113. package/dist/road-overlay/index.d.ts +3 -1
  114. package/dist/road-overlay/index.js +1 -1
  115. package/dist/road-overlay/index.mjs +2 -2
  116. package/dist/road-overlay/leaflet-renderers/createRenderer.d.ts +3 -7
  117. package/dist/road-overlay/leaflet-renderers/createRenderer.js +1 -1
  118. package/dist/road-overlay/leaflet-renderers/renderer.d.ts +1 -82
  119. package/dist/road-overlay/leafletLayer.d.ts +2 -0
  120. package/dist/road-overlay/leafletLayer.js +1 -1
  121. package/dist/road-overlay/m4-w-road-overlay.umd.js +2 -2
  122. package/dist/road-overlay/options.d.ts +5 -1
  123. package/dist/road-overlay/options.js +1 -1
  124. package/dist/road-overlay/rendering/index.d.ts +4 -0
  125. package/dist/road-overlay/rendering/index.js +1 -0
  126. package/dist/road-overlay/rendering/renderer.d.ts +54 -0
  127. package/dist/road-overlay/rendering/renderer.js +1 -0
  128. package/dist/road-overlay/rendering/roadRenderState.d.ts +137 -0
  129. package/dist/road-overlay/rendering/roadRenderState.js +1 -0
  130. package/dist/road-overlay/rendering/webgl2RoadRenderer.d.ts +38 -0
  131. package/dist/road-overlay/rendering/webgl2RoadRenderer.js +1 -0
  132. package/dist/road-overlay/rendering/webgpuRoadRenderer.d.ts +134 -0
  133. package/dist/road-overlay/rendering/webgpuRoadRenderer.js +1 -0
  134. package/dist/road-overlay/roadData.d.ts +3 -2
  135. package/dist/road-overlay/roadData.js +1 -1
  136. package/dist/road-overlay/roadGeometry.d.ts +2 -2
  137. package/dist/road-overlay/roadGeometry.js +1 -1
  138. package/dist/road-overlay/roadMesh.d.ts +7 -5
  139. package/dist/road-overlay/roadMesh.js +1 -1
  140. package/dist/road-overlay/types.d.ts +10 -2
  141. package/dist/shared/coordinate-shader/webgl2/index.d.ts +3 -0
  142. package/dist/shared/coordinate-shader/webgl2/index.js +1 -0
  143. package/dist/shared/coordinate-shader/webgpu/index.d.ts +5 -0
  144. package/dist/shared/coordinate-shader/webgpu/index.js +1 -0
  145. package/dist/shared/coverage/index.d.ts +1 -0
  146. package/dist/shared/coverage/index.js +1 -0
  147. package/dist/shared/coverage/types.d.ts +8 -0
  148. package/dist/shared/coverage/types.js +1 -0
  149. package/dist/shared/map/index.d.ts +2 -0
  150. package/dist/shared/map/index.js +1 -0
  151. package/dist/shared/map/leaflet.d.ts +7 -0
  152. package/dist/shared/map/leaflet.js +1 -0
  153. package/dist/shared/map/types.d.ts +19 -0
  154. package/dist/shared/map/types.js +1 -0
  155. package/dist/shared/polygon/contains.d.ts +3 -0
  156. package/dist/shared/polygon/contains.js +1 -0
  157. package/dist/shared/polygon/index.d.ts +3 -0
  158. package/dist/shared/polygon/index.js +1 -0
  159. package/dist/shared/polygon/polygonMesh.d.ts +3 -0
  160. package/dist/shared/polygon/polygonMesh.js +1 -0
  161. package/dist/shared/polygon/types.d.ts +11 -0
  162. package/dist/shared/polygon/types.js +1 -0
  163. package/dist/shared/shader/assemble.d.ts +5 -0
  164. package/dist/shared/shader/assemble.js +1 -0
  165. package/dist/shared/visualization/index.d.ts +2 -0
  166. package/dist/shared/visualization/index.js +1 -0
  167. package/dist/shared/visualization/shader/webgl2/index.d.ts +1 -0
  168. package/dist/shared/visualization/shader/webgl2/index.js +1 -0
  169. package/dist/shared/visualization/shader/webgpu/index.d.ts +10 -0
  170. package/dist/shared/visualization/shader/webgpu/index.js +1 -0
  171. package/dist/shared/visualization/types.d.ts +68 -0
  172. package/dist/shared/visualization/types.js +1 -0
  173. package/dist/shared/visualization/utils.d.ts +46 -0
  174. package/dist/shared/visualization/utils.js +1 -0
  175. package/dist/volume-mars3d/createMars3dVolumeScene.d.ts +3 -0
  176. package/dist/volume-mars3d/createMars3dVolumeScene.js +1 -0
  177. package/dist/volume-mars3d/index.cjs +1 -0
  178. package/dist/volume-mars3d/index.d.ts +2 -0
  179. package/dist/volume-mars3d/index.js +1 -0
  180. package/dist/volume-mars3d/index.mjs +1 -0
  181. package/dist/volume-mars3d/m4-w-volume-mars3d.umd.js +1 -0
  182. package/dist/volume-mars3d/mars3dCanvasCompensation.d.ts +22 -0
  183. package/dist/volume-mars3d/mars3dCanvasCompensation.js +1 -0
  184. package/dist/volume-mars3d/mars3dRaymarchShader.d.ts +1 -0
  185. package/dist/volume-mars3d/mars3dRaymarchShader.js +1 -0
  186. package/dist/volume-mars3d/mars3dVolumeLayer.d.ts +2 -0
  187. package/dist/volume-mars3d/mars3dVolumeLayer.js +1 -0
  188. package/dist/volume-mars3d/mars3dVolumeRenderer.d.ts +56 -0
  189. package/dist/volume-mars3d/mars3dVolumeRenderer.js +1 -0
  190. package/dist/volume-mars3d/volumeMars3dTypes.d.ts +85 -0
  191. package/dist/volume-mars3d/volumeMars3dTypes.js +1 -0
  192. package/dist/volume-mars3d-native/index.cjs +1 -0
  193. package/dist/volume-mars3d-native/index.d.ts +4 -0
  194. package/dist/volume-mars3d-native/index.js +1 -0
  195. package/dist/volume-mars3d-native/index.mjs +1 -0
  196. package/dist/volume-mars3d-native/liveUpdateScheduler.d.ts +10 -0
  197. package/dist/volume-mars3d-native/liveUpdateScheduler.js +1 -0
  198. package/dist/volume-mars3d-native/m4-w-volume-mars3d-native.umd.js +1 -0
  199. package/dist/volume-mars3d-native/mars3dNativeSliceLayer.d.ts +2 -0
  200. package/dist/volume-mars3d-native/mars3dNativeSliceLayer.js +1 -0
  201. package/dist/volume-mars3d-native/mars3dNativeSliceRenderer.d.ts +56 -0
  202. package/dist/volume-mars3d-native/mars3dNativeSliceRenderer.js +1 -0
  203. package/dist/volume-mars3d-native/mars3dNativeVolumeLayer.d.ts +2 -0
  204. package/dist/volume-mars3d-native/mars3dNativeVolumeLayer.js +1 -0
  205. package/dist/volume-mars3d-native/mars3dNativeVolumeRenderer.d.ts +34 -0
  206. package/dist/volume-mars3d-native/mars3dNativeVolumeRenderer.js +1 -0
  207. package/dist/volume-mars3d-native/nativeAxisSliceRenderer.d.ts +40 -0
  208. package/dist/volume-mars3d-native/nativeAxisSliceRenderer.js +1 -0
  209. package/dist/volume-mars3d-native/nativeSliceAtlas.d.ts +50 -0
  210. package/dist/volume-mars3d-native/nativeSliceAtlas.js +1 -0
  211. package/dist/volume-mars3d-native/nativeSliceRuntimeTypes.d.ts +17 -0
  212. package/dist/volume-mars3d-native/nativeSliceRuntimeTypes.js +1 -0
  213. package/dist/volume-mars3d-native/nativeTypes.d.ts +174 -0
  214. package/dist/volume-mars3d-native/nativeTypes.js +1 -0
  215. package/dist/volume-mars3d-native/nativeVoxelProvider.d.ts +6 -0
  216. package/dist/volume-mars3d-native/nativeVoxelProvider.js +1 -0
  217. package/dist/volume-mars3d-native/nativeVoxelShader.d.ts +2 -0
  218. package/dist/volume-mars3d-native/nativeVoxelShader.js +1 -0
  219. package/dist/volume-mars3d-native/voxelData.d.ts +9 -0
  220. package/dist/volume-mars3d-native/voxelData.js +1 -0
  221. package/dist/volume-scene/brickLayout.d.ts +75 -0
  222. package/dist/volume-scene/brickLayout.js +1 -0
  223. package/dist/volume-scene/brickResidency.d.ts +54 -0
  224. package/dist/volume-scene/brickResidency.js +1 -0
  225. package/dist/volume-scene/camera.d.ts +22 -0
  226. package/dist/volume-scene/camera.js +1 -0
  227. package/dist/volume-scene/cameraTypes.d.ts +37 -0
  228. package/dist/volume-scene/cameraTypes.js +1 -0
  229. package/dist/volume-scene/createVolumeScene.d.ts +4 -0
  230. package/dist/volume-scene/createVolumeScene.js +1 -0
  231. package/dist/volume-scene/geographicTypes.d.ts +16 -0
  232. package/dist/volume-scene/geographicTypes.js +1 -0
  233. package/dist/volume-scene/geographicVolume.d.ts +4 -0
  234. package/dist/volume-scene/geographicVolume.js +1 -0
  235. package/dist/volume-scene/inMemoryVolumeSource.d.ts +3 -0
  236. package/dist/volume-scene/inMemoryVolumeSource.js +1 -0
  237. package/dist/volume-scene/index.cjs +1 -0
  238. package/dist/volume-scene/index.d.ts +12 -0
  239. package/dist/volume-scene/index.js +1 -0
  240. package/dist/volume-scene/index.mjs +1 -0
  241. package/dist/volume-scene/m4-w-volume-scene.umd.js +1 -0
  242. package/dist/volume-scene/matrix.d.ts +11 -0
  243. package/dist/volume-scene/matrix.js +1 -0
  244. package/dist/volume-scene/profileTypes.d.ts +20 -0
  245. package/dist/volume-scene/profileTypes.js +1 -0
  246. package/dist/volume-scene/rendering/webgpu/index.d.ts +2 -0
  247. package/dist/volume-scene/rendering/webgpu/index.js +1 -0
  248. package/dist/volume-scene/rendering/webgpu/webgpuBrickAtlas.d.ts +59 -0
  249. package/dist/volume-scene/rendering/webgpu/webgpuBrickAtlas.js +1 -0
  250. package/dist/volume-scene/rendering/webgpu/webgpuSceneAttachments.d.ts +11 -0
  251. package/dist/volume-scene/rendering/webgpu/webgpuSceneAttachments.js +1 -0
  252. package/dist/volume-scene/rendering/webgpu/webgpuSceneMeshResources.d.ts +12 -0
  253. package/dist/volume-scene/rendering/webgpu/webgpuSceneMeshResources.js +1 -0
  254. package/dist/volume-scene/rendering/webgpu/webgpuSliceResources.d.ts +21 -0
  255. package/dist/volume-scene/rendering/webgpu/webgpuSliceResources.js +1 -0
  256. package/dist/volume-scene/rendering/webgpu/webgpuTransferResources.d.ts +16 -0
  257. package/dist/volume-scene/rendering/webgpu/webgpuTransferResources.js +1 -0
  258. package/dist/volume-scene/rendering/webgpu/webgpuVolumeSceneRenderer.d.ts +126 -0
  259. package/dist/volume-scene/rendering/webgpu/webgpuVolumeSceneRenderer.js +1 -0
  260. package/dist/volume-scene/rendering/webgpu/webgpuVolumeTypes.d.ts +108 -0
  261. package/dist/volume-scene/rendering/webgpu/webgpuVolumeTypes.js +1 -0
  262. package/dist/volume-scene/routeProfileMesh.d.ts +7 -0
  263. package/dist/volume-scene/routeProfileMesh.js +1 -0
  264. package/dist/volume-scene/sceneTypes.d.ts +136 -0
  265. package/dist/volume-scene/sceneTypes.js +1 -0
  266. package/dist/volume-scene/sliceInteractionController.d.ts +27 -0
  267. package/dist/volume-scene/sliceInteractionController.js +1 -0
  268. package/dist/volume-scene/sliceMarkerOverlay.d.ts +28 -0
  269. package/dist/volume-scene/sliceMarkerOverlay.js +1 -0
  270. package/dist/volume-scene/sliceState.d.ts +34 -0
  271. package/dist/volume-scene/sliceState.js +1 -0
  272. package/dist/volume-scene/sliceTypes.d.ts +52 -0
  273. package/dist/volume-scene/sliceTypes.js +1 -0
  274. package/dist/volume-scene/sourceTypes.d.ts +47 -0
  275. package/dist/volume-scene/sourceTypes.js +1 -0
  276. package/dist/volume-scene/transferTypes.d.ts +12 -0
  277. package/dist/volume-scene/transferTypes.js +1 -0
  278. package/dist/volume-scene/volumeBrickData.d.ts +3 -0
  279. package/dist/volume-scene/volumeBrickData.js +1 -0
  280. package/dist/volume-scene/volumeScene.d.ts +103 -0
  281. package/dist/volume-scene/volumeScene.js +1 -0
  282. package/dist/volume-scene/volumeTransfer.d.ts +8 -0
  283. package/dist/volume-scene/volumeTransfer.js +1 -0
  284. package/dist/volume-scene/volumeValidation.d.ts +27 -0
  285. package/dist/volume-scene/volumeValidation.js +1 -0
  286. package/package.json +6 -3
  287. package/dist/raster-overlay/leaflet-renderers/cpuRenderer.d.ts +0 -0
  288. package/dist/raster-overlay/leaflet-renderers/cpuRenderer.js +0 -1
  289. package/dist/raster-overlay/leaflet-renderers/rasterRendererUtils.d.ts +0 -52
  290. package/dist/raster-overlay/leaflet-renderers/rasterRendererUtils.js +0 -1
  291. package/dist/raster-overlay/leaflet-renderers/webgl2Renderer.d.ts +0 -111
  292. package/dist/raster-overlay/leaflet-renderers/webgl2Renderer.js +0 -1
  293. package/dist/raster-overlay/leaflet-renderers/webglRenderer.d.ts +0 -0
  294. package/dist/raster-overlay/leaflet-renderers/webglRenderer.js +0 -1
  295. package/dist/raster-overlay/leaflet-renderers/webgpuRenderer.d.ts +0 -114
  296. package/dist/raster-overlay/leaflet-renderers/webgpuRenderer.js +0 -1
  297. package/dist/road-overlay/leaflet-renderers/webgpuRenderer.d.ts +0 -55
  298. package/dist/road-overlay/leaflet-renderers/webgpuRenderer.js +0 -1
@@ -0,0 +1 @@
1
+ const _0x2e1660=_0x2b0a;(function(_0x32911e,_0x372517){const _0x4751ac=_0x2b0a,_0x2a6d36=_0x32911e();while(!![]){try{const _0x5ee4bd=parseInt(_0x4751ac(0x1cd))/0x1+-parseInt(_0x4751ac(0x150))/0x2*(parseInt(_0x4751ac(0x1dc))/0x3)+parseInt(_0x4751ac(0x25b))/0x4*(-parseInt(_0x4751ac(0xd6))/0x5)+-parseInt(_0x4751ac(0x215))/0x6+-parseInt(_0x4751ac(0x3d3))/0x7+parseInt(_0x4751ac(0x3b7))/0x8+parseInt(_0x4751ac(0x3e6))/0x9*(parseInt(_0x4751ac(0x296))/0xa);if(_0x5ee4bd===_0x372517)break;else _0x2a6d36['push'](_0x2a6d36['shift']());}catch(_0x62fad){_0x2a6d36['push'](_0x2a6d36['shift']());}}}(_0x1938,0x339f1),Object[_0x2e1660(0x190)](exports,Symbol[_0x2e1660(0x1e2)],{'value':_0x2e1660(0x3bb)}));const WGS84_SEMI_MAJOR_AXIS_METERS=0x615299,WGS84_SEMI_MINOR_AXIS_METERS=WGS84_SEMI_MAJOR_AXIS_METERS*(0x1-0x1/298.257223563),WGS84_FIRST_ECCENTRICITY_SQUARED=0x1-WGS84_SEMI_MINOR_AXIS_METERS**0x2/WGS84_SEMI_MAJOR_AXIS_METERS**0x2,degreesToRadians=_0x5144f3=>_0x5144f3*Math['PI']/0xb4,geodeticToEcef=(_0x4f5cc8,_0x10f853,_0x585c6e)=>{const _0x3c1ced=_0x2e1660;let _0x296b85=Math[_0x3c1ced(0x2f5)](_0x10f853),_0x4e60b9=Math[_0x3c1ced(0x254)](_0x10f853),_0x2f3404=Math[_0x3c1ced(0x2f5)](_0x4f5cc8),_0x2807b7=Math[_0x3c1ced(0x254)](_0x4f5cc8),_0x31e015=WGS84_SEMI_MAJOR_AXIS_METERS/Math[_0x3c1ced(0x3e4)](0x1-WGS84_FIRST_ECCENTRICITY_SQUARED*_0x296b85*_0x296b85);return[(_0x31e015+_0x585c6e)*_0x4e60b9*_0x2807b7,(_0x31e015+_0x585c6e)*_0x4e60b9*_0x2f3404,(_0x31e015*(0x1-WGS84_FIRST_ECCENTRICITY_SQUARED)+_0x585c6e)*_0x296b85];},validateAxisSpan=(_0x18414c,_0xd9ab86,_0x524c1a)=>{const _0x36247c=_0x2e1660;if(!Number[_0x36247c(0x2c4)](_0x18414c)||!Number[_0x36247c(0x2c4)](_0xd9ab86)||_0x18414c===_0xd9ab86)throw Error(_0x524c1a+_0x36247c(0x265)+_0x524c1a+'\x20轴必须包含两个不同的有限端点。');},createGeographicVolumeLayout=(_0x39fab0,_0x515327=0x1)=>{const _0x5a75c6=_0x2e1660;let _0xbadede=degreesToRadians(_0x39fab0['xAxis'][_0x5a75c6(0x2ce)]),_0xe595b2=degreesToRadians(_0x39fab0[_0x5a75c6(0x3a3)]['end']),_0x1e6ab0=degreesToRadians(_0x39fab0[_0x5a75c6(0x271)][_0x5a75c6(0x2ce)]),_0xb4ec8e=degreesToRadians(_0x39fab0['zAxis'][_0x5a75c6(0x209)]);validateAxisSpan(_0xbadede,_0xe595b2,_0x5a75c6(0x12a)),validateAxisSpan(_0x1e6ab0,_0xb4ec8e,'Latitude\x20/\x20纬度');let _0x2036bd=_0x39fab0[_0x5a75c6(0x185)][_0x5a75c6(0x2ce)],_0x3c452d=_0x39fab0[_0x5a75c6(0x185)][_0x5a75c6(0x209)];if(validateAxisSpan(_0x2036bd,_0x3c452d,_0x5a75c6(0x3af)),!(_0x515327>0x0)||!Number['isFinite'](_0x515327))throw Error(_0x5a75c6(0x2a6));let _0x116c53=_0x2036bd+(_0x3c452d-_0x2036bd)*_0x515327,_0x57959c=(_0xbadede+_0xe595b2)/0x2,_0x4c683f=(_0x1e6ab0+_0xb4ec8e)/0x2,_0x4712bb=geodeticToEcef(_0x57959c,_0x4c683f,0x0),_0x2232eb=Math[_0x5a75c6(0x193)](_0xe595b2-_0xbadede)*WGS84_SEMI_MAJOR_AXIS_METERS*Math[_0x5a75c6(0x3b1)](0.01,Math[_0x5a75c6(0x254)](_0x4c683f)),_0x6fe3d6=Math['abs'](_0xb4ec8e-_0x1e6ab0)*WGS84_SEMI_MAJOR_AXIS_METERS,_0x1371e7=Math[_0x5a75c6(0x3b1)](_0x2232eb,_0x6fe3d6);if(!(_0x1371e7>0x0)||!Number[_0x5a75c6(0x2c4)](_0x1371e7))throw Error(_0x5a75c6(0x159));let _0xacfe03=[0x1/0x0,0x1/0x0,0x1/0x0],_0x428772=[-0x1/0x0,-0x1/0x0,-0x1/0x0];for(let _0x32a3d9=0x0;_0x32a3d9<=0x8;_0x32a3d9+=0x1){let _0x4d8033=_0x1e6ab0+(_0xb4ec8e-_0x1e6ab0)*_0x32a3d9/0x8;for(let _0x3a1377=0x0;_0x3a1377<=0x8;_0x3a1377+=0x1){let _0x3e16a0=_0xbadede+(_0xe595b2-_0xbadede)*_0x3a1377/0x8;for(let _0x8e4a7a of[_0x2036bd,_0x116c53]){let _0x3ddca1=geodeticToEcef(_0x3e16a0,_0x4d8033,_0x8e4a7a);for(let _0x15ac07=0x0;_0x15ac07<0x3;_0x15ac07+=0x1){let _0x5e65c9=(_0x3ddca1[_0x15ac07]-_0x4712bb[_0x15ac07])/_0x1371e7;_0xacfe03[_0x15ac07]=Math['min'](_0xacfe03[_0x15ac07],_0x5e65c9),_0x428772[_0x15ac07]=Math['max'](_0x428772[_0x15ac07],_0x5e65c9);}}}}let _0x3cbd6b=_0x428772[_0x5a75c6(0x10e)]((_0x58453a,_0x48269b)=>_0x58453a-_0xacfe03[_0x48269b]);if(_0x3cbd6b['some'](_0x179dfd=>!(_0x179dfd>0x0)||!Number[_0x5a75c6(0x2c4)](_0x179dfd)))throw Error(_0x5a75c6(0x2ff));return{'centerEcef':_0x4712bb,'normalizationMeters':_0x1371e7,'proxyModelMatrix':[_0x3cbd6b[0x0],0x0,0x0,0x0,0x0,_0x3cbd6b[0x1],0x0,0x0,0x0,0x0,_0x3cbd6b[0x2],0x0,_0xacfe03[0x0],_0xacfe03[0x1],_0xacfe03[0x2],0x1],'transform':{'mode':_0x5a75c6(0x3ca),'centerEcefScaled':[_0x4712bb[0x0]/_0x1371e7,_0x4712bb[0x1]/_0x1371e7,_0x4712bb[0x2]/_0x1371e7],'semiMajorAxisScaled':WGS84_SEMI_MAJOR_AXIS_METERS/_0x1371e7,'semiMinorAxisScaled':WGS84_SEMI_MINOR_AXIS_METERS/_0x1371e7,'longitudeRadians':[_0xbadede,_0xe595b2],'latitudeRadians':[_0x1e6ab0,_0xb4ec8e],'heightScaled':[_0x2036bd/_0x1371e7,_0x116c53/_0x1371e7]}};},ecefToGeographicVolumeLocal=(_0x276b43,_0x15189a)=>[(_0x276b43[0x0]-_0x15189a[_0x2e1660(0x39a)][0x0])/_0x15189a[_0x2e1660(0x413)],(_0x276b43[0x1]-_0x15189a['centerEcef'][0x1])/_0x15189a['normalizationMeters'],(_0x276b43[0x2]-_0x15189a[_0x2e1660(0x39a)][0x2])/_0x15189a[_0x2e1660(0x413)]],validatePositiveInteger=(_0x2fca89,_0x2fd049)=>{const _0x4819a5=_0x2e1660;if(!Number[_0x4819a5(0x406)](_0x2fca89)||_0x2fca89<=0x0)throw Error(_0x2fd049+_0x4819a5(0x149)+_0x2fd049+'\x20必须是正整数。');},validateAxis=(_0x537500,_0x5470e7)=>{const _0x20d80c=_0x2e1660;if(validatePositiveInteger(_0x537500[_0x20d80c(0x2e2)],_0x5470e7+'\x20count'),!Number[_0x20d80c(0x2c4)](_0x537500[_0x20d80c(0x2ce)])||!Number[_0x20d80c(0x2c4)](_0x537500[_0x20d80c(0x209)]))throw Error(_0x5470e7+_0x20d80c(0x279)+_0x5470e7+_0x20d80c(0x419));if(_0x537500[_0x20d80c(0x2e2)]===0x1&&_0x537500[_0x20d80c(0x2ce)]!==_0x537500[_0x20d80c(0x209)])throw Error(_0x5470e7+'\x20with\x20one\x20sample\x20must\x20use\x20equal\x20endpoints.\x20'+_0x5470e7+_0x20d80c(0x220));if(_0x537500[_0x20d80c(0x2e2)]>0x1&&_0x537500[_0x20d80c(0x2ce)]===_0x537500['end'])throw Error(_0x5470e7+'\x20with\x20multiple\x20samples\x20must\x20have\x20a\x20non-zero\x20step.\x20'+_0x5470e7+'\x20包含多个采样点时步长不能为零。');},validateNoData=(_0x1b0eae,_0x52bf4c)=>{const _0x4bb1b6=_0x2e1660;if(_0x1b0eae!==void 0x0&&!Number['isFinite'](_0x1b0eae)&&!Number[_0x4bb1b6(0x1d5)](_0x1b0eae))throw Error(_0x52bf4c+'\x20noData\x20must\x20be\x20finite\x20or\x20NaN.\x20'+_0x52bf4c+_0x4bb1b6(0x130));},rangesEqual=(_0xbc906b,_0x10580b)=>_0xbc906b[_0x2e1660(0x23f)]===_0x10580b['xStart']&&_0xbc906b[_0x2e1660(0x1ca)]===_0x10580b[_0x2e1660(0x1ca)]&&_0xbc906b['levelStart']===_0x10580b[_0x2e1660(0x182)]&&_0xbc906b[_0x2e1660(0x1f5)]===_0x10580b[_0x2e1660(0x1f5)]&&_0xbc906b[_0x2e1660(0x30e)]===_0x10580b[_0x2e1660(0x30e)]&&_0xbc906b[_0x2e1660(0x37b)]===_0x10580b[_0x2e1660(0x37b)],validateVolumeMetadata=_0x3e75ef=>{const _0x277c60=_0x2e1660;if(validateAxis(_0x3e75ef[_0x277c60(0x3a3)],'Volume\x20X\x20axis'),validateAxis(_0x3e75ef[_0x277c60(0x185)],'Volume\x20Y\x20axis'),validateAxis(_0x3e75ef[_0x277c60(0x271)],'Volume\x20Z\x20axis'),validatePositiveInteger(_0x3e75ef['timeCount'],'Volume\x20timeCount'),validateNoData(_0x3e75ef['noData'],_0x277c60(0x230)),_0x3e75ef[_0x277c60(0xe6)]!==void 0x0&&!Number[_0x277c60(0x2c4)](_0x3e75ef[_0x277c60(0xe6)]))throw Error('Volume\x20valueScale\x20must\x20be\x20finite.\x20体积\x20valueScale\x20必须是有限数值。');if(_0x3e75ef[_0x277c60(0x3bc)]!==void 0x0&&(!Number[_0x277c60(0x406)](_0x3e75ef[_0x277c60(0x3bc)])||_0x3e75ef[_0x277c60(0x3bc)]<0x0))throw Error('Volume\x20revision\x20must\x20be\x20a\x20non-negative\x20integer.\x20体积\x20revision\x20必须是非负整数。');},validateVolumeTimeIndex=(_0x4bb4cc,_0x1d45aa)=>{const _0x291e06=_0x2e1660;if(!Number['isInteger'](_0x1d45aa)||_0x1d45aa<0x0||_0x1d45aa>=_0x4bb4cc[_0x291e06(0x147)])throw Error(_0x291e06(0x28e)+_0x1d45aa+_0x291e06(0x120));},validateVolumeChunkRange=(_0x4be626,_0x572110)=>{const _0x5b6a01=_0x2e1660;let _0x5c590b=[[_0x572110[_0x5b6a01(0x23f)],_0x5b6a01(0x23f)],[_0x572110[_0x5b6a01(0x1ca)],_0x5b6a01(0x1ca)],[_0x572110[_0x5b6a01(0x182)],_0x5b6a01(0x182)],[_0x572110[_0x5b6a01(0x1f5)],_0x5b6a01(0x1f5)],[_0x572110['sourceYStart'],'sourceYStart'],[_0x572110['sourceYCount'],_0x5b6a01(0x37b)]];for(let [_0x1ea338,_0x1d0dde]of _0x5c590b)if(!Number['isInteger'](_0x1ea338)||_0x1ea338<0x0||_0x1d0dde[_0x5b6a01(0x330)](_0x5b6a01(0x2f4))&&_0x1ea338===0x0)throw Error('Volume\x20chunk\x20'+_0x1d0dde+_0x5b6a01(0x1d1)+_0x1ea338+_0x5b6a01(0x3be)+_0x1d0dde+_0x5b6a01(0xf9));if(_0x572110['xStart']+_0x572110['xCount']>_0x4be626[_0x5b6a01(0x3a3)]['count']||_0x572110[_0x5b6a01(0x182)]+_0x572110['levelCount']>_0x4be626[_0x5b6a01(0x185)][_0x5b6a01(0x2e2)]||_0x572110[_0x5b6a01(0x30e)]+_0x572110['sourceYCount']>_0x4be626[_0x5b6a01(0x271)][_0x5b6a01(0x2e2)])throw Error(_0x5b6a01(0x207));},validateVolumeChunk=(_0x57b35c,_0x594c10,_0x520678,_0x49a118)=>{const _0x1aedcc=_0x2e1660;if(validateVolumeTimeIndex(_0x57b35c,_0x594c10[_0x1aedcc(0x200)]),validateVolumeChunkRange(_0x57b35c,_0x594c10[_0x1aedcc(0x338)]),_0x49a118!==void 0x0&&_0x594c10['timeIndex']!==_0x49a118)throw Error(_0x1aedcc(0x1e7));if(_0x520678&&!rangesEqual(_0x594c10['range'],_0x520678))throw Error(_0x1aedcc(0x20b));if(_0x594c10['width']!==_0x594c10[_0x1aedcc(0x338)][_0x1aedcc(0x1ca)]||_0x594c10[_0x1aedcc(0x1c0)]!==_0x594c10[_0x1aedcc(0x338)]['levelCount']||_0x594c10[_0x1aedcc(0xc8)]!==_0x594c10['range'][_0x1aedcc(0x37b)])throw Error(_0x1aedcc(0x22b));let _0xd55533=_0x594c10[_0x1aedcc(0x274)]*_0x594c10[_0x1aedcc(0x1c0)]*_0x594c10[_0x1aedcc(0xc8)];if(!Number['isSafeInteger'](_0xd55533)||_0x594c10[_0x1aedcc(0x21e)][_0x1aedcc(0x37f)]!==_0xd55533)throw Error('Volume\x20chunk\x20requires\x20'+_0xd55533+'\x20values\x20but\x20received\x20'+_0x594c10['values'][_0x1aedcc(0x37f)]+_0x1aedcc(0x134));},validateVolumeSource=_0x5aee6a=>{const _0x84b3d3=_0x2e1660;if(!_0x5aee6a||typeof _0x5aee6a[_0x84b3d3(0x3c7)]!=_0x84b3d3(0xf3))throw Error('Volume\x20source\x20must\x20provide\x20readChunk().\x20体积数据源必须提供\x20readChunk()。');validateVolumeMetadata(_0x5aee6a[_0x84b3d3(0x246)]);},validateBrickShape=_0x1e9b59=>{const _0x26b696=_0x2e1660;for(let [_0x1da62f,_0x4b06d0]of[[_0x1e9b59['width'],'width'],[_0x1e9b59[_0x26b696(0x1c0)],_0x26b696(0x1c0)],[_0x1e9b59[_0x26b696(0xc8)],_0x26b696(0xc8)]])if(!Number[_0x26b696(0x406)](_0x1da62f)||_0x1da62f<=0x0)throw Error(_0x26b696(0x10f)+_0x4b06d0+_0x26b696(0x316)+_0x4b06d0+_0x26b696(0x29d));if(!Number['isInteger'](_0x1e9b59['halo'])||_0x1e9b59['halo']<0x1)throw Error(_0x26b696(0x2c9));},resolveVolumeBrickShape=(_0x47b7d0={})=>{const _0x2e7e0b=_0x2e1660;let _0x4d458d={'width':_0x47b7d0[_0x2e7e0b(0x274)]??0x100,'height':_0x47b7d0['height']??0x8,'depth':_0x47b7d0['depth']??0x100,'halo':_0x47b7d0[_0x2e7e0b(0x405)]??0x1};return validateBrickShape(_0x4d458d),_0x4d458d;},createVolumeBrickLayout=(_0x57e021,_0x33c6e3={})=>{const _0xe252da=_0x2e1660;validateVolumeMetadata(_0x57e021);let _0xcb32e5=resolveVolumeBrickShape(_0x33c6e3),_0x4097ce=Math[_0xe252da(0x32e)](_0x57e021['xAxis']['count']/_0xcb32e5[_0xe252da(0x274)]),_0x1ab732=Math[_0xe252da(0x32e)](_0x57e021[_0xe252da(0x185)][_0xe252da(0x2e2)]/_0xcb32e5[_0xe252da(0x1c0)]),_0x4de233=Math[_0xe252da(0x32e)](_0x57e021[_0xe252da(0x271)][_0xe252da(0x2e2)]/_0xcb32e5[_0xe252da(0xc8)]);return{'shape':_0xcb32e5,'countX':_0x4097ce,'countY':_0x1ab732,'countZ':_0x4de233,'brickCount':_0x4097ce*_0x1ab732*_0x4de233};},createVolumeBrickKey=_0x5d4817=>_0x5d4817['x']+':'+_0x5d4817['y']+':'+_0x5d4817['z'],createVolumeBrickDescriptor=(_0x206d91,_0x1ec84b,_0x47091e)=>{const _0x59f9e6=_0x2e1660;if(!Number[_0x59f9e6(0x406)](_0x47091e['x'])||!Number[_0x59f9e6(0x406)](_0x47091e['y'])||!Number[_0x59f9e6(0x406)](_0x47091e['z'])||_0x47091e['x']<0x0||_0x47091e['x']>=_0x1ec84b[_0x59f9e6(0x10b)]||_0x47091e['y']<0x0||_0x47091e['y']>=_0x1ec84b[_0x59f9e6(0x30d)]||_0x47091e['z']<0x0||_0x47091e['z']>=_0x1ec84b[_0x59f9e6(0x17a)])throw Error(_0x59f9e6(0x39f));let _0x4f8bb2=_0x47091e['x']*_0x1ec84b[_0x59f9e6(0x39b)][_0x59f9e6(0x274)],_0x2c1b00=_0x47091e['y']*_0x1ec84b[_0x59f9e6(0x39b)][_0x59f9e6(0x1c0)],_0x423be6=_0x47091e['z']*_0x1ec84b[_0x59f9e6(0x39b)][_0x59f9e6(0xc8)],_0x4fe081=Math[_0x59f9e6(0x3ce)](_0x1ec84b[_0x59f9e6(0x39b)]['width'],_0x206d91['xAxis']['count']-_0x4f8bb2),_0x45e923=Math[_0x59f9e6(0x3ce)](_0x1ec84b[_0x59f9e6(0x39b)][_0x59f9e6(0x1c0)],_0x206d91[_0x59f9e6(0x185)][_0x59f9e6(0x2e2)]-_0x2c1b00),_0x2efce4=Math[_0x59f9e6(0x3ce)](_0x1ec84b[_0x59f9e6(0x39b)][_0x59f9e6(0xc8)],_0x206d91[_0x59f9e6(0x271)][_0x59f9e6(0x2e2)]-_0x423be6),_0x26082a=_0x1ec84b[_0x59f9e6(0x39b)]['halo'],_0x207337=Math[_0x59f9e6(0x3b1)](0x0,_0x4f8bb2-_0x26082a),_0x2bd7f4=Math[_0x59f9e6(0x3b1)](0x0,_0x2c1b00-_0x26082a),_0x3527ff=Math[_0x59f9e6(0x3b1)](0x0,_0x423be6-_0x26082a),_0x2a207b=Math[_0x59f9e6(0x3ce)](_0x206d91[_0x59f9e6(0x3a3)][_0x59f9e6(0x2e2)],_0x4f8bb2+_0x4fe081+_0x26082a),_0x339f07=Math['min'](_0x206d91['yAxis'][_0x59f9e6(0x2e2)],_0x2c1b00+_0x45e923+_0x26082a),_0x28f968=Math['min'](_0x206d91[_0x59f9e6(0x271)][_0x59f9e6(0x2e2)],_0x423be6+_0x2efce4+_0x26082a),_0x347533=_0x1ec84b[_0x59f9e6(0x39b)]['width']+_0x26082a*0x2,_0x3fb45d=_0x1ec84b[_0x59f9e6(0x39b)][_0x59f9e6(0x1c0)]+_0x26082a*0x2,_0x4fbff6=_0x1ec84b[_0x59f9e6(0x39b)][_0x59f9e6(0xc8)]+_0x26082a*0x2;return{'key':createVolumeBrickKey(_0x47091e),'coordinate':_0x47091e,'coreRange':{'xStart':_0x4f8bb2,'xCount':_0x4fe081,'levelStart':_0x2c1b00,'levelCount':_0x45e923,'sourceYStart':_0x423be6,'sourceYCount':_0x2efce4},'readRange':{'xStart':_0x207337,'xCount':_0x2a207b-_0x207337,'levelStart':_0x2bd7f4,'levelCount':_0x339f07-_0x2bd7f4,'sourceYStart':_0x3527ff,'sourceYCount':_0x28f968-_0x3527ff},'physicalWidth':_0x347533,'physicalHeight':_0x3fb45d,'physicalDepth':_0x4fbff6,'byteLength':_0x347533*_0x3fb45d*_0x4fbff6*Float32Array[_0x59f9e6(0x385)]};},createVolumeBrickDescriptors=(_0x2839c8,_0x25221d)=>{const _0x33048e=_0x2e1660;let _0x44df2a=[];for(let _0x3a93fe=0x0;_0x3a93fe<_0x25221d['countZ'];_0x3a93fe+=0x1)for(let _0x20c370=0x0;_0x20c370<_0x25221d[_0x33048e(0x30d)];_0x20c370+=0x1)for(let _0x3a7a60=0x0;_0x3a7a60<_0x25221d[_0x33048e(0x10b)];_0x3a7a60+=0x1)_0x44df2a[_0x33048e(0x3aa)](createVolumeBrickDescriptor(_0x2839c8,_0x25221d,{'x':_0x3a7a60,'y':_0x20c370,'z':_0x3a93fe}));return _0x44df2a;},EPSILON=1e-8,createMatrix=()=>new Float32Array(0x10),dotVector3=(_0x2975c7,_0x33d274)=>_0x2975c7[0x0]*_0x33d274[0x0]+_0x2975c7[0x1]*_0x33d274[0x1]+_0x2975c7[0x2]*_0x33d274[0x2],subtractVector3=(_0x2f9797,_0x547bf4)=>[_0x2f9797[0x0]-_0x547bf4[0x0],_0x2f9797[0x1]-_0x547bf4[0x1],_0x2f9797[0x2]-_0x547bf4[0x2]],crossVector3=(_0x3cba6a,_0x10717c)=>[_0x3cba6a[0x1]*_0x10717c[0x2]-_0x3cba6a[0x2]*_0x10717c[0x1],_0x3cba6a[0x2]*_0x10717c[0x0]-_0x3cba6a[0x0]*_0x10717c[0x2],_0x3cba6a[0x0]*_0x10717c[0x1]-_0x3cba6a[0x1]*_0x10717c[0x0]],normalizeVector3=_0x3edcd2=>{const _0x2ce4de=_0x2e1660;let _0x2db87e=Math[_0x2ce4de(0x305)](_0x3edcd2[0x0],_0x3edcd2[0x1],_0x3edcd2[0x2]);if(_0x2db87e<=EPSILON)throw Error(_0x2ce4de(0x210));return[_0x3edcd2[0x0]/_0x2db87e,_0x3edcd2[0x1]/_0x2db87e,_0x3edcd2[0x2]/_0x2db87e];},createIdentityMatrix=()=>{let _0x250278=createMatrix();return _0x250278[0x0]=0x1,_0x250278[0x5]=0x1,_0x250278[0xa]=0x1,_0x250278[0xf]=0x1,_0x250278;},multiplyMatrices=(_0xcdf0b7,_0x95016e)=>{let _0x309377=createMatrix();for(let _0x3eb115=0x0;_0x3eb115<0x4;_0x3eb115+=0x1)for(let _0x3568d3=0x0;_0x3568d3<0x4;_0x3568d3+=0x1){let _0x41e3bd=0x0;for(let _0x69e1f1=0x0;_0x69e1f1<0x4;_0x69e1f1+=0x1)_0x41e3bd+=_0xcdf0b7[_0x69e1f1*0x4+_0x3568d3]*_0x95016e[_0x3eb115*0x4+_0x69e1f1];_0x309377[_0x3eb115*0x4+_0x3568d3]=_0x41e3bd;}return _0x309377;},invertMatrix=_0x127583=>{const _0x3e1837=_0x2e1660;let _0x2f0101=Array['from']({'length':0x4},(_0x24bdd1,_0x59d0a0)=>{let _0x25d207=new Float64Array(0x8);for(let _0x26a4e0=0x0;_0x26a4e0<0x4;_0x26a4e0+=0x1)_0x25d207[_0x26a4e0]=_0x127583[_0x26a4e0*0x4+_0x59d0a0];return _0x25d207[_0x59d0a0+0x4]=0x1,_0x25d207;});for(let _0x552cf4=0x0;_0x552cf4<0x4;_0x552cf4+=0x1){let _0x367b88=_0x552cf4;for(let _0xb59bd5=_0x552cf4+0x1;_0xb59bd5<0x4;_0xb59bd5+=0x1)Math[_0x3e1837(0x193)](_0x2f0101[_0xb59bd5][_0x552cf4])>Math[_0x3e1837(0x193)](_0x2f0101[_0x367b88][_0x552cf4])&&(_0x367b88=_0xb59bd5);if(Math[_0x3e1837(0x193)](_0x2f0101[_0x367b88][_0x552cf4])<=EPSILON)throw Error(_0x3e1837(0x3dd));_0x367b88!==_0x552cf4&&([_0x2f0101[_0x552cf4],_0x2f0101[_0x367b88]]=[_0x2f0101[_0x367b88],_0x2f0101[_0x552cf4]]);let _0x389020=_0x2f0101[_0x552cf4][_0x552cf4];for(let _0x5baf4a=0x0;_0x5baf4a<0x8;_0x5baf4a+=0x1)_0x2f0101[_0x552cf4][_0x5baf4a]/=_0x389020;for(let _0x553dd0=0x0;_0x553dd0<0x4;_0x553dd0+=0x1){if(_0x553dd0===_0x552cf4)continue;let _0x4e821e=_0x2f0101[_0x553dd0][_0x552cf4];for(let _0x4ef0ed=0x0;_0x4ef0ed<0x8;_0x4ef0ed+=0x1)_0x2f0101[_0x553dd0][_0x4ef0ed]-=_0x4e821e*_0x2f0101[_0x552cf4][_0x4ef0ed];}}let _0x48878c=createMatrix();for(let _0x164ac=0x0;_0x164ac<0x4;_0x164ac+=0x1)for(let _0x55cf90=0x0;_0x55cf90<0x4;_0x55cf90+=0x1)_0x48878c[_0x55cf90*0x4+_0x164ac]=_0x2f0101[_0x164ac][_0x55cf90+0x4];return _0x48878c;},createLookAtMatrix=(_0x224748,_0x186510,_0x163742)=>{let _0xdb3942=normalizeVector3(subtractVector3(_0x224748,_0x186510)),_0x410c6b=normalizeVector3(crossVector3(_0x163742,_0xdb3942)),_0x14007d=crossVector3(_0xdb3942,_0x410c6b),_0x4e2777=createIdentityMatrix();return _0x4e2777[0x0]=_0x410c6b[0x0],_0x4e2777[0x1]=_0x14007d[0x0],_0x4e2777[0x2]=_0xdb3942[0x0],_0x4e2777[0x4]=_0x410c6b[0x1],_0x4e2777[0x5]=_0x14007d[0x1],_0x4e2777[0x6]=_0xdb3942[0x1],_0x4e2777[0x8]=_0x410c6b[0x2],_0x4e2777[0x9]=_0x14007d[0x2],_0x4e2777[0xa]=_0xdb3942[0x2],_0x4e2777[0xc]=-dotVector3(_0x410c6b,_0x224748),_0x4e2777[0xd]=-dotVector3(_0x14007d,_0x224748),_0x4e2777[0xe]=-dotVector3(_0xdb3942,_0x224748),_0x4e2777;},createPerspectiveMatrix=(_0x170b08,_0x2e2d46,_0x1f3dbf,_0x491d80)=>{const _0x192e4f=_0x2e1660;if(!(_0x170b08>0x0&&_0x170b08<Math['PI']))throw Error(_0x192e4f(0xf0));if(!(_0x2e2d46>0x0))throw Error('相机宽高比必须大于\x200。');if(!(_0x1f3dbf>0x0&&_0x491d80>_0x1f3dbf))throw Error(_0x192e4f(0x1f1));let _0x15a21d=0x1/Math[_0x192e4f(0x3fe)](_0x170b08/0x2),_0xb2bfc7=createMatrix();return _0xb2bfc7[0x0]=_0x15a21d/_0x2e2d46,_0xb2bfc7[0x5]=_0x15a21d,_0xb2bfc7[0xa]=_0x491d80/(_0x1f3dbf-_0x491d80),_0xb2bfc7[0xb]=-0x1,_0xb2bfc7[0xe]=_0x1f3dbf*_0x491d80/(_0x1f3dbf-_0x491d80),_0xb2bfc7;},createOrthographicMatrix=(_0x9a3cde,_0x3cb36f,_0x4a1174,_0x462a7b)=>{const _0x1136bf=_0x2e1660;if(!(_0x9a3cde>0x0&&_0x3cb36f>0x0))throw Error(_0x1136bf(0x13d));if(!(_0x4a1174>=0x0&&_0x462a7b>_0x4a1174))throw Error(_0x1136bf(0x29c));let _0x38acd0=_0x9a3cde*_0x3cb36f,_0x4ffb20=createIdentityMatrix();return _0x4ffb20[0x0]=0x2/_0x38acd0,_0x4ffb20[0x5]=0x2/_0x9a3cde,_0x4ffb20[0xa]=0x1/(_0x4a1174-_0x462a7b),_0x4ffb20[0xe]=_0x4a1174/(_0x4a1174-_0x462a7b),_0x4ffb20;},createScaleMatrix=(_0x3be41c,_0x4bbbba,_0x23be89)=>{let _0x2b8de0=createIdentityMatrix();return _0x2b8de0[0x0]=_0x3be41c,_0x2b8de0[0x5]=_0x4bbbba,_0x2b8de0[0xa]=_0x23be89,_0x2b8de0;},composeVolumeModelMatrix=(_0xe1d71b,_0x1e555e)=>{const _0x29bc8b=_0x2e1660;if(!(_0x1e555e>0x0)||!Number[_0x29bc8b(0x2c4)](_0x1e555e))throw Error(_0x29bc8b(0x123));let _0x1f7cd2=createScaleMatrix(0x1,_0x1e555e,0x1);return _0xe1d71b?multiplyMatrices(_0xe1d71b,_0x1f7cd2):_0x1f7cd2;},transformPoint=(_0x336778,_0x308ac0,_0x562bd8=0x1)=>[_0x336778[0x0]*_0x308ac0[0x0]+_0x336778[0x4]*_0x308ac0[0x1]+_0x336778[0x8]*_0x308ac0[0x2]+_0x336778[0xc]*_0x562bd8,_0x336778[0x1]*_0x308ac0[0x0]+_0x336778[0x5]*_0x308ac0[0x1]+_0x336778[0x9]*_0x308ac0[0x2]+_0x336778[0xd]*_0x562bd8,_0x336778[0x2]*_0x308ac0[0x0]+_0x336778[0x6]*_0x308ac0[0x1]+_0x336778[0xa]*_0x308ac0[0x2]+_0x336778[0xe]*_0x562bd8,_0x336778[0x3]*_0x308ac0[0x0]+_0x336778[0x7]*_0x308ac0[0x1]+_0x336778[0xb]*_0x308ac0[0x2]+_0x336778[0xf]*_0x562bd8],projectPointToViewport=(_0x24d331,_0x2a6b76,_0x3c7cf9,_0x3aafab)=>{let _0x4b7a6c=transformPoint(_0x24d331,_0x2a6b76);if(_0x4b7a6c[0x3]<=EPSILON)return null;let _0x336334=0x1/_0x4b7a6c[0x3];return[(_0x4b7a6c[0x0]*_0x336334*0.5+0.5)*_0x3c7cf9,(0.5-_0x4b7a6c[0x1]*_0x336334*0.5)*_0x3aafab,_0x4b7a6c[0x2]*_0x336334];},DEFAULT_POSITION=[0x0,0x1,0x2],DEFAULT_TARGET=[0x0,0x0,0x0],DEFAULT_UP=[0x0,0x1,0x0],DEFAULT_PROJECTION={'type':_0x2e1660(0x219),'fovYDegrees':0x2d,'near':0.01,'far':0x2710},DEGREE_TO_RADIAN=Math['PI']/0xb4,cloneVector=_0x5cec44=>[_0x5cec44[0x0],_0x5cec44[0x1],_0x5cec44[0x2]],cloneProjection=_0xcabfd0=>(_0xcabfd0[_0x2e1660(0x208)],{..._0xcabfd0}),cloneState=_0x4148=>({'position':cloneVector(_0x4148['position']),'target':cloneVector(_0x4148['target']),'up':cloneVector(_0x4148['up']),'projection':cloneProjection(_0x4148[_0x2e1660(0x1e6)])}),subtractVector=(_0x198e31,_0x41d482)=>[_0x198e31[0x0]-_0x41d482[0x0],_0x198e31[0x1]-_0x41d482[0x1],_0x198e31[0x2]-_0x41d482[0x2]],addVector=(_0x8ceca6,_0x22c2ca)=>[_0x8ceca6[0x0]+_0x22c2ca[0x0],_0x8ceca6[0x1]+_0x22c2ca[0x1],_0x8ceca6[0x2]+_0x22c2ca[0x2]],scaleVector=(_0xc6474d,_0x43ff61)=>[_0xc6474d[0x0]*_0x43ff61,_0xc6474d[0x1]*_0x43ff61,_0xc6474d[0x2]*_0x43ff61],crossVector$1=(_0xe156fb,_0x3e3e52)=>[_0xe156fb[0x1]*_0x3e3e52[0x2]-_0xe156fb[0x2]*_0x3e3e52[0x1],_0xe156fb[0x2]*_0x3e3e52[0x0]-_0xe156fb[0x0]*_0x3e3e52[0x2],_0xe156fb[0x0]*_0x3e3e52[0x1]-_0xe156fb[0x1]*_0x3e3e52[0x0]],normalizeVector$1=_0x7d05e8=>{const _0x531fe4=_0x2e1660;let _0x29f482=Math[_0x531fe4(0x305)](_0x7d05e8[0x0],_0x7d05e8[0x1],_0x7d05e8[0x2]);return _0x29f482===0x0?[0x0,0x0,0x0]:scaleVector(_0x7d05e8,0x1/_0x29f482);},clamp$1=(_0xa3288a,_0x25df05,_0x8c5288)=>Math[_0x2e1660(0x3ce)](_0x8c5288,Math['max'](_0x25df05,_0xa3288a)),validateProjection=_0x2212da=>{const _0x1e70db=_0x2e1660;if(!(_0x2212da['near']>=0x0&&_0x2212da[_0x1e70db(0x21f)]>_0x2212da[_0x1e70db(0x2d8)]))throw Error(_0x1e70db(0x29c));if(_0x2212da[_0x1e70db(0x208)]===_0x1e70db(0x219)&&!(_0x2212da[_0x1e70db(0x2d8)]>0x0&&_0x2212da[_0x1e70db(0x1d3)]>0x0&&_0x2212da[_0x1e70db(0x1d3)]<0xb4))throw Error('透视相机参数无效。');if(_0x2212da[_0x1e70db(0x208)]===_0x1e70db(0x302)&&!(_0x2212da[_0x1e70db(0x1c0)]>0x0))throw Error(_0x1e70db(0x3db));},resolveInitialState=_0x46cf8b=>{const _0x32c3de=_0x2e1660;let _0xe31604={'position':_0x46cf8b[_0x32c3de(0x322)]?.['position']?cloneVector(_0x46cf8b[_0x32c3de(0x322)]['position']):cloneVector(DEFAULT_POSITION),'target':_0x46cf8b[_0x32c3de(0x322)]?.[_0x32c3de(0xda)]?cloneVector(_0x46cf8b[_0x32c3de(0x322)][_0x32c3de(0xda)]):cloneVector(DEFAULT_TARGET),'up':_0x46cf8b['state']?.['up']?cloneVector(_0x46cf8b[_0x32c3de(0x322)]['up']):cloneVector(DEFAULT_UP),'projection':_0x46cf8b[_0x32c3de(0x322)]?.[_0x32c3de(0x1e6)]?cloneProjection(_0x46cf8b[_0x32c3de(0x322)][_0x32c3de(0x1e6)]):cloneProjection(DEFAULT_PROJECTION)};return validateProjection(_0xe31604[_0x32c3de(0x1e6)]),_0xe31604;};function _0x2b0a(_0x501aa2,_0x4c590c){const _0x1938f0=_0x1938();return _0x2b0a=function(_0x2b0a87,_0x1b4013){_0x2b0a87=_0x2b0a87-0xc2;let _0x511778=_0x1938f0[_0x2b0a87];return _0x511778;},_0x2b0a(_0x501aa2,_0x4c590c);}var VolumeCamera=class{[_0x2e1660(0x358)];['aspect'];['rotateSpeed'];[_0x2e1660(0x1eb)];[_0x2e1660(0x144)];[_0x2e1660(0xd3)];[_0x2e1660(0x353)];[_0x2e1660(0x3e1)];[_0x2e1660(0x213)];constructor(_0x149de2={}){const _0xb581b3=_0x2e1660;if(this[_0xb581b3(0x358)]=resolveInitialState(_0x149de2),this[_0xb581b3(0x1f7)]=_0x149de2[_0xb581b3(0x1f7)]??0x1,this[_0xb581b3(0x26d)]=_0x149de2[_0xb581b3(0x26d)]??0.005,this[_0xb581b3(0x1eb)]=_0x149de2[_0xb581b3(0x1eb)]??0x1,this['zoomSpeed']=_0x149de2[_0xb581b3(0x144)]??0.0015,this[_0xb581b3(0xd3)]=_0x149de2[_0xb581b3(0xd3)]??0.001,this['maximumDistance']=_0x149de2['maximumDistance']??0x1/0x0,this[_0xb581b3(0x3e1)]=(_0x149de2[_0xb581b3(0x2e8)]??-0x59)*DEGREE_TO_RADIAN,this['maximumPitch']=(_0x149de2[_0xb581b3(0x1df)]??0x59)*DEGREE_TO_RADIAN,!(this[_0xb581b3(0x1f7)]>0x0))throw Error(_0xb581b3(0x2ca));}get['state'](){const _0x114747=_0x2e1660;return cloneState(this[_0x114747(0x358)]);}get[_0x2e1660(0x3a4)](){const _0x115b16=_0x2e1660;let _0x591324=createLookAtMatrix(this[_0x115b16(0x358)]['position'],this[_0x115b16(0x358)][_0x115b16(0xda)],this[_0x115b16(0x358)]['up']),_0xd5f9ee=this[_0x115b16(0x125)](),_0x4a05aa=multiplyMatrices(_0xd5f9ee,_0x591324);return{'view':_0x591324,'projection':_0xd5f9ee,'viewProjection':_0x4a05aa,'inverseViewProjection':invertMatrix(_0x4a05aa)};}['setState'](_0x2e67e6){const _0xd0d9c0=_0x2e1660;validateProjection(_0x2e67e6['projection']),this[_0xd0d9c0(0x358)]=cloneState(_0x2e67e6);}['setAspect'](_0x409846){const _0x23178b=_0x2e1660;if(!(_0x409846>0x0)||!Number[_0x23178b(0x2c4)](_0x409846))throw Error(_0x23178b(0x25e));this[_0x23178b(0x1f7)]=_0x409846;}[_0x2e1660(0x119)](_0x30402a){const _0x255ed8=_0x2e1660;if(_0x30402a===this['cameraState'][_0x255ed8(0x1e6)][_0x255ed8(0x208)])return;let _0x4fac10=Math['hypot'](...subtractVector(this[_0x255ed8(0x358)][_0x255ed8(0x154)],this[_0x255ed8(0x358)]['target']));if(_0x30402a==='orthographic'){let _0x1f24c8=this[_0x255ed8(0x358)]['projection'],_0x1553c3=_0x1f24c8[_0x255ed8(0x208)]===_0x255ed8(0x219)?_0x1f24c8[_0x255ed8(0x1d3)]*DEGREE_TO_RADIAN:0x2d*DEGREE_TO_RADIAN;this[_0x255ed8(0x358)][_0x255ed8(0x1e6)]={'type':_0x30402a,'height':0x2*_0x4fac10*Math[_0x255ed8(0x3fe)](_0x1553c3/0x2),'near':_0x1f24c8[_0x255ed8(0x2d8)],'far':_0x1f24c8[_0x255ed8(0x21f)]};return;}let _0x3b2e49=this[_0x255ed8(0x358)][_0x255ed8(0x1e6)],_0x4d741c=_0x3b2e49[_0x255ed8(0x208)]===_0x255ed8(0x302)?_0x3b2e49[_0x255ed8(0x1c0)]/(0x2*Math[_0x255ed8(0x3fe)](0x2d*DEGREE_TO_RADIAN/0x2)):_0x4fac10,_0x2a4a07=normalizeVector$1(subtractVector(this[_0x255ed8(0x358)]['position'],this[_0x255ed8(0x358)][_0x255ed8(0xda)]));this[_0x255ed8(0x358)][_0x255ed8(0x154)]=addVector(this[_0x255ed8(0x358)][_0x255ed8(0xda)],scaleVector(_0x2a4a07,_0x4d741c)),this[_0x255ed8(0x358)][_0x255ed8(0x1e6)]={'type':_0x30402a,'fovYDegrees':0x2d,'near':_0x3b2e49[_0x255ed8(0x2d8)],'far':_0x3b2e49['far']};}[_0x2e1660(0x16e)](_0x1b5f04,_0x1ea92d){const _0x58f690=_0x2e1660;let _0x59f7f6=subtractVector(this[_0x58f690(0x358)][_0x58f690(0x154)],this['cameraState'][_0x58f690(0xda)]),_0x4436ec=Math[_0x58f690(0x305)](..._0x59f7f6);if(_0x4436ec===0x0)return;let _0x195ce6=Math[_0x58f690(0x333)](_0x59f7f6[0x0],_0x59f7f6[0x2])-_0x1b5f04*this[_0x58f690(0x26d)],_0x4aa409=clamp$1(Math[_0x58f690(0x344)](_0x59f7f6[0x1]/_0x4436ec)+_0x1ea92d*this[_0x58f690(0x26d)],this['minimumPitch'],this[_0x58f690(0x213)]),_0x5e1787=Math[_0x58f690(0x254)](_0x4aa409)*_0x4436ec;this[_0x58f690(0x358)][_0x58f690(0x154)]=addVector(this['cameraState'][_0x58f690(0xda)],[Math[_0x58f690(0x2f5)](_0x195ce6)*_0x5e1787,Math[_0x58f690(0x2f5)](_0x4aa409)*_0x4436ec,Math[_0x58f690(0x254)](_0x195ce6)*_0x5e1787]);}[_0x2e1660(0x37e)](_0x2f301e,_0x3c0951,_0x6abdd3){const _0x182435=_0x2e1660;if(!(_0x6abdd3>0x0))return;let _0x5433cb=normalizeVector$1(subtractVector(this[_0x182435(0x358)][_0x182435(0xda)],this[_0x182435(0x358)][_0x182435(0x154)])),_0x4696d6=normalizeVector$1(crossVector$1(_0x5433cb,this[_0x182435(0x358)]['up'])),_0x264c37=normalizeVector$1(crossVector$1(_0x4696d6,_0x5433cb)),_0x5984b9=Math[_0x182435(0x305)](...subtractVector(this[_0x182435(0x358)][_0x182435(0x154)],this[_0x182435(0x358)][_0x182435(0xda)])),_0x3e8800=(this[_0x182435(0x358)][_0x182435(0x1e6)][_0x182435(0x208)]===_0x182435(0x302)?this[_0x182435(0x358)][_0x182435(0x1e6)]['height']:0x2*_0x5984b9*Math[_0x182435(0x3fe)](this[_0x182435(0x358)][_0x182435(0x1e6)][_0x182435(0x1d3)]*DEGREE_TO_RADIAN/0x2))/_0x6abdd3*this[_0x182435(0x1eb)],_0xe12bd4=addVector(scaleVector(_0x4696d6,-_0x2f301e*_0x3e8800),scaleVector(_0x264c37,_0x3c0951*_0x3e8800));this[_0x182435(0x358)]['position']=addVector(this[_0x182435(0x358)]['position'],_0xe12bd4),this[_0x182435(0x358)][_0x182435(0xda)]=addVector(this['cameraState'][_0x182435(0xda)],_0xe12bd4);}[_0x2e1660(0x2e4)](_0x2b6d39){const _0x21ac38=_0x2e1660;let _0x24a2d5=Math[_0x21ac38(0x340)](_0x2b6d39*this[_0x21ac38(0x144)]);if(this['cameraState'][_0x21ac38(0x1e6)][_0x21ac38(0x208)]===_0x21ac38(0x302)){this[_0x21ac38(0x358)][_0x21ac38(0x1e6)]={...this[_0x21ac38(0x358)][_0x21ac38(0x1e6)],'height':Math['max'](this['minimumDistance'],this['cameraState'][_0x21ac38(0x1e6)]['height']*_0x24a2d5)};return;}let _0x2ea92c=subtractVector(this[_0x21ac38(0x358)][_0x21ac38(0x154)],this[_0x21ac38(0x358)][_0x21ac38(0xda)]),_0x60029f=clamp$1(Math[_0x21ac38(0x305)](..._0x2ea92c)*_0x24a2d5,this['minimumDistance'],this[_0x21ac38(0x353)]);this[_0x21ac38(0x358)][_0x21ac38(0x154)]=addVector(this[_0x21ac38(0x358)]['target'],scaleVector(normalizeVector$1(_0x2ea92c),_0x60029f));}[_0x2e1660(0x125)](){const _0x774c75=_0x2e1660;let _0x222007=this[_0x774c75(0x358)]['projection'];return _0x222007[_0x774c75(0x208)]==='perspective'?createPerspectiveMatrix(_0x222007['fovYDegrees']*DEGREE_TO_RADIAN,this[_0x774c75(0x1f7)],_0x222007[_0x774c75(0x2d8)],_0x222007['far']):createOrthographicMatrix(_0x222007[_0x774c75(0x1c0)],this['aspect'],_0x222007[_0x774c75(0x2d8)],_0x222007[_0x774c75(0x21f)]);}};const isMissingValue=(_0x24079a,_0x14d3b4)=>Number['isNaN'](_0x24079a)||_0x14d3b4!==void 0x0&&_0x24079a===_0x14d3b4,axisValueToNormalized=(_0x54d6fa,_0x380a32)=>_0x54d6fa[_0x2e1660(0x2ce)]===_0x54d6fa[_0x2e1660(0x209)]?0x0:(_0x380a32-_0x54d6fa[_0x2e1660(0x2ce)])/(_0x54d6fa[_0x2e1660(0x209)]-_0x54d6fa['start']),validateProfile=_0xc6721f=>{const _0x55f807=_0x2e1660;if(!_0xc6721f['id'])throw Error('路线剖面\x20id\x20不能为空。');if(_0xc6721f[_0x55f807(0x381)][_0x55f807(0x37f)]<0x4||_0xc6721f[_0x55f807(0x381)]['length']%0x2!=0x0)throw Error(_0x55f807(0x416)+_0xc6721f['id']+_0x55f807(0x3c5));if(_0xc6721f[_0x55f807(0x3e7)]['length']<0x2)throw Error('路线剖面\x20'+_0xc6721f['id']+'\x20至少需要两个高度层。');let _0x38e173=_0xc6721f[_0x55f807(0x381)][_0x55f807(0x37f)]/0x2;if(_0xc6721f[_0x55f807(0x21e)][_0x55f807(0x37f)]!==_0x38e173*_0xc6721f[_0x55f807(0x3e7)]['length'])throw Error(_0x55f807(0x416)+_0xc6721f['id']+_0x55f807(0x2a5));if(_0xc6721f[_0x55f807(0x211)]!==void 0x0&&(!(_0xc6721f[_0x55f807(0x211)]>=0x0&&_0xc6721f[_0x55f807(0x211)]<=0x1)||!Number[_0x55f807(0x2c4)](_0xc6721f[_0x55f807(0x211)])))throw Error(_0x55f807(0x416)+_0xc6721f['id']+_0x55f807(0x169));for(let _0x54c44d of _0xc6721f['path'])if(!Number['isFinite'](_0x54c44d))throw Error(_0x55f807(0x416)+_0xc6721f['id']+_0x55f807(0x14c));for(let _0x343b67 of _0xc6721f[_0x55f807(0x3e7)])if(!Number['isFinite'](_0x343b67))throw Error(_0x55f807(0x416)+_0xc6721f['id']+'\x20的\x20heights\x20包含非有限高度。');return _0x38e173;},createPositions=(_0x489635,_0x39d263,_0x5e577b)=>{const _0x1583b6=_0x2e1660;let _0xb50225=new Float32Array(_0x39d263*_0x489635[_0x1583b6(0x3e7)][_0x1583b6(0x37f)]*0x3);for(let _0x520bbb=0x0;_0x520bbb<_0x489635[_0x1583b6(0x3e7)][_0x1583b6(0x37f)];_0x520bbb+=0x1)for(let _0x170c48=0x0;_0x170c48<_0x39d263;_0x170c48+=0x1){let _0x21358b=(_0x520bbb*_0x39d263+_0x170c48)*0x3;_0xb50225[_0x21358b]=axisValueToNormalized(_0x5e577b[_0x1583b6(0x3a3)],_0x489635['path'][_0x170c48*0x2]),_0xb50225[_0x21358b+0x1]=axisValueToNormalized(_0x5e577b[_0x1583b6(0x185)],_0x489635['heights'][_0x520bbb]),_0xb50225[_0x21358b+0x2]=axisValueToNormalized(_0x5e577b[_0x1583b6(0x271)],_0x489635[_0x1583b6(0x381)][_0x170c48*0x2+0x1]);}return _0xb50225;},createValues=_0x182469=>{const _0x545e6f=_0x2e1660;let _0x30bac4=new Float32Array(_0x182469[_0x545e6f(0x21e)][_0x545e6f(0x37f)]);for(let _0x30adcb=0x0;_0x30adcb<_0x182469[_0x545e6f(0x21e)][_0x545e6f(0x37f)];_0x30adcb+=0x1){let _0x3157a8=_0x182469[_0x545e6f(0x21e)][_0x30adcb];_0x30bac4[_0x30adcb]=isMissingValue(_0x3157a8,_0x182469[_0x545e6f(0x27a)])?NaN:_0x3157a8;}return _0x30bac4;},createIndices=(_0x518330,_0x3211c1)=>{let _0x566a8f=new Uint32Array((_0x518330-0x1)*(_0x3211c1-0x1)*0x6),_0x4ec216=0x0;for(let _0x531326=0x0;_0x531326<_0x3211c1-0x1;_0x531326+=0x1)for(let _0x20c5d8=0x0;_0x20c5d8<_0x518330-0x1;_0x20c5d8+=0x1){let _0x4bc498=_0x531326*_0x518330+_0x20c5d8,_0x297ea8=_0x4bc498+0x1,_0x5228d7=_0x4bc498+_0x518330,_0xa3fb6=_0x5228d7+0x1;_0x566a8f[_0x4ec216]=_0x4bc498,_0x566a8f[_0x4ec216+0x1]=_0x297ea8,_0x566a8f[_0x4ec216+0x2]=_0x5228d7,_0x566a8f[_0x4ec216+0x3]=_0x5228d7,_0x566a8f[_0x4ec216+0x4]=_0x297ea8,_0x566a8f[_0x4ec216+0x5]=_0xa3fb6,_0x4ec216+=0x6;}return _0x566a8f;},buildVolumeRouteProfileMesh=(_0xcd3511,_0x104fa4)=>{const _0x16e899=_0x2e1660;let _0x298f38=validateProfile(_0xcd3511);return{'id':_0xcd3511['id'],'positions':createPositions(_0xcd3511,_0x298f38,_0x104fa4),'values':createValues(_0xcd3511),'indices':createIndices(_0x298f38,_0xcd3511['heights'][_0x16e899(0x37f)]),'opacity':_0xcd3511[_0x16e899(0x211)]??0x1,'depthMode':_0xcd3511[_0x16e899(0x155)]??_0x16e899(0x17e),'revision':_0xcd3511[_0x16e899(0x3bc)]};};var volumeRaymarch_default=_0x2e1660(0x3f6),sceneMesh_default=_0x2e1660(0x374),volumeSlice_default=_0x2e1660(0x3d7);const validateMetadata=_0x55b413=>{const _0x4e34ac=_0x2e1660;if([_0x55b413['xAxis'][_0x4e34ac(0x2e2)],_0x55b413[_0x4e34ac(0x185)]['count'],_0x55b413['zAxis'][_0x4e34ac(0x2e2)],_0x55b413[_0x4e34ac(0x16b)],_0x55b413[_0x4e34ac(0x11b)],_0x55b413[_0x4e34ac(0x2cc)]]['some'](_0x529d07=>!Number[_0x4e34ac(0x406)](_0x529d07)||_0x529d07<=0x0))throw Error(_0x4e34ac(0xf4));if(_0x55b413['halo']!==0x1)throw Error(_0x4e34ac(0x38c));},getBrickCount=_0x2d14f5=>[Math[_0x2e1660(0x32e)](_0x2d14f5['xAxis'][_0x2e1660(0x2e2)]/_0x2d14f5[_0x2e1660(0x16b)]),Math[_0x2e1660(0x32e)](_0x2d14f5[_0x2e1660(0x185)][_0x2e1660(0x2e2)]/_0x2d14f5[_0x2e1660(0x11b)]),Math['ceil'](_0x2d14f5[_0x2e1660(0x271)]['count']/_0x2d14f5[_0x2e1660(0x2cc)])],getLogicalBrickCoordinate=(_0x11d049,_0x5ce10b)=>{const _0x2b4780=_0x2e1660;let _0xff4284=_0x5ce10b[0x0]*_0x5ce10b[0x1],_0x5e7b09=Math[_0x2b4780(0x315)](_0x11d049/_0xff4284),_0x2acd21=_0x11d049-_0x5e7b09*_0xff4284,_0x292fcb=Math['floor'](_0x2acd21/_0x5ce10b[0x0]);return[_0x2acd21-_0x292fcb*_0x5ce10b[0x0],_0x292fcb,_0x5e7b09];},analyzeBrickOccupancy=(_0x4019e1,_0x357f8e,_0x543bc3)=>{const _0x5399b7=_0x2e1660;let _0x29811d=_0x357f8e[_0x5399b7(0x16b)]+0x2,_0x313297=_0x357f8e['brickHeight']+0x2,_0x6417d=getLogicalBrickCoordinate(_0x4019e1[_0x5399b7(0x2f1)],_0x543bc3),_0x39d69e=Math[_0x5399b7(0x3ce)](_0x357f8e['brickWidth'],_0x357f8e['xAxis'][_0x5399b7(0x2e2)]-_0x6417d[0x0]*_0x357f8e[_0x5399b7(0x16b)]),_0x3c0928=Math[_0x5399b7(0x3ce)](_0x357f8e[_0x5399b7(0x11b)],_0x357f8e['yAxis'][_0x5399b7(0x2e2)]-_0x6417d[0x1]*_0x357f8e[_0x5399b7(0x11b)]),_0xc6250e=Math[_0x5399b7(0x3ce)](_0x357f8e[_0x5399b7(0x2cc)],_0x357f8e[_0x5399b7(0x271)][_0x5399b7(0x2e2)]-_0x6417d[0x2]*_0x357f8e[_0x5399b7(0x2cc)]);for(let _0x6a83b4=0x0;_0x6a83b4<_0xc6250e;_0x6a83b4+=0x1)for(let _0x3dce08=0x0;_0x3dce08<_0x3c0928;_0x3dce08+=0x1){let _0x4e1302=((_0x6a83b4+0x1)*_0x313297+_0x3dce08+0x1)*_0x29811d+0x1;for(let _0x12db5a=0x0;_0x12db5a<_0x39d69e;_0x12db5a+=0x1){let _0x3ea6db=_0x4019e1[_0x5399b7(0x21e)][_0x4e1302+_0x12db5a];if(_0x3ea6db===_0x3ea6db&&(_0x357f8e['noData']===void 0x0||_0x3ea6db!==_0x357f8e['noData']))return{'occupied':!0x0,'coreSampleCount':_0x39d69e*_0x3c0928*_0xc6250e};}}return{'occupied':!0x1,'coreSampleCount':_0x39d69e*_0x3c0928*_0xc6250e};},findAtlasLayout=(_0x47d62e,_0x3e24d9,_0x38b68e,_0x1fae7f,_0xe828b9)=>{const _0x23b60b=_0x2e1660;if(_0x47d62e<=0x0)return null;let _0x1cc3a8=Math[_0x23b60b(0x315)](_0xe828b9/_0x3e24d9),_0x3d968b=Math[_0x23b60b(0x315)](_0xe828b9/_0x38b68e),_0x1229bd=Math['floor'](_0xe828b9/_0x1fae7f),_0x479a6e=null;for(let _0x52b1e2=0x1;_0x52b1e2<=_0x1cc3a8;_0x52b1e2+=0x1)for(let _0x37012b=0x1;_0x37012b<=_0x3d968b;_0x37012b+=0x1){let _0x3b1bc=Math[_0x23b60b(0x3ce)](_0x1229bd,Math[_0x23b60b(0x315)](_0x47d62e/(_0x52b1e2*_0x37012b))),_0x4da1b1=_0x52b1e2*_0x37012b*_0x3b1bc;_0x3b1bc<=0x0||_0x4da1b1<=(_0x479a6e?.[_0x23b60b(0x1ed)]??0x0)||(_0x479a6e={'slotCountX':_0x52b1e2,'slotCountY':_0x37012b,'slotCountZ':_0x3b1bc,'slotCount':_0x4da1b1,'textureCount':0x1,'capacity':_0x4da1b1});}return _0x479a6e;},getSlotCoordinate=(_0x3fef9d,_0x14e53a)=>{const _0x56fc81=_0x2e1660;let _0x45503d=_0x14e53a[_0x56fc81(0x35d)]*_0x14e53a['slotCountY'],_0x15aba3=Math[_0x56fc81(0x315)](_0x3fef9d/_0x45503d),_0x167d93=_0x3fef9d-_0x15aba3*_0x45503d,_0x2f7d79=Math[_0x56fc81(0x315)](_0x167d93/_0x14e53a['slotCountX']);return[_0x167d93-_0x2f7d79*_0x14e53a[_0x56fc81(0x35d)],_0x2f7d79,_0x15aba3];},findLeastRecentlyUsed=(_0x311d7a,_0x18e571)=>{const _0x4ef29d=_0x2e1660;let _0x59b536=null;for(let _0x1bedac of _0x311d7a)_0x1bedac[_0x4ef29d(0x3d4)]!==_0x18e571&&(!_0x59b536||_0x1bedac[_0x4ef29d(0x3d4)]<_0x59b536[_0x4ef29d(0x3d4)])&&(_0x59b536=_0x1bedac);return _0x59b536;},createPaddedTextureData=(_0x3e8b3f,_0x29a6cb,_0x123003,_0x589055)=>{const _0xf36f1e=_0x2e1660;let _0x1a8b59=_0x29a6cb*Float32Array[_0xf36f1e(0x385)],_0x990ab8=Math['ceil'](_0x1a8b59/0x100)*0x100;if(_0x1a8b59===_0x990ab8)return{'values':_0x3e8b3f,'bytesPerRow':_0x990ab8};let _0x44e545=_0x990ab8/Float32Array['BYTES_PER_ELEMENT'],_0x5e19a2=new Float32Array(_0x44e545*_0x123003*_0x589055);for(let _0x20e130=0x0;_0x20e130<_0x589055;_0x20e130+=0x1)for(let _0x4ef988=0x0;_0x4ef988<_0x123003;_0x4ef988+=0x1){let _0x19d683=(_0x20e130*_0x123003+_0x4ef988)*_0x29a6cb,_0x5cfc8a=(_0x20e130*_0x123003+_0x4ef988)*_0x44e545;_0x5e19a2[_0xf36f1e(0x105)](_0x3e8b3f[_0xf36f1e(0x2da)](_0x19d683,_0x19d683+_0x29a6cb),_0x5cfc8a);}return{'values':_0x5e19a2,'bytesPerRow':_0x990ab8};};var WebgpuBrickAtlas=class{[_0x2e1660(0x239)];[_0x2e1660(0x2a1)];[_0x2e1660(0x103)];['metadata']=null;[_0x2e1660(0x158)]=null;[_0x2e1660(0x17c)]=[];['atlasViews']=[];['pageTableBuffer']=null;[_0x2e1660(0x1d4)]=new Uint32Array();[_0x2e1660(0x1ae)]=new Map();['residentBySlotIndex']=new Map();[_0x2e1660(0x2fb)]=0x0;constructor(_0x40a5bc,_0x15911a=0x20000000,_0x23687f=_0x15911a){const _0x54e157=_0x2e1660;if(!Number[_0x54e157(0x2c4)](_0x15911a)||!Number[_0x54e157(0x2c4)](_0x23687f)||_0x15911a<=0x0||_0x23687f<=0x0)throw Error(_0x54e157(0x241));this['device']=_0x40a5bc,this[_0x54e157(0x2a1)]=Math[_0x54e157(0x3ce)](_0x15911a,_0x23687f),this[_0x54e157(0x103)]=_0x23687f;}get['volumeMetadata'](){const _0x94da60=_0x2e1660;if(!this[_0x94da60(0x246)])throw Error(_0x94da60(0x167));return this[_0x94da60(0x246)];}get[_0x2e1660(0xed)](){const _0x3476f5=_0x2e1660;if(!this['layout'])throw Error(_0x3476f5(0x37d));return this[_0x3476f5(0x158)];}get['residentBrickCount'](){const _0x485c48=_0x2e1660;return this[_0x485c48(0x1ae)][_0x485c48(0x234)];}get[_0x2e1660(0x311)](){const _0x1b5eeb=_0x2e1660;if(!this[_0x1b5eeb(0x246)]||!this[_0x1b5eeb(0x158)])return{'logicalBrickCount':0x0,'atlasCapacity':0x0,'gpuBytes':0x0,'memoryLimitBytes':this[_0x1b5eeb(0x103)],'budgetLimited':!0x1,'skippedSamples':0x0,'skippedCells':0x0};let _0x405c96=getBrickCount(this[_0x1b5eeb(0x246)]),_0x48d744=_0x405c96[0x0]*_0x405c96[0x1]*_0x405c96[0x2],_0x44659c=this['metadata'][_0x1b5eeb(0x16b)]+0x2,_0x4878ec=this[_0x1b5eeb(0x246)]['brickHeight']+0x2,_0x1c0940=this[_0x1b5eeb(0x246)]['brickDepth']+0x2,_0x3d3cd1=_0x44659c*_0x4878ec*_0x1c0940*this[_0x1b5eeb(0x158)][_0x1b5eeb(0x267)]*Float32Array[_0x1b5eeb(0x385)],_0x349dbe=_0x48d744*0x4*Uint32Array[_0x1b5eeb(0x385)],_0x313ab3=0x0,_0x5a79a2=0x0;for(let _0xcde7a7 of this[_0x1b5eeb(0x1ae)][_0x1b5eeb(0x21e)]())_0xcde7a7[_0x1b5eeb(0x264)]||(_0x5a79a2+=0x1,_0x313ab3+=_0xcde7a7[_0x1b5eeb(0x2d1)]);return{'logicalBrickCount':_0x48d744,'atlasCapacity':this[_0x1b5eeb(0x158)][_0x1b5eeb(0x267)],'gpuBytes':_0x3d3cd1+_0x349dbe,'memoryLimitBytes':this['memoryHardLimitBytes'],'budgetLimited':this['layout'][_0x1b5eeb(0x267)]<_0x48d744,'skippedSamples':_0x313ab3,'skippedCells':_0x5a79a2};}[_0x2e1660(0x168)](_0x41497e){const _0x4d3998=_0x2e1660;validateMetadata(_0x41497e);let _0x1218e0=_0x41497e[_0x4d3998(0x16b)]+0x2,_0x486314=_0x41497e['brickHeight']+0x2,_0xd58c1c=_0x41497e['brickDepth']+0x2,_0x121faa=getBrickCount(_0x41497e),_0x348d93=_0x121faa[0x0]*_0x121faa[0x1]*_0x121faa[0x2],_0x3ced6c=_0x348d93*0x4*Uint32Array[_0x4d3998(0x385)],_0x5670bc=Math[_0x4d3998(0x3ce)](this[_0x4d3998(0x2a1)],this[_0x4d3998(0x103)])-_0x3ced6c;if(_0x5670bc<=0x0)throw Error('WebGPU\x20volume\x20page\x20table\x20exceeds\x20the\x20configured\x20memory\x20limit.\x20WebGPU\x20体积页表超过显存限制。');let _0x58f524=_0x1218e0*_0x486314*_0xd58c1c*Float32Array[_0x4d3998(0x385)],_0x14a4f5=Math[_0x4d3998(0x3ce)](_0x348d93,Math[_0x4d3998(0x315)](_0x5670bc/_0x58f524)),_0x56e180=Math[_0x4d3998(0x3b1)](0x1,Math[_0x4d3998(0x315)](0x4000000/_0x58f524)),_0x5901de=Math[_0x4d3998(0x3ce)](0x8,Math[_0x4d3998(0x3b1)](0x1,Math[_0x4d3998(0x32e)](_0x14a4f5/_0x56e180))),_0x1578ce=findAtlasLayout(Math['max'](0x1,Math[_0x4d3998(0x315)](_0x14a4f5/_0x5901de)),_0x1218e0,_0x486314,_0xd58c1c,this[_0x4d3998(0x239)][_0x4d3998(0xf1)][_0x4d3998(0x3ee)]);if(!_0x1578ce)throw Error(_0x4d3998(0x236));let _0x5ce45a={..._0x1578ce,'textureCount':_0x5901de,'capacity':_0x1578ce[_0x4d3998(0x1ed)]*_0x5901de},_0x26b690=_0x1218e0*_0x5ce45a['slotCountX'],_0x36f2af=_0x486314*_0x5ce45a[_0x4d3998(0x1e5)],_0x1c2dc7=_0xd58c1c*_0x5ce45a['slotCountZ'],_0x51e406=Array['from']({'length':_0x5901de},(_0x1ce0a2,_0x4301f1)=>this['device']['createTexture']({'label':_0x4d3998(0x2de)+_0x4301f1,'size':[_0x26b690,_0x36f2af,_0x1c2dc7],'dimension':'3d','format':_0x4d3998(0x387),'usage':GPUTextureUsage[_0x4d3998(0x23b)]|GPUTextureUsage[_0x4d3998(0x3c8)]|GPUTextureUsage[_0x4d3998(0x273)]})),_0x554e9e=this[_0x4d3998(0x239)]['createBuffer']({'label':_0x4d3998(0x38a),'size':Math[_0x4d3998(0x3b1)](0x10,_0x3ced6c),'usage':GPUBufferUsage['STORAGE']|GPUBufferUsage[_0x4d3998(0x3c8)]});this[_0x4d3998(0x3ff)](),this[_0x4d3998(0x246)]={..._0x41497e},this[_0x4d3998(0x158)]=_0x5ce45a,this[_0x4d3998(0x17c)]=_0x51e406,this[_0x4d3998(0x3c4)]=_0x51e406['map'](_0x4d5cc6=>_0x4d5cc6[_0x4d3998(0x17f)]({'dimension':'3d'})),this['pageTableBuffer']=_0x554e9e,this[_0x4d3998(0x1d4)]=new Uint32Array(_0x348d93*0x4),this['device'][_0x4d3998(0x16c)][_0x4d3998(0x10c)](_0x554e9e,0x0,this[_0x4d3998(0x1d4)]);for(let _0x533ccd of _0x51e406)this['clearAtlasTexture'](_0x533ccd,_0x26b690,_0x36f2af,_0x1c2dc7);this[_0x4d3998(0x2fb)]+=0x1;}['prepareBrickUpload'](_0x5328fc,_0x2fc5db){const _0x3d57c2=_0x2e1660;let _0x10028a=this[_0x3d57c2(0x247)],_0x40a1df=this[_0x3d57c2(0xed)],_0x38599a=getBrickCount(_0x10028a),_0x2c7bdf=_0x38599a[0x0]*_0x38599a[0x1]*_0x38599a[0x2];if(!Number['isInteger'](_0x5328fc[_0x3d57c2(0x2f1)])||_0x5328fc[_0x3d57c2(0x2f1)]<0x0||_0x5328fc[_0x3d57c2(0x2f1)]>=_0x2c7bdf)throw Error(_0x3d57c2(0x112)+_0x5328fc['logicalIndex']+'.\x20体积逻辑砖块索引无效。');let _0x56b17a=_0x10028a[_0x3d57c2(0x16b)]+0x2,_0x14c9af=_0x10028a[_0x3d57c2(0x11b)]+0x2,_0x3ccda5=_0x10028a['brickDepth']+0x2,_0x1cf4ca=_0x56b17a*_0x14c9af*_0x3ccda5;if(_0x5328fc['values']['length']!==_0x1cf4ca)throw Error(_0x3d57c2(0x10f)+_0x5328fc[_0x3d57c2(0x2f1)]+_0x3d57c2(0x20a)+_0x1cf4ca+_0x3d57c2(0x3ea)+_0x5328fc[_0x3d57c2(0x21e)][_0x3d57c2(0x37f)]+'.\x20体积砖块数据长度不正确。');let _0x2aebba=this[_0x3d57c2(0x1ae)][_0x3d57c2(0x37a)](_0x5328fc[_0x3d57c2(0x2f1)])??this[_0x3d57c2(0x1e4)](_0x5328fc[_0x3d57c2(0x2f1)],_0x2fc5db),_0x505e70=analyzeBrickOccupancy(_0x5328fc,_0x10028a,_0x38599a),_0x3753d6=Math[_0x3d57c2(0x315)](_0x2aebba[_0x3d57c2(0x114)]/_0x40a1df['slotCount']),_0x67b8c7=getSlotCoordinate(_0x2aebba[_0x3d57c2(0x114)]%_0x40a1df[_0x3d57c2(0x1ed)],_0x40a1df),_0x2e72f3=createPaddedTextureData(new Float32Array(_0x5328fc[_0x3d57c2(0x21e)]),_0x56b17a,_0x14c9af,_0x3ccda5);return _0x2aebba[_0x3d57c2(0x3d4)]=_0x2fc5db,_0x2aebba[_0x3d57c2(0x2fb)]=this['generation'],_0x2aebba[_0x3d57c2(0x264)]=_0x505e70[_0x3d57c2(0x264)],_0x2aebba[_0x3d57c2(0x2d1)]=_0x505e70[_0x3d57c2(0xfc)],this[_0x3d57c2(0x3a2)](_0x2aebba),{'values':_0x2e72f3[_0x3d57c2(0x21e)],'bytesPerRow':_0x2e72f3[_0x3d57c2(0x346)],'rowsPerImage':_0x14c9af,'origin':{'x':_0x67b8c7[0x0]*_0x56b17a,'y':_0x67b8c7[0x1]*_0x14c9af,'z':_0x67b8c7[0x2]*_0x3ccda5},'extent':[_0x56b17a,_0x14c9af,_0x3ccda5],'atlasIndex':_0x3753d6};}[_0x2e1660(0x1f2)](_0x27413f,_0x5f5947,_0x144a93,_0x24d62e){const _0x5605cf=_0x2e1660;_0x27413f[_0x5605cf(0xd0)]({'buffer':_0x5f5947,'offset':_0x144a93,'bytesPerRow':_0x24d62e[_0x5605cf(0x346)],'rowsPerImage':_0x24d62e[_0x5605cf(0x137)]},{'texture':this[_0x5605cf(0x129)](_0x24d62e[_0x5605cf(0x179)]),'origin':_0x24d62e[_0x5605cf(0x403)]},_0x24d62e[_0x5605cf(0x262)]);}[_0x2e1660(0x332)](_0x71f49e,_0x48434c){const _0x796cd9=_0x2e1660;for(let _0x122099 of _0x71f49e){let _0xd36f93=this[_0x796cd9(0x1ae)]['get'](_0x122099);_0xd36f93&&(_0xd36f93[_0x796cd9(0x3d4)]=_0x48434c);}}[_0x2e1660(0x3b9)](_0x4c7e4c,_0x25d700){const _0x5e2254=_0x2e1660;if(this[_0x5e2254(0x3c4)]['length']===0x0||!this[_0x5e2254(0xc4)])throw Error('WebGPU\x20volume\x20atlas\x20resources\x20are\x20incomplete.\x20WebGPU\x20体积图集资源不完整。');return this[_0x5e2254(0x239)][_0x5e2254(0x3b9)]({'label':_0x5e2254(0x1f8),'layout':_0x4c7e4c,'entries':[...Array[_0x5e2254(0x309)]({'length':0x8},(_0x400833,_0x4559cb)=>({'binding':_0x4559cb,'resource':this[_0x5e2254(0x3c4)][_0x4559cb]??this['atlasViews'][0x0]})),{'binding':0x8,'resource':{'buffer':this[_0x5e2254(0xc4)]}},{'binding':0x9,'resource':{'buffer':_0x25d700}}]});}[_0x2e1660(0x3e2)](){const _0x4fbdc1=_0x2e1660;this[_0x4fbdc1(0x3ff)](),this[_0x4fbdc1(0x246)]=null,this['layout']=null,this[_0x4fbdc1(0x1d4)]=new Uint32Array();}[_0x2e1660(0x1e4)](_0x28e951,_0x12e1b8){const _0x78ae67=_0x2e1660;let _0x3358f5=this[_0x78ae67(0xed)],_0x387720=this[_0x78ae67(0x156)]['size'];if(_0x387720>=_0x3358f5[_0x78ae67(0x267)]){let _0x2b1e5b=findLeastRecentlyUsed(this['residentBySlotIndex'][_0x78ae67(0x21e)](),_0x12e1b8);if(!_0x2b1e5b)throw Error(_0x78ae67(0x3b6));_0x387720=_0x2b1e5b['slotIndex'],this[_0x78ae67(0x2f3)](_0x2b1e5b[_0x78ae67(0x2f1)]),this['residentByLogicalIndex'][_0x78ae67(0x214)](_0x2b1e5b[_0x78ae67(0x2f1)]),this[_0x78ae67(0x156)][_0x78ae67(0x214)](_0x387720);}let _0x2b60e1={'logicalIndex':_0x28e951,'slotIndex':_0x387720,'lastUsedFrame':_0x12e1b8,'generation':this[_0x78ae67(0x2fb)],'occupied':!0x1,'skippedSampleCount':0x0};return this[_0x78ae67(0x1ae)]['set'](_0x28e951,_0x2b60e1),this[_0x78ae67(0x156)][_0x78ae67(0x105)](_0x387720,_0x2b60e1),_0x2b60e1;}[_0x2e1660(0x3a2)](_0x34cf25){const _0x586c63=_0x2e1660;let _0x5950b0=_0x34cf25[_0x586c63(0x2f1)]*0x4;this[_0x586c63(0x1d4)][_0x5950b0]=_0x34cf25[_0x586c63(0x114)]%this['atlasLayout'][_0x586c63(0x1ed)]+0x1,this[_0x586c63(0x1d4)][_0x5950b0+0x1]=_0x34cf25[_0x586c63(0x2fb)],this[_0x586c63(0x1d4)][_0x5950b0+0x2]=+!!_0x34cf25['occupied'],this['pageTableValues'][_0x5950b0+0x3]=Math[_0x586c63(0x315)](_0x34cf25[_0x586c63(0x114)]/this['atlasLayout'][_0x586c63(0x1ed)]),this[_0x586c63(0x239)][_0x586c63(0x16c)]['writeBuffer'](this[_0x586c63(0x2a0)](),_0x5950b0*Uint32Array[_0x586c63(0x385)],this[_0x586c63(0x1d4)],_0x5950b0,0x4);}[_0x2e1660(0x2f3)](_0x231248){const _0x15311f=_0x2e1660;let _0x1ce2d6=_0x231248*0x4;this[_0x15311f(0x1d4)][_0x15311f(0x366)](0x0,_0x1ce2d6,_0x1ce2d6+0x4),this[_0x15311f(0x239)][_0x15311f(0x16c)][_0x15311f(0x10c)](this[_0x15311f(0x2a0)](),_0x1ce2d6*Uint32Array[_0x15311f(0x385)],this[_0x15311f(0x1d4)],_0x1ce2d6,0x4);}['getAtlasTexture'](_0x1702b9){const _0x678adf=_0x2e1660;let _0x4a53de=this[_0x678adf(0x17c)][_0x1702b9];if(!_0x4a53de)throw Error(_0x678adf(0x18d));return _0x4a53de;}[_0x2e1660(0x2f7)](_0x3f6550,_0x4284d8,_0xe0b2c4,_0x537d43){const _0xee5251=_0x2e1660;let _0xbffdeb=this[_0xee5251(0x239)]['createShaderModule']({'label':_0xee5251(0x404),'code':_0xee5251(0x369)}),_0x1f95e8=this[_0xee5251(0x239)]['createComputePipeline']({'label':_0xee5251(0xce),'layout':_0xee5251(0x3d0),'compute':{'module':_0xbffdeb,'entryPoint':'main'}}),_0x393557=this[_0xee5251(0x239)][_0xee5251(0x3b9)]({'label':_0xee5251(0x175),'layout':_0x1f95e8['getBindGroupLayout'](0x0),'entries':[{'binding':0x0,'resource':_0x3f6550['createView']({'dimension':'3d'})}]}),_0x2f32f0=this[_0xee5251(0x239)][_0xee5251(0x31f)]({'label':_0xee5251(0x21d)}),_0x203a48=_0x2f32f0[_0xee5251(0x24b)]({'label':'volume\x20atlas\x20clear\x20pass'});_0x203a48['setPipeline'](_0x1f95e8),_0x203a48[_0xee5251(0x3f3)](0x0,_0x393557),_0x203a48['dispatchWorkgroups'](Math['ceil'](_0x4284d8/0x4),Math[_0xee5251(0x32e)](_0xe0b2c4/0x4),Math[_0xee5251(0x32e)](_0x537d43/0x4)),_0x203a48[_0xee5251(0x209)](),this[_0xee5251(0x239)]['queue'][_0xee5251(0x2bd)]([_0x2f32f0[_0xee5251(0x37c)]()]);}[_0x2e1660(0x2a0)](){const _0x72734f=_0x2e1660;if(!this['pageTableBuffer'])throw Error(_0x72734f(0x29a));return this['pageTableBuffer'];}[_0x2e1660(0x3ff)](){const _0x214c36=_0x2e1660;for(let _0x1f6a85 of this[_0x214c36(0x17c)])_0x1f6a85[_0x214c36(0x3e2)]();this['pageTableBuffer']?.[_0x214c36(0x3e2)](),this['atlasTextures']=[],this[_0x214c36(0x3c4)]=[],this[_0x214c36(0xc4)]=null,this[_0x214c36(0x1ae)][_0x214c36(0xf2)](),this['residentBySlotIndex']['clear']();}},WebgpuSceneAttachments=class{[_0x2e1660(0x239)];[_0x2e1660(0x3c2)]=null;['depthView']=null;['width']=0x0;[_0x2e1660(0x1c0)]=0x0;constructor(_0x20ca9b){const _0x31c136=_0x2e1660;this[_0x31c136(0x239)]=_0x20ca9b;}get[_0x2e1660(0x32a)](){const _0x2d5c92=_0x2e1660;if(!this[_0x2d5c92(0xe1)])throw Error(_0x2d5c92(0x301));return this[_0x2d5c92(0xe1)];}[_0x2e1660(0x1c2)](_0x2c04f9,_0x37e124){const _0x5b4833=_0x2e1660;if(this[_0x5b4833(0x274)]===_0x2c04f9&&this[_0x5b4833(0x1c0)]===_0x37e124)return;let _0x5927fc=this['device'][_0x5b4833(0x1b9)]({'label':_0x5b4833(0xef),'size':[_0x2c04f9,_0x37e124],'format':_0x5b4833(0x1a1),'usage':GPUTextureUsage['RENDER_ATTACHMENT']|GPUTextureUsage[_0x5b4833(0x23b)]}),_0x368b6b=this['depthTexture'];this[_0x5b4833(0x3c2)]=_0x5927fc,this['depthView']=_0x5927fc[_0x5b4833(0x17f)](),this[_0x5b4833(0x274)]=_0x2c04f9,this[_0x5b4833(0x1c0)]=_0x37e124,_0x368b6b?.[_0x5b4833(0x3e2)]();}[_0x2e1660(0x3e2)](){const _0x53a46b=_0x2e1660;this[_0x53a46b(0x3c2)]?.['destroy'](),this[_0x53a46b(0x3c2)]=null,this[_0x53a46b(0xe1)]=null,this['width']=0x0,this[_0x53a46b(0x1c0)]=0x0;}},WebgpuSceneMeshResources=class{['device'];[_0x2e1660(0x39e)]=[];constructor(_0x304e07){const _0x5f013c=_0x2e1660;this[_0x5f013c(0x239)]=_0x304e07;}get[_0x2e1660(0x2e2)](){const _0x368509=_0x2e1660;return this[_0x368509(0x39e)][_0x368509(0x37f)];}[_0x2e1660(0x118)](_0x59cfba){const _0x5ca7a9=_0x2e1660;let _0x5dacb2=[];try{for(let _0x52b54a of _0x59cfba)_0x5dacb2['push'](this['createResource'](_0x52b54a));}catch(_0x238732){for(let _0x31617e of _0x5dacb2)_0x31617e[_0x5ca7a9(0x228)][_0x5ca7a9(0x3e2)]();throw _0x238732;}this['destroyResources'](),this[_0x5ca7a9(0x39e)]=_0x5dacb2;}['draw'](_0x4fcf02,_0x4e5241,_0x5de66d){const _0x536bb9=_0x2e1660;for(let _0x335592 of this[_0x536bb9(0x39e)])_0x335592[_0x536bb9(0x3eb)]!==_0x4e5241||_0x335592['depthMode']!==_0x5de66d||(_0x4fcf02[_0x536bb9(0x2bb)](0x0,_0x335592[_0x536bb9(0x228)]),_0x4fcf02[_0x536bb9(0x282)](_0x335592['vertexCount']));}[_0x2e1660(0x3e2)](){const _0x3f0595=_0x2e1660;this[_0x3f0595(0x3ff)]();}[_0x2e1660(0x184)](_0x44a1c1){const _0x259c37=_0x2e1660;if(_0x44a1c1[_0x259c37(0x2c8)]['length']===0x0||_0x44a1c1[_0x259c37(0x2c8)][_0x259c37(0x37f)]%0x7!=0x0)throw Error(_0x259c37(0x292)+_0x44a1c1['id']+'\x20must\x20contain\x20position\x20and\x20RGBA\x20values\x20for\x20every\x20vertex.\x20场景网格顶点必须包含位置和\x20RGBA。');let _0x2618c5=new Float32Array(_0x44a1c1[_0x259c37(0x2c8)]),_0x38bacd=this[_0x259c37(0x239)][_0x259c37(0x269)]({'label':_0x259c37(0x233)+_0x44a1c1['id'],'size':_0x2618c5['byteLength'],'usage':GPUBufferUsage[_0x259c37(0x1a3)]|GPUBufferUsage[_0x259c37(0x3c8)]});return this['device'][_0x259c37(0x16c)]['writeBuffer'](_0x38bacd,0x0,_0x2618c5),{'id':_0x44a1c1['id'],'topology':_0x44a1c1[_0x259c37(0x3eb)],'depthMode':_0x44a1c1[_0x259c37(0x155)],'buffer':_0x38bacd,'vertexCount':_0x44a1c1['vertices']['length']/0x7};}[_0x2e1660(0x3ff)](){const _0x1eb7e6=_0x2e1660;for(let _0x5ebca2 of this[_0x1eb7e6(0x39e)])_0x5ebca2[_0x1eb7e6(0x228)][_0x1eb7e6(0x3e2)]();this[_0x1eb7e6(0x39e)]=[];}},WebgpuSliceResources=class{[_0x2e1660(0x239)];[_0x2e1660(0x158)];[_0x2e1660(0x39e)]=[];[_0x2e1660(0x205)]=0x0;[_0x2e1660(0x1c5)]=0x0;constructor(_0x2af03c,_0xd340a9){const _0x387946=_0x2e1660;this[_0x387946(0x239)]=_0x2af03c,this[_0x387946(0x158)]=_0xd340a9;}get[_0x2e1660(0x2e2)](){const _0x2972a7=_0x2e1660;return this[_0x2972a7(0x39e)]['length'];}get['statistics'](){const _0x16d169=_0x2e1660;return{'uniformUpdateCount':this[_0x16d169(0x205)],'resourceRebuildCount':this['resourceRebuildCount']};}[_0x2e1660(0x118)](_0x54eb58){const _0x442f0a=_0x2e1660;let _0x5f4051=new Map(this[_0x442f0a(0x39e)][_0x442f0a(0x10e)](_0x2c5736=>[_0x2c5736['id'],_0x2c5736])),_0x2e4f1f=[],_0x268712=new Set();try{for(let _0x158552 of _0x54eb58){if(!_0x158552['visible'])continue;if(_0x268712[_0x442f0a(0x192)](_0x158552['id']))throw Error('Volume\x20slice\x20ID\x20'+_0x158552['id']+'\x20is\x20duplicated.\x20体积切面\x20ID\x20重复。');_0x268712[_0x442f0a(0x23e)](_0x158552['id']);let _0x389a2a=this['createValues'](_0x158552),_0x1cfd44=_0x5f4051[_0x442f0a(0x37a)](_0x158552['id']);if(!_0x1cfd44){_0x2e4f1f[_0x442f0a(0x3aa)](this[_0x442f0a(0x184)](_0x158552,_0x389a2a));continue;}_0x5f4051[_0x442f0a(0x214)](_0x158552['id']),_0x1cfd44['depthMode']=_0x158552['depthMode'],this[_0x442f0a(0xd4)](_0x1cfd44[_0x442f0a(0x21e)],_0x389a2a)||(this[_0x442f0a(0x239)][_0x442f0a(0x16c)]['writeBuffer'](_0x1cfd44['buffer'],0x0,_0x389a2a),_0x1cfd44[_0x442f0a(0x21e)]=_0x389a2a,this[_0x442f0a(0x205)]+=0x1),_0x2e4f1f[_0x442f0a(0x3aa)](_0x1cfd44);}}catch(_0x5a1ea7){for(let _0x4df002 of _0x2e4f1f)this[_0x442f0a(0x39e)][_0x442f0a(0x377)](_0x4df002)||_0x4df002['buffer'][_0x442f0a(0x3e2)]();throw _0x5a1ea7;}for(let _0x315e5d of _0x5f4051[_0x442f0a(0x21e)]())_0x315e5d['buffer'][_0x442f0a(0x3e2)]();this[_0x442f0a(0x39e)]=_0x2e4f1f;}[_0x2e1660(0x282)](_0x4e5bea,_0x4c7d90,_0x22ecce){const _0x536dfa=_0x2e1660;_0x4e5bea[_0x536dfa(0x26a)](_0x4c7d90);for(let _0x5c970d of this[_0x536dfa(0x39e)])_0x5c970d['depthMode']===_0x22ecce&&(_0x4e5bea[_0x536dfa(0x3f3)](0x3,_0x5c970d['bindGroup']),_0x4e5bea[_0x536dfa(0x282)](0x1800));}[_0x2e1660(0x3e2)](){const _0x399549=_0x2e1660;this[_0x399549(0x3ff)]();}['createValues'](_0x474c38){const _0x21e4e4=_0x2e1660;if(!Number[_0x21e4e4(0x2c4)](_0x474c38[_0x21e4e4(0x154)])||_0x474c38[_0x21e4e4(0x154)]<0x0||_0x474c38['position']>0x1)throw Error(_0x21e4e4(0x237)+_0x474c38['id']+_0x21e4e4(0x3c1));let _0xf536a0=_0x474c38[_0x21e4e4(0x3f9)]==='x'?0x0:_0x474c38['axis']==='y'?0x1:0x2,_0x225de7=_0x474c38[_0x21e4e4(0x19b)]??[0x0,0x0,0x0,0x0];if(_0x225de7[_0x21e4e4(0x38b)](_0x1e2fbb=>!Number[_0x21e4e4(0x2c4)](_0x1e2fbb)||_0x1e2fbb<0x0||_0x1e2fbb>0x1))throw Error('Volume\x20slice\x20'+_0x474c38['id']+'\x20plate\x20color\x20must\x20use\x20values\x20from\x20zero\x20through\x20one.\x20体积切面底板颜色必须位于零至一。');return new Float32Array([_0xf536a0,_0x474c38[_0x21e4e4(0x154)],_0x474c38['opacity']??0x1,0x0,..._0x225de7]);}[_0x2e1660(0x184)](_0x24e300,_0x195707){const _0x4ef58f=_0x2e1660;let _0x1e5532=this[_0x4ef58f(0x239)][_0x4ef58f(0x269)]({'label':'volume\x20slice\x20'+_0x24e300['id'],'size':0x20,'usage':GPUBufferUsage[_0x4ef58f(0x2f8)]|GPUBufferUsage[_0x4ef58f(0x3c8)]});this[_0x4ef58f(0x239)]['queue'][_0x4ef58f(0x10c)](_0x1e5532,0x0,_0x195707);let _0x25c898=this[_0x4ef58f(0x239)]['createBindGroup']({'layout':this[_0x4ef58f(0x158)],'entries':[{'binding':0x0,'resource':{'buffer':_0x1e5532}}]});return this[_0x4ef58f(0x1c5)]+=0x1,{'id':_0x24e300['id'],'depthMode':_0x24e300['depthMode'],'buffer':_0x1e5532,'bindGroup':_0x25c898,'values':_0x195707};}[_0x2e1660(0xd4)](_0x4bd45f,_0x5a06bb){for(let _0x4fa024=0x0;_0x4fa024<_0x4bd45f['length'];_0x4fa024+=0x1)if(_0x4bd45f[_0x4fa024]!==_0x5a06bb[_0x4fa024])return!0x1;return!0x0;}[_0x2e1660(0x3ff)](){for(let _0x4bc096 of this['resources'])_0x4bc096['buffer']['destroy']();this['resources']=[];}};const createStorageBuffer=(_0x38c58b,_0x5e5edd,_0x36a50f)=>{const _0x558c46=_0x2e1660;let _0x2af951=_0x38c58b['createBuffer']({'label':_0x36a50f,'size':Math[_0x558c46(0x3b1)](0x4,_0x5e5edd['byteLength']),'usage':GPUBufferUsage[_0x558c46(0x310)]|GPUBufferUsage[_0x558c46(0x3c8)]});return _0x5e5edd[_0x558c46(0x1cf)]>0x0&&_0x38c58b['queue'][_0x558c46(0x10c)](_0x2af951,0x0,_0x5e5edd),_0x2af951;},validateStops$1=(_0x174cde,_0x49f812)=>{const _0xe65dfc=_0x2e1660;if(_0x174cde[_0xe65dfc(0x37f)]===0x0||_0x49f812[_0xe65dfc(0x37f)]===0x0)throw Error('Volume\x20color\x20and\x20opacity\x20stops\x20cannot\x20be\x20empty.\x20体积颜色和透明度色标不能为空。');for(let _0x32ad13=0x1;_0x32ad13<_0x174cde[_0xe65dfc(0x37f)];_0x32ad13+=0x1)if(_0x174cde[_0x32ad13]['value']<_0x174cde[_0x32ad13-0x1][_0xe65dfc(0x3a0)])throw Error(_0xe65dfc(0x2b0));for(let _0xb87bc3=0x0;_0xb87bc3<_0x49f812[_0xe65dfc(0x37f)];_0xb87bc3+=0x1){if(_0x49f812[_0xb87bc3][_0xe65dfc(0x211)]<0x0||_0x49f812[_0xb87bc3][_0xe65dfc(0x211)]>0x1)throw Error(_0xe65dfc(0x2af));if(_0xb87bc3>0x0&&_0x49f812[_0xb87bc3][_0xe65dfc(0x3a0)]<_0x49f812[_0xb87bc3-0x1][_0xe65dfc(0x3a0)])throw Error(_0xe65dfc(0x394));}};var WebgpuTransferResources=class{[_0x2e1660(0x239)];[_0x2e1660(0x174)]=null;[_0x2e1660(0x28a)]=null;[_0x2e1660(0x259)]=null;['opacityBuffer']=null;[_0x2e1660(0x1f0)]=0x0;[_0x2e1660(0x360)]=0x0;constructor(_0x402434){const _0x1c3cce=_0x2e1660;this[_0x1c3cce(0x239)]=_0x402434;}get['counts'](){const _0x2d0284=_0x2e1660;return[this[_0x2d0284(0x1f0)],this[_0x2d0284(0x360)]];}['update'](_0x264bc1,_0x2bfa4a){const _0x3ce211=_0x2e1660;validateStops$1(_0x264bc1,_0x2bfa4a);let _0x47e88a=new Float32Array(_0x264bc1[_0x3ce211(0x37f)]),_0xf31af3=new Float32Array(_0x264bc1[_0x3ce211(0x37f)]*0x4),_0x58a36f=new Float32Array(_0x2bfa4a['length']),_0x21026d=new Float32Array(_0x2bfa4a[_0x3ce211(0x37f)]);for(let _0x51a802=0x0;_0x51a802<_0x264bc1[_0x3ce211(0x37f)];_0x51a802+=0x1)_0x47e88a[_0x51a802]=_0x264bc1[_0x51a802]['value'],_0xf31af3[_0x3ce211(0x105)](_0x264bc1[_0x51a802][_0x3ce211(0x2eb)],_0x51a802*0x4);for(let _0x3c1825=0x0;_0x3c1825<_0x2bfa4a['length'];_0x3c1825+=0x1)_0x58a36f[_0x3c1825]=_0x2bfa4a[_0x3c1825]['value'],_0x21026d[_0x3c1825]=_0x2bfa4a[_0x3c1825]['opacity'];let _0x2e7bab=[createStorageBuffer(this[_0x3ce211(0x239)],_0x47e88a,'volume\x20color\x20stop\x20values'),createStorageBuffer(this[_0x3ce211(0x239)],_0xf31af3,_0x3ce211(0x16d)),createStorageBuffer(this[_0x3ce211(0x239)],_0x58a36f,_0x3ce211(0x2d4)),createStorageBuffer(this[_0x3ce211(0x239)],_0x21026d,'volume\x20opacity\x20stop\x20alphas')];this[_0x3ce211(0x402)](),this[_0x3ce211(0x174)]=_0x2e7bab[0x0],this[_0x3ce211(0x28a)]=_0x2e7bab[0x1],this[_0x3ce211(0x259)]=_0x2e7bab[0x2],this[_0x3ce211(0x388)]=_0x2e7bab[0x3],this[_0x3ce211(0x1f0)]=_0x264bc1[_0x3ce211(0x37f)],this[_0x3ce211(0x360)]=_0x2bfa4a[_0x3ce211(0x37f)];}[_0x2e1660(0x3b9)](_0x25cf83){const _0x2b573b=_0x2e1660;if(!this[_0x2b573b(0x174)]||!this['colorBuffer']||!this[_0x2b573b(0x259)]||!this[_0x2b573b(0x388)])throw Error(_0x2b573b(0x27c));return this['device']['createBindGroup']({'label':_0x2b573b(0x1e3),'layout':_0x25cf83,'entries':[{'binding':0x0,'resource':{'buffer':this[_0x2b573b(0x174)]}},{'binding':0x1,'resource':{'buffer':this[_0x2b573b(0x28a)]}},{'binding':0x2,'resource':{'buffer':this[_0x2b573b(0x259)]}},{'binding':0x3,'resource':{'buffer':this['opacityBuffer']}}]});}[_0x2e1660(0x3e2)](){const _0x160ca3=_0x2e1660;this[_0x160ca3(0x402)](),this['colorStopCount']=0x0,this[_0x160ca3(0x360)]=0x0;}[_0x2e1660(0x402)](){const _0x15c070=_0x2e1660;this[_0x15c070(0x174)]?.[_0x15c070(0x3e2)](),this[_0x15c070(0x28a)]?.[_0x15c070(0x3e2)](),this[_0x15c070(0x259)]?.['destroy'](),this[_0x15c070(0x388)]?.[_0x15c070(0x3e2)](),this[_0x15c070(0x174)]=null,this[_0x15c070(0x28a)]=null,this[_0x15c070(0x259)]=null,this[_0x15c070(0x388)]=null;}};const DEFAULT_MEMORY_TARGET_BYTES=0x200*0x400*0x400,IDENTITY_MATRIX$1=[0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1],DEFAULT_COLOR_STOPS=[{'value':0x0,'color':[0x0,0x0,0x1,0x1]},{'value':0x1,'color':[0x1,0x0,0x0,0x1]}],DEFAULT_OPACITY_STOPS=[{'value':0x0,'opacity':0x0},{'value':0x1,'opacity':0x1}],premultipliedBlend$1=()=>({'color':{'srcFactor':_0x2e1660(0x23a),'dstFactor':_0x2e1660(0x2e0),'operation':_0x2e1660(0x23e)},'alpha':{'srcFactor':_0x2e1660(0x23a),'dstFactor':_0x2e1660(0x2e0),'operation':_0x2e1660(0x23e)}}),validateMatrix=(_0x4715d5,_0x5d6897)=>{const _0xda527=_0x2e1660;if(_0x4715d5[_0xda527(0x37f)]!==0x10||_0x4715d5['some'](_0x5acc9b=>!Number[_0xda527(0x2c4)](_0x5acc9b)))throw Error(_0x5d6897+_0xda527(0x1c4)+_0x5d6897+'\x20必须包含十六个有限数值。');},validateNonNegative=(_0x2e8925,_0x5175d5)=>{const _0x2eaa81=_0x2e1660;if(!Number['isFinite'](_0x2e8925)||_0x2e8925<0x0)throw Error(_0x5175d5+_0x2eaa81(0x124)+_0x5175d5+'\x20必须是非负有限数值。');return _0x2e8925;},validatePositive=(_0x60b81a,_0x1e5d5d)=>{const _0x3c1f2c=_0x2e1660;if(!Number[_0x3c1f2c(0x2c4)](_0x60b81a)||_0x60b81a<=0x0)throw Error(_0x1e5d5d+'\x20must\x20be\x20a\x20positive\x20finite\x20value.\x20'+_0x1e5d5d+_0x3c1f2c(0x2c3));return _0x60b81a;},cloneMeshes=_0x235b3b=>_0x235b3b['map'](_0x2e6909=>({..._0x2e6909,'vertices':new Float32Array(_0x2e6909[_0x2e1660(0x2c8)])})),estimateBrickUploadBytes=_0x136068=>{const _0x23854d=_0x2e1660;let _0x5dda73=_0x136068[_0x23854d(0x16b)]+_0x136068[_0x23854d(0x405)]*0x2,_0x187b5d=_0x136068['brickHeight']+_0x136068['halo']*0x2,_0x533acd=_0x136068['brickDepth']+_0x136068[_0x23854d(0x405)]*0x2;return Math[_0x23854d(0x32e)](_0x5dda73*Float32Array[_0x23854d(0x385)]/0x100)*0x100*_0x187b5d*_0x533acd+0x10;};function _0x1938(){const _0x489247=['setAxes','device','one','TEXTURE_BINDING','createPipelines','setProfiles','add','xStart','getSceneBindGroupLayout','WebGPU\x20volume\x20memory\x20limits\x20must\x20be\x20positive.\x20WebGPU\x20体积显存限制必须大于零。','applyHit','maxBufferSize','currentPreview','geographic-wgs84','metadata','volumeMetadata','volume\x20scene\x20geometry\x20pass','canvas','writeVolumeParams','beginComputePass','every','updatePreview','startX','handleResize','unconfigure','pointerEvents','bindControls','composite','cos','adapter','切面轴端点必须是有限数。','getAxisResources','colorStops','opacityValuesBuffer','setShow','46224JhWoRX','absolute','endY','相机宽高比必须是大于\x200\x20的有限数。','semiMajorAxisScaled','proxyModelMatrix','getProfileResources','extent','#fff','occupied','\x20axis\x20must\x20contain\x20two\x20different\x20finite\x20endpoints.\x20','submittedFrameCount','capacity','WRITE','createBuffer','setPipeline','volume\x20always\x20visible\x20pass','createTextNode','rotateSpeed','pushErrorScope','volume\x20scene\x20mesh\x20shader','zIndex','zAxis','uploadBatchCount','STORAGE_BINDING','width','watchDeviceLost','maxLockedSlices','interactionElement','previousContainerPosition','\x20endpoints\x20must\x20be\x20finite.\x20','noData','listeners','WebGPU\x20volume\x20transfer\x20resources\x20are\x20incomplete.\x20WebGPU\x20体积传递函数资源不完整。','maxLockedSlices\x20必须是正整数。','clipBox','pointer','多采样点切面轴的起止值不能相等。','handlePointerDown','draw','stopPropagation','toUpperCase','createRenderPipeline','createPipelineLayout','\x20必须是大于\x200\x20的有限数。','transferResources','WebGPU\x20scene\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20场景绑定布局不可用。','colorBuffer','uniform','createSliceState','volumeDimFactor','Volume\x20timeIndex\x20is\x20out\x20of\x20range:\x20','pointermove','viewportHeight','transferBindGroup','Scene\x20mesh\x20','catch','transparent','clipMinimum','7270wXXAun','pointerdown','devicePixelRatio','colorInputs','WebGPU\x20volume\x20page\x20table\x20is\x20unavailable.\x20WebGPU\x20体积页表不可用。','prepareBrickUpload','相机裁剪距离必须满足\x200\x20<=\x20near\x20<\x20far。','\x20必须是正整数。','ready','display','getPageTableBuffer','memoryTargetBytes','translate(-50%,\x20-100%)','0.72','overlaySlicePipeline','\x20的\x20values\x20长度与\x20path、heights\x20不匹配。','verticalScale\x20must\x20be\x20a\x20positive\x20finite\x20value.\x20verticalScale\x20必须是大于\x200\x20的有限数。','WebGPU\x20geometry\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20几何绑定布局不可用。','createMars3dVolumeLayer','initialize','quality','4px','matrix(','brickScheduleCount','beginLockedSliceDrag','Volume\x20opacity\x20stops\x20must\x20be\x20between\x20zero\x20and\x20one.\x20体积透明度色标必须位于零到一之间。','Volume\x20color\x20stops\x20must\x20be\x20sorted\x20by\x20value.\x20体积颜色色标必须按数值升序排列。','remove','cacheBrickUpload','viewportWidth','cameraFrameCompensation','maxY','releaseGpuResources','lost','load','contextmenu','direction','setVertexBuffer','WebGPU\x20slice\x20resources\x20are\x20unavailable.\x20WebGPU\x20切面资源不可用。','submit','cachedBricks','error','pointerleave','container','destroyed','\x20必须是正有限数值。','isFinite','BaseLayer','_map','initialized','vertices','Volume\x20brick\x20halo\x20must\x20be\x20a\x20positive\x20integer.\x20体积分块\x20halo\x20必须是正整数。','相机宽高比必须大于\x200。','flushSliceState','brickDepth','then','start','volumeBindGroupLayout','idle','skippedSampleCount','WebGPU\x20volume\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20体积绑定布局不可用。','beginRenderPass','volume\x20opacity\x20stop\x20values','clipMaximum','Volume\x20opacity\x20must\x20be\x20within\x20[0,\x201].\x20体积透明度必须位于\x20[0,\x201]。','padding','near','semiMinorAxisScaled','subarray','The\x20maximum\x20locked\x20slice\x20count\x20has\x20been\x20reached.\x20已达到最大锁定切面数量。','getBoundingClientRect','WebGPU\x20profile\x20resources\x20are\x20unavailable.\x20WebGPU\x20剖面资源不可用。','volume\x20brick\x20atlas\x20','endInteraction','one-minus-src-alpha','getTransferResources','count','snapshot','dolly','worldAnchors','slotCountZ','atlas','minimumPitchDegrees','getAttachments','onSliceError','color','bgra8unorm','deltaY','sceneBindGroupLayout','applyCameraFrameCompensation','volume\x20geometry\x20bind\x20group','logicalIndex','firstChild','clearPageEntry','Count','sin','Failed\x20to\x20create\x20WebGPU\x20volume\x20pipelines:\x20','clearAtlasTexture','UNIFORM','pendingSliceSnapshot','bindSliceState','generation','Alpha\x20颜色通道必须在0\x20~\x201之间','clientY','heightScaled','Geographic\x20volume\x20proxy\x20bounds\x20are\x20invalid.\x20地理体积代理范围无效。','volume\x20raymarch\x20pass','WebGPU\x20scene\x20depth\x20attachment\x20is\x20not\x20initialized.\x20WebGPU\x20场景深度附件尚未初始化。','orthographic','getVolumeParamsBuffer','setTimeIndex','hypot','name','screenAnchors','setSliceTool','from','loadBrick','store','popErrorScope','countY','sourceYStart','float32x4','STORAGE','statistics','切面轴采样数必须是正整数。','Mars3D\x20volume\x20shader\x20marker\x20is\x20missing\x20or\x20duplicated:\x20','distance','floor','\x20must\x20be\x20a\x20positive\x20integer.\x20体积分块\x20','cameraSignature','positionMarker','mapAsync','3px\x206px','indexOf','WebGPU\x20slice\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20切面绑定布局不可用。','configureModel','updateSlice','createCommandEncoder','wheel','setRouteProfiles','state','syncLockedMarkers','forEach','prototype','Volume\x20opacity\x20stops\x20cannot\x20be\x20empty.\x20体积透明度节点不能为空。','sceneLinePipeline','volume\x20metadata\x20params','WebGPU\x20volume\x20device\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20device\x20尚未初始化。','sceneDepthView','setToolMode','densityScale','modelMatrix','ceil','hasPointerCapture','endsWith','getFrame','touch','atan2','toPrecision','bindSliceInteraction','uploadPump','createCanvas','range','getCanvas','hitTolerance','overlayContainer','Failed\x20to\x20create\x20a\x20WebGPU\x20canvas\x20context\x20for\x20the\x20volume\x20scene.\x20无法为体积场景创建\x20WebGPU\x20Canvas\x20上下文。','WebGPU\x20volume\x20renderer\x20is\x20not\x20ready\x20for\x20frame\x20capture.\x20WebGPU\x20体积渲染器尚不能读取帧。','slicePlateColor','high-performance','exp','backend','Volume\x20opacity\x20stop\x20values\x20must\x20be\x20finite\x20and\x20strictly\x20increasing.\x20体积透明度节点值必须有限且严格递增。','balanced','asin','layer','bytesPerRow','sceneParamsBuffer','getVolumeBindGroupLayout','scheduleUploadPump','getStepLength','Mars3D\x20map\x20canvas\x20must\x20have\x20a\x20parent\x20element.\x20Mars3D\x20地图\x20Canvas\x20必须存在父元素。','shift','uploadedBrickCount','splice','getCurrentTexture','sourceGeneration','onLimitReached','attachments','maximumDistance','displayedCompensationFrame','createCameraSignature','rebuildProfiles','createElement','cameraState','block','aria-label','切面位置必须是有限数。','clientWidth','slotCountX','context','uploadStagingBuffer','opacityStopCount','brickSortCount','beginCameraInteraction','handlePointerLeave','maxX','renderMode','fill','renderScale','createLockedMarker','\x0a@group(0)\x20@binding(0)\x20var\x20atlas:\x20texture_storage_3d<r32float,\x20write>;\x0a\x0a@compute\x20@workgroup_size(4,\x204,\x204)\x0afn\x20main(@builtin(global_invocation_id)\x20invocation:\x20vec3u)\x20{\x0a\x20\x20\x20\x20let\x20dimensions\x20=\x20textureDimensions(atlas);\x0a\x20\x20\x20\x20if\x20(all(invocation\x20<\x20dimensions))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20textureStore(atlas,\x20vec3i(invocation),\x20vec4f(0.0));\x0a\x20\x20\x20\x20}\x0a}\x0a','notify','readyReject','entries','bind','now','volume\x20frame\x20readback','FRAGMENT','setPointerCapture','\x0afn\x20intersectEllipsoid(origin:\x20vec3f,\x20direction:\x20vec3f,\x20semiMajor:\x20f32,\x20semiMinor:\x20f32)\x20->\x20vec2f\x20{\x0a\x20\x20\x20\x20let\x20inverseRadiiSquared\x20=\x20vec3f(\x0a\x20\x20\x20\x20\x20\x20\x20\x201.0\x20/\x20(semiMajor\x20*\x20semiMajor),\x0a\x20\x20\x20\x20\x20\x20\x20\x201.0\x20/\x20(semiMajor\x20*\x20semiMajor),\x0a\x20\x20\x20\x20\x20\x20\x20\x201.0\x20/\x20(semiMinor\x20*\x20semiMinor)\x0a\x20\x20\x20\x20);\x0a\x20\x20\x20\x20let\x20coefficientA\x20=\x20dot(direction\x20*\x20direction,\x20inverseRadiiSquared);\x0a\x20\x20\x20\x20let\x20coefficientB\x20=\x202.0\x20*\x20dot(origin\x20*\x20direction,\x20inverseRadiiSquared);\x0a\x20\x20\x20\x20let\x20coefficientC\x20=\x20dot(origin\x20*\x20origin,\x20inverseRadiiSquared)\x20-\x201.0;\x0a\x20\x20\x20\x20let\x20discriminant\x20=\x20coefficientB\x20*\x20coefficientB\x20-\x204.0\x20*\x20coefficientA\x20*\x20coefficientC;\x0a\x0a\x20\x20\x20\x20if\x20(discriminant\x20<\x200.0\x20||\x20coefficientA\x20<=\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec2f(1.0,\x20-1.0);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20root\x20=\x20sqrt(discriminant);\x0a\x20\x20\x20\x20let\x20inverseDenominator\x20=\x200.5\x20/\x20coefficientA;\x0a\x20\x20\x20\x20let\x20first\x20=\x20(-coefficientB\x20-\x20root)\x20*\x20inverseDenominator;\x0a\x20\x20\x20\x20let\x20second\x20=\x20(-coefficientB\x20+\x20root)\x20*\x20inverseDenominator;\x0a\x20\x20\x20\x20return\x20vec2f(min(first,\x20second),\x20max(first,\x20second));\x0a}\x0a\x0afn\x20intersectGeographicShell(origin:\x20vec3f,\x20direction:\x20vec3f)\x20->\x20RayInterval\x20{\x0a\x20\x20\x20\x20let\x20worldOrigin\x20=\x20transformPoint(scene.modelMatrix,\x20origin)\x20+\x20scene.geographic0.yzw;\x0a\x20\x20\x20\x20let\x20worldDirection\x20=\x20transformPoint(scene.modelMatrix,\x20origin\x20+\x20direction)\x20-\x20transformPoint(scene.modelMatrix,\x20origin);\x0a\x20\x20\x20\x20let\x20minimumHeight\x20=\x20min(scene.geographic2.z,\x20scene.geographic2.w);\x0a\x20\x20\x20\x20let\x20maximumHeight\x20=\x20max(scene.geographic2.z,\x20scene.geographic2.w);\x0a\x20\x20\x20\x20let\x20outer\x20=\x20intersectEllipsoid(worldOrigin,\x20worldDirection,\x20scene.geographic1.x\x20+\x20maximumHeight,\x20scene.geographic1.y\x20+\x20maximumHeight);\x0a\x0a\x20\x20\x20\x20if\x20(outer.y\x20<\x20max(0.0,\x20outer.x))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20RayInterval(1.0,\x20-1.0,\x20false);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20var\x20minimumDistance\x20=\x20max(0.0,\x20outer.x);\x0a\x20\x20\x20\x20var\x20maximumDistance\x20=\x20outer.y;\x0a\x20\x20\x20\x20let\x20inner\x20=\x20intersectEllipsoid(worldOrigin,\x20worldDirection,\x20scene.geographic1.x\x20+\x20minimumHeight,\x20scene.geographic1.y\x20+\x20minimumHeight);\x0a\x0a\x20\x20\x20\x20if\x20(inner.y\x20>=\x20max(0.0,\x20inner.x))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(inner.x\x20>\x20minimumDistance)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20maximumDistance\x20=\x20min(maximumDistance,\x20inner.x);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x20else\x20if\x20(inner.y\x20>\x20minimumDistance)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20minimumDistance\x20=\x20max(minimumDistance,\x20inner.y);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20RayInterval(minimumDistance,\x20maximumDistance,\x20maximumDistance\x20>=\x20minimumDistance);\x0a}\x0a\x0afn\x20getPageIndex','create','struct\x20SceneParams\x20{\x0a\x20\x20\x20\x20viewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseViewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20modelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseModelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20cameraPosition:\x20vec4f,\x0a\x20\x20\x20\x20viewport:\x20vec4f,\x0a\x20\x20\x20\x20clipMinimum:\x20vec4f,\x0a\x20\x20\x20\x20clipMaximum:\x20vec4f,\x0a\x20\x20\x20\x20render:\x20vec4f,\x0a\x20\x20\x20\x20transfer:\x20vec4f,\x0a\x20\x20\x20\x20geographic0:\x20vec4f,\x0a\x20\x20\x20\x20geographic1:\x20vec4f,\x0a\x20\x20\x20\x20geographic2:\x20vec4f,\x0a}\x0a\x0astruct\x20VertexOutput\x20{\x0a\x20\x20\x20\x20@builtin(position)\x20position:\x20vec4f,\x0a\x20\x20\x20\x20@location(0)\x20color:\x20vec4f,\x0a}\x0a\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20scene:\x20SceneParams;\x0a\x0afn\x20transformScenePosition(position:\x20vec3f)\x20->\x20vec4f\x20{\x0a\x20\x20\x20\x20if\x20(scene.geographic0.x\x20<\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20scene.viewProjection\x20*\x20scene.modelMatrix\x20*\x20vec4f(position,\x201.0);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20longitude\x20=\x20mix(scene.geographic1.z,\x20scene.geographic1.w,\x20position.x);\x0a\x20\x20\x20\x20let\x20latitude\x20=\x20mix(scene.geographic2.x,\x20scene.geographic2.y,\x20position.z);\x0a\x20\x20\x20\x20let\x20height\x20=\x20mix(scene.geographic2.z,\x20scene.geographic2.w,\x20position.y);\x0a\x20\x20\x20\x20let\x20latitudeSin\x20=\x20sin(latitude);\x0a\x20\x20\x20\x20let\x20latitudeCos\x20=\x20cos(latitude);\x0a\x20\x20\x20\x20let\x20semiMajor\x20=\x20scene.geographic1.x;\x0a\x20\x20\x20\x20let\x20semiMinor\x20=\x20scene.geographic1.y;\x0a\x20\x20\x20\x20let\x20eccentricitySquared\x20=\x201.0\x20-\x20semiMinor\x20*\x20semiMinor\x20/\x20(semiMajor\x20*\x20semiMajor);\x0a\x20\x20\x20\x20let\x20primeVerticalRadius\x20=\x20semiMajor\x20/\x20sqrt(1.0\x20-\x20eccentricitySquared\x20*\x20latitudeSin\x20*\x20latitudeSin);\x0a\x20\x20\x20\x20let\x20ecef\x20=\x20vec3f(\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20+\x20height)\x20*\x20latitudeCos\x20*\x20cos(longitude),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20+\x20height)\x20*\x20latitudeCos\x20*\x20sin(longitude),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20*\x20(1.0\x20-\x20eccentricitySquared)\x20+\x20height)\x20*\x20latitudeSin\x0a\x20\x20\x20\x20);\x0a\x20\x20\x20\x20return\x20scene.viewProjection\x20*\x20vec4f(ecef\x20-\x20scene.geographic0.yzw,\x201.0);\x0a}\x0a\x0a@vertex\x0afn\x20vertexMain(@location(0)\x20position:\x20vec3f,\x20@location(1)\x20color:\x20vec4f)\x20->\x20VertexOutput\x20{\x0a\x20\x20\x20\x20return\x20VertexOutput(transformScenePosition(position),\x20color);\x0a}\x0a\x0a@fragment\x0afn\x20fragmentMain(input:\x20VertexOutput)\x20->\x20@location(0)\x20vec4f\x20{\x0a\x20\x20\x20\x20return\x20vec4f(input.color.rgb\x20*\x20input.color.a,\x20input.color.a);\x0a}\x0a','READ','lastFrameTimeMilliseconds','includes','trim','initializationGeneration','get','sourceYCount','finish','WebGPU\x20volume\x20atlas\x20layout\x20is\x20unavailable.\x20WebGPU\x20体积图集布局不可用。','pan','length','recreateSceneBindGroup','path','all','inverseViewProjection','touchBricks','BYTES_PER_ELEMENT','vertexMain','r32float','opacityBuffer','.\x20WebGPU\x20体积设备已丢失。','volume\x20brick\x20page\x20table','some','WebGPU\x20volume\x20bricks\x20require\x20halo\x201.\x20WebGPU\x20体积砖块要求\x20halo\x20为\x201。','subscribe','_addedHook','getInteractionKind','sceneSlicePipeline','不支持的\x20rgb\x20颜色格式:\x20','step','showDebugGeometry','Volume\x20opacity\x20stops\x20must\x20be\x20sorted\x20by\x20value.\x20体积透明度色标必须按数值升序排列。','interactionController','requestDevice','sliceId','不支持的\x20hex\x20颜色格式:\x20','isInteracting','centerEcef','shape','assertAlive','\x20\x20\x20\x20var\x20interval\x20=\x20intersectClipBox(nearModel,\x20direction);\x0a\x0a\x20\x20\x20\x20if\x20(scene.geographic0.x\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20shellInterval\x20=\x20intersectGeographicShell(nearModel,\x20direction);\x0a\x20\x20\x20\x20\x20\x20\x20\x20interval.minimum\x20=\x20max(interval.minimum,\x20shellInterval.minimum);\x0a\x20\x20\x20\x20\x20\x20\x20\x20interval.maximum\x20=\x20min(interval.maximum,\x20shellInterval.maximum);\x0a\x20\x20\x20\x20\x20\x20\x20\x20interval.valid\x20=\x20interval.valid\x20&&\x20shellInterval.valid\x20&&\x20interval.maximum\x20>=\x20interval.minimum;\x0a\x20\x20\x20\x20}','resources','Volume\x20brick\x20coordinate\x20is\x20out\x20of\x20range.\x20体积分块坐标越界。','value','inverseModelMatrix','writePageEntry','xAxis','matrices','read-only-storage','sceneBindGroup','logicalBrickCount','interactionStepScale','geometryBindGroup','push','volumeDimFactor\x20必须位于\x200\x20到\x201。','AbortError','background','stepLength','Height\x20/\x20高度','triangle-list','max','desiredKeys','unsubscribe','preview','navigationMode','WebGPU\x20volume\x20atlas\x20has\x20no\x20evictable\x20slot.\x20WebGPU\x20体积图集没有可驱逐的槽位。','2913824TLLqtw','writeParams','createBindGroup','volume\x20raymarch\x20shader','Module','revision','minY','.\x20体积分块\x20','pendingCompensationFrame','top','\x20position\x20must\x20be\x20normalized\x20to\x20zero\x20through\x20one.\x20体积切面位置必须归一化到零至一。','depthTexture','gpuBytes','atlasViews','\x20的\x20path\x20必须包含至少两个\x20[x,\x20z]\x20点。','external','readChunk','COPY_DST','renderDirty','wgs84','requestRender','onSlicesChange','setSource','min','WebGPU\x20volume\x20format\x20is\x20not\x20initialized.\x20WebGPU\x20体积格式尚未初始化。','auto','touchAction','beginInteraction','2317007SicHsy','lastUsedFrame','activePointer','sceneTrianglePipeline','struct\x20SceneParams\x20{\x0a\x20\x20\x20\x20viewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseViewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20modelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseModelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20cameraPosition:\x20vec4f,\x0a\x20\x20\x20\x20viewport:\x20vec4f,\x0a\x20\x20\x20\x20clipMinimum:\x20vec4f,\x0a\x20\x20\x20\x20clipMaximum:\x20vec4f,\x0a\x20\x20\x20\x20render:\x20vec4f,\x0a\x20\x20\x20\x20transfer:\x20vec4f,\x0a\x20\x20\x20\x20geographic0:\x20vec4f,\x0a\x20\x20\x20\x20geographic1:\x20vec4f,\x0a\x20\x20\x20\x20geographic2:\x20vec4f,\x0a}\x0a\x0astruct\x20VolumeParams\x20{\x0a\x20\x20\x20\x20dimensions:\x20vec4u,\x0a\x20\x20\x20\x20brickInterior:\x20vec4u,\x0a\x20\x20\x20\x20brickCount:\x20vec4u,\x0a\x20\x20\x20\x20atlasSlots:\x20vec4u,\x0a\x20\x20\x20\x20atlasDimensions:\x20vec4u,\x0a\x20\x20\x20\x20valueMeta:\x20vec4f,\x0a}\x0a\x0astruct\x20PageTable\x20{\x20values:\x20array<vec4u>\x20}\x0astruct\x20FloatValues\x20{\x20values:\x20array<f32>\x20}\x0astruct\x20Colors\x20{\x20values:\x20array<vec4f>\x20}\x0astruct\x20SliceParams\x20{\x0a\x20\x20\x20\x20data:\x20vec4f,\x0a\x20\x20\x20\x20plateColor:\x20vec4f,\x0a}\x0astruct\x20VolumeSample\x20{\x20value:\x20f32,\x20valid:\x20bool\x20}\x0a\x0astruct\x20SliceVertexOutput\x20{\x0a\x20\x20\x20\x20@builtin(position)\x20position:\x20vec4f,\x0a\x20\x20\x20\x20@location(0)\x20modelPosition:\x20vec3f,\x0a}\x0a\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20scene:\x20SceneParams;\x0a@group(1)\x20@binding(0)\x20var\x20volumeAtlas0:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(1)\x20var\x20volumeAtlas1:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(2)\x20var\x20volumeAtlas2:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(3)\x20var\x20volumeAtlas3:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(4)\x20var\x20volumeAtlas4:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(5)\x20var\x20volumeAtlas5:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(6)\x20var\x20volumeAtlas6:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(7)\x20var\x20volumeAtlas7:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(8)\x20var<storage,\x20read>\x20pageTable:\x20PageTable;\x0a@group(1)\x20@binding(9)\x20var<uniform>\x20volume:\x20VolumeParams;\x0a@group(2)\x20@binding(0)\x20var<storage,\x20read>\x20colorStopValues:\x20FloatValues;\x0a@group(2)\x20@binding(1)\x20var<storage,\x20read>\x20colorStopColors:\x20Colors;\x0a@group(2)\x20@binding(2)\x20var<storage,\x20read>\x20opacityStopValues:\x20FloatValues;\x0a@group(2)\x20@binding(3)\x20var<storage,\x20read>\x20opacityStopAlphas:\x20FloatValues;\x0a@group(3)\x20@binding(0)\x20var<uniform>\x20slice:\x20SliceParams;\x0a\x0afn\x20invalidVolumeSample()\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20return\x20VolumeSample(0.0,\x20false);\x0a}\x0a\x0afn\x20validVolumeSample(value:\x20f32)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20return\x20VolumeSample(value,\x20true);\x0a}\x0a\x0afn\x20getPageIndex(brick:\x20vec3u)\x20->\x20u32\x20{\x0a\x20\x20\x20\x20return\x20brick.x\x20+\x20brick.y\x20*\x20volume.brickCount.x\x20+\x20brick.z\x20*\x20volume.brickCount.x\x20*\x20volume.brickCount.y;\x0a}\x0a\x0afn\x20getSlotCoordinate(slotIndex:\x20u32)\x20->\x20vec3u\x20{\x0a\x20\x20\x20\x20let\x20layerSize\x20=\x20volume.atlasSlots.x\x20*\x20volume.atlasSlots.y;\x0a\x20\x20\x20\x20let\x20z\x20=\x20slotIndex\x20/\x20layerSize;\x0a\x20\x20\x20\x20let\x20remainder\x20=\x20slotIndex\x20-\x20z\x20*\x20layerSize;\x0a\x20\x20\x20\x20let\x20y\x20=\x20remainder\x20/\x20volume.atlasSlots.x;\x0a\x20\x20\x20\x20return\x20vec3u(remainder\x20-\x20y\x20*\x20volume.atlasSlots.x,\x20y,\x20z);\x0a}\x0a\x0afn\x20loadAtlasValue(atlasIndex:\x20u32,\x20coordinate:\x20vec3i)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x200u)\x20{\x20return\x20textureLoad(volumeAtlas0,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x201u)\x20{\x20return\x20textureLoad(volumeAtlas1,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x202u)\x20{\x20return\x20textureLoad(volumeAtlas2,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x203u)\x20{\x20return\x20textureLoad(volumeAtlas3,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x204u)\x20{\x20return\x20textureLoad(volumeAtlas4,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x205u)\x20{\x20return\x20textureLoad(volumeAtlas5,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x206u)\x20{\x20return\x20textureLoad(volumeAtlas6,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20return\x20textureLoad(volumeAtlas7,\x20coordinate,\x200).r;\x0a}\x0a\x0afn\x20loadAtlasVoxel(voxel:\x20vec3i,\x20owningBrick:\x20vec3u)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20let\x20page\x20=\x20pageTable.values[getPageIndex(owningBrick)];\x0a\x0a\x20\x20\x20\x20if\x20(page.x\x20==\x200u\x20||\x20page.z\x20==\x200u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20physicalBrick\x20=\x20volume.brickInterior.xyz\x20+\x20vec3u(2u);\x0a\x20\x20\x20\x20let\x20slot\x20=\x20getSlotCoordinate(page.x\x20-\x201u);\x0a\x20\x20\x20\x20let\x20local\x20=\x20voxel\x20-\x20vec3i(owningBrick\x20*\x20volume.brickInterior.xyz)\x20+\x20vec3i(1);\x0a\x20\x20\x20\x20let\x20value\x20=\x20loadAtlasValue(page.w,\x20vec3i(slot\x20*\x20physicalBrick)\x20+\x20local);\x0a\x0a\x20\x20\x20\x20if\x20(value\x20!=\x20value\x20||\x20(volume.valueMeta.y\x20>\x200.5\x20&&\x20value\x20==\x20volume.valueMeta.x))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20validVolumeSample(value);\x0a}\x0a\x0afn\x20sampleVolume(modelPosition:\x20vec3f)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20let\x20normalized\x20=\x20clamp(modelPosition,\x20vec3f(0.0),\x20vec3f(1.0));\x0a\x20\x20\x20\x20let\x20voxel\x20=\x20normalized\x20*\x20vec3f(volume.dimensions.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20baseVoxel\x20=\x20vec3i(floor(voxel));\x0a\x20\x20\x20\x20let\x20nextVoxel\x20=\x20min(baseVoxel\x20+\x20vec3i(1),\x20vec3i(volume.dimensions.xyz\x20-\x20vec3u(1u)));\x0a\x20\x20\x20\x20let\x20fraction\x20=\x20voxel\x20-\x20vec3f(baseVoxel);\x0a\x20\x20\x20\x20let\x20owningBrick\x20=\x20min(vec3u(baseVoxel)\x20/\x20volume.brickInterior.xyz,\x20volume.brickCount.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20c000\x20=\x20loadAtlasVoxel(baseVoxel,\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c100\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20baseVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c010\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20nextVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c110\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20nextVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c001\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20baseVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c101\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20baseVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c011\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20nextVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c111\x20=\x20loadAtlasVoxel(nextVoxel,\x20owningBrick);\x0a\x0a\x20\x20\x20\x20if\x20(!c000.valid\x20||\x20!c100.valid\x20||\x20!c010.valid\x20||\x20!c110.valid\x20||\x20!c001.valid\x20||\x20!c101.valid\x20||\x20!c011.valid\x20||\x20!c111.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20bottom\x20=\x20mix(mix(c000.value,\x20c100.value,\x20fraction.x),\x20mix(c010.value,\x20c110.value,\x20fraction.x),\x20fraction.y);\x0a\x20\x20\x20\x20let\x20top\x20=\x20mix(mix(c001.value,\x20c101.value,\x20fraction.x),\x20mix(c011.value,\x20c111.value,\x20fraction.x),\x20fraction.y);\x0a\x20\x20\x20\x20return\x20validVolumeSample(mix(bottom,\x20top,\x20fraction.z));\x0a}\x0a\x0afn\x20sampleColor(value:\x20f32)\x20->\x20vec4f\x20{\x0a\x20\x20\x20\x20let\x20count\x20=\x20u32(scene.transfer.x);\x0a\x0a\x20\x20\x20\x20if\x20(count\x20==\x201u\x20||\x20value\x20<=\x20colorStopValues.values[0u])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20colorStopColors.values[0u];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20+\x201u\x20<\x20count;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20start\x20=\x20colorStopValues.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20end\x20=\x20colorStopValues.values[index\x20+\x201u];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20<\x20end)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(scene.transfer.w\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20colorStopColors.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20mix(colorStopColors.values[index],\x20colorStopColors.values[index\x20+\x201u],\x20clamp((value\x20-\x20start)\x20/\x20max(end\x20-\x20start,\x200.000001),\x200.0,\x201.0));\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20colorStopColors.values[count\x20-\x201u];\x0a}\x0a\x0afn\x20sampleOpacity(value:\x20f32)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20let\x20count\x20=\x20u32(scene.transfer.y);\x0a\x0a\x20\x20\x20\x20if\x20(count\x20==\x201u\x20||\x20value\x20<=\x20opacityStopValues.values[0u])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20opacityStopAlphas.values[0u];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20+\x201u\x20<\x20count;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20start\x20=\x20opacityStopValues.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20end\x20=\x20opacityStopValues.values[index\x20+\x201u];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20<\x20end)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(scene.transfer.w\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20opacityStopAlphas.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20mix(opacityStopAlphas.values[index],\x20opacityStopAlphas.values[index\x20+\x201u],\x20clamp((value\x20-\x20start)\x20/\x20max(end\x20-\x20start,\x200.000001),\x200.0,\x201.0));\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20opacityStopAlphas.values[count\x20-\x201u];\x0a}\x0a\x0afn\x20getPlanePosition(axis:\x20u32,\x20planePosition:\x20f32,\x20corner:\x20vec2f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20if\x20(axis\x20==\x200u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec3f(planePosition,\x20corner.x,\x20corner.y);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(axis\x20==\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec3f(corner.x,\x20planePosition,\x20corner.y);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20vec3f(corner.x,\x20corner.y,\x20planePosition);\x0a}\x0a\x0afn\x20getCorner(vertexIndex:\x20u32)\x20->\x20vec2f\x20{\x0a\x20\x20\x20\x20let\x20corners\x20=\x20array<vec2f,\x206>(\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec2f(0.0,\x200.0),\x20vec2f(1.0,\x200.0),\x20vec2f(0.0,\x201.0),\x0a\x20\x20\x20\x20\x20\x20\x20\x20vec2f(0.0,\x201.0),\x20vec2f(1.0,\x200.0),\x20vec2f(1.0,\x201.0)\x0a\x20\x20\x20\x20);\x0a\x20\x20\x20\x20return\x20corners[vertexIndex];\x0a}\x0a\x0afn\x20getTessellatedCorner(vertexIndex:\x20u32)\x20->\x20vec2f\x20{\x0a\x20\x20\x20\x20let\x20gridSize\x20=\x2032u;\x0a\x20\x20\x20\x20let\x20cellIndex\x20=\x20vertexIndex\x20/\x206u;\x0a\x20\x20\x20\x20let\x20cellX\x20=\x20cellIndex\x20%\x20gridSize;\x0a\x20\x20\x20\x20let\x20cellY\x20=\x20cellIndex\x20/\x20gridSize;\x0a\x20\x20\x20\x20return\x20(vec2f(f32(cellX),\x20f32(cellY))\x20+\x20getCorner(vertexIndex\x20%\x206u))\x20/\x20f32(gridSize);\x0a}\x0a\x0afn\x20volumeToWorld(position:\x20vec3f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20if\x20(scene.geographic0.x\x20<\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20transformed\x20=\x20scene.modelMatrix\x20*\x20vec4f(position,\x201.0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20transformed.xyz\x20/\x20transformed.w;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20longitude\x20=\x20mix(scene.geographic1.z,\x20scene.geographic1.w,\x20position.x);\x0a\x20\x20\x20\x20let\x20latitude\x20=\x20mix(scene.geographic2.x,\x20scene.geographic2.y,\x20position.z);\x0a\x20\x20\x20\x20let\x20height\x20=\x20mix(scene.geographic2.z,\x20scene.geographic2.w,\x20position.y);\x0a\x20\x20\x20\x20let\x20latitudeSin\x20=\x20sin(latitude);\x0a\x20\x20\x20\x20let\x20latitudeCos\x20=\x20cos(latitude);\x0a\x20\x20\x20\x20let\x20semiMajor\x20=\x20scene.geographic1.x;\x0a\x20\x20\x20\x20let\x20semiMinor\x20=\x20scene.geographic1.y;\x0a\x20\x20\x20\x20let\x20eccentricitySquared\x20=\x201.0\x20-\x20semiMinor\x20*\x20semiMinor\x20/\x20(semiMajor\x20*\x20semiMajor);\x0a\x20\x20\x20\x20let\x20primeVerticalRadius\x20=\x20semiMajor\x20/\x20sqrt(1.0\x20-\x20eccentricitySquared\x20*\x20latitudeSin\x20*\x20latitudeSin);\x0a\x20\x20\x20\x20let\x20ecef\x20=\x20vec3f(\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20+\x20height)\x20*\x20latitudeCos\x20*\x20cos(longitude),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20+\x20height)\x20*\x20latitudeCos\x20*\x20sin(longitude),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(primeVerticalRadius\x20*\x20(1.0\x20-\x20eccentricitySquared)\x20+\x20height)\x20*\x20latitudeSin\x0a\x20\x20\x20\x20);\x0a\x20\x20\x20\x20return\x20ecef\x20-\x20scene.geographic0.yzw;\x0a}\x0a\x0a@vertex\x0afn\x20vertexMain(@builtin(vertex_index)\x20vertexIndex:\x20u32)\x20->\x20SliceVertexOutput\x20{\x0a\x20\x20\x20\x20let\x20modelPosition\x20=\x20getPlanePosition(u32(slice.data.x),\x20slice.data.y,\x20getTessellatedCorner(vertexIndex));\x0a\x20\x20\x20\x20let\x20clipPosition\x20=\x20scene.viewProjection\x20*\x20vec4f(volumeToWorld(modelPosition),\x201.0);\x0a\x20\x20\x20\x20return\x20SliceVertexOutput(clipPosition,\x20modelPosition);\x0a}\x0a\x0a@fragment\x0afn\x20fragmentMain(input:\x20SliceVertexOutput)\x20->\x20@location(0)\x20vec4f\x20{\x0a\x20\x20\x20\x20let\x20sample\x20=\x20sampleVolume(input.modelPosition);\x0a\x20\x20\x20\x20let\x20plateAlpha\x20=\x20slice.plateColor.a;\x0a\x20\x20\x20\x20let\x20platePremultiplied\x20=\x20slice.plateColor.rgb\x20*\x20plateAlpha;\x0a\x0a\x20\x20\x20\x20if\x20(!sample.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(plateAlpha\x20<=\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20discard;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec4f(platePremultiplied,\x20plateAlpha);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20color\x20=\x20sampleColor(sample.value);\x0a\x20\x20\x20\x20let\x20alpha\x20=\x20color.a\x20*\x20sampleOpacity(sample.value)\x20*\x20slice.data.z;\x0a\x20\x20\x20\x20//\x20彩色数据覆盖白色透明底板,二者在同一\x20fragment\x20中合成以避免重合面的深度冲突。\x0a\x20\x20\x20\x20//\x20Colored\x20data\x20is\x20composited\x20over\x20the\x20translucent\x20white\x20plate\x20in\x20one\x20fragment\x20to\x20avoid\x20coplanar\x20depth\x20conflicts.\x0a\x20\x20\x20\x20let\x20outputAlpha\x20=\x20alpha\x20+\x20plateAlpha\x20*\x20(1.0\x20-\x20alpha);\x0a\x20\x20\x20\x20let\x20outputColor\x20=\x20color.rgb\x20*\x20alpha\x20+\x20platePremultiplied\x20*\x20(1.0\x20-\x20alpha);\x0a\x20\x20\x20\x20return\x20vec4f(outputColor,\x20outputAlpha);\x0a}\x0a','readyResolve','filter','getSliceResources','正交相机高度必须大于\x200。','coreRange','矩阵不可逆。','hitTolerancePixels','fovYRadians','performance','minimumPitch','destroy','markers','sqrt','createShaderModule','2529FuiAyN','heights','sliceState','slices','\x20values\x20but\x20received\x20','topology','sliceResources','reject','maxTextureDimension3D','autoFrameCount','autoQuality','onSubmittedWorkDone','maximumUploadBatchBytes','setBindGroup','captureFrame','minZ','struct\x20SceneParams\x20{\x0a\x20\x20\x20\x20viewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseViewProjection:\x20mat4x4f,\x0a\x20\x20\x20\x20modelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20inverseModelMatrix:\x20mat4x4f,\x0a\x20\x20\x20\x20cameraPosition:\x20vec4f,\x0a\x20\x20\x20\x20viewport:\x20vec4f,\x0a\x20\x20\x20\x20clipMinimum:\x20vec4f,\x0a\x20\x20\x20\x20clipMaximum:\x20vec4f,\x0a\x20\x20\x20\x20render:\x20vec4f,\x0a\x20\x20\x20\x20transfer:\x20vec4f,\x0a\x20\x20\x20\x20geographic0:\x20vec4f,\x0a\x20\x20\x20\x20geographic1:\x20vec4f,\x0a\x20\x20\x20\x20geographic2:\x20vec4f,\x0a}\x0a\x0astruct\x20VolumeParams\x20{\x0a\x20\x20\x20\x20dimensions:\x20vec4u,\x0a\x20\x20\x20\x20brickInterior:\x20vec4u,\x0a\x20\x20\x20\x20brickCount:\x20vec4u,\x0a\x20\x20\x20\x20atlasSlots:\x20vec4u,\x0a\x20\x20\x20\x20atlasDimensions:\x20vec4u,\x0a\x20\x20\x20\x20valueMeta:\x20vec4f,\x0a}\x0a\x0astruct\x20PageTable\x20{\x0a\x20\x20\x20\x20values:\x20array<vec4u>,\x0a}\x0a\x0astruct\x20FloatValues\x20{\x0a\x20\x20\x20\x20values:\x20array<f32>,\x0a}\x0a\x0astruct\x20Colors\x20{\x0a\x20\x20\x20\x20values:\x20array<vec4f>,\x0a}\x0a\x0astruct\x20VolumeSample\x20{\x0a\x20\x20\x20\x20value:\x20f32,\x0a\x20\x20\x20\x20valid:\x20bool,\x0a}\x0a\x0astruct\x20RayInterval\x20{\x0a\x20\x20\x20\x20minimum:\x20f32,\x0a\x20\x20\x20\x20maximum:\x20f32,\x0a\x20\x20\x20\x20valid:\x20bool,\x0a}\x0a\x0a@group(0)\x20@binding(0)\x20var<uniform>\x20scene:\x20SceneParams;\x0a@group(0)\x20@binding(1)\x20var\x20sceneDepth:\x20texture_depth_2d;\x0a@group(1)\x20@binding(0)\x20var\x20volumeAtlas0:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(1)\x20var\x20volumeAtlas1:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(2)\x20var\x20volumeAtlas2:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(3)\x20var\x20volumeAtlas3:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(4)\x20var\x20volumeAtlas4:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(5)\x20var\x20volumeAtlas5:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(6)\x20var\x20volumeAtlas6:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(7)\x20var\x20volumeAtlas7:\x20texture_3d<f32>;\x0a@group(1)\x20@binding(8)\x20var<storage,\x20read>\x20pageTable:\x20PageTable;\x0a@group(1)\x20@binding(9)\x20var<uniform>\x20volume:\x20VolumeParams;\x0a@group(2)\x20@binding(0)\x20var<storage,\x20read>\x20colorStopValues:\x20FloatValues;\x0a@group(2)\x20@binding(1)\x20var<storage,\x20read>\x20colorStopColors:\x20Colors;\x0a@group(2)\x20@binding(2)\x20var<storage,\x20read>\x20opacityStopValues:\x20FloatValues;\x0a@group(2)\x20@binding(3)\x20var<storage,\x20read>\x20opacityStopAlphas:\x20FloatValues;\x0a\x0afn\x20invalidVolumeSample()\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20return\x20VolumeSample(0.0,\x20false);\x0a}\x0a\x0afn\x20validVolumeSample(value:\x20f32)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20return\x20VolumeSample(value,\x20true);\x0a}\x0a\x0afn\x20transformPoint(matrix:\x20mat4x4f,\x20point:\x20vec3f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20let\x20transformed\x20=\x20matrix\x20*\x20vec4f(point,\x201.0);\x0a\x20\x20\x20\x20return\x20transformed.xyz\x20/\x20transformed.w;\x0a}\x0a\x0afn\x20reconstructWorldPosition(ndc:\x20vec3f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20return\x20transformPoint(scene.inverseViewProjection,\x20ndc);\x0a}\x0a\x0a//\x20地理模式将局部\x20ECEF\x20采样点反算为经纬高归一化坐标;代理盒仅限制射线范围,不决定体积形状。\x0a//\x20Geographic\x20mode\x20converts\x20each\x20local\x20ECEF\x20sample\x20back\x20to\x20normalized\x20longitude,\x20latitude,\x20and\x20altitude;\x20the\x20proxy\x20box\x20only\x20limits\x20the\x20ray\x20interval\x20and\x20does\x20not\x20define\x20the\x20volume\x20shape.\x0afn\x20worldToVolume(worldPosition:\x20vec3f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20if\x20(scene.geographic0.x\x20<\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20transformPoint(scene.inverseModelMatrix,\x20worldPosition);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20ecef\x20=\x20worldPosition\x20+\x20scene.geographic0.yzw;\x0a\x20\x20\x20\x20let\x20semiMajor\x20=\x20scene.geographic1.x;\x0a\x20\x20\x20\x20let\x20semiMinor\x20=\x20scene.geographic1.y;\x0a\x20\x20\x20\x20let\x20eccentricitySquared\x20=\x201.0\x20-\x20semiMinor\x20*\x20semiMinor\x20/\x20(semiMajor\x20*\x20semiMajor);\x0a\x20\x20\x20\x20let\x20secondEccentricitySquared\x20=\x20(semiMajor\x20*\x20semiMajor\x20-\x20semiMinor\x20*\x20semiMinor)\x20/\x20(semiMinor\x20*\x20semiMinor);\x0a\x20\x20\x20\x20let\x20horizontal\x20=\x20length(ecef.xy);\x0a\x20\x20\x20\x20let\x20theta\x20=\x20atan2(ecef.z\x20*\x20semiMajor,\x20horizontal\x20*\x20semiMinor);\x0a\x20\x20\x20\x20let\x20thetaSin\x20=\x20sin(theta);\x0a\x20\x20\x20\x20let\x20thetaCos\x20=\x20cos(theta);\x0a\x20\x20\x20\x20let\x20latitude\x20=\x20atan2(\x0a\x20\x20\x20\x20\x20\x20\x20\x20ecef.z\x20+\x20secondEccentricitySquared\x20*\x20semiMinor\x20*\x20thetaSin\x20*\x20thetaSin\x20*\x20thetaSin,\x0a\x20\x20\x20\x20\x20\x20\x20\x20horizontal\x20-\x20eccentricitySquared\x20*\x20semiMajor\x20*\x20thetaCos\x20*\x20thetaCos\x20*\x20thetaCos\x0a\x20\x20\x20\x20);\x0a\x20\x20\x20\x20let\x20latitudeSin\x20=\x20sin(latitude);\x0a\x20\x20\x20\x20let\x20primeVerticalRadius\x20=\x20semiMajor\x20/\x20sqrt(1.0\x20-\x20eccentricitySquared\x20*\x20latitudeSin\x20*\x20latitudeSin);\x0a\x20\x20\x20\x20let\x20height\x20=\x20horizontal\x20/\x20max(0.000001,\x20abs(cos(latitude)))\x20-\x20primeVerticalRadius;\x0a\x20\x20\x20\x20let\x20longitude\x20=\x20atan2(ecef.y,\x20ecef.x);\x0a\x20\x20\x20\x20return\x20vec3f(\x0a\x20\x20\x20\x20\x20\x20\x20\x20(longitude\x20-\x20scene.geographic1.z)\x20/\x20(scene.geographic1.w\x20-\x20scene.geographic1.z),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(height\x20-\x20scene.geographic2.z)\x20/\x20(scene.geographic2.w\x20-\x20scene.geographic2.z),\x0a\x20\x20\x20\x20\x20\x20\x20\x20(latitude\x20-\x20scene.geographic2.x)\x20/\x20(scene.geographic2.y\x20-\x20scene.geographic2.x)\x0a\x20\x20\x20\x20);\x0a}\x0a\x0afn\x20proxyToVolume(proxyPosition:\x20vec3f)\x20->\x20vec3f\x20{\x0a\x20\x20\x20\x20if\x20(scene.geographic0.x\x20<\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20proxyPosition;\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20worldToVolume(transformPoint(scene.modelMatrix,\x20proxyPosition));\x0a}\x0a\x0afn\x20isInsideVolume(position:\x20vec3f)\x20->\x20bool\x20{\x0a\x20\x20\x20\x20return\x20all(position\x20>=\x20scene.clipMinimum.xyz)\x20&&\x20all(position\x20<=\x20scene.clipMaximum.xyz);\x0a}\x0a\x0afn\x20intersectAxis(origin:\x20f32,\x20direction:\x20f32,\x20minimumValue:\x20f32,\x20maximumValue:\x20f32)\x20->\x20vec2f\x20{\x0a\x20\x20\x20\x20if\x20(abs(direction)\x20<\x200.000001)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(origin\x20<\x20minimumValue\x20||\x20origin\x20>\x20maximumValue)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec2f(1.0,\x20-1.0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec2f(-1e20,\x201e20);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20first\x20=\x20(minimumValue\x20-\x20origin)\x20/\x20direction;\x0a\x20\x20\x20\x20let\x20second\x20=\x20(maximumValue\x20-\x20origin)\x20/\x20direction;\x0a\x20\x20\x20\x20return\x20vec2f(min(first,\x20second),\x20max(first,\x20second));\x0a}\x0a\x0afn\x20intersectClipBox(origin:\x20vec3f,\x20direction:\x20vec3f)\x20->\x20RayInterval\x20{\x0a\x20\x20\x20\x20let\x20x\x20=\x20intersectAxis(origin.x,\x20direction.x,\x20scene.clipMinimum.x,\x20scene.clipMaximum.x);\x0a\x20\x20\x20\x20let\x20y\x20=\x20intersectAxis(origin.y,\x20direction.y,\x20scene.clipMinimum.y,\x20scene.clipMaximum.y);\x0a\x20\x20\x20\x20let\x20z\x20=\x20intersectAxis(origin.z,\x20direction.z,\x20scene.clipMinimum.z,\x20scene.clipMaximum.z);\x0a\x20\x20\x20\x20let\x20minimumDistance\x20=\x20max(max(x.x,\x20y.x),\x20z.x);\x0a\x20\x20\x20\x20let\x20maximumDistance\x20=\x20min(min(x.y,\x20y.y),\x20z.y);\x0a\x20\x20\x20\x20return\x20RayInterval(max(0.0,\x20minimumDistance),\x20maximumDistance,\x20maximumDistance\x20>=\x20max(0.0,\x20minimumDistance));\x0a}\x0a\x0afn\x20getPageIndex(brick:\x20vec3u)\x20->\x20u32\x20{\x0a\x20\x20\x20\x20return\x20brick.x\x20+\x20brick.y\x20*\x20volume.brickCount.x\x20+\x20brick.z\x20*\x20volume.brickCount.x\x20*\x20volume.brickCount.y;\x0a}\x0a\x0afn\x20getSlotCoordinate(slotIndex:\x20u32)\x20->\x20vec3u\x20{\x0a\x20\x20\x20\x20let\x20layerSize\x20=\x20volume.atlasSlots.x\x20*\x20volume.atlasSlots.y;\x0a\x20\x20\x20\x20let\x20z\x20=\x20slotIndex\x20/\x20layerSize;\x0a\x20\x20\x20\x20let\x20remainder\x20=\x20slotIndex\x20-\x20z\x20*\x20layerSize;\x0a\x20\x20\x20\x20let\x20y\x20=\x20remainder\x20/\x20volume.atlasSlots.x;\x0a\x20\x20\x20\x20let\x20x\x20=\x20remainder\x20-\x20y\x20*\x20volume.atlasSlots.x;\x0a\x20\x20\x20\x20return\x20vec3u(x,\x20y,\x20z);\x0a}\x0a\x0afn\x20loadAtlasValue(atlasIndex:\x20u32,\x20coordinate:\x20vec3i)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x200u)\x20{\x20return\x20textureLoad(volumeAtlas0,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x201u)\x20{\x20return\x20textureLoad(volumeAtlas1,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x202u)\x20{\x20return\x20textureLoad(volumeAtlas2,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x203u)\x20{\x20return\x20textureLoad(volumeAtlas3,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x204u)\x20{\x20return\x20textureLoad(volumeAtlas4,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x205u)\x20{\x20return\x20textureLoad(volumeAtlas5,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20if\x20(atlasIndex\x20==\x206u)\x20{\x20return\x20textureLoad(volumeAtlas6,\x20coordinate,\x200).r;\x20}\x0a\x20\x20\x20\x20return\x20textureLoad(volumeAtlas7,\x20coordinate,\x200).r;\x0a}\x0a\x0afn\x20loadAtlasVoxel(voxel:\x20vec3i,\x20owningBrick:\x20vec3u)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20let\x20page\x20=\x20pageTable.values[getPageIndex(owningBrick)];\x0a\x0a\x20\x20\x20\x20if\x20(page.x\x20==\x200u\x20||\x20page.z\x20==\x200u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20slot\x20=\x20getSlotCoordinate(page.x\x20-\x201u);\x0a\x20\x20\x20\x20let\x20physicalBrick\x20=\x20volume.brickInterior.xyz\x20+\x20vec3u(2u);\x0a\x20\x20\x20\x20let\x20brickStart\x20=\x20vec3i(owningBrick\x20*\x20volume.brickInterior.xyz);\x0a\x20\x20\x20\x20let\x20local\x20=\x20voxel\x20-\x20brickStart\x20+\x20vec3i(1);\x0a\x20\x20\x20\x20let\x20atlasCoordinate\x20=\x20vec3i(slot\x20*\x20physicalBrick)\x20+\x20local;\x0a\x20\x20\x20\x20let\x20value\x20=\x20loadAtlasValue(page.w,\x20atlasCoordinate);\x0a\x0a\x20\x20\x20\x20if\x20(value\x20!=\x20value\x20||\x20(volume.valueMeta.y\x20>\x200.5\x20&&\x20value\x20==\x20volume.valueMeta.x))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20validVolumeSample(value);\x0a}\x0a\x0afn\x20sampleVolume(modelPosition:\x20vec3f)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20let\x20normalized\x20=\x20clamp(modelPosition,\x20vec3f(0.0),\x20vec3f(1.0));\x0a\x20\x20\x20\x20let\x20voxel\x20=\x20normalized\x20*\x20vec3f(volume.dimensions.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20baseVoxel\x20=\x20vec3i(floor(voxel));\x0a\x20\x20\x20\x20let\x20maximumVoxel\x20=\x20vec3i(volume.dimensions.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20nextVoxel\x20=\x20min(baseVoxel\x20+\x20vec3i(1),\x20maximumVoxel);\x0a\x20\x20\x20\x20let\x20fraction\x20=\x20voxel\x20-\x20vec3f(baseVoxel);\x0a\x20\x20\x20\x20let\x20owningBrick\x20=\x20min(vec3u(max(baseVoxel,\x20vec3i(0)))\x20/\x20volume.brickInterior.xyz,\x20volume.brickCount.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20c000\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20baseVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c100\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20baseVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c010\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20nextVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c110\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20nextVoxel.y,\x20baseVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c001\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20baseVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c101\x20=\x20loadAtlasVoxel(vec3i(nextVoxel.x,\x20baseVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c011\x20=\x20loadAtlasVoxel(vec3i(baseVoxel.x,\x20nextVoxel.y,\x20nextVoxel.z),\x20owningBrick);\x0a\x20\x20\x20\x20let\x20c111\x20=\x20loadAtlasVoxel(nextVoxel,\x20owningBrick);\x0a\x0a\x20\x20\x20\x20if\x20(!c000.valid\x20||\x20!c100.valid\x20||\x20!c010.valid\x20||\x20!c110.valid\x20||\x20!c001.valid\x20||\x20!c101.valid\x20||\x20!c011.valid\x20||\x20!c111.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20invalidVolumeSample();\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20bottom0\x20=\x20mix(c000.value,\x20c100.value,\x20fraction.x);\x0a\x20\x20\x20\x20let\x20bottom1\x20=\x20mix(c010.value,\x20c110.value,\x20fraction.x);\x0a\x20\x20\x20\x20let\x20top0\x20=\x20mix(c001.value,\x20c101.value,\x20fraction.x);\x0a\x20\x20\x20\x20let\x20top1\x20=\x20mix(c011.value,\x20c111.value,\x20fraction.x);\x0a\x20\x20\x20\x20return\x20validVolumeSample(mix(mix(bottom0,\x20bottom1,\x20fraction.y),\x20mix(top0,\x20top1,\x20fraction.y),\x20fraction.z));\x0a}\x0a\x0a//\x20体积分步只读取当前最近体素,避免对最终透明的样本执行八次纹理读取;高精度切面仍使用独立的三线性采样。\x0a//\x20Raymarch\x20steps\x20read\x20the\x20nearest\x20voxel\x20so\x20transparent\x20samples\x20avoid\x20eight\x20texture\x20loads;\x20high-detail\x20slices\x20keep\x20their\x20separate\x20trilinear\x20sampling.\x0afn\x20sampleVolumeNearest(modelPosition:\x20vec3f)\x20->\x20VolumeSample\x20{\x0a\x20\x20\x20\x20let\x20normalized\x20=\x20clamp(modelPosition,\x20vec3f(0.0),\x20vec3f(1.0));\x0a\x20\x20\x20\x20let\x20maximumVoxel\x20=\x20volume.dimensions.xyz\x20-\x20vec3u(1u);\x0a\x20\x20\x20\x20let\x20voxel\x20=\x20vec3i(round(normalized\x20*\x20vec3f(maximumVoxel)));\x0a\x20\x20\x20\x20let\x20owningBrick\x20=\x20min(vec3u(max(voxel,\x20vec3i(0)))\x20/\x20volume.brickInterior.xyz,\x20volume.brickCount.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20return\x20loadAtlasVoxel(voxel,\x20owningBrick);\x0a}\x0a\x0afn\x20sampleColor(value:\x20f32)\x20->\x20vec4f\x20{\x0a\x20\x20\x20\x20let\x20count\x20=\x20u32(scene.transfer.x);\x0a\x0a\x20\x20\x20\x20if\x20(count\x20==\x201u\x20||\x20value\x20<=\x20colorStopValues.values[0u])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20colorStopColors.values[0u];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20+\x201u\x20<\x20count;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20start\x20=\x20colorStopValues.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20end\x20=\x20colorStopValues.values[index\x20+\x201u];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20<\x20end)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(scene.transfer.w\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20colorStopColors.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20ratio\x20=\x20clamp((value\x20-\x20start)\x20/\x20max(end\x20-\x20start,\x200.000001),\x200.0,\x201.0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20mix(colorStopColors.values[index],\x20colorStopColors.values[index\x20+\x201u],\x20ratio);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20colorStopColors.values[count\x20-\x201u];\x0a}\x0a\x0afn\x20sampleOpacity(value:\x20f32)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20let\x20count\x20=\x20u32(scene.transfer.y);\x0a\x0a\x20\x20\x20\x20if\x20(count\x20==\x201u\x20||\x20value\x20<=\x20opacityStopValues.values[0u])\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20opacityStopAlphas.values[0u];\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20+\x201u\x20<\x20count;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20start\x20=\x20opacityStopValues.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20end\x20=\x20opacityStopValues.values[index\x20+\x201u];\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(value\x20<\x20end)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(scene.transfer.w\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20opacityStopAlphas.values[index];\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20ratio\x20=\x20clamp((value\x20-\x20start)\x20/\x20max(end\x20-\x20start,\x200.000001),\x200.0,\x201.0);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20return\x20mix(opacityStopAlphas.values[index],\x20opacityStopAlphas.values[index\x20+\x201u],\x20ratio);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20return\x20opacityStopAlphas.values[count\x20-\x201u];\x0a}\x0a\x0afn\x20nextBrickAxisDistance(position:\x20f32,\x20direction:\x20f32,\x20minimumValue:\x20f32,\x20maximumValue:\x20f32)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20if\x20(direction\x20>\x200.000001)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20max(scene.render.w,\x20(maximumValue\x20-\x20position)\x20/\x20direction\x20+\x20scene.render.w\x20*\x200.25);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20if\x20(direction\x20<\x20-0.000001)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20max(scene.render.w,\x20(minimumValue\x20-\x20position)\x20/\x20direction\x20+\x20scene.render.w\x20*\x200.25);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x201e20;\x0a}\x0a\x0afn\x20getEmptyBrickSkipDistance(position:\x20vec3f,\x20direction:\x20vec3f)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20let\x20normalized\x20=\x20clamp(position,\x20vec3f(0.0),\x20vec3f(1.0));\x0a\x20\x20\x20\x20let\x20maximumVoxel\x20=\x20volume.dimensions.xyz\x20-\x20vec3u(1u);\x0a\x20\x20\x20\x20let\x20safeMaximumVoxel\x20=\x20max(maximumVoxel,\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20voxel\x20=\x20vec3u(floor(normalized\x20*\x20vec3f(maximumVoxel)));\x0a\x20\x20\x20\x20let\x20brick\x20=\x20min(voxel\x20/\x20volume.brickInterior.xyz,\x20volume.brickCount.xyz\x20-\x20vec3u(1u));\x0a\x20\x20\x20\x20let\x20page\x20=\x20pageTable.values[getPageIndex(brick)];\x0a\x0a\x20\x20\x20\x20if\x20(page.x\x20!=\x200u\x20&&\x20page.z\x20!=\x200u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x200.0;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20minimumPosition\x20=\x20vec3f(brick\x20*\x20volume.brickInterior.xyz)\x20/\x20vec3f(safeMaximumVoxel);\x0a\x20\x20\x20\x20let\x20maximumPosition\x20=\x20vec3f(min((brick\x20+\x20vec3u(1u))\x20*\x20volume.brickInterior.xyz,\x20maximumVoxel))\x20/\x20vec3f(safeMaximumVoxel);\x0a\x20\x20\x20\x20return\x20min(\x0a\x20\x20\x20\x20\x20\x20\x20\x20nextBrickAxisDistance(normalized.x,\x20direction.x,\x20minimumPosition.x,\x20maximumPosition.x),\x0a\x20\x20\x20\x20\x20\x20\x20\x20min(\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20nextBrickAxisDistance(normalized.y,\x20direction.y,\x20minimumPosition.y,\x20maximumPosition.y),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20nextBrickAxisDistance(normalized.z,\x20direction.z,\x20minimumPosition.z,\x20maximumPosition.z)\x0a\x20\x20\x20\x20\x20\x20\x20\x20)\x0a\x20\x20\x20\x20);\x0a}\x0a\x0afn\x20getDepthDistance(pixel:\x20vec2i,\x20ndcXY:\x20vec2f,\x20rayOrigin:\x20vec3f,\x20rayDirection:\x20vec3f)\x20->\x20f32\x20{\x0a\x20\x20\x20\x20let\x20depth\x20=\x20textureLoad(sceneDepth,\x20pixel,\x200);\x0a\x0a\x20\x20\x20\x20if\x20(depth\x20>=\x201.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x201e20;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20depthWorld\x20=\x20reconstructWorldPosition(vec3f(ndcXY,\x20depth));\x0a\x20\x20\x20\x20let\x20depthModel\x20=\x20transformPoint(scene.inverseModelMatrix,\x20depthWorld);\x0a\x20\x20\x20\x20return\x20max(0.0,\x20dot(depthModel\x20-\x20rayOrigin,\x20rayDirection));\x0a}\x0a\x0afn\x20raymarchComposite(origin:\x20vec3f,\x20direction:\x20vec3f,\x20interval:\x20RayInterval)\x20->\x20vec4f\x20{\x0a\x20\x20\x20\x20var\x20accumulated\x20=\x20vec4f(0.0);\x0a\x20\x20\x20\x20var\x20distance\x20=\x20interval.minimum;\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20<\x204096u\x20&&\x20distance\x20<=\x20interval.maximum\x20&&\x20accumulated.a\x20<\x200.985;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20proxyPosition\x20=\x20origin\x20+\x20direction\x20*\x20distance;\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20skipDistance\x20=\x20select(0.0,\x20getEmptyBrickSkipDistance(proxyPosition,\x20direction),\x20scene.geographic0.x\x20<\x200.5);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(skipDistance\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20skipDistance;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20volumePosition\x20=\x20proxyToVolume(proxyPosition);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!isInsideVolume(volumePosition))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20scene.render.w;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20sample\x20=\x20sampleVolumeNearest(volumePosition);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(sample.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20sampleAlpha\x20=\x20sampleOpacity(sample.value);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20if\x20(sampleAlpha\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20color\x20=\x20sampleColor(sample.value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20alpha\x20=\x201.0\x20-\x20exp(-sampleAlpha\x20*\x20scene.render.z\x20*\x20scene.render.w);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20let\x20contribution\x20=\x20(1.0\x20-\x20accumulated.a)\x20*\x20alpha;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20accumulated\x20=\x20vec4f(accumulated.rgb\x20+\x20color.rgb\x20*\x20contribution,\x20accumulated.a\x20+\x20contribution);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20scene.render.w;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20finalAlpha\x20=\x20accumulated.a\x20*\x20scene.render.y\x20*\x20scene.transfer.z;\x0a\x20\x20\x20\x20return\x20vec4f(accumulated.rgb\x20*\x20scene.render.y\x20*\x20scene.transfer.z,\x20finalAlpha);\x0a}\x0a\x0afn\x20raymarchMaximum(origin:\x20vec3f,\x20direction:\x20vec3f,\x20interval:\x20RayInterval)\x20->\x20vec4f\x20{\x0a\x20\x20\x20\x20var\x20maximumValue\x20=\x20-1e30;\x0a\x20\x20\x20\x20var\x20found\x20=\x20false;\x0a\x20\x20\x20\x20var\x20distance\x20=\x20interval.minimum;\x0a\x0a\x20\x20\x20\x20for\x20(var\x20index\x20=\x200u;\x20index\x20<\x204096u\x20&&\x20distance\x20<=\x20interval.maximum;\x20index\x20=\x20index\x20+\x201u)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20proxyPosition\x20=\x20origin\x20+\x20direction\x20*\x20distance;\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20skipDistance\x20=\x20select(0.0,\x20getEmptyBrickSkipDistance(proxyPosition,\x20direction),\x20scene.geographic0.x\x20<\x200.5);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(skipDistance\x20>\x200.0)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20skipDistance;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20volumePosition\x20=\x20proxyToVolume(proxyPosition);\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(!isInsideVolume(volumePosition))\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20scene.render.w;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20continue;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20let\x20sample\x20=\x20sampleVolumeNearest(volumePosition);\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20if\x20(sample.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20maximumValue\x20=\x20max(maximumValue,\x20sample.value);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20found\x20=\x20true;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20distance\x20=\x20distance\x20+\x20scene.render.w;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(!found)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20vec4f(0.0);\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20let\x20color\x20=\x20sampleColor(maximumValue);\x0a\x20\x20\x20\x20let\x20alpha\x20=\x20sampleOpacity(maximumValue)\x20*\x20scene.render.y\x20*\x20scene.transfer.z;\x0a\x20\x20\x20\x20return\x20vec4f(color.rgb\x20*\x20alpha,\x20alpha);\x0a}\x0a\x0a@vertex\x0afn\x20vertexMain(@builtin(vertex_index)\x20vertexIndex:\x20u32)\x20->\x20@builtin(position)\x20vec4f\x20{\x0a\x20\x20\x20\x20let\x20x\x20=\x20f32(i32(vertexIndex\x20&\x201u)\x20*\x204\x20-\x201);\x0a\x20\x20\x20\x20let\x20y\x20=\x20f32(i32(vertexIndex\x20>>\x201u)\x20*\x204\x20-\x201);\x0a\x20\x20\x20\x20return\x20vec4f(x,\x20y,\x200.0,\x201.0);\x0a}\x0a\x0a@fragment\x0afn\x20fragmentMain(@builtin(position)\x20fragmentPosition:\x20vec4f)\x20->\x20@location(0)\x20vec4f\x20{\x0a\x20\x20\x20\x20let\x20ndcXY\x20=\x20vec2f(fragmentPosition.x\x20/\x20scene.viewport.x\x20*\x202.0\x20-\x201.0,\x201.0\x20-\x20fragmentPosition.y\x20/\x20scene.viewport.y\x20*\x202.0);\x0a\x20\x20\x20\x20let\x20nearWorld\x20=\x20reconstructWorldPosition(vec3f(ndcXY,\x200.0));\x0a\x20\x20\x20\x20let\x20farWorld\x20=\x20reconstructWorldPosition(vec3f(ndcXY,\x201.0));\x0a\x20\x20\x20\x20let\x20nearModel\x20=\x20transformPoint(scene.inverseModelMatrix,\x20nearWorld);\x0a\x20\x20\x20\x20let\x20farModel\x20=\x20transformPoint(scene.inverseModelMatrix,\x20farWorld);\x0a\x20\x20\x20\x20let\x20direction\x20=\x20normalize(farModel\x20-\x20nearModel);\x0a\x20\x20\x20\x20var\x20interval\x20=\x20intersectClipBox(nearModel,\x20direction);\x0a\x0a\x20\x20\x20\x20if\x20(!interval.valid)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20discard;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20interval.maximum\x20=\x20min(interval.maximum,\x20getDepthDistance(vec2i(fragmentPosition.xy),\x20ndcXY,\x20nearModel,\x20direction));\x0a\x0a\x20\x20\x20\x20if\x20(interval.maximum\x20<\x20interval.minimum)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20discard;\x0a\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20if\x20(scene.render.x\x20>\x200.5)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20return\x20raymarchMaximum(nearModel,\x20direction,\x20interval);\x0a\x20\x20\x20\x20}\x0a\x20\x20\x20\x20return\x20raymarchComposite(nearModel,\x20direction,\x20interval);\x0a}\x0a','setFrameAvailableCallback','alignItems','axis','cartesian','inherit','shown','lockSlice','tan','destroyResources','renderFrame','eventDisposers','destroyBuffers','origin','volume\x20atlas\x20clear\x20shader','halo','isInteger','less','readRange','pointerup','clientX','volumeCamera','transferBindGroupLayout','volume\x20scene\x20bind\x20group\x20layout','transform','hideAllMarkers','validation','mode','volumeOptions','normalizationMeters','slice','removeSlice','路线剖面\x20','rgb(17\x2024\x2039\x20/\x2082%)','onInteractionStart','\x20端点必须是有限数值。','resolve','lockedSlices','volumeParamsBuffer','frameInFlight','colorStops\x20不能为空','pageTableBuffer','renderer','updateLockedSlice','source','depth','webgpu','requireScene','unmap','removeEventListener','frameIndex','volume\x20atlas\x20clear\x20pipeline','requestFrames','copyBufferToTexture','lastSubmittedFrameTimestamp','sort','minimumDistance','valuesEqual','cameraMoving','25ZCrkLy','split','render','fovy','target','textContent','flex','bindFrameAvailableCallback','createBindGroupLayout','100%','pendingBrickUploads','depthView','indices','budgetLimited','syncCamera','clearCameraFrameCompensation','valueScale','个色标范围的\x20min\x20必须小于\x20max','axisHysteresis','encodeVolumePass','cachedProfiles','descriptors','A\x20destroyed\x20volume\x20scene\x20cannot\x20capture\x20a\x20frame.\x20已销毁的体积场景不能读取帧。','atlasLayout','managed','volume\x20scene\x20depth','透视相机视场角必须位于\x200\x20到\x20180\x20度之间。','limits','clear','function','WebGPU\x20volume\x20dimensions\x20must\x20be\x20positive\x20integers.\x20WebGPU\x20体积尺寸必须是正整数。','formatPosition','viewProjectionMatrix','getSceneParamsBuffer','mars3d\x20volume\x20shell\x20raymarch\x20shader','\x20无效。','createCurrentCompensationFrame','lifecycleState','coreSampleCount','syncPreview','signal','sliceInteraction','setState','framesRemaining','findAxisHit','memoryHardLimitBytes','handlePointerMove','set','requestAdapter','loadedKeys','opacityStops','A\x20destroyed\x20Mars3D\x20volume\x20layer\x20cannot\x20be\x20used.\x20已销毁的\x20Mars3D\x20体积层不能继续使用。','baseModelMatrix','countX','writeBuffer','cameraEndTimer','map','Volume\x20brick\x20','pendingKeys','uploadBrick','Invalid\x20logical\x20volume\x20brick\x20index:\x20','atlasCapacity','slotIndex','cachedAxes','none','drawMeshes','replace','setProjectionType','unfilterable-float','brickHeight','axisResources','chunk','markerOverlay','cameraPosition','.\x20体积时间索引越界。','volumePipeline','\x20\x20\x20\x20var\x20interval\x20=\x20intersectClipBox(nearModel,\x20direction);','verticalScale\x20必须是大于\x200\x20的有限数。','\x20must\x20be\x20a\x20non-negative\x20finite\x20value.\x20','createProjectionMatrix','enqueueBrickUpload','next','handlePreRender','getAtlasTexture','Longitude\x20/\x20经度','always-visible','pixelRatioCap','volume\x20slice\x20bind\x20group\x20layout','getGeometryBindGroupLayout','toolMode','\x20noData\x20必须是有限数值或\x20NaN。','Failed\x20to\x20acquire\x20a\x20WebGPU\x20adapter\x20for\x20the\x20volume\x20scene.\x20无法为体积场景获取\x20WebGPU\x20adapter。','handlePointerUp','startY','.\x20体积分块数值数量与尺寸不一致。','profiles','key','rowsPerImage','keys','volume\x20frame\x20capture','previousAxis','parseInt','gap','正交相机高度和宽高比必须大于\x200。','endX','requireRenderer','coordinate','parentElement','Volume\x20brick\x20upload\x20became\x20stale.\x20体积砖上传已过期。','geometryBindGroupLayout','zoomSpeed','volume\x20scene\x20frame','overlayTrianglePipeline','timeCount','upload','\x20must\x20be\x20a\x20positive\x20integer.\x20','positionWC','cachedSlices','\x20的\x20path\x20包含非有限坐标。','startsWith','pointercancel','activeInteractions','6vNuqXe','frameAvailableCallback','createProjectionCamera','preventDefault','position','depthMode','residentBySlotIndex','nowrap','layout','Geographic\x20volume\x20normalization\x20must\x20be\x20a\x20positive\x20finite\x20distance.\x20地理体积归一化尺度必须是正有限距离。','axes','flushBrickSchedule','setSlices','encodeScenePass','updateTransferResources','profileResources','directionWC','getUploadStagingBuffer','preRender','getAtlas','toLowerCase','fragmentMain','rgb\x20颜色通道数量不正确:\x20','WebGPU\x20volume\x20atlas\x20is\x20not\x20configured.\x20WebGPU\x20体积图集尚未配置。','configure','\x20的\x20opacity\x20必须位于\x200\x20到\x201。','切面深度模式无效\x20/\x20Slice\x20depth\x20mode\x20is\x20invalid','brickWidth','queue','volume\x20color\x20stop\x20colors','orbit','Maximum\x20locked\x20slice\x20count\x20is\x20','actualFrameIntervalMilliseconds','update','MAP_READ','pointerType','colorValuesBuffer','volume\x20atlas\x20clear\x20bind\x20group','skippedCells','volume\x20brick\x20reusable\x20upload\x20staging','setTimeout','atlasIndex','countZ','uploadStagingBufferSize','atlasTextures','gpu','scene','createView','find','requestControllers','levelStart','encodeOverlayPass','createResource','yAxis','font','getEffectiveQuality','WebGPU\x20volume\x20resources\x20were\x20released.\x20WebGPU\x20体积资源已释放。','resetBrickRequests','volume\x20scene\x20bind\x20group','finishCameraInteraction','abort','WebGPU\x20volume\x20atlas\x20texture\x20is\x20unavailable.\x20WebGPU\x20体积图集纹理不可用。','border','memoryLimitBytes','defineProperty','clientHeight','has','abs','uploadGeneration','verticalScale','colorMode','recordFrameInterval','volume\x20brick\x20upload\x20batch\x20flush','button','line-list','plateColor','coordinateSystem','handleFrameAvailable','WebGPU\x20volume\x20context\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20context\x20尚未初始化。','createLayout','copyTextureToBuffer','depth32float','cacheOnSuccess','VERTEX','setTransfer','viewProjection','configureSource','lastTimingFrameTimestamp','_showHook','setCamera','message','volume-axes','overlayLinePipeline','brickScheduleDirty','residentByLogicalIndex','camera','handleWindowPointerMove','onError','sliceDepthMode','nextId','round','lockPreview','WebGPU\x20volume\x20frame\x20capture\x20failed:\x20','WebGPU\x20volume\x20params\x20buffer\x20is\x20unavailable.\x20WebGPU\x20体积参数\x20Buffer\x20不可用。','left','createTexture','COPY_SRC','volume\x20atlas\x20bind\x20group\x20layout','positions','rejectPendingBrickUploads','volumeBindGroup','onInteractionEnd','height','show','resize','.\x20最大锁定切面数量为\x20','\x20must\x20contain\x20sixteen\x20finite\x20values.\x20','resourceRebuildCount','setAttribute','interactionRenderScale','readyPromise','format','xCount','drawSlices','grab','202552PlQZeA','clearPreview','byteLength','axisDefinitions','\x20is\x20invalid:\x20','options','fovYDegrees','pageTableValues','isNaN','anchorDistance','getTransferBindGroupLayout','rgba(','geographicTransform','A\x20destroyed\x20WebGPU\x20volume\x20renderer\x20cannot\x20be\x20initialized\x20again.\x20已销毁的\x20WebGPU\x20体积渲染器不能再次初始化。','getEffectiveRenderScale','144798KyUWyN','Volume\x20brick\x20upload\x20was\x20superseded\x20by\x20a\x20new\x20source.\x20体积砖上传已被新数据源替代。','WebGPU\x20transfer\x20resources\x20are\x20unavailable.\x20WebGPU\x20传递函数资源不可用。','maximumPitchDegrees','maxZ','toFixed','toStringTag','volume\x20transfer\x20bind\x20group','acquireSlot','slotCountY','projection','Returned\x20volume\x20chunk\x20timeIndex\x20does\x20not\x20match\x20the\x20request.\x20返回体积分块的时间索引与请求不一致。','WebGPU\x20volume\x20scene\x20dimensions\x20must\x20be\x20positive\x20integers.\x20WebGPU\x20体积场景尺寸必须是正整数。','sliceBindGroupLayout','configureSourceResources','panSpeed','getSliceBindGroupLayout','slotCount','processBrickUploads','scheduleBricks','colorStopCount','相机裁剪距离必须满足\x200\x20<\x20near\x20<\x20far。','encodePreparedBrickUpload','个色标范围不能是NaN','byteOffset','levelCount','getDevice','aspect','volume\x20atlas\x20bind\x20group','scheduleCameraMoveEnd','getMappedRange','WebGPU\x20is\x20required\x20for\x20the\x20volume\x20scene\x20but\x20is\x20unavailable.\x20体积场景需要\x20WebGPU,但当前环境不可用。','clearLockedSlices','RGB\x20颜色通道必须在\x200\x20~\x20255\x20之间','visible','The\x20current\x20WebGPU\x20volume\x20atlas\x20requires\x20halo:\x201.\x20当前\x20WebGPU\x20体积图集要求\x20halo\x20为\x201。','timeIndex','positionCartographic','element','frameRequest','append','uniformUpdateCount','moved','Volume\x20chunk\x20range\x20exceeds\x20source\x20dimensions.\x20体积分块范围超出源数据尺寸。','type','end','\x20requires\x20','Returned\x20volume\x20chunk\x20range\x20does\x20not\x20match\x20the\x20request.\x20返回体积分块范围与请求不一致。','style','pointerId','getFormat','cursor','无法归一化长度为零的三维向量。','opacity','call','maximumPitch','delete','156282jXEXqX','frustum','normalizedPosition','residentBrickCount','perspective','addEventListener','WebGPU\x20transfer\x20bind\x20group\x20layout\x20is\x20unavailable.\x20WebGPU\x20传递函数绑定布局不可用。','Geographic\x20WGS84\x20volume\x20scenes\x20manage\x20their\x20own\x20model\x20transform.\x20WGS84\x20地理体积场景自行管理模型变换。','volume\x20atlas\x20clear','values','far','\x20只有一个采样点时端点必须相等。','autoFrameIntervalTotal','volume\x20geometry\x20bind\x20group\x20layout','finally','axisHysteresisPixels','clearTimeout','requestBrickSchedule','releasePointerCapture','buffer','fov','upWC','Returned\x20volume\x20chunk\x20dimensions\x20do\x20not\x20match\x20its\x20range.\x20返回体积分块尺寸与范围不一致。','mars3d\x20volume\x20shell\x20raymarch\x20pipeline','WebGPU\x20scene\x20params\x20buffer\x20is\x20unavailable.\x20WebGPU\x20场景参数\x20Buffer\x20不可用。','join','previewMarker','Volume','relative','getContext','volume\x20scene\x20mesh\x20','size','powerPreference','Unable\x20to\x20allocate\x20a\x20WebGPU\x20R32F\x20volume\x20atlas\x20within\x20device\x20limits.\x20无法在设备限制内分配\x20WebGPU\x20R32F\x20体积图集。','Volume\x20slice\x20'];_0x1938=function(){return _0x489247;};return _0x1938();}var WebgpuVolumeSceneRenderer=class{[_0x2e1660(0x1d2)];[_0x2e1660(0xfb)]='idle';[_0x2e1660(0x249)]=null;[_0x2e1660(0x255)]=null;[_0x2e1660(0x239)]=null;[_0x2e1660(0x35e)]=null;[_0x2e1660(0x1c9)]=null;['sceneParamsBuffer']=null;['volumeParamsBuffer']=null;['geometryBindGroupLayout']=null;[_0x2e1660(0x2ee)]=null;['volumeBindGroupLayout']=null;['transferBindGroupLayout']=null;['sliceBindGroupLayout']=null;[_0x2e1660(0x3a9)]=null;[_0x2e1660(0x3a6)]=null;[_0x2e1660(0x1be)]=null;['transferBindGroup']=null;[_0x2e1660(0x121)]=null;[_0x2e1660(0x3d6)]=null;[_0x2e1660(0x327)]=null;[_0x2e1660(0x146)]=null;[_0x2e1660(0x1ac)]=null;[_0x2e1660(0x390)]=null;[_0x2e1660(0x2a4)]=null;[_0x2e1660(0x352)]=null;[_0x2e1660(0x2e7)]=null;[_0x2e1660(0x288)]=null;[_0x2e1660(0x15f)]=null;['sliceResources']=null;[_0x2e1660(0x11c)]=null;[_0x2e1660(0x246)]=null;[_0x2e1660(0x1af)]={'viewProjection':IDENTITY_MATRIX$1,'inverseViewProjection':IDENTITY_MATRIX$1,'cameraPosition':[0x0,0x0,0x2]};[_0x2e1660(0x32d)]=IDENTITY_MATRIX$1;['inverseModelMatrix']=IDENTITY_MATRIX$1;[_0x2e1660(0x295)]=[0x0,0x0,0x0];[_0x2e1660(0x2d5)]=[0x1,0x1,0x1];[_0x2e1660(0x365)]=_0x2e1660(0x253);['opacity']=0.3;[_0x2e1660(0x32c)]=0x1;[_0x2e1660(0x3ae)]=0.005;['volumeDimFactor']=0x1;['colorMode']='smooth';[_0x2e1660(0x1d9)]=null;[_0x2e1660(0x258)]=DEFAULT_COLOR_STOPS;['opacityStops']=DEFAULT_OPACITY_STOPS;[_0x2e1660(0xcd)]=0x0;['submittedFrameCount']=0x0;[_0x2e1660(0x274)]=0x0;[_0x2e1660(0x1c0)]=0x0;[_0x2e1660(0x379)]=0x0;['lastFrameTimeMilliseconds']=0x0;[_0x2e1660(0xea)]=[];['cachedSlices']=[];[_0x2e1660(0x115)]=[];[_0x2e1660(0x2be)]=new Map();[_0x2e1660(0xe0)]=[];[_0x2e1660(0x336)]=null;[_0x2e1660(0x194)]=0x0;[_0x2e1660(0x35f)]=null;[_0x2e1660(0x17b)]=0x0;['uploadedBrickCount']=0x0;['uploadBatchCount']=0x0;['maximumUploadBatchBytes']=0x0;['frameInFlight']=!0x1;[_0x2e1660(0x151)]=null;constructor(_0x1d8641={}){const _0xa4b981=_0x2e1660;this[_0xa4b981(0x1d2)]={..._0x1d8641};}get['state'](){return this['lifecycleState'];}get[_0x2e1660(0x311)](){const _0x5ad0f3=_0x2e1660;let _0x3b82db=this[_0x5ad0f3(0x2e7)]?.[_0x5ad0f3(0x311)]??{'logicalBrickCount':0x0,'atlasCapacity':0x0,'gpuBytes':0x0,'memoryLimitBytes':this[_0x5ad0f3(0x1d2)][_0x5ad0f3(0x103)]??this[_0x5ad0f3(0x1d2)][_0x5ad0f3(0x2a1)]??DEFAULT_MEMORY_TARGET_BYTES,'budgetLimited':!0x1,'skippedSamples':0x0,'skippedCells':0x0},_0x447551=this['sliceResources']?.[_0x5ad0f3(0x311)]??{'uniformUpdateCount':0x0,'resourceRebuildCount':0x0};return{'logicalBrickCount':_0x3b82db[_0x5ad0f3(0x3a7)],'residentBrickCount':this[_0x5ad0f3(0x2e7)]?.[_0x5ad0f3(0x218)]??0x0,'pendingBrickCount':0x0,'atlasCapacity':_0x3b82db[_0x5ad0f3(0x113)],'gpuBytes':_0x3b82db[_0x5ad0f3(0x3c3)],'memoryLimitBytes':_0x3b82db['memoryLimitBytes'],'budgetLimited':_0x3b82db[_0x5ad0f3(0xe3)],'frameTimeMilliseconds':this[_0x5ad0f3(0x376)],'submittedFrameCount':this[_0x5ad0f3(0x266)],'uploadedBrickCount':this['uploadedBrickCount'],'uploadBatchCount':this[_0x5ad0f3(0x272)],'maximumUploadBatchBytes':this[_0x5ad0f3(0x3f2)],'sliceUniformUpdateCount':_0x447551[_0x5ad0f3(0x205)],'sliceResourceRebuildCount':_0x447551[_0x5ad0f3(0x1c5)],'skippedSamples':_0x3b82db['skippedSamples'],'skippedCells':_0x3b82db[_0x5ad0f3(0x176)]};}[_0x2e1660(0x3f7)](_0x4a5e5c){this['frameAvailableCallback']=_0x4a5e5c;}async[_0x2e1660(0x2a9)](_0x5b0af0){const _0x23567f=_0x2e1660;if(this[_0x23567f(0xfb)]===_0x23567f(0x2c2))throw Error(_0x23567f(0x1da));let _0x4642e5=++this[_0x23567f(0x379)];this[_0x23567f(0x2b6)](),this[_0x23567f(0x249)]=_0x5b0af0,this['lifecycleState']='initializing';let _0x780f6b=navigator[_0x23567f(0x17d)];if(!_0x780f6b)throw this[_0x23567f(0xfb)]=_0x23567f(0x2d0),Error(_0x23567f(0x1fb));let _0x52a9e2=await _0x780f6b[_0x23567f(0x106)]({'powerPreference':this[_0x23567f(0x1d2)][_0x23567f(0x235)]??_0x23567f(0x33f)});if(_0x4642e5!==this['initializationGeneration'])return;if(!_0x52a9e2)throw this[_0x23567f(0xfb)]='idle',Error(_0x23567f(0x131));let _0x2d5d23=await _0x52a9e2[_0x23567f(0x396)]();if(_0x4642e5!==this[_0x23567f(0x379)]){_0x2d5d23[_0x23567f(0x3e2)]();return;}let _0x9a2cd4=_0x5b0af0['getContext'](_0x23567f(0xc9));if(!_0x9a2cd4)throw _0x2d5d23['destroy'](),this[_0x23567f(0xfb)]=_0x23567f(0x2d0),Error(_0x23567f(0x33c));let _0x27e980=_0x780f6b['getPreferredCanvasFormat']();_0x9a2cd4[_0x23567f(0x168)]({'device':_0x2d5d23,'format':_0x27e980,'alphaMode':'premultiplied','usage':GPUTextureUsage['RENDER_ATTACHMENT']|GPUTextureUsage[_0x23567f(0x1ba)]}),this[_0x23567f(0x255)]=_0x52a9e2,this['device']=_0x2d5d23,this[_0x23567f(0x35e)]=_0x9a2cd4,this['format']=_0x27e980,_0x2d5d23[_0x23567f(0x26e)]('validation'),this['createGpuResources']();let _0x2ada8e=await _0x2d5d23[_0x23567f(0x30c)]();if(_0x2ada8e)throw this[_0x23567f(0x2b6)](),this[_0x23567f(0xfb)]=_0x23567f(0x2d0),Error(_0x23567f(0x2f6)+_0x2ada8e[_0x23567f(0x1aa)]+'.\x20创建\x20WebGPU\x20体积管线失败。');if(this['watchDeviceLost'](_0x2d5d23),this[_0x23567f(0xfb)]='ready',this[_0x23567f(0x246)]){this['configureSourceResources'](this[_0x23567f(0x246)]);let _0x45defa=Array[_0x23567f(0x309)](this[_0x23567f(0x2be)][_0x23567f(0x36c)]());await Promise[_0x23567f(0x382)](_0x45defa['map'](([_0x581ce3,_0x4d13a9])=>this[_0x23567f(0x126)]({'logicalIndex':_0x581ce3,'values':_0x4d13a9},!0x1)));}this[_0x23567f(0x15e)](),this[_0x23567f(0x261)]()['replace'](this[_0x23567f(0xea)]),this[_0x23567f(0x3da)]()[_0x23567f(0x118)](this[_0x23567f(0x14b)]),this[_0x23567f(0x257)]()[_0x23567f(0x118)](this['cachedAxes']),this[_0x23567f(0x1c2)](_0x5b0af0['width']||_0x5b0af0[_0x23567f(0x35c)]||0x1,_0x5b0af0[_0x23567f(0x1c0)]||_0x5b0af0[_0x23567f(0x191)]||0x1);}[_0x2e1660(0x3cd)](_0x44a7df){const _0xd67c98=_0x2e1660;this['uploadGeneration']+=0x1,this[_0xd67c98(0x1bd)](new DOMException(_0xd67c98(0x1dd),'AbortError')),this[_0xd67c98(0x246)]={..._0x44a7df},this[_0xd67c98(0x2be)]['clear'](),this[_0xd67c98(0x34d)]=0x0,this['uploadBatchCount']=0x0,this[_0xd67c98(0x3f2)]=0x0,this[_0xd67c98(0xfb)]===_0xd67c98(0x29e)&&this[_0xd67c98(0x1ea)](_0x44a7df);}[_0x2e1660(0x111)](_0x5aa4f1){const _0x37450e=_0x2e1660;return this[_0x37450e(0x126)](_0x5aa4f1,!0x0);}[_0x2e1660(0x384)](_0x364a87){const _0x11d2c7=_0x2e1660;this['getAtlas']()[_0x11d2c7(0x332)](_0x364a87,this[_0x11d2c7(0xcd)]);for(let _0x30c8d4 of _0x364a87){let _0x399d32=this[_0x11d2c7(0x2be)][_0x11d2c7(0x37a)](_0x30c8d4);_0x399d32&&(this[_0x11d2c7(0x2be)]['delete'](_0x30c8d4),this[_0x11d2c7(0x2be)][_0x11d2c7(0x105)](_0x30c8d4,_0x399d32));}}[_0x2e1660(0x1a9)](_0x3a614b){const _0x37418c=_0x2e1660;validateMatrix(_0x3a614b['viewProjection'],_0x37418c(0x1a5)),validateMatrix(_0x3a614b[_0x37418c(0x383)],'inverseViewProjection'),this['camera']={'viewProjection':[..._0x3a614b[_0x37418c(0x1a5)]],'inverseViewProjection':[..._0x3a614b[_0x37418c(0x383)]],'cameraPosition':[..._0x3a614b[_0x37418c(0x11f)]]};}[_0x2e1660(0x23d)](_0x59b2f4){const _0xc64022=_0x2e1660;this[_0xc64022(0xea)]=cloneMeshes(_0x59b2f4),this[_0xc64022(0x261)]()[_0xc64022(0x118)](_0x59b2f4);}[_0x2e1660(0x15c)](_0x148b7f){const _0x55c120=_0x2e1660;this['cachedSlices']=_0x148b7f[_0x55c120(0x10e)](_0x478874=>({..._0x478874})),this[_0x55c120(0x3da)]()[_0x55c120(0x118)](_0x148b7f);}['setAxes'](_0x3d1902){const _0x23452f=_0x2e1660;this[_0x23452f(0x115)]=cloneMeshes(_0x3d1902),this[_0x23452f(0x257)]()[_0x23452f(0x118)](_0x3d1902);}[_0x2e1660(0x1a4)](_0x21b67c,_0x2a4252,_0x26e334){const _0x44281f=_0x2e1660;this[_0x44281f(0x258)]=_0x21b67c[_0x44281f(0x10e)](_0x56eb57=>({'value':_0x56eb57[_0x44281f(0x3a0)],'color':[..._0x56eb57[_0x44281f(0x2eb)]]})),this[_0x44281f(0x108)]=_0x2a4252['map'](_0xb7287e=>({..._0xb7287e})),_0x26e334&&(this['colorMode']=_0x26e334),this[_0x44281f(0xfb)]===_0x44281f(0x29e)&&this['updateTransferResources']();}[_0x2e1660(0x171)](_0x20fb50){const _0x21150a=_0x2e1660;_0x20fb50[_0x21150a(0x32d)]&&(validateMatrix(_0x20fb50[_0x21150a(0x32d)],_0x21150a(0x32d)),this[_0x21150a(0x32d)]=[..._0x20fb50[_0x21150a(0x32d)]]),_0x20fb50[_0x21150a(0x3a1)]&&(validateMatrix(_0x20fb50['inverseModelMatrix'],_0x21150a(0x3a1)),this[_0x21150a(0x3a1)]=[..._0x20fb50[_0x21150a(0x3a1)]]),_0x20fb50[_0x21150a(0x295)]&&(this['clipMinimum']=[..._0x20fb50['clipMinimum']]),_0x20fb50['clipMaximum']&&(this[_0x21150a(0x2d5)]=[..._0x20fb50[_0x21150a(0x2d5)]]),_0x20fb50[_0x21150a(0x365)]&&(this[_0x21150a(0x365)]=_0x20fb50[_0x21150a(0x365)]),_0x20fb50[_0x21150a(0x211)]!==void 0x0&&(this[_0x21150a(0x211)]=validateNonNegative(_0x20fb50[_0x21150a(0x211)],'opacity')),_0x20fb50['densityScale']!==void 0x0&&(this[_0x21150a(0x32c)]=validateNonNegative(_0x20fb50['densityScale'],_0x21150a(0x32c))),_0x20fb50[_0x21150a(0x3ae)]!==void 0x0&&(this[_0x21150a(0x3ae)]=validatePositive(_0x20fb50[_0x21150a(0x3ae)],'stepLength')),_0x20fb50[_0x21150a(0x28d)]!==void 0x0&&(this[_0x21150a(0x28d)]=validateNonNegative(_0x20fb50[_0x21150a(0x28d)],_0x21150a(0x28d))),_0x20fb50['colorMode']&&(this[_0x21150a(0x196)]=_0x20fb50[_0x21150a(0x196)]),_0x20fb50[_0x21150a(0x1d9)]!==void 0x0&&(this[_0x21150a(0x1d9)]=_0x20fb50[_0x21150a(0x1d9)]?{..._0x20fb50[_0x21150a(0x1d9)]}:null);}[_0x2e1660(0x1c2)](_0x2026a9,_0x9e908a){const _0x1f649b=_0x2e1660;if(!Number[_0x1f649b(0x406)](_0x2026a9)||!Number[_0x1f649b(0x406)](_0x9e908a)||_0x2026a9<=0x0||_0x9e908a<=0x0)throw Error(_0x1f649b(0x1e8));let _0x48f228=this['getCanvas']();_0x48f228['width']=_0x2026a9,_0x48f228[_0x1f649b(0x1c0)]=_0x9e908a,this[_0x1f649b(0x274)]=_0x2026a9,this['height']=_0x9e908a,this[_0x1f649b(0x2e9)]()[_0x1f649b(0x1c2)](_0x2026a9,_0x9e908a),this[_0x1f649b(0x380)]();}['render'](){const _0x18164a=_0x2e1660;if(this[_0x18164a(0xfb)]!=='ready'||!this[_0x18164a(0x246)]||this[_0x18164a(0x274)]<=0x0||this[_0x18164a(0x1c0)]<=0x0||this[_0x18164a(0xc2)])return!0x1;let _0x5b3f37=performance[_0x18164a(0x36e)]();this[_0x18164a(0xcd)]+=0x1,this[_0x18164a(0x3b8)]();let _0x15bce2=this[_0x18164a(0x1f6)](),_0x16aa9c=_0x15bce2[_0x18164a(0x31f)]({'label':_0x18164a(0x145)}),_0x184aa3=this['getContext']()[_0x18164a(0x34f)]()[_0x18164a(0x17f)]();return this[_0x18164a(0x15d)](_0x16aa9c,_0x184aa3),this['encodeVolumePass'](_0x16aa9c,_0x184aa3),this[_0x18164a(0x183)](_0x16aa9c,_0x184aa3),_0x15bce2[_0x18164a(0x16c)]['submit']([_0x16aa9c[_0x18164a(0x37c)]()]),this[_0x18164a(0xc2)]=!0x0,this[_0x18164a(0x266)]+=0x1,this[_0x18164a(0x376)]=Math['max'](0.000001,performance['now']()-_0x5b3f37),_0x15bce2['queue'][_0x18164a(0x3f1)]()[_0x18164a(0x2cd)](()=>{const _0x7169b3=_0x18164a;this[_0x7169b3(0x239)]!==_0x15bce2||this[_0x7169b3(0xfb)]!==_0x7169b3(0x29e)||(this[_0x7169b3(0xc2)]=!0x1,this[_0x7169b3(0x151)]?.());})[_0x18164a(0x293)](()=>{const _0x4e90f1=_0x18164a;this['device']===_0x15bce2&&(this[_0x4e90f1(0xc2)]=!0x1);}),!0x0;}async[_0x2e1660(0x3f4)](){const _0x4b9f5c=_0x2e1660;if(this[_0x4b9f5c(0xfb)]!==_0x4b9f5c(0x29e)||!this['metadata']||this[_0x4b9f5c(0x274)]<=0x0||this[_0x4b9f5c(0x1c0)]<=0x0)throw Error(_0x4b9f5c(0x33d));let _0x5b7962=this['getDevice'](),_0x4332c8=this[_0x4b9f5c(0x274)]*0x4,_0x2d34cd=Math[_0x4b9f5c(0x32e)](_0x4332c8/0x100)*0x100,_0x47edbb=_0x5b7962[_0x4b9f5c(0x269)]({'label':_0x4b9f5c(0x36f),'size':_0x2d34cd*this['height'],'usage':GPUBufferUsage[_0x4b9f5c(0x3c8)]|GPUBufferUsage[_0x4b9f5c(0x172)]});_0x5b7962[_0x4b9f5c(0x26e)](_0x4b9f5c(0x410)),this[_0x4b9f5c(0xcd)]+=0x1,this['writeParams']();let _0x3799ae=_0x5b7962[_0x4b9f5c(0x31f)]({'label':_0x4b9f5c(0x139)}),_0xe1ef9e=this[_0x4b9f5c(0x232)]()[_0x4b9f5c(0x34f)](),_0x518103=_0xe1ef9e['createView']();this['encodeScenePass'](_0x3799ae,_0x518103),this[_0x4b9f5c(0xe9)](_0x3799ae,_0x518103),this[_0x4b9f5c(0x183)](_0x3799ae,_0x518103),_0x3799ae[_0x4b9f5c(0x1a0)]({'texture':_0xe1ef9e},{'buffer':_0x47edbb,'bytesPerRow':_0x2d34cd,'rowsPerImage':this[_0x4b9f5c(0x1c0)]},[this[_0x4b9f5c(0x274)],this[_0x4b9f5c(0x1c0)]]),_0x5b7962[_0x4b9f5c(0x16c)][_0x4b9f5c(0x2bd)]([_0x3799ae[_0x4b9f5c(0x37c)]()]);let _0x6b684c=await _0x5b7962[_0x4b9f5c(0x30c)]();if(_0x6b684c)throw _0x47edbb[_0x4b9f5c(0x3e2)](),Error(_0x4b9f5c(0x1b6)+_0x6b684c['message']+'.\x20WebGPU\x20体积帧读取失败。');await _0x47edbb['mapAsync'](GPUMapMode[_0x4b9f5c(0x375)]);let _0x13ada9=new Uint8Array(_0x47edbb[_0x4b9f5c(0x1fa)]()),_0x1cf785=new Uint8Array(_0x4332c8*this[_0x4b9f5c(0x1c0)]),_0x2329b1=this[_0x4b9f5c(0x20e)]()===_0x4b9f5c(0x2ec);for(let _0x198524=0x0;_0x198524<this[_0x4b9f5c(0x1c0)];_0x198524+=0x1){let _0x55dab4=_0x13ada9[_0x4b9f5c(0x2da)](_0x198524*_0x2d34cd,_0x198524*_0x2d34cd+_0x4332c8),_0x1223f4=_0x198524*_0x4332c8;if(!_0x2329b1){_0x1cf785[_0x4b9f5c(0x105)](_0x55dab4,_0x1223f4);continue;}for(let _0x7466d4=0x0;_0x7466d4<this[_0x4b9f5c(0x274)];_0x7466d4+=0x1){let _0x532428=_0x7466d4*0x4,_0x434571=_0x1223f4+_0x532428;_0x1cf785[_0x434571]=_0x55dab4[_0x532428+0x2],_0x1cf785[_0x434571+0x1]=_0x55dab4[_0x532428+0x1],_0x1cf785[_0x434571+0x2]=_0x55dab4[_0x532428],_0x1cf785[_0x434571+0x3]=_0x55dab4[_0x532428+0x3];}}return _0x47edbb[_0x4b9f5c(0xcb)](),_0x47edbb['destroy'](),this[_0x4b9f5c(0x266)]+=0x1,{'width':this[_0x4b9f5c(0x274)],'height':this[_0x4b9f5c(0x1c0)],'pixels':_0x1cf785};}[_0x2e1660(0x3e2)](){const _0x43782f=_0x2e1660;this[_0x43782f(0xfb)]!==_0x43782f(0x2c2)&&(++this[_0x43782f(0x379)],this[_0x43782f(0x2b6)](),this[_0x43782f(0x249)]=null,this[_0x43782f(0x246)]=null,this[_0x43782f(0x151)]=null,this['lifecycleState']=_0x43782f(0x2c2));}['createGpuResources'](){const _0x4a30ba=_0x2e1660;let _0x7aef4=this[_0x4a30ba(0x1f6)]();this[_0x4a30ba(0x347)]=_0x7aef4[_0x4a30ba(0x269)]({'label':'volume\x20scene\x20params','size':0x190,'usage':GPUBufferUsage[_0x4a30ba(0x2f8)]|GPUBufferUsage[_0x4a30ba(0x3c8)]}),this[_0x4a30ba(0x41c)]=_0x7aef4[_0x4a30ba(0x269)]({'label':_0x4a30ba(0x328),'size':0x60,'usage':GPUBufferUsage['UNIFORM']|GPUBufferUsage['COPY_DST']}),this[_0x4a30ba(0x143)]=_0x7aef4[_0x4a30ba(0xde)]({'label':_0x4a30ba(0x222),'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x4a30ba(0x1a3)]|GPUShaderStage[_0x4a30ba(0x370)],'buffer':{'type':'uniform'}}]}),this[_0x4a30ba(0x2ee)]=_0x7aef4[_0x4a30ba(0xde)]({'label':_0x4a30ba(0x40d),'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x4a30ba(0x1a3)]|GPUShaderStage[_0x4a30ba(0x370)],'buffer':{'type':_0x4a30ba(0x28b)}},{'binding':0x1,'visibility':GPUShaderStage[_0x4a30ba(0x370)],'texture':{'sampleType':_0x4a30ba(0xc8)}}]}),this['volumeBindGroupLayout']=_0x7aef4['createBindGroupLayout']({'label':_0x4a30ba(0x1bb),'entries':[...Array['from']({'length':0x8},(_0x51ec80,_0x302fb1)=>({'binding':_0x302fb1,'visibility':GPUShaderStage['FRAGMENT'],'texture':{'sampleType':_0x4a30ba(0x11a),'viewDimension':'3d'}})),{'binding':0x8,'visibility':GPUShaderStage[_0x4a30ba(0x370)],'buffer':{'type':'read-only-storage'}},{'binding':0x9,'visibility':GPUShaderStage[_0x4a30ba(0x370)],'buffer':{'type':_0x4a30ba(0x28b)}}]}),this['transferBindGroupLayout']=_0x7aef4['createBindGroupLayout']({'label':'volume\x20transfer\x20bind\x20group\x20layout','entries':[0x0,0x1,0x2,0x3][_0x4a30ba(0x10e)](_0xbce7e9=>({'binding':_0xbce7e9,'visibility':GPUShaderStage[_0x4a30ba(0x370)],'buffer':{'type':_0x4a30ba(0x3a5)}}))}),this[_0x4a30ba(0x1e9)]=_0x7aef4[_0x4a30ba(0xde)]({'label':_0x4a30ba(0x12d),'entries':[{'binding':0x0,'visibility':GPUShaderStage[_0x4a30ba(0x1a3)]|GPUShaderStage[_0x4a30ba(0x370)],'buffer':{'type':_0x4a30ba(0x28b)}}]}),this['attachments']=new WebgpuSceneAttachments(_0x7aef4),this[_0x4a30ba(0x288)]=new WebgpuTransferResources(_0x7aef4),this[_0x4a30ba(0x15f)]=new WebgpuSceneMeshResources(_0x7aef4),this[_0x4a30ba(0x3ec)]=new WebgpuSliceResources(_0x7aef4,this[_0x4a30ba(0x1ec)]()),this[_0x4a30ba(0x11c)]=new WebgpuSceneMeshResources(_0x7aef4),this[_0x4a30ba(0x23c)]();}['createPipelines'](){const _0x115383=_0x2e1660;let _0x2f1d98=this['getDevice'](),_0x52f083=this[_0x115383(0x20e)](),_0x1d2ea8=this[_0x115383(0x12e)](),_0x189ebd=this[_0x115383(0x240)](),_0x4717e6=_0x2f1d98[_0x115383(0x3e5)]({'label':_0x115383(0x26f),'code':sceneMesh_default}),_0x50ba9f={'module':_0x4717e6,'entryPoint':'vertexMain','buffers':[{'arrayStride':0x1c,'attributes':[{'shaderLocation':0x0,'offset':0x0,'format':'float32x3'},{'shaderLocation':0x1,'offset':0xc,'format':_0x115383(0x30f)}]}]},_0xe1ce47={'module':_0x4717e6,'entryPoint':_0x115383(0x165),'targets':[{'format':_0x52f083,'blend':premultipliedBlend$1()}]},_0x5eaa3b=(_0x27cfc8,_0xca7d1b)=>_0x2f1d98['createRenderPipeline']({'layout':_0x2f1d98['createPipelineLayout']({'bindGroupLayouts':[_0x1d2ea8]}),'vertex':_0x50ba9f,'fragment':_0xe1ce47,'primitive':{'topology':_0x27cfc8},'depthStencil':_0xca7d1b?{'format':_0x115383(0x1a1),'depthWriteEnabled':!0x0,'depthCompare':_0x115383(0x407)}:void 0x0});this['sceneTrianglePipeline']=_0x5eaa3b(_0x115383(0x3b0),!0x0),this[_0x115383(0x327)]=_0x5eaa3b(_0x115383(0x19a),!0x0),this['overlayTrianglePipeline']=_0x5eaa3b(_0x115383(0x3b0),!0x1),this[_0x115383(0x1ac)]=_0x5eaa3b(_0x115383(0x19a),!0x1);let _0x5d2fd9=_0x2f1d98['createShaderModule']({'label':_0x115383(0x3ba),'code':volumeRaymarch_default});this[_0x115383(0x121)]=_0x2f1d98[_0x115383(0x285)]({'layout':_0x2f1d98[_0x115383(0x286)]({'bindGroupLayouts':[_0x189ebd,this[_0x115383(0x348)](),this[_0x115383(0x1d7)]()]}),'vertex':{'module':_0x5d2fd9,'entryPoint':'vertexMain'},'fragment':{'module':_0x5d2fd9,'entryPoint':'fragmentMain','targets':[{'format':_0x52f083,'blend':premultipliedBlend$1()}]},'primitive':{'topology':'triangle-list'}});let _0x1830a7=_0x2f1d98[_0x115383(0x3e5)]({'label':'volume\x20slice\x20shader','code':volumeSlice_default}),_0x45d01b=_0x15c458=>_0x2f1d98['createRenderPipeline']({'layout':_0x2f1d98[_0x115383(0x286)]({'bindGroupLayouts':[_0x1d2ea8,this['getVolumeBindGroupLayout'](),this[_0x115383(0x1d7)](),this[_0x115383(0x1ec)]()]}),'vertex':{'module':_0x1830a7,'entryPoint':_0x115383(0x386)},'fragment':{'module':_0x1830a7,'entryPoint':_0x115383(0x165),'targets':[{'format':_0x52f083,'blend':premultipliedBlend$1()}]},'primitive':{'topology':'triangle-list'},'depthStencil':_0x15c458?{'format':_0x115383(0x1a1),'depthWriteEnabled':!0x0,'depthCompare':_0x115383(0x407)}:void 0x0});this[_0x115383(0x390)]=_0x45d01b(!0x0),this[_0x115383(0x2a4)]=_0x45d01b(!0x1);}[_0x2e1660(0x1ea)](_0x106cda){const _0x10117b=_0x2e1660;this['atlas']?.['destroy'](),this['atlas']=new WebgpuBrickAtlas(this[_0x10117b(0x1f6)](),this[_0x10117b(0x1d2)][_0x10117b(0x2a1)]??DEFAULT_MEMORY_TARGET_BYTES,this[_0x10117b(0x1d2)][_0x10117b(0x103)]??this[_0x10117b(0x1d2)][_0x10117b(0x2a1)]??DEFAULT_MEMORY_TARGET_BYTES),this['atlas'][_0x10117b(0x168)](_0x106cda),this[_0x10117b(0x24a)](),this[_0x10117b(0x1be)]=this[_0x10117b(0x2e7)][_0x10117b(0x3b9)](this[_0x10117b(0x348)](),this[_0x10117b(0x303)]());}[_0x2e1660(0x126)](_0x14fc8e,_0x4b3882){return new Promise((_0x5a4726,_0x167a84)=>{const _0x5975df=_0x2b0a;this['pendingBrickUploads'][_0x5975df(0x3aa)]({'upload':_0x14fc8e,'generation':this[_0x5975df(0x194)],'cacheOnSuccess':_0x4b3882,'resolve':_0x5a4726,'reject':_0x167a84}),this[_0x5975df(0x349)]();});}[_0x2e1660(0x349)](){const _0x5c8049=_0x2e1660;this['uploadPump']||=Promise[_0x5c8049(0x41a)]()[_0x5c8049(0x2cd)](()=>this[_0x5c8049(0x1ee)]())['finally'](()=>{const _0x1c98a8=_0x5c8049;this[_0x1c98a8(0x336)]=null,this[_0x1c98a8(0xe0)][_0x1c98a8(0x37f)]>0x0&&this[_0x1c98a8(0xfb)]==='ready'&&this[_0x1c98a8(0x349)]();});}async[_0x2e1660(0x1ee)](){const _0x328685=_0x2e1660;for(;this[_0x328685(0xe0)][_0x328685(0x37f)]>0x0&&this['lifecycleState']==='ready'&&this[_0x328685(0x246)];){let _0x46e439=this[_0x328685(0x1f6)](),_0x319d73=estimateBrickUploadBytes(this[_0x328685(0x246)]),_0x32ec4e=Math[_0x328685(0x3ce)](0x4000000,Math['max'](_0x319d73,Math['floor'](_0x46e439['limits'][_0x328685(0x243)]/0x4))),_0x334441=[],_0x53deb7=0x0;for(;this[_0x328685(0xe0)][_0x328685(0x37f)]>0x0&&_0x334441['length']<0x10;){let _0x4b2f28=this[_0x328685(0xe0)][0x0];if(_0x334441[_0x328685(0x37f)]>0x0&&_0x53deb7+_0x319d73>_0x32ec4e)break;if(this[_0x328685(0xe0)][_0x328685(0x34c)](),_0x4b2f28[_0x328685(0x2fb)]!==this['uploadGeneration']){_0x4b2f28['reject'](new DOMException(_0x328685(0x142),_0x328685(0x3ac)));continue;}_0x334441[_0x328685(0x3aa)](_0x4b2f28),_0x53deb7+=_0x319d73;}if(_0x334441[_0x328685(0x37f)]!==0x0)try{let _0x42b889=[],_0x433ee2=0x0;for(let _0x2ed56f of _0x334441){let _0x37f48=this[_0x328685(0x163)]()[_0x328685(0x29b)](_0x2ed56f['upload'],this[_0x328685(0xcd)]),_0x15a199=Math[_0x328685(0x32e)](_0x433ee2/0x100)*0x100;_0x42b889[_0x328685(0x3aa)]({'item':_0x2ed56f,'prepared':_0x37f48,'bufferOffset':_0x15a199}),_0x433ee2=_0x15a199+_0x37f48['values']['byteLength'];}let _0x547a4f=this[_0x328685(0x161)](_0x433ee2);await _0x547a4f[_0x328685(0x319)](GPUMapMode[_0x328685(0x268)]);let _0x499cb6=new Uint8Array(_0x547a4f[_0x328685(0x1fa)]());for(let _0x30a60d of _0x42b889){let _0x29efea=_0x30a60d['prepared'][_0x328685(0x21e)];_0x499cb6[_0x328685(0x105)](new Uint8Array(_0x29efea[_0x328685(0x228)],_0x29efea[_0x328685(0x1f4)],_0x29efea[_0x328685(0x1cf)]),_0x30a60d['bufferOffset']);}_0x547a4f[_0x328685(0xcb)]();let _0x1cc771=_0x46e439[_0x328685(0x31f)]({'label':_0x328685(0x198)});for(let _0xe79ed7 of _0x42b889)this[_0x328685(0x163)]()[_0x328685(0x1f2)](_0x1cc771,_0x547a4f,_0xe79ed7['bufferOffset'],_0xe79ed7['prepared']);_0x46e439[_0x328685(0x16c)][_0x328685(0x2bd)]([_0x1cc771[_0x328685(0x37c)]()]),await _0x46e439['queue'][_0x328685(0x3f1)](),await new Promise(_0x1fc430=>setTimeout(_0x1fc430,0x0)),this[_0x328685(0x34d)]+=_0x334441[_0x328685(0x37f)],this[_0x328685(0x272)]+=0x1,this['maximumUploadBatchBytes']=Math[_0x328685(0x3b1)](this['maximumUploadBatchBytes'],_0x53deb7);for(let _0x49adfc of _0x334441){if(_0x49adfc[_0x328685(0x2fb)]!==this[_0x328685(0x194)]){_0x49adfc[_0x328685(0x3ed)](new DOMException(_0x328685(0x142),_0x328685(0x3ac)));continue;}_0x49adfc[_0x328685(0x1a2)]&&this['cacheBrickUpload'](_0x49adfc[_0x328685(0x148)]),_0x49adfc[_0x328685(0x41a)]();}}catch(_0x342f41){for(let _0x4a73e4 of _0x334441)_0x4a73e4[_0x328685(0x3ed)](_0x342f41);}}}[_0x2e1660(0x161)](_0xd23c25){const _0x45b36f=_0x2e1660;let _0x4cd538=Math[_0x45b36f(0x3b1)](0x100,Math[_0x45b36f(0x32e)](_0xd23c25/0x100)*0x100);return this[_0x45b36f(0x35f)]&&this[_0x45b36f(0x17b)]>=_0x4cd538?this[_0x45b36f(0x35f)]:(this['uploadStagingBuffer']?.['destroy'](),this[_0x45b36f(0x35f)]=this[_0x45b36f(0x1f6)]()['createBuffer']({'label':_0x45b36f(0x177),'size':_0x4cd538,'usage':GPUBufferUsage['MAP_WRITE']|GPUBufferUsage[_0x45b36f(0x1ba)]}),this[_0x45b36f(0x17b)]=_0x4cd538,this['uploadStagingBuffer']);}[_0x2e1660(0x2b2)](_0x10e26a){const _0x3bac93=_0x2e1660;for(this[_0x3bac93(0x2be)][_0x3bac93(0x214)](_0x10e26a['logicalIndex']),this[_0x3bac93(0x2be)][_0x3bac93(0x105)](_0x10e26a[_0x3bac93(0x2f1)],new Float32Array(_0x10e26a[_0x3bac93(0x21e)]));this[_0x3bac93(0x2be)][_0x3bac93(0x234)]>this[_0x3bac93(0x311)]['atlasCapacity'];){let _0x4ecff1=this['cachedBricks'][_0x3bac93(0x138)]()[_0x3bac93(0x127)]()[_0x3bac93(0x3a0)];if(_0x4ecff1===void 0x0)break;this[_0x3bac93(0x2be)]['delete'](_0x4ecff1);}}['rejectPendingBrickUploads'](_0x31dbe4){const _0x334413=_0x2e1660;for(let _0xf177ec of this['pendingBrickUploads'][_0x334413(0x34e)](0x0))_0xf177ec[_0x334413(0x3ed)](_0x31dbe4);}[_0x2e1660(0x15e)](){const _0x1f3f47=_0x2e1660;let _0xe43e11=this[_0x1f3f47(0x2e1)]();_0xe43e11[_0x1f3f47(0x171)](this['colorStops'],this[_0x1f3f47(0x108)]),this[_0x1f3f47(0x291)]=_0xe43e11[_0x1f3f47(0x3b9)](this[_0x1f3f47(0x1d7)]());}[_0x2e1660(0x380)](){const _0x4811e2=_0x2e1660;!this['sceneParamsBuffer']||!this[_0x4811e2(0x352)]||!this[_0x4811e2(0x143)]||!this[_0x4811e2(0x2ee)]||(this[_0x4811e2(0x3a9)]=this['getDevice']()[_0x4811e2(0x3b9)]({'label':_0x4811e2(0x2f0),'layout':this[_0x4811e2(0x143)],'entries':[{'binding':0x0,'resource':{'buffer':this[_0x4811e2(0x347)]}}]}),this[_0x4811e2(0x3a6)]=this[_0x4811e2(0x1f6)]()[_0x4811e2(0x3b9)]({'label':_0x4811e2(0x18a),'layout':this[_0x4811e2(0x2ee)],'entries':[{'binding':0x0,'resource':{'buffer':this[_0x4811e2(0x347)]}},{'binding':0x1,'resource':this[_0x4811e2(0x352)][_0x4811e2(0x32a)]}]}));}['writeParams'](){const _0x16207a=_0x2e1660;let _0x469770=new Float32Array(0x64);_0x469770[_0x16207a(0x105)](this[_0x16207a(0x1af)][_0x16207a(0x1a5)],0x0),_0x469770[_0x16207a(0x105)](this['camera'][_0x16207a(0x383)],0x10),_0x469770[_0x16207a(0x105)](this['modelMatrix'],0x20),_0x469770['set'](this[_0x16207a(0x3a1)],0x30),_0x469770[_0x16207a(0x105)]([...this['camera'][_0x16207a(0x11f)],0x1],0x40),_0x469770['set']([this[_0x16207a(0x274)],this['height'],0x1/this['width'],0x1/this[_0x16207a(0x1c0)]],0x44),_0x469770[_0x16207a(0x105)]([...this['clipMinimum'],0x0],0x48),_0x469770[_0x16207a(0x105)]([...this[_0x16207a(0x2d5)],0x0],0x4c),_0x469770[_0x16207a(0x105)]([+(this[_0x16207a(0x365)]==='maximum'),this[_0x16207a(0x211)],this[_0x16207a(0x32c)],this[_0x16207a(0x3ae)]],0x50),_0x469770[_0x16207a(0x105)]([this[_0x16207a(0x258)][_0x16207a(0x37f)],this['opacityStops'][_0x16207a(0x37f)],this[_0x16207a(0x28d)],+(this[_0x16207a(0x196)]===_0x16207a(0x392))],0x54);let _0x3db935=this['geographicTransform'];_0x3db935&&(_0x469770[_0x16207a(0x105)]([0x1,..._0x3db935['centerEcefScaled']],0x58),_0x469770[_0x16207a(0x105)]([_0x3db935[_0x16207a(0x25f)],_0x3db935[_0x16207a(0x2d9)],..._0x3db935['longitudeRadians']],0x5c),_0x469770[_0x16207a(0x105)]([..._0x3db935['latitudeRadians'],..._0x3db935[_0x16207a(0x2fe)]],0x60)),this['getDevice']()['queue'][_0x16207a(0x10c)](this['getSceneParamsBuffer'](),0x0,_0x469770);}[_0x2e1660(0x24a)](){const _0x27b4dc=_0x2e1660;let _0x16ebe6=this[_0x27b4dc(0x246)],_0x1be78a=this[_0x27b4dc(0x2e7)];if(!_0x16ebe6||!_0x1be78a)return;let _0xeef814=_0x1be78a[_0x27b4dc(0xed)],_0x525d65=new Uint32Array(0x60/0x4),_0x2974bb=Math['ceil'](_0x16ebe6[_0x27b4dc(0x3a3)][_0x27b4dc(0x2e2)]/_0x16ebe6[_0x27b4dc(0x16b)]),_0x329269=Math[_0x27b4dc(0x32e)](_0x16ebe6[_0x27b4dc(0x185)]['count']/_0x16ebe6[_0x27b4dc(0x11b)]),_0x22dad2=Math['ceil'](_0x16ebe6['zAxis'][_0x27b4dc(0x2e2)]/_0x16ebe6[_0x27b4dc(0x2cc)]);_0x525d65[_0x27b4dc(0x105)]([_0x16ebe6['xAxis'][_0x27b4dc(0x2e2)],_0x16ebe6[_0x27b4dc(0x185)][_0x27b4dc(0x2e2)],_0x16ebe6['zAxis'][_0x27b4dc(0x2e2)],0x0],0x0),_0x525d65[_0x27b4dc(0x105)]([_0x16ebe6[_0x27b4dc(0x16b)],_0x16ebe6[_0x27b4dc(0x11b)],_0x16ebe6[_0x27b4dc(0x2cc)],0x1],0x4),_0x525d65['set']([_0x2974bb,_0x329269,_0x22dad2,0x0],0x8),_0x525d65['set']([_0xeef814[_0x27b4dc(0x35d)],_0xeef814[_0x27b4dc(0x1e5)],_0xeef814[_0x27b4dc(0x2e6)],_0xeef814['slotCount']],0xc),_0x525d65[_0x27b4dc(0x105)]([(_0x16ebe6['brickWidth']+0x2)*_0xeef814[_0x27b4dc(0x35d)],(_0x16ebe6['brickHeight']+0x2)*_0xeef814['slotCountY'],(_0x16ebe6[_0x27b4dc(0x2cc)]+0x2)*_0xeef814[_0x27b4dc(0x2e6)],0x0],0x10),new Float32Array(_0x525d65[_0x27b4dc(0x228)])[_0x27b4dc(0x105)]([_0x16ebe6['noData']??0x0,_0x16ebe6[_0x27b4dc(0x27a)]===void 0x0?0x0:0x1,0x0,0x0],0x14),this['getDevice']()[_0x27b4dc(0x16c)][_0x27b4dc(0x10c)](this['getVolumeParamsBuffer'](),0x0,_0x525d65);}[_0x2e1660(0x15d)](_0x5db55c,_0x45b058){const _0x152c6e=_0x2e1660;let _0x5549dc=_0x5db55c[_0x152c6e(0x2d3)]({'label':_0x152c6e(0x248),'colorAttachments':[{'view':_0x45b058,'clearValue':{'r':0x0,'g':0x0,'b':0x0,'a':0x0},'loadOp':_0x152c6e(0xf2),'storeOp':'store'}],'depthStencilAttachment':{'view':this[_0x152c6e(0x2e9)]()[_0x152c6e(0x32a)],'depthClearValue':0x1,'depthLoadOp':'clear','depthStoreOp':_0x152c6e(0x30b)}});this[_0x152c6e(0x117)](_0x5549dc,_0x152c6e(0x17e)),this[_0x152c6e(0x1cb)](_0x5549dc,'scene'),_0x5549dc[_0x152c6e(0x209)]();}[_0x2e1660(0xe9)](_0x5438b7,_0x394718){const _0xb273ed=_0x2e1660;if(!this['volumeBindGroup']||!this[_0xb273ed(0x291)]||!this['sceneBindGroup']||!this[_0xb273ed(0x121)])return;let _0x3e0562=_0x5438b7[_0xb273ed(0x2d3)]({'label':_0xb273ed(0x300),'colorAttachments':[{'view':_0x394718,'loadOp':'load','storeOp':_0xb273ed(0x30b)}]});_0x3e0562[_0xb273ed(0x26a)](this['volumePipeline']),_0x3e0562['setBindGroup'](0x0,this[_0xb273ed(0x3a6)]),_0x3e0562[_0xb273ed(0x3f3)](0x1,this[_0xb273ed(0x1be)]),_0x3e0562[_0xb273ed(0x3f3)](0x2,this[_0xb273ed(0x291)]),_0x3e0562['draw'](0x3),_0x3e0562[_0xb273ed(0x209)]();}['encodeOverlayPass'](_0x474bec,_0x107010){const _0x227cf2=_0x2e1660;let _0x3c6ef9=_0x474bec[_0x227cf2(0x2d3)]({'label':_0x227cf2(0x26b),'colorAttachments':[{'view':_0x107010,'loadOp':_0x227cf2(0x2b8),'storeOp':'store'}]});this[_0x227cf2(0x117)](_0x3c6ef9,_0x227cf2(0x12b)),this[_0x227cf2(0x1cb)](_0x3c6ef9,'always-visible'),_0x3c6ef9[_0x227cf2(0x209)]();}[_0x2e1660(0x117)](_0x546636,_0x7faf82){const _0x324222=_0x2e1660;let _0xe20a83=this[_0x324222(0x3a9)];if(!_0xe20a83)return;let _0x339987=_0x7faf82===_0x324222(0x17e)?this['sceneTrianglePipeline']:this[_0x324222(0x146)],_0x58b5f6=_0x7faf82===_0x324222(0x17e)?this[_0x324222(0x327)]:this[_0x324222(0x1ac)];_0x339987&&(_0x546636[_0x324222(0x26a)](_0x339987),_0x546636['setBindGroup'](0x0,_0xe20a83),this[_0x324222(0x15f)]?.[_0x324222(0x282)](_0x546636,_0x324222(0x3b0),_0x7faf82),this['axisResources']?.[_0x324222(0x282)](_0x546636,_0x324222(0x3b0),_0x7faf82)),_0x58b5f6&&(_0x546636[_0x324222(0x26a)](_0x58b5f6),_0x546636['setBindGroup'](0x0,_0xe20a83),this['profileResources']?.['draw'](_0x546636,_0x324222(0x19a),_0x7faf82),this['axisResources']?.['draw'](_0x546636,'line-list',_0x7faf82));}[_0x2e1660(0x1cb)](_0x1ead0b,_0x552e0f){const _0x5a8d58=_0x2e1660;let _0x4d4913=_0x552e0f===_0x5a8d58(0x17e)?this[_0x5a8d58(0x390)]:this[_0x5a8d58(0x2a4)];!_0x4d4913||!this[_0x5a8d58(0x3a9)]||!this['volumeBindGroup']||!this[_0x5a8d58(0x291)]||(_0x1ead0b[_0x5a8d58(0x3f3)](0x0,this[_0x5a8d58(0x3a9)]),_0x1ead0b['setBindGroup'](0x1,this['volumeBindGroup']),_0x1ead0b[_0x5a8d58(0x3f3)](0x2,this['transferBindGroup']),this[_0x5a8d58(0x3ec)]?.[_0x5a8d58(0x282)](_0x1ead0b,_0x4d4913,_0x552e0f));}[_0x2e1660(0x275)](_0x52efa4){const _0x54a92b=_0x2e1660;_0x52efa4[_0x54a92b(0x2b7)][_0x54a92b(0x2cd)](_0x1a68a0=>{const _0x26f209=_0x54a92b;if(this[_0x26f209(0x239)]!==_0x52efa4||this['lifecycleState']===_0x26f209(0x2c2))return;this['lifecycleState']=_0x26f209(0x2b7),console[_0x26f209(0x2bf)]('WebGPU\x20volume\x20device\x20was\x20lost:\x20'+_0x1a68a0[_0x26f209(0x1aa)]+_0x26f209(0x389));let _0x39c172=this['canvas'];this[_0x26f209(0x2b6)](),_0x39c172&&this[_0x26f209(0x2a9)](_0x39c172)[_0x26f209(0x293)](_0x501a09=>{const _0x252d29=_0x26f209;console[_0x252d29(0x2bf)]('WebGPU\x20volume\x20device\x20restoration\x20failed.\x20WebGPU\x20体积设备恢复失败。',_0x501a09);});});}[_0x2e1660(0x2b6)](){const _0x599fa5=_0x2e1660;this[_0x599fa5(0x194)]+=0x1,this[_0x599fa5(0x1bd)](new DOMException(_0x599fa5(0x188),'AbortError')),this[_0x599fa5(0x2e7)]?.[_0x599fa5(0x3e2)](),this[_0x599fa5(0x288)]?.[_0x599fa5(0x3e2)](),this[_0x599fa5(0x15f)]?.['destroy'](),this['sliceResources']?.[_0x599fa5(0x3e2)](),this['axisResources']?.['destroy'](),this[_0x599fa5(0x352)]?.['destroy'](),this['sceneParamsBuffer']?.[_0x599fa5(0x3e2)](),this['volumeParamsBuffer']?.[_0x599fa5(0x3e2)](),this[_0x599fa5(0x35f)]?.[_0x599fa5(0x3e2)]();try{this['context']?.[_0x599fa5(0x250)]();}catch{}this[_0x599fa5(0x239)]?.['destroy'](),this['adapter']=null,this[_0x599fa5(0x239)]=null,this['context']=null,this[_0x599fa5(0x1c9)]=null,this[_0x599fa5(0x347)]=null,this[_0x599fa5(0x41c)]=null,this['uploadStagingBuffer']=null,this['uploadStagingBufferSize']=0x0,this[_0x599fa5(0x143)]=null,this[_0x599fa5(0x2ee)]=null,this[_0x599fa5(0x2cf)]=null,this[_0x599fa5(0x40c)]=null,this[_0x599fa5(0x1e9)]=null,this[_0x599fa5(0x3a9)]=null,this[_0x599fa5(0x3a6)]=null,this[_0x599fa5(0x1be)]=null,this[_0x599fa5(0x291)]=null,this[_0x599fa5(0x121)]=null,this[_0x599fa5(0x3d6)]=null,this[_0x599fa5(0x327)]=null,this[_0x599fa5(0x146)]=null,this['overlayLinePipeline']=null,this['sceneSlicePipeline']=null,this[_0x599fa5(0x2a4)]=null,this[_0x599fa5(0x352)]=null,this[_0x599fa5(0x2e7)]=null,this['transferResources']=null,this[_0x599fa5(0x15f)]=null,this['sliceResources']=null,this[_0x599fa5(0x11c)]=null,this['frameInFlight']=!0x1,this[_0x599fa5(0x274)]=0x0,this[_0x599fa5(0x1c0)]=0x0;}[_0x2e1660(0x1f6)](){const _0x2b830b=_0x2e1660;if(!this[_0x2b830b(0x239)])throw Error(_0x2b830b(0x329));return this['device'];}['getContext'](){const _0x7a098=_0x2e1660;if(!this[_0x7a098(0x35e)])throw Error(_0x7a098(0x19e));return this[_0x7a098(0x35e)];}['getFormat'](){const _0x290fd5=_0x2e1660;if(!this['format'])throw Error(_0x290fd5(0x3cf));return this[_0x290fd5(0x1c9)];}[_0x2e1660(0x339)](){const _0x41485f=_0x2e1660;if(!this['canvas'])throw Error('WebGPU\x20volume\x20canvas\x20is\x20not\x20initialized.\x20WebGPU\x20体积\x20Canvas\x20尚未初始化。');return this[_0x41485f(0x249)];}[_0x2e1660(0x2e9)](){const _0x590d1f=_0x2e1660;if(!this[_0x590d1f(0x352)])throw Error('WebGPU\x20scene\x20attachments\x20are\x20unavailable.\x20WebGPU\x20场景附件不可用。');return this[_0x590d1f(0x352)];}[_0x2e1660(0x163)](){const _0x6e21bf=_0x2e1660;if(!this[_0x6e21bf(0x2e7)])throw Error('WebGPU\x20volume\x20source\x20must\x20be\x20configured\x20before\x20uploading\x20bricks.\x20上传砖块前必须配置\x20WebGPU\x20体积数据源。');return this[_0x6e21bf(0x2e7)];}[_0x2e1660(0x2e1)](){const _0x3b0a85=_0x2e1660;if(!this[_0x3b0a85(0x288)])throw Error(_0x3b0a85(0x1de));return this['transferResources'];}[_0x2e1660(0x261)](){const _0x5d386e=_0x2e1660;if(!this[_0x5d386e(0x15f)])throw Error(_0x5d386e(0x2dd));return this[_0x5d386e(0x15f)];}[_0x2e1660(0x3da)](){const _0x386849=_0x2e1660;if(!this[_0x386849(0x3ec)])throw Error(_0x386849(0x2bc));return this['sliceResources'];}[_0x2e1660(0x257)](){const _0x14de25=_0x2e1660;if(!this[_0x14de25(0x11c)])throw Error('WebGPU\x20axis\x20resources\x20are\x20unavailable.\x20WebGPU\x20轴线资源不可用。');return this[_0x14de25(0x11c)];}[_0x2e1660(0x240)](){const _0x30627b=_0x2e1660;if(!this['sceneBindGroupLayout'])throw Error(_0x30627b(0x289));return this['sceneBindGroupLayout'];}[_0x2e1660(0x12e)](){const _0x4d2ac9=_0x2e1660;if(!this[_0x4d2ac9(0x143)])throw Error(_0x4d2ac9(0x2a7));return this[_0x4d2ac9(0x143)];}[_0x2e1660(0x348)](){const _0x2771e1=_0x2e1660;if(!this[_0x2771e1(0x2cf)])throw Error(_0x2771e1(0x2d2));return this[_0x2771e1(0x2cf)];}['getTransferBindGroupLayout'](){const _0x2b696e=_0x2e1660;if(!this[_0x2b696e(0x40c)])throw Error(_0x2b696e(0x21b));return this['transferBindGroupLayout'];}['getSliceBindGroupLayout'](){const _0x4666e8=_0x2e1660;if(!this[_0x4666e8(0x1e9)])throw Error(_0x4666e8(0x31c));return this['sliceBindGroupLayout'];}[_0x2e1660(0xf7)](){const _0x4f443c=_0x2e1660;if(!this['sceneParamsBuffer'])throw Error(_0x4f443c(0x22d));return this[_0x4f443c(0x347)];}[_0x2e1660(0x303)](){const _0x5de112=_0x2e1660;if(!this[_0x5de112(0x41c)])throw Error(_0x5de112(0x1b7));return this[_0x5de112(0x41c)];}};const getAxis=(_0x439cbd,_0x3852d3)=>_0x3852d3==='x'?_0x439cbd[_0x2e1660(0x3a3)]:_0x3852d3==='y'?_0x439cbd[_0x2e1660(0x185)]:_0x439cbd['zAxis'],clampPosition=(_0x48b1d6,_0xa9c0a8,_0x6bb1a5)=>{const _0x1145fc=_0x2e1660;if(!Number[_0x1145fc(0x2c4)](_0x6bb1a5))throw Error(_0x1145fc(0x35b));let _0xe5bcc1=getAxis(_0x48b1d6,_0xa9c0a8),_0x314289=Math[_0x1145fc(0x3ce)](_0xe5bcc1[_0x1145fc(0x2ce)],_0xe5bcc1['end']),_0x4a0e26=Math[_0x1145fc(0x3b1)](_0xe5bcc1[_0x1145fc(0x2ce)],_0xe5bcc1[_0x1145fc(0x209)]);return Math[_0x1145fc(0x3ce)](_0x4a0e26,Math[_0x1145fc(0x3b1)](_0x314289,_0x6bb1a5));},clonePreview=_0x3d70b0=>_0x3d70b0?{..._0x3d70b0}:null,cloneLockedSlice=_0x12c5ef=>({..._0x12c5ef}),validateAxes=_0x1b7835=>{const _0x5eec31=_0x2e1660;for(let _0x32a1c1 of[_0x1b7835[_0x5eec31(0x3a3)],_0x1b7835['yAxis'],_0x1b7835[_0x5eec31(0x271)]]){if(!Number[_0x5eec31(0x2c4)](_0x32a1c1[_0x5eec31(0x2ce)])||!Number[_0x5eec31(0x2c4)](_0x32a1c1['end']))throw Error(_0x5eec31(0x256));if(!(Number[_0x5eec31(0x406)](_0x32a1c1[_0x5eec31(0x2e2)])&&_0x32a1c1[_0x5eec31(0x2e2)]>0x0))throw Error(_0x5eec31(0x312));if(_0x32a1c1[_0x5eec31(0x2e2)]>0x1&&_0x32a1c1[_0x5eec31(0x2ce)]===_0x32a1c1[_0x5eec31(0x209)])throw Error(_0x5eec31(0x280));}},volumeAxisValueToNormalized=(_0x5c77ac,_0x306c59)=>_0x5c77ac[_0x2e1660(0x2ce)]===_0x5c77ac['end']?0x0:(_0x306c59-_0x5c77ac[_0x2e1660(0x2ce)])/(_0x5c77ac['end']-_0x5c77ac['start']),normalizedToVolumeAxisValue=(_0x93c58b,_0x52b74b)=>_0x93c58b['start']+_0x52b74b*(_0x93c58b['end']-_0x93c58b[_0x2e1660(0x2ce)]);var SliceState=class{[_0x2e1660(0x15a)];['listeners']=new Set();['onLimitReached'];[_0x2e1660(0x276)];[_0x2e1660(0x155)];[_0x2e1660(0x1b3)]=0x1;[_0x2e1660(0x244)]=null;[_0x2e1660(0x3e9)]=[];['mode']='auto';[_0x2e1660(0x28d)];constructor(_0xe7bbef,_0x18ac72={}){const _0x466a85=_0x2e1660;if(validateAxes(_0xe7bbef),this[_0x466a85(0x15a)]={'xAxis':{..._0xe7bbef[_0x466a85(0x3a3)]},'yAxis':{..._0xe7bbef[_0x466a85(0x185)]},'zAxis':{..._0xe7bbef['zAxis']}},this[_0x466a85(0x28d)]=_0x18ac72[_0x466a85(0x28d)]??0.25,this[_0x466a85(0x155)]=_0x18ac72[_0x466a85(0x155)]??_0x466a85(0x17e),this[_0x466a85(0x276)]=_0x18ac72['maxLockedSlices']??0xc,this[_0x466a85(0x351)]=_0x18ac72[_0x466a85(0x351)],!(this[_0x466a85(0x28d)]>=0x0&&this[_0x466a85(0x28d)]<=0x1))throw Error(_0x466a85(0x3ab));if(this[_0x466a85(0x155)]!==_0x466a85(0x17e)&&this[_0x466a85(0x155)]!=='always-visible')throw Error(_0x466a85(0x16a));if(!(Number['isInteger'](this[_0x466a85(0x276)])&&this[_0x466a85(0x276)]>0x0))throw Error(_0x466a85(0x27d));}get['preview'](){return clonePreview(this['currentPreview']);}get['lockedSlices'](){const _0x2e5199=_0x2e1660;return this['slices'][_0x2e5199(0x10e)](cloneLockedSlice);}get[_0x2e1660(0x12f)](){const _0x410d7d=_0x2e1660;return this[_0x410d7d(0x411)];}get[_0x2e1660(0x2e3)](){const _0x5b7d6a=_0x2e1660;return{'preview':this['preview'],'lockedSlices':this[_0x5b7d6a(0x41b)],'toolMode':this[_0x5b7d6a(0x411)],'volumeDimFactor':this['volumeDimFactor']};}['subscribe'](_0x440395){const _0x5e0c3d=_0x2e1660;return this[_0x5e0c3d(0x27b)][_0x5e0c3d(0x23e)](_0x440395),_0x440395(this[_0x5e0c3d(0x2e3)]),()=>this[_0x5e0c3d(0x27b)][_0x5e0c3d(0x214)](_0x440395);}get['axisDefinitions'](){const _0x2837ec=_0x2e1660;return{'xAxis':{...this['axes'][_0x2837ec(0x3a3)]},'yAxis':{...this[_0x2837ec(0x15a)]['yAxis']},'zAxis':{...this['axes'][_0x2837ec(0x271)]}};}[_0x2e1660(0x238)](_0x2189fb){const _0x41d94d=_0x2e1660;validateAxes(_0x2189fb),this[_0x41d94d(0x15a)]={'xAxis':{..._0x2189fb[_0x41d94d(0x3a3)]},'yAxis':{..._0x2189fb[_0x41d94d(0x185)]},'zAxis':{..._0x2189fb[_0x41d94d(0x271)]}},this[_0x41d94d(0x244)]&&(this[_0x41d94d(0x244)][_0x41d94d(0x154)]=clampPosition(this['axes'],this[_0x41d94d(0x244)][_0x41d94d(0x3f9)],this[_0x41d94d(0x244)][_0x41d94d(0x154)])),this[_0x41d94d(0x3e9)]=this[_0x41d94d(0x3e9)][_0x41d94d(0x10e)](_0x4b882f=>({..._0x4b882f,'position':clampPosition(this[_0x41d94d(0x15a)],_0x4b882f[_0x41d94d(0x3f9)],_0x4b882f[_0x41d94d(0x154)])})),this[_0x41d94d(0x36a)]();}['setToolMode'](_0x58d846){const _0x7d7039=_0x2e1660;this['mode']!==_0x58d846&&(this['mode']=_0x58d846,(_0x58d846===null||_0x58d846!=='auto'&&this['currentPreview']?.[_0x7d7039(0x3f9)]!==_0x58d846)&&(this[_0x7d7039(0x244)]=null),this[_0x7d7039(0x36a)]());}[_0x2e1660(0x24d)](_0x140d93,_0x427ec7){const _0x537842=_0x2e1660;if(this[_0x537842(0x411)]===null||this[_0x537842(0x411)]!=='auto'&&this[_0x537842(0x411)]!==_0x140d93)return;let _0x5e9a84=clampPosition(this[_0x537842(0x15a)],_0x140d93,_0x427ec7);this[_0x537842(0x244)]?.[_0x537842(0x3f9)]===_0x140d93&&this[_0x537842(0x244)][_0x537842(0x154)]===_0x5e9a84||(this[_0x537842(0x244)]={'axis':_0x140d93,'position':_0x5e9a84},this[_0x537842(0x36a)]());}['clearPreview'](){const _0xaa4519=_0x2e1660;this[_0xaa4519(0x244)]&&(this[_0xaa4519(0x244)]=null,this['notify']());}[_0x2e1660(0x1b5)](_0x8f087d=this[_0x2e1660(0x155)]){const _0x273a74=_0x2e1660;return this[_0x273a74(0x244)]?this[_0x273a74(0x3fd)](this[_0x273a74(0x244)][_0x273a74(0x3f9)],this[_0x273a74(0x244)]['position'],_0x8f087d):null;}[_0x2e1660(0x3fd)](_0x5ae5e8,_0xcd3b42,_0x58e896=this[_0x2e1660(0x155)]){const _0x57b79b=_0x2e1660;if(this['slices']['length']>=this['maxLockedSlices'])return this[_0x57b79b(0x351)]?.(this[_0x57b79b(0x276)]),null;let _0x2d0654={'id':'volume-slice-'+this[_0x57b79b(0x1b3)],'axis':_0x5ae5e8,'position':clampPosition(this['axes'],_0x5ae5e8,_0xcd3b42),'depthMode':_0x58e896,'visible':!0x0};return this[_0x57b79b(0x1b3)]+=0x1,this['slices']=[...this[_0x57b79b(0x3e9)],_0x2d0654],this[_0x57b79b(0x36a)](),cloneLockedSlice(_0x2d0654);}[_0x2e1660(0xc6)](_0x36f07a,_0x107cd5){const _0x4fb83f=_0x2e1660;let _0x2d69c7=this[_0x4fb83f(0x3e9)]['findIndex'](_0x150d9f=>_0x150d9f['id']===_0x36f07a);if(_0x2d69c7<0x0)return;let _0x2c44ab=this[_0x4fb83f(0x3e9)][_0x2d69c7],_0x14b146=clampPosition(this[_0x4fb83f(0x15a)],_0x2c44ab[_0x4fb83f(0x3f9)],_0x107cd5);_0x14b146!==_0x2c44ab[_0x4fb83f(0x154)]&&(this[_0x4fb83f(0x3e9)]=this[_0x4fb83f(0x3e9)][_0x4fb83f(0x10e)](_0xb63238=>_0xb63238['id']===_0x36f07a?{..._0xb63238,'position':_0x14b146}:_0xb63238),this['notify']());}[_0x2e1660(0x415)](_0x230416){const _0x2f8435=_0x2e1660;let _0x543d6e=this[_0x2f8435(0x3e9)][_0x2f8435(0x3d9)](_0x387e5a=>_0x387e5a['id']!==_0x230416);_0x543d6e['length']!==this['slices']['length']&&(this[_0x2f8435(0x3e9)]=_0x543d6e,this[_0x2f8435(0x36a)]());}[_0x2e1660(0x1fc)](){const _0x186262=_0x2e1660;this['slices']['length']!==0x0&&(this[_0x186262(0x3e9)]=[],this[_0x186262(0x36a)]());}[_0x2e1660(0x36a)](){const _0x5a9e42=_0x2e1660;let _0x491c4a=this[_0x5a9e42(0x2e3)];for(let _0x5d8960 of this[_0x5a9e42(0x27b)])_0x5d8960(_0x491c4a);}};const axisEndpoints=_0x4228a4=>_0x4228a4==='x'?[[0x0,0x0,0x0],[0x1,0x0,0x0]]:_0x4228a4==='y'?[[0x0,0x0,0x0],[0x0,0x1,0x0]]:[[0x0,0x0,0x0],[0x0,0x0,0x1]],projectAxis=(_0xf5eb03,_0x1e5225)=>{const _0x12f07d=_0x2e1660;let _0x333062=multiplyMatrices(_0x1e5225[_0x12f07d(0xf6)],_0x1e5225[_0x12f07d(0x32d)]),[_0x5ebf48,_0xfba80]=axisEndpoints(_0xf5eb03),_0xaaead=projectPointToViewport(_0x333062,_0x5ebf48,_0x1e5225['viewportWidth'],_0x1e5225[_0x12f07d(0x290)]),_0x456338=projectPointToViewport(_0x333062,_0xfba80,_0x1e5225[_0x12f07d(0x2b3)],_0x1e5225[_0x12f07d(0x290)]);return!_0xaaead||!_0x456338?null:{'axis':_0xf5eb03,'startX':_0xaaead[0x0],'startY':_0xaaead[0x1],'endX':_0x456338[0x0],'endY':_0x456338[0x1]};},hitProjectedAxis=(_0x97dd,_0x43e952,_0x4f82cb)=>{const _0x33e515=_0x2e1660;let _0x4429b2=_0x97dd[_0x33e515(0x13e)]-_0x97dd[_0x33e515(0x24e)],_0x260084=_0x97dd[_0x33e515(0x25d)]-_0x97dd[_0x33e515(0x133)],_0x4777bf=_0x4429b2*_0x4429b2+_0x260084*_0x260084,_0x5aeb92=_0x4777bf===0x0?0x0:((_0x43e952-_0x97dd[_0x33e515(0x24e)])*_0x4429b2+(_0x4f82cb-_0x97dd[_0x33e515(0x133)])*_0x260084)/_0x4777bf,_0x38a92b=Math[_0x33e515(0x3ce)](0x1,Math[_0x33e515(0x3b1)](0x0,_0x5aeb92)),_0x2f4d17=_0x97dd[_0x33e515(0x24e)]+_0x38a92b*_0x4429b2,_0x20a8ce=_0x97dd[_0x33e515(0x133)]+_0x38a92b*_0x260084;return{'axis':_0x97dd[_0x33e515(0x3f9)],'distance':Math[_0x33e515(0x305)](_0x43e952-_0x2f4d17,_0x4f82cb-_0x20a8ce),'normalizedPosition':_0x38a92b};},eventViewportPoint=(_0x44616c,_0x68363a,_0x2773a5)=>{const _0x239f8b=_0x2e1660;let _0x33a058=_0x68363a[_0x239f8b(0x2dc)]();return[_0x33a058[_0x239f8b(0x274)]===0x0?0x0:(_0x44616c[_0x239f8b(0x40a)]-_0x33a058[_0x239f8b(0x1b8)])*_0x2773a5['viewportWidth']/_0x33a058[_0x239f8b(0x274)],_0x33a058[_0x239f8b(0x1c0)]===0x0?0x0:(_0x44616c['clientY']-_0x33a058[_0x239f8b(0x3c0)])*_0x2773a5[_0x239f8b(0x290)]/_0x33a058[_0x239f8b(0x1c0)]];},realAxisPosition=(_0x4115a3,_0x212cfa,_0x5ee42c)=>{const _0x34a15e=_0x2e1660;let _0x225084=_0x4115a3[_0x34a15e(0x1d0)];return normalizedToVolumeAxisValue(_0x212cfa==='x'?_0x225084['xAxis']:_0x212cfa==='y'?_0x225084['yAxis']:_0x225084['zAxis'],_0x5ee42c);};var SliceInteractionController=class{[_0x2e1660(0x202)];['state'];[_0x2e1660(0x331)];[_0x2e1660(0x33a)];['axisHysteresis'];['onInteractionStart'];['onInteractionEnd'];[_0x2e1660(0x3d5)]=null;[_0x2e1660(0x13a)]=null;[_0x2e1660(0x2c7)]=!0x1;constructor(_0x57cca7,_0x31feb3,_0x41311c,_0x3f710d={}){const _0x588511=_0x2e1660;this[_0x588511(0x202)]=_0x57cca7,this['state']=_0x31feb3,this[_0x588511(0x331)]=_0x41311c,this[_0x588511(0x33a)]=_0x3f710d[_0x588511(0x3de)]??0xa,this['axisHysteresis']=_0x3f710d[_0x588511(0x224)]??0x4,this['onInteractionStart']=_0x3f710d[_0x588511(0x418)],this[_0x588511(0x1bf)]=_0x3f710d[_0x588511(0x1bf)];}['initialize'](){const _0x284b08=_0x2e1660;this[_0x284b08(0x2c7)]||(this['initialized']=!0x0,this[_0x284b08(0x202)][_0x284b08(0x21a)](_0x284b08(0x297),this[_0x284b08(0x281)],!0x0),this['element'][_0x284b08(0x21a)](_0x284b08(0x28f),this[_0x284b08(0x104)],!0x0),this['element'][_0x284b08(0x21a)](_0x284b08(0x2c0),this[_0x284b08(0x363)],!0x0),window['addEventListener']('pointermove',this['handleWindowPointerMove'],!0x0),window[_0x284b08(0x21a)](_0x284b08(0x409),this[_0x284b08(0x132)],!0x0),window['addEventListener']('pointercancel',this[_0x284b08(0x132)],!0x0));}[_0x2e1660(0x2ae)](_0x374aab,_0x275fbb){const _0x4c3cbd=_0x2e1660;let _0x3a2274=this['state']['lockedSlices'][_0x4c3cbd(0x180)](_0x17a9d1=>_0x17a9d1['id']===_0x374aab);_0x3a2274&&(this[_0x4c3cbd(0x3d5)]={'kind':'locked','axis':_0x3a2274[_0x4c3cbd(0x3f9)],'pointerId':_0x275fbb[_0x4c3cbd(0x20d)],'sliceId':_0x374aab,'startX':_0x275fbb[_0x4c3cbd(0x40a)],'startY':_0x275fbb[_0x4c3cbd(0x2fd)],'moved':!0x1},this[_0x4c3cbd(0x418)]?.(),_0x275fbb[_0x4c3cbd(0x153)](),_0x275fbb['stopPropagation']());}[_0x2e1660(0x3e2)](){const _0xd2d6c6=_0x2e1660;this[_0xd2d6c6(0x2c7)]&&(this['initialized']=!0x1,this[_0xd2d6c6(0x202)][_0xd2d6c6(0xcc)](_0xd2d6c6(0x297),this[_0xd2d6c6(0x281)],!0x0),this['element'][_0xd2d6c6(0xcc)](_0xd2d6c6(0x28f),this[_0xd2d6c6(0x104)],!0x0),this[_0xd2d6c6(0x202)][_0xd2d6c6(0xcc)](_0xd2d6c6(0x2c0),this[_0xd2d6c6(0x363)],!0x0),window[_0xd2d6c6(0xcc)](_0xd2d6c6(0x28f),this[_0xd2d6c6(0x1b0)],!0x0),window[_0xd2d6c6(0xcc)](_0xd2d6c6(0x409),this[_0xd2d6c6(0x132)],!0x0),window[_0xd2d6c6(0xcc)](_0xd2d6c6(0x14e),this[_0xd2d6c6(0x132)],!0x0),this[_0xd2d6c6(0x3d5)]&&this[_0xd2d6c6(0x1bf)]?.(),this[_0xd2d6c6(0x3d5)]=null,this[_0xd2d6c6(0x13a)]=null,this[_0xd2d6c6(0x322)][_0xd2d6c6(0x1ce)]());}['findAxisHit'](_0x2a2ba0,_0x334269){const _0x40eb17=_0x2e1660;let _0x12acfd=this['getFrame']();if(!_0x12acfd)return null;let [_0x55cbbd,_0x4e31e4]=eventViewportPoint(_0x2a2ba0,this[_0x40eb17(0x202)],_0x12acfd),_0x12c33f=this[_0x40eb17(0x322)]['toolMode'];if(_0x12c33f===null)return null;let _0x89f829=(_0x334269?[_0x334269]:_0x12c33f===_0x40eb17(0x3d0)?['x','y','z']:[_0x12c33f])[_0x40eb17(0x10e)](_0x1c066c=>projectAxis(_0x1c066c,_0x12acfd))['filter'](_0x476072=>_0x476072!==null)['map'](_0x196aa5=>hitProjectedAxis(_0x196aa5,_0x55cbbd,_0x4e31e4));if(_0x89f829[_0x40eb17(0x37f)]===0x0)return null;_0x89f829['sort']((_0x31bc16,_0x5151d3)=>_0x31bc16['distance']-_0x5151d3[_0x40eb17(0x314)]);let _0x1a97b5=_0x89f829[0x0];if(!_0x334269&&this[_0x40eb17(0x13a)]){let _0x20ad78=_0x89f829[_0x40eb17(0x180)](_0x2aeac5=>_0x2aeac5[_0x40eb17(0x3f9)]===this['previousAxis']);_0x20ad78&&_0x20ad78[_0x40eb17(0x314)]<=_0x1a97b5['distance']+this[_0x40eb17(0xe8)]&&(_0x1a97b5=_0x20ad78);}return!_0x334269&&_0x1a97b5[_0x40eb17(0x314)]>this['hitTolerance']?null:_0x1a97b5;}['applyHit'](_0x33ae23,_0x1c7d01){const _0xb7d412=_0x2e1660;let _0xb2fadd=realAxisPosition(this[_0xb7d412(0x322)],_0x33ae23['axis'],_0x33ae23[_0xb7d412(0x217)]);_0x1c7d01?this[_0xb7d412(0x322)][_0xb7d412(0xc6)](_0x1c7d01,_0xb2fadd):this[_0xb7d412(0x322)]['updatePreview'](_0x33ae23[_0xb7d412(0x3f9)],_0xb2fadd),this[_0xb7d412(0x13a)]=_0x33ae23['axis'];}[_0x2e1660(0x281)]=_0x2cb2c3=>{const _0x2a439d=_0x2e1660;if(_0x2cb2c3[_0x2a439d(0x199)]!==0x0||this[_0x2a439d(0x3d5)])return;let _0x498a46=this[_0x2a439d(0x102)](_0x2cb2c3);_0x498a46&&(this['applyHit'](_0x498a46),this[_0x2a439d(0x3d5)]={'kind':_0x2a439d(0x3b4),'axis':_0x498a46[_0x2a439d(0x3f9)],'pointerId':_0x2cb2c3[_0x2a439d(0x20d)],'startX':_0x2cb2c3['clientX'],'startY':_0x2cb2c3[_0x2a439d(0x2fd)],'moved':!0x1},this[_0x2a439d(0x418)]?.(),this[_0x2a439d(0x202)][_0x2a439d(0x371)]?.(_0x2cb2c3['pointerId']),_0x2cb2c3[_0x2a439d(0x153)](),_0x2cb2c3[_0x2a439d(0x283)]());};['handlePointerMove']=_0x3d38d6=>{const _0x23fd8e=_0x2e1660;if(this[_0x23fd8e(0x3d5)])return;let _0x4c0905=this[_0x23fd8e(0x102)](_0x3d38d6);if(!_0x4c0905){this[_0x23fd8e(0x13a)]=null,this[_0x23fd8e(0x322)]['clearPreview']();return;}this[_0x23fd8e(0x242)](_0x4c0905);};[_0x2e1660(0x1b0)]=_0x1e2aa6=>{const _0x32a021=_0x2e1660;let _0x1a66bc=this['activePointer'];if(!_0x1a66bc||_0x1a66bc[_0x32a021(0x20d)]!==_0x1e2aa6[_0x32a021(0x20d)])return;let _0x1280ff=this['findAxisHit'](_0x1e2aa6,_0x1a66bc[_0x32a021(0x3f9)]);_0x1280ff&&(Math[_0x32a021(0x305)](_0x1e2aa6[_0x32a021(0x40a)]-_0x1a66bc[_0x32a021(0x24e)],_0x1e2aa6[_0x32a021(0x2fd)]-_0x1a66bc[_0x32a021(0x133)])>0x4&&(_0x1a66bc[_0x32a021(0x206)]=!0x0),this[_0x32a021(0x242)](_0x1280ff,_0x1a66bc[_0x32a021(0x397)]),_0x1e2aa6[_0x32a021(0x153)](),_0x1e2aa6[_0x32a021(0x283)]());};[_0x2e1660(0x132)]=_0x404f3b=>{const _0x304235=_0x2e1660;let _0x16b7ed=this[_0x304235(0x3d5)];!_0x16b7ed||_0x16b7ed[_0x304235(0x20d)]!==_0x404f3b[_0x304235(0x20d)]||(_0x16b7ed['kind']==='preview'&&!_0x16b7ed[_0x304235(0x206)]&&this[_0x304235(0x322)]['lockPreview'](),this['element'][_0x304235(0x32f)]?.(_0x404f3b[_0x304235(0x20d)])&&this[_0x304235(0x202)][_0x304235(0x227)](_0x404f3b[_0x304235(0x20d)]),this[_0x304235(0x3d5)]=null,this[_0x304235(0x1bf)]?.(),_0x404f3b['preventDefault'](),_0x404f3b[_0x304235(0x283)]());};[_0x2e1660(0x363)]=()=>{const _0x46db60=_0x2e1660;this['activePointer']||this[_0x46db60(0x322)][_0x46db60(0x1ce)]();};};const axisLabel=_0x197cc3=>_0x197cc3[_0x2e1660(0x284)](),defaultFormatPosition=(_0x165d1,_0x5c439c)=>axisLabel(_0x165d1)+'\x20'+Number(_0x5c439c[_0x2e1660(0x1e1)](0x4)),getAxisDefinition=(_0x556217,_0x467b10)=>{const _0x72967=_0x2e1660;let _0x340e92=_0x556217[_0x72967(0x1d0)];return _0x467b10==='x'?_0x340e92[_0x72967(0x3a3)]:_0x467b10==='y'?_0x340e92[_0x72967(0x185)]:_0x340e92[_0x72967(0x271)];},markerModelPoint=(_0x42cb5d,_0x7bbcdd)=>{const _0x50fd81=_0x2e1660;let _0x36bbe5=volumeAxisValueToNormalized(getAxisDefinition(_0x42cb5d,_0x7bbcdd[_0x50fd81(0x3f9)]),_0x7bbcdd['position']);return _0x7bbcdd[_0x50fd81(0x3f9)]==='x'?[_0x36bbe5,0x0,0x0]:_0x7bbcdd[_0x50fd81(0x3f9)]==='y'?[0x0,_0x36bbe5,0x0]:[0x0,0x0,_0x36bbe5];},applyMarkerBaseStyle=_0x593d5d=>{const _0x39c182=_0x2e1660;_0x593d5d[_0x39c182(0x20c)][_0x39c182(0x154)]=_0x39c182(0x25c),_0x593d5d[_0x39c182(0x20c)][_0x39c182(0x270)]='1',_0x593d5d[_0x39c182(0x20c)][_0x39c182(0x29f)]='flex',_0x593d5d[_0x39c182(0x20c)][_0x39c182(0x3f8)]='center',_0x593d5d[_0x39c182(0x20c)][_0x39c182(0x13c)]=_0x39c182(0x2ab),_0x593d5d[_0x39c182(0x20c)]['padding']=_0x39c182(0x31a),_0x593d5d['style'][_0x39c182(0x18e)]='1px\x20solid\x20rgb(255\x20255\x20255\x20/\x2065%)',_0x593d5d['style']['borderRadius']=_0x39c182(0x2ab),_0x593d5d[_0x39c182(0x20c)]['color']=_0x39c182(0x263),_0x593d5d[_0x39c182(0x20c)][_0x39c182(0x3ad)]=_0x39c182(0x417),_0x593d5d[_0x39c182(0x20c)][_0x39c182(0x186)]='12px/1.2\x20sans-serif',_0x593d5d[_0x39c182(0x20c)]['whiteSpace']=_0x39c182(0x157),_0x593d5d[_0x39c182(0x20c)][_0x39c182(0x40e)]=_0x39c182(0x2a2),_0x593d5d[_0x39c182(0x20c)]['userSelect']=_0x39c182(0x116),_0x593d5d['style'][_0x39c182(0x3d1)]=_0x39c182(0x116);},createDeleteButton=()=>{const _0x5f22a9=_0x2e1660;let _0x45de0a=document[_0x5f22a9(0x357)](_0x5f22a9(0x199));return _0x45de0a['type']=_0x5f22a9(0x199),_0x45de0a['textContent']='×',_0x45de0a[_0x5f22a9(0x1c6)](_0x5f22a9(0x35a),'删除切面'),_0x45de0a[_0x5f22a9(0x20c)][_0x5f22a9(0x2d7)]='0\x202px',_0x45de0a[_0x5f22a9(0x20c)][_0x5f22a9(0x18e)]='0',_0x45de0a['style'][_0x5f22a9(0x2eb)]=_0x5f22a9(0x3fb),_0x45de0a['style'][_0x5f22a9(0x3ad)]=_0x5f22a9(0x294),_0x45de0a[_0x5f22a9(0x20c)][_0x5f22a9(0x20f)]=_0x5f22a9(0x27f),_0x45de0a;};var SliceMarkerOverlay=class{[_0x2e1660(0x2c1)];['state'];[_0x2e1660(0x331)];[_0x2e1660(0x395)];[_0x2e1660(0xf5)];['markers']=new Map();[_0x2e1660(0x278)];['unsubscribe'];[_0x2e1660(0x22f)]=null;constructor(_0x22331d,_0x5b9a0d,_0x4603a8,_0x3dd262={}){const _0x39094f=_0x2e1660;this[_0x39094f(0x2c1)]=_0x22331d,this[_0x39094f(0x322)]=_0x5b9a0d,this[_0x39094f(0x331)]=_0x4603a8,this[_0x39094f(0x395)]=_0x3dd262[_0x39094f(0x395)],this[_0x39094f(0xf5)]=_0x3dd262[_0x39094f(0xf5)]??defaultFormatPosition,this[_0x39094f(0x278)]=_0x22331d[_0x39094f(0x20c)][_0x39094f(0x154)],getComputedStyle(_0x22331d)['position']==='static'&&(_0x22331d[_0x39094f(0x20c)][_0x39094f(0x154)]=_0x39094f(0x231)),this[_0x39094f(0x3b3)]=_0x5b9a0d['subscribe'](()=>this['update']());}['update'](){const _0x13197c=_0x2e1660;let _0x1edd59=this[_0x13197c(0x322)][_0x13197c(0x2e3)];this['syncPreview'](_0x1edd59['preview']),this[_0x13197c(0x323)](_0x1edd59[_0x13197c(0x41b)]);let _0x5ee8a7=this['getFrame']();if(!_0x5ee8a7){this[_0x13197c(0x40f)]();return;}_0x1edd59[_0x13197c(0x3b4)]&&this[_0x13197c(0x22f)]&&this[_0x13197c(0x318)](this[_0x13197c(0x22f)],_0x1edd59[_0x13197c(0x3b4)],_0x5ee8a7);for(let _0x5d58dd of _0x1edd59[_0x13197c(0x41b)]){let _0x2b95b5=this[_0x13197c(0x3e3)][_0x13197c(0x37a)](_0x5d58dd['id']);_0x2b95b5&&this[_0x13197c(0x318)](_0x2b95b5,_0x5d58dd,_0x5ee8a7);}}[_0x2e1660(0x3e2)](){const _0x160cb8=_0x2e1660;this[_0x160cb8(0x3b3)](),this['previewMarker']?.['remove'](),this[_0x160cb8(0x22f)]=null;for(let _0x130abc of this[_0x160cb8(0x3e3)]['values']())_0x130abc[_0x160cb8(0x2b1)]();this[_0x160cb8(0x3e3)][_0x160cb8(0xf2)](),this[_0x160cb8(0x2c1)][_0x160cb8(0x20c)][_0x160cb8(0x154)]=this[_0x160cb8(0x278)];}[_0x2e1660(0xfd)](_0x572d36){const _0x3aedff=_0x2e1660;if(!_0x572d36){this[_0x3aedff(0x22f)]?.['remove'](),this[_0x3aedff(0x22f)]=null;return;}this[_0x3aedff(0x22f)]||(this[_0x3aedff(0x22f)]=document['createElement']('div'),applyMarkerBaseStyle(this[_0x3aedff(0x22f)]),this[_0x3aedff(0x22f)][_0x3aedff(0x20c)][_0x3aedff(0x251)]=_0x3aedff(0x116),this['previewMarker'][_0x3aedff(0x20c)][_0x3aedff(0x211)]=_0x3aedff(0x2a3),this['container'][_0x3aedff(0x204)](this[_0x3aedff(0x22f)])),this[_0x3aedff(0x22f)][_0x3aedff(0xdb)]=this[_0x3aedff(0xf5)](_0x572d36[_0x3aedff(0x3f9)],_0x572d36[_0x3aedff(0x154)]);}[_0x2e1660(0x323)](_0x3762dd){const _0x52f267=_0x2e1660;let _0x2b6e77=new Set(_0x3762dd[_0x52f267(0x10e)](_0x459f8d=>_0x459f8d['id']));for(let [_0x42c6f9,_0x3a8912]of this[_0x52f267(0x3e3)])_0x2b6e77['has'](_0x42c6f9)||(_0x3a8912[_0x52f267(0x2b1)](),this[_0x52f267(0x3e3)][_0x52f267(0x214)](_0x42c6f9));for(let _0x21423e of _0x3762dd){let _0x54eab9=this[_0x52f267(0x3e3)]['get'](_0x21423e['id']);_0x54eab9||(_0x54eab9=this[_0x52f267(0x368)](_0x21423e['id']),this[_0x52f267(0x3e3)]['set'](_0x21423e['id'],_0x54eab9),this[_0x52f267(0x2c1)]['append'](_0x54eab9));let _0x400d57=_0x54eab9[_0x52f267(0x2f2)];_0x400d57&&(_0x400d57[_0x52f267(0xdb)]=this[_0x52f267(0xf5)](_0x21423e[_0x52f267(0x3f9)],_0x21423e[_0x52f267(0x154)]));}}[_0x2e1660(0x368)](_0x1e4726){const _0x4d1f9c=_0x2e1660;let _0x1f1885=document[_0x4d1f9c(0x357)]('div');applyMarkerBaseStyle(_0x1f1885),_0x1f1885['style'][_0x4d1f9c(0x20f)]=_0x4d1f9c(0x1cc),_0x1f1885[_0x4d1f9c(0x204)](document[_0x4d1f9c(0x26c)](''));let _0x50fd0d=createDeleteButton();return _0x50fd0d[_0x4d1f9c(0x21a)](_0x4d1f9c(0x297),_0x331aea=>_0x331aea['stopPropagation']()),_0x50fd0d[_0x4d1f9c(0x21a)]('click',_0x57af7a=>{const _0x273886=_0x4d1f9c;_0x57af7a[_0x273886(0x283)](),this[_0x273886(0x322)]['removeSlice'](_0x1e4726);}),_0x1f1885['addEventListener']('pointerdown',_0x3f3b45=>this['interactionController']?.[_0x4d1f9c(0x2ae)](_0x1e4726,_0x3f3b45)),_0x1f1885[_0x4d1f9c(0x204)](_0x50fd0d),_0x1f1885;}[_0x2e1660(0x318)](_0x4c11e,_0x56c87b,_0x5f3950){const _0x23c953=_0x2e1660;let _0x568187=projectPointToViewport(multiplyMatrices(_0x5f3950[_0x23c953(0xf6)],_0x5f3950[_0x23c953(0x32d)]),markerModelPoint(this[_0x23c953(0x322)],_0x56c87b),_0x5f3950[_0x23c953(0x2b3)],_0x5f3950['viewportHeight']);if(!_0x568187||_0x568187[0x2]<0x0||_0x568187[0x2]>0x1){_0x4c11e[_0x23c953(0x20c)][_0x23c953(0x29f)]=_0x23c953(0x116);return;}_0x4c11e[_0x23c953(0x20c)][_0x23c953(0x29f)]=_0x23c953(0xdc),_0x4c11e[_0x23c953(0x20c)]['left']=_0x568187[0x0]+'px',_0x4c11e[_0x23c953(0x20c)][_0x23c953(0x3c0)]=_0x568187[0x1]+'px';}[_0x2e1660(0x40f)](){const _0x55c8e8=_0x2e1660;this['previewMarker']&&(this[_0x55c8e8(0x22f)][_0x55c8e8(0x20c)][_0x55c8e8(0x29f)]='none');for(let _0x435cc2 of this[_0x55c8e8(0x3e3)][_0x55c8e8(0x21e)]())_0x435cc2['style'][_0x55c8e8(0x29f)]=_0x55c8e8(0x116);}};const clamp=(_0x5234f7,_0x54ed10)=>Math[_0x2e1660(0x3ce)](_0x54ed10-0x1,Math[_0x2e1660(0x3b1)](0x0,_0x5234f7)),createPhysicalBrickValues=(_0x4d2647,_0x3847d3,_0x30d25e,_0x3bf4bc)=>{const _0x1ea48d=_0x2e1660;validateVolumeChunk(_0x4d2647,_0x3bf4bc,_0x30d25e[_0x1ea48d(0x408)]);let _0x5c021e=_0x3847d3[_0x1ea48d(0x274)]+_0x3847d3[_0x1ea48d(0x405)]*0x2,_0x177869=_0x3847d3[_0x1ea48d(0x1c0)]+_0x3847d3[_0x1ea48d(0x405)]*0x2,_0x2acead=_0x3847d3[_0x1ea48d(0xc8)]+_0x3847d3[_0x1ea48d(0x405)]*0x2,_0x1494d6=new Float32Array(_0x5c021e*_0x177869*_0x2acead);for(let _0x2848bd=0x0;_0x2848bd<_0x2acead;_0x2848bd+=0x1){let _0x438c80=clamp(_0x30d25e['coreRange']['sourceYStart']+_0x2848bd-_0x3847d3[_0x1ea48d(0x405)],_0x4d2647['zAxis'][_0x1ea48d(0x2e2)])-_0x3bf4bc[_0x1ea48d(0x338)][_0x1ea48d(0x30e)];for(let _0x4cdb12=0x0;_0x4cdb12<_0x177869;_0x4cdb12+=0x1){let _0x489fcf=clamp(_0x30d25e[_0x1ea48d(0x3dc)][_0x1ea48d(0x182)]+_0x4cdb12-_0x3847d3[_0x1ea48d(0x405)],_0x4d2647['yAxis'][_0x1ea48d(0x2e2)])-_0x3bf4bc['range'][_0x1ea48d(0x182)];for(let _0x79e44a=0x0;_0x79e44a<_0x5c021e;_0x79e44a+=0x1){let _0x542dac=clamp(_0x30d25e[_0x1ea48d(0x3dc)][_0x1ea48d(0x23f)]+_0x79e44a-_0x3847d3['halo'],_0x4d2647['xAxis']['count'])-_0x3bf4bc[_0x1ea48d(0x338)][_0x1ea48d(0x23f)];_0x1494d6[(_0x2848bd*_0x177869+_0x4cdb12)*_0x5c021e+_0x79e44a]=_0x3bf4bc['values'][(_0x438c80*_0x3bf4bc['height']+_0x489fcf)*_0x3bf4bc[_0x1ea48d(0x274)]+_0x542dac];}}}return _0x1494d6;},normalizeColorStops=_0x1bb49f=>{const _0x9fcddb=_0x2e1660;if(_0x1bb49f[_0x9fcddb(0x37f)]===0x0)throw Error(_0x9fcddb(0xc3));return _0x1bb49f[_0x9fcddb(0x10e)]((_0x5e315c,_0x21694f)=>{const _0x25f692=_0x9fcddb;if(Number[_0x25f692(0x1d5)](_0x5e315c[_0x25f692(0x3ce)])||Number[_0x25f692(0x1d5)](_0x5e315c['max']))throw TypeError('第'+(_0x21694f+0x1)+_0x25f692(0x1f3));if(_0x5e315c['min']>=_0x5e315c[_0x25f692(0x3b1)])throw Error('第'+(_0x21694f+0x1)+_0x25f692(0xe7));return{'min':_0x5e315c[_0x25f692(0x3ce)],'max':_0x5e315c[_0x25f692(0x3b1)],'color':parseRasterColor(_0x5e315c[_0x25f692(0x2eb)])};})['sort']((_0x3260a7,_0x3222e4)=>_0x3260a7['min']-_0x3222e4['min']);},parseRasterColor=_0x51035f=>{const _0x4b372d=_0x2e1660;let _0xfbeaa4=_0x51035f[_0x4b372d(0x378)]()[_0x4b372d(0x164)]();if(_0xfbeaa4[_0x4b372d(0x14d)]('#'))return parseHexColor(_0xfbeaa4);if(_0xfbeaa4['startsWith'](_0x4b372d(0x1d8)))return parseRgbColor(_0xfbeaa4,!0x0);if(_0xfbeaa4['startsWith']('rgb('))return parseRgbColor(_0xfbeaa4,!0x1);throw Error('不支持的颜色格式:\x20'+_0x51035f);},parseHexColor=_0x5cb9b4=>{const _0x469740=_0x2e1660;if(_0x5cb9b4[_0x469740(0x37f)]===0x4)return normalizeRgb(Number[_0x469740(0x13b)](''+_0x5cb9b4[0x1]+_0x5cb9b4[0x1],0x10),Number[_0x469740(0x13b)](''+_0x5cb9b4[0x2]+_0x5cb9b4[0x2],0x10),Number[_0x469740(0x13b)](''+_0x5cb9b4[0x3]+_0x5cb9b4[0x3],0x10),0x1);if(_0x5cb9b4[_0x469740(0x37f)]===0x7)return normalizeRgb(Number[_0x469740(0x13b)](_0x5cb9b4[_0x469740(0x414)](0x1,0x3),0x10),Number['parseInt'](_0x5cb9b4['slice'](0x3,0x5),0x10),Number[_0x469740(0x13b)](_0x5cb9b4[_0x469740(0x414)](0x5,0x7),0x10),0x1);throw Error(_0x469740(0x398)+_0x5cb9b4);},parseRgbColor=(_0xcec288,_0x2458bf)=>{const _0x5a441c=_0x2e1660;let _0x52faeb=_0xcec288['match'](/^rgba?\(([^)]+)\)$/);if(!_0x52faeb)throw Error(_0x5a441c(0x391)+_0xcec288);let _0x1feee5=_0x52faeb[0x1][_0x5a441c(0xd7)](',')[_0x5a441c(0x10e)](_0x4e0e6e=>_0x4e0e6e[_0x5a441c(0x378)]()),_0x392b30=_0x2458bf?0x4:0x3;if(_0x1feee5['length']!==_0x392b30)throw Error(_0x5a441c(0x166)+_0xcec288);return normalizeRgb(Number(_0x1feee5[0x0]),Number(_0x1feee5[0x1]),Number(_0x1feee5[0x2]),_0x2458bf?Number(_0x1feee5[0x3]):0x1);},normalizeRgb=(_0x3c1b49,_0x2d2870,_0x2389a7,_0x346398)=>{const _0x3013a1=_0x2e1660;if(!isValidRgbChannel(_0x3c1b49)||!isValidRgbChannel(_0x2d2870)||!isValidRgbChannel(_0x2389a7))throw Error(_0x3013a1(0x1fd));if(!Number[_0x3013a1(0x2c4)](_0x346398)||_0x346398<0x0||_0x346398>0x1)throw Error(_0x3013a1(0x2fc));return[_0x3c1b49/0xff,_0x2d2870/0xff,_0x2389a7/0xff,_0x346398];},isValidRgbChannel=_0x27f75f=>Number[_0x2e1660(0x2c4)](_0x27f75f)&&_0x27f75f>=0x0&&_0x27f75f<=0xff,validateStops=_0x187994=>{const _0x8639d1=_0x2e1660;if(_0x187994['length']===0x0)throw Error(_0x8639d1(0x326));let _0x42d5c1=-0x1/0x0;for(let _0x492f31 of _0x187994){if(!Number['isFinite'](_0x492f31['value'])||_0x492f31[_0x8639d1(0x3a0)]<=_0x42d5c1)throw Error(_0x8639d1(0x342));if(!Number[_0x8639d1(0x2c4)](_0x492f31[_0x8639d1(0x211)])||_0x492f31[_0x8639d1(0x211)]<0x0||_0x492f31[_0x8639d1(0x211)]>0x1)throw Error(_0x8639d1(0x2d6));_0x42d5c1=_0x492f31[_0x8639d1(0x3a0)];}},findTransferInterval=(_0x62f802,_0x45b0fc)=>{const _0x441844=_0x2e1660;if(_0x62f802<=_0x45b0fc[0x0])return[0x0,0x0,0x0];for(let _0x23f8f7=0x1;_0x23f8f7<_0x45b0fc['length'];_0x23f8f7+=0x1)if(_0x62f802<=_0x45b0fc[_0x23f8f7]){let _0x4132d8=_0x45b0fc[_0x23f8f7]-_0x45b0fc[_0x23f8f7-0x1];return[_0x23f8f7-0x1,_0x23f8f7,_0x4132d8===0x0?0x0:Math[_0x441844(0x3ce)](0x1,Math[_0x441844(0x3b1)](0x0,(_0x62f802-_0x45b0fc[_0x23f8f7-0x1])/_0x4132d8))];}let _0x273e59=_0x45b0fc[_0x441844(0x37f)]-0x1;return[_0x273e59,_0x273e59,0x0];},prepareWebgpuVolumeTransfer=(_0x28ac8b,_0x304a86)=>{validateStops(_0x304a86);let _0x350bae=normalizeColorStops([..._0x28ac8b]);return{'colorStops':_0x350bae['flatMap']((_0x2487c9,_0x4bd16a)=>{const _0x8ba8f6=_0x2b0a;let _0x530488=_0x350bae[Math[_0x8ba8f6(0x3ce)](_0x4bd16a+0x1,_0x350bae[_0x8ba8f6(0x37f)]-0x1)][_0x8ba8f6(0x2eb)];return[{'value':_0x2487c9[_0x8ba8f6(0x3ce)],'color':_0x2487c9['color']},{'value':_0x2487c9[_0x8ba8f6(0x3b1)],'color':_0x530488}];}),'opacityStops':_0x304a86['map'](_0x16496c=>({..._0x16496c}))};},sampleVolumeTransferColor=(_0x27af30,_0x5a1525,_0x81a6b8,_0x50a481)=>{const _0x4a7475=_0x2e1660;if(!Number[_0x4a7475(0x2c4)](_0x27af30))return[0x0,0x0,0x0,0x0];let [_0x4c3500,_0x3568f4,_0x5969e8]=findTransferInterval(_0x27af30,_0x5a1525[_0x4a7475(0x10e)](_0x4d6676=>_0x4d6676[_0x4a7475(0x3a0)])),_0x50bc42=_0x5a1525[_0x4c3500],_0x5acc8e=_0x5a1525[_0x3568f4],_0x220f4b=_0x50a481===_0x4a7475(0x392)?0x0:_0x5969e8;return[_0x50bc42[_0x4a7475(0x2eb)][0x0]+(_0x5acc8e[_0x4a7475(0x2eb)][0x0]-_0x50bc42['color'][0x0])*_0x220f4b,_0x50bc42[_0x4a7475(0x2eb)][0x1]+(_0x5acc8e[_0x4a7475(0x2eb)][0x1]-_0x50bc42[_0x4a7475(0x2eb)][0x1])*_0x220f4b,_0x50bc42[_0x4a7475(0x2eb)][0x2]+(_0x5acc8e[_0x4a7475(0x2eb)][0x2]-_0x50bc42[_0x4a7475(0x2eb)][0x2])*_0x220f4b,(_0x50bc42[_0x4a7475(0x2eb)][0x3]+(_0x5acc8e[_0x4a7475(0x2eb)][0x3]-_0x50bc42['color'][0x3])*_0x220f4b)*_0x81a6b8];},sampleVolumeTransferOpacity=(_0xd9530b,_0x2869f4,_0x18f9ed)=>{const _0x58cd16=_0x2e1660;if(!Number[_0x58cd16(0x2c4)](_0xd9530b))return 0x0;let [_0x5f5423,_0x57109c,_0x1abc26]=findTransferInterval(_0xd9530b,_0x2869f4[_0x58cd16(0x10e)](_0x153ae9=>_0x153ae9[_0x58cd16(0x3a0)])),_0x37f2cd=_0x18f9ed===_0x58cd16(0x392)?0x0:_0x1abc26;return _0x2869f4[_0x5f5423]['opacity']+(_0x2869f4[_0x57109c][_0x58cd16(0x211)]-_0x2869f4[_0x5f5423]['opacity'])*_0x37f2cd;},DEFAULT_CAMERA={'position':[1.4,1.2,2.1],'target':[0.5,0.5,0.5],'up':[0x0,0x1,0x0],'projection':{'type':_0x2e1660(0x219),'fovYDegrees':0x2d,'near':0.01,'far':0x64}},IDENTITY_MATRIX=[0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x1],clamp01=_0x2b55e6=>Math['min'](0x1,Math['max'](0x0,_0x2b55e6)),qualityStepLength=_0x25d5d2=>_0x25d5d2===_0x2e1660(0x3e0)?0.012:_0x25d5d2===_0x2e1660(0x2aa)?0.0025:_0x25d5d2==='balanced'?0.005:0.006,qualityUploadCount=_0xc92e29=>_0xc92e29==='performance'?0x8:_0xc92e29==='quality'?0x2:0x4,nextAutoQuality=(_0x14eb08,_0xcae2aa)=>_0xcae2aa>0x18?_0x14eb08==='quality'?_0x2e1660(0x343):_0x2e1660(0x3e0):_0xcae2aa<0xe?_0x14eb08===_0x2e1660(0x3e0)?_0x2e1660(0x343):_0x2e1660(0x2aa):_0x14eb08,validatePositiveOption=(_0x3b924f,_0x200e35)=>{const _0xef0750=_0x2e1660;if(!Number[_0xef0750(0x2c4)](_0x3b924f)||_0x3b924f<=0x0)throw Error(_0x200e35+'\x20must\x20be\x20a\x20positive\x20finite\x20number.\x20'+_0x200e35+_0xef0750(0x287));return _0x3b924f;},normalizeClipBox=(_0x34c018,_0x1decf4)=>{const _0x538449=_0x2e1660;if(!_0x1decf4)return{'minimum':[0x0,0x0,0x0],'maximum':[0x1,0x1,0x1]};let _0x2cb72e=clamp01(volumeAxisValueToNormalized(_0x34c018[_0x538449(0x246)][_0x538449(0x3a3)],_0x1decf4['minX'])),_0x394f3c=clamp01(volumeAxisValueToNormalized(_0x34c018[_0x538449(0x246)][_0x538449(0x3a3)],_0x1decf4[_0x538449(0x364)])),_0x260ed0=clamp01(volumeAxisValueToNormalized(_0x34c018[_0x538449(0x246)]['yAxis'],_0x1decf4[_0x538449(0x3bd)])),_0x7c7563=clamp01(volumeAxisValueToNormalized(_0x34c018[_0x538449(0x246)][_0x538449(0x185)],_0x1decf4[_0x538449(0x2b5)])),_0x41b315=clamp01(volumeAxisValueToNormalized(_0x34c018[_0x538449(0x246)][_0x538449(0x271)],_0x1decf4[_0x538449(0x3f5)])),_0x1b92eb=clamp01(volumeAxisValueToNormalized(_0x34c018['metadata']['zAxis'],_0x1decf4[_0x538449(0x1e0)]));return{'minimum':[Math['min'](_0x2cb72e,_0x394f3c),Math[_0x538449(0x3ce)](_0x260ed0,_0x7c7563),Math['min'](_0x41b315,_0x1b92eb)],'maximum':[Math[_0x538449(0x3b1)](_0x2cb72e,_0x394f3c),Math[_0x538449(0x3b1)](_0x260ed0,_0x7c7563),Math[_0x538449(0x3b1)](_0x41b315,_0x1b92eb)]};},createAxesMesh=()=>({'id':_0x2e1660(0x1ab),'topology':_0x2e1660(0x19a),'depthMode':_0x2e1660(0x12b),'vertices':new Float32Array([0x0,0x0,0x0,0x1,0.2,0.2,0x1,0x1,0x0,0x0,0x1,0.2,0.2,0x1,0x0,0x0,0x0,0.2,0x1,0.2,0x1,0x0,0x1,0x0,0.2,0x1,0.2,0x1,0x0,0x0,0x0,0.2,0.5,0x1,0x1,0x0,0x0,0x1,0.2,0.5,0x1,0x1])}),createBoundsMesh=()=>{const _0x1f513b=_0x2e1660;let _0x15d166=[0.1,0.53,0.56,0.62],_0xc2ac69=[[0x0,0x0,0x0],[0x1,0x0,0x0],[0x0,0x1,0x0],[0x1,0x1,0x0],[0x0,0x0,0x1],[0x1,0x0,0x1],[0x0,0x1,0x1],[0x1,0x1,0x1]],_0xa847e1=[[0x0,0x1],[0x0,0x2],[0x1,0x3],[0x2,0x3],[0x4,0x5],[0x4,0x6],[0x5,0x7],[0x6,0x7],[0x0,0x4],[0x1,0x5],[0x2,0x6],[0x3,0x7]],_0x494fbf=new Float32Array(_0xa847e1[_0x1f513b(0x37f)]*0x2*0x7),_0x5ad4fe=0x0;for(let _0x3748b1 of _0xa847e1)for(let _0x152882 of _0x3748b1)_0x494fbf[_0x1f513b(0x105)]([..._0xc2ac69[_0x152882],..._0x15d166],_0x5ad4fe),_0x5ad4fe+=0x7;return{'id':'volume-bounds','topology':_0x1f513b(0x19a),'depthMode':'scene','vertices':_0x494fbf};},createProfileSceneMesh=(_0x151246,_0x217144,_0x45e487,_0x556331)=>{const _0x51123a=_0x2e1660;let _0x332c2a=new Float32Array(_0x151246[_0x51123a(0xe2)][_0x51123a(0x37f)]*0x7);for(let _0x47a7b6=0x0;_0x47a7b6<_0x151246[_0x51123a(0xe2)]['length'];_0x47a7b6+=0x1){let _0x39d5cc=_0x151246[_0x51123a(0xe2)][_0x47a7b6],_0x535dec=_0x39d5cc*0x3,_0x24e7f6=sampleVolumeTransferOpacity(_0x151246['values'][_0x39d5cc],_0x45e487,_0x556331),_0x5d0a30=sampleVolumeTransferColor(_0x151246['values'][_0x39d5cc],_0x217144,_0x151246[_0x51123a(0x211)]*_0x24e7f6,_0x556331);_0x332c2a['set']([_0x151246[_0x51123a(0x1bc)][_0x535dec],_0x151246[_0x51123a(0x1bc)][_0x535dec+0x1],_0x151246['positions'][_0x535dec+0x2],_0x5d0a30[0x0]*_0x5d0a30[0x3],_0x5d0a30[0x1]*_0x5d0a30[0x3],_0x5d0a30[0x2]*_0x5d0a30[0x3],_0x5d0a30[0x3]],_0x47a7b6*0x7);}return{'id':_0x151246['id'],'topology':_0x51123a(0x3b0),'depthMode':_0x151246['depthMode'],'vertices':_0x332c2a};},descriptorDistance=(_0x5cd886,_0x5e9d68,_0x2c4423)=>{const _0x53fb93=_0x2e1660;let _0x4ce539=(_0x5cd886['coordinate']['x']+0.5)/_0x5e9d68[_0x53fb93(0x10b)],_0x1d9387=(_0x5cd886[_0x53fb93(0x140)]['y']+0.5)/_0x5e9d68[_0x53fb93(0x30d)],_0xd7b4bd=(_0x5cd886[_0x53fb93(0x140)]['z']+0.5)/_0x5e9d68[_0x53fb93(0x17a)];return Math[_0x53fb93(0x305)](_0x4ce539-_0x2c4423[_0x53fb93(0x154)][0x0],_0x1d9387-_0x2c4423[_0x53fb93(0x154)][0x1],_0xd7b4bd-_0x2c4423['position'][0x2]);},descriptorLogicalIndex=(_0x3292c2,_0x5e447d)=>(_0x3292c2[_0x2e1660(0x140)]['z']*_0x5e447d[_0x2e1660(0x30d)]+_0x3292c2['coordinate']['y'])*_0x5e447d[_0x2e1660(0x10b)]+_0x3292c2['coordinate']['x'],descriptorContainsSlice=(_0x2407ef,_0x266f0a,_0x12586a,_0x4e68f8)=>{const _0x445a03=_0x2e1660;let _0x1cfe9d=_0x12586a==='x'?{'start':_0x2407ef['coreRange'][_0x445a03(0x23f)],'count':_0x2407ef[_0x445a03(0x3dc)][_0x445a03(0x1ca)],'size':_0x266f0a[_0x445a03(0x246)][_0x445a03(0x3a3)][_0x445a03(0x2e2)]}:_0x12586a==='y'?{'start':_0x2407ef[_0x445a03(0x3dc)][_0x445a03(0x182)],'count':_0x2407ef[_0x445a03(0x3dc)][_0x445a03(0x1f5)],'size':_0x266f0a[_0x445a03(0x246)][_0x445a03(0x185)][_0x445a03(0x2e2)]}:{'start':_0x2407ef[_0x445a03(0x3dc)][_0x445a03(0x30e)],'count':_0x2407ef[_0x445a03(0x3dc)][_0x445a03(0x37b)],'size':_0x266f0a[_0x445a03(0x246)][_0x445a03(0x271)]['count']};return _0x4e68f8>=_0x1cfe9d[_0x445a03(0x2ce)]/_0x1cfe9d[_0x445a03(0x234)]&&_0x4e68f8<=(_0x1cfe9d['start']+_0x1cfe9d[_0x445a03(0x2e2)])/_0x1cfe9d[_0x445a03(0x234)];},descriptorContainsProfile=(_0x40ea39,_0x4e9845,_0x3daab6)=>{const _0x34a2c6=_0x2e1660;let _0x1ec395=_0x40ea39[_0x34a2c6(0x3dc)]['xStart']/_0x4e9845['metadata'][_0x34a2c6(0x3a3)]['count'],_0x484d5d=(_0x40ea39[_0x34a2c6(0x3dc)][_0x34a2c6(0x23f)]+_0x40ea39[_0x34a2c6(0x3dc)][_0x34a2c6(0x1ca)])/_0x4e9845['metadata'][_0x34a2c6(0x3a3)][_0x34a2c6(0x2e2)],_0x5b3c62=_0x40ea39['coreRange'][_0x34a2c6(0x182)]/_0x4e9845[_0x34a2c6(0x246)][_0x34a2c6(0x185)][_0x34a2c6(0x2e2)],_0x42161b=(_0x40ea39[_0x34a2c6(0x3dc)]['levelStart']+_0x40ea39[_0x34a2c6(0x3dc)][_0x34a2c6(0x1f5)])/_0x4e9845[_0x34a2c6(0x246)][_0x34a2c6(0x185)][_0x34a2c6(0x2e2)],_0x42390e=_0x40ea39[_0x34a2c6(0x3dc)]['sourceYStart']/_0x4e9845['metadata'][_0x34a2c6(0x271)]['count'],_0x629cf1=(_0x40ea39[_0x34a2c6(0x3dc)][_0x34a2c6(0x30e)]+_0x40ea39[_0x34a2c6(0x3dc)][_0x34a2c6(0x37b)])/_0x4e9845[_0x34a2c6(0x246)][_0x34a2c6(0x271)][_0x34a2c6(0x2e2)];return _0x3daab6[_0x34a2c6(0x38b)](_0x98de83=>{const _0x2057cd=_0x34a2c6;let _0x57d4e1=volumeAxisValueToNormalized(_0x4e9845['metadata']['yAxis'],_0x98de83[_0x2057cd(0x3e7)][0x0]),_0x277004=volumeAxisValueToNormalized(_0x4e9845['metadata'][_0x2057cd(0x185)],_0x98de83['heights'][_0x98de83[_0x2057cd(0x3e7)][_0x2057cd(0x37f)]-0x1]);if(Math[_0x2057cd(0x3b1)](_0x57d4e1,_0x277004)<_0x5b3c62||Math[_0x2057cd(0x3ce)](_0x57d4e1,_0x277004)>_0x42161b)return!0x1;for(let _0x3141be=0x0;_0x3141be<_0x98de83[_0x2057cd(0x381)][_0x2057cd(0x37f)];_0x3141be+=0x2){let _0xc14e8e=volumeAxisValueToNormalized(_0x4e9845['metadata'][_0x2057cd(0x3a3)],_0x98de83[_0x2057cd(0x381)][_0x3141be]),_0x5d1002=volumeAxisValueToNormalized(_0x4e9845['metadata'][_0x2057cd(0x271)],_0x98de83['path'][_0x3141be+0x1]);if(_0xc14e8e>=_0x1ec395&&_0xc14e8e<=_0x484d5d&&_0x5d1002>=_0x42390e&&_0x5d1002<=_0x629cf1)return!0x0;}return!0x1;});},descriptorDemandPriority=(_0x260362,_0x2b2eb8,_0x1c71ca,_0x29e6ca)=>{const _0x45805b=_0x2e1660;let _0x2186cc=_0x1c71ca[_0x45805b(0x3b4)];if(_0x2186cc){let _0x324fa4=_0x2186cc[_0x45805b(0x3f9)]==='x'?_0x2b2eb8['metadata']['xAxis']:_0x2186cc['axis']==='y'?_0x2b2eb8[_0x45805b(0x246)][_0x45805b(0x185)]:_0x2b2eb8[_0x45805b(0x246)][_0x45805b(0x271)];if(descriptorContainsSlice(_0x260362,_0x2b2eb8,_0x2186cc[_0x45805b(0x3f9)],volumeAxisValueToNormalized(_0x324fa4,_0x2186cc[_0x45805b(0x154)])))return 0x0;}for(let _0x22a5d1 of _0x1c71ca[_0x45805b(0x41b)]){let _0x51b3dc=_0x22a5d1[_0x45805b(0x3f9)]==='x'?_0x2b2eb8[_0x45805b(0x246)][_0x45805b(0x3a3)]:_0x22a5d1[_0x45805b(0x3f9)]==='y'?_0x2b2eb8['metadata'][_0x45805b(0x185)]:_0x2b2eb8[_0x45805b(0x246)]['zAxis'];if(_0x22a5d1[_0x45805b(0x1fe)]&&descriptorContainsSlice(_0x260362,_0x2b2eb8,_0x22a5d1[_0x45805b(0x3f9)],volumeAxisValueToNormalized(_0x51b3dc,_0x22a5d1['position'])))return 0x1;}return descriptorContainsProfile(_0x260362,_0x2b2eb8,_0x29e6ca)?0x2:0x3;};var VolumeScene=class VolumeScene{[_0x2e1660(0x341)]=_0x2e1660(0xc9);[_0x2e1660(0xc5)];['volumeCamera'];['canvas'];[_0x2e1660(0x365)];[_0x2e1660(0x277)];[_0x2e1660(0x401)]=[];[_0x2e1660(0xc7)];[_0x2e1660(0x158)];[_0x2e1660(0xeb)];['sliceState'];[_0x2e1660(0x258)];['colorInputs'];[_0x2e1660(0x108)];[_0x2e1660(0x135)]=[];[_0x2e1660(0x200)];[_0x2e1660(0x350)]=0x0;[_0x2e1660(0x107)]=new Set();[_0x2e1660(0x110)]=new Map();[_0x2e1660(0x3b2)]=new Set();[_0x2e1660(0x203)]=0x0;[_0x2e1660(0x2c2)]=!0x1;[_0x2e1660(0x10a)];['verticalScale'];[_0x2e1660(0x19c)];[_0x2e1660(0x27e)];['quality'];[_0x2e1660(0x3f0)]=_0x2e1660(0x343);[_0x2e1660(0x3ef)]=0x0;[_0x2e1660(0x221)]=0x0;[_0x2e1660(0x196)];['pointer']=null;['navigationMode'];[_0x2e1660(0x12c)];[_0x2e1660(0x367)];[_0x2e1660(0x1c7)];['interactionStepScale'];['activeInteractions']=new Set();[_0x2e1660(0x3c9)]=!0x0;[_0x2e1660(0x1ad)]=!0x1;[_0x2e1660(0x2ad)]=0x0;[_0x2e1660(0x361)]=0x0;[_0x2e1660(0x2f9)]=null;[_0x2e1660(0x1b2)];[_0x2e1660(0x33e)];['onSlicesChange'];[_0x2e1660(0xd1)]=0x0;[_0x2e1660(0x1a7)]=0x0;['actualFrameIntervalMilliseconds']=0x0;[_0x2e1660(0x181)]=new Set();['sliceInteraction']=null;[_0x2e1660(0x11e)]=null;constructor(_0x1481fa,_0x7ce057){const _0x1c516d=_0x2e1660;this[_0x1c516d(0xc5)]=_0x7ce057,this['canvas']=_0x1481fa[_0x1c516d(0x249)],this['interactionElement']=_0x1481fa[_0x1c516d(0x277)]??_0x1481fa[_0x1c516d(0x249)],this[_0x1c516d(0x365)]=_0x1481fa[_0x1c516d(0x365)]??_0x1c516d(0xee),this[_0x1c516d(0xc7)]=_0x1481fa['source'],this[_0x1c516d(0x200)]=_0x1481fa[_0x1c516d(0x200)]??0x0,this[_0x1c516d(0x158)]=this['createLayout'](_0x1481fa),this['descriptors']=createVolumeBrickDescriptors(this[_0x1c516d(0xc7)][_0x1c516d(0x246)],this[_0x1c516d(0x158)]),this['volumeCamera']=new VolumeCamera({'state':_0x1481fa[_0x1c516d(0x1af)]??DEFAULT_CAMERA}),this[_0x1c516d(0x3e8)]=this[_0x1c516d(0x28c)](_0x1481fa);let _0x7c55d6=prepareWebgpuVolumeTransfer(_0x1481fa[_0x1c516d(0x258)],_0x1481fa[_0x1c516d(0x108)]);if(this['colorStops']=_0x7c55d6['colorStops'],this[_0x1c516d(0x299)]=_0x1481fa['colorStops'],this[_0x1c516d(0x108)]=_0x1481fa['opacityStops'],this[_0x1c516d(0x10a)]=_0x1481fa[_0x1c516d(0x32d)]??IDENTITY_MATRIX,this[_0x1c516d(0x195)]=validatePositiveOption(_0x1481fa['verticalScale']??0x1,_0x1c516d(0x195)),this[_0x1c516d(0x19c)]=_0x1481fa['coordinateSystem']??_0x1c516d(0x3fa),this[_0x1c516d(0x19c)]===_0x1c516d(0x245)&&_0x1481fa[_0x1c516d(0x32d)])throw Error(_0x1c516d(0x21c));this['clipBox']=_0x1481fa[_0x1c516d(0x27e)]??null,this[_0x1c516d(0x2aa)]=_0x1481fa[_0x1c516d(0x2aa)]??_0x1c516d(0x3d0),this[_0x1c516d(0x3b5)]=_0x1481fa[_0x1c516d(0x3b5)]??_0x1c516d(0x16e),this['pixelRatioCap']=validatePositiveOption(_0x1481fa[_0x1c516d(0x12c)]??0x2,_0x1c516d(0x12c)),this[_0x1c516d(0x367)]=validatePositiveOption(_0x1481fa['renderScale']??0x1,_0x1c516d(0x367)),this[_0x1c516d(0x1c7)]=validatePositiveOption(_0x1481fa['interactionRenderScale']??0.6,_0x1c516d(0x1c7)),this[_0x1c516d(0x3a8)]=validatePositiveOption(_0x1481fa[_0x1c516d(0x3a8)]??0x1,_0x1c516d(0x3a8)),this['colorMode']=_0x1481fa[_0x1c516d(0x196)]??'smooth',this[_0x1c516d(0x1b2)]=_0x1481fa[_0x1c516d(0xff)]?.[_0x1c516d(0x155)]??_0x1c516d(0x17e),this[_0x1c516d(0x33e)]=_0x1481fa[_0x1c516d(0xff)]?.[_0x1c516d(0x19b)],this[_0x1c516d(0x3cc)]=_0x1481fa[_0x1c516d(0xff)]?.[_0x1c516d(0x3cc)],this[_0x1c516d(0xc5)][_0x1c516d(0x3f7)](()=>this[_0x1c516d(0x19d)]()),this[_0x1c516d(0xc5)][_0x1c516d(0x1a4)](_0x7c55d6[_0x1c516d(0x258)],_0x7c55d6[_0x1c516d(0x108)]);let _0x246b1d=_0x1481fa[_0x1c516d(0x393)]??this[_0x1c516d(0x19c)]===_0x1c516d(0x3fa);this[_0x1c516d(0xc5)]['setAxes'](_0x246b1d?[createBoundsMesh(),createAxesMesh()]:[]),this[_0x1c516d(0xc5)][_0x1c516d(0x171)]({'renderMode':_0x1481fa['mode']??_0x1c516d(0x253),'colorMode':this[_0x1c516d(0x196)],'opacity':_0x1481fa[_0x1c516d(0x211)]??0.3,'densityScale':_0x1481fa[_0x1c516d(0x32c)]??0x1,'stepLength':this[_0x1c516d(0x34a)](),'volumeDimFactor':this[_0x1c516d(0x3e8)][_0x1c516d(0x28d)]}),this['configureSource'](),this[_0x1c516d(0x31d)](),this[_0x1c516d(0x2fa)](),this[_0x1c516d(0x335)](_0x1481fa),this[_0x1c516d(0x252)]();}static async[_0x2e1660(0x373)](_0x7ee824){const _0x150ee5=_0x2e1660;if(validateVolumeSource(_0x7ee824[_0x150ee5(0xc7)]),validateVolumeTimeIndex(_0x7ee824['source']['metadata'],_0x7ee824['timeIndex']??0x0),(_0x7ee824[_0x150ee5(0x11d)]?.[_0x150ee5(0x405)]??0x1)!==0x1)throw Error(_0x150ee5(0x1ff));let _0x265727=_0x7ee824[_0x150ee5(0x11d)]?.[_0x150ee5(0x2a1)]??0x20000000,_0x178ea9=new WebgpuVolumeSceneRenderer({'memoryTargetBytes':_0x265727,'memoryHardLimitBytes':_0x7ee824[_0x150ee5(0x11d)]?.[_0x150ee5(0x18f)]??_0x265727});await _0x178ea9['initialize'](_0x7ee824[_0x150ee5(0x249)]);let _0x5eb326=new VolumeScene(_0x7ee824,_0x178ea9);return _0x5eb326[_0x150ee5(0x1c2)](),_0x5eb326[_0x150ee5(0x1ef)](),_0x5eb326[_0x150ee5(0x365)]===_0x150ee5(0xee)&&_0x5eb326['requestRender'](),_0x5eb326;}get['camera'](){const _0x3a04bd=_0x2e1660;return this['volumeCamera'][_0x3a04bd(0x322)];}get[_0x2e1660(0x41b)](){const _0x331067=_0x2e1660;return this[_0x331067(0x3e8)][_0x331067(0x41b)];}get[_0x2e1660(0x311)](){const _0x5ba9b6=_0x2e1660;let _0x49916b=this['renderMode']===_0x5ba9b6(0x3c6)||this['isInteracting']()||performance['now']()-this[_0x5ba9b6(0xd1)]<=0xfa?this[_0x5ba9b6(0x170)]:0x0;return{...this['renderer'][_0x5ba9b6(0x311)],'pendingBrickCount':this[_0x5ba9b6(0x110)][_0x5ba9b6(0x234)],'brickScheduleCount':this['brickScheduleCount'],'brickSortCount':this[_0x5ba9b6(0x361)],'actualFrameIntervalMilliseconds':_0x49916b,'estimatedFps':_0x49916b>0x0?0x3e8/_0x49916b:0x0,'effectiveQuality':this['getEffectiveQuality'](),'effectiveRenderScale':this[_0x5ba9b6(0x1db)](),'interactionKind':this[_0x5ba9b6(0x38f)]()};}[_0x2e1660(0x171)](_0x3df78d){const _0x45d425=_0x2e1660;_0x3df78d[_0x45d425(0x1af)]&&this[_0x45d425(0x1a9)](_0x3df78d[_0x45d425(0x1af)]),_0x3df78d[_0x45d425(0x32d)]&&(this[_0x45d425(0x10a)]=[..._0x3df78d[_0x45d425(0x32d)]]),_0x3df78d['verticalScale']!==void 0x0&&(this[_0x45d425(0x195)]=validatePositiveOption(_0x3df78d['verticalScale'],_0x45d425(0x195))),_0x3df78d[_0x45d425(0x27e)]!==void 0x0&&(this['clipBox']=_0x3df78d['clipBox']),_0x3df78d[_0x45d425(0x2aa)]&&(this[_0x45d425(0x2aa)]=_0x3df78d[_0x45d425(0x2aa)]),_0x3df78d['navigationMode']&&(this[_0x45d425(0x3b5)]=_0x3df78d['navigationMode']);let _0x220b0f=!0x1;if(_0x3df78d['pixelRatioCap']!==void 0x0&&(this[_0x45d425(0x12c)]=validatePositiveOption(_0x3df78d[_0x45d425(0x12c)],_0x45d425(0x12c)),_0x220b0f=!0x0),_0x3df78d['renderScale']!==void 0x0&&(this[_0x45d425(0x367)]=validatePositiveOption(_0x3df78d[_0x45d425(0x367)],_0x45d425(0x367)),_0x220b0f=!0x0),_0x3df78d['interactionRenderScale']!==void 0x0&&(this[_0x45d425(0x1c7)]=validatePositiveOption(_0x3df78d[_0x45d425(0x1c7)],_0x45d425(0x1c7)),_0x220b0f=this[_0x45d425(0x399)]()),_0x3df78d[_0x45d425(0x3a8)]!==void 0x0&&(this[_0x45d425(0x3a8)]=validatePositiveOption(_0x3df78d[_0x45d425(0x3a8)],_0x45d425(0x3a8))),_0x3df78d[_0x45d425(0x196)]&&(this[_0x45d425(0x196)]=_0x3df78d[_0x45d425(0x196)]),_0x3df78d[_0x45d425(0x258)]||_0x3df78d[_0x45d425(0x108)]){let _0x43a807=prepareWebgpuVolumeTransfer(_0x3df78d['colorStops']??this[_0x45d425(0x299)],_0x3df78d[_0x45d425(0x108)]??this[_0x45d425(0x108)]);this[_0x45d425(0x258)]=_0x43a807[_0x45d425(0x258)],this['colorInputs']=_0x3df78d['colorStops']??this[_0x45d425(0x299)],this[_0x45d425(0x108)]=_0x3df78d[_0x45d425(0x108)]??this[_0x45d425(0x108)],this['renderer']['setTransfer'](_0x43a807['colorStops'],_0x43a807[_0x45d425(0x108)]),this[_0x45d425(0x356)]();}_0x3df78d[_0x45d425(0x196)]&&!_0x3df78d[_0x45d425(0x258)]&&!_0x3df78d[_0x45d425(0x108)]&&this[_0x45d425(0x356)](),this[_0x45d425(0xc5)][_0x45d425(0x171)]({'renderMode':_0x3df78d[_0x45d425(0x411)],'colorMode':_0x3df78d[_0x45d425(0x196)],'opacity':_0x3df78d[_0x45d425(0x211)],'densityScale':_0x3df78d['densityScale'],'stepLength':this[_0x45d425(0x34a)]()}),this['configureModel'](),_0x220b0f&&this['resize'](),this[_0x45d425(0x3cb)]();}[_0x2e1660(0x1a9)](_0xb8c533){const _0x42aecd=_0x2e1660;this[_0x42aecd(0x40b)][_0x42aecd(0x100)](_0xb8c533),this[_0x42aecd(0x226)](),this['requestRender']();}[_0x2e1660(0x304)](_0x2159e0){const _0x3fdf6e=_0x2e1660;validateVolumeTimeIndex(this[_0x3fdf6e(0xc7)][_0x3fdf6e(0x246)],_0x2159e0),_0x2159e0!==this[_0x3fdf6e(0x200)]&&(this[_0x3fdf6e(0x200)]=_0x2159e0,this[_0x3fdf6e(0x189)]());}[_0x2e1660(0x3cd)](_0x22d7f4){const _0x5cd7c2=_0x2e1660;validateVolumeSource(_0x22d7f4),this[_0x5cd7c2(0xc7)]=_0x22d7f4,this['timeIndex']=Math[_0x5cd7c2(0x3ce)](this[_0x5cd7c2(0x200)],_0x22d7f4[_0x5cd7c2(0x246)][_0x5cd7c2(0x147)]-0x1),this[_0x5cd7c2(0x158)]=createVolumeBrickLayout(_0x22d7f4['metadata'],this['layout'][_0x5cd7c2(0x39b)]),this[_0x5cd7c2(0xeb)]=createVolumeBrickDescriptors(_0x22d7f4[_0x5cd7c2(0x246)],this[_0x5cd7c2(0x158)]),this['sliceState'][_0x5cd7c2(0x238)](_0x22d7f4[_0x5cd7c2(0x246)]),this['configureSource'](),this[_0x5cd7c2(0x31d)](),this[_0x5cd7c2(0x189)](),this[_0x5cd7c2(0x356)](),this[_0x5cd7c2(0x3cb)]();}['setRouteProfiles'](_0x3ba0b2){const _0xa503d=_0x2e1660;this[_0xa503d(0x135)]=_0x3ba0b2,this['rebuildProfiles'](),this['requestBrickSchedule'](),this[_0xa503d(0x3cb)]();}[_0x2e1660(0x308)](_0x1d7556){const _0x260dec=_0x2e1660;this[_0x260dec(0x3e8)][_0x260dec(0x32b)](_0x1d7556);}[_0x2e1660(0x3d2)](_0x3f7d4f){const _0x16116a=_0x2e1660;if(this[_0x16116a(0x2c2)]||this[_0x16116a(0x14f)][_0x16116a(0x192)](_0x3f7d4f))return;let _0x46b521=!this[_0x16116a(0x399)]();this[_0x16116a(0x14f)]['add'](_0x3f7d4f),_0x46b521&&(this[_0x16116a(0x1a7)]=0x0,this[_0x16116a(0x1c2)]());}[_0x2e1660(0x2df)](_0x5a0aca){const _0x26490d=_0x2e1660;this[_0x26490d(0x2c2)]||!this[_0x26490d(0x14f)][_0x26490d(0x214)](_0x5a0aca)||this[_0x26490d(0x399)]()||(this[_0x26490d(0x1a7)]=0x0,this[_0x26490d(0x1c2)]());}[_0x2e1660(0x3fd)](_0x18b0c0,_0x51382e){const _0x48cc0a=_0x2e1660;this['sliceState']['updatePreview'](_0x18b0c0,_0x51382e);let _0x289548=this[_0x48cc0a(0x3e8)][_0x48cc0a(0x1b5)]();if(!_0x289548)throw Error(_0x48cc0a(0x2db));return _0x289548;}[_0x2e1660(0x31e)](_0x553309,_0x39ede2){const _0x1959f3=_0x2e1660;this[_0x1959f3(0x3e8)][_0x1959f3(0xc6)](_0x553309,_0x39ede2);}[_0x2e1660(0x415)](_0x213087){const _0x2e3017=_0x2e1660;this['sliceState'][_0x2e3017(0x415)](_0x213087);}['clearLockedSlices'](){const _0xe27cea=_0x2e1660;this['sliceState'][_0xe27cea(0x1fc)]();}['resize'](){const _0x2e4aff=_0x2e1660;let _0x691dc9=Math['min'](window[_0x2e4aff(0x298)]||0x1,this[_0x2e4aff(0x12c)])*this[_0x2e4aff(0x1db)](),_0x5ac7cf=Math['max'](0x1,Math['round'](this[_0x2e4aff(0x249)]['clientWidth']*_0x691dc9||this[_0x2e4aff(0x249)][_0x2e4aff(0x274)]||0x1)),_0x515ccb=Math[_0x2e4aff(0x3b1)](0x1,Math[_0x2e4aff(0x1b4)](this[_0x2e4aff(0x249)][_0x2e4aff(0x191)]*_0x691dc9||this[_0x2e4aff(0x249)][_0x2e4aff(0x1c0)]||0x1));this[_0x2e4aff(0x40b)]['setAspect'](_0x5ac7cf/_0x515ccb),(this[_0x2e4aff(0x249)][_0x2e4aff(0x274)]!==_0x5ac7cf||this[_0x2e4aff(0x249)]['height']!==_0x515ccb)&&this['renderer'][_0x2e4aff(0x1c2)](_0x5ac7cf,_0x515ccb),this['requestRender']();}['render'](){const _0x21d032=_0x2e1660;if(this['destroyed'])return;this[_0x21d032(0x2cb)](),this['flushBrickSchedule']();let _0x298693=this[_0x21d032(0x40b)][_0x21d032(0x3a4)];if(this[_0x21d032(0xc5)][_0x21d032(0x1a9)]({'viewProjection':Array['from'](_0x298693[_0x21d032(0x1a5)]),'inverseViewProjection':Array['from'](_0x298693[_0x21d032(0x383)]),'cameraPosition':this[_0x21d032(0x40b)][_0x21d032(0x322)][_0x21d032(0x154)]}),this[_0x21d032(0xc5)][_0x21d032(0x171)]({'stepLength':this[_0x21d032(0x34a)]()}),!this[_0x21d032(0xc5)][_0x21d032(0xd8)]()){this[_0x21d032(0x3c9)]=!0x0;return;}this[_0x21d032(0x3c9)]=!0x1,this[_0x21d032(0x197)](performance[_0x21d032(0x36e)]()),this[_0x21d032(0x11e)]?.[_0x21d032(0x171)]();}[_0x2e1660(0x3f4)](){const _0x1d5d89=_0x2e1660;if(this[_0x1d5d89(0x2c2)])return Promise[_0x1d5d89(0x3ed)](Error(_0x1d5d89(0xec)));this['flushSliceState'](),this[_0x1d5d89(0x15b)]();let _0x47235b=this[_0x1d5d89(0x40b)][_0x1d5d89(0x3a4)];return this[_0x1d5d89(0xc5)][_0x1d5d89(0x1a9)]({'viewProjection':Array[_0x1d5d89(0x309)](_0x47235b[_0x1d5d89(0x1a5)]),'inverseViewProjection':Array['from'](_0x47235b[_0x1d5d89(0x383)]),'cameraPosition':this[_0x1d5d89(0x40b)]['state'][_0x1d5d89(0x154)]}),this[_0x1d5d89(0xc5)][_0x1d5d89(0x3f4)]();}[_0x2e1660(0x3e2)](){const _0x577520=_0x2e1660;if(!this[_0x577520(0x2c2)]){this[_0x577520(0x2c2)]=!0x0,this[_0x577520(0x350)]+=0x1;for(let _0x413ba3 of this[_0x577520(0x181)])_0x413ba3[_0x577520(0x18c)]();this['requestControllers']['clear'](),cancelAnimationFrame(this[_0x577520(0x203)]),this['renderer'][_0x577520(0x3f7)](null),this['eventDisposers']['splice'](0x0)[_0x577520(0x324)](_0x35397e=>_0x35397e()),this['renderer'][_0x577520(0x3e2)](),this[_0x577520(0xff)]?.['destroy'](),this[_0x577520(0x11e)]?.['destroy'](),this[_0x577520(0x107)][_0x577520(0xf2)](),this[_0x577520(0x110)][_0x577520(0xf2)](),this[_0x577520(0x3b2)][_0x577520(0xf2)](),this['activeInteractions'][_0x577520(0xf2)](),this[_0x577520(0x2f9)]=null;}}[_0x2e1660(0x19f)](_0x3ec78c){const _0x2985c7=_0x2e1660;return createVolumeBrickLayout(_0x3ec78c[_0x2985c7(0xc7)][_0x2985c7(0x246)],{'width':_0x3ec78c[_0x2985c7(0x11d)]?.[_0x2985c7(0x274)],'height':_0x3ec78c[_0x2985c7(0x11d)]?.[_0x2985c7(0x1c0)],'depth':_0x3ec78c[_0x2985c7(0x11d)]?.[_0x2985c7(0xc8)],'halo':_0x3ec78c['chunk']?.['halo']});}[_0x2e1660(0x187)](){const _0x3ee0e1=_0x2e1660;return this['quality']===_0x3ee0e1(0x3d0)?this[_0x3ee0e1(0x3f0)]:this['quality'];}[_0x2e1660(0x34a)](){const _0x37cfcc=_0x2e1660;let _0x4cf55b=qualityStepLength(this[_0x37cfcc(0x187)]());return(this[_0x37cfcc(0x19c)]===_0x37cfcc(0x245)?_0x4cf55b*0.05:_0x4cf55b)*(this['isInteracting']()?this[_0x37cfcc(0x3a8)]:0x1);}['isInteracting'](){const _0x56787f=_0x2e1660;return this[_0x56787f(0x14f)][_0x56787f(0x234)]>0x0;}[_0x2e1660(0x38f)](){const _0x3912a1=_0x2e1660;return this[_0x3912a1(0x14f)][_0x3912a1(0x234)]===0x0?_0x3912a1(0x2d0):this[_0x3912a1(0x14f)][_0x3912a1(0x234)]>0x1?'mixed':this[_0x3912a1(0x14f)][_0x3912a1(0x21e)]()[_0x3912a1(0x127)]()[_0x3912a1(0x3a0)]??_0x3912a1(0x2d0);}[_0x2e1660(0x1db)](){const _0x829c4d=_0x2e1660;return this['renderScale']*(this['isInteracting']()?this[_0x829c4d(0x1c7)]:0x1);}[_0x2e1660(0x197)](_0xd7e834){const _0x20c66f=_0x2e1660;if(this[_0x20c66f(0xd1)]=_0xd7e834,!(this[_0x20c66f(0x365)]==='external'||this['isInteracting']())){this[_0x20c66f(0x1a7)]=0x0;return;}if(this[_0x20c66f(0x1a7)]>0x0){let _0x4f74cf=_0xd7e834-this[_0x20c66f(0x1a7)];_0x4f74cf>0x0&&_0x4f74cf<=0xfa&&(this[_0x20c66f(0x170)]=this['actualFrameIntervalMilliseconds']===0x0?_0x4f74cf:this[_0x20c66f(0x170)]*0.8+_0x4f74cf*0.2,this['updateAutoQuality'](_0x4f74cf));}this[_0x20c66f(0x1a7)]=_0xd7e834;}['updateAutoQuality'](_0x1a0991){const _0x947bc9=_0x2e1660;if(this['quality']!=='auto'||(this['autoFrameCount']+=0x1,this['autoFrameIntervalTotal']+=_0x1a0991,this[_0x947bc9(0x3ef)]<0x1e))return;let _0x29e39f=this[_0x947bc9(0x221)]/this['autoFrameCount'];if(this[_0x947bc9(0x3ef)]=0x0,this[_0x947bc9(0x221)]=0x0,this[_0x947bc9(0x399)]()&&_0x29e39f<0xe)return;let _0x44d938=nextAutoQuality(this['autoQuality'],_0x29e39f);_0x44d938!==this[_0x947bc9(0x3f0)]&&(this['autoQuality']=_0x44d938,this['requestBrickSchedule'](),this[_0x947bc9(0x3cb)]());}[_0x2e1660(0x28c)](_0x3744ac){const _0x18dc2d=_0x2e1660;return new SliceState(_0x3744ac[_0x18dc2d(0xc7)][_0x18dc2d(0x246)],{'volumeDimFactor':_0x3744ac[_0x18dc2d(0xff)]?.[_0x18dc2d(0x28d)],'depthMode':_0x3744ac[_0x18dc2d(0xff)]?.[_0x18dc2d(0x155)],'maxLockedSlices':_0x3744ac[_0x18dc2d(0xff)]?.['maxLockedSlices'],'onLimitReached':_0x179ab1=>_0x3744ac[_0x18dc2d(0xff)]?.[_0x18dc2d(0x2ea)]?.(Error(_0x18dc2d(0x16f)+_0x179ab1+_0x18dc2d(0x1c3)+_0x179ab1+'。'))});}[_0x2e1660(0x2fa)](){const _0x1b1817=_0x2e1660;let _0x4a858a=this[_0x1b1817(0x3e8)][_0x1b1817(0x38d)](_0x2aec54=>{const _0x327e57=_0x1b1817;this[_0x327e57(0x2f9)]=_0x2aec54,this[_0x327e57(0x3cb)]();});this[_0x1b1817(0x401)][_0x1b1817(0x3aa)](_0x4a858a);}[_0x2e1660(0x2cb)](){const _0x5288f1=_0x2e1660;let _0x158297=this[_0x5288f1(0x2f9)];if(!_0x158297)return;this[_0x5288f1(0x2f9)]=null;let _0x22effa=[];if(_0x158297[_0x5288f1(0x3b4)]){let _0x28fe9f=_0x158297[_0x5288f1(0x3b4)][_0x5288f1(0x3f9)]==='x'?this['source'][_0x5288f1(0x246)]['xAxis']:_0x158297['preview'][_0x5288f1(0x3f9)]==='y'?this[_0x5288f1(0xc7)]['metadata'][_0x5288f1(0x185)]:this[_0x5288f1(0xc7)][_0x5288f1(0x246)][_0x5288f1(0x271)];_0x22effa[_0x5288f1(0x3aa)]({'id':'volume-slice-preview','axis':_0x158297[_0x5288f1(0x3b4)][_0x5288f1(0x3f9)],'position':clamp01(volumeAxisValueToNormalized(_0x28fe9f,_0x158297[_0x5288f1(0x3b4)][_0x5288f1(0x154)])),'depthMode':this[_0x5288f1(0x1b2)],'visible':!0x0,'opacity':0.72,'plateColor':this[_0x5288f1(0x33e)]});}for(let _0x243986 of _0x158297['lockedSlices']){let _0x345d50=_0x243986[_0x5288f1(0x3f9)]==='x'?this[_0x5288f1(0xc7)][_0x5288f1(0x246)][_0x5288f1(0x3a3)]:_0x243986['axis']==='y'?this[_0x5288f1(0xc7)][_0x5288f1(0x246)]['yAxis']:this[_0x5288f1(0xc7)][_0x5288f1(0x246)]['zAxis'];_0x22effa[_0x5288f1(0x3aa)]({..._0x243986,'position':clamp01(volumeAxisValueToNormalized(_0x345d50,_0x243986['position'])),'opacity':0x1,'plateColor':this['slicePlateColor']});}this[_0x5288f1(0xc5)][_0x5288f1(0x15c)](_0x22effa),this[_0x5288f1(0xc5)][_0x5288f1(0x171)]({'volumeDimFactor':_0x158297[_0x5288f1(0x3b4)]||_0x158297[_0x5288f1(0x41b)][_0x5288f1(0x38b)](_0x1a8c47=>_0x1a8c47[_0x5288f1(0x1fe)])?_0x158297[_0x5288f1(0x28d)]:0x1}),this[_0x5288f1(0x3cc)]?.(_0x158297[_0x5288f1(0x41b)]),this[_0x5288f1(0x1ad)]=!0x0;}[_0x2e1660(0x335)](_0x192849){const _0x1deb3f=_0x2e1660;let _0x410c3a=()=>({'viewProjectionMatrix':this[_0x1deb3f(0x40b)]['matrices'][_0x1deb3f(0x1a5)],'modelMatrix':composeVolumeModelMatrix(this[_0x1deb3f(0x10a)],this['verticalScale']),'viewportWidth':Math[_0x1deb3f(0x3b1)](0x1,this[_0x1deb3f(0x249)][_0x1deb3f(0x35c)]),'viewportHeight':Math['max'](0x1,this[_0x1deb3f(0x249)][_0x1deb3f(0x191)])});this[_0x1deb3f(0xff)]=new SliceInteractionController(this[_0x1deb3f(0x277)],this[_0x1deb3f(0x3e8)],_0x410c3a,{'hitTolerancePixels':_0x192849[_0x1deb3f(0xff)]?.['hitRadius'],'onInteractionStart':()=>this[_0x1deb3f(0x3d2)](_0x1deb3f(0x414)),'onInteractionEnd':()=>this['endInteraction'](_0x1deb3f(0x414))}),this['sliceInteraction'][_0x1deb3f(0x2a9)](),_0x192849[_0x1deb3f(0x33b)]&&(this['markerOverlay']=new SliceMarkerOverlay(_0x192849[_0x1deb3f(0x33b)],this[_0x1deb3f(0x3e8)],_0x410c3a,{'interactionController':this[_0x1deb3f(0xff)]}));}[_0x2e1660(0x252)](){const _0x3841fa=_0x2e1660;let _0xa43f9c=_0x51408e=>{const _0xe175e8=_0x2b0a;_0x51408e[_0xe175e8(0x199)]!==0x0&&_0x51408e[_0xe175e8(0x199)]!==0x2||(this[_0xe175e8(0x27f)]={'id':_0x51408e[_0xe175e8(0x20d)],'x':_0x51408e['clientX'],'y':_0x51408e[_0xe175e8(0x2fd)],'pan':_0x51408e['button']===0x2||_0x51408e[_0xe175e8(0x173)]!=='mouse'&&this[_0xe175e8(0x3b5)]==='pan'},this[_0xe175e8(0x3d2)](_0xe175e8(0x1af)),this[_0xe175e8(0x277)][_0xe175e8(0x371)]?.(_0x51408e[_0xe175e8(0x20d)]),_0x51408e[_0xe175e8(0x153)]());},_0x173de0=_0x3fce50=>{const _0x1d20af=_0x2b0a;if(!this[_0x1d20af(0x27f)]||this[_0x1d20af(0x27f)]['id']!==_0x3fce50[_0x1d20af(0x20d)])return;let _0x3174bf=_0x3fce50['clientX']-this[_0x1d20af(0x27f)]['x'],_0x41b2c6=_0x3fce50['clientY']-this[_0x1d20af(0x27f)]['y'];this['pointer']['x']=_0x3fce50[_0x1d20af(0x40a)],this['pointer']['y']=_0x3fce50[_0x1d20af(0x2fd)],this[_0x1d20af(0x27f)][_0x1d20af(0x37e)]?this[_0x1d20af(0x40b)][_0x1d20af(0x37e)](_0x3174bf,_0x41b2c6,this[_0x1d20af(0x249)]['clientHeight']):this[_0x1d20af(0x40b)]['orbit'](_0x3174bf,_0x41b2c6),this[_0x1d20af(0x226)](),this[_0x1d20af(0x3cb)]();},_0x1d2b03=_0x151574=>{const _0x1c632e=_0x2b0a;this[_0x1c632e(0x27f)]?.['id']===_0x151574[_0x1c632e(0x20d)]&&(this[_0x1c632e(0x27f)]=null,this[_0x1c632e(0x2df)](_0x1c632e(0x1af)));},_0x17a3dc=_0x420ab7=>{const _0x40707f=_0x2b0a;_0x420ab7[_0x40707f(0x153)](),this[_0x40707f(0x40b)][_0x40707f(0x2e4)](_0x420ab7[_0x40707f(0x2ed)]),this[_0x40707f(0x226)](),this[_0x40707f(0x3cb)]();},_0xfd1ffd=_0x150c34=>_0x150c34[_0x3841fa(0x153)]();this['interactionElement'][_0x3841fa(0x21a)](_0x3841fa(0x297),_0xa43f9c),this[_0x3841fa(0x277)][_0x3841fa(0x21a)](_0x3841fa(0x28f),_0x173de0),this['interactionElement']['addEventListener'](_0x3841fa(0x409),_0x1d2b03),this[_0x3841fa(0x277)][_0x3841fa(0x21a)](_0x3841fa(0x14e),_0x1d2b03),this[_0x3841fa(0x277)][_0x3841fa(0x21a)](_0x3841fa(0x320),_0x17a3dc,{'passive':!0x1}),this[_0x3841fa(0x277)][_0x3841fa(0x21a)]('contextmenu',_0xfd1ffd),this[_0x3841fa(0x401)]['push'](()=>this[_0x3841fa(0x277)][_0x3841fa(0xcc)](_0x3841fa(0x297),_0xa43f9c),()=>this[_0x3841fa(0x277)][_0x3841fa(0xcc)]('pointermove',_0x173de0),()=>this[_0x3841fa(0x277)]['removeEventListener'](_0x3841fa(0x409),_0x1d2b03),()=>this['interactionElement']['removeEventListener'](_0x3841fa(0x14e),_0x1d2b03),()=>this[_0x3841fa(0x277)][_0x3841fa(0xcc)]('wheel',_0x17a3dc),()=>this[_0x3841fa(0x277)]['removeEventListener'](_0x3841fa(0x2b9),_0xfd1ffd));}[_0x2e1660(0x1a6)](){const _0x4a5ed6=_0x2e1660;this['renderer'][_0x4a5ed6(0x3cd)]({'xAxis':this[_0x4a5ed6(0xc7)]['metadata'][_0x4a5ed6(0x3a3)],'yAxis':this[_0x4a5ed6(0xc7)][_0x4a5ed6(0x246)][_0x4a5ed6(0x185)],'zAxis':this['source'][_0x4a5ed6(0x246)]['zAxis'],'brickWidth':this[_0x4a5ed6(0x158)][_0x4a5ed6(0x39b)][_0x4a5ed6(0x274)],'brickHeight':this['layout'][_0x4a5ed6(0x39b)][_0x4a5ed6(0x1c0)],'brickDepth':this[_0x4a5ed6(0x158)][_0x4a5ed6(0x39b)][_0x4a5ed6(0xc8)],'halo':0x1,'noData':this[_0x4a5ed6(0xc7)][_0x4a5ed6(0x246)][_0x4a5ed6(0x27a)]});}[_0x2e1660(0x31d)](){const _0x38245e=_0x2e1660;if(this[_0x38245e(0x19c)]==='geographic-wgs84'){let _0x487009=createGeographicVolumeLayout(this[_0x38245e(0xc7)][_0x38245e(0x246)],this[_0x38245e(0x195)]);this[_0x38245e(0xc5)]['update']({'modelMatrix':_0x487009[_0x38245e(0x260)],'inverseModelMatrix':Array[_0x38245e(0x309)](invertMatrix(_0x487009['proxyModelMatrix'])),'geographicTransform':_0x487009[_0x38245e(0x40e)],'clipMinimum':[0x0,0x0,0x0],'clipMaximum':[0x1,0x1,0x1]}),this[_0x38245e(0x3cb)]();return;}let _0x4f5ed6=composeVolumeModelMatrix(this[_0x38245e(0x10a)],this[_0x38245e(0x195)]),_0x7a4165=normalizeClipBox(this[_0x38245e(0xc7)],this['clipBox']);this[_0x38245e(0xc5)]['update']({'modelMatrix':Array[_0x38245e(0x309)](_0x4f5ed6),'inverseModelMatrix':Array[_0x38245e(0x309)](invertMatrix(_0x4f5ed6)),'geographicTransform':null,'clipMinimum':_0x7a4165['minimum'],'clipMaximum':_0x7a4165['maximum']}),this[_0x38245e(0x3cb)]();}[_0x2e1660(0x356)](){const _0x5144b1=_0x2e1660;let _0x1452a4=this[_0x5144b1(0x135)][_0x5144b1(0x10e)](_0x8d0af7=>createProfileSceneMesh(buildVolumeRouteProfileMesh(_0x8d0af7,this[_0x5144b1(0xc7)][_0x5144b1(0x246)]),this[_0x5144b1(0x258)],this[_0x5144b1(0x108)],this['colorMode']));this[_0x5144b1(0xc5)][_0x5144b1(0x23d)](_0x1452a4),this[_0x5144b1(0x3cb)]();}[_0x2e1660(0x189)](){const _0x238f83=_0x2e1660;this[_0x238f83(0x350)]+=0x1;for(let _0x4b2f5c of this[_0x238f83(0x181)])_0x4b2f5c['abort']();this[_0x238f83(0x181)][_0x238f83(0xf2)](),this[_0x238f83(0x107)]['clear'](),this[_0x238f83(0x110)][_0x238f83(0xf2)](),this[_0x238f83(0x3b2)][_0x238f83(0xf2)](),this[_0x238f83(0x1a6)](),this['scheduleBricks']();}[_0x2e1660(0x226)](){const _0x4dda7f=_0x2e1660;this[_0x4dda7f(0x1ad)]=!0x0,this[_0x4dda7f(0x3cb)]();}[_0x2e1660(0x15b)](){const _0x5e3b53=_0x2e1660;this['brickScheduleDirty']&&(this[_0x5e3b53(0x1ad)]=!0x1,this[_0x5e3b53(0x1ef)]());}[_0x2e1660(0x1ef)](){const _0x2eb539=_0x2e1660;if(this[_0x2eb539(0x2c2)])return;this[_0x2eb539(0x1ad)]=!0x1,this['brickScheduleCount']+=0x1;let _0x467eb7=this[_0x2eb539(0xc5)][_0x2eb539(0x311)]['atlasCapacity'];if(_0x467eb7<=0x0)return;let _0x7a279d=_0x467eb7>=this[_0x2eb539(0xeb)][_0x2eb539(0x37f)];if(_0x7a279d&&this[_0x2eb539(0x3b2)][_0x2eb539(0x234)]===this['descriptors']['length']&&this[_0x2eb539(0x107)][_0x2eb539(0x234)]===this[_0x2eb539(0xeb)][_0x2eb539(0x37f)]&&this['pendingKeys'][_0x2eb539(0x234)]===0x0)return;let _0x294e4e;_0x7a279d?_0x294e4e=this['descriptors']:(this[_0x2eb539(0x361)]+=0x1,_0x294e4e=[...this[_0x2eb539(0xeb)]][_0x2eb539(0xd2)]((_0x235832,_0x47d1cb)=>descriptorDemandPriority(_0x235832,this['source'],this[_0x2eb539(0x3e8)],this['profiles'])-descriptorDemandPriority(_0x47d1cb,this['source'],this[_0x2eb539(0x3e8)],this[_0x2eb539(0x135)])||descriptorDistance(_0x235832,this['layout'],this['volumeCamera'][_0x2eb539(0x322)])-descriptorDistance(_0x47d1cb,this['layout'],this[_0x2eb539(0x40b)]['state']))[_0x2eb539(0x414)](0x0,_0x467eb7));let _0x2ab0dd=new Set(_0x294e4e[_0x2eb539(0x10e)](_0xb52d4d=>_0xb52d4d[_0x2eb539(0x136)]));this[_0x2eb539(0x3b2)]=_0x2ab0dd,_0x7a279d||this['renderer']['touchBricks'](_0x294e4e[_0x2eb539(0x3d9)](_0x2b57f0=>this[_0x2eb539(0x107)][_0x2eb539(0x192)](_0x2b57f0['key']))['map'](_0x52d8e2=>descriptorLogicalIndex(_0x52d8e2,this['layout'])));for(let _0x3862fd of this[_0x2eb539(0x107)])_0x2ab0dd['has'](_0x3862fd)||this[_0x2eb539(0x107)]['delete'](_0x3862fd);let _0x4d5d62=Math[_0x2eb539(0x3b1)](0x0,qualityUploadCount(this[_0x2eb539(0x187)]())-this[_0x2eb539(0x110)][_0x2eb539(0x234)]),_0x273a85=_0x294e4e['filter'](_0x4f707e=>!this[_0x2eb539(0x107)][_0x2eb539(0x192)](_0x4f707e['key'])&&!this['pendingKeys']['has'](_0x4f707e[_0x2eb539(0x136)]))[_0x2eb539(0x414)](0x0,_0x4d5d62);for(let _0x12ee4a of _0x273a85)this[_0x2eb539(0x30a)](_0x12ee4a);}['loadBrick'](_0x317ffe){const _0x30459b=_0x2e1660;let _0x128a4c=this[_0x30459b(0x350)],_0x64fba5=this[_0x30459b(0xc7)],_0x3eba9d=this['timeIndex'],_0x2f56dc=new AbortController();this[_0x30459b(0x181)][_0x30459b(0x23e)](_0x2f56dc),this[_0x30459b(0x110)][_0x30459b(0x105)](_0x317ffe['key'],_0x128a4c),Promise[_0x30459b(0x41a)](_0x64fba5['readChunk'](_0x3eba9d,_0x317ffe[_0x30459b(0x408)],_0x2f56dc[_0x30459b(0xfe)]))[_0x30459b(0x2cd)](async _0x181060=>{const _0x517ea3=_0x30459b;if(this['destroyed']||_0x128a4c!==this[_0x517ea3(0x350)]||_0x64fba5!==this[_0x517ea3(0xc7)]||_0x3eba9d!==this[_0x517ea3(0x200)]||!this['desiredKeys'][_0x517ea3(0x192)](_0x317ffe['key']))return;let _0x26618a=createPhysicalBrickValues(_0x64fba5['metadata'],this[_0x517ea3(0x158)][_0x517ea3(0x39b)],_0x317ffe,_0x181060),_0x4df2ac=descriptorLogicalIndex(_0x317ffe,this[_0x517ea3(0x158)]);await this['renderer']['uploadBrick']({'logicalIndex':_0x4df2ac,'values':_0x26618a}),!(this[_0x517ea3(0x2c2)]||_0x128a4c!==this[_0x517ea3(0x350)]||_0x64fba5!==this[_0x517ea3(0xc7)]||_0x3eba9d!==this[_0x517ea3(0x200)]||!this['desiredKeys'][_0x517ea3(0x192)](_0x317ffe['key']))&&(this['loadedKeys'][_0x517ea3(0x23e)](_0x317ffe[_0x517ea3(0x136)]),this[_0x517ea3(0x3cb)]());})[_0x30459b(0x293)](_0x1fa426=>{const _0xd25c97=_0x30459b;_0x1fa426 instanceof DOMException&&_0x1fa426[_0xd25c97(0x306)]==='AbortError'||console[_0xd25c97(0x2bf)](_0x1fa426);})[_0x30459b(0x223)](()=>{const _0x2daeb9=_0x30459b;this[_0x2daeb9(0x181)][_0x2daeb9(0x214)](_0x2f56dc),this['pendingKeys'][_0x2daeb9(0x37a)](_0x317ffe[_0x2daeb9(0x136)])===_0x128a4c&&this['pendingKeys']['delete'](_0x317ffe[_0x2daeb9(0x136)]),_0x128a4c===this[_0x2daeb9(0x350)]&&this[_0x2daeb9(0x1ef)]();});}[_0x2e1660(0x19d)](){const _0x285914=_0x2e1660;this[_0x285914(0x3c9)]&&this[_0x285914(0x3cb)]();}[_0x2e1660(0x3cb)](){const _0x1dbd7b=_0x2e1660;this[_0x1dbd7b(0x2c2)]||(this['renderDirty']=!0x0,!(this[_0x1dbd7b(0x365)]!=='managed'||this[_0x1dbd7b(0x203)]!==0x0)&&(this[_0x1dbd7b(0x203)]=requestAnimationFrame(()=>{const _0x4ec4a7=_0x1dbd7b;this[_0x4ec4a7(0x203)]=0x0,!(this[_0x4ec4a7(0x2c2)]||!this[_0x4ec4a7(0x3c9)])&&this[_0x4ec4a7(0xd8)]();})));}};const createVolumeScene=_0x3a2e90=>VolumeScene[_0x2e1660(0x373)](_0x3a2e90),insertOnce=(_0x561af4,_0x5a19fb,_0x37d3dd)=>{const _0x2adc4c=_0x2e1660;let _0x135f44=_0x561af4[_0x2adc4c(0x31b)](_0x5a19fb);if(_0x135f44<0x0||_0x561af4[_0x2adc4c(0x31b)](_0x5a19fb,_0x135f44+_0x5a19fb[_0x2adc4c(0x37f)])>=0x0)throw Error(_0x2adc4c(0x313)+_0x5a19fb);return''+_0x561af4[_0x2adc4c(0x414)](0x0,_0x135f44)+_0x37d3dd+_0x561af4['slice'](_0x135f44+_0x5a19fb[_0x2adc4c(0x37f)]);},mars3dVolumeRaymarchSource=insertOnce(insertOnce(volumeRaymarch_default,'fn\x20getPageIndex',_0x2e1660(0x372)),_0x2e1660(0x122),_0x2e1660(0x39d)),premultipliedBlend=()=>({'color':{'srcFactor':_0x2e1660(0x23a),'dstFactor':_0x2e1660(0x2e0),'operation':_0x2e1660(0x23e)},'alpha':{'srcFactor':_0x2e1660(0x23a),'dstFactor':_0x2e1660(0x2e0),'operation':_0x2e1660(0x23e)}}),rendererPrototype=WebgpuVolumeSceneRenderer[_0x2e1660(0x325)],mars3dCanvases=new WeakSet();let pipelineHookInstalled=!0x1;const installPipelineHook=()=>{const _0x5c7be6=_0x2e1660;if(pipelineHookInstalled)return;let _0x19004b=rendererPrototype['createPipelines'];rendererPrototype[_0x5c7be6(0x23c)]=function(){const _0xd4917f=_0x5c7be6;if(_0x19004b[_0xd4917f(0x212)](this),!this['canvas']||!mars3dCanvases[_0xd4917f(0x192)](this[_0xd4917f(0x249)]))return;let _0x507f02=this[_0xd4917f(0x1f6)](),_0x242adb=_0x507f02[_0xd4917f(0x3e5)]({'label':_0xd4917f(0xf8),'code':mars3dVolumeRaymarchSource});this[_0xd4917f(0x121)]=_0x507f02['createRenderPipeline']({'label':_0xd4917f(0x22c),'layout':_0x507f02[_0xd4917f(0x286)]({'bindGroupLayouts':[this[_0xd4917f(0x240)](),this['getVolumeBindGroupLayout'](),this['getTransferBindGroupLayout']()]}),'vertex':{'module':_0x242adb,'entryPoint':_0xd4917f(0x386)},'fragment':{'module':_0x242adb,'entryPoint':_0xd4917f(0x165),'targets':[{'format':this['getFormat'](),'blend':premultipliedBlend()}]},'primitive':{'topology':_0xd4917f(0x3b0)}});},pipelineHookInstalled=!0x0;},createMars3dVolumeScene=async _0x4a4f42=>{const _0x5e8c2e=_0x2e1660;installPipelineHook(),mars3dCanvases[_0x5e8c2e(0x23e)](_0x4a4f42[_0x5e8c2e(0x249)]);try{let _0x16df76=await createVolumeScene(_0x4a4f42),_0x347ad8=_0x16df76[_0x5e8c2e(0x3e2)][_0x5e8c2e(0x36d)](_0x16df76);return _0x16df76[_0x5e8c2e(0x3e2)]=()=>{const _0x4b4719=_0x5e8c2e;mars3dCanvases[_0x4b4719(0x214)](_0x4a4f42['canvas']),_0x347ad8();},_0x16df76;}catch(_0x211f8e){throw mars3dCanvases['delete'](_0x4a4f42[_0x5e8c2e(0x249)]),_0x211f8e;}},crossVector=(_0x23cc3a,_0x55518a)=>[_0x23cc3a[0x1]*_0x55518a[0x2]-_0x23cc3a[0x2]*_0x55518a[0x1],_0x23cc3a[0x2]*_0x55518a[0x0]-_0x23cc3a[0x0]*_0x55518a[0x2],_0x23cc3a[0x0]*_0x55518a[0x1]-_0x23cc3a[0x1]*_0x55518a[0x0]],normalizeVector=_0xd53d89=>{const _0x3ecb01=_0x2e1660;let _0x51ca11=Math[_0x3ecb01(0x305)](_0xd53d89[0x0],_0xd53d89[0x1],_0xd53d89[0x2]);return _0x51ca11>1e-10?[_0xd53d89[0x0]/_0x51ca11,_0xd53d89[0x1]/_0x51ca11,_0xd53d89[0x2]/_0x51ca11]:null;},dotVector=(_0x37f377,_0x384ce8)=>_0x37f377[0x0]*_0x384ce8[0x0]+_0x37f377[0x1]*_0x384ce8[0x1]+_0x37f377[0x2]*_0x384ce8[0x2],addScaledVector=(_0x29202e,_0x5f0078,_0x226514)=>[_0x29202e[0x0]+_0x5f0078[0x0]*_0x226514,_0x29202e[0x1]+_0x5f0078[0x1]*_0x226514,_0x29202e[0x2]+_0x5f0078[0x2]*_0x226514],createMars3dCompensationFrame=(_0x6cff84,_0x2bc1e0,_0x38bf33)=>{const _0x52c78a=_0x2e1660;let _0x3d4ae9=normalizeVector(_0x6cff84[_0x52c78a(0x2ba)]),_0x1454aa=_0x3d4ae9?normalizeVector(crossVector(_0x3d4ae9,_0x6cff84['up'])):null,_0x16463f=_0x3d4ae9&&_0x1454aa?normalizeVector(crossVector(_0x1454aa,_0x3d4ae9)):null,_0x189356=Math[_0x52c78a(0x3fe)](_0x6cff84[_0x52c78a(0x3df)]/0x2),_0x3169b1=_0x2bc1e0/_0x38bf33;if(!_0x3d4ae9||!_0x1454aa||!_0x16463f||!(_0x189356>0x0)||!(_0x3169b1>0x0)||!(_0x6cff84[_0x52c78a(0x1d6)]>0x0))return null;let _0x533fe7=addScaledVector(_0x6cff84[_0x52c78a(0x154)],_0x3d4ae9,_0x6cff84[_0x52c78a(0x1d6)]),_0xc5c9d=[_0x533fe7,addScaledVector(_0x533fe7,_0x1454aa,_0x6cff84[_0x52c78a(0x1d6)]*_0x189356*_0x3169b1*0.5),addScaledVector(_0x533fe7,_0x16463f,_0x6cff84[_0x52c78a(0x1d6)]*_0x189356*0.5)],_0xad1270=projectMars3dCompensationAnchors(_0x6cff84,_0xc5c9d,_0x2bc1e0,_0x38bf33);return _0xad1270?{'worldAnchors':_0xc5c9d,'screenAnchors':_0xad1270}:null;},projectMars3dCompensationAnchors=(_0x408de3,_0x4d38f2,_0x2cf7c0,_0x48d620)=>{const _0x1037ae=_0x2e1660;let _0x586084=normalizeVector(_0x408de3[_0x1037ae(0x2ba)]),_0x5b9e4c=_0x586084?normalizeVector(crossVector(_0x586084,_0x408de3['up'])):null,_0x1f24bb=_0x586084&&_0x5b9e4c?normalizeVector(crossVector(_0x5b9e4c,_0x586084)):null,_0x24bee0=Math[_0x1037ae(0x3fe)](_0x408de3[_0x1037ae(0x3df)]/0x2),_0x3c0460=_0x2cf7c0/_0x48d620;if(!_0x586084||!_0x5b9e4c||!_0x1f24bb||!(_0x24bee0>0x0)||!(_0x3c0460>0x0))return null;let _0xb76f27=[];for(let _0x5ee62d of _0x4d38f2){let _0x1fa981=[_0x5ee62d[0x0]-_0x408de3[_0x1037ae(0x154)][0x0],_0x5ee62d[0x1]-_0x408de3[_0x1037ae(0x154)][0x1],_0x5ee62d[0x2]-_0x408de3[_0x1037ae(0x154)][0x2]],_0x556e2d=dotVector(_0x1fa981,_0x586084);if(!(_0x556e2d>0.000001))return null;let _0x427e17=dotVector(_0x1fa981,_0x5b9e4c)/(_0x556e2d*_0x24bee0*_0x3c0460),_0x9045e2=dotVector(_0x1fa981,_0x1f24bb)/(_0x556e2d*_0x24bee0);_0xb76f27['push']({'x':(_0x427e17*0.5+0.5)*_0x2cf7c0,'y':(0.5-_0x9045e2*0.5)*_0x48d620});}return _0xb76f27;},createMars3dCanvasCompensationTransform=(_0x1362dd,_0xe4c48b)=>{const _0x7891ba=_0x2e1660;if(_0x1362dd['length']!==0x3||_0xe4c48b[_0x7891ba(0x37f)]!==0x3)return null;let _0x22c068={'x':_0x1362dd[0x1]['x']-_0x1362dd[0x0]['x'],'y':_0x1362dd[0x1]['y']-_0x1362dd[0x0]['y']},_0x1127b0={'x':_0x1362dd[0x2]['x']-_0x1362dd[0x0]['x'],'y':_0x1362dd[0x2]['y']-_0x1362dd[0x0]['y']},_0x36b23f={'x':_0xe4c48b[0x1]['x']-_0xe4c48b[0x0]['x'],'y':_0xe4c48b[0x1]['y']-_0xe4c48b[0x0]['y']},_0x4aa9c6={'x':_0xe4c48b[0x2]['x']-_0xe4c48b[0x0]['x'],'y':_0xe4c48b[0x2]['y']-_0xe4c48b[0x0]['y']},_0x4ca826=_0x22c068['x']*_0x1127b0['y']-_0x1127b0['x']*_0x22c068['y'];if(Math[_0x7891ba(0x193)](_0x4ca826)<0.000001)return null;let _0x559a74=(_0x36b23f['x']*_0x1127b0['y']-_0x4aa9c6['x']*_0x22c068['y'])/_0x4ca826,_0x2e9b8a=(-_0x36b23f['x']*_0x1127b0['x']+_0x4aa9c6['x']*_0x22c068['x'])/_0x4ca826,_0x209017=(_0x36b23f['y']*_0x1127b0['y']-_0x4aa9c6['y']*_0x22c068['y'])/_0x4ca826,_0x3ff5ce=(-_0x36b23f['y']*_0x1127b0['x']+_0x4aa9c6['y']*_0x22c068['x'])/_0x4ca826,_0x294480=[_0x559a74,_0x209017,_0x2e9b8a,_0x3ff5ce,_0xe4c48b[0x0]['x']-_0x559a74*_0x1362dd[0x0]['x']-_0x2e9b8a*_0x1362dd[0x0]['y'],_0xe4c48b[0x0]['y']-_0x209017*_0x1362dd[0x0]['x']-_0x3ff5ce*_0x1362dd[0x0]['y']];return _0x294480[_0x7891ba(0x24c)](Number['isFinite'])?_0x7891ba(0x2ac)+_0x294480['join'](',')+')':null;},getError=_0x708936=>_0x708936 instanceof Error?_0x708936:Error(String(_0x708936));var Mars3dVolumeRenderer=class{[_0x2e1660(0x1c8)];[_0x2e1660(0x10e)];[_0x2e1660(0x249)];[_0x2e1660(0x1b1)];[_0x2e1660(0x2b4)];[_0x2e1660(0x17e)]=null;['source'];[_0x2e1660(0x158)];[_0x2e1660(0x203)]=0x0;[_0x2e1660(0x10d)]=0x0;[_0x2e1660(0x101)]=0x0;[_0x2e1660(0x3fc)];['destroyed']=!0x1;[_0x2e1660(0xd5)]=!0x1;[_0x2e1660(0x317)]='';['pendingCompensationFrame']=null;[_0x2e1660(0x354)]=null;constructor(_0x4f9eec,_0x139efe){const _0x48f302=_0x2e1660;this[_0x48f302(0x10e)]=_0x4f9eec,this['source']=_0x139efe['source'],this['layout']=createGeographicVolumeLayout(_0x139efe['source'][_0x48f302(0x246)]),this[_0x48f302(0x1b1)]=_0x139efe[_0x48f302(0x1b1)],this[_0x48f302(0x2b4)]=_0x139efe['cameraFrameCompensation']??!0x0,this[_0x48f302(0x3fc)]=_0x139efe[_0x48f302(0x1c1)]??!0x0,this[_0x48f302(0x249)]=this[_0x48f302(0x337)](_0x4f9eec[_0x48f302(0x17e)]['canvas']),this[_0x48f302(0x1c8)]=this['initialize'](_0x139efe);}get[_0x2e1660(0x311)](){const _0x32ea6f=_0x2e1660;return this[_0x32ea6f(0x17e)]?.[_0x32ea6f(0x311)]??null;}get[_0x2e1660(0x41b)](){const _0x2e511e=_0x2e1660;return this[_0x2e511e(0x17e)]?.[_0x2e511e(0x41b)]??[];}['setShow'](_0x211af6){const _0x415661=_0x2e1660;this[_0x415661(0x39c)](),this[_0x415661(0x3fc)]=_0x211af6,this[_0x415661(0x249)][_0x415661(0x20c)][_0x415661(0x29f)]=_0x211af6?'block':_0x415661(0x116),_0x211af6&&this['requestFrames'](0x3);}['update'](_0x1227f2){const _0xbeaf44=_0x2e1660;this[_0xbeaf44(0xca)]()['update'](_0x1227f2),this[_0xbeaf44(0xcf)](0x3);}[_0x2e1660(0x304)](_0x45631f){const _0x516141=_0x2e1660;this[_0x516141(0xca)]()[_0x516141(0x304)](_0x45631f),this[_0x516141(0xcf)](0x3);}[_0x2e1660(0x321)](_0x24b1db){const _0x34a83b=_0x2e1660;this['requireScene']()[_0x34a83b(0x321)](_0x24b1db),this[_0x34a83b(0xcf)](0x3);}[_0x2e1660(0x31e)](_0x2fc9ec,_0x500a09){const _0x1e6d82=_0x2e1660;this[_0x1e6d82(0xca)]()[_0x1e6d82(0x31e)](_0x2fc9ec,_0x500a09),this[_0x1e6d82(0xcf)](0x3);}[_0x2e1660(0x415)](_0x1ee21a){const _0x3d81f6=_0x2e1660;this[_0x3d81f6(0xca)]()['removeSlice'](_0x1ee21a),this[_0x3d81f6(0xcf)](0x3);}[_0x2e1660(0x1fc)](){const _0x1a177d=_0x2e1660;this['requireScene']()[_0x1a177d(0x1fc)](),this[_0x1a177d(0xcf)](0x3);}[_0x2e1660(0x3fd)](_0x2a8ed0,_0x20dfc6){const _0x1a8a69=_0x2e1660;let _0x1a2300=this[_0x1a8a69(0xca)]()[_0x1a8a69(0x3fd)](_0x2a8ed0,_0x20dfc6);return this[_0x1a8a69(0xcf)](0x3),_0x1a2300;}['setSource'](_0x112c65){const _0x38036f=_0x2e1660;this[_0x38036f(0x39c)](),this['source']=_0x112c65,this[_0x38036f(0x158)]=createGeographicVolumeLayout(_0x112c65[_0x38036f(0x246)]),this[_0x38036f(0xe5)](),this[_0x38036f(0xca)]()['setSource'](_0x112c65),this['syncCamera'](),this[_0x38036f(0xcf)](0x3);}[_0x2e1660(0x3e2)](){const _0x42eb01=_0x2e1660;this[_0x42eb01(0x2c2)]||(this[_0x42eb01(0x2c2)]=!0x0,cancelAnimationFrame(this[_0x42eb01(0x203)]),window['clearTimeout'](this[_0x42eb01(0x10d)]),this[_0x42eb01(0x203)]=0x0,this[_0x42eb01(0x10d)]=0x0,this[_0x42eb01(0x10e)][_0x42eb01(0x17e)][_0x42eb01(0x162)][_0x42eb01(0xcc)](this[_0x42eb01(0x128)]),window['removeEventListener'](_0x42eb01(0x1c2),this[_0x42eb01(0x24f)]),this[_0x42eb01(0x17e)]?.['destroy'](),this[_0x42eb01(0x17e)]=null,this[_0x42eb01(0x249)][_0x42eb01(0x2b1)]());}[_0x2e1660(0x18b)](){const _0xec1e3d=_0x2e1660;this['cameraMoving']&&(window['clearTimeout'](this['cameraEndTimer']),this['cameraEndTimer']=0x0,this[_0xec1e3d(0xd5)]=!0x1,this[_0xec1e3d(0x17e)]?.[_0xec1e3d(0x2df)](_0xec1e3d(0x1af)),this[_0xec1e3d(0xe4)](),this[_0xec1e3d(0xcf)](0x3));}[_0x2e1660(0x128)]=()=>{const _0x883164=_0x2e1660;let _0x3858d6=this[_0x883164(0x355)](this[_0x883164(0x10e)][_0x883164(0x17e)][_0x883164(0x1af)]);_0x3858d6!==this['cameraSignature']&&(this['cameraSignature']=_0x3858d6,this[_0x883164(0x362)](),this[_0x883164(0xe4)](),this[_0x883164(0x2ef)](),this['requestFramesImmediately'](0x1));};[_0x2e1660(0x24f)]=()=>{const _0x519c49=_0x2e1660;this[_0x519c49(0xe5)](),this[_0x519c49(0x17e)]?.[_0x519c49(0x1c2)](),this[_0x519c49(0xe4)](),this[_0x519c49(0xcf)](0x3);};async[_0x2e1660(0x2a9)](_0x22d85f){const _0x730307=_0x2e1660;try{let _0x425e15=await createMars3dVolumeScene({..._0x22d85f,'interactionStepScale':_0x22d85f[_0x730307(0x3a8)]??1.35,'canvas':this[_0x730307(0x249)],'coordinateSystem':_0x730307(0x245),'showDebugGeometry':!0x1,'renderMode':_0x730307(0x3c6)});if(this[_0x730307(0x2c2)]){_0x425e15['destroy']();return;}this[_0x730307(0x17e)]=_0x425e15,this[_0x730307(0xdd)](_0x425e15),this['map'][_0x730307(0x17e)][_0x730307(0x162)][_0x730307(0x21a)](this[_0x730307(0x128)]),window[_0x730307(0x21a)](_0x730307(0x1c2),this['handleResize']),this[_0x730307(0xe4)](),this[_0x730307(0xcf)](0x3);}catch(_0x408a1c){let _0x469fdd=getError(_0x408a1c);throw this['canvas'][_0x730307(0x2b1)](),this[_0x730307(0x1b1)]?.(_0x469fdd),_0x469fdd;}}[_0x2e1660(0xe4)](){const _0x4a5cff=_0x2e1660;let _0x28836c=this[_0x4a5cff(0x17e)];if(!_0x28836c)return;let _0x1965cc=this['map']['scene']['camera'],_0x145de3=ecefToGeographicVolumeLocal([_0x1965cc[_0x4a5cff(0x14a)]['x'],_0x1965cc[_0x4a5cff(0x14a)]['y'],_0x1965cc[_0x4a5cff(0x14a)]['z']],this[_0x4a5cff(0x158)]),_0x423a1e=[_0x1965cc['directionWC']['x'],_0x1965cc[_0x4a5cff(0x160)]['y'],_0x1965cc[_0x4a5cff(0x160)]['z']],_0x5ecdea=[_0x1965cc[_0x4a5cff(0x22a)]['x'],_0x1965cc[_0x4a5cff(0x22a)]['y'],_0x1965cc[_0x4a5cff(0x22a)]['z']],_0x3161fe=Math[_0x4a5cff(0x3b1)](0.001,Math[_0x4a5cff(0x193)](_0x1965cc[_0x4a5cff(0x201)]['height'])/this[_0x4a5cff(0x158)][_0x4a5cff(0x413)]),_0x4ce912=[_0x145de3[0x0]+_0x423a1e[0x0]*_0x3161fe,_0x145de3[0x1]+_0x423a1e[0x1]*_0x3161fe,_0x145de3[0x2]+_0x423a1e[0x2]*_0x3161fe],_0x2063ee=_0x1965cc['frustum'][_0x4a5cff(0xd9)]??_0x1965cc['frustum'][_0x4a5cff(0x229)]??Math['PI']/0x3,_0x512758=Math['max'](0.0001,_0x3161fe/0x2710),_0x1522ad=Math['max'](0x64,_0x3161fe*0x4);_0x28836c[_0x4a5cff(0x1a9)]({'position':_0x145de3,'target':_0x4ce912,'up':_0x5ecdea,'projection':{'type':_0x4a5cff(0x219),'fovYDegrees':_0x2063ee*0xb4/Math['PI'],'near':_0x512758,'far':_0x1522ad}});}[_0x2e1660(0xdd)](_0x5741df){const _0x4ce5e2=_0x2e1660;let _0x49936e=_0x5741df[_0x4ce5e2(0xc5)],_0x52bf48=_0x49936e[_0x4ce5e2(0x151)];_0x49936e[_0x4ce5e2(0x151)]=()=>{const _0x5440f1=_0x4ce5e2;this[_0x5440f1(0x3bf)]&&(this[_0x5440f1(0x354)]=this['pendingCompensationFrame'],this['pendingCompensationFrame']=null,this['applyCameraFrameCompensation']()),_0x52bf48?.();};}[_0x2e1660(0x152)](){const _0x517de6=_0x2e1660;let _0x2fcc52=this[_0x517de6(0x10e)][_0x517de6(0x17e)][_0x517de6(0x1af)];return{'position':[_0x2fcc52[_0x517de6(0x14a)]['x'],_0x2fcc52[_0x517de6(0x14a)]['y'],_0x2fcc52[_0x517de6(0x14a)]['z']],'direction':[_0x2fcc52[_0x517de6(0x160)]['x'],_0x2fcc52[_0x517de6(0x160)]['y'],_0x2fcc52[_0x517de6(0x160)]['z']],'up':[_0x2fcc52[_0x517de6(0x22a)]['x'],_0x2fcc52[_0x517de6(0x22a)]['y'],_0x2fcc52[_0x517de6(0x22a)]['z']],'fovYRadians':_0x2fcc52[_0x517de6(0x216)]['fovy']??_0x2fcc52['frustum'][_0x517de6(0x229)]??Math['PI']/0x3,'anchorDistance':Math['max'](0x3e8,Math['abs'](_0x2fcc52['positionCartographic']['height'])*0x2)};}[_0x2e1660(0xfa)](){const _0x590562=_0x2e1660;return createMars3dCompensationFrame(this[_0x590562(0x152)](),this[_0x590562(0x249)][_0x590562(0x35c)],this[_0x590562(0x249)][_0x590562(0x191)]);}[_0x2e1660(0x2ef)](){const _0x14afae=_0x2e1660;if(!this[_0x14afae(0x2b4)]||!this[_0x14afae(0x354)]){this[_0x14afae(0x249)][_0x14afae(0x20c)]['transform']='none';return;}let _0x174f88=projectMars3dCompensationAnchors(this[_0x14afae(0x152)](),this[_0x14afae(0x354)][_0x14afae(0x2e5)],this['canvas'][_0x14afae(0x35c)],this[_0x14afae(0x249)][_0x14afae(0x191)]),_0x976e9a=_0x174f88?createMars3dCanvasCompensationTransform(this['displayedCompensationFrame'][_0x14afae(0x307)],_0x174f88):null;this[_0x14afae(0x249)][_0x14afae(0x20c)][_0x14afae(0x40e)]=_0x976e9a??_0x14afae(0x116);}[_0x2e1660(0xe5)](){const _0x5ed613=_0x2e1660;this['pendingCompensationFrame']=null,this[_0x5ed613(0x354)]=null,this[_0x5ed613(0x249)][_0x5ed613(0x20c)][_0x5ed613(0x40e)]=_0x5ed613(0x116);}[_0x2e1660(0xcf)](_0x2c22c6){const _0x420bd5=_0x2e1660;!this[_0x420bd5(0x3fc)]||this['destroyed']||(this[_0x420bd5(0x101)]=Math[_0x420bd5(0x3b1)](this[_0x420bd5(0x101)],_0x2c22c6),this['frameRequest']||=requestAnimationFrame(this[_0x420bd5(0x400)]));}['requestFramesImmediately'](_0x2d855e){const _0x38c6be=_0x2e1660;!this[_0x38c6be(0x3fc)]||this[_0x38c6be(0x2c2)]||(this['framesRemaining']=Math[_0x38c6be(0x3b1)](this[_0x38c6be(0x101)],_0x2d855e),this[_0x38c6be(0x203)]&&cancelAnimationFrame(this[_0x38c6be(0x203)]),this['frameRequest']=0x0,this[_0x38c6be(0x400)]());}[_0x2e1660(0x400)]=()=>{const _0x82ae92=_0x2e1660;this[_0x82ae92(0x203)]=0x0;let _0x1769a3=this[_0x82ae92(0x17e)];if(!(!_0x1769a3||!this['shown']||this[_0x82ae92(0x2c2)]))try{_0x1769a3[_0x82ae92(0x1c2)]();let _0xd5812d=_0x1769a3['statistics']['submittedFrameCount'];_0x1769a3[_0x82ae92(0xd8)](),_0x1769a3[_0x82ae92(0x311)][_0x82ae92(0x266)]>_0xd5812d&&(this[_0x82ae92(0x3bf)]=this[_0x82ae92(0xfa)](),this[_0x82ae92(0x101)]=Math[_0x82ae92(0x3b1)](0x0,this['framesRemaining']-0x1));let _0x29aa18=_0x1769a3[_0x82ae92(0x311)];(_0x29aa18['pendingBrickCount']>0x0||_0x29aa18[_0x82ae92(0x34d)]<_0x29aa18[_0x82ae92(0x3a7)]||this['framesRemaining']>0x0)&&(this[_0x82ae92(0x203)]=requestAnimationFrame(this[_0x82ae92(0x400)]));}catch(_0x26c736){this[_0x82ae92(0x1b1)]?.(getError(_0x26c736));}};[_0x2e1660(0x337)](_0xc7016e){const _0x7f5f9c=_0x2e1660;let _0x519d18=_0xc7016e[_0x7f5f9c(0x141)];if(!_0x519d18)throw Error(_0x7f5f9c(0x34b));let _0x4101f0=document['createElement']('canvas');return _0x4101f0[_0x7f5f9c(0x20c)][_0x7f5f9c(0x154)]=_0x7f5f9c(0x25c),_0x4101f0['style']['inset']='0',_0x4101f0[_0x7f5f9c(0x20c)]['width']=_0x7f5f9c(0xdf),_0x4101f0[_0x7f5f9c(0x20c)][_0x7f5f9c(0x1c0)]='100%',_0x4101f0[_0x7f5f9c(0x20c)][_0x7f5f9c(0x251)]=_0x7f5f9c(0x116),_0x4101f0['style'][_0x7f5f9c(0x29f)]=this[_0x7f5f9c(0x3fc)]?_0x7f5f9c(0x359):_0x7f5f9c(0x116),_0x4101f0['style'][_0x7f5f9c(0x270)]='1',_0x519d18['append'](_0x4101f0),_0x4101f0;}['createCameraSignature'](_0x352b5b){const _0xb2be41=_0x2e1660;return[_0x352b5b['positionWC']['x'],_0x352b5b[_0xb2be41(0x14a)]['y'],_0x352b5b[_0xb2be41(0x14a)]['z'],_0x352b5b[_0xb2be41(0x160)]['x'],_0x352b5b['directionWC']['y'],_0x352b5b[_0xb2be41(0x160)]['z'],_0x352b5b[_0xb2be41(0x22a)]['x'],_0x352b5b['upWC']['y'],_0x352b5b[_0xb2be41(0x22a)]['z'],_0x352b5b['frustum'][_0xb2be41(0xd9)]??_0x352b5b[_0xb2be41(0x216)]['fov']??0x0,_0x352b5b[_0xb2be41(0x216)][_0xb2be41(0x2d8)],_0x352b5b[_0xb2be41(0x216)][_0xb2be41(0x21f)]][_0xb2be41(0x10e)](_0xa85335=>_0xa85335[_0xb2be41(0x334)](0xa))[_0xb2be41(0x22e)]('|');}[_0x2e1660(0x1f9)](){const _0x3262e4=_0x2e1660;window[_0x3262e4(0x225)](this['cameraEndTimer']),this[_0x3262e4(0x10d)]=window[_0x3262e4(0x178)](this[_0x3262e4(0x18b)]['bind'](this),0xc8);}['beginCameraInteraction'](){const _0x2fbf10=_0x2e1660;this[_0x2fbf10(0xd5)]||(this[_0x2fbf10(0xd5)]=!0x0,this['scene']?.[_0x2fbf10(0x3d2)](_0x2fbf10(0x1af))),this[_0x2fbf10(0x1f9)]();}[_0x2e1660(0xca)](){const _0x4e119c=_0x2e1660;if(this[_0x4e119c(0x39c)](),!this[_0x4e119c(0x17e)])throw Error('Mars3D\x20volume\x20layer\x20is\x20not\x20ready;\x20await\x20readyPromise\x20first.\x20Mars3D\x20体积层尚未就绪,请先等待\x20readyPromise。');return this['scene'];}['assertAlive'](){const _0x384861=_0x2e1660;if(this['destroyed'])throw Error(_0x384861(0x109));}};const layerConstructors=new WeakMap(),getVolumeLayerConstructor=_0x29b663=>{const _0x346d72=_0x2e1660;let _0x58d16d=layerConstructors[_0x346d72(0x37a)](_0x29b663);if(_0x58d16d)return _0x58d16d;let _0x220de9=_0x29b663[_0x346d72(0x345)][_0x346d72(0x2c5)];class _0x2db8af extends _0x220de9{[_0x346d72(0x412)];[_0x346d72(0xc5)]=null;['readyResolve']=null;[_0x346d72(0x36b)]=null;[_0x346d72(0x1c8)]=new Promise((resolve,reject)=>{const _0x1d6d27=_0x346d72;this[_0x1d6d27(0x3d8)]=resolve,this[_0x1d6d27(0x36b)]=reject;});constructor(_0x598c06){super({..._0x598c06}),this['volumeOptions']={..._0x598c06};}get[_0x346d72(0x311)](){const _0x1413f0=_0x346d72;return this[_0x1413f0(0xc5)]?.[_0x1413f0(0x311)]??null;}get['lockedSlices'](){return this['renderer']?.['lockedSlices']??[];}[_0x346d72(0x171)](_0x63783c){const _0x7075a0=_0x346d72;this[_0x7075a0(0xc5)]?.[_0x7075a0(0x171)](_0x63783c);}[_0x346d72(0x3cd)](_0x5822aa){const _0x5c86f6=_0x346d72;this[_0x5c86f6(0x412)][_0x5c86f6(0xc7)]=_0x5822aa,this[_0x5c86f6(0x13f)]()[_0x5c86f6(0x3cd)](_0x5822aa);}['setTimeIndex'](_0x550ad6){const _0x254975=_0x346d72;this['requireRenderer']()[_0x254975(0x304)](_0x550ad6);}[_0x346d72(0x321)](_0x359edf){const _0x5cabbe=_0x346d72;this[_0x5cabbe(0x13f)]()[_0x5cabbe(0x321)](_0x359edf);}[_0x346d72(0x3fd)](_0x1efe48,_0x504367){const _0x29ea2f=_0x346d72;return this[_0x29ea2f(0x13f)]()[_0x29ea2f(0x3fd)](_0x1efe48,_0x504367);}[_0x346d72(0x31e)](_0x2539d5,_0x56b3f2){const _0x127086=_0x346d72;this[_0x127086(0x13f)]()['updateSlice'](_0x2539d5,_0x56b3f2);}[_0x346d72(0x415)](_0x5795ac){const _0x5bbaac=_0x346d72;this['requireRenderer']()[_0x5bbaac(0x415)](_0x5795ac);}['clearLockedSlices'](){const _0xee62c6=_0x346d72;this[_0xee62c6(0x13f)]()[_0xee62c6(0x1fc)]();}['_mountedHook'](){}[_0x346d72(0x38e)](){const _0x5c431b=_0x346d72;if(!this[_0x5c431b(0x2c6)])throw Error('Mars3D\x20volume\x20layer\x20is\x20not\x20attached\x20to\x20a\x20map.\x20Mars3D\x20体积层尚未关联地图。');this[_0x5c431b(0xc5)]?.[_0x5c431b(0x3e2)](),this['renderer']=new Mars3dVolumeRenderer(this['_map'],this['volumeOptions']),this[_0x5c431b(0xc5)][_0x5c431b(0x25a)](this[_0x5c431b(0x1c1)]),this[_0x5c431b(0xc5)][_0x5c431b(0x1c8)][_0x5c431b(0x2cd)](()=>this[_0x5c431b(0x3d8)]?.())[_0x5c431b(0x293)](_0x2ea752=>this['readyReject']?.(_0x2ea752));}[_0x346d72(0x1a8)](_0x564a50){const _0x446ab9=_0x346d72;this[_0x446ab9(0xc5)]?.[_0x446ab9(0x25a)](_0x564a50);}['_removedHook'](){const _0x4889da=_0x346d72;this['renderer']?.[_0x4889da(0x3e2)](),this[_0x4889da(0xc5)]=null;}[_0x346d72(0x13f)](){const _0x590057=_0x346d72;if(!this[_0x590057(0xc5)])throw Error('Mars3D\x20volume\x20layer\x20is\x20not\x20added\x20to\x20a\x20map.\x20Mars3D\x20体积层尚未添加到地图。');return this[_0x590057(0xc5)];}}let _0x968e6f=_0x2db8af;return layerConstructors[_0x346d72(0x105)](_0x29b663,_0x968e6f),_0x968e6f;},createMars3dVolumeLayer=(_0x343be7,_0x271244)=>new(getVolumeLayerConstructor(_0x343be7))(_0x271244);exports[_0x2e1660(0x2a8)]=createMars3dVolumeLayer;